1 |
- {"ast":null,"code":"import { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { FlowGraphExecutionBlock } from \"../../../flowGraphExecutionBlock.js\";\nimport { RichTypeNumber } from \"../../../flowGraphRichTypes.js\";\n/**\n * @experimental\n * A block that has an input flow and routes it to any potential output flows, randomly or sequentially\n * @see https://docs.google.com/document/d/1MT7gL-IEn_PUw-4XGBazMxsyqsxqgAVGYcNeC4Cj_9Q/edit#heading=h.i2sn85fbjo60\n */\nexport class FlowGraphMultiGateBlock extends FlowGraphExecutionBlock {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n this._cachedUnusedIndexes = [];\n this.reset = this._registerSignalInput(\"reset\");\n this.currentIndex = this.registerDataOutput(\"currentIndex\", RichTypeNumber);\n this.config.startIndex = this.config.startIndex !== undefined ? this.config.startIndex : 0;\n this.config.startIndex = Math.max(0, Math.min(this.config.startIndex, this.config.numberOutputFlows - 1));\n this.outFlows = [];\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n this.outFlows.push(this._registerSignalOutput(`out${i}`));\n }\n }\n _getUnusedIndexes(context) {\n const result = this._cachedUnusedIndexes;\n result.length = 0;\n if (!context._hasExecutionVariable(this, \"unusedIndexes\")) {\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n result.push(i);\n }\n } else {\n const contextUnusedIndexes = context._getExecutionVariable(this, \"unusedIndexes\");\n for (let i = 0; i < contextUnusedIndexes.length; i++) {\n result.push(contextUnusedIndexes[i]);\n }\n }\n return result;\n }\n _getNextOutput(currentIndex, unusedIndexes) {\n if (this.config.isRandom) {\n const nextIndex = Math.floor(Math.random() * unusedIndexes.length);\n return unusedIndexes[nextIndex];\n } else {\n return currentIndex + 1;\n }\n }\n _execute(context, callingSignal) {\n var _context$_getExecutio;\n const currentIndex = (_context$_getExecutio = context._getExecutionVariable(this, \"currentIndex\")) !== null && _context$_getExecutio !== void 0 ? _context$_getExecutio : this.config.startIndex - 1;\n let unusedIndexes = this._getUnusedIndexes(context);\n if (callingSignal === this.reset) {\n context._deleteExecutionVariable(this, \"currentIndex\");\n context._deleteExecutionVariable(this, \"unusedIndexes\");\n return;\n }\n let nextIndex = this._getNextOutput(currentIndex, unusedIndexes);\n if (nextIndex >= this.config.numberOutputFlows && this.config.loop) {\n nextIndex = 0;\n } else if (nextIndex >= this.config.numberOutputFlows && !this.config.loop) {\n return;\n }\n unusedIndexes = unusedIndexes.filter(i => i !== nextIndex);\n if (unusedIndexes.length === 0) {\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n unusedIndexes.push(i);\n }\n }\n context._setExecutionVariable(this, \"unusedIndexes\", unusedIndexes);\n context._setExecutionVariable(this, \"currentIndex\", nextIndex);\n this.currentIndex.setValue(nextIndex, context);\n this.outFlows[nextIndex]._activateSignal(context);\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return \"FGMultiGateBlock\";\n }\n /**\n * Serializes the block.\n * @param serializationObject the object to serialize to.\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.config.numberOutputFlows = this.config.numberOutputFlows;\n serializationObject.config.isRandom = this.config.isRandom;\n serializationObject.config.loop = this.config.loop;\n serializationObject.config.startIndex = this.config.startIndex;\n }\n}\nRegisterClass(\"FGMultiGateBlock\", FlowGraphMultiGateBlock);","map":{"version":3,"names":["RegisterClass","FlowGraphExecutionBlock","RichTypeNumber","FlowGraphMultiGateBlock","constructor","config","_cachedUnusedIndexes","reset","_registerSignalInput","currentIndex","registerDataOutput","startIndex","undefined","Math","max","min","numberOutputFlows","outFlows","i","push","_registerSignalOutput","_getUnusedIndexes","context","result","length","_hasExecutionVariable","contextUnusedIndexes","_getExecutionVariable","_getNextOutput","unusedIndexes","isRandom","nextIndex","floor","random","_execute","callingSignal","_context$_getExecutio","_deleteExecutionVariable","loop","filter","_setExecutionVariable","setValue","_activateSignal","getClassName","serialize","serializationObject"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js"],"sourcesContent":["import { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { FlowGraphExecutionBlock } from \"../../../flowGraphExecutionBlock.js\";\nimport { RichTypeNumber } from \"../../../flowGraphRichTypes.js\";\n/**\n * @experimental\n * A block that has an input flow and routes it to any potential output flows, randomly or sequentially\n * @see https://docs.google.com/document/d/1MT7gL-IEn_PUw-4XGBazMxsyqsxqgAVGYcNeC4Cj_9Q/edit#heading=h.i2sn85fbjo60\n */\nexport class FlowGraphMultiGateBlock extends FlowGraphExecutionBlock {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n this._cachedUnusedIndexes = [];\n this.reset = this._registerSignalInput(\"reset\");\n this.currentIndex = this.registerDataOutput(\"currentIndex\", RichTypeNumber);\n this.config.startIndex = this.config.startIndex !== undefined ? this.config.startIndex : 0;\n this.config.startIndex = Math.max(0, Math.min(this.config.startIndex, this.config.numberOutputFlows - 1));\n this.outFlows = [];\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n this.outFlows.push(this._registerSignalOutput(`out${i}`));\n }\n }\n _getUnusedIndexes(context) {\n const result = this._cachedUnusedIndexes;\n result.length = 0;\n if (!context._hasExecutionVariable(this, \"unusedIndexes\")) {\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n result.push(i);\n }\n }\n else {\n const contextUnusedIndexes = context._getExecutionVariable(this, \"unusedIndexes\");\n for (let i = 0; i < contextUnusedIndexes.length; i++) {\n result.push(contextUnusedIndexes[i]);\n }\n }\n return result;\n }\n _getNextOutput(currentIndex, unusedIndexes) {\n if (this.config.isRandom) {\n const nextIndex = Math.floor(Math.random() * unusedIndexes.length);\n return unusedIndexes[nextIndex];\n }\n else {\n return currentIndex + 1;\n }\n }\n _execute(context, callingSignal) {\n const currentIndex = context._getExecutionVariable(this, \"currentIndex\") ?? this.config.startIndex - 1;\n let unusedIndexes = this._getUnusedIndexes(context);\n if (callingSignal === this.reset) {\n context._deleteExecutionVariable(this, \"currentIndex\");\n context._deleteExecutionVariable(this, \"unusedIndexes\");\n return;\n }\n let nextIndex = this._getNextOutput(currentIndex, unusedIndexes);\n if (nextIndex >= this.config.numberOutputFlows && this.config.loop) {\n nextIndex = 0;\n }\n else if (nextIndex >= this.config.numberOutputFlows && !this.config.loop) {\n return;\n }\n unusedIndexes = unusedIndexes.filter((i) => i !== nextIndex);\n if (unusedIndexes.length === 0) {\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n unusedIndexes.push(i);\n }\n }\n context._setExecutionVariable(this, \"unusedIndexes\", unusedIndexes);\n context._setExecutionVariable(this, \"currentIndex\", nextIndex);\n this.currentIndex.setValue(nextIndex, context);\n this.outFlows[nextIndex]._activateSignal(context);\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return \"FGMultiGateBlock\";\n }\n /**\n * Serializes the block.\n * @param serializationObject the object to serialize to.\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.config.numberOutputFlows = this.config.numberOutputFlows;\n serializationObject.config.isRandom = this.config.isRandom;\n serializationObject.config.loop = this.config.loop;\n serializationObject.config.startIndex = this.config.startIndex;\n }\n}\nRegisterClass(\"FGMultiGateBlock\", FlowGraphMultiGateBlock);\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,+BAA+B;AAC7D,SAASC,uBAAuB,QAAQ,qCAAqC;AAC7E,SAASC,cAAc,QAAQ,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,SAASF,uBAAuB,CAAC;EACjEG,WAAWA;EACX;AACJ;AACA;EACIC,MAAM,EAAE;IACJ,KAAK,CAACA,MAAM,CAAC;IACb,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,oBAAoB,GAAG,EAAE;IAC9B,IAAI,CAACC,KAAK,GAAG,IAAI,CAACC,oBAAoB,CAAC,OAAO,CAAC;IAC/C,IAAI,CAACC,YAAY,GAAG,IAAI,CAACC,kBAAkB,CAAC,cAAc,EAAER,cAAc,CAAC;IAC3E,IAAI,CAACG,MAAM,CAACM,UAAU,GAAG,IAAI,CAACN,MAAM,CAACM,UAAU,KAAKC,SAAS,GAAG,IAAI,CAACP,MAAM,CAACM,UAAU,GAAG,CAAC;IAC1F,IAAI,CAACN,MAAM,CAACM,UAAU,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,IAAI,CAACV,MAAM,CAACM,UAAU,EAAE,IAAI,CAACN,MAAM,CAACW,iBAAiB,GAAG,CAAC,CAAC,CAAC;IACzG,IAAI,CAACC,QAAQ,GAAG,EAAE;IAClB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACb,MAAM,CAACW,iBAAiB,EAAEE,CAAC,EAAE,EAAE;MACpD,IAAI,CAACD,QAAQ,CAACE,IAAI,CAAC,IAAI,CAACC,qBAAqB,CAAC,MAAMF,CAAC,EAAE,CAAC,CAAC;IAC7D;EACJ;EACAG,iBAAiBA,CAACC,OAAO,EAAE;IACvB,MAAMC,MAAM,GAAG,IAAI,CAACjB,oBAAoB;IACxCiB,MAAM,CAACC,MAAM,GAAG,CAAC;IACjB,IAAI,CAACF,OAAO,CAACG,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE;MACvD,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACb,MAAM,CAACW,iBAAiB,EAAEE,CAAC,EAAE,EAAE;QACpDK,MAAM,CAACJ,IAAI,CAACD,CAAC,CAAC;MAClB;IACJ,CAAC,MACI;MACD,MAAMQ,oBAAoB,GAAGJ,OAAO,CAACK,qBAAqB,CAAC,IAAI,EAAE,eAAe,CAAC;MACjF,KAAK,IAAIT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,oBAAoB,CAACF,MAAM,EAAEN,CAAC,EAAE,EAAE;QAClDK,MAAM,CAACJ,IAAI,CAACO,oBAAoB,CAACR,CAAC,CAAC,CAAC;MACxC;IACJ;IACA,OAAOK,MAAM;EACjB;EACAK,cAAcA,CAACnB,YAAY,EAAEoB,aAAa,EAAE;IACxC,IAAI,IAAI,CAACxB,MAAM,CAACyB,QAAQ,EAAE;MACtB,MAAMC,SAAS,GAAGlB,IAAI,CAACmB,KAAK,CAACnB,IAAI,CAACoB,MAAM,CAAC,CAAC,GAAGJ,aAAa,CAACL,MAAM,CAAC;MAClE,OAAOK,aAAa,CAACE,SAAS,CAAC;IACnC,CAAC,MACI;MACD,OAAOtB,YAAY,GAAG,CAAC;IAC3B;EACJ;EACAyB,QAAQA,CAACZ,OAAO,EAAEa,aAAa,EAAE;IAAA,IAAAC,qBAAA;IAC7B,MAAM3B,YAAY,IAAA2B,qBAAA,GAAGd,OAAO,CAACK,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,cAAAS,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC/B,MAAM,CAACM,UAAU,GAAG,CAAC;IACtG,IAAIkB,aAAa,GAAG,IAAI,CAACR,iBAAiB,CAACC,OAAO,CAAC;IACnD,IAAIa,aAAa,KAAK,IAAI,CAAC5B,KAAK,EAAE;MAC9Be,OAAO,CAACe,wBAAwB,CAAC,IAAI,EAAE,cAAc,CAAC;MACtDf,OAAO,CAACe,wBAAwB,CAAC,IAAI,EAAE,eAAe,CAAC;MACvD;IACJ;IACA,IAAIN,SAAS,GAAG,IAAI,CAACH,cAAc,CAACnB,YAAY,EAAEoB,aAAa,CAAC;IAChE,IAAIE,SAAS,IAAI,IAAI,CAAC1B,MAAM,CAACW,iBAAiB,IAAI,IAAI,CAACX,MAAM,CAACiC,IAAI,EAAE;MAChEP,SAAS,GAAG,CAAC;IACjB,CAAC,MACI,IAAIA,SAAS,IAAI,IAAI,CAAC1B,MAAM,CAACW,iBAAiB,IAAI,CAAC,IAAI,CAACX,MAAM,CAACiC,IAAI,EAAE;MACtE;IACJ;IACAT,aAAa,GAAGA,aAAa,CAACU,MAAM,CAAErB,CAAC,IAAKA,CAAC,KAAKa,SAAS,CAAC;IAC5D,IAAIF,aAAa,CAACL,MAAM,KAAK,CAAC,EAAE;MAC5B,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACb,MAAM,CAACW,iBAAiB,EAAEE,CAAC,EAAE,EAAE;QACpDW,aAAa,CAACV,IAAI,CAACD,CAAC,CAAC;MACzB;IACJ;IACAI,OAAO,CAACkB,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAEX,aAAa,CAAC;IACnEP,OAAO,CAACkB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAET,SAAS,CAAC;IAC9D,IAAI,CAACtB,YAAY,CAACgC,QAAQ,CAACV,SAAS,EAAET,OAAO,CAAC;IAC9C,IAAI,CAACL,QAAQ,CAACc,SAAS,CAAC,CAACW,eAAe,CAACpB,OAAO,CAAC;EACrD;EACA;AACJ;AACA;EACIqB,YAAYA,CAAA,EAAG;IACX,OAAO,kBAAkB;EAC7B;EACA;AACJ;AACA;AACA;EACIC,SAASA,CAACC,mBAAmB,EAAE;IAC3B,KAAK,CAACD,SAAS,CAACC,mBAAmB,CAAC;IACpCA,mBAAmB,CAACxC,MAAM,CAACW,iBAAiB,GAAG,IAAI,CAACX,MAAM,CAACW,iBAAiB;IAC5E6B,mBAAmB,CAACxC,MAAM,CAACyB,QAAQ,GAAG,IAAI,CAACzB,MAAM,CAACyB,QAAQ;IAC1De,mBAAmB,CAACxC,MAAM,CAACiC,IAAI,GAAG,IAAI,CAACjC,MAAM,CAACiC,IAAI;IAClDO,mBAAmB,CAACxC,MAAM,CAACM,UAAU,GAAG,IAAI,CAACN,MAAM,CAACM,UAAU;EAClE;AACJ;AACAX,aAAa,CAAC,kBAAkB,EAAEG,uBAAuB,CAAC","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|