three-stdlib 2.16.0 → 2.16.1
Sign up to get free protection for your applications and to get access to all the features.
- package/BufferGeometryUtils-1a7a235c.js +655 -0
- package/BufferGeometryUtils-971dfde3.js +1 -0
- package/Nodes-4f766d71.js +471 -0
- package/Nodes-9aa16d74.js +1 -0
- package/animation/AnimationClipCreator.cjs.js +1 -0
- package/animation/AnimationClipCreator.js +52 -32
- package/animation/CCDIKSolver.cjs.js +1 -0
- package/animation/CCDIKSolver.js +143 -64
- package/animation/MMDAnimationHelper.cjs.js +1 -0
- package/animation/MMDAnimationHelper.js +341 -150
- package/animation/MMDPhysics.cjs.js +1 -0
- package/animation/MMDPhysics.js +361 -154
- package/cameras/CinematicCamera.cjs.js +1 -0
- package/cameras/CinematicCamera.js +77 -67
- package/controls/ArcballControls.cjs.js +1 -0
- package/controls/ArcballControls.js +1449 -544
- package/controls/DeviceOrientationControls.cjs.js +1 -0
- package/controls/DeviceOrientationControls.js +97 -52
- package/controls/DragControls.cjs.js +1 -0
- package/controls/DragControls.js +187 -85
- package/controls/FirstPersonControls.cjs.js +1 -0
- package/controls/FirstPersonControls.js +193 -123
- package/controls/FlyControls.cjs.js +1 -0
- package/controls/FlyControls.js +152 -82
- package/controls/OrbitControls.cjs.js +1 -0
- package/controls/OrbitControls.js +481 -232
- package/controls/PointerLockControls.cjs.js +1 -0
- package/controls/PointerLockControls.js +99 -63
- package/controls/TrackballControls.cjs.js +1 -0
- package/controls/TrackballControls.js +383 -211
- package/controls/TransformControls.cjs.js +1 -0
- package/controls/TransformControls.js +782 -575
- package/controls/experimental/CameraControls.cjs.js +1 -0
- package/controls/experimental/CameraControls.js +609 -329
- package/csm/CSM.cjs.js +1 -0
- package/csm/CSM.js +108 -47
- package/csm/CSMFrustum.cjs.js +1 -0
- package/csm/CSMFrustum.js +29 -14
- package/csm/CSMHelper.cjs.js +1 -0
- package/csm/CSMHelper.js +34 -20
- package/csm/CSMShader.cjs.js +1 -0
- package/csm/CSMShader.js +11 -7
- package/curves/CurveExtras.cjs.js +1 -0
- package/curves/CurveExtras.js +115 -73
- package/curves/NURBSCurve.cjs.js +1 -0
- package/curves/NURBSCurve.js +43 -15
- package/curves/NURBSSurface.cjs.js +1 -0
- package/curves/NURBSSurface.js +27 -11
- package/curves/NURBSUtils.cjs.js +1 -0
- package/curves/NURBSUtils.js +203 -54
- package/custom.d.cjs.js +1 -0
- package/{shaders/types.mjs → custom.d.js} +0 -0
- package/deprecated/Geometry.cjs.js +1 -0
- package/deprecated/Geometry.js +486 -191
- package/effects/AnaglyphEffect.cjs.js +1 -0
- package/effects/AnaglyphEffect.js +60 -95
- package/effects/AsciiEffect.cjs.js +1 -0
- package/effects/AsciiEffect.js +110 -80
- package/effects/OutlineEffect.cjs.js +1 -0
- package/effects/OutlineEffect.js +204 -121
- package/effects/ParallaxBarrierEffect.cjs.js +1 -0
- package/effects/ParallaxBarrierEffect.js +38 -39
- package/effects/PeppersGhostEffect.cjs.js +1 -0
- package/effects/PeppersGhostEffect.js +68 -19
- package/effects/StereoEffect.cjs.js +1 -0
- package/effects/StereoEffect.js +16 -12
- package/environments/RoomEnvironment.cjs.js +1 -0
- package/environments/RoomEnvironment.js +47 -52
- package/exporters/ColladaExporter.cjs.js +1 -0
- package/exporters/ColladaExporter.js +241 -115
- package/exporters/DRACOExporter.cjs.js +1 -0
- package/exporters/DRACOExporter.js +121 -67
- package/exporters/GLTFExporter.cjs.js +1 -0
- package/exporters/GLTFExporter.js +1014 -463
- package/exporters/MMDExporter.cjs.js +1 -0
- package/exporters/MMDExporter.js +102 -44
- package/exporters/OBJExporter.cjs.js +1 -0
- package/exporters/OBJExporter.js +140 -78
- package/exporters/PLYExporter.cjs.js +1 -0
- package/exporters/PLYExporter.js +154 -93
- package/exporters/STLExporter.cjs.js +1 -0
- package/exporters/STLExporter.js +81 -30
- package/exporters/USDZExporter.cjs.js +1 -0
- package/exporters/USDZExporter.js +144 -84
- package/geometries/BoxLineGeometry.cjs.js +1 -0
- package/geometries/BoxLineGeometry.js +14 -7
- package/geometries/ConvexGeometry.cjs.js +1 -0
- package/geometries/ConvexGeometry.js +23 -14
- package/geometries/DecalGeometry.cjs.js +1 -0
- package/geometries/DecalGeometry.js +162 -108
- package/geometries/LightningStrike.cjs.js +1 -0
- package/geometries/LightningStrike.js +294 -101
- package/geometries/ParametricGeometries.cjs.js +1 -0
- package/geometries/ParametricGeometries.js +76 -26
- package/geometries/ParametricGeometry.cjs.js +1 -0
- package/geometries/ParametricGeometry.js +48 -24
- package/geometries/RoundedBoxGeometry.cjs.js +1 -0
- package/geometries/RoundedBoxGeometry.js +64 -33
- package/geometries/TeapotGeometry.cjs.js +1 -0
- package/geometries/TeapotGeometry.js +174 -1434
- package/geometries/TextGeometry.cjs.js +1 -0
- package/geometries/TextGeometry.js +17 -9
- package/helpers/LightProbeHelper.cjs.js +1 -0
- package/helpers/LightProbeHelper.js +21 -53
- package/helpers/PositionalAudioHelper.cjs.js +1 -0
- package/helpers/PositionalAudioHelper.js +30 -23
- package/helpers/RectAreaLightHelper.cjs.js +1 -0
- package/helpers/RectAreaLightHelper.js +33 -17
- package/helpers/VertexNormalsHelper.cjs.js +1 -0
- package/helpers/VertexNormalsHelper.js +41 -20
- package/helpers/VertexTangentsHelper.cjs.js +1 -0
- package/helpers/VertexTangentsHelper.js +36 -18
- package/index.cjs.js +1 -0
- package/index.js +333 -969
- package/interactive/InteractiveGroup.cjs.js +1 -0
- package/interactive/InteractiveGroup.d.ts +5 -0
- package/interactive/InteractiveGroup.js +87 -0
- package/interactive/SelectionBox.cjs.js +1 -0
- package/interactive/SelectionBox.js +46 -31
- package/interactive/SelectionHelper.cjs.js +1 -0
- package/interactive/SelectionHelper.js +21 -16
- package/libs/MeshoptDecoder.cjs.js +1 -0
- package/libs/MeshoptDecoder.js +58 -147
- package/libs/MotionControllers.cjs.js +1 -0
- package/libs/MotionControllers.js +208 -66
- package/lights/LightProbeGenerator.cjs.js +1 -0
- package/lights/LightProbeGenerator.js +96 -40
- package/lights/RectAreaLightUniformsLib.cjs.js +1 -0
- package/lights/RectAreaLightUniformsLib.js +9 -32842
- package/lines/Line2.cjs.js +1 -0
- package/lines/Line2.js +12 -9
- package/lines/LineGeometry.cjs.js +1 -0
- package/lines/LineGeometry.js +19 -7
- package/lines/LineMaterial.cjs.js +1 -0
- package/lines/LineMaterial.js +89 -51
- package/lines/LineSegments2.cjs.js +1 -0
- package/lines/LineSegments2.js +165 -56
- package/lines/LineSegmentsGeometry.cjs.js +1 -0
- package/lines/LineSegmentsGeometry.js +71 -29
- package/lines/Wireframe.cjs.js +1 -0
- package/lines/Wireframe.js +29 -15
- package/lines/WireframeGeometry2.cjs.js +1 -0
- package/lines/WireframeGeometry2.js +9 -8
- package/loaders/3DMLoader.cjs.js +1 -0
- package/loaders/3DMLoader.js +469 -234
- package/loaders/3MFLoader.cjs.js +1 -0
- package/loaders/3MFLoader.js +555 -340
- package/loaders/AMFLoader.cjs.js +1 -0
- package/loaders/AMFLoader.js +219 -114
- package/loaders/AssimpLoader.cjs.js +1 -0
- package/loaders/AssimpLoader.js +725 -328
- package/loaders/BVHLoader.cjs.js +1 -0
- package/loaders/BVHLoader.js +200 -94
- package/loaders/BasisTextureLoader.cjs.js +1 -0
- package/loaders/BasisTextureLoader.js +357 -229
- package/loaders/ColladaLoader.cjs.js +1 -0
- package/loaders/ColladaLoader.js +1522 -932
- package/loaders/DDSLoader.cjs.js +1 -0
- package/loaders/DDSLoader.js +108 -42
- package/loaders/DRACOLoader.cjs.js +1 -0
- package/loaders/DRACOLoader.js +210 -103
- package/loaders/EXRLoader.cjs.js +1 -0
- package/loaders/EXRLoader.js +809 -461
- package/loaders/FBXLoader.cjs.js +1 -0
- package/loaders/FBXLoader.js +1397 -842
- package/loaders/FontLoader.cjs.js +1 -0
- package/loaders/FontLoader.js +66 -33
- package/loaders/GCodeLoader.cjs.js +1 -0
- package/loaders/GCodeLoader.js +111 -63
- package/loaders/GLTFLoader.cjs.js +1 -0
- package/loaders/GLTFLoader.js +1484 -771
- package/loaders/HDRCubeTextureLoader.cjs.js +1 -0
- package/loaders/HDRCubeTextureLoader.js +50 -45
- package/loaders/KMZLoader.cjs.js +1 -0
- package/loaders/KMZLoader.js +55 -42
- package/loaders/KTX2Loader.cjs.js +1 -0
- package/loaders/KTX2Loader.js +362 -229
- package/loaders/KTXLoader.cjs.js +1 -0
- package/loaders/KTXLoader.js +99 -37
- package/loaders/LDrawLoader.cjs.js +1 -0
- package/loaders/LDrawLoader.js +746 -313
- package/loaders/LUT3dlLoader.cjs.js +1 -0
- package/loaders/LUT3dlLoader.js +62 -50
- package/loaders/LUTCubeLoader.cjs.js +1 -0
- package/loaders/LUTCubeLoader.js +56 -45
- package/loaders/LWOLoader.cjs.js +1 -0
- package/loaders/LWOLoader.js +339 -227
- package/loaders/LottieLoader.cjs.js +1 -0
- package/loaders/LottieLoader.js +38 -36
- package/loaders/MD2Loader.cjs.js +1 -0
- package/loaders/MD2Loader.js +91 -248
- package/loaders/MDDLoader.cjs.js +1 -0
- package/loaders/MDDLoader.js +45 -25
- package/loaders/MMDLoader.cjs.js +1 -0
- package/loaders/MMDLoader.js +795 -359
- package/loaders/MTLLoader.cjs.js +1 -0
- package/loaders/MTLLoader.js +201 -91
- package/loaders/NRRDLoader.cjs.js +1 -0
- package/loaders/NRRDLoader.js +263 -182
- package/loaders/NodeMaterialLoader.cjs.js +1 -0
- package/loaders/NodeMaterialLoader.js +14 -121
- package/loaders/OBJLoader.cjs.js +1 -0
- package/loaders/OBJLoader.js +283 -161
- package/loaders/PCDLoader.cjs.js +1 -0
- package/loaders/PCDLoader.js +164 -145
- package/loaders/PDBLoader.cjs.js +1 -0
- package/loaders/PDBLoader.js +63 -45
- package/loaders/PLYLoader.cjs.js +1 -0
- package/loaders/PLYLoader.js +203 -106
- package/loaders/PRWMLoader.cjs.js +1 -0
- package/loaders/PRWMLoader.js +110 -73
- package/loaders/PVRLoader.cjs.js +1 -0
- package/loaders/PVRLoader.js +93 -32
- package/loaders/RGBELoader.cjs.js +1 -0
- package/loaders/RGBELoader.js +233 -96
- package/loaders/RGBMLoader.cjs.js +1 -0
- package/loaders/RGBMLoader.js +514 -344
- package/loaders/STLLoader.cjs.js +1 -0
- package/loaders/STLLoader.js +165 -59
- package/loaders/SVGLoader.cjs.js +1 -0
- package/loaders/SVGLoader.js +851 -481
- package/loaders/TDSLoader.cjs.js +1 -0
- package/loaders/TDSLoader.js +527 -137
- package/loaders/TGALoader.cjs.js +1 -0
- package/loaders/TGALoader.js +205 -94
- package/loaders/TTFLoader.cjs.js +1 -0
- package/loaders/TTFLoader.js +79 -58
- package/loaders/TiltLoader.cjs.js +1 -0
- package/loaders/TiltLoader.js +167 -129
- package/loaders/VOXLoader.cjs.js +1 -0
- package/loaders/VOXLoader.js +84 -320
- package/loaders/VRMLLoader.cjs.js +1 -0
- package/loaders/VRMLLoader.js +1268 -786
- package/loaders/VRMLoader.cjs.js +1 -0
- package/loaders/VRMLoader.js +31 -23
- package/loaders/VTKLoader.cjs.js +1 -0
- package/loaders/VTKLoader.js +407 -219
- package/loaders/XLoader.cjs.js +1 -0
- package/loaders/XLoader.js +1259 -1083
- package/loaders/XYZLoader.cjs.js +1 -0
- package/loaders/XYZLoader.js +34 -28
- package/loaders/lwo/IFFParser.cjs.js +1 -0
- package/loaders/lwo/IFFParser.js +492 -238
- package/loaders/lwo/LWO2Parser.cjs.js +1 -0
- package/loaders/lwo/LWO2Parser.js +279 -176
- package/loaders/lwo/LWO3Parser.cjs.js +1 -0
- package/loaders/lwo/LWO3Parser.js +247 -160
- package/math/Capsule.cjs.js +1 -0
- package/math/Capsule.js +43 -56
- package/math/ColorConverter.cjs.js +1 -0
- package/math/ColorConverter.js +32 -18
- package/math/ConvexHull.cjs.js +1 -0
- package/math/ConvexHull.js +357 -97
- package/math/ImprovedNoise.cjs.js +1 -0
- package/math/ImprovedNoise.js +32 -282
- package/math/Lut.cjs.js +1 -0
- package/math/Lut.js +35 -51
- package/math/MeshSurfaceSampler.cjs.js +1 -0
- package/math/MeshSurfaceSampler.js +68 -25
- package/math/OBB.cjs.js +1 -0
- package/math/OBB.js +152 -91
- package/math/Octree.cjs.js +1 -0
- package/math/Octree.js +139 -76
- package/math/SimplexNoise.cjs.js +1 -0
- package/math/SimplexNoise.js +238 -217
- package/misc/ConvexObjectBreaker.cjs.js +1 -0
- package/misc/ConvexObjectBreaker.js +185 -79
- package/misc/GPUComputationRenderer.cjs.js +1 -0
- package/misc/GPUComputationRenderer.js +194 -69
- package/misc/Gyroscope.cjs.js +1 -0
- package/misc/Gyroscope.js +22 -16
- package/misc/MD2Character.cjs.js +1 -0
- package/misc/MD2Character.js +74 -52
- package/misc/MD2CharacterComplex.cjs.js +1 -0
- package/misc/MD2CharacterComplex.js +163 -112
- package/misc/MorphAnimMesh.cjs.js +1 -0
- package/misc/MorphAnimMesh.js +28 -20
- package/misc/MorphBlendMesh.cjs.js +1 -0
- package/misc/MorphBlendMesh.js +69 -45
- package/misc/ProgressiveLightmap.cjs.js +1 -0
- package/misc/ProgressiveLightmap.js +187 -70
- package/misc/RollerCoaster.cjs.js +1 -0
- package/misc/RollerCoaster.js +135 -106
- package/misc/TubePainter.cjs.js +1 -0
- package/misc/TubePainter.js +92 -74
- package/misc/Volume.cjs.js +1 -0
- package/misc/Volume.js +270 -108
- package/misc/VolumeSlice.cjs.js +1 -0
- package/misc/VolumeSlice.js +122 -34
- package/misc/WebGL.cjs.js +1 -0
- package/misc/WebGL.js +34 -37
- package/modifiers/CurveModifier.cjs.js +1 -0
- package/modifiers/CurveModifier.js +151 -46
- package/modifiers/EdgeSplitModifier.cjs.js +1 -0
- package/modifiers/EdgeSplitModifier.js +90 -46
- package/modifiers/SimplifyModifier.cjs.js +1 -0
- package/modifiers/SimplifyModifier.js +202 -77
- package/modifiers/TessellateModifier.cjs.js +1 -0
- package/modifiers/TessellateModifier.js +90 -65
- package/nodes/Nodes.cjs.js +1 -0
- package/nodes/Nodes.js +140 -274
- package/nodes/ShaderNode.cjs.js +1 -0
- package/nodes/ShaderNode.js +196 -296
- package/nodes/accessors/BufferNode.cjs.js +1 -0
- package/nodes/accessors/BufferNode.js +8 -4
- package/nodes/accessors/CameraNode.cjs.js +1 -0
- package/nodes/accessors/CameraNode.js +25 -20
- package/nodes/accessors/CubeTextureNode.cjs.js +1 -0
- package/nodes/accessors/CubeTextureNode.js +26 -14
- package/nodes/accessors/MaterialNode.cjs.js +1 -0
- package/nodes/accessors/MaterialNode.js +53 -43
- package/nodes/accessors/MaterialReferenceNode.cjs.js +1 -0
- package/nodes/accessors/MaterialReferenceNode.js +6 -3
- package/nodes/accessors/ModelNode.cjs.js +1 -0
- package/nodes/accessors/ModelNode.js +5 -3
- package/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
- package/nodes/accessors/ModelViewProjectionNode.js +13 -14
- package/nodes/accessors/NormalNode.cjs.js +1 -0
- package/nodes/accessors/NormalNode.js +39 -40
- package/nodes/accessors/Object3DNode.cjs.js +1 -0
- package/nodes/accessors/Object3DNode.js +50 -40
- package/nodes/accessors/PointUVNode.cjs.js +1 -0
- package/nodes/accessors/PointUVNode.js +9 -5
- package/nodes/accessors/PositionNode.cjs.js +1 -0
- package/nodes/accessors/PositionNode.js +41 -42
- package/nodes/accessors/ReferenceNode.cjs.js +1 -0
- package/nodes/accessors/ReferenceNode.js +17 -10
- package/nodes/accessors/ReflectNode.cjs.js +1 -0
- package/nodes/accessors/ReflectNode.js +26 -23
- package/nodes/accessors/SkinningNode.cjs.js +1 -0
- package/nodes/accessors/SkinningNode.js +48 -46
- package/nodes/accessors/TextureNode.cjs.js +1 -0
- package/nodes/accessors/TextureNode.js +29 -14
- package/nodes/accessors/UVNode.cjs.js +1 -0
- package/nodes/accessors/UVNode.js +11 -5
- package/nodes/core/ArrayUniformNode.cjs.js +1 -0
- package/nodes/core/ArrayUniformNode.js +7 -3
- package/nodes/core/AttributeNode.cjs.js +1 -0
- package/nodes/core/AttributeNode.js +12 -5
- package/nodes/core/BypassNode.cjs.js +1 -0
- package/nodes/core/BypassNode.js +12 -5
- package/nodes/core/CodeNode.cjs.js +1 -0
- package/nodes/core/CodeNode.js +12 -4
- package/nodes/core/ConstNode.cjs.js +1 -0
- package/nodes/core/ConstNode.js +7 -3
- package/nodes/core/ContextNode.cjs.js +1 -0
- package/nodes/core/ContextNode.js +8 -3
- package/nodes/core/ExpressionNode.cjs.js +1 -0
- package/nodes/core/ExpressionNode.js +9 -5
- package/nodes/core/FunctionCallNode.cjs.js +1 -0
- package/nodes/core/FunctionCallNode.js +15 -6
- package/nodes/core/FunctionNode.cjs.js +1 -0
- package/nodes/core/FunctionNode.js +25 -10
- package/nodes/core/InputNode.cjs.js +1 -0
- package/nodes/core/InputNode.js +23 -12
- package/nodes/core/Node.cjs.js +1 -0
- package/nodes/core/Node.js +75 -35
- package/nodes/core/NodeAttribute.cjs.js +1 -0
- package/nodes/core/NodeAttribute.js +4 -2
- package/nodes/core/NodeBuilder.cjs.js +1 -0
- package/nodes/core/NodeBuilder.js +224 -110
- package/nodes/core/NodeCode.cjs.js +1 -0
- package/nodes/core/NodeCode.js +7 -4
- package/nodes/core/NodeFrame.cjs.js +1 -0
- package/nodes/core/NodeFrame.js +12 -9
- package/nodes/core/NodeFunction.cjs.js +1 -0
- package/nodes/core/NodeFunction.js +17 -0
- package/nodes/core/NodeFunctionInput.cjs.js +1 -0
- package/nodes/core/NodeFunctionInput.js +5 -3
- package/nodes/core/NodeKeywords.cjs.js +1 -0
- package/nodes/core/NodeKeywords.js +16 -5
- package/nodes/core/NodeParser.cjs.js +1 -0
- package/nodes/core/NodeParser.js +8 -0
- package/nodes/core/NodeUniform.cjs.js +1 -0
- package/nodes/core/NodeUniform.js +7 -3
- package/nodes/core/NodeUtils.cjs.js +1 -0
- package/nodes/core/NodeUtils.js +43 -39
- package/nodes/core/NodeVar.cjs.js +1 -0
- package/nodes/core/NodeVar.js +4 -2
- package/nodes/core/NodeVary.cjs.js +1 -0
- package/nodes/core/NodeVary.js +4 -2
- package/nodes/core/PropertyNode.cjs.js +1 -0
- package/nodes/core/PropertyNode.js +10 -4
- package/nodes/core/TempNode.cjs.js +1 -0
- package/nodes/core/TempNode.js +11 -5
- package/nodes/core/UniformNode.cjs.js +1 -0
- package/nodes/core/UniformNode.js +10 -4
- package/nodes/core/VarNode.cjs.js +1 -0
- package/nodes/core/VarNode.js +11 -3
- package/nodes/core/VaryNode.cjs.js +1 -0
- package/nodes/core/VaryNode.js +15 -6
- package/nodes/core/constants.cjs.js +1 -0
- package/nodes/core/constants.js +7 -20
- package/nodes/display/ColorSpaceNode.cjs.js +1 -0
- package/nodes/display/ColorSpaceNode.js +38 -34
- package/nodes/display/NormalMapNode.cjs.js +1 -0
- package/nodes/display/NormalMapNode.js +53 -35
- package/nodes/fog/FogNode.cjs.js +1 -0
- package/nodes/fog/FogNode.js +9 -5
- package/nodes/fog/FogRangeNode.cjs.js +1 -0
- package/nodes/fog/FogRangeNode.js +9 -5
- package/nodes/functions/BSDFs.cjs.js +1 -0
- package/nodes/functions/BSDFs.js +118 -61
- package/nodes/functions/PhysicalMaterialFunctions.cjs.js +1 -0
- package/nodes/functions/PhysicalMaterialFunctions.js +57 -0
- package/nodes/lights/LightContextNode.cjs.js +1 -0
- package/nodes/lights/LightContextNode.js +23 -14
- package/nodes/lights/LightNode.cjs.js +1 -0
- package/nodes/lights/LightNode.js +31 -27
- package/nodes/lights/LightsNode.cjs.js +1 -0
- package/nodes/lights/LightsNode.js +28 -9
- package/nodes/loaders/NodeLoader.cjs.js +1 -0
- package/nodes/loaders/NodeLoader.js +42 -27
- package/nodes/loaders/NodeMaterialLoader.cjs.js +1 -0
- package/nodes/loaders/NodeMaterialLoader.js +10 -4
- package/nodes/loaders/NodeObjectLoader.cjs.js +1 -0
- package/nodes/loaders/NodeObjectLoader.js +19 -9
- package/nodes/materials/LineBasicNodeMaterial.cjs.js +1 -0
- package/nodes/materials/LineBasicNodeMaterial.js +10 -5
- package/nodes/materials/Materials.cjs.js +1 -0
- package/nodes/materials/Materials.js +17 -14
- package/nodes/materials/MeshBasicNodeMaterial.cjs.js +1 -0
- package/nodes/materials/MeshBasicNodeMaterial.js +10 -5
- package/nodes/materials/MeshStandardNodeMaterial.cjs.js +1 -0
- package/nodes/materials/MeshStandardNodeMaterial.js +8 -5
- package/nodes/materials/NodeMaterial.cjs.js +1 -0
- package/nodes/materials/NodeMaterial.js +36 -20
- package/nodes/materials/PointsNodeMaterial.cjs.js +1 -0
- package/nodes/materials/PointsNodeMaterial.js +10 -5
- package/nodes/math/CondNode.cjs.js +1 -0
- package/nodes/math/CondNode.js +23 -11
- package/nodes/math/MathNode.cjs.js +1 -0
- package/nodes/math/MathNode.js +142 -98
- package/nodes/math/OperatorNode.cjs.js +1 -0
- package/nodes/math/OperatorNode.js +46 -24
- package/nodes/parsers/GLSLNodeFunction.cjs.js +1 -0
- package/nodes/parsers/GLSLNodeFunction.js +101 -0
- package/nodes/parsers/GLSLNodeParser.cjs.js +1 -0
- package/nodes/parsers/GLSLNodeParser.js +13 -0
- package/nodes/parsers/WGSLNodeFunction.cjs.js +1 -0
- package/nodes/parsers/WGSLNodeFunction.js +71 -0
- package/nodes/parsers/WGSLNodeParser.cjs.js +1 -0
- package/nodes/parsers/WGSLNodeParser.js +13 -0
- package/nodes/procedural/CheckerNode.cjs.js +1 -0
- package/nodes/procedural/CheckerNode.js +19 -13
- package/nodes/utils/ArrayElementNode.cjs.js +1 -0
- package/nodes/utils/ArrayElementNode.js +8 -4
- package/nodes/utils/ConvertNode.cjs.js +1 -0
- package/nodes/utils/ConvertNode.js +8 -3
- package/nodes/utils/JoinNode.cjs.js +1 -0
- package/nodes/utils/JoinNode.js +11 -7
- package/nodes/utils/MatcapUVNode.cjs.js +1 -0
- package/nodes/utils/MatcapUVNode.js +11 -8
- package/nodes/utils/OscNode.cjs.js +1 -0
- package/nodes/utils/OscNode.js +33 -27
- package/nodes/utils/SplitNode.cjs.js +1 -0
- package/nodes/utils/SplitNode.js +20 -6
- package/nodes/utils/SpriteSheetUVNode.cjs.js +1 -0
- package/nodes/utils/SpriteSheetUVNode.js +23 -23
- package/nodes/utils/TimerNode.cjs.js +1 -0
- package/nodes/utils/TimerNode.js +24 -20
- package/objects/GroundProjectedEnv.cjs.js +1 -0
- package/objects/GroundProjectedEnv.js +37 -22
- package/objects/Lensflare.cjs.js +1 -0
- package/objects/Lensflare.js +156 -86
- package/objects/LightningStorm.cjs.js +1 -0
- package/objects/LightningStorm.js +102 -38
- package/objects/MarchingCubes.cjs.js +1 -0
- package/objects/MarchingCubes.js +303 -150
- package/objects/Reflector.cjs.js +1 -0
- package/objects/Reflector.js +72 -50
- package/objects/ReflectorForSSRPass.cjs.js +1 -0
- package/objects/ReflectorForSSRPass.js +131 -80
- package/objects/ReflectorRTT.cjs.js +1 -0
- package/objects/ReflectorRTT.js +7 -6
- package/objects/Refractor.cjs.js +1 -0
- package/objects/Refractor.js +106 -64
- package/objects/ShadowMesh.cjs.js +1 -0
- package/objects/ShadowMesh.js +17 -8
- package/objects/Sky.cjs.js +1 -0
- package/objects/Sky.js +80 -119
- package/objects/Water.cjs.js +1 -0
- package/objects/Water.js +127 -83
- package/objects/Water2.cjs.js +1 -0
- package/objects/Water2.js +108 -72
- package/offscreen/jank.cjs.js +1 -0
- package/offscreen/jank.js +14 -10
- package/offscreen/offscreen.cjs.js +1 -0
- package/offscreen/offscreen.js +5 -4
- package/offscreen/scene.cjs.js +1 -0
- package/offscreen/scene.js +48 -45
- package/package.json +3 -3
- package/physics/AmmoPhysics.cjs.js +1 -0
- package/physics/AmmoPhysics.js +71 -30
- package/postprocessing/AdaptiveToneMappingPass.cjs.js +1 -0
- package/postprocessing/AdaptiveToneMappingPass.js +123 -97
- package/postprocessing/AfterimagePass.cjs.js +1 -0
- package/postprocessing/AfterimagePass.js +49 -28
- package/postprocessing/BloomPass.cjs.js +1 -0
- package/postprocessing/BloomPass.js +69 -43
- package/postprocessing/BokehPass.cjs.js +1 -0
- package/postprocessing/BokehPass.js +69 -39
- package/postprocessing/ClearPass.cjs.js +1 -0
- package/postprocessing/ClearPass.js +25 -10
- package/postprocessing/CubeTexturePass.cjs.js +1 -0
- package/postprocessing/CubeTexturePass.js +27 -28
- package/postprocessing/DotScreenPass.cjs.js +1 -0
- package/postprocessing/DotScreenPass.js +32 -24
- package/postprocessing/EffectComposer.cjs.js +1 -0
- package/postprocessing/EffectComposer.js +86 -39
- package/postprocessing/FilmPass.cjs.js +1 -0
- package/postprocessing/FilmPass.js +30 -25
- package/postprocessing/GlitchPass.cjs.js +1 -0
- package/postprocessing/GlitchPass.js +61 -38
- package/postprocessing/HalftonePass.cjs.js +1 -0
- package/postprocessing/HalftonePass.js +39 -19
- package/postprocessing/LUTPass.cjs.js +1 -0
- package/postprocessing/LUTPass.js +38 -13
- package/postprocessing/MaskPass.cjs.js +1 -0
- package/postprocessing/MaskPass.js +38 -19
- package/postprocessing/OutlinePass.cjs.js +1 -0
- package/postprocessing/OutlinePass.js +277 -135
- package/postprocessing/Pass.cjs.js +1 -0
- package/postprocessing/Pass.js +44 -20
- package/postprocessing/RenderPass.cjs.js +1 -0
- package/postprocessing/RenderPass.js +36 -13
- package/postprocessing/RenderPixelatedPass.cjs.js +1 -0
- package/postprocessing/RenderPixelatedPass.js +58 -44
- package/postprocessing/SAOPass.cjs.js +1 -0
- package/postprocessing/SAOPass.js +189 -154
- package/postprocessing/SMAAPass.cjs.js +1 -0
- package/postprocessing/SMAAPass.js +84 -64
- package/postprocessing/SSAARenderPass.cjs.js +1 -0
- package/postprocessing/SSAARenderPass.js +69 -121
- package/postprocessing/SSAOPass.cjs.js +1 -0
- package/postprocessing/SSAOPass.js +172 -123
- package/postprocessing/SSRPass.cjs.js +1 -0
- package/postprocessing/SSRPass.js +280 -211
- package/postprocessing/SavePass.cjs.js +1 -0
- package/postprocessing/SavePass.js +25 -20
- package/postprocessing/ShaderPass.cjs.js +1 -0
- package/postprocessing/ShaderPass.js +30 -14
- package/postprocessing/TAARenderPass.cjs.js +1 -0
- package/postprocessing/TAARenderPass.js +61 -42
- package/postprocessing/TexturePass.cjs.js +1 -0
- package/postprocessing/TexturePass.js +22 -21
- package/postprocessing/UnrealBloomPass.cjs.js +1 -0
- package/postprocessing/UnrealBloomPass.js +213 -105
- package/renderers/CSS2DRenderer.cjs.js +1 -0
- package/renderers/CSS2DRenderer.js +56 -44
- package/renderers/CSS3DRenderer.cjs.js +1 -0
- package/renderers/CSS3DRenderer.js +86 -53
- package/renderers/Projector.cjs.js +1 -0
- package/renderers/Projector.js +274 -107
- package/renderers/SVGRenderer.cjs.js +1 -0
- package/renderers/SVGRenderer.js +182 -72
- package/renderers/nodes/accessors/CameraNode.cjs.js +1 -0
- package/renderers/nodes/accessors/CameraNode.js +40 -29
- package/renderers/nodes/accessors/ModelNode.cjs.js +1 -0
- package/renderers/nodes/accessors/ModelNode.js +37 -28
- package/renderers/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
- package/renderers/nodes/accessors/ModelViewProjectionNode.js +23 -10
- package/renderers/nodes/accessors/NormalNode.cjs.js +1 -0
- package/renderers/nodes/accessors/NormalNode.js +45 -35
- package/renderers/nodes/accessors/PositionNode.cjs.js +1 -0
- package/renderers/nodes/accessors/PositionNode.js +19 -18
- package/renderers/nodes/accessors/UVNode.cjs.js +1 -0
- package/renderers/nodes/accessors/UVNode.js +10 -5
- package/renderers/nodes/core/AttributeNode.cjs.js +1 -0
- package/renderers/nodes/core/AttributeNode.js +14 -5
- package/renderers/nodes/core/InputNode.cjs.js +1 -0
- package/renderers/nodes/core/InputNode.js +14 -4
- package/renderers/nodes/core/Node.cjs.js +1 -0
- package/renderers/nodes/core/Node.js +17 -7
- package/renderers/nodes/core/NodeAttribute.cjs.js +1 -0
- package/renderers/nodes/core/NodeAttribute.js +6 -3
- package/renderers/nodes/core/NodeBuilder.cjs.js +1 -0
- package/renderers/nodes/core/NodeBuilder.js +154 -87
- package/renderers/nodes/core/NodeFrame.cjs.js +1 -0
- package/renderers/nodes/core/NodeFrame.js +12 -9
- package/renderers/nodes/core/NodeSlot.cjs.js +1 -0
- package/renderers/nodes/core/NodeSlot.js +3 -2
- package/renderers/nodes/core/NodeUniform.cjs.js +1 -0
- package/renderers/nodes/core/NodeUniform.js +9 -4
- package/renderers/nodes/core/NodeVary.cjs.js +1 -0
- package/renderers/nodes/core/NodeVary.js +7 -4
- package/renderers/nodes/core/VaryNode.cjs.js +1 -0
- package/renderers/nodes/core/VaryNode.js +12 -6
- package/renderers/nodes/core/constants.cjs.js +1 -0
- package/renderers/nodes/core/constants.js +13 -16
- package/renderers/nodes/inputs/ColorNode.cjs.js +1 -0
- package/renderers/nodes/inputs/ColorNode.js +11 -5
- package/renderers/nodes/inputs/FloatNode.cjs.js +1 -0
- package/renderers/nodes/inputs/FloatNode.js +11 -5
- package/renderers/nodes/inputs/Matrix3Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Matrix3Node.js +13 -7
- package/renderers/nodes/inputs/Matrix4Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Matrix4Node.js +13 -7
- package/renderers/nodes/inputs/TextureNode.cjs.js +1 -0
- package/renderers/nodes/inputs/TextureNode.js +15 -7
- package/renderers/nodes/inputs/Vector2Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Vector2Node.js +11 -5
- package/renderers/nodes/inputs/Vector3Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Vector3Node.js +13 -7
- package/renderers/nodes/inputs/Vector4Node.cjs.js +1 -0
- package/renderers/nodes/inputs/Vector4Node.js +13 -7
- package/renderers/nodes/math/MathNode.cjs.js +1 -0
- package/renderers/nodes/math/MathNode.js +30 -20
- package/renderers/nodes/math/OperatorNode.cjs.js +1 -0
- package/renderers/nodes/math/OperatorNode.js +20 -4
- package/renderers/nodes/utils/SwitchNode.cjs.js +1 -0
- package/renderers/nodes/utils/SwitchNode.js +9 -4
- package/renderers/nodes/utils/TimerNode.cjs.js +1 -0
- package/renderers/nodes/utils/TimerNode.js +10 -5
- package/renderers/webgpu/WebGPU.cjs.js +1 -0
- package/renderers/webgpu/WebGPU.js +16 -14
- package/renderers/webgpu/WebGPUAttributes.cjs.js +1 -0
- package/renderers/webgpu/WebGPUAttributes.js +23 -16
- package/renderers/webgpu/WebGPUBackground.cjs.js +1 -0
- package/renderers/webgpu/WebGPUBackground.js +30 -13
- package/renderers/webgpu/WebGPUBinding.cjs.js +1 -0
- package/renderers/webgpu/WebGPUBinding.js +7 -4
- package/renderers/webgpu/WebGPUBindings.cjs.js +1 -0
- package/renderers/webgpu/WebGPUBindings.js +57 -21
- package/renderers/webgpu/WebGPUComputePipelines.cjs.js +1 -0
- package/renderers/webgpu/WebGPUComputePipelines.js +25 -14
- package/renderers/webgpu/WebGPUGeometries.cjs.js +1 -0
- package/renderers/webgpu/WebGPUGeometries.js +15 -5
- package/renderers/webgpu/WebGPUInfo.cjs.js +1 -0
- package/renderers/webgpu/WebGPUInfo.js +8 -3
- package/renderers/webgpu/WebGPUObjects.cjs.js +1 -0
- package/renderers/webgpu/WebGPUObjects.js +10 -5
- package/renderers/webgpu/WebGPUProperties.cjs.js +1 -0
- package/renderers/webgpu/WebGPUProperties.js +11 -5
- package/renderers/webgpu/WebGPURenderLists.cjs.js +1 -0
- package/renderers/webgpu/WebGPURenderLists.js +36 -20
- package/renderers/webgpu/WebGPURenderPipelines.cjs.js +1 -0
- package/renderers/webgpu/WebGPURenderPipelines.js +387 -260
- package/renderers/webgpu/WebGPURenderer.cjs.js +1 -0
- package/renderers/webgpu/WebGPURenderer.js +262 -124
- package/renderers/webgpu/WebGPUSampledTexture.cjs.js +1 -0
- package/renderers/webgpu/WebGPUSampledTexture.js +31 -18
- package/renderers/webgpu/WebGPUSampler.cjs.js +1 -0
- package/renderers/webgpu/WebGPUSampler.js +12 -7
- package/renderers/webgpu/WebGPUStorageBuffer.cjs.js +1 -0
- package/renderers/webgpu/WebGPUStorageBuffer.js +12 -7
- package/renderers/webgpu/WebGPUTextureRenderer.cjs.js +1 -0
- package/renderers/webgpu/WebGPUTextureRenderer.js +11 -5
- package/renderers/webgpu/WebGPUTextureUtils.cjs.js +1 -0
- package/renderers/webgpu/WebGPUTextureUtils.js +40 -29
- package/renderers/webgpu/WebGPUTextures.cjs.js +1 -0
- package/renderers/webgpu/WebGPUTextures.js +333 -186
- package/renderers/webgpu/WebGPUUniform.cjs.js +1 -0
- package/renderers/webgpu/WebGPUUniform.js +51 -25
- package/renderers/webgpu/WebGPUUniformsGroup.cjs.js +1 -0
- package/renderers/webgpu/WebGPUUniformsGroup.js +72 -32
- package/renderers/webgpu/constants.cjs.js +1 -0
- package/renderers/webgpu/constants.js +181 -190
- package/renderers/webgpu/nodes/ShaderLib.cjs.js +1 -0
- package/renderers/webgpu/nodes/ShaderLib.js +2 -2
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.js +124 -53
- package/renderers/webgpu/nodes/WebGPUNodeUniform.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniform.js +31 -17
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +9 -8
- package/renderers/webgpu/nodes/WebGPUNodes.cjs.js +1 -0
- package/renderers/webgpu/nodes/WebGPUNodes.js +45 -7
- package/shaders/ACESFilmicToneMappingShader.cjs.js +1 -0
- package/shaders/ACESFilmicToneMappingShader.js +24 -44
- package/shaders/AfterimageShader.cjs.js +1 -0
- package/shaders/AfterimageShader.js +18 -28
- package/shaders/BasicShader.cjs.js +1 -0
- package/shaders/BasicShader.js +7 -9
- package/shaders/BleachBypassShader.cjs.js +1 -0
- package/shaders/BleachBypassShader.js +15 -31
- package/shaders/BlendShader.cjs.js +1 -0
- package/shaders/BlendShader.js +19 -26
- package/shaders/BokehShader.cjs.js +1 -0
- package/shaders/BokehShader.js +36 -98
- package/shaders/BokehShader2.cjs.js +1 -0
- package/shaders/BokehShader2.js +90 -261
- package/shaders/BrightnessContrastShader.cjs.js +1 -0
- package/shaders/BrightnessContrastShader.js +19 -28
- package/shaders/ColorCorrectionShader.cjs.js +1 -0
- package/shaders/ColorCorrectionShader.js +22 -26
- package/shaders/ColorifyShader.cjs.js +1 -0
- package/shaders/ColorifyShader.js +16 -24
- package/shaders/ConvolutionShader.cjs.js +1 -0
- package/shaders/ConvolutionShader.js +36 -40
- package/shaders/CopyShader.cjs.js +1 -0
- package/shaders/CopyShader.js +13 -21
- package/shaders/DOFMipMapShader.cjs.js +1 -0
- package/shaders/DOFMipMapShader.js +21 -28
- package/shaders/DepthLimitedBlurShader.cjs.js +1 -0
- package/shaders/DepthLimitedBlurShader.js +40 -85
- package/shaders/DigitalGlitch.cjs.js +1 -0
- package/shaders/DigitalGlitch.js +46 -74
- package/shaders/DotScreenShader.cjs.js +1 -0
- package/shaders/DotScreenShader.js +27 -35
- package/shaders/FXAAShader.cjs.js +1 -0
- package/shaders/FXAAShader.js +19 -1094
- package/shaders/FilmShader.cjs.js +1 -0
- package/shaders/FilmShader.js +52 -38
- package/shaders/FocusShader.cjs.js +1 -0
- package/shaders/FocusShader.js +24 -51
- package/shaders/FreiChenShader.cjs.js +1 -0
- package/shaders/FreiChenShader.js +24 -57
- package/shaders/FresnelShader.cjs.js +1 -0
- package/shaders/FresnelShader.js +22 -43
- package/shaders/GammaCorrectionShader.cjs.js +1 -0
- package/shaders/GammaCorrectionShader.js +11 -19
- package/shaders/GodRaysShader.cjs.js +1 -0
- package/shaders/GodRaysShader.js +94 -103
- package/shaders/HalftoneShader.cjs.js +1 -0
- package/shaders/HalftoneShader.js +65 -208
- package/shaders/HorizontalBlurShader.cjs.js +1 -0
- package/shaders/HorizontalBlurShader.js +23 -7
- package/shaders/HorizontalTiltShiftShader.cjs.js +1 -0
- package/shaders/HorizontalTiltShiftShader.js +21 -33
- package/shaders/HueSaturationShader.cjs.js +1 -0
- package/shaders/HueSaturationShader.js +21 -37
- package/shaders/KaleidoShader.cjs.js +1 -0
- package/shaders/KaleidoShader.js +22 -30
- package/shaders/LuminosityHighPassShader.cjs.js +1 -0
- package/shaders/LuminosityHighPassShader.js +27 -33
- package/shaders/LuminosityShader.cjs.js +1 -0
- package/shaders/LuminosityShader.js +11 -21
- package/shaders/MirrorShader.cjs.js +1 -0
- package/shaders/MirrorShader.js +16 -31
- package/shaders/NormalMapShader.cjs.js +1 -0
- package/shaders/NormalMapShader.js +23 -27
- package/shaders/ParallaxShader.cjs.js +1 -0
- package/shaders/ParallaxShader.js +48 -107
- package/shaders/PixelShader.cjs.js +1 -0
- package/shaders/PixelShader.js +16 -24
- package/shaders/RGBShiftShader.cjs.js +1 -0
- package/shaders/RGBShiftShader.js +22 -26
- package/shaders/SAOShader.cjs.js +1 -0
- package/shaders/SAOShader.js +48 -132
- package/shaders/SMAAShader.cjs.js +1 -0
- package/shaders/SMAAShader.js +135 -256
- package/shaders/SSAOShader.cjs.js +1 -0
- package/shaders/SSAOShader.js +81 -153
- package/shaders/SSRShader.cjs.js +1 -0
- package/shaders/SSRShader.js +87 -32
- package/shaders/SepiaShader.cjs.js +1 -0
- package/shaders/SepiaShader.js +15 -25
- package/shaders/SobelOperatorShader.cjs.js +1 -0
- package/shaders/SobelOperatorShader.js +29 -40
- package/shaders/SubsurfaceScatteringShader.cjs.js +1 -0
- package/shaders/SubsurfaceScatteringShader.js +39 -53
- package/shaders/TechnicolorShader.cjs.js +1 -0
- package/shaders/TechnicolorShader.js +13 -20
- package/shaders/ToneMapShader.cjs.js +1 -0
- package/shaders/ToneMapShader.js +28 -44
- package/shaders/ToonShader.cjs.js +1 -0
- package/shaders/ToonShader.js +96 -172
- package/shaders/TriangleBlurShader.cjs.js +1 -0
- package/shaders/TriangleBlurShader.js +23 -32
- package/shaders/UnpackDepthRGBAShader.cjs.js +1 -0
- package/shaders/UnpackDepthRGBAShader.js +14 -22
- package/shaders/VerticalBlurShader.cjs.js +1 -0
- package/shaders/VerticalBlurShader.js +23 -7
- package/shaders/VerticalTiltShiftShader.cjs.js +1 -0
- package/shaders/VerticalTiltShiftShader.js +21 -33
- package/shaders/VignetteShader.cjs.js +1 -0
- package/shaders/VignetteShader.js +28 -24
- package/shaders/VolumeShader.cjs.js +1 -0
- package/shaders/VolumeShader.js +77 -174
- package/shaders/WaterRefractionShader.cjs.js +1 -0
- package/shaders/WaterRefractionShader.js +6 -38
- package/shaders/types.cjs.js +1 -0
- package/shaders/types.js +1 -1
- package/textures/FlakesTexture.cjs.js +1 -0
- package/textures/FlakesTexture.js +10 -8
- package/types/helpers.cjs.js +1 -0
- package/types/helpers.js +2 -3
- package/types/shared.cjs.js +1 -0
- package/types/shared.js +1 -0
- package/types/utils.cjs.js +1 -0
- package/types/utils.js +1 -0
- package/utils/BufferGeometryUtils.cjs.js +1 -0
- package/utils/BufferGeometryUtils.js +325 -251
- package/utils/GeometryCompressionUtils.cjs.js +1 -0
- package/utils/GeometryCompressionUtils.js +239 -241
- package/utils/GeometryUtils.cjs.js +1 -0
- package/utils/GeometryUtils.js +94 -41
- package/utils/LDrawUtils.cjs.js +1 -0
- package/utils/LDrawUtils.d.ts +5 -0
- package/utils/LDrawUtils.js +144 -0
- package/utils/RoughnessMipmapper.cjs.js +1 -0
- package/utils/RoughnessMipmapper.js +82 -38
- package/utils/SceneUtils.cjs.js +1 -0
- package/utils/SceneUtils.js +20 -15
- package/utils/ShadowMapViewer.cjs.js +1 -0
- package/utils/ShadowMapViewer.js +95 -49
- package/utils/SkeletonUtils.cjs.js +1 -0
- package/utils/SkeletonUtils.js +165 -74
- package/utils/UVsDebug.cjs.js +1 -0
- package/utils/UVsDebug.js +62 -32
- package/utils/WorkerPool.cjs.js +1 -0
- package/utils/WorkerPool.js +33 -13
- package/webxr/ARButton.cjs.js +1 -0
- package/webxr/ARButton.js +98 -72
- package/webxr/OculusHandModel.cjs.js +1 -0
- package/webxr/OculusHandModel.js +37 -18
- package/webxr/OculusHandPointerModel.cjs.js +1 -0
- package/webxr/OculusHandPointerModel.js +80 -58
- package/webxr/Text2D.cjs.js +1 -0
- package/webxr/Text2D.js +19 -37
- package/webxr/VRButton.cjs.js +1 -0
- package/webxr/VRButton.js +90 -59
- package/webxr/XRControllerModelFactory.cjs.js +1 -0
- package/webxr/XRControllerModelFactory.js +116 -58
- package/webxr/XREstimatedLight.cjs.js +1 -0
- package/webxr/XREstimatedLight.js +66 -39
- package/webxr/XRHandMeshModel.cjs.js +1 -0
- package/webxr/XRHandMeshModel.js +29 -40
- package/webxr/XRHandModelFactory.cjs.js +1 -0
- package/webxr/XRHandModelFactory.js +31 -28
- package/webxr/XRHandPrimitiveModel.cjs.js +1 -0
- package/webxr/XRHandPrimitiveModel.js +27 -41
- package/animation/AnimationClipCreator.mjs +0 -57
- package/animation/CCDIKSolver.mjs +0 -223
- package/animation/MMDAnimationHelper.mjs +0 -514
- package/animation/MMDPhysics.mjs +0 -769
- package/cameras/CinematicCamera.mjs +0 -129
- package/controls/ArcballControls.mjs +0 -1737
- package/controls/DeviceOrientationControls.mjs +0 -74
- package/controls/DragControls.mjs +0 -172
- package/controls/FirstPersonControls.mjs +0 -220
- package/controls/FlyControls.mjs +0 -239
- package/controls/OrbitControls.mjs +0 -731
- package/controls/PointerLockControls.mjs +0 -88
- package/controls/TrackballControls.mjs +0 -481
- package/controls/TransformControls.mjs +0 -1068
- package/controls/experimental/CameraControls.mjs +0 -673
- package/csm/CSM.mjs +0 -244
- package/csm/CSMFrustum.mjs +0 -75
- package/csm/CSMHelper.mjs +0 -114
- package/csm/CSMShader.mjs +0 -251
- package/curves/CurveExtras.mjs +0 -224
- package/curves/NURBSCurve.mjs +0 -35
- package/curves/NURBSSurface.mjs +0 -28
- package/curves/NURBSUtils.mjs +0 -226
- package/deprecated/Geometry.mjs +0 -966
- package/effects/AnaglyphEffect.mjs +0 -120
- package/effects/AsciiEffect.mjs +0 -173
- package/effects/OutlineEffect.mjs +0 -295
- package/effects/ParallaxBarrierEffect.mjs +0 -64
- package/effects/PeppersGhostEffect.mjs +0 -85
- package/effects/StereoEffect.mjs +0 -32
- package/environments/RoomEnvironment.mjs +0 -78
- package/exporters/ColladaExporter.mjs +0 -299
- package/exporters/DRACOExporter.mjs +0 -132
- package/exporters/GLTFExporter.mjs +0 -1381
- package/exporters/MMDExporter.mjs +0 -102
- package/exporters/OBJExporter.mjs +0 -166
- package/exporters/PLYExporter.mjs +0 -278
- package/exporters/STLExporter.mjs +0 -129
- package/exporters/USDZExporter.mjs +0 -328
- package/geometries/BoxLineGeometry.mjs +0 -45
- package/geometries/ConvexGeometry.mjs +0 -29
- package/geometries/DecalGeometry.mjs +0 -184
- package/geometries/LightningStrike.mjs +0 -547
- package/geometries/ParametricGeometries.mjs +0 -129
- package/geometries/ParametricGeometry.mjs +0 -63
- package/geometries/RoundedBoxGeometry.mjs +0 -91
- package/geometries/TeapotGeometry.mjs +0 -1557
- package/geometries/TextGeometry.mjs +0 -23
- package/helpers/LightProbeHelper.mjs +0 -72
- package/helpers/PositionalAudioHelper.mjs +0 -68
- package/helpers/RectAreaLightHelper.mjs +0 -44
- package/helpers/VertexNormalsHelper.mjs +0 -54
- package/helpers/VertexTangentsHelper.mjs +0 -45
- package/index.mjs +0 -969
- package/interactive/SelectionBox.mjs +0 -137
- package/interactive/SelectionHelper.mjs +0 -54
- package/libs/MeshoptDecoder.mjs +0 -210
- package/libs/MotionControllers.mjs +0 -261
- package/lights/LightProbeGenerator.mjs +0 -145
- package/lights/RectAreaLightUniformsLib.mjs +0 -32842
- package/lines/Line2.mjs +0 -13
- package/lines/LineGeometry.mjs +0 -44
- package/lines/LineMaterial.mjs +0 -539
- package/lines/LineSegments2.mjs +0 -202
- package/lines/LineSegmentsGeometry.mjs +0 -124
- package/lines/Wireframe.mjs +0 -31
- package/lines/WireframeGeometry2.mjs +0 -13
- package/loaders/3DMLoader.mjs +0 -802
- package/loaders/3MFLoader.mjs +0 -837
- package/loaders/AMFLoader.mjs +0 -284
- package/loaders/AssimpLoader.mjs +0 -1396
- package/loaders/BVHLoader.mjs +0 -207
- package/loaders/BasisTextureLoader.mjs +0 -474
- package/loaders/ColladaLoader.mjs +0 -2403
- package/loaders/DDSLoader.mjs +0 -148
- package/loaders/DRACOLoader.mjs +0 -340
- package/loaders/EXRLoader.mjs +0 -1351
- package/loaders/FBXLoader.mjs +0 -2362
- package/loaders/FontLoader.mjs +0 -111
- package/loaders/GCodeLoader.mjs +0 -141
- package/loaders/GLTFLoader.mjs +0 -2316
- package/loaders/HDRCubeTextureLoader.mjs +0 -77
- package/loaders/KMZLoader.mjs +0 -75
- package/loaders/KTX2Loader.mjs +0 -427
- package/loaders/KTXLoader.mjs +0 -87
- package/loaders/LDrawLoader.mjs +0 -1409
- package/loaders/LUT3dlLoader.mjs +0 -100
- package/loaders/LUTCubeLoader.mjs +0 -104
- package/loaders/LWOLoader.mjs +0 -625
- package/loaders/LottieLoader.mjs +0 -47
- package/loaders/MD2Loader.mjs +0 -359
- package/loaders/MDDLoader.mjs +0 -58
- package/loaders/MMDLoader.mjs +0 -998
- package/loaders/MTLLoader.mjs +0 -280
- package/loaders/NRRDLoader.mjs +0 -401
- package/loaders/NodeMaterialLoader.mjs +0 -146
- package/loaders/OBJLoader.mjs +0 -487
- package/loaders/PCDLoader.mjs +0 -248
- package/loaders/PDBLoader.mjs +0 -246
- package/loaders/PLYLoader.mjs +0 -317
- package/loaders/PRWMLoader.mjs +0 -160
- package/loaders/PVRLoader.mjs +0 -131
- package/loaders/RGBELoader.mjs +0 -244
- package/loaders/RGBMLoader.mjs +0 -998
- package/loaders/STLLoader.mjs +0 -190
- package/loaders/SVGLoader.mjs +0 -1709
- package/loaders/TDSLoader.mjs +0 -480
- package/loaders/TGALoader.mjs +0 -285
- package/loaders/TTFLoader.mjs +0 -131
- package/loaders/TiltLoader.mjs +0 -373
- package/loaders/VOXLoader.mjs +0 -431
- package/loaders/VRMLLoader.mjs +0 -2093
- package/loaders/VRMLoader.mjs +0 -38
- package/loaders/VTKLoader.mjs +0 -646
- package/loaders/XLoader.mjs +0 -1258
- package/loaders/XYZLoader.mjs +0 -60
- package/loaders/lwo/IFFParser.mjs +0 -697
- package/loaders/lwo/LWO2Parser.mjs +0 -327
- package/loaders/lwo/LWO3Parser.mjs +0 -298
- package/math/Capsule.mjs +0 -100
- package/math/ColorConverter.mjs +0 -51
- package/math/ConvexHull.mjs +0 -574
- package/math/ImprovedNoise.mjs +0 -302
- package/math/Lut.mjs +0 -135
- package/math/MeshSurfaceSampler.mjs +0 -107
- package/math/OBB.mjs +0 -235
- package/math/Octree.mjs +0 -278
- package/math/SimplexNoise.mjs +0 -425
- package/misc/ConvexObjectBreaker.mjs +0 -292
- package/misc/GPUComputationRenderer.mjs +0 -171
- package/misc/Gyroscope.mjs +0 -35
- package/misc/MD2Character.mjs +0 -162
- package/misc/MD2CharacterComplex.mjs +0 -328
- package/misc/MorphAnimMesh.mjs +0 -40
- package/misc/MorphBlendMesh.mjs +0 -179
- package/misc/ProgressiveLightmap.mjs +0 -166
- package/misc/RollerCoaster.mjs +0 -346
- package/misc/TubePainter.mjs +0 -123
- package/misc/Volume.mjs +0 -244
- package/misc/VolumeSlice.mjs +0 -106
- package/misc/WebGL.mjs +0 -74
- package/modifiers/CurveModifier.mjs +0 -182
- package/modifiers/EdgeSplitModifier.mjs +0 -162
- package/modifiers/SimplifyModifier.mjs +0 -282
- package/modifiers/TessellateModifier.mjs +0 -206
- package/nodes/Nodes.mjs +0 -400
- package/nodes/ShaderNode.mjs +0 -408
- package/nodes/accessors/BufferNode.mjs +0 -15
- package/nodes/accessors/CameraNode.mjs +0 -44
- package/nodes/accessors/CubeTextureNode.mjs +0 -42
- package/nodes/accessors/MaterialNode.mjs +0 -71
- package/nodes/accessors/MaterialReferenceNode.mjs +0 -14
- package/nodes/accessors/ModelNode.mjs +0 -9
- package/nodes/accessors/ModelViewProjectionNode.mjs +0 -24
- package/nodes/accessors/NormalNode.mjs +0 -62
- package/nodes/accessors/Object3DNode.mjs +0 -76
- package/nodes/accessors/PointUVNode.mjs +0 -13
- package/nodes/accessors/PositionNode.mjs +0 -65
- package/nodes/accessors/ReferenceNode.mjs +0 -37
- package/nodes/accessors/ReflectNode.mjs +0 -43
- package/nodes/accessors/SkinningNode.mjs +0 -58
- package/nodes/accessors/TextureNode.mjs +0 -54
- package/nodes/accessors/UVNode.mjs +0 -23
- package/nodes/core/ArrayUniformNode.mjs +0 -14
- package/nodes/core/AttributeNode.mjs +0 -30
- package/nodes/core/BypassNode.mjs +0 -22
- package/nodes/core/CodeNode.mjs +0 -28
- package/nodes/core/ConstNode.mjs +0 -14
- package/nodes/core/ContextNode.mjs +0 -22
- package/nodes/core/ExpressionNode.mjs +0 -19
- package/nodes/core/FunctionCallNode.mjs +0 -37
- package/nodes/core/FunctionNode.mjs +0 -56
- package/nodes/core/InputNode.mjs +0 -38
- package/nodes/core/Node.mjs +0 -139
- package/nodes/core/NodeAttribute.mjs +0 -10
- package/nodes/core/NodeBuilder.mjs +0 -395
- package/nodes/core/NodeCode.mjs +0 -11
- package/nodes/core/NodeFrame.mjs +0 -35
- package/nodes/core/NodeFunctionInput.mjs +0 -13
- package/nodes/core/NodeKeywords.mjs +0 -44
- package/nodes/core/NodeUniform.mjs +0 -18
- package/nodes/core/NodeUtils.mjs +0 -57
- package/nodes/core/NodeVar.mjs +0 -10
- package/nodes/core/NodeVary.mjs +0 -10
- package/nodes/core/PropertyNode.mjs +0 -21
- package/nodes/core/TempNode.mjs +0 -25
- package/nodes/core/UniformNode.mjs +0 -23
- package/nodes/core/VarNode.mjs +0 -31
- package/nodes/core/VaryNode.mjs +0 -30
- package/nodes/core/constants.mjs +0 -24
- package/nodes/display/ColorSpaceNode.mjs +0 -63
- package/nodes/display/NormalMapNode.mjs +0 -54
- package/nodes/fog/FogNode.mjs +0 -15
- package/nodes/fog/FogRangeNode.mjs +0 -17
- package/nodes/functions/BSDFs.mjs +0 -64
- package/nodes/lights/LightContextNode.mjs +0 -35
- package/nodes/lights/LightNode.mjs +0 -58
- package/nodes/lights/LightsNode.mjs +0 -59
- package/nodes/loaders/NodeLoader.mjs +0 -66
- package/nodes/loaders/NodeMaterialLoader.mjs +0 -24
- package/nodes/loaders/NodeObjectLoader.mjs +0 -40
- package/nodes/materials/LineBasicNodeMaterial.mjs +0 -27
- package/nodes/materials/Materials.mjs +0 -28
- package/nodes/materials/MeshBasicNodeMaterial.mjs +0 -28
- package/nodes/materials/MeshStandardNodeMaterial.mjs +0 -41
- package/nodes/materials/NodeMaterial.mjs +0 -64
- package/nodes/materials/PointsNodeMaterial.mjs +0 -30
- package/nodes/math/CondNode.mjs +0 -38
- package/nodes/math/MathNode.mjs +0 -163
- package/nodes/math/OperatorNode.mjs +0 -103
- package/nodes/procedural/CheckerNode.mjs +0 -21
- package/nodes/utils/ArrayElementNode.mjs +0 -19
- package/nodes/utils/ConvertNode.mjs +0 -25
- package/nodes/utils/JoinNode.mjs +0 -26
- package/nodes/utils/MatcapUVNode.mjs +0 -16
- package/nodes/utils/OscNode.mjs +0 -50
- package/nodes/utils/SplitNode.mjs +0 -45
- package/nodes/utils/SpriteSheetUVNode.mjs +0 -40
- package/nodes/utils/TimerNode.mjs +0 -44
- package/objects/GroundProjectedEnv.mjs +0 -130
- package/objects/Lensflare.mjs +0 -262
- package/objects/LightningStorm.mjs +0 -110
- package/objects/MarchingCubes.mjs +0 -457
- package/objects/Reflector.mjs +0 -166
- package/objects/ReflectorForSSRPass.mjs +0 -247
- package/objects/ReflectorRTT.mjs +0 -10
- package/objects/Refractor.mjs +0 -178
- package/objects/ShadowMesh.mjs +0 -41
- package/objects/Sky.mjs +0 -124
- package/objects/Water.mjs +0 -235
- package/objects/Water2.mjs +0 -252
- package/offscreen/jank.mjs +0 -27
- package/offscreen/offscreen.mjs +0 -5
- package/offscreen/scene.mjs +0 -52
- package/physics/AmmoPhysics.mjs +0 -165
- package/postprocessing/AdaptiveToneMappingPass.mjs +0 -221
- package/postprocessing/AfterimagePass.mjs +0 -55
- package/postprocessing/BloomPass.mjs +0 -90
- package/postprocessing/BokehPass.mjs +0 -76
- package/postprocessing/ClearPass.mjs +0 -27
- package/postprocessing/CubeTexturePass.mjs +0 -49
- package/postprocessing/DotScreenPass.mjs +0 -40
- package/postprocessing/EffectComposer.mjs +0 -139
- package/postprocessing/FilmPass.mjs +0 -42
- package/postprocessing/GlitchPass.mjs +0 -75
- package/postprocessing/HalftonePass.mjs +0 -44
- package/postprocessing/LUTPass.mjs +0 -136
- package/postprocessing/MaskPass.mjs +0 -60
- package/postprocessing/OutlinePass.mjs +0 -438
- package/postprocessing/Pass.mjs +0 -37
- package/postprocessing/RenderPass.mjs +0 -48
- package/postprocessing/RenderPixelatedPass.mjs +0 -199
- package/postprocessing/SAOPass.mjs +0 -282
- package/postprocessing/SMAAPass.mjs +0 -112
- package/postprocessing/SSAARenderPass.mjs +0 -170
- package/postprocessing/SSAOPass.mjs +0 -265
- package/postprocessing/SSRPass.mjs +0 -432
- package/postprocessing/SavePass.mjs +0 -37
- package/postprocessing/ShaderPass.mjs +0 -39
- package/postprocessing/TAARenderPass.mjs +0 -88
- package/postprocessing/TexturePass.mjs +0 -39
- package/postprocessing/UnrealBloomPass.mjs +0 -220
- package/renderers/CSS2DRenderer.mjs +0 -112
- package/renderers/CSS3DRenderer.mjs +0 -133
- package/renderers/Projector.mjs +0 -511
- package/renderers/SVGRenderer.mjs +0 -306
- package/renderers/nodes/accessors/CameraNode.mjs +0 -63
- package/renderers/nodes/accessors/ModelNode.mjs +0 -61
- package/renderers/nodes/accessors/ModelViewProjectionNode.mjs +0 -21
- package/renderers/nodes/accessors/NormalNode.mjs +0 -61
- package/renderers/nodes/accessors/PositionNode.mjs +0 -30
- package/renderers/nodes/accessors/UVNode.mjs +0 -13
- package/renderers/nodes/core/AttributeNode.mjs +0 -35
- package/renderers/nodes/core/InputNode.mjs +0 -31
- package/renderers/nodes/core/Node.mjs +0 -34
- package/renderers/nodes/core/NodeAttribute.mjs +0 -10
- package/renderers/nodes/core/NodeBuilder.mjs +0 -243
- package/renderers/nodes/core/NodeFrame.mjs +0 -35
- package/renderers/nodes/core/NodeSlot.mjs +0 -10
- package/renderers/nodes/core/NodeUniform.mjs +0 -18
- package/renderers/nodes/core/NodeVary.mjs +0 -11
- package/renderers/nodes/core/VaryNode.mjs +0 -22
- package/renderers/nodes/core/constants.mjs +0 -22
- package/renderers/nodes/inputs/ColorNode.mjs +0 -11
- package/renderers/nodes/inputs/FloatNode.mjs +0 -11
- package/renderers/nodes/inputs/Matrix3Node.mjs +0 -12
- package/renderers/nodes/inputs/Matrix4Node.mjs +0 -12
- package/renderers/nodes/inputs/TextureNode.mjs +0 -20
- package/renderers/nodes/inputs/Vector2Node.mjs +0 -11
- package/renderers/nodes/inputs/Vector3Node.mjs +0 -12
- package/renderers/nodes/inputs/Vector4Node.mjs +0 -12
- package/renderers/nodes/math/MathNode.mjs +0 -55
- package/renderers/nodes/math/OperatorNode.mjs +0 -42
- package/renderers/nodes/utils/SwitchNode.mjs +0 -20
- package/renderers/nodes/utils/TimerNode.mjs +0 -14
- package/renderers/webgpu/WebGPU.mjs +0 -24
- package/renderers/webgpu/WebGPUAttributes.mjs +0 -69
- package/renderers/webgpu/WebGPUBackground.mjs +0 -61
- package/renderers/webgpu/WebGPUBinding.mjs +0 -14
- package/renderers/webgpu/WebGPUBindings.mjs +0 -155
- package/renderers/webgpu/WebGPUComputePipelines.mjs +0 -44
- package/renderers/webgpu/WebGPUGeometries.mjs +0 -41
- package/renderers/webgpu/WebGPUInfo.mjs +0 -46
- package/renderers/webgpu/WebGPUObjects.mjs +0 -25
- package/renderers/webgpu/WebGPUProperties.mjs +0 -22
- package/renderers/webgpu/WebGPURenderLists.mjs +0 -119
- package/renderers/webgpu/WebGPURenderPipelines.mjs +0 -545
- package/renderers/webgpu/WebGPURenderer.mjs +0 -574
- package/renderers/webgpu/WebGPUSampledTexture.mjs +0 -40
- package/renderers/webgpu/WebGPUSampler.mjs +0 -15
- package/renderers/webgpu/WebGPUStorageBuffer.mjs +0 -15
- package/renderers/webgpu/WebGPUTextureRenderer.mjs +0 -23
- package/renderers/webgpu/WebGPUTextureUtils.mjs +0 -98
- package/renderers/webgpu/WebGPUTextures.mjs +0 -484
- package/renderers/webgpu/WebGPUUniform.mjs +0 -81
- package/renderers/webgpu/WebGPUUniformsGroup.mjs +0 -176
- package/renderers/webgpu/constants.mjs +0 -230
- package/renderers/webgpu/nodes/ShaderLib.mjs +0 -42
- package/renderers/webgpu/nodes/WebGPUNodeBuilder.mjs +0 -165
- package/renderers/webgpu/nodes/WebGPUNodeUniform.mjs +0 -73
- package/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.mjs +0 -15
- package/renderers/webgpu/nodes/WebGPUNodes.mjs +0 -40
- package/shaders/ACESFilmicToneMappingShader.mjs +0 -48
- package/shaders/AfterimageShader.mjs +0 -32
- package/shaders/BasicShader.mjs +0 -12
- package/shaders/BleachBypassShader.mjs +0 -35
- package/shaders/BlendShader.mjs +0 -30
- package/shaders/BokehShader.mjs +0 -106
- package/shaders/BokehShader2.mjs +0 -269
- package/shaders/BrightnessContrastShader.mjs +0 -32
- package/shaders/ColorCorrectionShader.mjs +0 -30
- package/shaders/ColorifyShader.mjs +0 -28
- package/shaders/ConvolutionShader.mjs +0 -55
- package/shaders/CopyShader.mjs +0 -25
- package/shaders/DOFMipMapShader.mjs +0 -32
- package/shaders/DepthLimitedBlurShader.mjs +0 -114
- package/shaders/DigitalGlitch.mjs +0 -78
- package/shaders/DotScreenShader.mjs +0 -39
- package/shaders/FXAAShader.mjs +0 -1098
- package/shaders/FilmShader.mjs +0 -42
- package/shaders/FocusShader.mjs +0 -55
- package/shaders/FreiChenShader.mjs +0 -61
- package/shaders/FresnelShader.mjs +0 -47
- package/shaders/GammaCorrectionShader.mjs +0 -23
- package/shaders/GodRaysShader.mjs +0 -146
- package/shaders/HalftoneShader.mjs +0 -212
- package/shaders/HorizontalBlurShader.mjs +0 -43
- package/shaders/HorizontalTiltShiftShader.mjs +0 -37
- package/shaders/HueSaturationShader.mjs +0 -41
- package/shaders/KaleidoShader.mjs +0 -34
- package/shaders/LuminosityHighPassShader.mjs +0 -37
- package/shaders/LuminosityShader.mjs +0 -25
- package/shaders/MirrorShader.mjs +0 -35
- package/shaders/NormalMapShader.mjs +0 -31
- package/shaders/ParallaxShader.mjs +0 -113
- package/shaders/PixelShader.mjs +0 -28
- package/shaders/RGBShiftShader.mjs +0 -30
- package/shaders/SAOShader.mjs +0 -144
- package/shaders/SMAAShader.mjs +0 -272
- package/shaders/SSAOShader.mjs +0 -172
- package/shaders/SSRShader.mjs +0 -324
- package/shaders/SepiaShader.mjs +0 -29
- package/shaders/SobelOperatorShader.mjs +0 -44
- package/shaders/SubsurfaceScatteringShader.mjs +0 -59
- package/shaders/TechnicolorShader.mjs +0 -24
- package/shaders/ToneMapShader.mjs +0 -48
- package/shaders/ToonShader.mjs +0 -188
- package/shaders/TriangleBlurShader.mjs +0 -36
- package/shaders/UnpackDepthRGBAShader.mjs +0 -26
- package/shaders/VerticalBlurShader.mjs +0 -44
- package/shaders/VerticalTiltShiftShader.mjs +0 -37
- package/shaders/VignetteShader.mjs +0 -28
- package/shaders/VolumeShader.mjs +0 -178
- package/shaders/WaterRefractionShader.mjs +0 -57
- package/textures/FlakesTexture.mjs +0 -30
- package/types/helpers.mjs +0 -4
- package/utils/BufferGeometryUtils.mjs +0 -570
- package/utils/GeometryCompressionUtils.mjs +0 -547
- package/utils/GeometryUtils.mjs +0 -108
- package/utils/RoughnessMipmapper.mjs +0 -213
- package/utils/SceneUtils.mjs +0 -36
- package/utils/ShadowMapViewer.mjs +0 -114
- package/utils/SkeletonUtils.mjs +0 -292
- package/utils/UVsDebug.mjs +0 -85
- package/utils/WorkerPool.mjs +0 -62
- package/webxr/ARButton.mjs +0 -119
- package/webxr/OculusHandModel.mjs +0 -71
- package/webxr/OculusHandPointerModel.mjs +0 -207
- package/webxr/Text2D.mjs +0 -31
- package/webxr/VRButton.mjs +0 -105
- package/webxr/XRControllerModelFactory.mjs +0 -146
- package/webxr/XREstimatedLight.mjs +0 -126
- package/webxr/XRHandMeshModel.mjs +0 -73
- package/webxr/XRHandModelFactory.mjs +0 -61
- package/webxr/XRHandPrimitiveModel.mjs +0 -68
package/loaders/lwo/IFFParser.js
CHANGED
@@ -1,213 +1,325 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
import { LoaderUtils } from 'three';
|
2
|
+
import { LWO2Parser } from './LWO2Parser.js';
|
3
|
+
import { LWO3Parser } from './LWO3Parser.js';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* === IFFParser ===
|
7
|
+
* - Parses data from the IFF buffer.
|
8
|
+
* - LWO3 files are in IFF format and can contain the following data types, referred to by shorthand codes
|
9
|
+
*
|
10
|
+
* ATOMIC DATA TYPES
|
11
|
+
* ID Tag - 4x 7 bit uppercase ASCII chars: ID4
|
12
|
+
* signed integer, 1, 2, or 4 byte length: I1, I2, I4
|
13
|
+
* unsigned integer, 1, 2, or 4 byte length: U1, U2, U4
|
14
|
+
* float, 4 byte length: F4
|
15
|
+
* string, series of ASCII chars followed by null byte (If the length of the string including the null terminating byte is odd, an extra null is added so that the data that follows will begin on an even byte boundary): S0
|
16
|
+
*
|
17
|
+
* COMPOUND DATA TYPES
|
18
|
+
* Variable-length Index (index into an array or collection): U2 or U4 : VX
|
19
|
+
* Color (RGB): F4 + F4 + F4: COL12
|
20
|
+
* Coordinate (x, y, z): F4 + F4 + F4: VEC12
|
21
|
+
* Percentage F4 data type from 0->1 with 1 = 100%: FP4
|
22
|
+
* Angle in radian F4: ANG4
|
23
|
+
* Filename (string) S0: FNAM0
|
24
|
+
* XValue F4 + index (VX) + optional envelope( ENVL ): XVAL
|
25
|
+
* XValue vector VEC12 + index (VX) + optional envelope( ENVL ): XVAL3
|
26
|
+
*
|
27
|
+
* The IFF file is arranged in chunks:
|
28
|
+
* CHUNK = ID4 + length (U4) + length X bytes of data + optional 0 pad byte
|
29
|
+
* optional 0 pad byte is there to ensure chunk ends on even boundary, not counted in size
|
30
|
+
*
|
31
|
+
* COMPOUND DATA TYPES
|
32
|
+
* - Chunks are combined in Forms (collections of chunks)
|
33
|
+
* - FORM = string 'FORM' (ID4) + length (U4) + type (ID4) + optional ( CHUNK | FORM )
|
34
|
+
* - CHUNKS and FORMS are collectively referred to as blocks
|
35
|
+
* - The entire file is contained in one top level FORM
|
36
|
+
*
|
37
|
+
**/
|
38
|
+
|
6
39
|
function IFFParser() {
|
7
|
-
this.debugger = new Debugger();
|
40
|
+
this.debugger = new Debugger(); // this.debugger.enable(); // un-comment to log IFF hierarchy.
|
8
41
|
}
|
42
|
+
|
9
43
|
IFFParser.prototype = {
|
10
44
|
constructor: IFFParser,
|
11
|
-
parse: function(buffer) {
|
45
|
+
parse: function (buffer) {
|
12
46
|
this.reader = new DataViewReader(buffer);
|
13
47
|
this.tree = {
|
14
48
|
materials: {},
|
15
49
|
layers: [],
|
16
50
|
tags: [],
|
17
51
|
textures: []
|
18
|
-
};
|
52
|
+
}; // start out at the top level to add any data before first layer is encountered
|
53
|
+
|
19
54
|
this.currentLayer = this.tree;
|
20
55
|
this.currentForm = this.tree;
|
21
56
|
this.parseTopForm();
|
22
|
-
if (this.tree.format ===
|
23
|
-
|
24
|
-
if (this.tree.format ===
|
25
|
-
this.parser = new LWO2Parser
|
26
|
-
|
27
|
-
|
28
|
-
} else if (this.tree.format ===
|
29
|
-
this.parser = new LWO3Parser
|
30
|
-
|
31
|
-
|
57
|
+
if (this.tree.format === undefined) return;
|
58
|
+
|
59
|
+
if (this.tree.format === 'LWO2') {
|
60
|
+
this.parser = new LWO2Parser(this);
|
61
|
+
|
62
|
+
while (!this.reader.endOfFile()) this.parser.parseBlock();
|
63
|
+
} else if (this.tree.format === 'LWO3') {
|
64
|
+
this.parser = new LWO3Parser(this);
|
65
|
+
|
66
|
+
while (!this.reader.endOfFile()) this.parser.parseBlock();
|
32
67
|
}
|
68
|
+
|
33
69
|
this.debugger.offset = this.reader.offset;
|
34
70
|
this.debugger.closeForms();
|
35
71
|
return this.tree;
|
36
72
|
},
|
73
|
+
|
37
74
|
parseTopForm() {
|
38
75
|
this.debugger.offset = this.reader.offset;
|
39
76
|
var topForm = this.reader.getIDTag();
|
40
|
-
|
41
|
-
|
77
|
+
|
78
|
+
if (topForm !== 'FORM') {
|
79
|
+
console.warn('LWOLoader: Top-level FORM missing.');
|
42
80
|
return;
|
43
81
|
}
|
82
|
+
|
44
83
|
var length = this.reader.getUint32();
|
45
84
|
this.debugger.dataOffset = this.reader.offset;
|
46
85
|
this.debugger.length = length;
|
47
86
|
var type = this.reader.getIDTag();
|
48
|
-
|
87
|
+
|
88
|
+
if (type === 'LWO2') {
|
49
89
|
this.tree.format = type;
|
50
|
-
} else if (type ===
|
90
|
+
} else if (type === 'LWO3') {
|
51
91
|
this.tree.format = type;
|
52
92
|
}
|
93
|
+
|
53
94
|
this.debugger.node = 0;
|
54
95
|
this.debugger.nodeID = type;
|
55
96
|
this.debugger.log();
|
56
97
|
return;
|
57
98
|
},
|
99
|
+
|
100
|
+
///
|
101
|
+
// FORM PARSING METHODS
|
102
|
+
///
|
103
|
+
// Forms are organisational and can contain any number of sub chunks and sub forms
|
104
|
+
// FORM ::= 'FORM'[ID4], length[U4], type[ID4], ( chunk[CHUNK] | form[FORM] ) * }
|
58
105
|
parseForm(length) {
|
59
106
|
var type = this.reader.getIDTag();
|
107
|
+
|
60
108
|
switch (type) {
|
61
|
-
|
62
|
-
|
63
|
-
case
|
64
|
-
|
65
|
-
case
|
66
|
-
|
67
|
-
case
|
68
|
-
|
69
|
-
case
|
70
|
-
case
|
71
|
-
case
|
72
|
-
case
|
73
|
-
|
74
|
-
case
|
75
|
-
|
76
|
-
case
|
77
|
-
case
|
78
|
-
case
|
79
|
-
case
|
80
|
-
|
81
|
-
case
|
109
|
+
// SKIPPED FORMS
|
110
|
+
// if skipForm( length ) is called, the entire form and any sub forms and chunks are skipped
|
111
|
+
case 'ISEQ': // Image sequence
|
112
|
+
|
113
|
+
case 'ANIM': // plug in animation
|
114
|
+
|
115
|
+
case 'STCC': // Color-cycling Still
|
116
|
+
|
117
|
+
case 'VPVL':
|
118
|
+
case 'VPRM':
|
119
|
+
case 'NROT':
|
120
|
+
case 'WRPW': // image wrap w ( for cylindrical and spherical projections)
|
121
|
+
|
122
|
+
case 'WRPH': // image wrap h
|
123
|
+
|
124
|
+
case 'FUNC':
|
125
|
+
case 'FALL':
|
126
|
+
case 'OPAC':
|
127
|
+
case 'GRAD': // gradient texture
|
128
|
+
|
129
|
+
case 'ENVS':
|
130
|
+
case 'VMOP':
|
131
|
+
case 'VMBG': // Car Material FORMS
|
132
|
+
|
133
|
+
case 'OMAX':
|
134
|
+
case 'STEX':
|
135
|
+
case 'CKBG':
|
136
|
+
case 'CKEY':
|
137
|
+
case 'VMLA':
|
138
|
+
case 'VMLB':
|
82
139
|
this.debugger.skipped = true;
|
83
|
-
this.skipForm(length);
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
case
|
90
|
-
case
|
91
|
-
case
|
92
|
-
case
|
93
|
-
case
|
94
|
-
case
|
95
|
-
case
|
140
|
+
this.skipForm(length); // not currently supported
|
141
|
+
|
142
|
+
break;
|
143
|
+
// if break; is called directly, the position in the lwoTree is not created
|
144
|
+
// any sub chunks and forms are added to the parent form instead
|
145
|
+
|
146
|
+
case 'META':
|
147
|
+
case 'NNDS':
|
148
|
+
case 'NODS':
|
149
|
+
case 'NDTA':
|
150
|
+
case 'ADAT':
|
151
|
+
case 'AOVS':
|
152
|
+
case 'BLOK': // used by texture nodes
|
153
|
+
|
154
|
+
case 'IBGC': // imageBackgroundColor
|
155
|
+
|
156
|
+
case 'IOPC': // imageOpacity
|
157
|
+
|
158
|
+
case 'IIMG': // hold reference to image path
|
159
|
+
|
160
|
+
case 'TXTR':
|
161
|
+
// this.setupForm( type, length );
|
96
162
|
this.debugger.length = 4;
|
97
163
|
this.debugger.skipped = true;
|
98
164
|
break;
|
99
|
-
|
100
|
-
case
|
101
|
-
|
102
|
-
case
|
103
|
-
|
104
|
-
case
|
105
|
-
|
165
|
+
|
166
|
+
case 'IFAL': // imageFallof
|
167
|
+
|
168
|
+
case 'ISCL': // imageScale
|
169
|
+
|
170
|
+
case 'IPOS': // imagePosition
|
171
|
+
|
172
|
+
case 'IROT': // imageRotation
|
173
|
+
|
174
|
+
case 'IBMP':
|
175
|
+
case 'IUTD':
|
176
|
+
case 'IVTD':
|
106
177
|
this.parseTextureNodeAttribute(type);
|
107
178
|
break;
|
108
|
-
|
179
|
+
|
180
|
+
case 'ENVL':
|
109
181
|
this.parseEnvelope(length);
|
110
182
|
break;
|
111
|
-
|
112
|
-
|
183
|
+
// CLIP FORM AND SUB FORMS
|
184
|
+
|
185
|
+
case 'CLIP':
|
186
|
+
if (this.tree.format === 'LWO2') {
|
113
187
|
this.parseForm(length);
|
114
188
|
} else {
|
115
189
|
this.parseClip(length);
|
116
190
|
}
|
191
|
+
|
117
192
|
break;
|
118
|
-
|
193
|
+
|
194
|
+
case 'STIL':
|
119
195
|
this.parseImage();
|
120
196
|
break;
|
121
|
-
|
122
|
-
|
197
|
+
|
198
|
+
case 'XREF':
|
199
|
+
// clone of another STIL
|
200
|
+
this.reader.skip(8); // unknown
|
201
|
+
|
123
202
|
this.currentForm.referenceTexture = {
|
124
203
|
index: this.reader.getUint32(),
|
125
|
-
refName: this.reader.getString()
|
204
|
+
refName: this.reader.getString() // internal unique ref
|
205
|
+
|
126
206
|
};
|
127
207
|
break;
|
128
|
-
|
208
|
+
// Not in spec, used by texture nodes
|
209
|
+
|
210
|
+
case 'IMST':
|
129
211
|
this.parseImageStateForm(length);
|
130
212
|
break;
|
131
|
-
|
213
|
+
// SURF FORM AND SUB FORMS
|
214
|
+
|
215
|
+
case 'SURF':
|
132
216
|
this.parseSurfaceForm(length);
|
133
217
|
break;
|
134
|
-
|
218
|
+
|
219
|
+
case 'VALU':
|
220
|
+
// Not in spec
|
135
221
|
this.parseValueForm(length);
|
136
222
|
break;
|
137
|
-
|
223
|
+
|
224
|
+
case 'NTAG':
|
138
225
|
this.parseSubNode(length);
|
139
226
|
break;
|
140
|
-
|
141
|
-
case
|
142
|
-
|
227
|
+
|
228
|
+
case 'ATTR': // BSDF Node Attributes
|
229
|
+
|
230
|
+
case 'SATR':
|
231
|
+
// Standard Node Attributes
|
232
|
+
this.setupForm('attributes', length);
|
143
233
|
break;
|
144
|
-
|
234
|
+
|
235
|
+
case 'NCON':
|
145
236
|
this.parseConnections(length);
|
146
237
|
break;
|
147
|
-
|
238
|
+
|
239
|
+
case 'SSHA':
|
148
240
|
this.parentForm = this.currentForm;
|
149
241
|
this.currentForm = this.currentSurface;
|
150
|
-
this.setupForm(
|
242
|
+
this.setupForm('surfaceShader', length);
|
151
243
|
break;
|
152
|
-
|
153
|
-
|
244
|
+
|
245
|
+
case 'SSHD':
|
246
|
+
this.setupForm('surfaceShaderData', length);
|
154
247
|
break;
|
155
|
-
|
248
|
+
|
249
|
+
case 'ENTR':
|
250
|
+
// Not in spec
|
156
251
|
this.parseEntryForm(length);
|
157
252
|
break;
|
158
|
-
|
253
|
+
// Image Map Layer
|
254
|
+
|
255
|
+
case 'IMAP':
|
159
256
|
this.parseImageMap(length);
|
160
257
|
break;
|
161
|
-
|
162
|
-
|
258
|
+
|
259
|
+
case 'TAMP':
|
260
|
+
this.parseXVAL('amplitude', length);
|
163
261
|
break;
|
164
|
-
|
165
|
-
|
262
|
+
//Texture Mapping Form
|
263
|
+
|
264
|
+
case 'TMAP':
|
265
|
+
this.setupForm('textureMap', length);
|
166
266
|
break;
|
167
|
-
|
168
|
-
|
267
|
+
|
268
|
+
case 'CNTR':
|
269
|
+
this.parseXVAL3('center', length);
|
169
270
|
break;
|
170
|
-
|
171
|
-
|
271
|
+
|
272
|
+
case 'SIZE':
|
273
|
+
this.parseXVAL3('scale', length);
|
172
274
|
break;
|
173
|
-
|
174
|
-
|
275
|
+
|
276
|
+
case 'ROTA':
|
277
|
+
this.parseXVAL3('rotation', length);
|
175
278
|
break;
|
279
|
+
|
176
280
|
default:
|
177
281
|
this.parseUnknownForm(type, length);
|
178
282
|
}
|
283
|
+
|
179
284
|
this.debugger.node = 0;
|
180
285
|
this.debugger.nodeID = type;
|
181
286
|
this.debugger.log();
|
182
287
|
},
|
288
|
+
|
183
289
|
setupForm(type, length) {
|
184
|
-
if (!this.currentForm)
|
185
|
-
this.currentForm = this.currentNode;
|
290
|
+
if (!this.currentForm) this.currentForm = this.currentNode;
|
186
291
|
this.currentFormEnd = this.reader.offset + length;
|
187
292
|
this.parentForm = this.currentForm;
|
293
|
+
|
188
294
|
if (!this.currentForm[type]) {
|
189
295
|
this.currentForm[type] = {};
|
190
296
|
this.currentForm = this.currentForm[type];
|
191
297
|
} else {
|
192
|
-
|
298
|
+
// should never see this unless there's a bug in the reader
|
299
|
+
console.warn('LWOLoader: form already exists on parent: ', type, this.currentForm);
|
193
300
|
this.currentForm = this.currentForm[type];
|
194
301
|
}
|
195
302
|
},
|
303
|
+
|
196
304
|
skipForm(length) {
|
197
305
|
this.reader.skip(length - 4);
|
198
306
|
},
|
307
|
+
|
199
308
|
parseUnknownForm(type, length) {
|
200
|
-
console.warn(
|
309
|
+
console.warn('LWOLoader: unknown FORM encountered: ' + type, length);
|
201
310
|
printBuffer(this.reader.dv.buffer, this.reader.offset, length - 4);
|
202
311
|
this.reader.skip(length - 4);
|
203
312
|
},
|
313
|
+
|
204
314
|
parseSurfaceForm(length) {
|
205
|
-
this.reader.skip(8);
|
315
|
+
this.reader.skip(8); // unknown Uint32 x2
|
316
|
+
|
206
317
|
var name = this.reader.getString();
|
207
318
|
var surface = {
|
208
319
|
attributes: {},
|
320
|
+
// LWO2 style non-node attributes will go here
|
209
321
|
connections: {},
|
210
|
-
name,
|
322
|
+
name: name,
|
211
323
|
inputName: name,
|
212
324
|
nodes: {},
|
213
325
|
source: this.reader.getString()
|
@@ -218,12 +330,14 @@ IFFParser.prototype = {
|
|
218
330
|
this.currentForm = surface;
|
219
331
|
this.currentFormEnd = this.reader.offset + length;
|
220
332
|
},
|
333
|
+
|
221
334
|
parseSurfaceLwo2(length) {
|
222
335
|
var name = this.reader.getString();
|
223
336
|
var surface = {
|
224
337
|
attributes: {},
|
338
|
+
// LWO2 style non-node attributes will go here
|
225
339
|
connections: {},
|
226
|
-
name,
|
340
|
+
name: name,
|
227
341
|
nodes: {},
|
228
342
|
source: this.reader.getString()
|
229
343
|
};
|
@@ -233,133 +347,184 @@ IFFParser.prototype = {
|
|
233
347
|
this.currentForm = surface;
|
234
348
|
this.currentFormEnd = this.reader.offset + length;
|
235
349
|
},
|
350
|
+
|
236
351
|
parseSubNode(length) {
|
237
|
-
|
352
|
+
// parse the NRNM CHUNK of the subnode FORM to get
|
353
|
+
// a meaningful name for the subNode
|
354
|
+
// some subnodes can be renamed, but Input and Surface cannot
|
355
|
+
this.reader.skip(8); // NRNM + length
|
356
|
+
|
238
357
|
var name = this.reader.getString();
|
239
358
|
var node = {
|
240
|
-
name
|
359
|
+
name: name
|
241
360
|
};
|
242
361
|
this.currentForm = node;
|
243
362
|
this.currentNode = node;
|
244
363
|
this.currentFormEnd = this.reader.offset + length;
|
245
364
|
},
|
365
|
+
|
366
|
+
// collect attributes from all nodes at the top level of a surface
|
246
367
|
parseConnections(length) {
|
247
368
|
this.currentFormEnd = this.reader.offset + length;
|
248
369
|
this.parentForm = this.currentForm;
|
249
370
|
this.currentForm = this.currentSurface.connections;
|
250
371
|
},
|
372
|
+
|
373
|
+
// surface node attribute data, e.g. specular, roughness etc
|
251
374
|
parseEntryForm(length) {
|
252
|
-
this.reader.skip(8);
|
375
|
+
this.reader.skip(8); // NAME + length
|
376
|
+
|
253
377
|
var name = this.reader.getString();
|
254
378
|
this.currentForm = this.currentNode.attributes;
|
255
379
|
this.setupForm(name, length);
|
256
380
|
},
|
381
|
+
|
382
|
+
// parse values from material - doesn't match up to other LWO3 data types
|
383
|
+
// sub form of entry form
|
257
384
|
parseValueForm() {
|
258
|
-
this.reader.skip(8);
|
385
|
+
this.reader.skip(8); // unknown + length
|
386
|
+
|
259
387
|
var valueType = this.reader.getString();
|
260
|
-
|
388
|
+
|
389
|
+
if (valueType === 'double') {
|
261
390
|
this.currentForm.value = this.reader.getUint64();
|
262
|
-
} else if (valueType ===
|
391
|
+
} else if (valueType === 'int') {
|
263
392
|
this.currentForm.value = this.reader.getUint32();
|
264
|
-
} else if (valueType ===
|
393
|
+
} else if (valueType === 'vparam') {
|
265
394
|
this.reader.skip(24);
|
266
395
|
this.currentForm.value = this.reader.getFloat64();
|
267
|
-
} else if (valueType ===
|
396
|
+
} else if (valueType === 'vparam3') {
|
268
397
|
this.reader.skip(24);
|
269
398
|
this.currentForm.value = this.reader.getFloat64Array(3);
|
270
399
|
}
|
271
400
|
},
|
401
|
+
|
402
|
+
// holds various data about texture node image state
|
403
|
+
// Data other thanmipMapLevel unknown
|
272
404
|
parseImageStateForm() {
|
273
|
-
this.reader.skip(8);
|
405
|
+
this.reader.skip(8); // unknown
|
406
|
+
|
274
407
|
this.currentForm.mipMapLevel = this.reader.getFloat32();
|
275
408
|
},
|
409
|
+
|
410
|
+
// LWO2 style image data node OR LWO3 textures defined at top level in editor (not as SURF node)
|
276
411
|
parseImageMap(length) {
|
277
412
|
this.currentFormEnd = this.reader.offset + length;
|
278
413
|
this.parentForm = this.currentForm;
|
279
|
-
if (!this.currentForm.maps)
|
280
|
-
this.currentForm.maps = [];
|
414
|
+
if (!this.currentForm.maps) this.currentForm.maps = [];
|
281
415
|
var map = {};
|
282
416
|
this.currentForm.maps.push(map);
|
283
417
|
this.currentForm = map;
|
284
|
-
this.reader.skip(10);
|
418
|
+
this.reader.skip(10); // unknown, could be an issue if it contains a VX
|
285
419
|
},
|
420
|
+
|
286
421
|
parseTextureNodeAttribute(type) {
|
287
|
-
this.reader.skip(28);
|
288
|
-
|
422
|
+
this.reader.skip(28); // FORM + length + VPRM + unknown + Uint32 x2 + float32
|
423
|
+
|
424
|
+
this.reader.skip(20); // FORM + length + VPVL + float32 + Uint32
|
425
|
+
|
289
426
|
switch (type) {
|
290
|
-
case
|
427
|
+
case 'ISCL':
|
291
428
|
this.currentNode.scale = this.reader.getFloat32Array(3);
|
292
429
|
break;
|
293
|
-
|
430
|
+
|
431
|
+
case 'IPOS':
|
294
432
|
this.currentNode.position = this.reader.getFloat32Array(3);
|
295
433
|
break;
|
296
|
-
|
434
|
+
|
435
|
+
case 'IROT':
|
297
436
|
this.currentNode.rotation = this.reader.getFloat32Array(3);
|
298
437
|
break;
|
299
|
-
|
438
|
+
|
439
|
+
case 'IFAL':
|
300
440
|
this.currentNode.falloff = this.reader.getFloat32Array(3);
|
301
441
|
break;
|
302
|
-
|
442
|
+
|
443
|
+
case 'IBMP':
|
303
444
|
this.currentNode.amplitude = this.reader.getFloat32();
|
304
445
|
break;
|
305
|
-
|
446
|
+
|
447
|
+
case 'IUTD':
|
306
448
|
this.currentNode.uTiles = this.reader.getFloat32();
|
307
449
|
break;
|
308
|
-
|
450
|
+
|
451
|
+
case 'IVTD':
|
309
452
|
this.currentNode.vTiles = this.reader.getFloat32();
|
310
453
|
break;
|
311
454
|
}
|
312
|
-
|
455
|
+
|
456
|
+
this.reader.skip(2); // unknown
|
313
457
|
},
|
458
|
+
|
459
|
+
// ENVL forms are currently ignored
|
314
460
|
parseEnvelope(length) {
|
315
|
-
this.reader.skip(length - 4);
|
316
|
-
},
|
461
|
+
this.reader.skip(length - 4); // skipping entirely for now
|
462
|
+
},
|
463
|
+
|
464
|
+
///
|
465
|
+
// CHUNK PARSING METHODS
|
466
|
+
///
|
467
|
+
// clips can either be defined inside a surface node, or at the top
|
468
|
+
// level and they have a different format in each case
|
317
469
|
parseClip(length) {
|
318
|
-
var tag = this.reader.getIDTag();
|
319
|
-
|
470
|
+
var tag = this.reader.getIDTag(); // inside surface node
|
471
|
+
|
472
|
+
if (tag === 'FORM') {
|
320
473
|
this.reader.skip(16);
|
321
474
|
this.currentNode.fileName = this.reader.getString();
|
322
475
|
return;
|
323
|
-
}
|
476
|
+
} // otherwise top level
|
477
|
+
|
478
|
+
|
324
479
|
this.reader.setOffset(this.reader.offset - 4);
|
325
480
|
this.currentFormEnd = this.reader.offset + length;
|
326
481
|
this.parentForm = this.currentForm;
|
327
|
-
this.reader.skip(8);
|
482
|
+
this.reader.skip(8); // unknown
|
483
|
+
|
328
484
|
var texture = {
|
329
485
|
index: this.reader.getUint32()
|
330
486
|
};
|
331
487
|
this.tree.textures.push(texture);
|
332
488
|
this.currentForm = texture;
|
333
489
|
},
|
490
|
+
|
334
491
|
parseClipLwo2(length) {
|
335
492
|
var texture = {
|
336
493
|
index: this.reader.getUint32(),
|
337
|
-
fileName:
|
338
|
-
};
|
494
|
+
fileName: ''
|
495
|
+
}; // seach STIL block
|
496
|
+
|
339
497
|
while (true) {
|
340
498
|
var tag = this.reader.getIDTag();
|
341
499
|
var n_length = this.reader.getUint16();
|
342
|
-
|
500
|
+
|
501
|
+
if (tag === 'STIL') {
|
343
502
|
texture.fileName = this.reader.getString();
|
344
503
|
break;
|
345
504
|
}
|
505
|
+
|
346
506
|
if (n_length >= length) {
|
347
507
|
break;
|
348
508
|
}
|
349
509
|
}
|
510
|
+
|
350
511
|
this.tree.textures.push(texture);
|
351
512
|
this.currentForm = texture;
|
352
513
|
},
|
514
|
+
|
353
515
|
parseImage() {
|
354
|
-
this.reader.skip(8);
|
516
|
+
this.reader.skip(8); // unknown
|
517
|
+
|
355
518
|
this.currentForm.fileName = this.reader.getString();
|
356
519
|
},
|
520
|
+
|
357
521
|
parseXVAL(type, length) {
|
358
522
|
var endOffset = this.reader.offset + length - 4;
|
359
523
|
this.reader.skip(8);
|
360
524
|
this.currentForm[type] = this.reader.getFloat32();
|
361
|
-
this.reader.setOffset(endOffset);
|
525
|
+
this.reader.setOffset(endOffset); // set end offset directly to skip optional envelope
|
362
526
|
},
|
527
|
+
|
363
528
|
parseXVAL3(type, length) {
|
364
529
|
var endOffset = this.reader.offset + length - 4;
|
365
530
|
this.reader.skip(8);
|
@@ -370,246 +535,326 @@ IFFParser.prototype = {
|
|
370
535
|
};
|
371
536
|
this.reader.setOffset(endOffset);
|
372
537
|
},
|
538
|
+
|
539
|
+
// Tags associated with an object
|
540
|
+
// OTAG { type[ID4], tag-string[S0] }
|
373
541
|
parseObjectTag() {
|
374
|
-
if (!this.tree.objectTags)
|
375
|
-
this.tree.objectTags = {};
|
542
|
+
if (!this.tree.objectTags) this.tree.objectTags = {};
|
376
543
|
this.tree.objectTags[this.reader.getIDTag()] = {
|
377
544
|
tagString: this.reader.getString()
|
378
545
|
};
|
379
546
|
},
|
547
|
+
|
548
|
+
// Signals the start of a new layer. All the data chunks which follow will be included in this layer until another layer chunk is encountered.
|
549
|
+
// LAYR: number[U2], flags[U2], pivot[VEC12], name[S0], parent[U2]
|
380
550
|
parseLayer(length) {
|
381
551
|
var layer = {
|
382
552
|
number: this.reader.getUint16(),
|
383
553
|
flags: this.reader.getUint16(),
|
554
|
+
// If the least significant bit of flags is set, the layer is hidden.
|
384
555
|
pivot: this.reader.getFloat32Array(3),
|
556
|
+
// Note: this seems to be superflous, as the geometry is translated when pivot is present
|
385
557
|
name: this.reader.getString()
|
386
558
|
};
|
387
559
|
this.tree.layers.push(layer);
|
388
560
|
this.currentLayer = layer;
|
389
|
-
var parsedLength = 16 + stringOffset(this.currentLayer.name);
|
390
|
-
|
391
|
-
|
561
|
+
var parsedLength = 16 + stringOffset(this.currentLayer.name); // index ( 2 ) + flags( 2 ) + pivot( 12 ) + stringlength
|
562
|
+
// if we have not reached then end of the layer block, there must be a parent defined
|
563
|
+
|
564
|
+
this.currentLayer.parent = parsedLength < length ? this.reader.getUint16() : -1; // omitted or -1 for no parent
|
565
|
+
},
|
566
|
+
|
567
|
+
// VEC12 * ( F4 + F4 + F4 ) array of x,y,z vectors
|
568
|
+
// Converting from left to right handed coordinate system:
|
569
|
+
// x -> -x and switch material FrontSide -> BackSide
|
392
570
|
parsePoints(length) {
|
393
571
|
this.currentPoints = [];
|
572
|
+
|
394
573
|
for (let i = 0; i < length / 4; i += 3) {
|
574
|
+
// z -> -z to match three.js right handed coords
|
395
575
|
this.currentPoints.push(this.reader.getFloat32(), this.reader.getFloat32(), -this.reader.getFloat32());
|
396
576
|
}
|
397
577
|
},
|
578
|
+
|
579
|
+
// parse VMAP or VMAD
|
580
|
+
// Associates a set of floating-point vectors with a set of points.
|
581
|
+
// VMAP: { type[ID4], dimension[U2], name[S0], ( vert[VX], value[F4] # dimension ) * }
|
582
|
+
// VMAD Associates a set of floating-point vectors with the vertices of specific polygons.
|
583
|
+
// Similar to VMAP UVs, but associates with polygon vertices rather than points
|
584
|
+
// to solve to problem of UV seams: VMAD chunks are paired with VMAPs of the same name,
|
585
|
+
// if they exist. The vector values in the VMAD will then replace those in the
|
586
|
+
// corresponding VMAP, but only for calculations involving the specified polygons.
|
587
|
+
// VMAD { type[ID4], dimension[U2], name[S0], ( vert[VX], poly[VX], value[F4] # dimension ) * }
|
398
588
|
parseVertexMapping(length, discontinuous) {
|
399
589
|
var finalOffset = this.reader.offset + length;
|
400
590
|
var channelName = this.reader.getString();
|
591
|
+
|
401
592
|
if (this.reader.offset === finalOffset) {
|
593
|
+
// then we are in a texture node and the VMAP chunk is just a reference to a UV channel name
|
402
594
|
this.currentForm.UVChannel = channelName;
|
403
595
|
return;
|
404
|
-
}
|
596
|
+
} // otherwise reset to initial length and parse normal VMAP CHUNK
|
597
|
+
|
598
|
+
|
405
599
|
this.reader.setOffset(this.reader.offset - stringOffset(channelName));
|
406
600
|
var type = this.reader.getIDTag();
|
407
|
-
this.reader.getUint16();
|
601
|
+
this.reader.getUint16(); // dimension
|
602
|
+
|
408
603
|
var name = this.reader.getString();
|
409
604
|
var remainingLength = length - 6 - stringOffset(name);
|
605
|
+
|
410
606
|
switch (type) {
|
411
|
-
case
|
607
|
+
case 'TXUV':
|
412
608
|
this.parseUVMapping(name, finalOffset, discontinuous);
|
413
609
|
break;
|
414
|
-
|
415
|
-
case
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
case
|
423
|
-
case
|
424
|
-
case
|
610
|
+
|
611
|
+
case 'MORF':
|
612
|
+
case 'SPOT':
|
613
|
+
this.parseMorphTargets(name, finalOffset, type); // can't be discontinuous
|
614
|
+
|
615
|
+
break;
|
616
|
+
// unsupported VMAPs
|
617
|
+
|
618
|
+
case 'APSL':
|
619
|
+
case 'NORM':
|
620
|
+
case 'WGHT':
|
621
|
+
case 'MNVW':
|
622
|
+
case 'PICK':
|
623
|
+
case 'RGB ':
|
624
|
+
case 'RGBA':
|
425
625
|
this.reader.skip(remainingLength);
|
426
626
|
break;
|
627
|
+
|
427
628
|
default:
|
428
|
-
console.warn(
|
629
|
+
console.warn('LWOLoader: unknown vertex map type: ' + type);
|
429
630
|
this.reader.skip(remainingLength);
|
430
631
|
}
|
431
632
|
},
|
633
|
+
|
432
634
|
parseUVMapping(name, finalOffset, discontinuous) {
|
433
635
|
var uvIndices = [];
|
434
636
|
var polyIndices = [];
|
435
637
|
var uvs = [];
|
638
|
+
|
436
639
|
while (this.reader.offset < finalOffset) {
|
437
640
|
uvIndices.push(this.reader.getVariableLengthIndex());
|
438
|
-
if (discontinuous)
|
439
|
-
polyIndices.push(this.reader.getVariableLengthIndex());
|
641
|
+
if (discontinuous) polyIndices.push(this.reader.getVariableLengthIndex());
|
440
642
|
uvs.push(this.reader.getFloat32(), this.reader.getFloat32());
|
441
643
|
}
|
644
|
+
|
442
645
|
if (discontinuous) {
|
443
|
-
if (!this.currentLayer.discontinuousUVs)
|
444
|
-
this.currentLayer.discontinuousUVs = {};
|
646
|
+
if (!this.currentLayer.discontinuousUVs) this.currentLayer.discontinuousUVs = {};
|
445
647
|
this.currentLayer.discontinuousUVs[name] = {
|
446
|
-
uvIndices,
|
447
|
-
polyIndices,
|
448
|
-
uvs
|
648
|
+
uvIndices: uvIndices,
|
649
|
+
polyIndices: polyIndices,
|
650
|
+
uvs: uvs
|
449
651
|
};
|
450
652
|
} else {
|
451
|
-
if (!this.currentLayer.uvs)
|
452
|
-
this.currentLayer.uvs = {};
|
653
|
+
if (!this.currentLayer.uvs) this.currentLayer.uvs = {};
|
453
654
|
this.currentLayer.uvs[name] = {
|
454
|
-
uvIndices,
|
455
|
-
uvs
|
655
|
+
uvIndices: uvIndices,
|
656
|
+
uvs: uvs
|
456
657
|
};
|
457
658
|
}
|
458
659
|
},
|
660
|
+
|
459
661
|
parseMorphTargets(name, finalOffset, type) {
|
460
662
|
var indices = [];
|
461
663
|
var points = [];
|
462
|
-
type = type ===
|
664
|
+
type = type === 'MORF' ? 'relative' : 'absolute';
|
665
|
+
|
463
666
|
while (this.reader.offset < finalOffset) {
|
464
|
-
indices.push(this.reader.getVariableLengthIndex());
|
667
|
+
indices.push(this.reader.getVariableLengthIndex()); // z -> -z to match three.js right handed coords
|
668
|
+
|
465
669
|
points.push(this.reader.getFloat32(), this.reader.getFloat32(), -this.reader.getFloat32());
|
466
670
|
}
|
467
|
-
|
468
|
-
|
671
|
+
|
672
|
+
if (!this.currentLayer.morphTargets) this.currentLayer.morphTargets = {};
|
469
673
|
this.currentLayer.morphTargets[name] = {
|
470
|
-
indices,
|
471
|
-
points,
|
472
|
-
type
|
674
|
+
indices: indices,
|
675
|
+
points: points,
|
676
|
+
type: type
|
473
677
|
};
|
474
678
|
},
|
679
|
+
|
680
|
+
// A list of polygons for the current layer.
|
681
|
+
// POLS { type[ID4], ( numvert+flags[U2], vert[VX] # numvert ) * }
|
475
682
|
parsePolygonList(length) {
|
476
683
|
var finalOffset = this.reader.offset + length;
|
477
684
|
var type = this.reader.getIDTag();
|
478
|
-
var indices = [];
|
685
|
+
var indices = []; // hold a list of polygon sizes, to be split up later
|
686
|
+
|
479
687
|
var polygonDimensions = [];
|
688
|
+
|
480
689
|
while (this.reader.offset < finalOffset) {
|
481
|
-
var numverts = this.reader.getUint16();
|
482
|
-
|
690
|
+
var numverts = this.reader.getUint16(); //var flags = numverts & 64512; // 6 high order bits are flags - ignoring for now
|
691
|
+
|
692
|
+
numverts = numverts & 1023; // remaining ten low order bits are vertex num
|
693
|
+
|
483
694
|
polygonDimensions.push(numverts);
|
484
|
-
|
485
|
-
|
695
|
+
|
696
|
+
for (let j = 0; j < numverts; j++) indices.push(this.reader.getVariableLengthIndex());
|
486
697
|
}
|
698
|
+
|
487
699
|
var geometryData = {
|
488
|
-
type,
|
700
|
+
type: type,
|
489
701
|
vertexIndices: indices,
|
490
|
-
polygonDimensions,
|
702
|
+
polygonDimensions: polygonDimensions,
|
491
703
|
points: this.currentPoints
|
492
|
-
};
|
493
|
-
|
494
|
-
|
495
|
-
else if (polygonDimensions[0] === 2)
|
496
|
-
geometryData.type = "lines";
|
704
|
+
}; // Note: assuming that all polys will be lines or points if the first is
|
705
|
+
|
706
|
+
if (polygonDimensions[0] === 1) geometryData.type = 'points';else if (polygonDimensions[0] === 2) geometryData.type = 'lines';
|
497
707
|
this.currentLayer.geometry = geometryData;
|
498
708
|
},
|
709
|
+
|
710
|
+
// Lists the tag strings that can be associated with polygons by the PTAG chunk.
|
711
|
+
// TAGS { tag-string[S0] * }
|
499
712
|
parseTagStrings(length) {
|
500
713
|
this.tree.tags = this.reader.getStringArray(length);
|
501
714
|
},
|
715
|
+
|
716
|
+
// Associates tags of a given type with polygons in the most recent POLS chunk.
|
717
|
+
// PTAG { type[ID4], ( poly[VX], tag[U2] ) * }
|
502
718
|
parsePolygonTagMapping(length) {
|
503
719
|
var finalOffset = this.reader.offset + length;
|
504
720
|
var type = this.reader.getIDTag();
|
505
|
-
|
721
|
+
|
722
|
+
if (type === 'SURF') {
|
506
723
|
this.parseMaterialIndices(finalOffset);
|
507
724
|
} else {
|
725
|
+
//PART, SMGP, COLR not supported
|
508
726
|
this.reader.skip(length - 4);
|
509
727
|
}
|
510
728
|
},
|
729
|
+
|
511
730
|
parseMaterialIndices(finalOffset) {
|
731
|
+
// array holds polygon index followed by material index
|
512
732
|
this.currentLayer.geometry.materialIndices = [];
|
733
|
+
|
513
734
|
while (this.reader.offset < finalOffset) {
|
514
735
|
var polygonIndex = this.reader.getVariableLengthIndex();
|
515
736
|
var materialIndex = this.reader.getUint16();
|
516
737
|
this.currentLayer.geometry.materialIndices.push(polygonIndex, materialIndex);
|
517
738
|
}
|
518
739
|
},
|
740
|
+
|
519
741
|
parseUnknownCHUNK(blockID, length) {
|
520
|
-
console.warn(
|
742
|
+
console.warn('LWOLoader: unknown chunk type: ' + blockID + ' length: ' + length); // print the chunk plus some bytes padding either side
|
743
|
+
// printBuffer( this.reader.dv.buffer, this.reader.offset - 20, length + 40 );
|
744
|
+
|
521
745
|
var data = this.reader.getString(length);
|
522
746
|
this.currentForm[blockID] = data;
|
523
747
|
}
|
748
|
+
|
524
749
|
};
|
750
|
+
|
525
751
|
function DataViewReader(buffer) {
|
526
752
|
this.dv = new DataView(buffer);
|
527
753
|
this.offset = 0;
|
528
754
|
}
|
755
|
+
|
529
756
|
DataViewReader.prototype = {
|
530
757
|
constructor: DataViewReader,
|
531
|
-
size: function() {
|
758
|
+
size: function () {
|
532
759
|
return this.dv.buffer.byteLength;
|
533
760
|
},
|
761
|
+
|
534
762
|
setOffset(offset) {
|
535
763
|
if (offset > 0 && offset < this.dv.buffer.byteLength) {
|
536
764
|
this.offset = offset;
|
537
765
|
} else {
|
538
|
-
console.error(
|
766
|
+
console.error('LWOLoader: invalid buffer offset');
|
539
767
|
}
|
540
768
|
},
|
541
|
-
|
542
|
-
|
543
|
-
|
769
|
+
|
770
|
+
endOfFile: function () {
|
771
|
+
if (this.offset >= this.size()) return true;
|
544
772
|
return false;
|
545
773
|
},
|
546
|
-
skip: function(length) {
|
774
|
+
skip: function (length) {
|
547
775
|
this.offset += length;
|
548
776
|
},
|
549
|
-
getUint8: function() {
|
777
|
+
getUint8: function () {
|
550
778
|
var value = this.dv.getUint8(this.offset);
|
551
779
|
this.offset += 1;
|
552
780
|
return value;
|
553
781
|
},
|
554
|
-
getUint16: function() {
|
782
|
+
getUint16: function () {
|
555
783
|
var value = this.dv.getUint16(this.offset);
|
556
784
|
this.offset += 2;
|
557
785
|
return value;
|
558
786
|
},
|
559
|
-
getInt32: function() {
|
787
|
+
getInt32: function () {
|
560
788
|
var value = this.dv.getInt32(this.offset, false);
|
561
789
|
this.offset += 4;
|
562
790
|
return value;
|
563
791
|
},
|
564
|
-
getUint32: function() {
|
792
|
+
getUint32: function () {
|
565
793
|
var value = this.dv.getUint32(this.offset, false);
|
566
794
|
this.offset += 4;
|
567
795
|
return value;
|
568
796
|
},
|
569
|
-
getUint64: function() {
|
797
|
+
getUint64: function () {
|
570
798
|
var low, high;
|
571
799
|
high = this.getUint32();
|
572
800
|
low = this.getUint32();
|
573
|
-
return high *
|
801
|
+
return high * 0x100000000 + low;
|
574
802
|
},
|
575
|
-
getFloat32: function() {
|
803
|
+
getFloat32: function () {
|
576
804
|
var value = this.dv.getFloat32(this.offset, false);
|
577
805
|
this.offset += 4;
|
578
806
|
return value;
|
579
807
|
},
|
580
|
-
getFloat32Array: function(size) {
|
808
|
+
getFloat32Array: function (size) {
|
581
809
|
var a = [];
|
810
|
+
|
582
811
|
for (let i = 0; i < size; i++) {
|
583
812
|
a.push(this.getFloat32());
|
584
813
|
}
|
814
|
+
|
585
815
|
return a;
|
586
816
|
},
|
587
|
-
getFloat64: function() {
|
817
|
+
getFloat64: function () {
|
588
818
|
var value = this.dv.getFloat64(this.offset, this.littleEndian);
|
589
819
|
this.offset += 8;
|
590
820
|
return value;
|
591
821
|
},
|
592
|
-
getFloat64Array: function(size) {
|
822
|
+
getFloat64Array: function (size) {
|
593
823
|
var a = [];
|
824
|
+
|
594
825
|
for (let i = 0; i < size; i++) {
|
595
826
|
a.push(this.getFloat64());
|
596
827
|
}
|
828
|
+
|
597
829
|
return a;
|
598
830
|
},
|
831
|
+
|
832
|
+
// get variable-length index data type
|
833
|
+
// VX ::= index[U2] | (index + 0xFF000000)[U4]
|
834
|
+
// If the index value is less than 65,280 (0xFF00),then VX === U2
|
835
|
+
// otherwise VX === U4 with bits 24-31 set
|
836
|
+
// When reading an index, if the first byte encountered is 255 (0xFF), then
|
837
|
+
// the four-byte form is being used and the first byte should be discarded or masked out.
|
599
838
|
getVariableLengthIndex() {
|
600
839
|
var firstByte = this.getUint8();
|
840
|
+
|
601
841
|
if (firstByte === 255) {
|
602
842
|
return this.getUint8() * 65536 + this.getUint8() * 256 + this.getUint8();
|
603
843
|
}
|
844
|
+
|
604
845
|
return firstByte * 256 + this.getUint8();
|
605
846
|
},
|
847
|
+
|
848
|
+
// An ID tag is a sequence of 4 bytes containing 7-bit ASCII values
|
606
849
|
getIDTag() {
|
607
850
|
return this.getString(4);
|
608
851
|
},
|
609
|
-
|
610
|
-
|
611
|
-
|
852
|
+
|
853
|
+
getString: function (size) {
|
854
|
+
if (size === 0) return; // note: safari 9 doesn't support Uint8Array.indexOf; create intermediate array instead
|
855
|
+
|
612
856
|
var a = [];
|
857
|
+
|
613
858
|
if (size) {
|
614
859
|
for (let i = 0; i < size; i++) {
|
615
860
|
a[i] = this.getUint8();
|
@@ -617,81 +862,90 @@ DataViewReader.prototype = {
|
|
617
862
|
} else {
|
618
863
|
var currentChar;
|
619
864
|
var len = 0;
|
865
|
+
|
620
866
|
while (currentChar !== 0) {
|
621
867
|
currentChar = this.getUint8();
|
622
|
-
if (currentChar !== 0)
|
623
|
-
a.push(currentChar);
|
868
|
+
if (currentChar !== 0) a.push(currentChar);
|
624
869
|
len++;
|
625
870
|
}
|
626
|
-
|
627
|
-
|
871
|
+
|
872
|
+
if (!isEven(len + 1)) this.getUint8(); // if string with terminating nullbyte is uneven, extra nullbyte is added
|
628
873
|
}
|
629
|
-
|
874
|
+
|
875
|
+
return LoaderUtils.decodeText(new Uint8Array(a));
|
630
876
|
},
|
631
|
-
getStringArray: function(size) {
|
877
|
+
getStringArray: function (size) {
|
632
878
|
var a = this.getString(size);
|
633
|
-
a = a.split(
|
634
|
-
return a.filter(Boolean);
|
879
|
+
a = a.split('\0');
|
880
|
+
return a.filter(Boolean); // return array with any empty strings removed
|
635
881
|
}
|
636
|
-
};
|
882
|
+
}; // ************** DEBUGGER **************
|
883
|
+
|
637
884
|
function Debugger() {
|
638
885
|
this.active = false;
|
639
886
|
this.depth = 0;
|
640
887
|
this.formList = [];
|
641
888
|
}
|
889
|
+
|
642
890
|
Debugger.prototype = {
|
643
891
|
constructor: Debugger,
|
644
|
-
enable: function() {
|
892
|
+
enable: function () {
|
645
893
|
this.active = true;
|
646
894
|
},
|
647
|
-
log: function() {
|
648
|
-
if (!this.active)
|
649
|
-
return;
|
895
|
+
log: function () {
|
896
|
+
if (!this.active) return;
|
650
897
|
var nodeType;
|
898
|
+
|
651
899
|
switch (this.node) {
|
652
900
|
case 0:
|
653
|
-
nodeType =
|
901
|
+
nodeType = 'FORM';
|
654
902
|
break;
|
903
|
+
|
655
904
|
case 1:
|
656
|
-
nodeType =
|
905
|
+
nodeType = 'CHK';
|
657
906
|
break;
|
907
|
+
|
658
908
|
case 2:
|
659
|
-
nodeType =
|
909
|
+
nodeType = 'S-CHK';
|
660
910
|
break;
|
661
911
|
}
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
`( ${this.offset} ) -> ( ${this.dataOffset + this.length} )`,
|
666
|
-
this.node == 0 ? " {" : "",
|
667
|
-
this.skipped ? "SKIPPED" : "",
|
668
|
-
this.node == 0 && this.skipped ? "}" : ""
|
669
|
-
);
|
912
|
+
|
913
|
+
console.log('| '.repeat(this.depth) + nodeType, this.nodeID, `( ${this.offset} ) -> ( ${this.dataOffset + this.length} )`, this.node == 0 ? ' {' : '', this.skipped ? 'SKIPPED' : '', this.node == 0 && this.skipped ? '}' : '');
|
914
|
+
|
670
915
|
if (this.node == 0 && !this.skipped) {
|
671
916
|
this.depth += 1;
|
672
917
|
this.formList.push(this.dataOffset + this.length);
|
673
918
|
}
|
919
|
+
|
674
920
|
this.skipped = false;
|
675
921
|
},
|
676
|
-
closeForms: function() {
|
677
|
-
if (!this.active)
|
678
|
-
|
922
|
+
closeForms: function () {
|
923
|
+
if (!this.active) return;
|
924
|
+
|
679
925
|
for (let i = this.formList.length - 1; i >= 0; i--) {
|
680
926
|
if (this.offset >= this.formList[i]) {
|
681
927
|
this.depth -= 1;
|
682
|
-
console.log(
|
928
|
+
console.log('| '.repeat(this.depth) + '}');
|
683
929
|
this.formList.splice(-1, 1);
|
684
930
|
}
|
685
931
|
}
|
686
932
|
}
|
687
|
-
};
|
933
|
+
}; // ************** UTILITY FUNCTIONS **************
|
934
|
+
|
688
935
|
function isEven(num) {
|
689
936
|
return num % 2;
|
690
|
-
}
|
937
|
+
} // calculate the length of the string in the buffer
|
938
|
+
// this will be string.length + nullbyte + optional padbyte to make the length even
|
939
|
+
|
940
|
+
|
691
941
|
function stringOffset(string) {
|
692
942
|
return string.length + 1 + (isEven(string.length + 1) ? 1 : 0);
|
693
|
-
}
|
943
|
+
} // for testing purposes, dump buffer to console
|
944
|
+
// printBuffer( this.reader.dv.buffer, this.reader.offset, length );
|
945
|
+
|
946
|
+
|
694
947
|
function printBuffer(buffer, from, to) {
|
695
|
-
console.log(
|
948
|
+
console.log(LoaderUtils.decodeText(new Uint8Array(buffer, from, to)));
|
696
949
|
}
|
697
|
-
|
950
|
+
|
951
|
+
export { IFFParser };
|