@adatechnology/game-shapes 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/{chunk-R4RY23RH.js → chunk-IFXQIDSA.js} +22 -10
- package/dist/chunk-IFXQIDSA.js.map +1 -0
- package/dist/index.d.ts +40 -8
- package/dist/index.global.js +136 -12
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/dist/{worker-W5A14FiP.d.ts → worker-BZ7plgyI.d.ts} +2 -0
- package/dist/worker.d.ts +1 -1
- package/dist/worker.js +1 -1
- package/package.json +4 -1
- package/dist/chunk-R4RY23RH.js.map +0 -1
package/README.md
CHANGED
|
@@ -140,6 +140,11 @@ A `lod` rule `{ distance, detail, minSize?, minSegments? }` regenerates the tree
|
|
|
140
140
|
static body. Instance a node when the same geometry repeats tens of times or is placed at run time; merge when copies are few or coloured per
|
|
141
141
|
vertex.
|
|
142
142
|
|
|
143
|
+
## Generators by instance
|
|
144
|
+
|
|
145
|
+
`createShapes({ packs, patch, remove })` makes a set of generators of its own. `packs` is a list of objects `{ [name]: ShapeGenerator }` (`[{ 'my.stones': stones }]`); later packs replace earlier ones with the same name.
|
|
146
|
+
`patch` replaces a generator by name, `remove` lists names to take out. `shapes.generate` looks custom nodes up in that set only. For a pool use `createShapePool({ generators: shapes.record(), isolatedGenerators: true })`: its jobs then run in the calling thread and never see the global registry.
|
|
147
|
+
|
|
143
148
|
## Português
|
|
144
149
|
|
|
145
150
|
Gerador único de 3D do kit: forma em JSON vira buffers por material, puro, por semente, pronto para worker e cache. Os geradores são portes linha a
|
|
@@ -1520,14 +1520,23 @@ function mulberry32(seed) {
|
|
|
1520
1520
|
var streamFor = (seed, generator, path) => mulberry32(parseInt(hash64(`${String(seed)}\0${generator}\0${path}`).slice(0, 8), 16));
|
|
1521
1521
|
|
|
1522
1522
|
// src/registry.ts
|
|
1523
|
-
var
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1523
|
+
var GENERATOR_NAME = /^[a-zA-Z][\w.:-]*$/;
|
|
1524
|
+
var generatorsOver = (generators) => ({
|
|
1525
|
+
register(name, generator) {
|
|
1526
|
+
if (!GENERATOR_NAME.test(name)) throw new Error(`game-shapes: generator name "${name}" must start with a letter and use letters, digits, ".", ":", "-" or "_"`);
|
|
1527
|
+
generators.set(name, generator);
|
|
1528
|
+
},
|
|
1529
|
+
unregister: (name) => generators.delete(name),
|
|
1530
|
+
get: (name) => generators.get(name),
|
|
1531
|
+
list: () => [...generators.keys()].sort(),
|
|
1532
|
+
record: () => Object.fromEntries(generators)
|
|
1533
|
+
});
|
|
1534
|
+
var defaultGenerators;
|
|
1535
|
+
var defaultShapeGenerators = () => defaultGenerators ?? (defaultGenerators = generatorsOver(/* @__PURE__ */ new Map()));
|
|
1536
|
+
var registerGenerator = (name, generator) => defaultShapeGenerators().register(name, generator);
|
|
1537
|
+
var unregisterGenerator = (name) => defaultShapeGenerators().unregister(name);
|
|
1538
|
+
var getGenerator = (name) => defaultShapeGenerators().get(name);
|
|
1539
|
+
var listGenerators = () => defaultShapeGenerators().list();
|
|
1531
1540
|
|
|
1532
1541
|
// schema/shape.schema.json
|
|
1533
1542
|
var shape_schema_default = {
|
|
@@ -2573,7 +2582,7 @@ var radiusOf = (t, world) => {
|
|
|
2573
2582
|
return r * Math.max(sx, sy, sz);
|
|
2574
2583
|
};
|
|
2575
2584
|
function expandCustom(node, settings, detail, path) {
|
|
2576
|
-
const generator = settings.generators?.[node.generator] ?? getGenerator(node.generator);
|
|
2585
|
+
const generator = settings.generators?.[node.generator] ?? (settings.isolatedGenerators ? void 0 : getGenerator(node.generator));
|
|
2577
2586
|
if (!generator) throw new Error(`game-shapes: no generator "${node.generator}" (register it with registerGenerator, in the worker too) at ${path}`);
|
|
2578
2587
|
const generated = generator(node.params, { random: streamFor(settings.seed, node.generator, path), seed: settings.seed, detail, path });
|
|
2579
2588
|
const { kind: _kind, generator: _generator, params: _params, ...common } = node;
|
|
@@ -2781,6 +2790,7 @@ function generate(schema, options = {}) {
|
|
|
2781
2790
|
...options.materialAlias ? { alias: options.materialAlias } : {},
|
|
2782
2791
|
seed: options.seed ?? 0,
|
|
2783
2792
|
...options.generators ? { generators: options.generators } : {},
|
|
2793
|
+
...options.isolatedGenerators ? { isolatedGenerators: true } : {},
|
|
2784
2794
|
...options.instancing ? { autoMin: Math.max(2, options.instancing.minCount) } : {}
|
|
2785
2795
|
};
|
|
2786
2796
|
const specs = [{ distance: 0, detail: 1, index: 0 }, ...(schema.lod ?? []).map((rule, index) => ({ ...rule, index: index + 1 }))];
|
|
@@ -2952,6 +2962,8 @@ export {
|
|
|
2952
2962
|
clonePrimitive,
|
|
2953
2963
|
mulberry32,
|
|
2954
2964
|
streamFor,
|
|
2965
|
+
generatorsOver,
|
|
2966
|
+
defaultShapeGenerators,
|
|
2955
2967
|
registerGenerator,
|
|
2956
2968
|
unregisterGenerator,
|
|
2957
2969
|
getGenerator,
|
|
@@ -2969,4 +2981,4 @@ export {
|
|
|
2969
2981
|
byteSizeOf,
|
|
2970
2982
|
installShapeWorker
|
|
2971
2983
|
};
|
|
2972
|
-
//# sourceMappingURL=chunk-
|
|
2984
|
+
//# sourceMappingURL=chunk-IFXQIDSA.js.map
|