@babylonjs/smart-filters 0.6.3-alpha → 0.7.1-alpha

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.
Files changed (63) hide show
  1. package/dist/blocks/aggregateBlock.d.ts +5 -3
  2. package/dist/blocks/aggregateBlock.d.ts.map +1 -1
  3. package/dist/blocks/aggregateBlock.js +23 -11
  4. package/dist/blocks/aggregateBlock.js.map +1 -1
  5. package/dist/blocks/customAggregateBlock.d.ts +31 -0
  6. package/dist/blocks/customAggregateBlock.d.ts.map +1 -0
  7. package/dist/blocks/customAggregateBlock.js +55 -0
  8. package/dist/blocks/customAggregateBlock.js.map +1 -0
  9. package/dist/blocks/customShaderBlock.d.ts +2 -2
  10. package/dist/blocks/customShaderBlock.d.ts.map +1 -1
  11. package/dist/blocks/customShaderBlock.js.map +1 -1
  12. package/dist/connection/connectionPoint.js +1 -1
  13. package/dist/connection/connectionPoint.js.map +1 -1
  14. package/dist/index.d.ts +2 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/serialization/importCustomBlockDefinition.d.ts +15 -0
  19. package/dist/serialization/importCustomBlockDefinition.d.ts.map +1 -0
  20. package/dist/serialization/{importCustomShaderBlockDefinition.js → importCustomBlockDefinition.js} +26 -11
  21. package/dist/serialization/importCustomBlockDefinition.js.map +1 -0
  22. package/dist/serialization/index.d.ts +1 -0
  23. package/dist/serialization/index.d.ts.map +1 -1
  24. package/dist/serialization/index.js +1 -0
  25. package/dist/serialization/index.js.map +1 -1
  26. package/dist/serialization/serializedBlockDefinition.d.ts +9 -4
  27. package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -1
  28. package/dist/serialization/serializedShaderBlockDefinition.d.ts +7 -0
  29. package/dist/serialization/serializedShaderBlockDefinition.d.ts.map +1 -0
  30. package/dist/serialization/serializedShaderBlockDefinition.js +2 -0
  31. package/dist/serialization/serializedShaderBlockDefinition.js.map +1 -0
  32. package/dist/serialization/smartFilterDeserializer.d.ts +1 -1
  33. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
  34. package/dist/serialization/smartFilterDeserializer.js +1 -1
  35. package/dist/serialization/smartFilterDeserializer.js.map +1 -1
  36. package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
  37. package/dist/serialization/smartFilterSerializer.js +4 -1
  38. package/dist/serialization/smartFilterSerializer.js.map +1 -1
  39. package/dist/serialization/v1/{blockSerialization.types.d.ts → shaderBlockSerialization.types.d.ts} +7 -3
  40. package/dist/serialization/v1/shaderBlockSerialization.types.d.ts.map +1 -0
  41. package/dist/serialization/v1/{blockSerialization.types.js → shaderBlockSerialization.types.js} +1 -1
  42. package/dist/serialization/v1/shaderBlockSerialization.types.js.map +1 -0
  43. package/dist/serialization/v1/smartFilterSerialization.types.d.ts +4 -1
  44. package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/src/blocks/aggregateBlock.ts +27 -13
  47. package/src/blocks/customAggregateBlock.ts +85 -0
  48. package/src/blocks/customShaderBlock.ts +3 -3
  49. package/src/connection/connectionPoint.ts +1 -1
  50. package/src/index.ts +2 -1
  51. package/src/serialization/{importCustomShaderBlockDefinition.ts → importCustomBlockDefinition.ts} +30 -12
  52. package/src/serialization/index.ts +1 -0
  53. package/src/serialization/serializedBlockDefinition.ts +9 -4
  54. package/src/serialization/serializedShaderBlockDefinition.ts +7 -0
  55. package/src/serialization/smartFilterDeserializer.ts +3 -2
  56. package/src/serialization/smartFilterSerializer.ts +4 -1
  57. package/src/serialization/v1/{blockSerialization.types.ts → shaderBlockSerialization.types.ts} +7 -2
  58. package/src/serialization/v1/smartFilterSerialization.types.ts +6 -1
  59. package/dist/serialization/importCustomShaderBlockDefinition.d.ts +0 -11
  60. package/dist/serialization/importCustomShaderBlockDefinition.d.ts.map +0 -1
  61. package/dist/serialization/importCustomShaderBlockDefinition.js.map +0 -1
  62. package/dist/serialization/v1/blockSerialization.types.d.ts.map +0 -1
  63. package/dist/serialization/v1/blockSerialization.types.js.map +0 -1
@@ -1,4 +1,5 @@
1
- import type { ConnectionPoint } from "../connection/connectionPoint";
1
+ import type { Nullable } from "@babylonjs/core/types";
2
+ import type { ConnectionPoint, RuntimeData } from "../connection/connectionPoint";
2
3
  import type { ConnectionPointType } from "../connection/connectionPointType";
3
4
  import { BaseBlock } from "../blocks/baseBlock.js";
4
5
  /**
@@ -39,10 +40,11 @@ export declare abstract class AggregateBlock extends BaseBlock {
39
40
  /**
40
41
  * Registers an input connection from the internal graph as an input of the aggregated graph.
41
42
  * @param name - The name of the exposed input connection point
42
- * @param internalConnectionPoint - The input connection point in the inner graph to expose as an input on the aggregate block
43
+ * @param internalConnectionPoints - The input connection points in the inner graph to wire up to the new subfilter input
44
+ * @param defaultValue - The default value to use for the input connection point
43
45
  * @returns the connection point referencing the input block
44
46
  */
45
- protected _registerSubfilterInput<U extends ConnectionPointType>(name: string, internalConnectionPoint: ConnectionPoint<U>): ConnectionPoint<U>;
47
+ protected _registerSubfilterInput<U extends ConnectionPointType>(name: string, internalConnectionPoints: ConnectionPoint<U>[], defaultValue?: Nullable<RuntimeData<U>>): ConnectionPoint<U>;
46
48
  /**
47
49
  * Registers an output connection point from the internal graph as an output of the aggregated graph.
48
50
  * @param name - The name of the exposed output connection point
@@ -1 +1 @@
1
- {"version":3,"file":"aggregateBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/aggregateBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;;;;;GAOG;AACH,8BAAsB,cAAe,SAAQ,SAAS;IAClD;;OAEG;IACH,OAAuB,SAAS,SAAoB;IAEpD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4C;IAE/E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;OAEG;IACa,iBAAiB,IAAI,KAAK;IAI1C;;;OAGG;IACI,qBAAqB,CAAC,qBAAqB,EAAE,cAAc,EAAE,GAAG,IAAI;IAkC3E;;;OAGG;IACI,uBAAuB,IAAI,IAAI;IAkBtC;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,CAAC,SAAS,mBAAmB,EAC3D,IAAI,EAAE,MAAM,EACZ,uBAAuB,EAAE,eAAe,CAAC,CAAC,CAAC,GAC5C,eAAe,CAAC,CAAC,CAAC;IAOrB;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,CAAC,CAAC,SAAS,mBAAmB,EAC5D,IAAI,EAAE,MAAM,EACZ,uBAAuB,EAAE,eAAe,CAAC,CAAC,CAAC,GAC5C,eAAe,CAAC,CAAC,CAAC;CAMxB"}
1
+ {"version":3,"file":"aggregateBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/aggregateBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD;;;;;;;GAOG;AACH,8BAAsB,cAAe,SAAQ,SAAS;IAClD;;OAEG;IACH,OAAuB,SAAS,SAAoB;IAEpD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4C;IAE/E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA8C;IAEhF;;OAEG;IACa,iBAAiB,IAAI,KAAK;IAI1C;;;OAGG;IACI,qBAAqB,CAAC,qBAAqB,EAAE,cAAc,EAAE,GAAG,IAAI;IAoC3E;;;OAGG;IACI,uBAAuB,IAAI,IAAI;IAsBtC;;;;;;OAMG;IACH,SAAS,CAAC,uBAAuB,CAAC,CAAC,SAAS,mBAAmB,EAC3D,IAAI,EAAE,MAAM,EACZ,wBAAwB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,EAC9C,YAAY,GAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAQ,GAC9C,eAAe,CAAC,CAAC,CAAC;IAYrB;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,CAAC,CAAC,SAAS,mBAAmB,EAC5D,IAAI,EAAE,MAAM,EACZ,uBAAuB,EAAE,eAAe,CAAC,CAAC,CAAC,GAC5C,eAAe,CAAC,CAAC,CAAC;CAMxB"}
@@ -39,11 +39,13 @@ export class AggregateBlock extends BaseBlock {
39
39
  }
40
40
  }
41
41
  // Rewire input connections
42
- for (const [internalConnectionPoint, externalConnectionPoint] of this._aggregatedInputs) {
42
+ for (const [internalConnectionPoints, externalConnectionPoint] of this._aggregatedInputs) {
43
43
  const connectedToExternalConnectionPoint = externalConnectionPoint.connectedTo;
44
44
  if (connectedToExternalConnectionPoint) {
45
45
  connectedToExternalConnectionPoint.disconnectFrom(externalConnectionPoint);
46
- connectedToExternalConnectionPoint.connectTo(internalConnectionPoint);
46
+ for (const internalConnectionPoint of internalConnectionPoints) {
47
+ connectedToExternalConnectionPoint.connectTo(internalConnectionPoint);
48
+ }
47
49
  }
48
50
  }
49
51
  // Tell any internal aggregate blocks to merge
@@ -71,23 +73,33 @@ export class AggregateBlock extends BaseBlock {
71
73
  externalConnectionPoint.connectTo(endpoint);
72
74
  }
73
75
  }
74
- for (const [internalConnectionPoint, externalConnectionPoint] of this._aggregatedInputs) {
75
- const connectedToInternalConnectionPoint = internalConnectionPoint.connectedTo;
76
- if (connectedToInternalConnectionPoint) {
77
- connectedToInternalConnectionPoint.disconnectFrom(internalConnectionPoint);
78
- connectedToInternalConnectionPoint.connectTo(externalConnectionPoint);
76
+ for (const [internalConnectionPoints, externalConnectionPoint] of this._aggregatedInputs) {
77
+ if (internalConnectionPoints[0]) {
78
+ const connectedToInternalConnectionPoint = internalConnectionPoints[0].connectedTo;
79
+ if (connectedToInternalConnectionPoint) {
80
+ for (const internalConnectionPoint of internalConnectionPoints) {
81
+ connectedToInternalConnectionPoint.disconnectFrom(internalConnectionPoint);
82
+ }
83
+ connectedToInternalConnectionPoint.connectTo(externalConnectionPoint);
84
+ }
79
85
  }
80
86
  }
81
87
  }
82
88
  /**
83
89
  * Registers an input connection from the internal graph as an input of the aggregated graph.
84
90
  * @param name - The name of the exposed input connection point
85
- * @param internalConnectionPoint - The input connection point in the inner graph to expose as an input on the aggregate block
91
+ * @param internalConnectionPoints - The input connection points in the inner graph to wire up to the new subfilter input
92
+ * @param defaultValue - The default value to use for the input connection point
86
93
  * @returns the connection point referencing the input block
87
94
  */
88
- _registerSubfilterInput(name, internalConnectionPoint) {
89
- const externalInputConnectionPoint = this._registerInput(name, internalConnectionPoint.type);
90
- this._aggregatedInputs.push([internalConnectionPoint, externalInputConnectionPoint]);
95
+ _registerSubfilterInput(name, internalConnectionPoints, defaultValue = null) {
96
+ var _a;
97
+ const type = (_a = internalConnectionPoints[0]) === null || _a === void 0 ? void 0 : _a.type;
98
+ if (type === undefined) {
99
+ throw new Error("Cannot register an input connection point with no internal connection points");
100
+ }
101
+ const externalInputConnectionPoint = this._registerInput(name, type, defaultValue);
102
+ this._aggregatedInputs.push([internalConnectionPoints, externalInputConnectionPoint]);
91
103
  return externalInputConnectionPoint;
92
104
  }
93
105
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"aggregateBlock.js","sourceRoot":"","sources":["../../src/blocks/aggregateBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregateBlock.js","sourceRoot":"","sources":["../../src/blocks/aggregateBlock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
2
+ import type { SmartFilterDeserializer, SerializedBlockDefinition } from "../serialization/index.js";
3
+ import type { SmartFilter } from "../smartFilter.js";
4
+ import { AggregateBlock } from "./aggregateBlock.js";
5
+ import type { BaseBlock } from "./baseBlock.js";
6
+ /**
7
+ * Loads a serialized SmartFilter into a block which can be used in another SmartFilter.
8
+ */
9
+ export declare class CustomAggregateBlock extends AggregateBlock {
10
+ /**
11
+ * Creates a new CustomAggregateBlock
12
+ * @param smartFilter - The SmartFilter to create the block for
13
+ * @param engine - The ThinEngine to use
14
+ * @param name - The friendly name of the block
15
+ * @param serializedSmartFilter - The serialized SmartFilter to load into the block
16
+ * @param smartFilterDeserializer - The deserializer to use
17
+ * @returns A promise that resolves to the new CustomAggregateBlock
18
+ */
19
+ static Create(smartFilter: SmartFilter, engine: ThinEngine, name: string, serializedSmartFilter: SerializedBlockDefinition, smartFilterDeserializer: SmartFilterDeserializer): Promise<BaseBlock>;
20
+ /**
21
+ * The class name of the block.
22
+ */
23
+ static ClassName: string;
24
+ private readonly _blockType;
25
+ /**
26
+ * The type of the block - used when serializing / deserializing the block, and in the editor.
27
+ */
28
+ get blockType(): string;
29
+ private constructor();
30
+ }
31
+ //# sourceMappingURL=customAggregateBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customAggregateBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/customAggregateBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,cAAc;IACpD;;;;;;;;OAQG;WACiB,MAAM,CACtB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,qBAAqB,EAAE,yBAAyB,EAChD,uBAAuB,EAAE,uBAAuB,GACjD,OAAO,CAAC,SAAS,CAAC;IAKrB;;OAEG;IACH,OAAuB,SAAS,SAA0B;IAE1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;OAEG;IACH,IAAoB,SAAS,IAAI,MAAM,CAEtC;IAED,OAAO;CAwCV"}
@@ -0,0 +1,55 @@
1
+ import { AggregateBlock } from "./aggregateBlock.js";
2
+ /**
3
+ * Loads a serialized SmartFilter into a block which can be used in another SmartFilter.
4
+ */
5
+ export class CustomAggregateBlock extends AggregateBlock {
6
+ /**
7
+ * Creates a new CustomAggregateBlock
8
+ * @param smartFilter - The SmartFilter to create the block for
9
+ * @param engine - The ThinEngine to use
10
+ * @param name - The friendly name of the block
11
+ * @param serializedSmartFilter - The serialized SmartFilter to load into the block
12
+ * @param smartFilterDeserializer - The deserializer to use
13
+ * @returns A promise that resolves to the new CustomAggregateBlock
14
+ */
15
+ static async Create(smartFilter, engine, name, serializedSmartFilter, smartFilterDeserializer) {
16
+ const innerSmartFilter = await smartFilterDeserializer.deserialize(engine, serializedSmartFilter);
17
+ return new CustomAggregateBlock(smartFilter, name, serializedSmartFilter.blockType, innerSmartFilter, false);
18
+ }
19
+ /**
20
+ * The type of the block - used when serializing / deserializing the block, and in the editor.
21
+ */
22
+ get blockType() {
23
+ return this._blockType;
24
+ }
25
+ constructor(smartFilter, name, blockType, innerSmartFilter, disableOptimization) {
26
+ var _a;
27
+ super(smartFilter, name, disableOptimization);
28
+ this._blockType = blockType;
29
+ const attachedBlocks = innerSmartFilter.attachedBlocks;
30
+ for (let index = 0; index < attachedBlocks.length; index++) {
31
+ const block = attachedBlocks[index];
32
+ if (block && block.isInput && block.outputs[0]) {
33
+ // If this input block is connected to anything (has any endpoints), create an input connection point for it
34
+ if (block.outputs[0].endpoints.length > 0) {
35
+ this._registerSubfilterInput(block.name, block.outputs[0].endpoints.slice(), (_a = block.outputs[0].runtimeData) !== null && _a !== void 0 ? _a : null);
36
+ }
37
+ // Remove this input block from the smart filter graph - this will reset the runtimeData to the
38
+ // default for that connection point (which may be null)
39
+ innerSmartFilter.removeBlock(block);
40
+ index--;
41
+ }
42
+ }
43
+ if (!innerSmartFilter.output.connectedTo) {
44
+ throw new Error("The inner smart filter must have an output connected to something");
45
+ }
46
+ this._registerSubfilterOutput("output", innerSmartFilter.output.connectedTo);
47
+ // Disconnect the inner smart filter output from the inner smart filter
48
+ innerSmartFilter.output.connectedTo.disconnectFrom(innerSmartFilter.output);
49
+ }
50
+ }
51
+ /**
52
+ * The class name of the block.
53
+ */
54
+ CustomAggregateBlock.ClassName = "CustomAggregateBlock";
55
+ //# sourceMappingURL=customAggregateBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customAggregateBlock.js","sourceRoot":"","sources":["../../src/blocks/customAggregateBlock.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACpD;;;;;;;;OAQG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CACtB,WAAwB,EACxB,MAAkB,EAClB,IAAY,EACZ,qBAAgD,EAChD,uBAAgD;QAEhD,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAClG,OAAO,IAAI,oBAAoB,CAAC,WAAW,EAAE,IAAI,EAAE,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACjH,CAAC;IASD;;OAEG;IACH,IAAoB,SAAS;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,YACI,WAAwB,EACxB,IAAY,EACZ,SAAiB,EACjB,gBAA6B,EAC7B,mBAA4B;;QAE5B,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,MAAM,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;QACvD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,4GAA4G;gBAC5G,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,IAAI,CAAC,uBAAuB,CACxB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,EAClC,MAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,mCAAI,IAAI,CACvC,CAAC;gBACN,CAAC;gBAED,+FAA+F;gBAC/F,wDAAwD;gBACxD,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,EAAE,CAAC;YACZ,CAAC;QACL,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE7E,uEAAuE;QACvE,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChF,CAAC;;AArDD;;GAEG;AACoB,8BAAS,GAAG,sBAAsB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { ShaderBinding } from "../runtime/shaderRuntime.js";
2
- import type { SerializedBlockDefinition } from "../serialization/serializedBlockDefinition";
2
+ import type { SerializedShaderBlockDefinition } from "../serialization/serializedShaderBlockDefinition.js";
3
3
  import type { SmartFilter } from "../smartFilter";
4
4
  import type { ShaderProgram } from "../utils/shaderCodeUtils";
5
5
  import { ShaderBlock } from "./shaderBlock.js";
@@ -14,7 +14,7 @@ export declare class CustomShaderBlock extends ShaderBlock {
14
14
  * @param blockDefinition - The serialized block definition
15
15
  * @returns The deserialized CustomShaderBlock instance
16
16
  */
17
- static Create(smartFilter: SmartFilter, name: string, blockDefinition: SerializedBlockDefinition): CustomShaderBlock;
17
+ static Create(smartFilter: SmartFilter, name: string, blockDefinition: SerializedShaderBlockDefinition): CustomShaderBlock;
18
18
  /**
19
19
  * The class name of the block.
20
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"customShaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAE5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAwE/C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C;;;;;;OAMG;WACW,MAAM,CAChB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,yBAAyB,GAC3C,iBAAiB;IAapB;;OAEG;IACH,OAAuB,SAAS,SAAuB;IAEvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,gBAAgB,CAAsD;IAE9E;;OAEG;IACH,IAAoB,SAAS,IAAI,MAAM,CAEtC;IAED;;;;;;;;OAQG;IACH,OAAO;IAkBP;;;OAGG;IACa,gBAAgB;IAIhC;;;;OAIG;IACH,OAAO,CAAC,yCAAyC;IAuBjD;;;OAGG;IACa,gBAAgB,IAAI,aAAa;CAiCpD"}
1
+ {"version":3,"file":"customShaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AAE3G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAwE/C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAC9C;;;;;;OAMG;WACW,MAAM,CAChB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,+BAA+B,GACjD,iBAAiB;IAapB;;OAEG;IACH,OAAuB,SAAS,SAAuB;IAEvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,gBAAgB,CAAsD;IAE9E;;OAEG;IACH,IAAoB,SAAS,IAAI,MAAM,CAEtC;IAED;;;;;;;;OAQG;IACH,OAAO;IAkBP;;;OAGG;IACa,gBAAgB;IAIhC;;;;OAIG;IACH,OAAO,CAAC,yCAAyC;IAuBjD;;;OAGG;IACa,gBAAgB,IAAI,aAAa;CAiCpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"customShaderBlock.js","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"customShaderBlock.js","sourceRoot":"","sources":["../../src/blocks/customShaderBlock.ts"],"names":[],"mappings":"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"}
@@ -127,7 +127,7 @@ export class ConnectionPoint {
127
127
  this._endpoints.splice(index, 1);
128
128
  // Connections are double-linked - remove the reference back to this connection point from the one we just disconnected from
129
129
  endpoint._connectedTo = null;
130
- endpoint.runtimeData = null;
130
+ endpoint.runtimeData = endpoint.defaultRuntimeData;
131
131
  }
132
132
  /**
133
133
  * Disconnects this point from all its endpoints.
@@ -1 +1 @@
1
- {"version":3,"file":"connectionPoint.js","sourceRoot":"","sources":["../../src/connection/connectionPoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connectionPoint.js","sourceRoot":"","sources":["../../src/connection/connectionPoint.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,7 @@ export { InputBlock, type InputBlockEditorData } from "./blocks/inputBlock.js";
15
15
  export { type AnyInputBlock } from "./blocks/inputBlock.js";
16
16
  export { ShaderBlock } from "./blocks/shaderBlock.js";
17
17
  export { CustomShaderBlock } from "./blocks/customShaderBlock.js";
18
+ export { CustomAggregateBlock } from "./blocks/customAggregateBlock.js";
18
19
  export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./blocks/disableableShaderBlock.js";
19
20
  export { AggregateBlock } from "./blocks/aggregateBlock.js";
20
21
  export { DisableableShaderBinding, ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
@@ -28,5 +29,5 @@ export { SmartFilterOptimizer } from "./optimization/smartFilterOptimizer.js";
28
29
  export * from "./utils/textureLoaders.js";
29
30
  export * from "./serialization/index.js";
30
31
  export * from "./editorUtils/editableInPropertyPage.js";
31
- export * from "./serialization/importCustomShaderBlockDefinition.js";
32
+ export * from "./serialization/importCustomBlockDefinition.js";
32
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,gDAAgD,CAAC"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ export { InputBlock } from "./blocks/inputBlock.js";
15
15
  export {} from "./blocks/inputBlock.js";
16
16
  export { ShaderBlock } from "./blocks/shaderBlock.js";
17
17
  export { CustomShaderBlock } from "./blocks/customShaderBlock.js";
18
+ export { CustomAggregateBlock } from "./blocks/customAggregateBlock.js";
18
19
  export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./blocks/disableableShaderBlock.js";
19
20
  export { AggregateBlock } from "./blocks/aggregateBlock.js";
20
21
  export { DisableableShaderBinding, ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
@@ -28,5 +29,5 @@ export { SmartFilterOptimizer } from "./optimization/smartFilterOptimizer.js";
28
29
  export * from "./utils/textureLoaders.js";
29
30
  export * from "./serialization/index.js";
30
31
  export * from "./editorUtils/editableInPropertyPage.js";
31
- export * from "./serialization/importCustomShaderBlockDefinition.js";
32
+ export * from "./serialization/importCustomBlockDefinition.js";
32
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAA6B,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAoB,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA6B,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAsB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAA0B,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAA2B,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,sDAAsD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAA6B,MAAM,qCAAqC,CAAC;AAChF,OAAO,EACH,iCAAiC,EACjC,4BAA4B,GAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAoB,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA6B,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAsB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAA0B,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAA2B,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,gDAAgD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
2
+ /**
3
+ * Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
4
+ * CustomAggregateBlock definitions.
5
+ *
6
+ * CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
7
+ * or a glsl shader with the required annotations (see readme.md for details).
8
+ *
9
+ * CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
10
+ *
11
+ * @param serializedData - The serialized data
12
+ * @returns The serialized block definition
13
+ */
14
+ export declare function importCustomBlockDefinition(serializedData: string): SerializedBlockDefinition;
15
+ //# sourceMappingURL=importCustomBlockDefinition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importCustomBlockDefinition.d.ts","sourceRoot":"","sources":["../../src/serialization/importCustomBlockDefinition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAIhF;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,yBAAyB,CAmB7F"}
@@ -1,20 +1,34 @@
1
1
  import { ConnectionPointType } from "../connection/connectionPointType.js";
2
2
  import { hasGlslHeader, parseFragmentShader } from "../utils/buildTools/shaderConverter.js";
3
3
  /**
4
- * Imports a serialized custom shader block definition. Supports importing a JSON string
5
- * of an SerializedBlockDefinition object, or a glsl shader with the required annotations
6
- * so it can be converted to a SerializedBlockDefinition object.
7
- * See readme.md for more information.
8
- * @param serializedBlockDefinition - The serialized block definition - either a SerializedBlockDefinition object in a JSON string, or an annotated glsl shader
4
+ * Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
5
+ * CustomAggregateBlock definitions.
6
+ *
7
+ * CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
8
+ * or a glsl shader with the required annotations (see readme.md for details).
9
+ *
10
+ * CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
11
+ *
12
+ * @param serializedData - The serialized data
9
13
  * @returns The serialized block definition
10
14
  */
11
- export function importCustomShaderBlockDefinition(serializedBlockDefinition) {
12
- if (hasGlslHeader(serializedBlockDefinition)) {
13
- return importAnnotatedGlsl(serializedBlockDefinition);
15
+ export function importCustomBlockDefinition(serializedData) {
16
+ if (hasGlslHeader(serializedData)) {
17
+ return importAnnotatedGlsl(serializedData);
14
18
  }
15
19
  else {
16
- // Assume this is a serialized SerializedBlockDefinition object
17
- return JSON.parse(serializedBlockDefinition);
20
+ // Assume this is a serialized JSON object
21
+ const blockDefinition = JSON.parse(serializedData);
22
+ // Some old SmartFilters didn't have a format property - default to smartFilter if missing
23
+ if (blockDefinition.format === undefined) {
24
+ blockDefinition.format = "smartFilter";
25
+ }
26
+ // SmartFilters can be serialized without a blockType
27
+ // By convention, we use the SmartFilter name as the blockType when importing them as SerializedBlockDefinitions
28
+ if (blockDefinition.format === "smartFilter" && blockDefinition.name && !blockDefinition.blockType) {
29
+ blockDefinition.blockType = blockDefinition.name;
30
+ }
31
+ return blockDefinition;
18
32
  }
19
33
  }
20
34
  /**
@@ -69,6 +83,7 @@ function importAnnotatedGlsl(fragmentShader) {
69
83
  inputConnectionPoints.push(inputConnectionPoint);
70
84
  }
71
85
  return {
86
+ format: "shaderBlockDefinition",
72
87
  formatVersion: 1,
73
88
  blockType: fragmentShaderInfo.blockType,
74
89
  shaderProgram: {
@@ -78,4 +93,4 @@ function importAnnotatedGlsl(fragmentShader) {
78
93
  disableOptimization: !!fragmentShaderInfo.disableOptimization,
79
94
  };
80
95
  }
81
- //# sourceMappingURL=importCustomShaderBlockDefinition.js.map
96
+ //# sourceMappingURL=importCustomBlockDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importCustomBlockDefinition.js","sourceRoot":"","sources":["../../src/serialization/importCustomBlockDefinition.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,6 @@ export * from "./v1/index.js";
2
2
  export * from "./serializedSmartFilter.js";
3
3
  export * from "./smartFilterDeserializer.js";
4
4
  export * from "./smartFilterSerializer.js";
5
+ export * from "./serializedShaderBlockDefinition.js";
5
6
  export * from "./serializedBlockDefinition.js";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC"}
@@ -2,5 +2,6 @@ export * from "./v1/index.js";
2
2
  export * from "./serializedSmartFilter.js";
3
3
  export * from "./smartFilterDeserializer.js";
4
4
  export * from "./smartFilterSerializer.js";
5
+ export * from "./serializedShaderBlockDefinition.js";
5
6
  export * from "./serializedBlockDefinition.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC"}
@@ -1,7 +1,12 @@
1
- import type { SerializedBlockDefinitionV1 } from "./v1/blockSerialization.types";
1
+ import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition";
2
+ import type { SerializedSmartFilter } from "./serializedSmartFilter";
2
3
  /**
3
- * Type union of all versions of serialized SmartFilter block definitions
4
- * A block definition is an object which is used to create a CustomShaderBlock instance.
4
+ * Type that represents any type of serialized block definition - shader or aggregate.
5
5
  */
6
- export type SerializedBlockDefinition = SerializedBlockDefinitionV1;
6
+ export type SerializedBlockDefinition = (SerializedShaderBlockDefinition | SerializedSmartFilter) & {
7
+ /**
8
+ * The type of block this is.
9
+ */
10
+ blockType: string;
11
+ };
7
12
  //# sourceMappingURL=serializedBlockDefinition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializedBlockDefinition.d.ts","sourceRoot":"","sources":["../../src/serialization/serializedBlockDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAEjF;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG,2BAA2B,CAAC"}
1
+ {"version":3,"file":"serializedBlockDefinition.d.ts","sourceRoot":"","sources":["../../src/serialization/serializedBlockDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACzF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,+BAA+B,GAAG,qBAAqB,CAAC,GAAG;IAChG;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SerializedShaderBlockDefinitionV1 } from "./v1/shaderBlockSerialization.types";
2
+ /**
3
+ * Type union of all versions of serialized SmartFilter block definitions
4
+ * A block definition is an object which is used to create a CustomShaderBlock instance.
5
+ */
6
+ export type SerializedShaderBlockDefinition = SerializedShaderBlockDefinitionV1;
7
+ //# sourceMappingURL=serializedShaderBlockDefinition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializedShaderBlockDefinition.d.ts","sourceRoot":"","sources":["../../src/serialization/serializedShaderBlockDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAE7F;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,iCAAiC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serializedShaderBlockDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializedShaderBlockDefinition.js","sourceRoot":"","sources":["../../src/serialization/serializedShaderBlockDefinition.ts"],"names":[],"mappings":""}
@@ -6,7 +6,7 @@ import type { Nullable } from "@babylonjs/core/types";
6
6
  /**
7
7
  * A function that creates a block instance of the given class block type, or return null if it cannot.
8
8
  */
9
- export type BlockFactory = (smartFilter: SmartFilter, engine: ThinEngine, serializedBlock: ISerializedBlockV1) => Promise<Nullable<BaseBlock>>;
9
+ export type BlockFactory = (smartFilter: SmartFilter, engine: ThinEngine, serializedBlock: ISerializedBlockV1, smartFilterDeserializer: SmartFilterDeserializer) => Promise<Nullable<BaseBlock>>;
10
10
  /**
11
11
  * Deserializes serialized SmartFilters. The caller passes in a map of block deserializers it wants to use,
12
12
  * which allows the caller to provide custom deserializers for blocks beyond the core blocks.
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAElB,2BAA2B,EAE9B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACvB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,kBAAkB,KAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAElC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAA8B;IAE7E;;;;OAIG;gBACgB,YAAY,EAAE,YAAY,EAAE,4BAA4B,CAAC,EAAE,2BAA2B;IAKzG;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAe1E,cAAc;YAoFd,mBAAmB;CAyDpC"}
1
+ {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAElB,2BAA2B,EAE9B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACvB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,kBAAkB,EACnC,uBAAuB,EAAE,uBAAuB,KAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAElC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAA8B;IAE7E;;;;OAIG;gBACgB,YAAY,EAAE,YAAY,EAAE,4BAA4B,CAAC,EAAE,2BAA2B;IAKzG;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAe1E,cAAc;YAoFd,mBAAmB;CAyDpC"}
@@ -111,7 +111,7 @@ export class SmartFilterDeserializer {
111
111
  break;
112
112
  default: {
113
113
  // If it's not an input or output block, use the provided block factory
114
- newBlock = await this._blockFactory(smartFilter, engine, serializedBlock);
114
+ newBlock = await this._blockFactory(smartFilter, engine, serializedBlock, this);
115
115
  if (!newBlock) {
116
116
  blockTypesWhichCouldNotBeDeserialized.push(serializedBlock.blockType);
117
117
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterSerializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,OAAO,KAAK,EACR,kBAAkB,EAIlB,uBAAuB,EAC1B,MAAM,qCAAqC,CAAC;AAkB7C;;;;GAIG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;;;OAIG;gBACgB,+BAA+B,EAAE,MAAM,EAAE,EAAE,0BAA0B,EAAE,kBAAkB,EAAE;IAW9G;;;;OAIG;IACI,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,uBAAuB;CAyDtE"}
1
+ {"version":3,"file":"smartFilterSerializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,OAAO,KAAK,EACR,kBAAkB,EAIlB,uBAAuB,EAC1B,MAAM,qCAAqC,CAAC;AAmB7C;;;;GAIG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;;;OAIG;gBACgB,+BAA+B,EAAE,MAAM,EAAE,EAAE,0BAA0B,EAAE,kBAAkB,EAAE;IAW9G;;;;OAIG;IACI,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,uBAAuB;CA2DtE"}
@@ -2,6 +2,7 @@ import { inputBlockSerializer } from "../blocks/inputBlock.serializer.js";
2
2
  import { defaultBlockSerializer } from "./v1/defaultBlockSerializer.js";
3
3
  import { OutputBlock } from "../blocks/outputBlock.js";
4
4
  import { CustomShaderBlock } from "../blocks/customShaderBlock.js";
5
+ import { CustomAggregateBlock } from "../blocks/customAggregateBlock.js";
5
6
  /**
6
7
  * Determines if two serialized connection points are equivalent to each other
7
8
  * @param a - The first connection point to compare
@@ -43,7 +44,8 @@ export class SmartFilterSerializer {
43
44
  const connections = [];
44
45
  const blocks = smartFilter.attachedBlocks.map((block) => {
45
46
  // Serialize the block itself
46
- const serializeFn = block.getClassName() === CustomShaderBlock.ClassName
47
+ const blockClassName = block.getClassName();
48
+ const serializeFn = blockClassName === CustomShaderBlock.ClassName || blockClassName === CustomAggregateBlock.ClassName
47
49
  ? defaultBlockSerializer
48
50
  : this._blockSerializers.get(block.blockType);
49
51
  if (!serializeFn) {
@@ -82,6 +84,7 @@ export class SmartFilterSerializer {
82
84
  return serializedBlock;
83
85
  });
84
86
  return {
87
+ format: "smartFilter",
85
88
  formatVersion: 1,
86
89
  name: smartFilter.name,
87
90
  comments: smartFilter.comments,
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterSerializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartFilterSerializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE;;;;;GAKG;AACH,SAAS,+BAA+B,CAAC,CAA0B,EAAE,CAA0B;IAC3F,OAAO,CACH,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;QAC7B,CAAC,CAAC,oBAAoB,KAAK,CAAC,CAAC,oBAAoB;QACjD,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAC/B,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,qBAAqB,CACtD,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAG9B;;;;OAIG;IACH,YAAmB,+BAAyC,EAAE,0BAAgD;QAP7F,sBAAiB,GAAkC,IAAI,GAAG,EAAE,CAAC;QAQ1E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAC1E,+BAA+B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,0BAA0B,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAC9C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CACzE,CAAC;IACN,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,WAAwB;QACrC,MAAM,WAAW,GAA8B,EAAE,CAAC;QAElD,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAgB,EAAE,EAAE;YAC/D,6BAA6B;YAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,WAAW,GACb,cAAc,KAAK,iBAAiB,CAAC,SAAS,IAAI,cAAc,KAAK,oBAAoB,CAAC,SAAS;gBAC/F,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,eAAe,GAAuB,WAAW,CAAC,KAAK,CAAC,CAAC;YAE/D,0CAA0C;YAC1C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAsB,EAAE,EAAE;gBAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;gBACtC,IAAI,WAAW,EAAE,CAAC;oBACd,MAAM,aAAa,GAA4B;wBAC3C,UAAU,EAAE,KAAK,CAAC,QAAQ;wBAC1B,oBAAoB,EAAE,KAAK,CAAC,IAAI;wBAChC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ;wBAC5C,qBAAqB,EAAE,WAAW,CAAC,IAAI;qBAC1C,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,+BAA+B,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;wBACtF,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,2CAA2C;YAC3C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAuB,EAAE,EAAE;gBAC9C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAsB,EAAE,EAAE;oBAChD,MAAM,aAAa,GAA4B;wBAC3C,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;wBACrC,oBAAoB,EAAE,KAAK,CAAC,IAAI;wBAChC,WAAW,EAAE,KAAK,CAAC,QAAQ;wBAC3B,qBAAqB,EAAE,MAAM,CAAC,IAAI;qBACrC,CAAC;oBACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,+BAA+B,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;wBACtF,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpC,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,OAAO,eAAe,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,MAAM,EAAE,aAAa;YACrB,aAAa,EAAE,CAAC;YAChB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,MAAM;YACN,WAAW;SACd,CAAC;IACN,CAAC;CACJ"}
@@ -6,11 +6,15 @@
6
6
  import type { AllConnectionPointTypes, ConnectionPointValue } from "../../connection/connectionPointType";
7
7
  import type { ShaderProgram } from "../../utils/shaderCodeUtils";
8
8
  /**
9
- * The V1 definition of a serialized block. A block definition is loaded by a CustomShaderBlock and defines how a
9
+ * The V1 definition of a serialized shader block. This block definition is loaded by a CustomShaderBlock and defines how a
10
10
  * blockType works. This should not be confused with an ISerializedBockV1, which is a serialized instance of a block in a
11
11
  * serialized SmartFilter graph. It is referenced by blockType in a serialized SmartFilter.
12
12
  */
13
- export type SerializedBlockDefinitionV1 = {
13
+ export type SerializedShaderBlockDefinitionV1 = {
14
+ /**
15
+ * Which type of serialized data this is.
16
+ */
17
+ format: "shaderBlockDefinition";
14
18
  /**
15
19
  * The version of the block definition format (format of the serialized data, not the version of the block definition itself).
16
20
  */
@@ -60,4 +64,4 @@ export type SerializedInputConnectionPointV1<U extends AllConnectionPointTypes =
60
64
  */
61
65
  autoBind?: InputAutoBindV1;
62
66
  };
63
- //# sourceMappingURL=blockSerialization.types.d.ts.map
67
+ //# sourceMappingURL=shaderBlockSerialization.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderBlockSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/shaderBlockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC5C;;OAEG;IACH,MAAM,EAAE,uBAAuB,CAAC;IAEhC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,gCAAgC,EAAE,CAAC;IAE1D;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACxG;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B,CAAC"}
@@ -4,4 +4,4 @@
4
4
  * ----------------------------------------------------------------------------
5
5
  */
6
6
  export {};
7
- //# sourceMappingURL=blockSerialization.types.js.map
7
+ //# sourceMappingURL=shaderBlockSerialization.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderBlockSerialization.types.js","sourceRoot":"","sources":["../../../src/serialization/v1/shaderBlockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -3,6 +3,7 @@ import type { BaseBlock } from "../../blocks/baseBlock.js";
3
3
  import type { SmartFilter } from "../../smartFilter.js";
4
4
  import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine";
5
5
  import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSystem/interfaces/nodeLocationInfo.js";
6
+ import type { SmartFilterDeserializer } from "../smartFilterDeserializer.js";
6
7
  /**
7
8
  * ----------------------------------------------------------------------------
8
9
  * Serialized Data Types
@@ -12,6 +13,8 @@ import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSyste
12
13
  * V1 Serialized Smart Filter
13
14
  */
14
15
  export type SerializedSmartFilterV1 = {
16
+ /** Which type of serialized data this is. */
17
+ format: "smartFilter";
15
18
  /** The format version of the serialized data (not the version of the SmartFilter itself).*/
16
19
  formatVersion: 1;
17
20
  /** The SmartFilter name */
@@ -80,7 +83,7 @@ export interface IBlockSerializerV1 {
80
83
  /**
81
84
  * A function that deserializes a V1 block in a SmartFilter
82
85
  */
83
- export type DeserializeBlockV1 = (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine) => Promise<BaseBlock>;
86
+ export type DeserializeBlockV1 = (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine, smartFilterDeserializer: SmartFilterDeserializer) => Promise<BaseBlock>;
84
87
  /**
85
88
  * A function that optionally deserializes a block from a V1 serialized block object, returning null if it cannot
86
89
  */
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/smartFilterSerialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,4FAA4F;IAC5F,aAAa,EAAE,CAAC,CAAC;IAEjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,yGAAyG;IACzG,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,SAAS,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC7B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACtC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"smartFilterSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/smartFilterSerialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAClH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,6CAA6C;IAC7C,MAAM,EAAE,aAAa,CAAC;IAEtB,4FAA4F;IAC5F,aAAa,EAAE,CAAC,CAAC;IAEjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,yGAAyG;IACzG,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,SAAS,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC7B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,EAClB,uBAAuB,EAAE,uBAAuB,KAC/C,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACtC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/smart-filters",
3
- "version": "0.6.3-alpha",
3
+ "version": "0.7.1-alpha",
4
4
  "description": "Babylon.js Smart Filter core",
5
5
  "author": {
6
6
  "name": "Sebastien VANDENBERGHE"
@@ -1,4 +1,5 @@
1
- import type { ConnectionPoint } from "../connection/connectionPoint";
1
+ import type { Nullable } from "@babylonjs/core/types";
2
+ import type { ConnectionPoint, RuntimeData } from "../connection/connectionPoint";
2
3
  import type { ConnectionPointType } from "../connection/connectionPointType";
3
4
 
4
5
  import { BaseBlock } from "../blocks/baseBlock.js";
@@ -25,7 +26,7 @@ export abstract class AggregateBlock extends BaseBlock {
25
26
  /**
26
27
  * The list of relationships between the internal graph inputs and the outside ones.
27
28
  */
28
- private readonly _aggregatedInputs: [ConnectionPoint, ConnectionPoint][] = [];
29
+ private readonly _aggregatedInputs: [ConnectionPoint[], ConnectionPoint][] = [];
29
30
 
30
31
  /**
31
32
  * Do not override prepareForRuntime for aggregate blocks. It is not supported.
@@ -49,11 +50,13 @@ export abstract class AggregateBlock extends BaseBlock {
49
50
  }
50
51
 
51
52
  // Rewire input connections
52
- for (const [internalConnectionPoint, externalConnectionPoint] of this._aggregatedInputs) {
53
+ for (const [internalConnectionPoints, externalConnectionPoint] of this._aggregatedInputs) {
53
54
  const connectedToExternalConnectionPoint = externalConnectionPoint.connectedTo;
54
55
  if (connectedToExternalConnectionPoint) {
55
56
  connectedToExternalConnectionPoint.disconnectFrom(externalConnectionPoint);
56
- connectedToExternalConnectionPoint.connectTo(internalConnectionPoint);
57
+ for (const internalConnectionPoint of internalConnectionPoints) {
58
+ connectedToExternalConnectionPoint.connectTo(internalConnectionPoint);
59
+ }
57
60
  }
58
61
  }
59
62
 
@@ -85,11 +88,15 @@ export abstract class AggregateBlock extends BaseBlock {
85
88
  }
86
89
  }
87
90
 
88
- for (const [internalConnectionPoint, externalConnectionPoint] of this._aggregatedInputs) {
89
- const connectedToInternalConnectionPoint = internalConnectionPoint.connectedTo;
90
- if (connectedToInternalConnectionPoint) {
91
- connectedToInternalConnectionPoint.disconnectFrom(internalConnectionPoint);
92
- connectedToInternalConnectionPoint.connectTo(externalConnectionPoint);
91
+ for (const [internalConnectionPoints, externalConnectionPoint] of this._aggregatedInputs) {
92
+ if (internalConnectionPoints[0]) {
93
+ const connectedToInternalConnectionPoint = internalConnectionPoints[0].connectedTo;
94
+ if (connectedToInternalConnectionPoint) {
95
+ for (const internalConnectionPoint of internalConnectionPoints) {
96
+ connectedToInternalConnectionPoint.disconnectFrom(internalConnectionPoint);
97
+ }
98
+ connectedToInternalConnectionPoint.connectTo(externalConnectionPoint);
99
+ }
93
100
  }
94
101
  }
95
102
  }
@@ -97,16 +104,23 @@ export abstract class AggregateBlock extends BaseBlock {
97
104
  /**
98
105
  * Registers an input connection from the internal graph as an input of the aggregated graph.
99
106
  * @param name - The name of the exposed input connection point
100
- * @param internalConnectionPoint - The input connection point in the inner graph to expose as an input on the aggregate block
107
+ * @param internalConnectionPoints - The input connection points in the inner graph to wire up to the new subfilter input
108
+ * @param defaultValue - The default value to use for the input connection point
101
109
  * @returns the connection point referencing the input block
102
110
  */
103
111
  protected _registerSubfilterInput<U extends ConnectionPointType>(
104
112
  name: string,
105
- internalConnectionPoint: ConnectionPoint<U>
113
+ internalConnectionPoints: ConnectionPoint<U>[],
114
+ defaultValue: Nullable<RuntimeData<U>> = null
106
115
  ): ConnectionPoint<U> {
107
- const externalInputConnectionPoint = this._registerInput(name, internalConnectionPoint.type);
116
+ const type = internalConnectionPoints[0]?.type;
117
+ if (type === undefined) {
118
+ throw new Error("Cannot register an input connection point with no internal connection points");
119
+ }
120
+ const externalInputConnectionPoint = this._registerInput(name, type, defaultValue);
121
+
122
+ this._aggregatedInputs.push([internalConnectionPoints, externalInputConnectionPoint]);
108
123
 
109
- this._aggregatedInputs.push([internalConnectionPoint, externalInputConnectionPoint]);
110
124
  return externalInputConnectionPoint;
111
125
  }
112
126
 
@@ -0,0 +1,85 @@
1
+ import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
2
+ import type { SmartFilterDeserializer, SerializedBlockDefinition } from "../serialization/index.js";
3
+ import type { SmartFilter } from "../smartFilter.js";
4
+ import { AggregateBlock } from "./aggregateBlock.js";
5
+ import type { BaseBlock } from "./baseBlock.js";
6
+
7
+ /**
8
+ * Loads a serialized SmartFilter into a block which can be used in another SmartFilter.
9
+ */
10
+ export class CustomAggregateBlock extends AggregateBlock {
11
+ /**
12
+ * Creates a new CustomAggregateBlock
13
+ * @param smartFilter - The SmartFilter to create the block for
14
+ * @param engine - The ThinEngine to use
15
+ * @param name - The friendly name of the block
16
+ * @param serializedSmartFilter - The serialized SmartFilter to load into the block
17
+ * @param smartFilterDeserializer - The deserializer to use
18
+ * @returns A promise that resolves to the new CustomAggregateBlock
19
+ */
20
+ public static async Create(
21
+ smartFilter: SmartFilter,
22
+ engine: ThinEngine,
23
+ name: string,
24
+ serializedSmartFilter: SerializedBlockDefinition,
25
+ smartFilterDeserializer: SmartFilterDeserializer
26
+ ): Promise<BaseBlock> {
27
+ const innerSmartFilter = await smartFilterDeserializer.deserialize(engine, serializedSmartFilter);
28
+ return new CustomAggregateBlock(smartFilter, name, serializedSmartFilter.blockType, innerSmartFilter, false);
29
+ }
30
+
31
+ /**
32
+ * The class name of the block.
33
+ */
34
+ public static override ClassName = "CustomAggregateBlock";
35
+
36
+ private readonly _blockType: string;
37
+
38
+ /**
39
+ * The type of the block - used when serializing / deserializing the block, and in the editor.
40
+ */
41
+ public override get blockType(): string {
42
+ return this._blockType;
43
+ }
44
+
45
+ private constructor(
46
+ smartFilter: SmartFilter,
47
+ name: string,
48
+ blockType: string,
49
+ innerSmartFilter: SmartFilter,
50
+ disableOptimization: boolean
51
+ ) {
52
+ super(smartFilter, name, disableOptimization);
53
+
54
+ this._blockType = blockType;
55
+
56
+ const attachedBlocks = innerSmartFilter.attachedBlocks;
57
+ for (let index = 0; index < attachedBlocks.length; index++) {
58
+ const block = attachedBlocks[index];
59
+ if (block && block.isInput && block.outputs[0]) {
60
+ // If this input block is connected to anything (has any endpoints), create an input connection point for it
61
+ if (block.outputs[0].endpoints.length > 0) {
62
+ this._registerSubfilterInput(
63
+ block.name,
64
+ block.outputs[0].endpoints.slice(),
65
+ block.outputs[0].runtimeData ?? null
66
+ );
67
+ }
68
+
69
+ // Remove this input block from the smart filter graph - this will reset the runtimeData to the
70
+ // default for that connection point (which may be null)
71
+ innerSmartFilter.removeBlock(block);
72
+ index--;
73
+ }
74
+ }
75
+
76
+ if (!innerSmartFilter.output.connectedTo) {
77
+ throw new Error("The inner smart filter must have an output connected to something");
78
+ }
79
+
80
+ this._registerSubfilterOutput("output", innerSmartFilter.output.connectedTo);
81
+
82
+ // Disconnect the inner smart filter output from the inner smart filter
83
+ innerSmartFilter.output.connectedTo.disconnectFrom(innerSmartFilter.output);
84
+ }
85
+ }
@@ -2,8 +2,8 @@ import type { Effect } from "@babylonjs/core/Materials/effect";
2
2
  import { ConnectionPointType } from "../connection/connectionPointType.js";
3
3
  import { ShaderBinding } from "../runtime/shaderRuntime.js";
4
4
  import { createStrongRef } from "../runtime/strongRef.js";
5
- import type { SerializedBlockDefinition } from "../serialization/serializedBlockDefinition";
6
- import type { SerializedInputConnectionPointV1 } from "../serialization/v1/blockSerialization.types";
5
+ import type { SerializedShaderBlockDefinition } from "../serialization/serializedShaderBlockDefinition.js";
6
+ import type { SerializedInputConnectionPointV1 } from "../serialization/v1/shaderBlockSerialization.types.js";
7
7
  import type { SmartFilter } from "../smartFilter";
8
8
  import type { ShaderProgram } from "../utils/shaderCodeUtils";
9
9
  import { ShaderBlock } from "./shaderBlock.js";
@@ -92,7 +92,7 @@ export class CustomShaderBlock extends ShaderBlock {
92
92
  public static Create(
93
93
  smartFilter: SmartFilter,
94
94
  name: string,
95
- blockDefinition: SerializedBlockDefinition
95
+ blockDefinition: SerializedShaderBlockDefinition
96
96
  ): CustomShaderBlock {
97
97
  // When a new version of SerializedBlockDefinition is created, this function should be updated to handle the new properties.
98
98
 
@@ -185,7 +185,7 @@ export class ConnectionPoint<U extends ConnectionPointType = ConnectionPointType
185
185
 
186
186
  // Connections are double-linked - remove the reference back to this connection point from the one we just disconnected from
187
187
  endpoint._connectedTo = null;
188
- endpoint.runtimeData = null;
188
+ endpoint.runtimeData = endpoint.defaultRuntimeData;
189
189
  }
190
190
 
191
191
  /**
package/src/index.ts CHANGED
@@ -21,6 +21,7 @@ export { InputBlock, type InputBlockEditorData } from "./blocks/inputBlock.js";
21
21
  export { type AnyInputBlock } from "./blocks/inputBlock.js";
22
22
  export { ShaderBlock } from "./blocks/shaderBlock.js";
23
23
  export { CustomShaderBlock } from "./blocks/customShaderBlock.js";
24
+ export { CustomAggregateBlock } from "./blocks/customAggregateBlock.js";
24
25
  export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./blocks/disableableShaderBlock.js";
25
26
  export { AggregateBlock } from "./blocks/aggregateBlock.js";
26
27
  export { DisableableShaderBinding, ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
@@ -37,4 +38,4 @@ export { SmartFilterOptimizer } from "./optimization/smartFilterOptimizer.js";
37
38
  export * from "./utils/textureLoaders.js";
38
39
  export * from "./serialization/index.js";
39
40
  export * from "./editorUtils/editableInPropertyPage.js";
40
- export * from "./serialization/importCustomShaderBlockDefinition.js";
41
+ export * from "./serialization/importCustomBlockDefinition.js";
@@ -1,22 +1,39 @@
1
1
  import { ConnectionPointType } from "../connection/connectionPointType.js";
2
2
  import { hasGlslHeader, parseFragmentShader } from "../utils/buildTools/shaderConverter.js";
3
3
  import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
4
- import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/blockSerialization.types.js";
4
+ import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
5
+ import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/shaderBlockSerialization.types.js";
5
6
 
6
7
  /**
7
- * Imports a serialized custom shader block definition. Supports importing a JSON string
8
- * of an SerializedBlockDefinition object, or a glsl shader with the required annotations
9
- * so it can be converted to a SerializedBlockDefinition object.
10
- * See readme.md for more information.
11
- * @param serializedBlockDefinition - The serialized block definition - either a SerializedBlockDefinition object in a JSON string, or an annotated glsl shader
8
+ * Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
9
+ * CustomAggregateBlock definitions.
10
+ *
11
+ * CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
12
+ * or a glsl shader with the required annotations (see readme.md for details).
13
+ *
14
+ * CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
15
+ *
16
+ * @param serializedData - The serialized data
12
17
  * @returns The serialized block definition
13
18
  */
14
- export function importCustomShaderBlockDefinition(serializedBlockDefinition: string): SerializedBlockDefinition {
15
- if (hasGlslHeader(serializedBlockDefinition)) {
16
- return importAnnotatedGlsl(serializedBlockDefinition);
19
+ export function importCustomBlockDefinition(serializedData: string): SerializedBlockDefinition {
20
+ if (hasGlslHeader(serializedData)) {
21
+ return importAnnotatedGlsl(serializedData);
17
22
  } else {
18
- // Assume this is a serialized SerializedBlockDefinition object
19
- return JSON.parse(serializedBlockDefinition);
23
+ // Assume this is a serialized JSON object
24
+ const blockDefinition = JSON.parse(serializedData);
25
+
26
+ // Some old SmartFilters didn't have a format property - default to smartFilter if missing
27
+ if (blockDefinition.format === undefined) {
28
+ blockDefinition.format = "smartFilter";
29
+ }
30
+
31
+ // SmartFilters can be serialized without a blockType
32
+ // By convention, we use the SmartFilter name as the blockType when importing them as SerializedBlockDefinitions
33
+ if (blockDefinition.format === "smartFilter" && blockDefinition.name && !blockDefinition.blockType) {
34
+ blockDefinition.blockType = blockDefinition.name;
35
+ }
36
+ return blockDefinition;
20
37
  }
21
38
  }
22
39
 
@@ -27,7 +44,7 @@ export function importCustomShaderBlockDefinition(serializedBlockDefinition: str
27
44
  * @param fragmentShader - The contents of the .glsl fragment shader file
28
45
  * @returns The serialized block definition
29
46
  */
30
- function importAnnotatedGlsl(fragmentShader: string): SerializedBlockDefinition {
47
+ function importAnnotatedGlsl(fragmentShader: string): SerializedShaderBlockDefinition {
31
48
  const fragmentShaderInfo = parseFragmentShader(fragmentShader);
32
49
 
33
50
  if (!fragmentShaderInfo.blockType) {
@@ -75,6 +92,7 @@ function importAnnotatedGlsl(fragmentShader: string): SerializedBlockDefinition
75
92
  }
76
93
 
77
94
  return {
95
+ format: "shaderBlockDefinition",
78
96
  formatVersion: 1,
79
97
  blockType: fragmentShaderInfo.blockType,
80
98
  shaderProgram: {
@@ -2,4 +2,5 @@ export * from "./v1/index.js";
2
2
  export * from "./serializedSmartFilter.js";
3
3
  export * from "./smartFilterDeserializer.js";
4
4
  export * from "./smartFilterSerializer.js";
5
+ export * from "./serializedShaderBlockDefinition.js";
5
6
  export * from "./serializedBlockDefinition.js";
@@ -1,7 +1,12 @@
1
- import type { SerializedBlockDefinitionV1 } from "./v1/blockSerialization.types";
1
+ import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition";
2
+ import type { SerializedSmartFilter } from "./serializedSmartFilter";
2
3
 
3
4
  /**
4
- * Type union of all versions of serialized SmartFilter block definitions
5
- * A block definition is an object which is used to create a CustomShaderBlock instance.
5
+ * Type that represents any type of serialized block definition - shader or aggregate.
6
6
  */
7
- export type SerializedBlockDefinition = SerializedBlockDefinitionV1;
7
+ export type SerializedBlockDefinition = (SerializedShaderBlockDefinition | SerializedSmartFilter) & {
8
+ /**
9
+ * The type of block this is.
10
+ */
11
+ blockType: string;
12
+ };
@@ -0,0 +1,7 @@
1
+ import type { SerializedShaderBlockDefinitionV1 } from "./v1/shaderBlockSerialization.types";
2
+
3
+ /**
4
+ * Type union of all versions of serialized SmartFilter block definitions
5
+ * A block definition is an object which is used to create a CustomShaderBlock instance.
6
+ */
7
+ export type SerializedShaderBlockDefinition = SerializedShaderBlockDefinitionV1;
@@ -20,7 +20,8 @@ import type { Nullable } from "@babylonjs/core/types";
20
20
  export type BlockFactory = (
21
21
  smartFilter: SmartFilter,
22
22
  engine: ThinEngine,
23
- serializedBlock: ISerializedBlockV1
23
+ serializedBlock: ISerializedBlockV1,
24
+ smartFilterDeserializer: SmartFilterDeserializer
24
25
  ) => Promise<Nullable<BaseBlock>>;
25
26
 
26
27
  /**
@@ -182,7 +183,7 @@ export class SmartFilterDeserializer {
182
183
  break;
183
184
  default: {
184
185
  // If it's not an input or output block, use the provided block factory
185
- newBlock = await this._blockFactory(smartFilter, engine, serializedBlock);
186
+ newBlock = await this._blockFactory(smartFilter, engine, serializedBlock, this);
186
187
  if (!newBlock) {
187
188
  blockTypesWhichCouldNotBeDeserialized.push(serializedBlock.blockType);
188
189
  return;
@@ -12,6 +12,7 @@ import type {
12
12
  SerializedSmartFilterV1,
13
13
  } from "./v1/smartFilterSerialization.types";
14
14
  import { CustomShaderBlock } from "../blocks/customShaderBlock.js";
15
+ import { CustomAggregateBlock } from "../blocks/customAggregateBlock.js";
15
16
 
16
17
  /**
17
18
  * Determines if two serialized connection points are equivalent to each other
@@ -62,8 +63,9 @@ export class SmartFilterSerializer {
62
63
 
63
64
  const blocks = smartFilter.attachedBlocks.map((block: BaseBlock) => {
64
65
  // Serialize the block itself
66
+ const blockClassName = block.getClassName();
65
67
  const serializeFn =
66
- block.getClassName() === CustomShaderBlock.ClassName
68
+ blockClassName === CustomShaderBlock.ClassName || blockClassName === CustomAggregateBlock.ClassName
67
69
  ? defaultBlockSerializer
68
70
  : this._blockSerializers.get(block.blockType);
69
71
  if (!serializeFn) {
@@ -106,6 +108,7 @@ export class SmartFilterSerializer {
106
108
  });
107
109
 
108
110
  return {
111
+ format: "smartFilter",
109
112
  formatVersion: 1,
110
113
  name: smartFilter.name,
111
114
  comments: smartFilter.comments,
@@ -8,11 +8,16 @@ import type { AllConnectionPointTypes, ConnectionPointValue } from "../../connec
8
8
  import type { ShaderProgram } from "../../utils/shaderCodeUtils";
9
9
 
10
10
  /**
11
- * The V1 definition of a serialized block. A block definition is loaded by a CustomShaderBlock and defines how a
11
+ * The V1 definition of a serialized shader block. This block definition is loaded by a CustomShaderBlock and defines how a
12
12
  * blockType works. This should not be confused with an ISerializedBockV1, which is a serialized instance of a block in a
13
13
  * serialized SmartFilter graph. It is referenced by blockType in a serialized SmartFilter.
14
14
  */
15
- export type SerializedBlockDefinitionV1 = {
15
+ export type SerializedShaderBlockDefinitionV1 = {
16
+ /**
17
+ * Which type of serialized data this is.
18
+ */
19
+ format: "shaderBlockDefinition";
20
+
16
21
  /**
17
22
  * The version of the block definition format (format of the serialized data, not the version of the block definition itself).
18
23
  */
@@ -3,6 +3,7 @@ import type { BaseBlock } from "../../blocks/baseBlock.js";
3
3
  import type { SmartFilter } from "../../smartFilter.js";
4
4
  import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine";
5
5
  import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSystem/interfaces/nodeLocationInfo.js";
6
+ import type { SmartFilterDeserializer } from "../smartFilterDeserializer.js";
6
7
 
7
8
  /**
8
9
  * ----------------------------------------------------------------------------
@@ -14,6 +15,9 @@ import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSyste
14
15
  * V1 Serialized Smart Filter
15
16
  */
16
17
  export type SerializedSmartFilterV1 = {
18
+ /** Which type of serialized data this is. */
19
+ format: "smartFilter";
20
+
17
21
  /** The format version of the serialized data (not the version of the SmartFilter itself).*/
18
22
  formatVersion: 1;
19
23
 
@@ -105,7 +109,8 @@ export interface IBlockSerializerV1 {
105
109
  export type DeserializeBlockV1 = (
106
110
  smartFilter: SmartFilter,
107
111
  serializedBlock: ISerializedBlockV1,
108
- engine: ThinEngine
112
+ engine: ThinEngine,
113
+ smartFilterDeserializer: SmartFilterDeserializer
109
114
  ) => Promise<BaseBlock>;
110
115
 
111
116
  /**
@@ -1,11 +0,0 @@
1
- import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
2
- /**
3
- * Imports a serialized custom shader block definition. Supports importing a JSON string
4
- * of an SerializedBlockDefinition object, or a glsl shader with the required annotations
5
- * so it can be converted to a SerializedBlockDefinition object.
6
- * See readme.md for more information.
7
- * @param serializedBlockDefinition - The serialized block definition - either a SerializedBlockDefinition object in a JSON string, or an annotated glsl shader
8
- * @returns The serialized block definition
9
- */
10
- export declare function importCustomShaderBlockDefinition(serializedBlockDefinition: string): SerializedBlockDefinition;
11
- //# sourceMappingURL=importCustomShaderBlockDefinition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"importCustomShaderBlockDefinition.d.ts","sourceRoot":"","sources":["../../src/serialization/importCustomShaderBlockDefinition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAGhF;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAAC,yBAAyB,EAAE,MAAM,GAAG,yBAAyB,CAO9G"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"importCustomShaderBlockDefinition.js","sourceRoot":"","sources":["../../src/serialization/importCustomShaderBlockDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAI5F;;;;;;;GAOG;AACH,MAAM,UAAU,iCAAiC,CAAC,yBAAiC;IAC/E,IAAI,aAAa,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACJ,+DAA+D;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,cAAsB;;IAC/C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAE/D,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,wCAAwC;IACxC,MAAM,qBAAqB,GAAuC,EAAE,CAAC;IACrE,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAChD,iCAAiC;QACjC,IAAI,IAAyB,CAAC;QAC9B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO;gBACR,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBACjC,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,qCAAqC;QACrC,MAAM,oBAAoB,GAAqC;YAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI;YACJ,QAAQ,EAAE,MAAA,OAAO,CAAC,UAAU,0CAAE,QAA2B;SAC5D,CAAC;QACF,IAAI,oBAAoB,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,IAAI,CAAA,MAAA,OAAO,CAAC,UAAU,0CAAE,OAAO,MAAK,SAAS,EAAE,CAAC;YACzG,oBAAoB,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QACnE,CAAC;QACD,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,kBAAkB,CAAC,SAAS;QACvC,aAAa,EAAE;YACX,QAAQ,EAAE,kBAAkB,CAAC,UAAU;SAC1C;QACD,qBAAqB;QACrB,mBAAmB,EAAE,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;KAChE,CAAC;AACN,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blockSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/blockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACtC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,gCAAgC,EAAE,CAAC;IAE1D;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACxG;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blockSerialization.types.js","sourceRoot":"","sources":["../../../src/serialization/v1/blockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}