@awesome-flow/noise 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abstract/index.cjs +1 -1
- package/dist/abstract/index.mjs +1 -1
- package/dist/{abstract-DNmiw2MC.mjs → abstract-DQyDnRw-.mjs} +2 -2
- package/dist/abstract-DQyDnRw-.mjs.map +1 -0
- package/dist/{abstract-3knbwDkz.cjs → abstract-ed4ZdB8H.cjs} +31 -31
- package/dist/abstract-ed4ZdB8H.cjs.map +1 -0
- package/dist/generators-BF_0y3pd.cjs.map +1 -1
- package/dist/generators-DSwgPqW2.mjs.map +1 -1
- package/dist/nodes/index.cjs +1 -1
- package/dist/nodes/index.mjs +1 -1
- package/dist/nodes/output/index.cjs +1 -1
- package/dist/nodes/output/index.mjs +1 -1
- package/dist/templates/generators/index.cjs +1 -1
- package/dist/templates/generators/index.mjs +1 -1
- package/dist/templates/groups/index.cjs +1 -1
- package/dist/templates/groups/index.mjs +1 -1
- package/dist/templates/index.cjs +1 -1
- package/dist/templates/index.mjs +1 -1
- package/dist/templates/modifiers/index.cjs +1 -1
- package/dist/templates/modifiers/index.mjs +1 -1
- package/dist/templates/output/index.cjs +1 -1
- package/dist/templates/output/index.mjs +1 -1
- package/dist/templates/selectors/index.cjs +1 -1
- package/dist/templates/selectors/index.mjs +1 -1
- package/dist/templates/transformers/index.cjs +1 -1
- package/dist/templates/transformers/index.mjs +1 -1
- package/package.json +10 -8
- package/dist/abstract-3knbwDkz.cjs.map +0 -1
- package/dist/abstract-DNmiw2MC.mjs.map +0 -1
package/dist/abstract/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_abstract = require('../abstract-
|
|
2
|
+
const require_abstract = require('../abstract-ed4ZdB8H.cjs');
|
|
3
3
|
|
|
4
4
|
exports.DisplacementHandle = require_abstract.DisplacementHandle;
|
|
5
5
|
exports.NoiseCombineType = require_abstract.NoiseCombineType;
|
package/dist/abstract/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { C as noiseCombineModuleMap, H as DisplacementHandle, L as NoiseTemplateGroup, S as NoiseCombineType, U as NoiseHandleType, W as NoiseSourceControlHandle, n as noiseNodeTemplates, r as noiseNodeTypes, t as NoiseNodeType } from "../abstract-
|
|
1
|
+
import { C as noiseCombineModuleMap, H as DisplacementHandle, L as NoiseTemplateGroup, S as NoiseCombineType, U as NoiseHandleType, W as NoiseSourceControlHandle, n as noiseNodeTemplates, r as noiseNodeTypes, t as NoiseNodeType } from "../abstract-DQyDnRw-.mjs";
|
|
2
2
|
|
|
3
3
|
export { DisplacementHandle, NoiseCombineType, NoiseHandleType, NoiseNodeType, NoiseSourceControlHandle, NoiseTemplateGroup, noiseCombineModuleMap, noiseNodeTemplates, noiseNodeTypes };
|
|
@@ -11,7 +11,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
11
11
|
import { useNodeContext } from "@awesome-flow/core/hooks";
|
|
12
12
|
import { Divider, Group, Stack, Text } from "@mantine/core";
|
|
13
13
|
import { CoreHandleType, CoreTemplateGroup } from "@awesome-flow/core/abstract";
|
|
14
|
-
import { PipelineFactory } from "@awesome-
|
|
14
|
+
import { PipelineFactory } from "@awesome-ecs/core/factories";
|
|
15
15
|
import { IDGenerator } from "@awesome-flow/core/utils";
|
|
16
16
|
import { Position } from "@xyflow/system";
|
|
17
17
|
import { Abs, Add, Billow, Blend, Checkerboard, Clamp, Const, Curve, Cylinders, Displace, Exponent, Invert, Max, Min, Multiply, Perlin, Power, RidgedMulti, RotatePoint, ScaleBias, ScalePoint, Select, Spheres, Terrace, TranslatePoint, Tuple, Turbulence, Voronoi } from "libnoise-simplex-ts";
|
|
@@ -1502,4 +1502,4 @@ const noiseNodeTemplates = {
|
|
|
1502
1502
|
|
|
1503
1503
|
//#endregion
|
|
1504
1504
|
export { NoiseSpheresNodeTemplateFactory as A, noise_output_node_default as B, noiseCombineModuleMap as C, PositionGridNodeTemplateFactory as D, ModuleGroupNodeTemplateFactory as E, NoiseCheckerboardNodeTemplateFactory as F, DisplacementHandle as H, NoiseBillowNodeTemplateFactory as I, NoiseTemplateGroup as L, NoisePerlinNodeTemplateFactory as M, NoiseCylindersNodeTemplateFactory as N, PositionConstNodeTemplateFactory as O, NoiseConstNodeTemplateFactory as P, positions_logger_node_default as R, NoiseCombineType as S, NoiseAbsNodeTemplateFactory as T, NoiseHandleType as U, noise_logger_node_default as V, NoiseSourceControlHandle as W, NoiseNormalizeNodeTemplateFactory as _, NoiseTranslatePointNodeTemplateFactory as a, NoiseCurveNodeTemplateFactory as b, NoiseDisplaceNodeTemplateFactory as c, PositionLoggerNodeTemplateFactory as d, NoiseTextureDataTemplateFactory as f, NoiseScaleBiasNodeTemplateFactory as g, NoiseTerraceNodeTemplateFactory as h, NoiseTurbulenceNodeTemplateFactory as i, NoiseRidgedMultiNodeTemplateFactory as j, NoiseVoronoiNodeTemplateFactory as k, NoiseSelectNodeTemplateFactory as l, NoiseLoggerNodeTemplateFactory as m, noiseNodeTemplates as n, NoiseScalePointNodeTemplateFactory as o, NoiseOutputNodeTemplateFactory as p, noiseNodeTypes as r, NoiseRotatePointNodeTemplateFactory as s, NoiseNodeType as t, NoiseBlendNodeTemplateFactory as u, NoiseInvertNodeTemplateFactory as v, NoiseClampNodeTemplateFactory as w, NoiseCombineNodeTemplateFactory as x, NoiseExponentNodeTemplateFactory as y, noise_texture_data_node_default as z };
|
|
1505
|
-
//# sourceMappingURL=abstract-
|
|
1505
|
+
//# sourceMappingURL=abstract-DQyDnRw-.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-DQyDnRw-.mjs","names":["ModuleGroupNode","PositionConstNode","PositionGridNode","NoiseOutputNode","NoiseTextureDataNode","NoiseLoggerNode","PositionsLoggerNode","NoiseConstNode","NoiseBillowNode","NoiseCheckerboardNode","NoiseCylindersNode","NoisePerlinNode","NoiseRidgedMultiNode","NoiseSpheresNode","NoiseVoronoiNode","NoiseCombineNode","NoiseClampNode","NoiseAbsNode","NoiseNormalizeNode","NoiseCurveNode","NoiseExponentNode","NoiseInvertNode","NoiseScaleBiasNode","NoiseTerraceNode","NoiseBlendNode","NoiseSelectNode","NoiseDisplaceNode","NoiseRotatePointNode","NoiseScalePointNode","NoiseTranslatePointNode","NoiseTurbulenceNode"],"sources":["../src/abstract/handle-types.ts","../src/nodes/output/noise-logger-node.tsx","../src/nodes/output/noise-output-node.tsx","../src/nodes/output/noise-texture-data-node.tsx","../src/nodes/output/positions-logger-node.tsx","../src/abstract/templates.ts","../src/middleware/incoming-property-value.ts","../src/templates/generators/noise-billow-template.ts","../src/templates/generators/noise-checkerboard-template.ts","../src/templates/generators/noise-const-template.ts","../src/templates/generators/noise-cylinders-template.ts","../src/templates/generators/noise-perlin-template.ts","../src/templates/generators/noise-ridgedmulti-template.ts","../src/templates/generators/noise-spheres-template.ts","../src/templates/generators/noise-voronoi-template.ts","../src/templates/generators/position-const-template.ts","../src/templates/generators/position-grid-template.ts","../src/templates/groups/module-group-template.ts","../src/templates/modifiers/noise-abs-template.ts","../src/templates/modifiers/noise-clamp-template.ts","../src/abstract/operations.ts","../src/templates/modifiers/noise-combine-template.ts","../src/templates/modifiers/noise-curve-template.ts","../src/templates/modifiers/noise-exponent-template.ts","../src/templates/modifiers/noise-invert-template.ts","../src/templates/modifiers/noise-normalize-template.ts","../src/templates/modifiers/noise-scalebias-template.ts","../src/templates/modifiers/noise-terrace-template.ts","../src/templates/output/noise-logger-template.ts","../src/templates/output/noise-output-template.ts","../src/templates/output/noise-texture-data-template.ts","../src/templates/output/position-logger-template.ts","../src/templates/selectors/noise-blend-template.ts","../src/templates/selectors/noise-select-template.ts","../src/templates/transformers/noise-displace-template.ts","../src/templates/transformers/noise-rotate-point-template.ts","../src/templates/transformers/noise-scale-point-template.ts","../src/templates/transformers/noise-translate-point-template.ts","../src/templates/transformers/noise-turbulence-template.ts","../src/abstract/node-types.ts"],"sourcesContent":["import { CustomNodeHandle } from '@awesome-flow/core/abstract';\n\nexport enum NoiseHandleType {\n textureData = 'texture-data',\n noise = 'noise',\n position = 'position',\n module = 'module'\n}\n\nexport enum DisplacementHandle {\n sourceModule = 'source',\n xModule = 'x-module',\n yModule = 'y-module',\n zModule = 'z-module',\n output = 'output'\n}\n\nexport enum NoiseSourceControlHandle {\n source = 'source',\n control = 'control',\n output = 'output'\n}\n\nexport type DisplacementModuleHandle = CustomNodeHandle & {\n dataId: DisplacementHandle;\n};\n\nexport type NoiseSourceControlModuleHandle = CustomNodeHandle & {\n dataId: NoiseSourceControlHandle;\n};\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\r\nimport { useNodeContext } from '@awesome-flow/core/hooks';\r\nimport { NodeContainer } from '@awesome-flow/core/layout';\r\nimport { Divider, Stack, Text } from '@mantine/core';\r\nimport { Node, NodeProps } from '@xyflow/react';\r\nimport { memo } from 'react';\r\nimport { NoiseHandleType } from '../../abstract';\r\nimport { NoiseLoggerContext } from '../../templates';\r\n\r\nfunction NoiseLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\r\n const context = useNodeContext<NoiseLoggerContext>(id)?.incoming?.[NoiseHandleType.noise];\r\n const noise = context?.filter((c) => c.computed?.noise).flatMap((c) => c.computed.noise) || [];\r\n\r\n return (\r\n <NodeContainer id={id} selected={selected} data={data} type={type}>\r\n <Text>Size: {noise?.length || 0}</Text>\r\n <Divider h={5} />\r\n <Stack>\r\n {noise?.map((v, i) => (\r\n <Text key={i}>\r\n {v.position?.x}:{v.position?.y}:{v.position?.z}: {v.value}\r\n </Text>\r\n ))}\r\n </Stack>\r\n </NodeContainer>\r\n );\r\n}\r\n\r\nexport default memo(NoiseLoggerNode);\r\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\r\nimport { HandlesIncomingDataStatus } from '@awesome-flow/core/components';\r\nimport { useNodeContext } from '@awesome-flow/core/hooks';\r\nimport { NodeContainer } from '@awesome-flow/core/layout';\r\nimport { NoiseOutputContext } from '@awesome-flow/noise/templates';\r\nimport { Text } from '@mantine/core';\r\nimport { Node, NodeProps } from '@xyflow/react';\r\nimport { memo } from 'react';\r\n\r\nfunction NoiseOutputNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\r\n const context = useNodeContext<NoiseOutputContext>(id);\r\n\r\n return (\r\n <NodeContainer id={id} selected={selected} data={data} type={type}>\r\n <HandlesIncomingDataStatus nodeId={id} handles={data.handles} />\r\n <Text mt={5}>Noise points: {context?.computed?.noise?.length || 0}</Text>\r\n </NodeContainer>\r\n );\r\n}\r\n\r\nexport default memo(NoiseOutputNode);\r\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\r\nimport { useNodeContext } from '@awesome-flow/core/hooks';\r\nimport { NodeContainer } from '@awesome-flow/core/layout';\r\nimport { NoiseTextureDataContext } from '@awesome-flow/noise/templates';\r\nimport { Group, Stack } from '@mantine/core';\r\nimport { Node, NodeProps } from '@xyflow/react';\r\nimport { memo } from 'react';\r\n\r\nfunction NoiseTextureDataNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\r\n const context = useNodeContext<NoiseTextureDataContext>(id)?.computed;\r\n\r\n return (\r\n <NodeContainer id={id} selected={selected} data={data} type={type}>\r\n <Stack>\r\n <Group>\r\n Resolution: {context?.textureResolutionX}x{context?.textureResolutionY}\r\n </Group>\r\n <Group>Input Length: {context?.textureData?.length || 0}</Group>\r\n <Group>\r\n Output Length ({context?.textureResolutionX}*{context?.textureResolutionY}*4): {context?.textureData?.length || 0}\r\n </Group>\r\n </Stack>\r\n </NodeContainer>\r\n );\r\n}\r\n\r\nexport default memo(NoiseTextureDataNode);\r\n","import { BasicNodeData } from '@awesome-flow/core/abstract';\r\nimport { useNodeContext } from '@awesome-flow/core/hooks';\r\nimport { NodeContainer } from '@awesome-flow/core/layout';\r\nimport { Divider, Stack, Text } from '@mantine/core';\r\nimport { Node, NodeProps } from '@xyflow/react';\r\nimport { memo } from 'react';\r\nimport { NoiseHandleType } from '../../abstract';\r\nimport { PositionLoggerNodeContext } from '../../templates';\r\n\r\nfunction PositionsLoggerNode({ id, selected, data, type }: NodeProps<Node<BasicNodeData>>) {\r\n const incoming = useNodeContext<PositionLoggerNodeContext>(id)?.incoming[NoiseHandleType.position];\r\n const positions = incoming\r\n ?.filter((p) => !!p.computed?.positions?.length)\r\n .flatMap((p) => p.computed.positions);\r\n\r\n return (\r\n <NodeContainer id={id} selected={selected} data={data} type={type}>\r\n <Text>Size: {positions?.length || 0}</Text>\r\n <Divider h={5} />\r\n <Stack>\r\n {positions?.map((v, i) => (\r\n <Text key={i}>\r\n {v.x}:{v.y}:{v.z}\r\n </Text>\r\n ))}\r\n </Stack>\r\n </NodeContainer>\r\n );\r\n}\r\n\r\nexport default memo(PositionsLoggerNode);\r\n","export enum NoiseTemplateGroup {\n positions = 'Positions',\n output = 'Output',\n noiseGenerators = 'Noise Generators',\n noiseModifiers = 'Noise Modifiers',\n noiseSelectors = 'Noise Selectors',\n noiseTransformers = 'Noise Transformers'\n}\n","import { IMiddleware } from '@awesome-ecs/abstract/pipelines';\nimport { CoreHandleType } from '@awesome-flow/core/abstract';\nimport { NoiseGeneratorContext } from '../abstract/node-props';\n\nexport class IncomingPropertyValueMiddleware implements IMiddleware<NoiseGeneratorContext<any>> {\n action(context: NoiseGeneratorContext<any>): void {\n const incoming = context.incoming?.[CoreHandleType.variableProperty] ?? [];\n\n const properties = { ...context.data };\n\n for (const connection of incoming) {\n const overwrite = connection.computed;\n\n if (overwrite) {\n Object.assign(properties, { [overwrite.property]: overwrite.value });\n }\n }\n\n context.properties = properties;\n }\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { Billow } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseBillowContext = NoiseGeneratorContext<NodeFBMNoiseData>;\n\nexport class NoiseBillowNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseBillow,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Billow Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseBillowContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseBillowContext) => {\n const { properties } = context;\n\n context.computed = {\n module: new Billow(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.persistence,\n properties.seed\n )\n };\n },\n cleanup: (context: NoiseBillowContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { ComputedModuleData } from '@awesome-flow/noise/abstract';\nimport { Position } from '@xyflow/system';\nimport { Checkerboard } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NoiseCheckerboardContext = NodeContext<BasicNodeData, ComputedModuleData>;\n\nexport class NoiseCheckerboardNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseCheckerboard,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Checkerboard Noise'\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseCheckerboardContext> = PipelineFactory.create({\n action: (context: NoiseCheckerboardContext) => {\n context.computed = {\n module: new Checkerboard()\n };\n },\n cleanup: (context: NoiseCheckerboardContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Const } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeConstNoiseData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NoiseConstContext = NodeContext<NodeConstNoiseData, ComputedModuleData>;\n\nexport class NoiseConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeConstNoiseData> = {\n type: NoiseNodeType.noiseConst,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Const Value Noise',\n noise: 0,\n min: -1,\n max: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseConstContext> = PipelineFactory.create<NoiseConstContext>({\n shouldRun(context: NoiseConstContext) {\n return context.data.noise !== undefined && context.data.noise !== null;\n },\n action(context: NoiseConstContext) {\n const module = new Const(context.data.noise);\n context.computed = { module };\n },\n cleanup(context: NoiseConstContext) {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Cylinders } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeCylindersNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseCylindersContext = NoiseGeneratorContext<NodeCylindersNoiseData>;\n\nexport class NoiseCylindersNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCylindersNoiseData> = {\n type: NoiseNodeType.noiseCylinders,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Cylinders Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseCylindersContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseCylindersContext) => {\n const { properties } = context;\n context.computed = {\n module: new Cylinders(properties.frequency)\n };\n },\n cleanup: (context: NoiseCylindersContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Perlin } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeFBMNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoisePerlinContext = NoiseGeneratorContext<NodeFBMNoiseData>;\n\nexport class NoisePerlinNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeFBMNoiseData> = {\n type: NoiseNodeType.noisePerlin,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Perlin Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 5,\n persistence: 0.5,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoisePerlinContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoisePerlinContext) => {\n const { properties } = context;\n context.computed = {\n module: new Perlin(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.persistence,\n properties.seed\n )\n };\n },\n cleanup: (context: NoisePerlinContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { RidgedMulti } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeRidgedNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseRidgedMultiContext = NoiseGeneratorContext<NodeRidgedNoiseData>;\n\nexport class NoiseRidgedMultiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRidgedNoiseData> = {\n type: NoiseNodeType.noiseRidgedMulti,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Ridged Multi Noise',\n frequency: 0.1,\n lacunarity: 2.0,\n octaves: 6,\n offset: 1.0,\n gain: 2.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseRidgedMultiContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseRidgedMultiContext) => {\n const { properties } = context;\n context.computed = {\n module: new RidgedMulti(\n properties.frequency,\n properties.lacunarity,\n properties.octaves,\n properties.offset,\n properties.gain,\n properties.seed\n )\n };\n },\n cleanup: (context: NoiseRidgedMultiContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Spheres } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeSpheresNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseSpheresContext = NoiseGeneratorContext<NodeSpheresNoiseData>;\n\nexport class NoiseSpheresNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSpheresNoiseData> = {\n type: NoiseNodeType.noiseSpheres,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Spheres Noise',\n frequency: 0.1\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseSpheresContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseSpheresContext) => {\n const { properties } = context;\n context.computed = {\n module: new Spheres(properties.frequency)\n };\n },\n cleanup: (context: NoiseSpheresContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { Position } from '@xyflow/system';\nimport { Voronoi } from 'libnoise-simplex-ts';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NodeVoronoiNoiseData, NoiseGeneratorContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseVoronoiContext = NoiseGeneratorContext<NodeVoronoiNoiseData>;\n\nexport class NoiseVoronoiNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeVoronoiNoiseData> = {\n type: NoiseNodeType.noiseVoronoi,\n group: NoiseTemplateGroup.noiseGenerators,\n data: {\n title: 'Voronoi Noise',\n frequency: 0.1,\n displacement: 1.0,\n distance: true,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseVoronoiContext> = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n action: (context: NoiseVoronoiContext) => {\n const { properties } = context;\n context.computed = {\n module: new Voronoi(properties.frequency, properties.displacement, properties.distance, properties.seed)\n };\n },\n cleanup: (context: NoiseVoronoiContext) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedPositionsData, NodePositionData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NodePositionContext = NodeContext<NodePositionData, ComputedPositionsData>;\n\nexport class PositionConstNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodePositionData> = {\n type: NoiseNodeType.position,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Output',\n position: { x: 0, y: 0, z: 0 }\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NodePositionContext>({\n shouldRun(context: NodePositionContext) {\n return context.data.position !== undefined && context.data.position !== null;\n },\n action(context: NodePositionContext) {\n const { data } = context;\n\n context.computed = {\n positions: [data.position]\n };\n },\n cleanup(context: NodePositionContext) {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedPositionsData, Position as GridPosition, NodeGridData } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseTemplateGroup } from '../../abstract/templates';\n\nexport type NodeGridPositionContext = NodeContext<NodeGridData, ComputedPositionsData>;\n\nexport class PositionGridNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeGridData> = {\n type: NoiseNodeType.grid,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Grid Output',\n center: { x: 0, y: 0, z: 0 },\n radius: 1\n },\n handles: [\n {\n position: Position.Right,\n dataType: NoiseHandleType.position,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NodeGridPositionContext>({\n shouldRun(context: NodeGridPositionContext) {\n const { center, radius } = context.data;\n return center !== undefined && radius !== undefined;\n },\n action(context: NodeGridPositionContext) {\n const { data } = context;\n const { center, radius } = data;\n\n const positions: GridPosition[] = [];\n\n for (let i = -radius; i < radius; i++) {\n for (let j = -radius; j < radius; j++) {\n positions.push({ x: center.x + i, y: center.y + j, z: center.z });\n }\n }\n\n context.computed = {\n positions\n };\n },\n cleanup(context: NodeGridPositionContext) {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, CoreTemplateGroup, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { ComputedModuleData, NoiseModuleContext } from '@awesome-flow/noise/abstract';\nimport { Position } from '@xyflow/system';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type ModuleGroupNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class ModuleGroupNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.groupModule,\n group: CoreTemplateGroup.groups,\n data: {\n title: 'Modules Group',\n isGroup: true,\n initialSize: {\n width: 300,\n height: 200\n },\n collapsedSize: {\n width: 300,\n height: 80\n }\n },\n handles: [\n {\n position: Position.Bottom,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1,\n hideOnCollapse: true\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<ModuleGroupNodeContext> = PipelineFactory.create({\n shouldRun(context: ModuleGroupNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action: (context: ModuleGroupNodeContext) => {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n context.computed = { module };\n },\n cleanup: (context: ModuleGroupNodeContext) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Abs, ModifierModule } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseAbsNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseAbsNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseAbs,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Abs Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseAbsNodeContext> = PipelineFactory.create({\n shouldRun(context: NoiseAbsNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseAbsNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n } else {\n context.computed = { module: new Abs(module) };\n }\n }\n },\n cleanup(context: NoiseAbsNodeContext) {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Clamp, ModifierModule } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeClampNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseClampNodeContext = NodeContext<\n NodeClampNoiseData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseClampNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeClampNoiseData> = {\n type: NoiseNodeType.noiseClamp,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Clamp Noise',\n lowerBound: -1,\n upperBound: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseClampNodeContext>({\n shouldRun(context: NoiseClampNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseClampNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const clampModule = context.computed?.module as Clamp;\n\n if (clampModule) {\n clampModule.sourceModule = module;\n clampModule.lowerBound = context.data.lowerBound;\n clampModule.upperBound = context.data.upperBound;\n } else {\n context.computed = {\n module: new Clamp(module, context.data.lowerBound, context.data.upperBound)\n };\n }\n }\n },\n cleanup(context: NoiseClampNodeContext) {\n context.computed = null;\n }\n });\n}\n","import { Add, Max, Min, Multiply, Power } from 'libnoise-simplex-ts';\n\nexport enum NoiseCombineType {\n add = 'add',\n max = 'max',\n min = 'min',\n multiply = 'multiply',\n power = 'power'\n}\n\nexport const noiseCombineModuleMap = {\n [NoiseCombineType.add]: Add,\n [NoiseCombineType.max]: Max,\n [NoiseCombineType.min]: Min,\n [NoiseCombineType.multiply]: Multiply,\n [NoiseCombineType.power]: Power\n};\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { CombinerModule } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeCombineNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NoiseCombineType, noiseCombineModuleMap } from '../../abstract/operations';\n\nexport type NoiseCombineNodeContext = NodeContext<\n NodeCombineNoiseData,\n ComputedModuleData<CombinerModule>,\n { [NoiseHandleType.module]: NoiseModuleContext[] }\n>;\n\nexport class NoiseCombineNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCombineNoiseData> = {\n type: NoiseNodeType.noiseCombine,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Combine Noise',\n operation: NoiseCombineType.add\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n minConnections: 2,\n maxConnections: 2\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseCombineNodeContext>({\n shouldRun(context: NoiseCombineNodeContext): boolean {\n return context.incoming[NoiseHandleType.module]?.length === 2;\n },\n action(context: NoiseCombineNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n\n const ModuleFactory = noiseCombineModuleMap[context.data.operation];\n const module = new ModuleFactory(incoming[0].computed?.module, incoming[1].computed?.module);\n\n context.computed = { module };\n },\n cleanup(context: NoiseCombineNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Curve, ModifierModule, Tuple } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeCurveNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseCurveNodeContext = NodeContext<\n NodeCurveNoiseData,\n ComputedModuleData<ModifierModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseCurveNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeCurveNoiseData> = {\n type: NoiseNodeType.noiseCurve,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Curve',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseCurveNodeContext>({\n shouldRun(context: NoiseCurveNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseCurveNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const curve = new Curve(\n module,\n context.data.points.map((p) => new Tuple(p.input, p.output))\n );\n context.computed = { module: curve };\n }\n },\n cleanup(context: NoiseCurveNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Exponent } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeExponentNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseExponentNodeContext = NodeContext<\n NodeExponentNoiseData,\n ComputedModuleData<Exponent>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseExponentNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeExponentNoiseData> = {\n type: NoiseNodeType.noiseExponent,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Exponent',\n exponent: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseExponentNodeContext>({\n shouldRun(context: NoiseExponentNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseExponentNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.exponent = context.data.exponent;\n } else if (module) {\n const exponentModule = new Exponent(module, context.data.exponent);\n context.computed = { module: exponentModule };\n }\n },\n cleanup(context: NoiseExponentNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Invert } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseInvertNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Invert>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseInvertNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseInvert,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Invert Noise'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseInvertNodeContext>({\n shouldRun(context: NoiseInvertNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseInvertNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n } else if (module) {\n context.computed = { module: new Invert(module) };\n }\n },\n cleanup(context: NoiseInvertNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { IDGenerator } from '@awesome-flow/core/utils';\nimport { Position } from '@xyflow/system';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeNormalizeNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { NormalizeNoiseModule } from '../../modules';\n\nexport type NoiseNormalizeNodeContext = NodeContext<\n NodeNormalizeNoiseData,\n ComputedModuleData<NormalizeNoiseModule>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseNormalizeNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeNormalizeNoiseData> = {\n id: IDGenerator.template(),\n type: NoiseNodeType.noiseNormalize,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Normalize Noise',\n intervalStart: -1,\n intervalEnd: 1\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseNormalizeNodeContext>({\n shouldRun(context: NoiseNormalizeNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseNormalizeNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const normalizeModule = new NormalizeNoiseModule(module, context.data.intervalStart, context.data.intervalEnd);\n context.computed = { module: normalizeModule };\n }\n },\n cleanup(context: NoiseNormalizeNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { ScaleBias } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeScaleBiasNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseScaleBiasNodeContext = NodeContext<\n NodeScaleBiasNoiseData,\n ComputedModuleData<ScaleBias>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseScaleBiasNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScaleBiasNoiseData> = {\n type: NoiseNodeType.noiseScaleBias,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Scale/Bias Noise',\n scale: 1.0,\n bias: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseScaleBiasNodeContext>({\n shouldRun(context: NoiseScaleBiasNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseScaleBiasNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = module;\n context.computed.module.scale = context.data.scale;\n context.computed.module.bias = context.data.bias;\n } else if (module) {\n const scaleBiasModule = new ScaleBias(module, context.data.scale, context.data.bias);\n context.computed = { module: scaleBiasModule };\n }\n },\n cleanup(context: NoiseScaleBiasNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Terrace } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeTerraceNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTerraceNodeContext = NodeContext<\n NodeTerraceNoiseData,\n ComputedModuleData<Terrace>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseTerraceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTerraceNoiseData> = {\n type: NoiseNodeType.noiseTerrace,\n group: NoiseTemplateGroup.noiseModifiers,\n data: {\n title: 'Noise Terrace',\n points: []\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseTerraceNodeContext>({\n shouldRun(context: NoiseTerraceNodeContext): boolean {\n return !!context.incoming[NoiseHandleType.module];\n },\n action(context: NoiseTerraceNodeContext): void {\n const incoming = context.incoming[NoiseHandleType.module];\n const module = incoming.computed?.module;\n\n if (module) {\n const terrace = new Terrace(module, context.data.points);\n context.computed = { module: terrace };\n }\n },\n cleanup(context: NoiseTerraceNodeContext): void {\n context.computed = null;\n }\n });\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { ComputedNoiseData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseLoggerContext = NodeContext<\n BasicNodeData,\n never,\n { [NoiseHandleType.noise]: NodeContext<any, ComputedNoiseData>[] }\n>;\n\nexport class NoiseLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseLogger,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target'\n }\n ]\n };\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport {\n ComputedNoiseData,\n ComputedPositionsData,\n NoiseModuleContext,\n NoiseTemplateGroup,\n PositionNoiseValue\n} from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseOutputContext = NodeContext<\n BasicNodeData,\n ComputedNoiseData,\n {\n [NoiseHandleType.position]: NodeContext<any, ComputedPositionsData>[];\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseOutputNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseOutput,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Noise Output'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.noise,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseOutputContext> = PipelineFactory.create({\n action: (context) => {\n const incomingPositions = context.incoming[NoiseHandleType.position];\n const incomingModule = context.incoming[NoiseHandleType.module];\n\n if (incomingPositions?.length && incomingModule?.computed?.module) {\n const { module } = incomingModule.computed;\n\n const noise: PositionNoiseValue[] = [];\n\n for (const input of incomingPositions) {\n const { positions } = input.computed;\n for (const position of positions) {\n const value = module.getValue(position.x, position.y, position.z);\n\n noise.push({\n position,\n value\n });\n }\n }\n\n context.computed = {\n noise\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { IPipeline } from '@awesome-ecs/abstract/pipelines';\nimport { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { ComputedNoiseData, ComputedNoiseTextureData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTextureDataContext = NodeContext<\n BasicNodeData,\n ComputedNoiseTextureData,\n { [NoiseHandleType.noise]: NodeContext<any, ComputedNoiseData> }\n>;\n\nexport class NoiseTextureDataTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.textureData,\n group: NoiseTemplateGroup.output,\n data: {\n title: 'Texture Data'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.noise,\n connection: 'target',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.textureData,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline?: IPipeline<NoiseTextureDataContext> = PipelineFactory.create({\n shouldRun: (context) => {\n const incoming = context.incoming[NoiseHandleType.noise];\n return !!incoming?.computed?.noise.length;\n },\n action: (context) => {\n const incoming = context.incoming[NoiseHandleType.noise];\n const noise = incoming?.computed?.noise;\n\n const size = Math.ceil(Math.sqrt(noise.length));\n\n const colors = noise.flatMap((n) => [n.value * 255, n.value * 255, n.value * 255, 255]);\n const dataArray = new Uint8Array(size * size * 4);\n dataArray.set(colors);\n\n context.computed = {\n textureData: dataArray,\n textureResolutionX: size,\n textureResolutionY: size\n };\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { ComputedPositionsData, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type PositionLoggerNodeContext = NodeContext<\n BasicNodeData,\n never,\n { [NoiseNodeType.position]: NodeContext<any, ComputedPositionsData>[] }\n>;\n\nexport class PositionLoggerNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.positionLogger,\n group: NoiseTemplateGroup.positions,\n data: {\n title: 'Position Logger'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.position,\n connection: 'target'\n }\n ]\n };\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Blend } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseBlendNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Blend>,\n {\n [NoiseSourceControlHandle.source]: NoiseModuleContext[];\n [NoiseSourceControlHandle.control]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseBlendNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData> = {\n type: NoiseNodeType.noiseBlend,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Blend'\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Modules',\n dataId: NoiseSourceControlHandle.source,\n groupBy: 'dataId',\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseBlendNodeContext>({\n shouldRun: (context) => {\n return (\n context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control]\n );\n },\n action: (context) => {\n const incomingSources = context.incoming[NoiseSourceControlHandle.source];\n const incomingControl = context.incoming[NoiseSourceControlHandle.control];\n\n if (context.computed?.module) {\n context.computed.module.controlModule = incomingControl.computed.module;\n context.computed.module.sourceModuleA = incomingSources[0].computed.module;\n context.computed.module.sourceModuleB = incomingSources[1].computed.module;\n } else {\n context.computed = {\n module: new Blend(\n incomingSources[0].computed.module,\n incomingSources[1].computed.module,\n incomingControl.computed.module\n )\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Select } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType, NoiseSourceControlHandle } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeSelectNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseSelectNodeContext = NodeContext<\n NodeSelectNoiseData,\n ComputedModuleData<Select>,\n {\n [NoiseSourceControlHandle.source]: NoiseModuleContext[];\n [NoiseSourceControlHandle.control]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseSelectNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeSelectNoiseData> = {\n type: NoiseNodeType.noiseSelect,\n group: NoiseTemplateGroup.noiseSelectors,\n data: {\n title: 'Noise Select',\n edgeFalloff: 0.0,\n lowerBound: -1.0,\n upperBound: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.source,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Source Modules',\n maxConnections: 2,\n minConnections: 2\n },\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.control,\n groupBy: 'dataId',\n connection: 'target',\n label: 'Control Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: NoiseSourceControlHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseSelectNodeContext>({\n shouldRun: (context) => {\n return (\n context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control]\n );\n },\n action: (context) => {\n const incomingSources = context.incoming[NoiseSourceControlHandle.source];\n const incomingControl = context.incoming[NoiseSourceControlHandle.control];\n\n if (context.computed?.module) {\n context.computed.module.controlModule = incomingControl.computed.module;\n context.computed.module.sourceModuleA = incomingSources[0].computed.module;\n context.computed.module.sourceModuleB = incomingSources[1].computed.module;\n context.computed.module.edgeFalloff = context.data.edgeFalloff;\n context.computed.module.lowerBound = context.data.lowerBound;\n context.computed.module.upperBound = context.data.upperBound;\n } else {\n context.computed = {\n module: new Select(\n incomingSources[0].computed.module,\n incomingSources[1].computed.module,\n incomingControl.computed.module,\n context.data.edgeFalloff,\n context.data.lowerBound,\n context.data.upperBound\n )\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { BasicNodeData, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { Displace } from 'libnoise-simplex-ts';\nimport { ComputedModuleData, NoiseModuleContext, NoiseTemplateGroup } from '../../abstract';\nimport { DisplacementHandle, DisplacementModuleHandle, NoiseHandleType } from '../../abstract/handle-types';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseDisplaceNodeContext = NodeContext<\n BasicNodeData,\n ComputedModuleData<Displace>,\n {\n [DisplacementHandle.sourceModule]: NoiseModuleContext;\n [DisplacementHandle.xModule]: NoiseModuleContext;\n [DisplacementHandle.yModule]: NoiseModuleContext;\n [DisplacementHandle.zModule]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseDisplaceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<BasicNodeData, Omit<DisplacementModuleHandle, 'handleId'>> = {\n type: NoiseNodeType.noiseDisplace,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Displace'\n },\n handles: [\n {\n position: Position.Left,\n connection: 'target',\n label: 'Source Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.sourceModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'X Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.xModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Y Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.yModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Left,\n connection: 'target',\n label: 'Z Module',\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.zModule,\n groupBy: 'dataId',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n dataId: DisplacementHandle.output,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseDisplaceNodeContext>({\n shouldRun: (context) => {\n return (\n !!context.incoming[DisplacementHandle.sourceModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.xModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.yModule]?.computed?.module &&\n !!context.incoming[DisplacementHandle.zModule]?.computed?.module\n );\n },\n action: (context) => {\n const sourceModule = context.incoming[DisplacementHandle.sourceModule].computed.module;\n const xModule = context.incoming[DisplacementHandle.xModule].computed.module;\n const yModule = context.incoming[DisplacementHandle.yModule].computed.module;\n const zModule = context.incoming[DisplacementHandle.zModule].computed.module;\n\n const hasModules = !!sourceModule && !!xModule && !!yModule && !!zModule;\n\n if (context.computed?.module) {\n if (hasModules) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xModule = xModule;\n context.computed.module.yModule = yModule;\n context.computed.module.zModule = zModule;\n }\n } else {\n context.computed = {\n module: new Displace(sourceModule, xModule, yModule, zModule)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { RotatePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeRotatePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseRotatePointNodeContext = NodeContext<\n NodeRotatePointNoiseData,\n ComputedModuleData<RotatePoint>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseRotatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeRotatePointNoiseData> = {\n type: NoiseNodeType.noiseRotatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Rotate Point',\n xAngle: 0.0,\n yAngle: 0.0,\n zAngle: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseRotatePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { xAngle, yAngle, zAngle } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xAngle = xAngle;\n context.computed.module.yAngle = yAngle;\n context.computed.module.zAngle = zAngle;\n } else {\n context.computed = {\n module: new RotatePoint(sourceModule, xAngle, yAngle, zAngle)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { ScalePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeScalePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseScalePointNodeContext = NodeContext<\n NodeScalePointNoiseData,\n ComputedModuleData<ScalePoint>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n }\n>;\n\nexport class NoiseScalePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeScalePointNoiseData> = {\n type: NoiseNodeType.noiseScalePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Scale Point',\n xScale: 1.0,\n yScale: 1.0,\n zScale: 1.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseScalePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { xScale, yScale, zScale } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.xScale = xScale;\n context.computed.module.yScale = yScale;\n context.computed.module.zScale = zScale;\n } else {\n context.computed = {\n module: new ScalePoint(sourceModule, xScale, yScale, zScale)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { Position } from '@xyflow/system';\nimport { TranslatePoint } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport { ComputedModuleData, NodeTranslatePointNoiseData, NoiseModuleContext } from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\n\nexport type NoiseTranslatePointNodeContext = NodeContext<\n NodeTranslatePointNoiseData,\n ComputedModuleData<TranslatePoint>,\n { [NoiseHandleType.module]: NoiseModuleContext }\n>;\n\nexport class NoiseTranslatePointNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTranslatePointNoiseData> = {\n type: NoiseNodeType.noiseTranslatePoint,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Translate Point',\n translateX: 0.0,\n translateY: 0.0,\n translateZ: 0.0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create<NoiseTranslatePointNodeContext>({\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context) => {\n const sourceModule = context.incoming[NoiseHandleType.module].computed.module;\n const { translateX, translateY, translateZ } = context.data;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = sourceModule;\n context.computed.module.translateX = translateX;\n context.computed.module.translateY = translateY;\n context.computed.module.translateZ = translateZ;\n } else {\n context.computed = {\n module: new TranslatePoint(sourceModule, translateX, translateY, translateZ)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { PipelineFactory } from '@awesome-ecs/core/factories';\nimport { CoreHandleType, ITemplateFactory, NodeTemplate } from '@awesome-flow/core/abstract';\nimport { NodeContext } from '@awesome-flow/core/abstract/pipelines';\nimport { NodeVariablePropertyContext } from '@awesome-flow/core/templates';\nimport { Position } from '@xyflow/system';\nimport { Turbulence } from 'libnoise-simplex-ts';\nimport { NoiseTemplateGroup } from '../../abstract';\nimport { NoiseHandleType } from '../../abstract/handle-types';\nimport {\n ComputedModuleData,\n NodeTurbulenceNoiseData,\n NoiseGeneratorContext,\n NoiseModuleContext\n} from '../../abstract/node-props';\nimport { NoiseNodeType } from '../../abstract/node-types';\nimport { IncomingPropertyValueMiddleware } from '../../middleware/incoming-property-value';\n\nexport type NoiseTurbulenceNodeContext = NodeContext<\n NodeTurbulenceNoiseData,\n ComputedModuleData<Turbulence>,\n {\n [NoiseHandleType.module]: NoiseModuleContext;\n [CoreHandleType.variableProperty]: NodeVariablePropertyContext[];\n }\n> &\n NoiseGeneratorContext<NodeTurbulenceNoiseData>;\n\nexport class NoiseTurbulenceNodeTemplateFactory implements ITemplateFactory {\n readonly template: NodeTemplate<NodeTurbulenceNoiseData> = {\n type: NoiseNodeType.noiseTurbulence,\n group: NoiseTemplateGroup.noiseTransformers,\n data: {\n title: 'Noise Turbulence',\n frequency: 1.0,\n power: 1.0,\n roughness: 1.0,\n seed: 0\n },\n handles: [\n {\n position: Position.Left,\n dataType: NoiseHandleType.module,\n connection: 'target',\n label: 'Source Module',\n maxConnections: 1\n },\n {\n position: Position.Left,\n dataType: CoreHandleType.variableProperty,\n label: 'Variable Properties',\n connection: 'target'\n },\n {\n position: Position.Right,\n dataType: NoiseHandleType.module,\n connection: 'source'\n }\n ]\n };\n\n readonly pipeline = PipelineFactory.create(new IncomingPropertyValueMiddleware(), {\n shouldRun: (context) => {\n return !!context.incoming[NoiseHandleType.module]?.computed?.module;\n },\n action: (context: NoiseTurbulenceNodeContext) => {\n const { properties } = context;\n const incoming = context.incoming[NoiseHandleType.module].computed.module;\n\n if (context.computed?.module) {\n context.computed.module.sourceModule = incoming;\n context.computed.module.frequency = properties.frequency;\n context.computed.module.power = properties.power;\n context.computed.module.roughness = properties.roughness;\n context.computed.module.seed = properties.seed;\n } else {\n context.computed = {\n module: new Turbulence(incoming, properties.frequency, properties.power, properties.roughness, properties.seed)\n };\n }\n },\n cleanup: (context) => {\n context.computed = null;\n }\n });\n}\n","import { ITemplateFactory } from '@awesome-flow/core/abstract';\nimport { NodeTypes } from '@xyflow/react';\nimport { ModuleGroupNode } from '../nodes';\nimport NoiseBillowNode from '../nodes/generators/noise-billow-node';\nimport NoiseCheckerboardNode from '../nodes/generators/noise-checkerboard-node';\nimport NoiseConstNode from '../nodes/generators/noise-const-node';\nimport NoiseCylindersNode from '../nodes/generators/noise-cylinders-node';\nimport NoisePerlinNode from '../nodes/generators/noise-perlin-node';\nimport NoiseRidgedMultiNode from '../nodes/generators/noise-ridgedmulti-node';\nimport NoiseSpheresNode from '../nodes/generators/noise-spheres-node';\nimport NoiseVoronoiNode from '../nodes/generators/noise-voronoi-node';\nimport PositionConstNode from '../nodes/generators/position-const-node';\nimport PositionGridNode from '../nodes/generators/position-grid-node';\nimport NoiseAbsNode from '../nodes/modifiers/noise-abs-node';\nimport NoiseClampNode from '../nodes/modifiers/noise-clamp-node';\nimport NoiseCombineNode from '../nodes/modifiers/noise-combine-node';\nimport NoiseCurveNode from '../nodes/modifiers/noise-curve-node';\nimport NoiseExponentNode from '../nodes/modifiers/noise-exponent-node';\nimport NoiseInvertNode from '../nodes/modifiers/noise-invert-node';\nimport NoiseNormalizeNode from '../nodes/modifiers/noise-normalize-node';\nimport NoiseScaleBiasNode from '../nodes/modifiers/noise-scale-bias-node';\nimport NoiseTerraceNode from '../nodes/modifiers/noise-terrace-node';\nimport NoiseLoggerNode from '../nodes/output/noise-logger-node';\nimport NoiseOutputNode from '../nodes/output/noise-output-node';\nimport NoiseTextureDataNode from '../nodes/output/noise-texture-data-node';\nimport PositionsLoggerNode from '../nodes/output/positions-logger-node';\nimport NoiseBlendNode from '../nodes/selectors/noise-blend-node';\nimport NoiseSelectNode from '../nodes/selectors/noise-select-node';\nimport NoiseDisplaceNode from '../nodes/transformers/noise-displace-node';\nimport NoiseRotatePointNode from '../nodes/transformers/noise-rotate-point-node';\nimport NoiseScalePointNode from '../nodes/transformers/noise-scale-point-node';\nimport NoiseTranslatePointNode from '../nodes/transformers/noise-translate-point-node';\nimport NoiseTurbulenceNode from '../nodes/transformers/noise-turbulence-node';\nimport { NoiseBillowNodeTemplateFactory } from '../templates/generators/noise-billow-template';\nimport { NoiseCheckerboardNodeTemplateFactory } from '../templates/generators/noise-checkerboard-template';\nimport { NoiseConstNodeTemplateFactory } from '../templates/generators/noise-const-template';\nimport { NoiseCylindersNodeTemplateFactory } from '../templates/generators/noise-cylinders-template';\nimport { NoisePerlinNodeTemplateFactory } from '../templates/generators/noise-perlin-template';\nimport { NoiseRidgedMultiNodeTemplateFactory } from '../templates/generators/noise-ridgedmulti-template';\nimport { NoiseSpheresNodeTemplateFactory } from '../templates/generators/noise-spheres-template';\nimport { NoiseVoronoiNodeTemplateFactory } from '../templates/generators/noise-voronoi-template';\nimport { PositionConstNodeTemplateFactory } from '../templates/generators/position-const-template';\nimport { PositionGridNodeTemplateFactory } from '../templates/generators/position-grid-template';\nimport { ModuleGroupNodeTemplateFactory } from '../templates/groups/module-group-template';\nimport { NoiseAbsNodeTemplateFactory } from '../templates/modifiers/noise-abs-template';\nimport { NoiseClampNodeTemplateFactory } from '../templates/modifiers/noise-clamp-template';\nimport { NoiseCombineNodeTemplateFactory } from '../templates/modifiers/noise-combine-template';\nimport { NoiseCurveNodeTemplateFactory } from '../templates/modifiers/noise-curve-template';\nimport { NoiseExponentNodeTemplateFactory } from '../templates/modifiers/noise-exponent-template';\nimport { NoiseInvertNodeTemplateFactory } from '../templates/modifiers/noise-invert-template';\nimport { NoiseNormalizeNodeTemplateFactory } from '../templates/modifiers/noise-normalize-template';\nimport { NoiseScaleBiasNodeTemplateFactory } from '../templates/modifiers/noise-scalebias-template';\nimport { NoiseTerraceNodeTemplateFactory } from '../templates/modifiers/noise-terrace-template';\nimport { NoiseLoggerNodeTemplateFactory } from '../templates/output/noise-logger-template';\nimport { NoiseOutputNodeTemplateFactory } from '../templates/output/noise-output-template';\nimport { NoiseTextureDataTemplateFactory } from '../templates/output/noise-texture-data-template';\nimport { PositionLoggerNodeTemplateFactory } from '../templates/output/position-logger-template';\nimport { NoiseBlendNodeTemplateFactory } from '../templates/selectors/noise-blend-template';\nimport { NoiseSelectNodeTemplateFactory } from '../templates/selectors/noise-select-template';\nimport { NoiseDisplaceNodeTemplateFactory } from '../templates/transformers/noise-displace-template';\nimport { NoiseRotatePointNodeTemplateFactory } from '../templates/transformers/noise-rotate-point-template';\nimport { NoiseScalePointNodeTemplateFactory } from '../templates/transformers/noise-scale-point-template';\nimport { NoiseTranslatePointNodeTemplateFactory } from '../templates/transformers/noise-translate-point-template';\nimport { NoiseTurbulenceNodeTemplateFactory } from '../templates/transformers/noise-turbulence-template';\n\nexport enum NoiseNodeType {\n position = 'position',\n grid = 'grid',\n textureData = 'texture-data',\n groupModule = 'group-module',\n positionLogger = 'position-logger',\n noiseLogger = 'noise-logger',\n noiseOutput = 'noise-output',\n noiseConst = 'noise-constant',\n noiseBillow = 'noise-billow',\n noiseCheckerboard = 'noise-checkerboard',\n noiseNormalize = 'noise-normalize',\n noiseCylinders = 'noise-cylinders',\n noisePerlin = 'noise-perlin',\n noiseRidgedMulti = 'noise-ridged-multi',\n noiseSpheres = 'noise-spheres',\n noiseVoronoi = 'noise-voronoi',\n noiseCombine = 'noise-combiner',\n noiseClamp = 'noise-clamp',\n noiseAbs = 'noise-abs',\n noiseCurve = 'noise-curve',\n noiseExponent = 'noise-exponent',\n noiseInvert = 'noise-invert',\n noiseScaleBias = 'noise-scale-bias',\n noiseTerrace = 'noise-terrace',\n noiseBlend = 'noise-blend',\n noiseSelect = 'noise-select',\n noiseDisplace = 'noise-displace',\n noiseRotatePoint = 'noise-rotate-point',\n noiseScalePoint = 'noise-scale-point',\n noiseTranslatePoint = 'noise-translate-point',\n noiseTurbulence = 'noise-turbulence'\n}\n\nexport const noiseNodeTypes = {\n [NoiseNodeType.groupModule]: ModuleGroupNode,\n [NoiseNodeType.position]: PositionConstNode,\n [NoiseNodeType.grid]: PositionGridNode,\n [NoiseNodeType.noiseOutput]: NoiseOutputNode,\n [NoiseNodeType.textureData]: NoiseTextureDataNode,\n [NoiseNodeType.noiseLogger]: NoiseLoggerNode,\n [NoiseNodeType.positionLogger]: PositionsLoggerNode,\n [NoiseNodeType.noiseConst]: NoiseConstNode,\n [NoiseNodeType.noiseBillow]: NoiseBillowNode,\n [NoiseNodeType.noiseCheckerboard]: NoiseCheckerboardNode,\n [NoiseNodeType.noiseCylinders]: NoiseCylindersNode,\n [NoiseNodeType.noisePerlin]: NoisePerlinNode,\n [NoiseNodeType.noiseRidgedMulti]: NoiseRidgedMultiNode,\n [NoiseNodeType.noiseSpheres]: NoiseSpheresNode,\n [NoiseNodeType.noiseVoronoi]: NoiseVoronoiNode,\n [NoiseNodeType.noiseCombine]: NoiseCombineNode,\n [NoiseNodeType.noiseClamp]: NoiseClampNode,\n [NoiseNodeType.noiseAbs]: NoiseAbsNode,\n [NoiseNodeType.noiseNormalize]: NoiseNormalizeNode,\n [NoiseNodeType.noiseCurve]: NoiseCurveNode,\n [NoiseNodeType.noiseExponent]: NoiseExponentNode,\n [NoiseNodeType.noiseInvert]: NoiseInvertNode,\n [NoiseNodeType.noiseScaleBias]: NoiseScaleBiasNode,\n [NoiseNodeType.noiseTerrace]: NoiseTerraceNode,\n [NoiseNodeType.noiseBlend]: NoiseBlendNode,\n [NoiseNodeType.noiseSelect]: NoiseSelectNode,\n [NoiseNodeType.noiseDisplace]: NoiseDisplaceNode,\n [NoiseNodeType.noiseRotatePoint]: NoiseRotatePointNode,\n [NoiseNodeType.noiseScalePoint]: NoiseScalePointNode,\n [NoiseNodeType.noiseTranslatePoint]: NoiseTranslatePointNode,\n [NoiseNodeType.noiseTurbulence]: NoiseTurbulenceNode\n} satisfies NodeTypes;\n\nexport const noiseNodeTemplates = {\n [NoiseNodeType.noiseOutput]: new NoiseOutputNodeTemplateFactory(),\n [NoiseNodeType.noiseBillow]: new NoiseBillowNodeTemplateFactory(),\n [NoiseNodeType.noiseCheckerboard]: new NoiseCheckerboardNodeTemplateFactory(),\n [NoiseNodeType.noiseNormalize]: new NoiseNormalizeNodeTemplateFactory(),\n [NoiseNodeType.noiseLogger]: new NoiseLoggerNodeTemplateFactory(),\n [NoiseNodeType.noiseConst]: new NoiseConstNodeTemplateFactory(),\n [NoiseNodeType.position]: new PositionConstNodeTemplateFactory(),\n [NoiseNodeType.positionLogger]: new PositionLoggerNodeTemplateFactory(),\n [NoiseNodeType.grid]: new PositionGridNodeTemplateFactory(),\n [NoiseNodeType.textureData]: new NoiseTextureDataTemplateFactory(),\n [NoiseNodeType.noiseCylinders]: new NoiseCylindersNodeTemplateFactory(),\n [NoiseNodeType.noisePerlin]: new NoisePerlinNodeTemplateFactory(),\n [NoiseNodeType.noiseRidgedMulti]: new NoiseRidgedMultiNodeTemplateFactory(),\n [NoiseNodeType.noiseSpheres]: new NoiseSpheresNodeTemplateFactory(),\n [NoiseNodeType.noiseVoronoi]: new NoiseVoronoiNodeTemplateFactory(),\n [NoiseNodeType.noiseCombine]: new NoiseCombineNodeTemplateFactory(),\n [NoiseNodeType.noiseClamp]: new NoiseClampNodeTemplateFactory(),\n [NoiseNodeType.noiseAbs]: new NoiseAbsNodeTemplateFactory(),\n [NoiseNodeType.noiseCurve]: new NoiseCurveNodeTemplateFactory(),\n [NoiseNodeType.noiseExponent]: new NoiseExponentNodeTemplateFactory(),\n [NoiseNodeType.noiseInvert]: new NoiseInvertNodeTemplateFactory(),\n [NoiseNodeType.noiseScaleBias]: new NoiseScaleBiasNodeTemplateFactory(),\n [NoiseNodeType.noiseTerrace]: new NoiseTerraceNodeTemplateFactory(),\n [NoiseNodeType.noiseBlend]: new NoiseBlendNodeTemplateFactory(),\n [NoiseNodeType.noiseSelect]: new NoiseSelectNodeTemplateFactory(),\n [NoiseNodeType.noiseDisplace]: new NoiseDisplaceNodeTemplateFactory(),\n [NoiseNodeType.noiseRotatePoint]: new NoiseRotatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseScalePoint]: new NoiseScalePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTranslatePoint]: new NoiseTranslatePointNodeTemplateFactory(),\n [NoiseNodeType.noiseTurbulence]: new NoiseTurbulenceNodeTemplateFactory(),\n [NoiseNodeType.groupModule]: new ModuleGroupNodeTemplateFactory()\n} satisfies Record<NoiseNodeType, ITemplateFactory>;\n"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ let react_jsx_runtime = require("react/jsx-runtime");
|
|
|
11
11
|
let _awesome_flow_core_hooks = require("@awesome-flow/core/hooks");
|
|
12
12
|
let _mantine_core = require("@mantine/core");
|
|
13
13
|
let _awesome_flow_core_abstract = require("@awesome-flow/core/abstract");
|
|
14
|
-
let
|
|
14
|
+
let _awesome_ecs_core_factories = require("@awesome-ecs/core/factories");
|
|
15
15
|
let _awesome_flow_core_utils = require("@awesome-flow/core/utils");
|
|
16
16
|
let _xyflow_system = require("@xyflow/system");
|
|
17
17
|
let libnoise_simplex_ts = require("libnoise-simplex-ts");
|
|
@@ -190,7 +190,7 @@ var NoiseBillowNodeTemplateFactory = class {
|
|
|
190
190
|
connection: "source"
|
|
191
191
|
}]
|
|
192
192
|
};
|
|
193
|
-
pipeline =
|
|
193
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create(new IncomingPropertyValueMiddleware(), {
|
|
194
194
|
action: (context) => {
|
|
195
195
|
const { properties } = context;
|
|
196
196
|
context.computed = { module: new libnoise_simplex_ts.Billow(properties.frequency, properties.lacunarity, properties.octaves, properties.persistence, properties.seed) };
|
|
@@ -214,7 +214,7 @@ var NoiseCheckerboardNodeTemplateFactory = class {
|
|
|
214
214
|
connection: "source"
|
|
215
215
|
}]
|
|
216
216
|
};
|
|
217
|
-
pipeline =
|
|
217
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
218
218
|
action: (context) => {
|
|
219
219
|
context.computed = { module: new libnoise_simplex_ts.Checkerboard() };
|
|
220
220
|
},
|
|
@@ -242,7 +242,7 @@ var NoiseConstNodeTemplateFactory = class {
|
|
|
242
242
|
connection: "source"
|
|
243
243
|
}]
|
|
244
244
|
};
|
|
245
|
-
pipeline =
|
|
245
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
246
246
|
shouldRun(context) {
|
|
247
247
|
return context.data.noise !== void 0 && context.data.noise !== null;
|
|
248
248
|
},
|
|
@@ -275,7 +275,7 @@ var NoiseCylindersNodeTemplateFactory = class {
|
|
|
275
275
|
connection: "source"
|
|
276
276
|
}]
|
|
277
277
|
};
|
|
278
|
-
pipeline =
|
|
278
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create(new IncomingPropertyValueMiddleware(), {
|
|
279
279
|
action: (context) => {
|
|
280
280
|
const { properties } = context;
|
|
281
281
|
context.computed = { module: new libnoise_simplex_ts.Cylinders(properties.frequency) };
|
|
@@ -310,7 +310,7 @@ var NoisePerlinNodeTemplateFactory = class {
|
|
|
310
310
|
connection: "source"
|
|
311
311
|
}]
|
|
312
312
|
};
|
|
313
|
-
pipeline =
|
|
313
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create(new IncomingPropertyValueMiddleware(), {
|
|
314
314
|
action: (context) => {
|
|
315
315
|
const { properties } = context;
|
|
316
316
|
context.computed = { module: new libnoise_simplex_ts.Perlin(properties.frequency, properties.lacunarity, properties.octaves, properties.persistence, properties.seed) };
|
|
@@ -346,7 +346,7 @@ var NoiseRidgedMultiNodeTemplateFactory = class {
|
|
|
346
346
|
connection: "source"
|
|
347
347
|
}]
|
|
348
348
|
};
|
|
349
|
-
pipeline =
|
|
349
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create(new IncomingPropertyValueMiddleware(), {
|
|
350
350
|
action: (context) => {
|
|
351
351
|
const { properties } = context;
|
|
352
352
|
context.computed = { module: new libnoise_simplex_ts.RidgedMulti(properties.frequency, properties.lacunarity, properties.octaves, properties.offset, properties.gain, properties.seed) };
|
|
@@ -377,7 +377,7 @@ var NoiseSpheresNodeTemplateFactory = class {
|
|
|
377
377
|
connection: "source"
|
|
378
378
|
}]
|
|
379
379
|
};
|
|
380
|
-
pipeline =
|
|
380
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create(new IncomingPropertyValueMiddleware(), {
|
|
381
381
|
action: (context) => {
|
|
382
382
|
const { properties } = context;
|
|
383
383
|
context.computed = { module: new libnoise_simplex_ts.Spheres(properties.frequency) };
|
|
@@ -411,7 +411,7 @@ var NoiseVoronoiNodeTemplateFactory = class {
|
|
|
411
411
|
connection: "source"
|
|
412
412
|
}]
|
|
413
413
|
};
|
|
414
|
-
pipeline =
|
|
414
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create(new IncomingPropertyValueMiddleware(), {
|
|
415
415
|
action: (context) => {
|
|
416
416
|
const { properties } = context;
|
|
417
417
|
context.computed = { module: new libnoise_simplex_ts.Voronoi(properties.frequency, properties.displacement, properties.distance, properties.seed) };
|
|
@@ -442,7 +442,7 @@ var PositionConstNodeTemplateFactory = class {
|
|
|
442
442
|
connection: "source"
|
|
443
443
|
}]
|
|
444
444
|
};
|
|
445
|
-
pipeline =
|
|
445
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
446
446
|
shouldRun(context) {
|
|
447
447
|
return context.data.position !== void 0 && context.data.position !== null;
|
|
448
448
|
},
|
|
@@ -477,7 +477,7 @@ var PositionGridNodeTemplateFactory = class {
|
|
|
477
477
|
connection: "source"
|
|
478
478
|
}]
|
|
479
479
|
};
|
|
480
|
-
pipeline =
|
|
480
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
481
481
|
shouldRun(context) {
|
|
482
482
|
const { center, radius } = context.data;
|
|
483
483
|
return center !== void 0 && radius !== void 0;
|
|
@@ -530,7 +530,7 @@ var ModuleGroupNodeTemplateFactory = class {
|
|
|
530
530
|
connection: "source"
|
|
531
531
|
}]
|
|
532
532
|
};
|
|
533
|
-
pipeline =
|
|
533
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
534
534
|
shouldRun(context) {
|
|
535
535
|
return !!context.incoming[NoiseHandleType.module];
|
|
536
536
|
},
|
|
@@ -561,7 +561,7 @@ var NoiseAbsNodeTemplateFactory = class {
|
|
|
561
561
|
connection: "source"
|
|
562
562
|
}]
|
|
563
563
|
};
|
|
564
|
-
pipeline =
|
|
564
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
565
565
|
shouldRun(context) {
|
|
566
566
|
return !!context.incoming[NoiseHandleType.module];
|
|
567
567
|
},
|
|
@@ -598,7 +598,7 @@ var NoiseClampNodeTemplateFactory = class {
|
|
|
598
598
|
connection: "source"
|
|
599
599
|
}]
|
|
600
600
|
};
|
|
601
|
-
pipeline =
|
|
601
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
602
602
|
shouldRun(context) {
|
|
603
603
|
return !!context.incoming[NoiseHandleType.module];
|
|
604
604
|
},
|
|
@@ -659,7 +659,7 @@ var NoiseCombineNodeTemplateFactory = class {
|
|
|
659
659
|
connection: "source"
|
|
660
660
|
}]
|
|
661
661
|
};
|
|
662
|
-
pipeline =
|
|
662
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
663
663
|
shouldRun(context) {
|
|
664
664
|
return context.incoming[NoiseHandleType.module]?.length === 2;
|
|
665
665
|
},
|
|
@@ -695,7 +695,7 @@ var NoiseCurveNodeTemplateFactory = class {
|
|
|
695
695
|
connection: "source"
|
|
696
696
|
}]
|
|
697
697
|
};
|
|
698
|
-
pipeline =
|
|
698
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
699
699
|
shouldRun(context) {
|
|
700
700
|
return !!context.incoming[NoiseHandleType.module];
|
|
701
701
|
},
|
|
@@ -730,7 +730,7 @@ var NoiseExponentNodeTemplateFactory = class {
|
|
|
730
730
|
connection: "source"
|
|
731
731
|
}]
|
|
732
732
|
};
|
|
733
|
-
pipeline =
|
|
733
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
734
734
|
shouldRun(context) {
|
|
735
735
|
return !!context.incoming[NoiseHandleType.module];
|
|
736
736
|
},
|
|
@@ -763,7 +763,7 @@ var NoiseInvertNodeTemplateFactory = class {
|
|
|
763
763
|
connection: "source"
|
|
764
764
|
}]
|
|
765
765
|
};
|
|
766
|
-
pipeline =
|
|
766
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
767
767
|
shouldRun(context) {
|
|
768
768
|
return !!context.incoming[NoiseHandleType.module];
|
|
769
769
|
},
|
|
@@ -801,7 +801,7 @@ var NoiseNormalizeNodeTemplateFactory = class {
|
|
|
801
801
|
connection: "source"
|
|
802
802
|
}]
|
|
803
803
|
};
|
|
804
|
-
pipeline =
|
|
804
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
805
805
|
shouldRun(context) {
|
|
806
806
|
return !!context.incoming[NoiseHandleType.module];
|
|
807
807
|
},
|
|
@@ -837,7 +837,7 @@ var NoiseScaleBiasNodeTemplateFactory = class {
|
|
|
837
837
|
connection: "source"
|
|
838
838
|
}]
|
|
839
839
|
};
|
|
840
|
-
pipeline =
|
|
840
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
841
841
|
shouldRun(context) {
|
|
842
842
|
return !!context.incoming[NoiseHandleType.module];
|
|
843
843
|
},
|
|
@@ -876,7 +876,7 @@ var NoiseTerraceNodeTemplateFactory = class {
|
|
|
876
876
|
connection: "source"
|
|
877
877
|
}]
|
|
878
878
|
};
|
|
879
|
-
pipeline =
|
|
879
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
880
880
|
shouldRun(context) {
|
|
881
881
|
return !!context.incoming[NoiseHandleType.module];
|
|
882
882
|
},
|
|
@@ -931,7 +931,7 @@ var NoiseOutputNodeTemplateFactory = class {
|
|
|
931
931
|
}
|
|
932
932
|
]
|
|
933
933
|
};
|
|
934
|
-
pipeline =
|
|
934
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
935
935
|
action: (context) => {
|
|
936
936
|
const incomingPositions = context.incoming[NoiseHandleType.position];
|
|
937
937
|
const incomingModule = context.incoming[NoiseHandleType.module];
|
|
@@ -975,7 +975,7 @@ var NoiseTextureDataTemplateFactory = class {
|
|
|
975
975
|
connection: "source"
|
|
976
976
|
}]
|
|
977
977
|
};
|
|
978
|
-
pipeline =
|
|
978
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
979
979
|
shouldRun: (context) => {
|
|
980
980
|
return !!context.incoming[NoiseHandleType.noise]?.computed?.noise.length;
|
|
981
981
|
},
|
|
@@ -1052,7 +1052,7 @@ var NoiseBlendNodeTemplateFactory = class {
|
|
|
1052
1052
|
}
|
|
1053
1053
|
]
|
|
1054
1054
|
};
|
|
1055
|
-
pipeline =
|
|
1055
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
1056
1056
|
shouldRun: (context) => {
|
|
1057
1057
|
return context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control];
|
|
1058
1058
|
},
|
|
@@ -1111,7 +1111,7 @@ var NoiseSelectNodeTemplateFactory = class {
|
|
|
1111
1111
|
}
|
|
1112
1112
|
]
|
|
1113
1113
|
};
|
|
1114
|
-
pipeline =
|
|
1114
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
1115
1115
|
shouldRun: (context) => {
|
|
1116
1116
|
return context.incoming[NoiseSourceControlHandle.source]?.length === 2 && !!context.incoming[NoiseSourceControlHandle.control];
|
|
1117
1117
|
},
|
|
@@ -1185,7 +1185,7 @@ var NoiseDisplaceNodeTemplateFactory = class {
|
|
|
1185
1185
|
}
|
|
1186
1186
|
]
|
|
1187
1187
|
};
|
|
1188
|
-
pipeline =
|
|
1188
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
1189
1189
|
shouldRun: (context) => {
|
|
1190
1190
|
return !!context.incoming[DisplacementHandle.sourceModule]?.computed?.module && !!context.incoming[DisplacementHandle.xModule]?.computed?.module && !!context.incoming[DisplacementHandle.yModule]?.computed?.module && !!context.incoming[DisplacementHandle.zModule]?.computed?.module;
|
|
1191
1191
|
},
|
|
@@ -1234,7 +1234,7 @@ var NoiseRotatePointNodeTemplateFactory = class {
|
|
|
1234
1234
|
connection: "source"
|
|
1235
1235
|
}]
|
|
1236
1236
|
};
|
|
1237
|
-
pipeline =
|
|
1237
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
1238
1238
|
shouldRun: (context) => {
|
|
1239
1239
|
return !!context.incoming[NoiseHandleType.module]?.computed?.module;
|
|
1240
1240
|
},
|
|
@@ -1278,7 +1278,7 @@ var NoiseScalePointNodeTemplateFactory = class {
|
|
|
1278
1278
|
connection: "source"
|
|
1279
1279
|
}]
|
|
1280
1280
|
};
|
|
1281
|
-
pipeline =
|
|
1281
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
1282
1282
|
shouldRun: (context) => {
|
|
1283
1283
|
return !!context.incoming[NoiseHandleType.module]?.computed?.module;
|
|
1284
1284
|
},
|
|
@@ -1322,7 +1322,7 @@ var NoiseTranslatePointNodeTemplateFactory = class {
|
|
|
1322
1322
|
connection: "source"
|
|
1323
1323
|
}]
|
|
1324
1324
|
};
|
|
1325
|
-
pipeline =
|
|
1325
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create({
|
|
1326
1326
|
shouldRun: (context) => {
|
|
1327
1327
|
return !!context.incoming[NoiseHandleType.module]?.computed?.module;
|
|
1328
1328
|
},
|
|
@@ -1376,7 +1376,7 @@ var NoiseTurbulenceNodeTemplateFactory = class {
|
|
|
1376
1376
|
}
|
|
1377
1377
|
]
|
|
1378
1378
|
};
|
|
1379
|
-
pipeline =
|
|
1379
|
+
pipeline = _awesome_ecs_core_factories.PipelineFactory.create(new IncomingPropertyValueMiddleware(), {
|
|
1380
1380
|
shouldRun: (context) => {
|
|
1381
1381
|
return !!context.incoming[NoiseHandleType.module]?.computed?.module;
|
|
1382
1382
|
},
|
|
@@ -1765,4 +1765,4 @@ Object.defineProperty(exports, 'positions_logger_node_default', {
|
|
|
1765
1765
|
return positions_logger_node_default;
|
|
1766
1766
|
}
|
|
1767
1767
|
});
|
|
1768
|
-
//# sourceMappingURL=abstract-
|
|
1768
|
+
//# sourceMappingURL=abstract-ed4ZdB8H.cjs.map
|