super-three 0.157.1 → 0.158.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.
Files changed (178) hide show
  1. package/README.md +6 -4
  2. package/build/three.cjs +1013 -790
  3. package/build/three.js +1013 -790
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +1008 -791
  6. package/build/three.module.min.js +1 -1
  7. package/examples/jsm/Addons.js +290 -0
  8. package/examples/jsm/controls/FlyControls.js +26 -0
  9. package/examples/jsm/controls/OrbitControls.js +12 -1
  10. package/examples/jsm/controls/TransformControls.js +27 -11
  11. package/examples/jsm/csm/CSMShader.js +1 -1
  12. package/examples/jsm/exporters/GLTFExporter.js +72 -2
  13. package/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
  14. package/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
  15. package/examples/jsm/libs/lottie_canvas.module.js +6 -1
  16. package/examples/jsm/libs/opentype.module.js +13 -75
  17. package/examples/jsm/libs/surfaceNet.js +201 -0
  18. package/examples/jsm/loaders/GLTFLoader.js +12 -3
  19. package/examples/jsm/loaders/LUTImageLoader.js +162 -0
  20. package/examples/jsm/loaders/lwo/IFFParser.js +89 -93
  21. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  22. package/examples/jsm/math/Capsule.js +0 -55
  23. package/examples/jsm/math/Octree.js +70 -3
  24. package/examples/jsm/modifiers/SimplifyModifier.js +103 -11
  25. package/examples/jsm/modifiers/TessellateModifier.js +3 -3
  26. package/examples/jsm/nodes/Nodes.js +6 -6
  27. package/examples/jsm/nodes/accessors/CubeTextureNode.js +3 -3
  28. package/examples/jsm/nodes/accessors/InstanceNode.js +3 -3
  29. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  30. package/examples/jsm/nodes/accessors/MaterialNode.js +68 -31
  31. package/examples/jsm/nodes/accessors/ModelNode.js +1 -2
  32. package/examples/jsm/nodes/accessors/MorphNode.js +5 -5
  33. package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
  34. package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
  35. package/examples/jsm/nodes/accessors/SkinningNode.js +13 -3
  36. package/examples/jsm/nodes/accessors/TextureNode.js +3 -3
  37. package/examples/jsm/nodes/code/FunctionNode.js +1 -1
  38. package/examples/jsm/nodes/core/AssignNode.js +72 -0
  39. package/examples/jsm/nodes/core/LightingModel.js +3 -1
  40. package/examples/jsm/nodes/core/Node.js +7 -12
  41. package/examples/jsm/nodes/core/NodeBuilder.js +126 -16
  42. package/examples/jsm/nodes/core/NodeUtils.js +4 -2
  43. package/examples/jsm/nodes/core/OutputStructNode.js +1 -1
  44. package/examples/jsm/nodes/core/ParameterNode.js +33 -0
  45. package/examples/jsm/nodes/core/PropertyNode.js +4 -10
  46. package/examples/jsm/nodes/core/StackNode.js +7 -17
  47. package/examples/jsm/nodes/core/TempNode.js +1 -1
  48. package/examples/jsm/nodes/core/VarNode.js +6 -35
  49. package/examples/jsm/nodes/core/VaryingNode.js +2 -0
  50. package/examples/jsm/nodes/display/BumpMapNode.js +35 -13
  51. package/examples/jsm/nodes/display/NormalMapNode.js +3 -1
  52. package/examples/jsm/nodes/display/ViewportNode.js +14 -4
  53. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +20 -6
  54. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -7
  55. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +8 -3
  56. package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +8 -0
  57. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +8 -0
  58. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +93 -43
  59. package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -2
  60. package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
  61. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +19 -5
  62. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +1 -1
  63. package/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -6
  64. package/examples/jsm/nodes/lighting/LightingContextNode.js +21 -57
  65. package/examples/jsm/nodes/lighting/LightsNode.js +62 -4
  66. package/examples/jsm/nodes/lighting/PointLightNode.js +1 -1
  67. package/examples/jsm/nodes/lighting/SpotLightNode.js +1 -1
  68. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
  69. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +70 -71
  70. package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +5 -5
  71. package/examples/jsm/nodes/materials/Materials.js +1 -0
  72. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
  73. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
  74. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +47 -20
  75. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +6 -6
  76. package/examples/jsm/nodes/materials/NodeMaterial.js +17 -20
  77. package/examples/jsm/nodes/materialx/lib/mx_noise.js +5 -5
  78. package/examples/jsm/nodes/math/OperatorNode.js +5 -21
  79. package/examples/jsm/nodes/shadernode/ShaderNode.js +128 -9
  80. package/examples/jsm/nodes/utils/ArrayElementNode.js +2 -0
  81. package/examples/jsm/nodes/utils/DiscardNode.js +3 -2
  82. package/examples/jsm/nodes/utils/JoinNode.js +11 -1
  83. package/examples/jsm/nodes/utils/LoopNode.js +36 -24
  84. package/examples/jsm/nodes/utils/SplitNode.js +2 -0
  85. package/examples/jsm/objects/BatchedMesh.js +586 -0
  86. package/examples/jsm/objects/InstancedPoints.js +21 -0
  87. package/examples/jsm/objects/Lensflare.js +20 -0
  88. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -0
  89. package/examples/jsm/objects/Refractor.js +3 -0
  90. package/examples/jsm/objects/Sky.js +5 -3
  91. package/examples/jsm/objects/Water.js +5 -2
  92. package/examples/jsm/objects/Water2.js +3 -0
  93. package/examples/jsm/physics/AmmoPhysics.js +21 -0
  94. package/examples/jsm/physics/RapierPhysics.js +21 -0
  95. package/examples/jsm/postprocessing/BokehPass.js +3 -2
  96. package/examples/jsm/postprocessing/LUTPass.js +2 -1
  97. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  98. package/examples/jsm/postprocessing/Pass.js +14 -3
  99. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  100. package/examples/jsm/postprocessing/SMAAPass.js +0 -2
  101. package/examples/jsm/postprocessing/TAARenderPass.js +1 -2
  102. package/examples/jsm/renderers/CSS3DRenderer.js +3 -9
  103. package/examples/jsm/renderers/SVGRenderer.js +9 -6
  104. package/examples/jsm/renderers/common/Bindings.js +1 -1
  105. package/examples/jsm/renderers/common/RenderObject.js +8 -1
  106. package/examples/jsm/renderers/common/RenderObjects.js +1 -1
  107. package/examples/jsm/renderers/common/Textures.js +4 -36
  108. package/examples/jsm/renderers/common/nodes/Nodes.js +53 -18
  109. package/examples/jsm/renderers/webgl/WebGLBackend.js +291 -50
  110. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +88 -12
  111. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +40 -5
  112. package/examples/jsm/renderers/webgl/utils/WebGLState.js +14 -2
  113. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +2 -0
  114. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +36 -4
  115. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +2 -0
  116. package/examples/jsm/shaders/AfterimageShader.js +2 -0
  117. package/examples/jsm/shaders/BasicShader.js +2 -0
  118. package/examples/jsm/shaders/BlendShader.js +2 -0
  119. package/examples/jsm/shaders/BokehShader.js +2 -0
  120. package/examples/jsm/shaders/BokehShader2.js +4 -0
  121. package/examples/jsm/shaders/BrightnessContrastShader.js +2 -0
  122. package/examples/jsm/shaders/ColorCorrectionShader.js +2 -0
  123. package/examples/jsm/shaders/DOFMipMapShader.js +2 -0
  124. package/examples/jsm/shaders/DepthLimitedBlurShader.js +5 -0
  125. package/examples/jsm/shaders/FXAAShader.js +2 -0
  126. package/examples/jsm/shaders/FilmShader.js +1 -1
  127. package/examples/jsm/shaders/FocusShader.js +2 -0
  128. package/examples/jsm/shaders/FreiChenShader.js +2 -0
  129. package/examples/jsm/shaders/GodRaysShader.js +8 -0
  130. package/examples/jsm/shaders/HalftoneShader.js +2 -0
  131. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +2 -0
  132. package/examples/jsm/shaders/HueSaturationShader.js +2 -0
  133. package/examples/jsm/shaders/KaleidoShader.js +2 -0
  134. package/examples/jsm/shaders/LuminosityHighPassShader.js +2 -0
  135. package/examples/jsm/shaders/LuminosityShader.js +2 -0
  136. package/examples/jsm/shaders/MMDToonShader.js +2 -0
  137. package/examples/jsm/shaders/MirrorShader.js +2 -0
  138. package/examples/jsm/shaders/NormalMapShader.js +2 -0
  139. package/examples/jsm/shaders/OutputShader.js +4 -5
  140. package/examples/jsm/shaders/SAOShader.js +5 -0
  141. package/examples/jsm/shaders/SMAAShader.js +6 -0
  142. package/examples/jsm/shaders/SSAOShader.js +6 -0
  143. package/examples/jsm/shaders/SSRShader.js +6 -0
  144. package/examples/jsm/shaders/SobelOperatorShader.js +2 -0
  145. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +2 -0
  146. package/examples/jsm/shaders/TechnicolorShader.js +2 -0
  147. package/examples/jsm/shaders/TriangleBlurShader.js +2 -0
  148. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -0
  149. package/examples/jsm/shaders/VelocityShader.js +2 -0
  150. package/examples/jsm/shaders/VerticalTiltShiftShader.js +2 -0
  151. package/examples/jsm/shaders/WaterRefractionShader.js +2 -0
  152. package/examples/jsm/transpiler/AST.js +231 -0
  153. package/examples/jsm/transpiler/GLSLDecoder.js +899 -0
  154. package/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
  155. package/examples/jsm/transpiler/TSLEncoder.js +611 -0
  156. package/examples/jsm/transpiler/Transpiler.js +18 -0
  157. package/examples/jsm/webxr/VRButton.js +1 -1
  158. package/examples/jsm/webxr/XRButton.js +7 -5
  159. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  160. package/package.json +4 -1
  161. package/src/constants.js +7 -1
  162. package/src/extras/PMREMGenerator.js +7 -1
  163. package/src/loaders/MaterialLoader.js +10 -2
  164. package/src/materials/Material.js +27 -13
  165. package/src/math/Box3.js +35 -18
  166. package/src/math/Vector3.js +11 -12
  167. package/src/objects/SkinnedMesh.js +6 -7
  168. package/src/renderers/WebGLRenderer.js +142 -25
  169. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -0
  170. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -2
  171. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
  172. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +8 -6
  173. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +2 -2
  174. package/src/renderers/webgl/WebGLProgram.js +80 -50
  175. package/src/renderers/webgl/WebGLPrograms.js +3 -0
  176. package/src/renderers/webgl/WebGLState.js +25 -4
  177. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +0 -76
  178. package/examples/jsm/nodes/accessors/LineMaterialNode.js +0 -29
@@ -1,9 +1,7 @@
1
- import {
2
- ShaderChunk
3
- } from 'three';
4
-
5
1
  const OutputShader = {
6
2
 
3
+ name: 'OutputShader',
4
+
7
5
  uniforms: {
8
6
 
9
7
  'tDiffuse': { value: null },
@@ -35,7 +33,8 @@ const OutputShader = {
35
33
 
36
34
  uniform sampler2D tDiffuse;
37
35
 
38
- ` + ShaderChunk[ 'tonemapping_pars_fragment' ] + ShaderChunk[ 'colorspace_pars_fragment' ] + `
36
+ #include <tonemapping_pars_fragment>
37
+ #include <colorspace_pars_fragment>
39
38
 
40
39
  varying vec2 vUv;
41
40
 
@@ -8,12 +8,16 @@ import {
8
8
  */
9
9
 
10
10
  const SAOShader = {
11
+
12
+ name: 'SAOShader',
13
+
11
14
  defines: {
12
15
  'NUM_SAMPLES': 7,
13
16
  'NUM_RINGS': 4,
14
17
  'DIFFUSE_TEXTURE': 0,
15
18
  'PERSPECTIVE_CAMERA': 1
16
19
  },
20
+
17
21
  uniforms: {
18
22
 
19
23
  'tDepth': { value: null },
@@ -34,6 +38,7 @@ const SAOShader = {
34
38
  'kernelRadius': { value: 100.0 },
35
39
  'randomSeed': { value: 0.0 }
36
40
  },
41
+
37
42
  vertexShader: /* glsl */`
38
43
 
39
44
  varying vec2 vUv;
@@ -10,6 +10,8 @@ import {
10
10
 
11
11
  const SMAAEdgesShader = {
12
12
 
13
+ name: 'SMAAEdgesShader',
14
+
13
15
  defines: {
14
16
 
15
17
  'SMAA_THRESHOLD': '0.1'
@@ -115,6 +117,8 @@ const SMAAEdgesShader = {
115
117
 
116
118
  const SMAAWeightsShader = {
117
119
 
120
+ name: 'SMAAWeightsShader',
121
+
118
122
  defines: {
119
123
 
120
124
  'SMAA_MAX_SEARCH_STEPS': '8',
@@ -369,6 +373,8 @@ const SMAAWeightsShader = {
369
373
 
370
374
  const SMAABlendShader = {
371
375
 
376
+ name: 'SMAABlendShader',
377
+
372
378
  uniforms: {
373
379
 
374
380
  'tDiffuse': { value: null },
@@ -12,6 +12,8 @@ import {
12
12
 
13
13
  const SSAOShader = {
14
14
 
15
+ name: 'SSAOShader',
16
+
15
17
  defines: {
16
18
  'PERSPECTIVE_CAMERA': 1,
17
19
  'KERNEL_SIZE': 32
@@ -183,6 +185,8 @@ const SSAOShader = {
183
185
 
184
186
  const SSAODepthShader = {
185
187
 
188
+ name: 'SSAODepthShader',
189
+
186
190
  defines: {
187
191
  'PERSPECTIVE_CAMERA': 1
188
192
  },
@@ -244,6 +248,8 @@ const SSAODepthShader = {
244
248
 
245
249
  const SSAOBlurShader = {
246
250
 
251
+ name: 'SSAOBlurShader',
252
+
247
253
  uniforms: {
248
254
 
249
255
  'tDiffuse': { value: null },
@@ -9,6 +9,8 @@ import {
9
9
 
10
10
  const SSRShader = {
11
11
 
12
+ name: 'SSRShader',
13
+
12
14
  defines: {
13
15
  MAX_STEP: 0,
14
16
  PERSPECTIVE_CAMERA: true,
@@ -233,6 +235,8 @@ const SSRShader = {
233
235
 
234
236
  const SSRDepthShader = {
235
237
 
238
+ name: 'SSRDepthShader',
239
+
236
240
  defines: {
237
241
  'PERSPECTIVE_CAMERA': 1
238
242
  },
@@ -300,6 +304,8 @@ const SSRDepthShader = {
300
304
 
301
305
  const SSRBlurShader = {
302
306
 
307
+ name: 'SSRBlurShader',
308
+
303
309
  uniforms: {
304
310
 
305
311
  'tDiffuse': { value: null },
@@ -11,6 +11,8 @@ import {
11
11
 
12
12
  const SobelOperatorShader = {
13
13
 
14
+ name: 'SobelOperatorShader',
15
+
14
16
  uniforms: {
15
17
 
16
18
  'tDiffuse': { value: null },
@@ -24,6 +24,8 @@ const meshphong_frag_body = ShaderChunk[ 'meshphong_frag' ].slice( ShaderChunk[
24
24
 
25
25
  const SubsurfaceScatteringShader = {
26
26
 
27
+ name: 'SubsurfaceScatteringShader',
28
+
27
29
  uniforms: UniformsUtils.merge( [
28
30
  ShaderLib[ 'phong' ].uniforms,
29
31
  {
@@ -7,6 +7,8 @@
7
7
 
8
8
  const TechnicolorShader = {
9
9
 
10
+ name: 'TechnicolorShader',
11
+
10
12
  uniforms: {
11
13
 
12
14
  'tDiffuse': { value: null }
@@ -14,6 +14,8 @@ import {
14
14
 
15
15
  const TriangleBlurShader = {
16
16
 
17
+ name: 'TriangleBlurShader',
18
+
17
19
  uniforms: {
18
20
 
19
21
  'texture': { value: null },
@@ -5,6 +5,8 @@
5
5
 
6
6
  const UnpackDepthRGBAShader = {
7
7
 
8
+ name: 'UnpackDepthRGBAShader',
9
+
8
10
  uniforms: {
9
11
 
10
12
  'tDiffuse': { value: null },
@@ -10,6 +10,8 @@ import {
10
10
 
11
11
  const VelocityShader = {
12
12
 
13
+ name: 'VelocityShader',
14
+
13
15
  uniforms: UniformsUtils.merge( [
14
16
  UniformsLib.common,
15
17
  UniformsLib.displacementmap,
@@ -9,6 +9,8 @@
9
9
 
10
10
  const VerticalTiltShiftShader = {
11
11
 
12
+ name: 'VerticalTiltShiftShader',
13
+
12
14
  uniforms: {
13
15
 
14
16
  'tDiffuse': { value: null },
@@ -1,5 +1,7 @@
1
1
  const WaterRefractionShader = {
2
2
 
3
+ name: 'WaterRefractionShader',
4
+
3
5
  uniforms: {
4
6
 
5
7
  'color': {
@@ -0,0 +1,231 @@
1
+ export class Program {
2
+
3
+ constructor() {
4
+
5
+ this.body = [];
6
+
7
+ this.isProgram = true;
8
+
9
+ }
10
+
11
+ }
12
+
13
+ export class VariableDeclaration {
14
+
15
+ constructor( type, name, value = null, next = null, immutable = false ) {
16
+
17
+ this.type = type;
18
+ this.name = name;
19
+ this.value = value;
20
+ this.next = next;
21
+
22
+ this.immutable = immutable;
23
+
24
+ this.isVariableDeclaration = true;
25
+
26
+ }
27
+
28
+ }
29
+
30
+ export class FunctionParameter {
31
+
32
+ constructor( type, name, qualifier = null, immutable = true ) {
33
+
34
+ this.type = type;
35
+ this.name = name;
36
+ this.qualifier = qualifier;
37
+ this.immutable = immutable;
38
+
39
+ this.isFunctionParameter = true;
40
+
41
+ }
42
+
43
+ }
44
+
45
+ export class FunctionDeclaration {
46
+
47
+ constructor( type, name, params = [] ) {
48
+
49
+ this.type = type;
50
+ this.name = name;
51
+ this.params = params;
52
+ this.body = [];
53
+
54
+ this.isFunctionDeclaration = true;
55
+
56
+ }
57
+
58
+ }
59
+
60
+ export class Expression {
61
+
62
+ constructor( expression ) {
63
+
64
+ this.expression = expression;
65
+
66
+ this.isExpression = true;
67
+
68
+ }
69
+
70
+ }
71
+
72
+ export class Ternary {
73
+
74
+ constructor( cond, left, right ) {
75
+
76
+ this.cond = cond;
77
+ this.left = left;
78
+ this.right = right;
79
+
80
+ this.isTernary = true;
81
+
82
+ }
83
+
84
+ }
85
+
86
+ export class Operator {
87
+
88
+ constructor( type, left, right ) {
89
+
90
+ this.type = type;
91
+ this.left = left;
92
+ this.right = right;
93
+
94
+ this.isOperator = true;
95
+
96
+ }
97
+
98
+ }
99
+
100
+
101
+ export class Unary {
102
+
103
+ constructor( type, expression, after = false ) {
104
+
105
+ this.type = type;
106
+ this.expression = expression;
107
+ this.after = after;
108
+
109
+ this.isUnary = true;
110
+
111
+ }
112
+
113
+ }
114
+
115
+ export class Number {
116
+
117
+ constructor( value, type = 'float' ) {
118
+
119
+ this.type = type;
120
+ this.value = value;
121
+
122
+ this.isNumber = true;
123
+
124
+ }
125
+
126
+ }
127
+
128
+ export class Conditional {
129
+
130
+ constructor( cond = null ) {
131
+
132
+ this.cond = cond;
133
+
134
+ this.body = [];
135
+ this.elseConditional = null;
136
+
137
+ this.isConditional = true;
138
+
139
+ }
140
+
141
+ }
142
+
143
+ export class FunctionCall {
144
+
145
+ constructor( name, params = [] ) {
146
+
147
+ this.name = name;
148
+ this.params = params;
149
+
150
+ this.isFunctionCall = true;
151
+
152
+ }
153
+
154
+ }
155
+
156
+ export class Return {
157
+
158
+ constructor( value ) {
159
+
160
+ this.value = value;
161
+
162
+ this.isReturn = true;
163
+
164
+ }
165
+
166
+ }
167
+
168
+ export class Accessor {
169
+
170
+ constructor( property ) {
171
+
172
+ this.property = property;
173
+
174
+ this.isAccessor = true;
175
+
176
+ }
177
+
178
+ }
179
+
180
+ export class StaticElement {
181
+
182
+ constructor( value ) {
183
+
184
+ this.value = value;
185
+
186
+ this.isStaticElement = true;
187
+
188
+ }
189
+
190
+ }
191
+
192
+ export class DynamicElement {
193
+
194
+ constructor( value ) {
195
+
196
+ this.value = value;
197
+
198
+ this.isDynamicElement = true;
199
+
200
+ }
201
+
202
+ }
203
+
204
+ export class AccessorElements {
205
+
206
+ constructor( property, elements = [] ) {
207
+
208
+ this.property = property;
209
+ this.elements = elements;
210
+
211
+ this.isAccessorElements = true;
212
+
213
+ }
214
+
215
+ }
216
+
217
+ export class For {
218
+
219
+ constructor( initialization, condition, afterthought ) {
220
+
221
+ this.initialization = initialization;
222
+ this.condition = condition;
223
+ this.afterthought = afterthought;
224
+
225
+ this.body = [];
226
+
227
+ this.isFor = true;
228
+
229
+ }
230
+
231
+ }