@babylonjs/core 6.21.4 → 6.22.1
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/Behaviors/Meshes/pointerDragBehavior.d.ts +4 -3
- package/Behaviors/Meshes/pointerDragBehavior.js +4 -3
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.d.ts +167 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js +198 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js.map +1 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.d.ts +63 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js +54 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.d.ts +85 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js +70 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.d.ts +61 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js +45 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/index.d.ts +1 -0
- package/FlowGraph/Blocks/Data/Math/index.js +1 -0
- package/FlowGraph/Blocks/Data/Math/index.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphConstantBlock.d.ts +26 -0
- package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js +17 -0
- package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -0
- package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.d.ts +32 -0
- package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js +37 -0
- package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js.map +1 -0
- package/FlowGraph/Blocks/Data/index.d.ts +3 -1
- package/FlowGraph/Blocks/Data/index.js +4 -2
- package/FlowGraph/Blocks/Data/index.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +2 -2
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.d.ts +17 -0
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js +21 -0
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.d.ts +17 -0
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js +20 -0
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/Audio/index.d.ts +2 -0
- package/FlowGraph/Blocks/Execution/Audio/index.js +3 -0
- package/FlowGraph/Blocks/Execution/Audio/index.js.map +1 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/{flowGraphConditionalBlock.js → flowGraphBranchBlock.js} +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/index.d.ts +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/index.js +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/index.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphCustomFunctionBlock.d.ts +23 -0
- package/FlowGraph/Blocks/Execution/flowGraphCustomFunctionBlock.js +18 -0
- package/FlowGraph/Blocks/Execution/flowGraphCustomFunctionBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/index.d.ts +1 -0
- package/FlowGraph/Blocks/Execution/index.js +2 -0
- package/FlowGraph/Blocks/Execution/index.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +14 -0
- package/FlowGraph/flowGraph.js +23 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +45 -0
- package/FlowGraph/flowGraphCoordinator.js +73 -0
- package/FlowGraph/flowGraphCoordinator.js.map +1 -0
- package/FlowGraph/flowGraphDataConnection.d.ts +11 -0
- package/FlowGraph/flowGraphDataConnection.js +17 -0
- package/FlowGraph/flowGraphDataConnection.js.map +1 -1
- package/FlowGraph/flowGraphRichTypes.d.ts +8 -1
- package/FlowGraph/flowGraphRichTypes.js +44 -1
- package/FlowGraph/flowGraphRichTypes.js.map +1 -1
- package/FlowGraph/index.d.ts +1 -0
- package/FlowGraph/index.js +1 -0
- package/FlowGraph/index.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.js +13 -11
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +3 -1
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +5 -0
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Gizmos/positionGizmo.d.ts +4 -0
- package/Gizmos/positionGizmo.js +6 -0
- package/Gizmos/positionGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.d.ts +4 -0
- package/Gizmos/rotationGizmo.js +6 -0
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Gizmos/scaleGizmo.d.ts +4 -0
- package/Gizmos/scaleGizmo.js +6 -0
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Maths/math.path.d.ts +1 -1
- package/Maths/math.path.js +1 -1
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.vector.js +3 -3
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.d.ts +58 -0
- package/Meshes/Node/Blocks/booleanGeometryBlock.js +135 -0
- package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryCollectionBlock.js +3 -0
- package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.d.ts +4 -0
- package/Meshes/Node/Blocks/mappingBlock.js +23 -14
- package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.js +0 -2
- package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
- package/Meshes/Node/index.d.ts +1 -0
- package/Meshes/Node/index.js +1 -0
- package/Meshes/Node/index.js.map +1 -1
- package/Meshes/csg.d.ts +169 -1
- package/Meshes/csg.js +107 -43
- package/Meshes/csg.js.map +1 -1
- package/Misc/textureTools.d.ts +24 -0
- package/Misc/textureTools.js +86 -0
- package/Misc/textureTools.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +6 -0
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/package.json +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphConditionalBlock.js.map +0 -1
- /package/FlowGraph/Blocks/Execution/ControlFlow/{flowGraphConditionalBlock.d.ts → flowGraphBranchBlock.d.ts} +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { Matrix, Quaternion, Vector3 } from "../../../../Maths/math.vector";
|
|
2
|
+
import { FlowGraphBinaryOperationBlock } from "../flowGraphBinaryOperationBlock";
|
|
3
|
+
import { FlowGraphUnaryOperationBlock } from "../flowGraphUnaryOperationBlock";
|
|
4
|
+
import { FlowGraphBlock } from "../../../flowGraphBlock";
|
|
5
|
+
import type { FlowGraphDataConnection } from "../../../flowGraphDataConnection";
|
|
6
|
+
import type { FlowGraphContext } from "../../../flowGraphContext";
|
|
7
|
+
import type { TransformNode } from "../../../../Meshes/transformNode";
|
|
8
|
+
/**
|
|
9
|
+
* Adds two matrices together.
|
|
10
|
+
* @experimental
|
|
11
|
+
*/
|
|
12
|
+
export declare class FlowGraphAddMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Adds a matrix and a number together.
|
|
17
|
+
* @experimental
|
|
18
|
+
*/
|
|
19
|
+
export declare class FlowGraphAddMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {
|
|
20
|
+
private _cachedArray;
|
|
21
|
+
private _cachedMatrix;
|
|
22
|
+
constructor();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Subtracts two matrices.
|
|
26
|
+
* @experimental
|
|
27
|
+
*/
|
|
28
|
+
export declare class FlowGraphSubtractMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {
|
|
29
|
+
private _cachedMatrix;
|
|
30
|
+
constructor();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Subtracts a matrix and a number together.
|
|
34
|
+
* @experimental
|
|
35
|
+
*/
|
|
36
|
+
export declare class FlowGraphSubtractMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {
|
|
37
|
+
private _cachedArray;
|
|
38
|
+
private _cachedMatrix;
|
|
39
|
+
constructor();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Multiplies two matrices together.
|
|
43
|
+
* @experimental
|
|
44
|
+
*/
|
|
45
|
+
export declare class FlowGraphMultiplyMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {
|
|
46
|
+
private _cachedMatrix;
|
|
47
|
+
constructor();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Divides two matrices.
|
|
51
|
+
* @experimental
|
|
52
|
+
*/
|
|
53
|
+
export declare class FlowGraphDivideMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {
|
|
54
|
+
private _cachedResultMatrix;
|
|
55
|
+
constructor();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Divides a matrix and a number together.
|
|
59
|
+
* @experimental
|
|
60
|
+
*/
|
|
61
|
+
export declare class FlowGraphDivideMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {
|
|
62
|
+
private _cachedArray;
|
|
63
|
+
private _cachedMatrix;
|
|
64
|
+
constructor();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Scales a matrix by a number.
|
|
68
|
+
* @experimental
|
|
69
|
+
*/
|
|
70
|
+
export declare class FlowGraphScaleMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {
|
|
71
|
+
private _cachedMatrix;
|
|
72
|
+
constructor();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Clamps each value in a matrix between a minimum and maximum value.
|
|
76
|
+
* @experimental
|
|
77
|
+
*/
|
|
78
|
+
export declare class FlowGraphClampMatrixBlock extends FlowGraphBlock {
|
|
79
|
+
/**
|
|
80
|
+
* Input connection: The matrix to clamp.
|
|
81
|
+
*/
|
|
82
|
+
readonly input: FlowGraphDataConnection<Matrix>;
|
|
83
|
+
/**
|
|
84
|
+
* Output connection: The clamped matrix.
|
|
85
|
+
*/
|
|
86
|
+
readonly output: FlowGraphDataConnection<Matrix>;
|
|
87
|
+
/**
|
|
88
|
+
* Input connection: The minimum value.
|
|
89
|
+
*/
|
|
90
|
+
readonly min: FlowGraphDataConnection<number>;
|
|
91
|
+
/**
|
|
92
|
+
* Input connection: The maximum value.
|
|
93
|
+
*/
|
|
94
|
+
readonly max: FlowGraphDataConnection<number>;
|
|
95
|
+
private _cachedArray;
|
|
96
|
+
private _cachedMatrix;
|
|
97
|
+
constructor();
|
|
98
|
+
_updateOutputs(_context: FlowGraphContext): void;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Decomposes a matrix into its translation, rotation and scale components.
|
|
102
|
+
* @experimental
|
|
103
|
+
*/
|
|
104
|
+
export declare class FlowGraphDecomposeMatrixBlock extends FlowGraphBlock {
|
|
105
|
+
/**
|
|
106
|
+
* Input connection: The matrix to decompose.
|
|
107
|
+
*/
|
|
108
|
+
readonly input: FlowGraphDataConnection<Matrix>;
|
|
109
|
+
/**
|
|
110
|
+
* Output connection: The translation component of the matrix.
|
|
111
|
+
*/
|
|
112
|
+
readonly translation: FlowGraphDataConnection<Vector3>;
|
|
113
|
+
/**
|
|
114
|
+
* Output connection: The rotation component of the matrix.
|
|
115
|
+
*/
|
|
116
|
+
readonly rotation: FlowGraphDataConnection<Quaternion>;
|
|
117
|
+
/**
|
|
118
|
+
* Output connection: The scale component of the matrix.
|
|
119
|
+
*/
|
|
120
|
+
readonly scale: FlowGraphDataConnection<Vector3>;
|
|
121
|
+
private _cachedTranslation;
|
|
122
|
+
private _cachedRotation;
|
|
123
|
+
private _cachedScale;
|
|
124
|
+
constructor();
|
|
125
|
+
_updateOutputs(_context: FlowGraphContext): void;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Decomposes a matrix into its translation, rotation and scale components.
|
|
129
|
+
* @experimental
|
|
130
|
+
*/
|
|
131
|
+
export declare class FlowGraphComposeMatrixBlock extends FlowGraphBlock {
|
|
132
|
+
/**
|
|
133
|
+
* Output connection: The matrix to compose.
|
|
134
|
+
*/
|
|
135
|
+
readonly output: FlowGraphDataConnection<Matrix>;
|
|
136
|
+
/**
|
|
137
|
+
* Input connection: The translation component of the matrix.
|
|
138
|
+
*/
|
|
139
|
+
readonly translation: FlowGraphDataConnection<Vector3>;
|
|
140
|
+
/**
|
|
141
|
+
* Input connection: The rotation component of the matrix.
|
|
142
|
+
*/
|
|
143
|
+
readonly rotation: FlowGraphDataConnection<Quaternion>;
|
|
144
|
+
/**
|
|
145
|
+
* Input connection: The scale component of the matrix.
|
|
146
|
+
*/
|
|
147
|
+
readonly scale: FlowGraphDataConnection<Vector3>;
|
|
148
|
+
private _cachedMatrix;
|
|
149
|
+
constructor();
|
|
150
|
+
_updateOutputs(_context: FlowGraphContext): void;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Converts a quaternion to a rotation matrix.
|
|
154
|
+
* @experimental
|
|
155
|
+
*/
|
|
156
|
+
export declare class FlowGraphQuaternionToRotationMatrixBlock extends FlowGraphUnaryOperationBlock<Quaternion, Matrix> {
|
|
157
|
+
private _cachedMatrix;
|
|
158
|
+
constructor();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Given the Transform Nodes A and B, gives the matrix required
|
|
162
|
+
* to transform coordinates from A's local space to B's local space.
|
|
163
|
+
*/
|
|
164
|
+
export declare class FlowGraphGetTransformationMatrixBlock extends FlowGraphBinaryOperationBlock<TransformNode, TransformNode, Matrix> {
|
|
165
|
+
private _cachedResult;
|
|
166
|
+
constructor();
|
|
167
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { Matrix, Quaternion, TmpVectors, Vector3 } from "../../../../Maths/math.vector.js";
|
|
2
|
+
import { FlowGraphBinaryOperationBlock } from "../flowGraphBinaryOperationBlock.js";
|
|
3
|
+
import { RichTypeAny, RichTypeMatrix, RichTypeNumber, RichTypeQuaternion, RichTypeVector3 } from "../../../flowGraphRichTypes.js";
|
|
4
|
+
import { FlowGraphUnaryOperationBlock } from "../flowGraphUnaryOperationBlock.js";
|
|
5
|
+
import { FlowGraphBlock } from "../../../flowGraphBlock.js";
|
|
6
|
+
/**
|
|
7
|
+
* Adds two matrices together.
|
|
8
|
+
* @experimental
|
|
9
|
+
*/
|
|
10
|
+
export class FlowGraphAddMatrixBlock extends FlowGraphBinaryOperationBlock {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.add(right));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Adds a matrix and a number together.
|
|
17
|
+
* @experimental
|
|
18
|
+
*/
|
|
19
|
+
export class FlowGraphAddMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => {
|
|
22
|
+
for (let i = 0; i < left.m.length; i++) {
|
|
23
|
+
this._cachedArray[i] = left.m[i] + right;
|
|
24
|
+
}
|
|
25
|
+
return Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);
|
|
26
|
+
});
|
|
27
|
+
this._cachedArray = new Float32Array(16);
|
|
28
|
+
this._cachedMatrix = Matrix.Zero();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Subtracts two matrices.
|
|
33
|
+
* @experimental
|
|
34
|
+
*/
|
|
35
|
+
export class FlowGraphSubtractMatrixBlock extends FlowGraphBinaryOperationBlock {
|
|
36
|
+
constructor() {
|
|
37
|
+
super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.addToRef(right.scaleToRef(-1, TmpVectors.Matrix[0]), this._cachedMatrix));
|
|
38
|
+
this._cachedMatrix = Matrix.Zero();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Subtracts a matrix and a number together.
|
|
43
|
+
* @experimental
|
|
44
|
+
*/
|
|
45
|
+
export class FlowGraphSubtractMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock {
|
|
46
|
+
constructor() {
|
|
47
|
+
super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => {
|
|
48
|
+
for (let i = 0; i < left.m.length; i++) {
|
|
49
|
+
this._cachedArray[i] = left.m[i] - right;
|
|
50
|
+
}
|
|
51
|
+
return Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);
|
|
52
|
+
});
|
|
53
|
+
this._cachedArray = new Float32Array(16);
|
|
54
|
+
this._cachedMatrix = Matrix.Zero();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Multiplies two matrices together.
|
|
59
|
+
* @experimental
|
|
60
|
+
*/
|
|
61
|
+
export class FlowGraphMultiplyMatrixBlock extends FlowGraphBinaryOperationBlock {
|
|
62
|
+
constructor() {
|
|
63
|
+
super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.multiplyToRef(right, this._cachedMatrix));
|
|
64
|
+
this._cachedMatrix = Matrix.Zero();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Divides two matrices.
|
|
69
|
+
* @experimental
|
|
70
|
+
*/
|
|
71
|
+
export class FlowGraphDivideMatrixBlock extends FlowGraphBinaryOperationBlock {
|
|
72
|
+
constructor() {
|
|
73
|
+
super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.multiplyToRef(right.invertToRef(TmpVectors.Matrix[0]), this._cachedResultMatrix));
|
|
74
|
+
this._cachedResultMatrix = Matrix.Zero();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Divides a matrix and a number together.
|
|
79
|
+
* @experimental
|
|
80
|
+
*/
|
|
81
|
+
export class FlowGraphDivideMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock {
|
|
82
|
+
constructor() {
|
|
83
|
+
super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => {
|
|
84
|
+
for (let i = 0; i < left.m.length; i++) {
|
|
85
|
+
this._cachedArray[i] = left.m[i] / right;
|
|
86
|
+
}
|
|
87
|
+
return Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);
|
|
88
|
+
});
|
|
89
|
+
this._cachedArray = new Float32Array(16);
|
|
90
|
+
this._cachedMatrix = Matrix.Zero();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Scales a matrix by a number.
|
|
95
|
+
* @experimental
|
|
96
|
+
*/
|
|
97
|
+
export class FlowGraphScaleMatrixBlock extends FlowGraphBinaryOperationBlock {
|
|
98
|
+
constructor() {
|
|
99
|
+
super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => left.scaleToRef(right, this._cachedMatrix));
|
|
100
|
+
this._cachedMatrix = Matrix.Zero();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Clamps each value in a matrix between a minimum and maximum value.
|
|
105
|
+
* @experimental
|
|
106
|
+
*/
|
|
107
|
+
export class FlowGraphClampMatrixBlock extends FlowGraphBlock {
|
|
108
|
+
constructor() {
|
|
109
|
+
super();
|
|
110
|
+
this._cachedArray = new Float32Array(16);
|
|
111
|
+
this._cachedMatrix = Matrix.Identity();
|
|
112
|
+
this.input = this._registerDataInput("input", RichTypeMatrix);
|
|
113
|
+
this.min = this._registerDataInput("min", RichTypeNumber);
|
|
114
|
+
this.max = this._registerDataInput("max", RichTypeNumber);
|
|
115
|
+
this.output = this._registerDataOutput("output", RichTypeMatrix);
|
|
116
|
+
}
|
|
117
|
+
_updateOutputs(_context) {
|
|
118
|
+
const input = this.input.getValue(_context);
|
|
119
|
+
const min = this.min.getValue(_context);
|
|
120
|
+
const max = this.max.getValue(_context);
|
|
121
|
+
for (let i = 0; i < input.m.length; i++) {
|
|
122
|
+
this._cachedArray[i] = Math.min(Math.max(input.m[i], min), max);
|
|
123
|
+
}
|
|
124
|
+
Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);
|
|
125
|
+
this.output.setValue(this._cachedMatrix, _context);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Decomposes a matrix into its translation, rotation and scale components.
|
|
130
|
+
* @experimental
|
|
131
|
+
*/
|
|
132
|
+
export class FlowGraphDecomposeMatrixBlock extends FlowGraphBlock {
|
|
133
|
+
constructor() {
|
|
134
|
+
super();
|
|
135
|
+
this._cachedTranslation = new Vector3();
|
|
136
|
+
this._cachedRotation = new Quaternion();
|
|
137
|
+
this._cachedScale = new Vector3();
|
|
138
|
+
this.input = this._registerDataInput("input", RichTypeMatrix);
|
|
139
|
+
this.translation = this._registerDataOutput("translation", RichTypeVector3);
|
|
140
|
+
this.rotation = this._registerDataOutput("rotation", RichTypeQuaternion);
|
|
141
|
+
this.scale = this._registerDataOutput("scale", RichTypeVector3);
|
|
142
|
+
}
|
|
143
|
+
_updateOutputs(_context) {
|
|
144
|
+
const input = this.input.getValue(_context);
|
|
145
|
+
input.decompose(this._cachedScale, this._cachedRotation, this._cachedTranslation);
|
|
146
|
+
this.translation.setValue(this._cachedTranslation, _context);
|
|
147
|
+
this.rotation.setValue(this._cachedRotation, _context);
|
|
148
|
+
this.scale.setValue(this._cachedScale, _context);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Decomposes a matrix into its translation, rotation and scale components.
|
|
153
|
+
* @experimental
|
|
154
|
+
*/
|
|
155
|
+
export class FlowGraphComposeMatrixBlock extends FlowGraphBlock {
|
|
156
|
+
constructor() {
|
|
157
|
+
super();
|
|
158
|
+
this._cachedMatrix = new Matrix();
|
|
159
|
+
this.output = this._registerDataOutput("input", RichTypeMatrix);
|
|
160
|
+
this.translation = this._registerDataInput("translation", RichTypeVector3);
|
|
161
|
+
this.rotation = this._registerDataInput("rotation", RichTypeQuaternion);
|
|
162
|
+
this.scale = this._registerDataInput("scale", RichTypeVector3);
|
|
163
|
+
}
|
|
164
|
+
_updateOutputs(_context) {
|
|
165
|
+
const translation = this.translation.getValue(_context);
|
|
166
|
+
const rotation = this.rotation.getValue(_context);
|
|
167
|
+
const scale = this.scale.getValue(_context);
|
|
168
|
+
Matrix.ComposeToRef(scale, rotation, translation, this._cachedMatrix);
|
|
169
|
+
this.output.setValue(this._cachedMatrix, _context);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Converts a quaternion to a rotation matrix.
|
|
174
|
+
* @experimental
|
|
175
|
+
*/
|
|
176
|
+
export class FlowGraphQuaternionToRotationMatrixBlock extends FlowGraphUnaryOperationBlock {
|
|
177
|
+
constructor() {
|
|
178
|
+
super(RichTypeQuaternion, RichTypeMatrix, (value) => Matrix.FromQuaternionToRef(value, this._cachedMatrix));
|
|
179
|
+
this._cachedMatrix = new Matrix();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Given the Transform Nodes A and B, gives the matrix required
|
|
184
|
+
* to transform coordinates from A's local space to B's local space.
|
|
185
|
+
*/
|
|
186
|
+
export class FlowGraphGetTransformationMatrixBlock extends FlowGraphBinaryOperationBlock {
|
|
187
|
+
constructor() {
|
|
188
|
+
super(RichTypeAny, RichTypeAny, RichTypeMatrix, (left, right) => {
|
|
189
|
+
const aMatrix = left.getWorldMatrix();
|
|
190
|
+
const bMatrix = right.getWorldMatrix();
|
|
191
|
+
const inverseB = bMatrix.invertToRef(TmpVectors.Matrix[0]);
|
|
192
|
+
const result = inverseB.multiplyToRef(aMatrix, this._cachedResult);
|
|
193
|
+
return result;
|
|
194
|
+
});
|
|
195
|
+
this._cachedResult = Matrix.Zero();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=flowGraphMatrixBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flowGraphMatrixBlocks.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, Quaternion, TmpVectors, Vector3 } from \"../../../../Maths/math.vector\";\r\nimport { FlowGraphBinaryOperationBlock } from \"../flowGraphBinaryOperationBlock\";\r\nimport { RichTypeAny, RichTypeMatrix, RichTypeNumber, RichTypeQuaternion, RichTypeVector3 } from \"../../../flowGraphRichTypes\";\r\nimport { FlowGraphUnaryOperationBlock } from \"../flowGraphUnaryOperationBlock\";\r\nimport { FlowGraphBlock } from \"../../../flowGraphBlock\";\r\nimport type { FlowGraphDataConnection } from \"../../../flowGraphDataConnection\";\r\nimport type { FlowGraphContext } from \"../../../flowGraphContext\";\r\nimport type { TransformNode } from \"../../../../Meshes/transformNode\";\r\n\r\n/**\r\n * Adds two matrices together.\r\n * @experimental\r\n */\r\nexport class FlowGraphAddMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.add(right));\r\n }\r\n}\r\n\r\n/**\r\n * Adds a matrix and a number together.\r\n * @experimental\r\n */\r\nexport class FlowGraphAddMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {\r\n private _cachedArray: Float32Array = new Float32Array(16);\r\n private _cachedMatrix: Matrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => {\r\n for (let i = 0; i < left.m.length; i++) {\r\n this._cachedArray[i] = left.m[i] + right;\r\n }\r\n return Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Subtracts two matrices.\r\n * @experimental\r\n */\r\nexport class FlowGraphSubtractMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {\r\n private _cachedMatrix: Matrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.addToRef(right.scaleToRef(-1, TmpVectors.Matrix[0]), this._cachedMatrix));\r\n }\r\n}\r\n\r\n/**\r\n * Subtracts a matrix and a number together.\r\n * @experimental\r\n */\r\nexport class FlowGraphSubtractMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {\r\n private _cachedArray: Float32Array = new Float32Array(16);\r\n private _cachedMatrix: Matrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => {\r\n for (let i = 0; i < left.m.length; i++) {\r\n this._cachedArray[i] = left.m[i] - right;\r\n }\r\n return Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Multiplies two matrices together.\r\n * @experimental\r\n */\r\nexport class FlowGraphMultiplyMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {\r\n private _cachedMatrix: Matrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.multiplyToRef(right, this._cachedMatrix));\r\n }\r\n}\r\n\r\n/**\r\n * Divides two matrices.\r\n * @experimental\r\n */\r\nexport class FlowGraphDivideMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, Matrix, Matrix> {\r\n private _cachedResultMatrix: Matrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (left, right) => left.multiplyToRef(right.invertToRef(TmpVectors.Matrix[0]), this._cachedResultMatrix));\r\n }\r\n}\r\n\r\n/**\r\n * Divides a matrix and a number together.\r\n * @experimental\r\n */\r\nexport class FlowGraphDivideMatrixAndNumberBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {\r\n private _cachedArray: Float32Array = new Float32Array(16);\r\n private _cachedMatrix: Matrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => {\r\n for (let i = 0; i < left.m.length; i++) {\r\n this._cachedArray[i] = left.m[i] / right;\r\n }\r\n return Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Scales a matrix by a number.\r\n * @experimental\r\n */\r\nexport class FlowGraphScaleMatrixBlock extends FlowGraphBinaryOperationBlock<Matrix, number, Matrix> {\r\n private _cachedMatrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeMatrix, RichTypeNumber, RichTypeMatrix, (left, right) => left.scaleToRef(right, this._cachedMatrix));\r\n }\r\n}\r\n\r\n/**\r\n * Clamps each value in a matrix between a minimum and maximum value.\r\n * @experimental\r\n */\r\nexport class FlowGraphClampMatrixBlock extends FlowGraphBlock {\r\n /**\r\n * Input connection: The matrix to clamp.\r\n */\r\n public readonly input: FlowGraphDataConnection<Matrix>;\r\n /**\r\n * Output connection: The clamped matrix.\r\n */\r\n public readonly output: FlowGraphDataConnection<Matrix>;\r\n /**\r\n * Input connection: The minimum value.\r\n */\r\n public readonly min: FlowGraphDataConnection<number>;\r\n /**\r\n * Input connection: The maximum value.\r\n */\r\n public readonly max: FlowGraphDataConnection<number>;\r\n private _cachedArray: Float32Array = new Float32Array(16);\r\n private _cachedMatrix: Matrix = Matrix.Identity();\r\n constructor() {\r\n super();\r\n\r\n this.input = this._registerDataInput(\"input\", RichTypeMatrix);\r\n this.min = this._registerDataInput(\"min\", RichTypeNumber);\r\n this.max = this._registerDataInput(\"max\", RichTypeNumber);\r\n this.output = this._registerDataOutput(\"output\", RichTypeMatrix);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n const input = this.input.getValue(_context);\r\n const min = this.min.getValue(_context);\r\n const max = this.max.getValue(_context);\r\n\r\n for (let i = 0; i < input.m.length; i++) {\r\n this._cachedArray[i] = Math.min(Math.max(input.m[i], min), max);\r\n }\r\n\r\n Matrix.FromArrayToRef(this._cachedArray, 0, this._cachedMatrix);\r\n this.output.setValue(this._cachedMatrix, _context);\r\n }\r\n}\r\n\r\n/**\r\n * Decomposes a matrix into its translation, rotation and scale components.\r\n * @experimental\r\n */\r\nexport class FlowGraphDecomposeMatrixBlock extends FlowGraphBlock {\r\n /**\r\n * Input connection: The matrix to decompose.\r\n */\r\n public readonly input: FlowGraphDataConnection<Matrix>;\r\n /**\r\n * Output connection: The translation component of the matrix.\r\n */\r\n public readonly translation: FlowGraphDataConnection<Vector3>;\r\n /**\r\n * Output connection: The rotation component of the matrix.\r\n */\r\n public readonly rotation: FlowGraphDataConnection<Quaternion>;\r\n /**\r\n * Output connection: The scale component of the matrix.\r\n */\r\n public readonly scale: FlowGraphDataConnection<Vector3>;\r\n\r\n private _cachedTranslation = new Vector3();\r\n private _cachedRotation = new Quaternion();\r\n private _cachedScale = new Vector3();\r\n\r\n public constructor() {\r\n super();\r\n\r\n this.input = this._registerDataInput(\"input\", RichTypeMatrix);\r\n this.translation = this._registerDataOutput(\"translation\", RichTypeVector3);\r\n this.rotation = this._registerDataOutput(\"rotation\", RichTypeQuaternion);\r\n this.scale = this._registerDataOutput(\"scale\", RichTypeVector3);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n const input = this.input.getValue(_context);\r\n\r\n input.decompose(this._cachedScale, this._cachedRotation, this._cachedTranslation);\r\n\r\n this.translation.setValue(this._cachedTranslation, _context);\r\n this.rotation.setValue(this._cachedRotation, _context);\r\n this.scale.setValue(this._cachedScale, _context);\r\n }\r\n}\r\n\r\n/**\r\n * Decomposes a matrix into its translation, rotation and scale components.\r\n * @experimental\r\n */\r\nexport class FlowGraphComposeMatrixBlock extends FlowGraphBlock {\r\n /**\r\n * Output connection: The matrix to compose.\r\n */\r\n public readonly output: FlowGraphDataConnection<Matrix>;\r\n /**\r\n * Input connection: The translation component of the matrix.\r\n */\r\n public readonly translation: FlowGraphDataConnection<Vector3>;\r\n /**\r\n * Input connection: The rotation component of the matrix.\r\n */\r\n public readonly rotation: FlowGraphDataConnection<Quaternion>;\r\n /**\r\n * Input connection: The scale component of the matrix.\r\n */\r\n public readonly scale: FlowGraphDataConnection<Vector3>;\r\n\r\n private _cachedMatrix = new Matrix();\r\n\r\n public constructor() {\r\n super();\r\n\r\n this.output = this._registerDataOutput(\"input\", RichTypeMatrix);\r\n this.translation = this._registerDataInput(\"translation\", RichTypeVector3);\r\n this.rotation = this._registerDataInput(\"rotation\", RichTypeQuaternion);\r\n this.scale = this._registerDataInput(\"scale\", RichTypeVector3);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n const translation = this.translation.getValue(_context);\r\n const rotation = this.rotation.getValue(_context);\r\n const scale = this.scale.getValue(_context);\r\n\r\n Matrix.ComposeToRef(scale, rotation, translation, this._cachedMatrix);\r\n\r\n this.output.setValue(this._cachedMatrix, _context);\r\n }\r\n}\r\n\r\n/**\r\n * Converts a quaternion to a rotation matrix.\r\n * @experimental\r\n */\r\nexport class FlowGraphQuaternionToRotationMatrixBlock extends FlowGraphUnaryOperationBlock<Quaternion, Matrix> {\r\n private _cachedMatrix = new Matrix();\r\n constructor() {\r\n super(RichTypeQuaternion, RichTypeMatrix, (value) => Matrix.FromQuaternionToRef(value, this._cachedMatrix));\r\n }\r\n}\r\n\r\n/**\r\n * Given the Transform Nodes A and B, gives the matrix required\r\n * to transform coordinates from A's local space to B's local space.\r\n */\r\nexport class FlowGraphGetTransformationMatrixBlock extends FlowGraphBinaryOperationBlock<TransformNode, TransformNode, Matrix> {\r\n private _cachedResult: Matrix = Matrix.Zero();\r\n constructor() {\r\n super(RichTypeAny, RichTypeAny, RichTypeMatrix, (left: TransformNode, right: TransformNode) => {\r\n const aMatrix = left.getWorldMatrix();\r\n const bMatrix = right.getWorldMatrix();\r\n\r\n const inverseB = bMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n const result = inverseB.multiplyToRef(aMatrix, this._cachedResult);\r\n return result;\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Vector2 } from "../../../../Maths/math.vector";
|
|
2
2
|
import { FlowGraphBinaryOperationBlock } from "../flowGraphBinaryOperationBlock";
|
|
3
3
|
import { FlowGraphUnaryOperationBlock } from "../flowGraphUnaryOperationBlock";
|
|
4
|
+
import type { FlowGraphDataConnection } from "../../../flowGraphDataConnection";
|
|
5
|
+
import { FlowGraphBlock } from "../../../flowGraphBlock";
|
|
6
|
+
import type { FlowGraphContext } from "../../../flowGraphContext";
|
|
4
7
|
/**
|
|
5
8
|
* Adds two vectors together.
|
|
6
9
|
* @experimental
|
|
@@ -50,3 +53,62 @@ export declare class FlowGraphLengthVector2Block extends FlowGraphUnaryOperation
|
|
|
50
53
|
export declare class FlowGraphNormalizeVector2Block extends FlowGraphUnaryOperationBlock<Vector2, Vector2> {
|
|
51
54
|
constructor();
|
|
52
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Creates a vector from two components.
|
|
58
|
+
*/
|
|
59
|
+
export declare class FlowGraphCreateVector2Block extends FlowGraphBlock {
|
|
60
|
+
/**
|
|
61
|
+
* Input connection: The x component of the vector.
|
|
62
|
+
*/
|
|
63
|
+
readonly x: FlowGraphDataConnection<number>;
|
|
64
|
+
/**
|
|
65
|
+
* Input connection: The y component of the vector.
|
|
66
|
+
*/
|
|
67
|
+
readonly y: FlowGraphDataConnection<number>;
|
|
68
|
+
/**
|
|
69
|
+
* Output connection: The created vector.
|
|
70
|
+
*/
|
|
71
|
+
readonly vector: FlowGraphDataConnection<Vector2>;
|
|
72
|
+
private _cachedVector;
|
|
73
|
+
constructor();
|
|
74
|
+
_updateOutputs(_context: FlowGraphContext): void;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Split a vector into its components.
|
|
78
|
+
*/
|
|
79
|
+
export declare class FlowGraphSplitVector2Block extends FlowGraphBlock {
|
|
80
|
+
/**
|
|
81
|
+
* Input connection: The vector to split.
|
|
82
|
+
*/
|
|
83
|
+
readonly vector: FlowGraphDataConnection<Vector2>;
|
|
84
|
+
/**
|
|
85
|
+
* Output connection: The x component of the vector.
|
|
86
|
+
*/
|
|
87
|
+
readonly x: FlowGraphDataConnection<number>;
|
|
88
|
+
/**
|
|
89
|
+
* Output connection: The y component of the vector.
|
|
90
|
+
*/
|
|
91
|
+
readonly y: FlowGraphDataConnection<number>;
|
|
92
|
+
constructor();
|
|
93
|
+
_updateOutputs(_context: FlowGraphContext): void;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Rotates a vector by a given angle.
|
|
97
|
+
*/
|
|
98
|
+
export declare class FlowGraphRotate2dVector2Block extends FlowGraphBlock {
|
|
99
|
+
/**
|
|
100
|
+
* Input connection: The vector to rotate.
|
|
101
|
+
*/
|
|
102
|
+
readonly input: FlowGraphDataConnection<Vector2>;
|
|
103
|
+
/**
|
|
104
|
+
* Input connection: The angle to rotate by.
|
|
105
|
+
*/
|
|
106
|
+
readonly angle: FlowGraphDataConnection<number>;
|
|
107
|
+
/**
|
|
108
|
+
* Output connection: The rotated vector.
|
|
109
|
+
*/
|
|
110
|
+
readonly output: FlowGraphDataConnection<Vector2>;
|
|
111
|
+
private _cachedVector;
|
|
112
|
+
constructor();
|
|
113
|
+
_updateOutputs(_context: FlowGraphContext): void;
|
|
114
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { RichTypeNumber, RichTypeVector2 } from "../../../flowGraphRichTypes.js";
|
|
2
|
+
import { Vector2 } from "../../../../Maths/math.vector.js";
|
|
2
3
|
import { FlowGraphBinaryOperationBlock } from "../flowGraphBinaryOperationBlock.js";
|
|
3
4
|
import { FlowGraphUnaryOperationBlock } from "../flowGraphUnaryOperationBlock.js";
|
|
5
|
+
import { FlowGraphBlock } from "../../../flowGraphBlock.js";
|
|
4
6
|
/**
|
|
5
7
|
* Adds two vectors together.
|
|
6
8
|
* @experimental
|
|
@@ -68,4 +70,56 @@ export class FlowGraphNormalizeVector2Block extends FlowGraphUnaryOperationBlock
|
|
|
68
70
|
});
|
|
69
71
|
}
|
|
70
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Creates a vector from two components.
|
|
75
|
+
*/
|
|
76
|
+
export class FlowGraphCreateVector2Block extends FlowGraphBlock {
|
|
77
|
+
constructor() {
|
|
78
|
+
super();
|
|
79
|
+
this._cachedVector = Vector2.Zero();
|
|
80
|
+
this.x = this._registerDataInput("x", RichTypeNumber);
|
|
81
|
+
this.y = this._registerDataInput("y", RichTypeNumber);
|
|
82
|
+
this.vector = this._registerDataOutput("vector", RichTypeVector2);
|
|
83
|
+
}
|
|
84
|
+
_updateOutputs(_context) {
|
|
85
|
+
this._cachedVector.x = this.x.getValue(_context);
|
|
86
|
+
this._cachedVector.y = this.y.getValue(_context);
|
|
87
|
+
this.vector.setValue(this._cachedVector, _context);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Split a vector into its components.
|
|
92
|
+
*/
|
|
93
|
+
export class FlowGraphSplitVector2Block extends FlowGraphBlock {
|
|
94
|
+
constructor() {
|
|
95
|
+
super();
|
|
96
|
+
this.vector = this._registerDataInput("vector", RichTypeVector2);
|
|
97
|
+
this.x = this._registerDataOutput("x", RichTypeNumber);
|
|
98
|
+
this.y = this._registerDataOutput("y", RichTypeNumber);
|
|
99
|
+
}
|
|
100
|
+
_updateOutputs(_context) {
|
|
101
|
+
const vector = this.vector.getValue(_context);
|
|
102
|
+
this.x.setValue(vector.x, _context);
|
|
103
|
+
this.y.setValue(vector.y, _context);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Rotates a vector by a given angle.
|
|
108
|
+
*/
|
|
109
|
+
export class FlowGraphRotate2dVector2Block extends FlowGraphBlock {
|
|
110
|
+
constructor() {
|
|
111
|
+
super();
|
|
112
|
+
this._cachedVector = Vector2.Zero();
|
|
113
|
+
this.input = this._registerDataInput("input", RichTypeVector2);
|
|
114
|
+
this.angle = this._registerDataInput("angle", RichTypeNumber);
|
|
115
|
+
this.output = this._registerDataOutput("output", RichTypeVector2);
|
|
116
|
+
}
|
|
117
|
+
_updateOutputs(_context) {
|
|
118
|
+
const input = this.input.getValue(_context);
|
|
119
|
+
const angle = this.angle.getValue(_context);
|
|
120
|
+
this._cachedVector.x = input.x * Math.cos(angle) - input.y * Math.sin(angle);
|
|
121
|
+
this._cachedVector.y = input.x * Math.sin(angle) + input.y * Math.cos(angle);
|
|
122
|
+
this.output.setValue(this._cachedVector, _context);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
71
125
|
//# sourceMappingURL=flowGraphVector2MathBlocks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphVector2MathBlocks.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,uCAA0C;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;;GAGG;AACH,MAAM,OAAO,wBAAyB,SAAQ,6BAAwD;IAClG;QACI,KAAK,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,6BAA8B,SAAQ,6BAAwD;IACvG;QACI,KAAK,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpG,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,6BAA8B,SAAQ,6BAAwD;IACvG;QACI,KAAK,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpG,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,6BAAwD;IACrG;QACI,KAAK,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClG,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,6BAAuD;IACnG;QACI,KAAK,CAAC,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAChG,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,4BAA6C;IAC1F;QACI,KAAK,CAAC,eAAe,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,8BAA+B,SAAQ,4BAA8C;IAC9F;QACI,KAAK,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC,KAAc,EAAE,EAAE;YACvD,MAAM,IAAI,GAAY,KAAK,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ","sourcesContent":["import { RichTypeNumber, RichTypeVector2 } from \"core/FlowGraph/flowGraphRichTypes\";\r\nimport type { Vector2 } from \"../../../../Maths/math.vector\";\r\nimport { FlowGraphBinaryOperationBlock } from \"../flowGraphBinaryOperationBlock\";\r\nimport { FlowGraphUnaryOperationBlock } from \"../flowGraphUnaryOperationBlock\";\r\n\r\n/**\r\n * Adds two vectors together.\r\n * @experimental\r\n */\r\nexport class FlowGraphAddVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.add(right));\r\n }\r\n}\r\n\r\n/**\r\n * Subtracts two vectors.\r\n * @experimental\r\n */\r\nexport class FlowGraphSubtractVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.subtract(right));\r\n }\r\n}\r\n\r\n/**\r\n * Multiplies two vectors together.\r\n * @experimental\r\n */\r\nexport class FlowGraphMultiplyVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.multiply(right));\r\n }\r\n}\r\n\r\n/**\r\n * Divides two vectors.\r\n * @experimental\r\n */\r\nexport class FlowGraphDivideVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.divide(right));\r\n }\r\n}\r\n\r\n/**\r\n * Scales a vector by a number.\r\n * @experimental\r\n */\r\nexport class FlowGraphScaleVector2Block extends FlowGraphBinaryOperationBlock<Vector2, number, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeNumber, RichTypeVector2, (left, right) => left.scale(right));\r\n }\r\n}\r\n\r\n/**\r\n * Gets the length of a vector.\r\n * @experimental\r\n */\r\nexport class FlowGraphLengthVector2Block extends FlowGraphUnaryOperationBlock<Vector2, number> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeNumber, (value) => value.length());\r\n }\r\n}\r\n\r\n/**\r\n * Normalizes a vector.\r\n * @experimental\r\n */\r\nexport class FlowGraphNormalizeVector2Block extends FlowGraphUnaryOperationBlock<Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, (value: Vector2) => {\r\n const copy: Vector2 = value.clone();\r\n copy.normalize();\r\n return copy;\r\n });\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"flowGraphVector2MathBlocks.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.ts"],"names":[],"mappings":"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","sourcesContent":["import { RichTypeNumber, RichTypeVector2 } from \"core/FlowGraph/flowGraphRichTypes\";\r\nimport { Vector2 } from \"../../../../Maths/math.vector\";\r\nimport { FlowGraphBinaryOperationBlock } from \"../flowGraphBinaryOperationBlock\";\r\nimport { FlowGraphUnaryOperationBlock } from \"../flowGraphUnaryOperationBlock\";\r\nimport type { FlowGraphDataConnection } from \"../../../flowGraphDataConnection\";\r\nimport { FlowGraphBlock } from \"../../../flowGraphBlock\";\r\nimport type { FlowGraphContext } from \"../../../flowGraphContext\";\r\n\r\n/**\r\n * Adds two vectors together.\r\n * @experimental\r\n */\r\nexport class FlowGraphAddVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.add(right));\r\n }\r\n}\r\n\r\n/**\r\n * Subtracts two vectors.\r\n * @experimental\r\n */\r\nexport class FlowGraphSubtractVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.subtract(right));\r\n }\r\n}\r\n\r\n/**\r\n * Multiplies two vectors together.\r\n * @experimental\r\n */\r\nexport class FlowGraphMultiplyVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.multiply(right));\r\n }\r\n}\r\n\r\n/**\r\n * Divides two vectors.\r\n * @experimental\r\n */\r\nexport class FlowGraphDivideVector2Block extends FlowGraphBinaryOperationBlock<Vector2, Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, RichTypeVector2, (left, right) => left.divide(right));\r\n }\r\n}\r\n\r\n/**\r\n * Scales a vector by a number.\r\n * @experimental\r\n */\r\nexport class FlowGraphScaleVector2Block extends FlowGraphBinaryOperationBlock<Vector2, number, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeNumber, RichTypeVector2, (left, right) => left.scale(right));\r\n }\r\n}\r\n\r\n/**\r\n * Gets the length of a vector.\r\n * @experimental\r\n */\r\nexport class FlowGraphLengthVector2Block extends FlowGraphUnaryOperationBlock<Vector2, number> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeNumber, (value) => value.length());\r\n }\r\n}\r\n\r\n/**\r\n * Normalizes a vector.\r\n * @experimental\r\n */\r\nexport class FlowGraphNormalizeVector2Block extends FlowGraphUnaryOperationBlock<Vector2, Vector2> {\r\n constructor() {\r\n super(RichTypeVector2, RichTypeVector2, (value: Vector2) => {\r\n const copy: Vector2 = value.clone();\r\n copy.normalize();\r\n return copy;\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Creates a vector from two components.\r\n */\r\nexport class FlowGraphCreateVector2Block extends FlowGraphBlock {\r\n /**\r\n * Input connection: The x component of the vector.\r\n */\r\n public readonly x: FlowGraphDataConnection<number>;\r\n /**\r\n * Input connection: The y component of the vector.\r\n */\r\n public readonly y: FlowGraphDataConnection<number>;\r\n /**\r\n * Output connection: The created vector.\r\n */\r\n public readonly vector: FlowGraphDataConnection<Vector2>;\r\n\r\n private _cachedVector: Vector2 = Vector2.Zero();\r\n\r\n constructor() {\r\n super();\r\n\r\n this.x = this._registerDataInput(\"x\", RichTypeNumber);\r\n this.y = this._registerDataInput(\"y\", RichTypeNumber);\r\n this.vector = this._registerDataOutput(\"vector\", RichTypeVector2);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n this._cachedVector.x = this.x.getValue(_context);\r\n this._cachedVector.y = this.y.getValue(_context);\r\n this.vector.setValue(this._cachedVector, _context);\r\n }\r\n}\r\n\r\n/**\r\n * Split a vector into its components.\r\n */\r\nexport class FlowGraphSplitVector2Block extends FlowGraphBlock {\r\n /**\r\n * Input connection: The vector to split.\r\n */\r\n public readonly vector: FlowGraphDataConnection<Vector2>;\r\n /**\r\n * Output connection: The x component of the vector.\r\n */\r\n public readonly x: FlowGraphDataConnection<number>;\r\n /**\r\n * Output connection: The y component of the vector.\r\n */\r\n public readonly y: FlowGraphDataConnection<number>;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.vector = this._registerDataInput(\"vector\", RichTypeVector2);\r\n this.x = this._registerDataOutput(\"x\", RichTypeNumber);\r\n this.y = this._registerDataOutput(\"y\", RichTypeNumber);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n const vector = this.vector.getValue(_context);\r\n this.x.setValue(vector.x, _context);\r\n this.y.setValue(vector.y, _context);\r\n }\r\n}\r\n\r\n/**\r\n * Rotates a vector by a given angle.\r\n */\r\nexport class FlowGraphRotate2dVector2Block extends FlowGraphBlock {\r\n /**\r\n * Input connection: The vector to rotate.\r\n */\r\n public readonly input: FlowGraphDataConnection<Vector2>;\r\n /**\r\n * Input connection: The angle to rotate by.\r\n */\r\n public readonly angle: FlowGraphDataConnection<number>;\r\n /**\r\n * Output connection: The rotated vector.\r\n */\r\n public readonly output: FlowGraphDataConnection<Vector2>;\r\n\r\n private _cachedVector: Vector2 = Vector2.Zero();\r\n\r\n constructor() {\r\n super();\r\n this.input = this._registerDataInput(\"input\", RichTypeVector2);\r\n this.angle = this._registerDataInput(\"angle\", RichTypeNumber);\r\n this.output = this._registerDataOutput(\"output\", RichTypeVector2);\r\n }\r\n\r\n public _updateOutputs(_context: FlowGraphContext): void {\r\n const input = this.input.getValue(_context);\r\n const angle = this.angle.getValue(_context);\r\n this._cachedVector.x = input.x * Math.cos(angle) - input.y * Math.sin(angle);\r\n this._cachedVector.y = input.x * Math.sin(angle) + input.y * Math.cos(angle);\r\n this.output.setValue(this._cachedVector, _context);\r\n }\r\n}\r\n"]}
|