@babylonjs/core 5.27.0 → 5.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animatable.js +2 -1
- package/Animations/animatable.js.map +1 -1
- package/Animations/runtimeAnimation.js +1 -1
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.js +2 -1
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Audio/sound.js +70 -45
- package/Audio/sound.js.map +1 -1
- package/Audio/soundTrack.js +12 -6
- package/Audio/soundTrack.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +2 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +2 -1
- package/Behaviors/Meshes/followBehavior.js.map +1 -1
- package/Behaviors/Meshes/handConstraintBehavior.js +2 -2
- package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
- package/Bones/bone.js +2 -1
- package/Bones/bone.js.map +1 -1
- package/Bones/skeleton.js +3 -2
- package/Bones/skeleton.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +2 -2
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +5 -3
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +2 -2
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +2 -2
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/arcRotateCamera.js +2 -1
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.js +6 -4
- package/Cameras/camera.js.map +1 -1
- package/Compute/computeEffect.js +8 -5
- package/Compute/computeEffect.js.map +1 -1
- package/Compute/computeShader.js +12 -11
- package/Compute/computeShader.js.map +1 -1
- package/Culling/Octrees/octreeSceneComponent.js +2 -1
- package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
- package/Culling/boundingBox.js +3 -2
- package/Culling/boundingBox.js.map +1 -1
- package/Culling/ray.js +2 -1
- package/Culling/ray.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.js +9 -7
- package/Debug/directionalLightFrustumViewer.js.map +1 -1
- package/Debug/rayHelper.js +2 -1
- package/Debug/rayHelper.js.map +1 -1
- package/Debug/skeletonViewer.js +29 -24
- package/Debug/skeletonViewer.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.js +5 -3
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.js +2 -1
- package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.js +12 -9
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.js +4 -4
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Extensions/engine.readTexture.js +3 -2
- package/Engines/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/Extensions/engine.views.js +2 -1
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +11 -6
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +2 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js +2 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.js +4 -2
- package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js +4 -4
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +2 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +3 -2
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.textureSampler.js +2 -1
- package/Engines/WebGPU/Extensions/engine.textureSampler.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.js +2 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.js +7 -6
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +18 -14
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +4 -3
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.js +3 -2
- package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js +2 -1
- package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuDepthCullingState.js +2 -2
- package/Engines/WebGPU/webgpuDepthCullingState.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +2 -1
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +4 -3
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.js +5 -4
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +5 -3
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.js +4 -2
- package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessingContext.js +4 -2
- package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +2 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.js +3 -2
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js +2 -1
- package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +40 -38
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/engine.js +5 -3
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.js +7 -5
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.js +14 -9
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.js +25 -16
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +87 -61
- package/Engines/webgpuEngine.js.map +1 -1
- package/Gamepads/gamepadManager.js +1 -1
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/axisDragGizmo.js +4 -2
- package/Gizmos/axisDragGizmo.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +6 -4
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/gizmo.js +21 -6
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/gizmoManager.js +3 -2
- package/Gizmos/gizmoManager.js.map +1 -1
- package/Gizmos/planeDragGizmo.js +4 -2
- package/Gizmos/planeDragGizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +4 -2
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Helpers/videoDome.js +2 -1
- package/Helpers/videoDome.js.map +1 -1
- package/Layers/effectLayer.js +5 -3
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.js +4 -3
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +2 -1
- package/Layers/highlightLayer.js.map +1 -1
- package/LensFlares/lensFlareSystem.js +2 -1
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +25 -21
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +13 -8
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +2 -1
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/sceneLoader.js +1 -1
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js +2 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +2 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +10 -6
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.js +3 -2
- package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +2 -1
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +26 -24
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +3 -3
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +48 -44
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +13 -13
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +27 -26
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/instancesBlock.js +2 -2
- package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +6 -6
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.js +3 -2
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
- package/Materials/Node/Blocks/colorMergerBlock.js +5 -4
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/customBlock.js +4 -3
- package/Materials/Node/Blocks/customBlock.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.js +5 -4
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +7 -6
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +4 -3
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialDecorator.js +1 -1
- package/Materials/Node/nodeMaterialDecorator.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +25 -19
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js +9 -6
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.js +7 -4
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +7 -4
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/Textures/Loaders/envTextureLoader.js +2 -2
- package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
- package/Materials/Textures/Packer/packer.js +14 -13
- package/Materials/Textures/Packer/packer.js.map +1 -1
- package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +2 -1
- package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js +2 -1
- package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +7 -4
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.js +8 -4
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.js +4 -2
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/internalTexture.js +4 -2
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +6 -3
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.js +6 -4
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/rawTexture.js +1 -1
- package/Materials/Textures/rawTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.js +26 -15
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.js +16 -13
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/thinRenderTargetTexture.js +4 -2
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.js +3 -3
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/drawWrapper.js +4 -2
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.js +15 -10
- package/Materials/effect.js.map +1 -1
- package/Materials/material.d.ts +14 -0
- package/Materials/material.detailMapConfiguration.js +2 -1
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +35 -3
- package/Materials/material.js.map +1 -1
- package/Materials/materialDefines.js +6 -5
- package/Materials/materialDefines.js.map +1 -1
- package/Materials/materialHelper.js +1 -1
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/materialPluginManager.js +3 -2
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/multiMaterial.js +2 -1
- package/Materials/multiMaterial.js.map +1 -1
- package/Materials/shaderMaterial.js +12 -9
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.js +13 -8
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.js +12 -10
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.js +1 -1
- package/Materials/uniformBuffer.js.map +1 -1
- package/Maths/math.vector.d.ts +7 -6
- package/Maths/math.vector.js +10 -8
- package/Maths/math.vector.js.map +1 -1
- package/Meshes/Builders/groundBuilder.js +1 -1
- package/Meshes/Builders/groundBuilder.js.map +1 -1
- package/Meshes/abstractMesh.js +8 -5
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/csg.js +2 -1
- package/Meshes/csg.js.map +1 -1
- package/Meshes/instancedMesh.js +2 -1
- package/Meshes/instancedMesh.js.map +1 -1
- package/Meshes/mesh.js +21 -12
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.js +4 -3
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/subMesh.js +14 -8
- package/Meshes/subMesh.js.map +1 -1
- package/Meshes/thinInstanceMesh.js +18 -12
- package/Meshes/thinInstanceMesh.js.map +1 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js +2 -1
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +12 -8
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.js +3 -2
- package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
- package/Misc/arrayTools.js +1 -1
- package/Misc/arrayTools.js.map +1 -1
- package/Misc/computePressure.js +9 -6
- package/Misc/computePressure.js.map +1 -1
- package/Misc/dataStorage.js +1 -1
- package/Misc/dataStorage.js.map +1 -1
- package/Misc/environmentTextureTools.js +2 -1
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.js +31 -8
- package/Misc/fileTools.js.map +1 -1
- package/Misc/logger.js +2 -1
- package/Misc/logger.js.map +1 -1
- package/Misc/minMaxReducer.js +3 -2
- package/Misc/minMaxReducer.js.map +1 -1
- package/Misc/sceneRecorder.js +1 -1
- package/Misc/sceneRecorder.js.map +1 -1
- package/Misc/textureTools.js +3 -3
- package/Misc/textureTools.js.map +1 -1
- package/Misc/timer.js +5 -3
- package/Misc/timer.js.map +1 -1
- package/Misc/tools.js +4 -4
- package/Misc/tools.js.map +1 -1
- package/Misc/trajectoryClassifier.js +3 -3
- package/Misc/trajectoryClassifier.js.map +1 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js +2 -1
- package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
- package/Particles/computeShaderParticleSystem.js +6 -3
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.js +13 -8
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleSystem.js +22 -14
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.js +2 -1
- package/Particles/particleSystemComponent.js.map +1 -1
- package/Particles/pointsCloudSystem.js +7 -4
- package/Particles/pointsCloudSystem.js.map +1 -1
- package/Particles/solidParticleSystem.js +2 -2
- package/Particles/solidParticleSystem.js.map +1 -1
- package/Particles/webgl2ParticleSystem.js +2 -1
- package/Particles/webgl2ParticleSystem.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +5 -4
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js +1 -1
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.js +8 -5
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/postProcessManager.js +6 -4
- package/PostProcesses/postProcessManager.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +7 -4
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/Probes/reflectionProbe.js +4 -2
- package/Probes/reflectionProbe.js.map +1 -1
- package/Rendering/boundingBoxRenderer.js +3 -2
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/depthPeelingRenderer.d.ts +12 -0
- package/Rendering/depthPeelingRenderer.js +30 -6
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/depthPeelingSceneComponent.js +4 -2
- package/Rendering/depthPeelingSceneComponent.js.map +1 -1
- package/Rendering/depthRenderer.js +10 -6
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/edgesRenderer.js +11 -8
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.js +2 -2
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js +4 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Shaders/pbr.fragment.js +4 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Sprites/spriteManager.js +2 -1
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.js +2 -1
- package/Sprites/spriteRenderer.js.map +1 -1
- package/States/stencilStateComposer.js +4 -2
- package/States/stencilStateComposer.js.map +1 -1
- package/XR/features/WebXRAnchorSystem.js +2 -1
- package/XR/features/WebXRAnchorSystem.js.map +1 -1
- package/XR/features/WebXRControllerMovement.js +7 -6
- package/XR/features/WebXRControllerMovement.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +6 -4
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.js +2 -1
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRHandTracking.js +26 -18
- package/XR/features/WebXRHandTracking.js.map +1 -1
- package/XR/features/WebXRLayers.js +1 -1
- package/XR/features/WebXRLayers.js.map +1 -1
- package/XR/features/WebXRLightEstimation.js +6 -3
- package/XR/features/WebXRLightEstimation.js.map +1 -1
- package/XR/features/WebXRMeshDetector.js +2 -1
- package/XR/features/WebXRMeshDetector.js.map +1 -1
- package/XR/features/WebXRNearInteraction.js +7 -4
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/features/WebXRPlaneDetector.js +2 -1
- package/XR/features/WebXRPlaneDetector.js.map +1 -1
- package/XR/native/nativeXRFrame.js +2 -1
- package/XR/native/nativeXRFrame.js.map +1 -1
- package/XR/webXRCamera.js +2 -1
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRExperienceHelper.js +7 -5
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRInputSource.js +2 -1
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRSessionManager.js +27 -14
- package/XR/webXRSessionManager.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +17 -11
- package/scene.js.map +1 -1
|
@@ -21,6 +21,7 @@ export class TexturePacker {
|
|
|
21
21
|
* @returns TexturePacker
|
|
22
22
|
*/
|
|
23
23
|
constructor(name, meshes, options, scene) {
|
|
24
|
+
var _b, _c, _d, _e, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
24
25
|
this.name = name;
|
|
25
26
|
this.meshes = meshes;
|
|
26
27
|
this.scene = scene;
|
|
@@ -28,7 +29,7 @@ export class TexturePacker {
|
|
|
28
29
|
* Run through the options and set what ever defaults are needed that where not declared.
|
|
29
30
|
*/
|
|
30
31
|
this.options = options;
|
|
31
|
-
this.options.map = this.options.map
|
|
32
|
+
this.options.map = (_b = this.options.map) !== null && _b !== void 0 ? _b : [
|
|
32
33
|
"ambientTexture",
|
|
33
34
|
"bumpTexture",
|
|
34
35
|
"diffuseTexture",
|
|
@@ -39,29 +40,29 @@ export class TexturePacker {
|
|
|
39
40
|
"refractionTexture",
|
|
40
41
|
"specularTexture",
|
|
41
42
|
];
|
|
42
|
-
this.options.uvsIn = this.options.uvsIn
|
|
43
|
-
this.options.uvsOut = this.options.uvsOut
|
|
44
|
-
this.options.layout = this.options.layout
|
|
43
|
+
this.options.uvsIn = (_c = this.options.uvsIn) !== null && _c !== void 0 ? _c : VertexBuffer.UVKind;
|
|
44
|
+
this.options.uvsOut = (_d = this.options.uvsOut) !== null && _d !== void 0 ? _d : VertexBuffer.UVKind;
|
|
45
|
+
this.options.layout = (_e = this.options.layout) !== null && _e !== void 0 ? _e : TexturePacker.LAYOUT_STRIP;
|
|
45
46
|
if (this.options.layout === TexturePacker.LAYOUT_COLNUM) {
|
|
46
|
-
this.options.colnum = this.options.colnum
|
|
47
|
+
this.options.colnum = (_g = this.options.colnum) !== null && _g !== void 0 ? _g : 8;
|
|
47
48
|
}
|
|
48
|
-
this.options.updateInputMeshes = this.options.updateInputMeshes
|
|
49
|
-
this.options.disposeSources = this.options.disposeSources
|
|
49
|
+
this.options.updateInputMeshes = (_h = this.options.updateInputMeshes) !== null && _h !== void 0 ? _h : true;
|
|
50
|
+
this.options.disposeSources = (_j = this.options.disposeSources) !== null && _j !== void 0 ? _j : true;
|
|
50
51
|
this._expecting = 0;
|
|
51
|
-
this.options.fillBlanks = this.options.fillBlanks
|
|
52
|
+
this.options.fillBlanks = (_k = this.options.fillBlanks) !== null && _k !== void 0 ? _k : true;
|
|
52
53
|
if (this.options.fillBlanks === true) {
|
|
53
|
-
this.options.customFillColor = this.options.customFillColor
|
|
54
|
+
this.options.customFillColor = (_l = this.options.customFillColor) !== null && _l !== void 0 ? _l : "black";
|
|
54
55
|
}
|
|
55
|
-
this.options.frameSize = this.options.frameSize
|
|
56
|
-
this.options.paddingRatio = this.options.paddingRatio
|
|
56
|
+
this.options.frameSize = (_m = this.options.frameSize) !== null && _m !== void 0 ? _m : 256;
|
|
57
|
+
this.options.paddingRatio = (_o = this.options.paddingRatio) !== null && _o !== void 0 ? _o : 0.0115;
|
|
57
58
|
this._paddingValue = Math.ceil(this.options.frameSize * this.options.paddingRatio);
|
|
58
59
|
//Make it an even padding Number.
|
|
59
60
|
if (this._paddingValue % 2 !== 0) {
|
|
60
61
|
this._paddingValue++;
|
|
61
62
|
}
|
|
62
|
-
this.options.paddingMode = this.options.paddingMode
|
|
63
|
+
this.options.paddingMode = (_p = this.options.paddingMode) !== null && _p !== void 0 ? _p : TexturePacker.SUBUV_WRAP;
|
|
63
64
|
if (this.options.paddingMode === TexturePacker.SUBUV_COLOR) {
|
|
64
|
-
this.options.paddingColor = this.options.paddingColor
|
|
65
|
+
this.options.paddingColor = (_q = this.options.paddingColor) !== null && _q !== void 0 ? _q : new Color4(0, 0, 0, 1.0);
|
|
65
66
|
}
|
|
66
67
|
this.sets = {};
|
|
67
68
|
this.frames = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packer.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Textures/Packer/packer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAiG5C;;;GAGG;AACH,MAAM,OAAO,aAAa;IA0CtB;;;;;;;OAOG;IACH,YAAY,IAAY,EAAE,MAAsB,EAAE,OAA8B,EAAE,KAAY;QAC1F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB;;WAEG;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;YACnC,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;SACpB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,YAAY,CAAC;QAExE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,aAAa,EAAE;YACrD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;QAE1D,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC;SAC1E;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;QAEhE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAEnF,iCAAiC;QACjC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC,UAAU,CAAC;QAEhF,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,EAAE;YACxD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;SACrF;QAED,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,OAAmB;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEtC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEzB,MAAM,EAAE,GAAG,IAAI,cAAc,CACzB,IAAI,CAAC,IAAI,GAAG,eAAe,GAAG,OAAO,GAAG,KAAK,EAC7C,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,EACrC,IAAI,CAAC,KAAK,EACV,IAAI,EAAE,eAAe;YACrB,OAAO,CAAC,sBAAsB,EAC9B,MAAM,CAAC,kBAAkB,CAC5B,CAAC;YAEF,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;YAC5B,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;YAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACvC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SACpC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC;QAEnC,MAAM,IAAI,GAAG,GAAG,EAAE;YACd,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC;QAC7G,CAAC,CAAC;QAEF,qBAAqB;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC;YAEvB,uCAAuC;YACvC,oDAAoD;YACpD,wDAAwD;YACxD,2DAA2D;YAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,WAAW,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACtE,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAEvC,MAAM,QAAQ,GAAG,GAAG,EAAE;oBAClB,SAAS,EAAE,CAAC;oBACZ,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBAE9C,YAAY;oBACZ,MAAM,EAAE,GAAI,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;oBAC5B,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACjE,WAAW,CAAC,OAAO,EAAE,CAAC;oBACtB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACjB,IAAI,SAAS,IAAI,SAAS,EAAE;wBACxB,IAAI,EAAE,CAAC;wBACP,OAAO,EAAE,CAAC;wBACV,OAAO;qBACV;gBACL,CAAC,CAAC;gBAEF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;gBACrC,IAAI,CAAC,GAAG,IAAK,GAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBACxC,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;oBAEhC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;wBACzB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAyB,CAAC;qBAC1D;oBAED,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBAE7B,QAAQ,EAAE,CAAC;iBACd;qBAAM;oBACH,MAAM,UAAU,GAAI,GAAW,CAAC,OAAO,CAAC,CAAC;oBACzC,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;oBAExB,IAAI,UAAU,YAAY,cAAc,EAAE;wBACtC,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;qBACnE;yBAAM;wBACH,GAAG,CAAC,GAAG,GAAG,UAAW,CAAC,GAAG,CAAC;qBAC7B;oBACD,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAEpC,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;wBACd,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;wBAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAC7B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAE1B,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpC,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAEjF,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;4BAC9B,WAAW;4BACX,KAAK,CAAC;gCACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oCACxB,GAAG,CAAC,SAAS,CACT,GAAG,EACH,CAAC,EACD,CAAC,EACD,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,MAAM,EACV,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EACnC,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAC7C,QAAQ,EACR,QAAQ,CACX,CAAC;iCACL;gCACD,MAAM;4BACV,aAAa;4BACb,KAAK,CAAC;gCACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;oCAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oCAElH,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oCAEpG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oCAEtF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;iCACvG;gCAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCAEpJ,MAAM;4BACV,YAAY;4BACZ,KAAK,CAAC;gCACF,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gCAC5E,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gCAC9B,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCACpD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCAEpJ,MAAM;yBACb;wBAED,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBAEnC,QAAQ,EAAE,CAAC;oBACf,CAAC,CAAC;iBACL;aACJ;SACJ;IACL,CAAC;IAED;;;OAGG;IACK,cAAc;QAClB,MAAM,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACrD,MAAM,OAAO,GAAW,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAEhD,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACzB,KAAK,CAAC,CAAC,CAAC;gBACJ,cAAc;gBACd,OAAO,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,GAAG,CAAC,GAAG,OAAO,GAAG,UAAU,EAAE,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;aAChG;YACD,KAAK,CAAC,CAAC,CAAC;gBACJ,QAAQ;gBACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;gBAC5D,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAClC;YACD,KAAK,CAAC,CAAC,CAAC;gBACJ,QAAQ;gBACR,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;gBACzD,OAAO,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;aACtG;SACJ;QAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACK,sBAAsB,CAAC,QAAgB,EAAE,OAAe,EAAE,MAAe,EAAE,OAAgB,EAAE,MAAe;QAChH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEzB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAEpE,MAAM,OAAO,GAAY,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxD,MAAM,WAAW,GAAY,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,MAAM,GAAY,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,KAAK,GAAuB,IAAI,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAE3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAExB,mBAAmB;YACnB,IAAI,MAAM,EAAE;gBACR,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;aACpC;SACJ;IACL,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,KAAa;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;QAEzB,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACzB,KAAK,CAAC,CAAC,CAAC;gBACJ,cAAc;gBACd,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC;gBACxB,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;aACzC;YACD,KAAK,CAAC,CAAC,CAAC;gBACJ,QAAQ;gBACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;gBACtC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;gBAClC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;gBACvB,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;aACtD;YACD,KAAK,CAAC,CAAC,CAAC;gBACJ,QAAQ;gBACR,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;gBACzD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;gBACnC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;gBAC/B,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;gBAC3C,OAAO,IAAI,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aAC1D;SACJ;QAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,IAAkB,EAAE,OAAe;QACrD,MAAM,KAAK,GAAwB,IAAI,CAAC,MAAc,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,IAAI,IAAK,CAAC,MAAM,EAAE;YACd,OAAO,GAAG,IAAK,CAAC,MAAM,IAAI,CAAC,CAAC;SAC/B;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;YACjC,KAAK,CAAC,IAAI,CAAE,IAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAG,IAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACxH;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,CAAe,EAAE,QAAiB,KAAK;QACpE,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,CAAC,EAAO,EAAE,EAAE;YACzB,IAAI,EAAE,CAAC,OAAO,EAAE;gBACZ,EAAE,CAAC,OAAO,EAAE,CAAC;aAChB;QACL,CAAC,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE;gBACR,IAAI,CAAC,GAAG,EAAE;oBACN,OAAO;iBACV;gBACD,IAAK,GAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAChC,QAAQ,CAAE,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/B,GAAW,CAAC,OAAO,CAAC,GAAI,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,CAAC;iBACvD;aACJ;iBAAM;gBACH,IAAK,GAAW,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAChC,QAAQ,CAAE,GAAW,CAAC,OAAO,CAAC,CAAC,CAAC;iBACnC;gBACA,GAAW,CAAC,OAAO,CAAC,GAAI,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,CAAC;aACvD;SACJ;IACL,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,CAAe,EAAE,OAAe,EAAE,iBAA0B,KAAK;QACnF,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAC1C;IACL,CAAC;IAED;;;OAGG;IACI,YAAY;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI;gBACA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,sBAAsB;oBACtB,OAAO,EAAE,CAAC;oBACV,OAAO;iBACV;gBACD,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,MAAM,SAAS,GAAG,CAAC,GAAa,EAAE,EAAE;oBAChC,IAAI,EAAE,CAAC;oBACP,kEAAkE;oBAClE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;wBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC9C,MAAM,KAAK,GAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC1C,MAAM,CAAC,GAA8B,GAAW,CAAC,KAAK,CAAC,CAAC;4BAExD,IAAI,CAAC,KAAK,IAAI,EAAE;gCACZ,IAAI,CAAE,IAAI,CAAC,IAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;oCACzC,IAAI,CAAC,IAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iCAClD;gCAED,IAAI,CAAC,UAAU,EAAE,CAAC;6BACrB;yBACJ;wBAED,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;4BAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;yBAC/B;qBACJ;gBACL,CAAC,CAAC;gBAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,QAAQ,GAAuB,IAAI,CAAC,QAAQ,CAAC;oBAEnD,IAAI,CAAC,QAAQ,EAAE;wBACX,IAAI,EAAE,CAAC;wBACP,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;4BAC7B,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;yBACtC;wBACD,SAAS;qBACZ;oBAED,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC3C,SAAS,CAAC,QAAoB,CAAC,CAAC;oBACpC,CAAC,CAAC,CAAC;iBACN;aACJ;YAAC,OAAO,CAAC,EAAE;gBACR,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,OAAO;QACV,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;SACzC;IACL,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,YAAoB,KAAK,EAAE,UAAkB,CAAC;QAC1D,UAAU,CAAC,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG;gBACT,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,EAAE;aACb,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI;gBACA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACnC,MAAM,OAAO,GAAW,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM,EAAE,GAAI,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,CAAC;oBACtC,IAAI,CAAC,IAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;iBACjG;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACnC,MAAM,GAAG,GAAW,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,CAAC;iBAC3D;gBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,CAAC,MAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACzF;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC;gBAC1C,OAAO;aACV;YAED,MAAM,IAAI,GAAG,+BAA+B,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjG,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACvC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC9B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,EAAE,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,IAAY;QAC9B,IAAI;YACA,MAAM,UAAU,GAAuB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,CAAC,OAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAI,UAAU,CAAC,OAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aACjF;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAClD,MAAM,KAAK,GAAuB,IAAI,kBAAkB,CACpD,CAAC,GAAG,CAAC,EACL,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAC3D,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAClE,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC9E,IAAI,CAAC,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;aACxC;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,GAAG,CAAC,CAAC;SACrD;IACL,CAAC;;AAnkBD,+BAA+B;AACR,0BAAY,GAAG,CAAC,CAAC;AACxC,+BAA+B;AACR,2BAAa,GAAG,CAAC,CAAC;AACzC,+BAA+B;AACR,2BAAa,GAAG,CAAC,CAAC;AAEzC,+BAA+B;AACR,wBAAU,GAAG,CAAC,CAAC;AACtC,+BAA+B;AACR,0BAAY,GAAG,CAAC,CAAC;AACxC,+BAA+B;AACR,yBAAW,GAAG,CAAC,CAAC","sourcesContent":["import { Engine } from \"../../../Engines/engine\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Material } from \"../../material\";\r\nimport { Texture } from \"../texture\";\r\nimport { DynamicTexture } from \"../dynamicTexture\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../../../Maths/math.color\";\r\nimport { TexturePackerFrame } from \"./frame\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Tools } from \"../../../Misc/tools\";\r\n\r\n/**\r\n * Defines the basic options interface of a TexturePacker\r\n */\r\nexport interface ITexturePackerOptions {\r\n /**\r\n * Custom targets for the channels of a texture packer. Default is all the channels of the Standard Material\r\n */\r\n map?: string[];\r\n\r\n /**\r\n * the UV input targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsIn?: string;\r\n\r\n /**\r\n * the UV output targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsOut?: string;\r\n\r\n /**\r\n * number representing the layout style. Defaults to LAYOUT_STRIP\r\n */\r\n layout?: number;\r\n\r\n /**\r\n * number of columns if using custom column count layout(2). This defaults to 4.\r\n */\r\n colnum?: number;\r\n\r\n /**\r\n * flag to update the input meshes to the new packed texture after compilation. Defaults to true.\r\n */\r\n updateInputMeshes?: boolean;\r\n\r\n /**\r\n * boolean flag to dispose all the source textures. Defaults to true.\r\n */\r\n disposeSources?: boolean;\r\n\r\n /**\r\n * Fills the blank cells in a set to the customFillColor. Defaults to true.\r\n */\r\n fillBlanks?: boolean;\r\n\r\n /**\r\n * string value representing the context fill style color. Defaults to 'black'.\r\n */\r\n customFillColor?: string;\r\n\r\n /**\r\n * Width and Height Value of each Frame in the TexturePacker Sets\r\n */\r\n frameSize?: number;\r\n\r\n /**\r\n * Ratio of the value to add padding wise to each cell. Defaults to 0.0115\r\n */\r\n paddingRatio?: number;\r\n\r\n /**\r\n * Number that declares the fill method for the padding gutter.\r\n */\r\n paddingMode?: number;\r\n\r\n /**\r\n * If in SUBUV_COLOR padding mode what color to use.\r\n */\r\n paddingColor?: Color3 | Color4;\r\n}\r\n\r\n/**\r\n * Defines the basic interface of a TexturePacker JSON File\r\n */\r\nexport interface ITexturePackerJSON {\r\n /**\r\n * The frame ID\r\n */\r\n name: string;\r\n\r\n /**\r\n * The base64 channel data\r\n */\r\n sets: any;\r\n\r\n /**\r\n * The options of the Packer\r\n */\r\n options: ITexturePackerOptions;\r\n\r\n /**\r\n * The frame data of the Packer\r\n */\r\n frames: Array<number>;\r\n}\r\n\r\n/**\r\n * This is a support class that generates a series of packed texture sets.\r\n * @see https://doc.babylonjs.com/babylon101/materials\r\n */\r\nexport class TexturePacker {\r\n /** Packer Layout Constant 0 */\r\n public static readonly LAYOUT_STRIP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly LAYOUT_POWER2 = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly LAYOUT_COLNUM = 2;\r\n\r\n /** Packer Layout Constant 0 */\r\n public static readonly SUBUV_WRAP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly SUBUV_EXTEND = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly SUBUV_COLOR = 2;\r\n\r\n /** The Name of the Texture Package */\r\n public name: string;\r\n\r\n /** The scene scope of the TexturePacker */\r\n public scene: Scene;\r\n\r\n /** The Meshes to target */\r\n public meshes: AbstractMesh[];\r\n\r\n /** Arguments passed with the Constructor */\r\n public options: ITexturePackerOptions;\r\n\r\n /** The promise that is started upon initialization */\r\n public promise: Nullable<Promise<TexturePacker | string>>;\r\n\r\n /** The Container object for the channel sets that are generated */\r\n public sets: object;\r\n\r\n /** The Container array for the frames that are generated */\r\n public frames: TexturePackerFrame[];\r\n\r\n /** The expected number of textures the system is parsing. */\r\n private _expecting: number;\r\n\r\n /** The padding value from Math.ceil(frameSize * paddingRatio) */\r\n private _paddingValue: number;\r\n\r\n /**\r\n * Initializes a texture package series from an array of meshes or a single mesh.\r\n * @param name The name of the package\r\n * @param meshes The target meshes to compose the package from\r\n * @param options The arguments that texture packer should follow while building.\r\n * @param scene The scene which the textures are scoped to.\r\n * @returns TexturePacker\r\n */\r\n constructor(name: string, meshes: AbstractMesh[], options: ITexturePackerOptions, scene: Scene) {\r\n this.name = name;\r\n this.meshes = meshes;\r\n this.scene = scene;\r\n\r\n /**\r\n * Run through the options and set what ever defaults are needed that where not declared.\r\n */\r\n this.options = options;\r\n this.options.map = this.options.map ?? [\r\n \"ambientTexture\",\r\n \"bumpTexture\",\r\n \"diffuseTexture\",\r\n \"emissiveTexture\",\r\n \"lightmapTexture\",\r\n \"opacityTexture\",\r\n \"reflectionTexture\",\r\n \"refractionTexture\",\r\n \"specularTexture\",\r\n ];\r\n\r\n this.options.uvsIn = this.options.uvsIn ?? VertexBuffer.UVKind;\r\n this.options.uvsOut = this.options.uvsOut ?? VertexBuffer.UVKind;\r\n this.options.layout = this.options.layout ?? TexturePacker.LAYOUT_STRIP;\r\n\r\n if (this.options.layout === TexturePacker.LAYOUT_COLNUM) {\r\n this.options.colnum = this.options.colnum ?? 8;\r\n }\r\n\r\n this.options.updateInputMeshes = this.options.updateInputMeshes ?? true;\r\n this.options.disposeSources = this.options.disposeSources ?? true;\r\n this._expecting = 0;\r\n\r\n this.options.fillBlanks = this.options.fillBlanks ?? true;\r\n\r\n if (this.options.fillBlanks === true) {\r\n this.options.customFillColor = this.options.customFillColor ?? \"black\";\r\n }\r\n\r\n this.options.frameSize = this.options.frameSize ?? 256;\r\n this.options.paddingRatio = this.options.paddingRatio ?? 0.0115;\r\n\r\n this._paddingValue = Math.ceil(this.options.frameSize * this.options.paddingRatio);\r\n\r\n //Make it an even padding Number.\r\n if (this._paddingValue % 2 !== 0) {\r\n this._paddingValue++;\r\n }\r\n\r\n this.options.paddingMode = this.options.paddingMode ?? TexturePacker.SUBUV_WRAP;\r\n\r\n if (this.options.paddingMode === TexturePacker.SUBUV_COLOR) {\r\n this.options.paddingColor = this.options.paddingColor ?? new Color4(0, 0, 0, 1.0);\r\n }\r\n\r\n this.sets = {};\r\n this.frames = [];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Starts the package process\r\n * @param resolve The promises resolution function\r\n * @returns TexturePacker\r\n */\r\n private _createFrames(resolve: () => void) {\r\n const dtSize = this._calculateSize();\r\n const dtUnits = new Vector2(1, 1).divide(dtSize);\r\n let doneCount = 0;\r\n const expecting = this._expecting;\r\n const meshLength = this.meshes.length;\r\n\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n\r\n const dt = new DynamicTexture(\r\n this.name + \".TexturePack.\" + setName + \"Set\",\r\n { width: dtSize.x, height: dtSize.y },\r\n this.scene,\r\n true, //Generate Mips\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n Engine.TEXTUREFORMAT_RGBA\r\n );\r\n\r\n const dtx = dt.getContext();\r\n dtx.fillStyle = \"rgba(0,0,0,0)\";\r\n dtx.fillRect(0, 0, dtSize.x, dtSize.y);\r\n dt.update(false);\r\n (this.sets as any)[setName] = dt;\r\n }\r\n\r\n const baseSize = this.options.frameSize || 256;\r\n const padding = this._paddingValue;\r\n const tcs = baseSize + 2 * padding;\r\n\r\n const done = () => {\r\n this._calculateMeshUVFrames(baseSize, padding, dtSize, dtUnits, this.options.updateInputMeshes || false);\r\n };\r\n\r\n //Update the Textures\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n const mat = m.material;\r\n\r\n //Check if the material has the texture\r\n //Create a temporary canvas the same size as 1 frame\r\n //Then apply the texture to the center and the 8 offsets\r\n //Copy the Context and place in the correct frame on the DT\r\n\r\n for (let j = 0; j < sKeys.length; j++) {\r\n const tempTexture = new DynamicTexture(\"temp\", tcs, this.scene, true);\r\n const tcx = tempTexture.getContext();\r\n const offset = this._getFrameOffset(i);\r\n\r\n const updateDt = () => {\r\n doneCount++;\r\n tempTexture.update(false);\r\n const iDat = tcx.getImageData(0, 0, tcs, tcs);\r\n\r\n //Update Set\r\n const dt = (this.sets as any)[setName];\r\n const dtx = dt.getContext();\r\n dtx.putImageData(iDat, dtSize.x * offset.x, dtSize.y * offset.y);\r\n tempTexture.dispose();\r\n dt.update(false);\r\n if (doneCount == expecting) {\r\n done();\r\n resolve();\r\n return;\r\n }\r\n };\r\n\r\n const setName = sKeys[j] || \"_blank\";\r\n if (!mat || (mat as any)[setName] === null) {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n\r\n if (this.options.fillBlanks) {\r\n tcx.fillStyle = this.options.customFillColor as string;\r\n }\r\n\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n\r\n updateDt();\r\n } else {\r\n const setTexture = (mat as any)[setName];\r\n const img = new Image();\r\n\r\n if (setTexture instanceof DynamicTexture) {\r\n img.src = setTexture.getContext().canvas.toDataURL(\"image/png\");\r\n } else {\r\n img.src = setTexture!.url;\r\n }\r\n Tools.SetCorsBehavior(img.src, img);\r\n\r\n img.onload = () => {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n tempTexture.update(false);\r\n\r\n tcx.setTransform(1, 0, 0, -1, 0, 0);\r\n const cellOffsets = [0, 0, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0, -1 - 1, 0, -1, 1, -1];\r\n\r\n switch (this.options.paddingMode) {\r\n //Wrap Mode\r\n case 0:\r\n for (let i = 0; i < 9; i++) {\r\n tcx.drawImage(\r\n img,\r\n 0,\r\n 0,\r\n img.width,\r\n img.height,\r\n padding + baseSize * cellOffsets[i],\r\n padding + baseSize * cellOffsets[i + 1] - tcs,\r\n baseSize,\r\n baseSize\r\n );\r\n }\r\n break;\r\n //Extend Mode\r\n case 1:\r\n for (let i = 0; i < padding; i++) {\r\n tcx.drawImage(img, 0, 0, img.width, img.height, i + baseSize * cellOffsets[0], padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding * 2 - i, padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, i - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, padding * 2 - i - tcs, baseSize, baseSize);\r\n }\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n //Color Mode\r\n case 2:\r\n tcx.fillStyle = (this.options.paddingColor || Color3.Black()).toHexString();\r\n tcx.fillRect(0, 0, tcs, -tcs);\r\n tcx.clearRect(padding, padding, baseSize, baseSize);\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n }\r\n\r\n tcx.setTransform(1, 0, 0, 1, 0, 0);\r\n\r\n updateDt();\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the Size of the Channel Sets\r\n * @returns Vector2\r\n */\r\n private _calculateSize(): Vector2 {\r\n const meshLength: number = this.meshes.length || 0;\r\n const baseSize: number = this.options.frameSize || 0;\r\n const padding: number = this._paddingValue || 0;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n return new Vector2(baseSize * meshLength + 2 * padding * meshLength, baseSize + 2 * padding);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n const size = baseSize * sqrtCount + 2 * padding * sqrtCount;\r\n return new Vector2(size, size);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n return new Vector2(baseSize * cols + 2 * padding * cols, baseSize * rowCnt + 2 * padding * rowCnt);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Calculates the UV data for the frames.\r\n * @param baseSize the base frameSize\r\n * @param padding the base frame padding\r\n * @param dtSize size of the Dynamic Texture for that channel\r\n * @param dtUnits is 1/dtSize\r\n * @param update flag to update the input meshes\r\n */\r\n private _calculateMeshUVFrames(baseSize: number, padding: number, dtSize: Vector2, dtUnits: Vector2, update: boolean) {\r\n const meshLength = this.meshes.length;\r\n\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n\r\n const scale = new Vector2(baseSize / dtSize.x, baseSize / dtSize.y);\r\n\r\n const pOffset: Vector2 = dtUnits.clone().scale(padding);\r\n const frameOffset: Vector2 = this._getFrameOffset(i);\r\n const offset: Vector2 = frameOffset.add(pOffset);\r\n\r\n const frame: TexturePackerFrame = new TexturePackerFrame(i, scale, offset);\r\n\r\n this.frames.push(frame);\r\n\r\n //Update Output UVs\r\n if (update) {\r\n this._updateMeshUV(m, i);\r\n this._updateTextureReferences(m);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the frames Offset.\r\n * @param index of the frame\r\n * @returns Vector2\r\n */\r\n private _getFrameOffset(index: number): Vector2 {\r\n const meshLength = this.meshes.length;\r\n let uvStep, yStep, xStep;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n uvStep = 1 / meshLength;\r\n return new Vector2(index * uvStep, 0);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n yStep = Math.floor(index / sqrtCount);\r\n xStep = index - yStep * sqrtCount;\r\n uvStep = 1 / sqrtCount;\r\n return new Vector2(xStep * uvStep, yStep * uvStep);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n xStep = Math.floor(index / rowCnt);\r\n yStep = index - xStep * rowCnt;\r\n uvStep = new Vector2(1 / cols, 1 / rowCnt);\r\n return new Vector2(xStep * uvStep.x, yStep * uvStep.y);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Updates a Mesh to the frame data\r\n * @param mesh that is the target\r\n * @param frameID or the frame index\r\n */\r\n private _updateMeshUV(mesh: AbstractMesh, frameID: number): void {\r\n const frame: TexturePackerFrame = (this.frames as any)[frameID];\r\n const uvIn = mesh.getVerticesData(this.options.uvsIn || VertexBuffer.UVKind);\r\n const uvOut = [];\r\n let toCount = 0;\r\n\r\n if (uvIn!.length) {\r\n toCount = uvIn!.length || 0;\r\n }\r\n\r\n for (let i = 0; i < toCount; i += 2) {\r\n uvOut.push((uvIn as any)[i] * frame.scale.x + frame.offset.x, (uvIn as any)[i + 1] * frame.scale.y + frame.offset.y);\r\n }\r\n\r\n mesh.setVerticesData(this.options.uvsOut || VertexBuffer.UVKind, uvOut);\r\n }\r\n\r\n /**\r\n * Updates a Meshes materials to use the texture packer channels\r\n * @param m is the mesh to target\r\n * @param force all channels on the packer to be set.\r\n */\r\n private _updateTextureReferences(m: AbstractMesh, force: boolean = false): void {\r\n const mat = m.material;\r\n const sKeys = Object.keys(this.sets);\r\n\r\n const _dispose = (_t: any) => {\r\n if (_t.dispose) {\r\n _t.dispose();\r\n }\r\n };\r\n\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n if (!force) {\r\n if (!mat) {\r\n return;\r\n }\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n } else {\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n }\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public method to set a Mesh to a frame\r\n * @param m that is the target\r\n * @param frameID or the frame index\r\n * @param updateMaterial trigger for if the Meshes attached Material be updated?\r\n */\r\n public setMeshToFrame(m: AbstractMesh, frameID: number, updateMaterial: boolean = false): void {\r\n this._updateMeshUV(m, frameID);\r\n if (updateMaterial) {\r\n this._updateTextureReferences(m, true);\r\n }\r\n }\r\n\r\n /**\r\n * Starts the async promise to compile the texture packer.\r\n * @returns Promise<void>\r\n */\r\n public processAsync(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n if (this.meshes.length === 0) {\r\n //Must be a JSON load!\r\n resolve();\r\n return;\r\n }\r\n let done = 0;\r\n const doneCheck = (mat: Material) => {\r\n done++;\r\n //Check Status of all Textures on all meshes, till they are ready.\r\n if (this.options.map) {\r\n for (let j = 0; j < this.options.map.length; j++) {\r\n const index: string = this.options.map[j];\r\n const t: Texture | DynamicTexture = (mat as any)[index];\r\n\r\n if (t !== null) {\r\n if (!(this.sets as any)[this.options.map[j]]) {\r\n (this.sets as any)[this.options.map[j]] = true;\r\n }\r\n\r\n this._expecting++;\r\n }\r\n }\r\n\r\n if (done === this.meshes.length) {\r\n this._createFrames(resolve);\r\n }\r\n }\r\n };\r\n\r\n for (let i = 0; i < this.meshes.length; i++) {\r\n const mesh = this.meshes[i];\r\n const material: Nullable<Material> = mesh.material;\r\n\r\n if (!material) {\r\n done++;\r\n if (done === this.meshes.length) {\r\n return this._createFrames(resolve);\r\n }\r\n continue;\r\n }\r\n\r\n material.forceCompilationAsync(mesh).then(() => {\r\n doneCheck(material as Material);\r\n });\r\n }\r\n } catch (e) {\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes all textures associated with this packer\r\n */\r\n public dispose(): void {\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel = sKeys[i];\r\n (this.sets as any)[channel].dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the download process for all the channels converting them to base64 data and embedding it all in a JSON file.\r\n * @param imageType is the image type to use.\r\n * @param quality of the image if downloading as jpeg, Ranges from >0 to 1.\r\n */\r\n public download(imageType: string = \"png\", quality: number = 1): void {\r\n setTimeout(() => {\r\n const pack = {\r\n name: this.name,\r\n sets: {},\r\n options: {},\r\n frames: [],\r\n };\r\n\r\n const sKeys = Object.keys(this.sets);\r\n const oKeys = Object.keys(this.options);\r\n try {\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel: string = sKeys[i];\r\n const dt = (this.sets as any)[channel];\r\n (pack.sets as any)[channel] = dt.getContext().canvas.toDataURL(\"image/\" + imageType, quality);\r\n }\r\n for (let i = 0; i < oKeys.length; i++) {\r\n const opt: string = oKeys[i];\r\n (pack.options as any)[opt] = (this.options as any)[opt];\r\n }\r\n for (let i = 0; i < this.frames.length; i++) {\r\n const _f = this.frames[i];\r\n (pack.frames as Array<number>).push(_f.scale.x, _f.scale.y, _f.offset.x, _f.offset.y);\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to download: \" + err);\r\n return;\r\n }\r\n\r\n const data = \"data:text/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(pack, null, 4));\r\n const _a = document.createElement(\"a\");\r\n _a.setAttribute(\"href\", data);\r\n _a.setAttribute(\"download\", this.name + \"_texurePackage.json\");\r\n document.body.appendChild(_a);\r\n _a.click();\r\n _a.remove();\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Public method to load a texturePacker JSON file.\r\n * @param data of the JSON file in string format.\r\n */\r\n public updateFromJSON(data: string): void {\r\n try {\r\n const parsedData: ITexturePackerJSON = JSON.parse(data);\r\n this.name = parsedData.name;\r\n const _options = Object.keys(parsedData.options);\r\n\r\n for (let i = 0; i < _options.length; i++) {\r\n (this.options as any)[_options[i]] = (parsedData.options as any)[_options[i]];\r\n }\r\n\r\n for (let i = 0; i < parsedData.frames.length; i += 4) {\r\n const frame: TexturePackerFrame = new TexturePackerFrame(\r\n i / 4,\r\n new Vector2(parsedData.frames[i], parsedData.frames[i + 1]),\r\n new Vector2(parsedData.frames[i + 2], parsedData.frames[i + 3])\r\n );\r\n this.frames.push(frame);\r\n }\r\n\r\n const channels = Object.keys(parsedData.sets);\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const _t = new Texture(parsedData.sets[channels[i]], this.scene, false, false);\r\n (this.sets as any)[channels[i]] = _t;\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to update from JSON: \" + err);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"packer.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Textures/Packer/packer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Engine } from \"../../../Engines/engine\";\r\nimport type { AbstractMesh } from \"../../../Meshes/abstractMesh\";\r\nimport { VertexBuffer } from \"../../../Buffers/buffer\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport type { Material } from \"../../material\";\r\nimport { Texture } from \"../texture\";\r\nimport { DynamicTexture } from \"../dynamicTexture\";\r\nimport type { Nullable } from \"../../../types\";\r\nimport { Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../../../Maths/math.color\";\r\nimport { TexturePackerFrame } from \"./frame\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Tools } from \"../../../Misc/tools\";\r\n\r\n/**\r\n * Defines the basic options interface of a TexturePacker\r\n */\r\nexport interface ITexturePackerOptions {\r\n /**\r\n * Custom targets for the channels of a texture packer. Default is all the channels of the Standard Material\r\n */\r\n map?: string[];\r\n\r\n /**\r\n * the UV input targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsIn?: string;\r\n\r\n /**\r\n * the UV output targets, as a single value for all meshes. Defaults to VertexBuffer.UVKind\r\n */\r\n uvsOut?: string;\r\n\r\n /**\r\n * number representing the layout style. Defaults to LAYOUT_STRIP\r\n */\r\n layout?: number;\r\n\r\n /**\r\n * number of columns if using custom column count layout(2). This defaults to 4.\r\n */\r\n colnum?: number;\r\n\r\n /**\r\n * flag to update the input meshes to the new packed texture after compilation. Defaults to true.\r\n */\r\n updateInputMeshes?: boolean;\r\n\r\n /**\r\n * boolean flag to dispose all the source textures. Defaults to true.\r\n */\r\n disposeSources?: boolean;\r\n\r\n /**\r\n * Fills the blank cells in a set to the customFillColor. Defaults to true.\r\n */\r\n fillBlanks?: boolean;\r\n\r\n /**\r\n * string value representing the context fill style color. Defaults to 'black'.\r\n */\r\n customFillColor?: string;\r\n\r\n /**\r\n * Width and Height Value of each Frame in the TexturePacker Sets\r\n */\r\n frameSize?: number;\r\n\r\n /**\r\n * Ratio of the value to add padding wise to each cell. Defaults to 0.0115\r\n */\r\n paddingRatio?: number;\r\n\r\n /**\r\n * Number that declares the fill method for the padding gutter.\r\n */\r\n paddingMode?: number;\r\n\r\n /**\r\n * If in SUBUV_COLOR padding mode what color to use.\r\n */\r\n paddingColor?: Color3 | Color4;\r\n}\r\n\r\n/**\r\n * Defines the basic interface of a TexturePacker JSON File\r\n */\r\nexport interface ITexturePackerJSON {\r\n /**\r\n * The frame ID\r\n */\r\n name: string;\r\n\r\n /**\r\n * The base64 channel data\r\n */\r\n sets: any;\r\n\r\n /**\r\n * The options of the Packer\r\n */\r\n options: ITexturePackerOptions;\r\n\r\n /**\r\n * The frame data of the Packer\r\n */\r\n frames: Array<number>;\r\n}\r\n\r\n/**\r\n * This is a support class that generates a series of packed texture sets.\r\n * @see https://doc.babylonjs.com/babylon101/materials\r\n */\r\nexport class TexturePacker {\r\n /** Packer Layout Constant 0 */\r\n public static readonly LAYOUT_STRIP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly LAYOUT_POWER2 = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly LAYOUT_COLNUM = 2;\r\n\r\n /** Packer Layout Constant 0 */\r\n public static readonly SUBUV_WRAP = 0;\r\n /** Packer Layout Constant 1 */\r\n public static readonly SUBUV_EXTEND = 1;\r\n /** Packer Layout Constant 2 */\r\n public static readonly SUBUV_COLOR = 2;\r\n\r\n /** The Name of the Texture Package */\r\n public name: string;\r\n\r\n /** The scene scope of the TexturePacker */\r\n public scene: Scene;\r\n\r\n /** The Meshes to target */\r\n public meshes: AbstractMesh[];\r\n\r\n /** Arguments passed with the Constructor */\r\n public options: ITexturePackerOptions;\r\n\r\n /** The promise that is started upon initialization */\r\n public promise: Nullable<Promise<TexturePacker | string>>;\r\n\r\n /** The Container object for the channel sets that are generated */\r\n public sets: object;\r\n\r\n /** The Container array for the frames that are generated */\r\n public frames: TexturePackerFrame[];\r\n\r\n /** The expected number of textures the system is parsing. */\r\n private _expecting: number;\r\n\r\n /** The padding value from Math.ceil(frameSize * paddingRatio) */\r\n private _paddingValue: number;\r\n\r\n /**\r\n * Initializes a texture package series from an array of meshes or a single mesh.\r\n * @param name The name of the package\r\n * @param meshes The target meshes to compose the package from\r\n * @param options The arguments that texture packer should follow while building.\r\n * @param scene The scene which the textures are scoped to.\r\n * @returns TexturePacker\r\n */\r\n constructor(name: string, meshes: AbstractMesh[], options: ITexturePackerOptions, scene: Scene) {\r\n this.name = name;\r\n this.meshes = meshes;\r\n this.scene = scene;\r\n\r\n /**\r\n * Run through the options and set what ever defaults are needed that where not declared.\r\n */\r\n this.options = options;\r\n this.options.map = this.options.map ?? [\r\n \"ambientTexture\",\r\n \"bumpTexture\",\r\n \"diffuseTexture\",\r\n \"emissiveTexture\",\r\n \"lightmapTexture\",\r\n \"opacityTexture\",\r\n \"reflectionTexture\",\r\n \"refractionTexture\",\r\n \"specularTexture\",\r\n ];\r\n\r\n this.options.uvsIn = this.options.uvsIn ?? VertexBuffer.UVKind;\r\n this.options.uvsOut = this.options.uvsOut ?? VertexBuffer.UVKind;\r\n this.options.layout = this.options.layout ?? TexturePacker.LAYOUT_STRIP;\r\n\r\n if (this.options.layout === TexturePacker.LAYOUT_COLNUM) {\r\n this.options.colnum = this.options.colnum ?? 8;\r\n }\r\n\r\n this.options.updateInputMeshes = this.options.updateInputMeshes ?? true;\r\n this.options.disposeSources = this.options.disposeSources ?? true;\r\n this._expecting = 0;\r\n\r\n this.options.fillBlanks = this.options.fillBlanks ?? true;\r\n\r\n if (this.options.fillBlanks === true) {\r\n this.options.customFillColor = this.options.customFillColor ?? \"black\";\r\n }\r\n\r\n this.options.frameSize = this.options.frameSize ?? 256;\r\n this.options.paddingRatio = this.options.paddingRatio ?? 0.0115;\r\n\r\n this._paddingValue = Math.ceil(this.options.frameSize * this.options.paddingRatio);\r\n\r\n //Make it an even padding Number.\r\n if (this._paddingValue % 2 !== 0) {\r\n this._paddingValue++;\r\n }\r\n\r\n this.options.paddingMode = this.options.paddingMode ?? TexturePacker.SUBUV_WRAP;\r\n\r\n if (this.options.paddingMode === TexturePacker.SUBUV_COLOR) {\r\n this.options.paddingColor = this.options.paddingColor ?? new Color4(0, 0, 0, 1.0);\r\n }\r\n\r\n this.sets = {};\r\n this.frames = [];\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Starts the package process\r\n * @param resolve The promises resolution function\r\n * @returns TexturePacker\r\n */\r\n private _createFrames(resolve: () => void) {\r\n const dtSize = this._calculateSize();\r\n const dtUnits = new Vector2(1, 1).divide(dtSize);\r\n let doneCount = 0;\r\n const expecting = this._expecting;\r\n const meshLength = this.meshes.length;\r\n\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n\r\n const dt = new DynamicTexture(\r\n this.name + \".TexturePack.\" + setName + \"Set\",\r\n { width: dtSize.x, height: dtSize.y },\r\n this.scene,\r\n true, //Generate Mips\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n Engine.TEXTUREFORMAT_RGBA\r\n );\r\n\r\n const dtx = dt.getContext();\r\n dtx.fillStyle = \"rgba(0,0,0,0)\";\r\n dtx.fillRect(0, 0, dtSize.x, dtSize.y);\r\n dt.update(false);\r\n (this.sets as any)[setName] = dt;\r\n }\r\n\r\n const baseSize = this.options.frameSize || 256;\r\n const padding = this._paddingValue;\r\n const tcs = baseSize + 2 * padding;\r\n\r\n const done = () => {\r\n this._calculateMeshUVFrames(baseSize, padding, dtSize, dtUnits, this.options.updateInputMeshes || false);\r\n };\r\n\r\n //Update the Textures\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n const mat = m.material;\r\n\r\n //Check if the material has the texture\r\n //Create a temporary canvas the same size as 1 frame\r\n //Then apply the texture to the center and the 8 offsets\r\n //Copy the Context and place in the correct frame on the DT\r\n\r\n for (let j = 0; j < sKeys.length; j++) {\r\n const tempTexture = new DynamicTexture(\"temp\", tcs, this.scene, true);\r\n const tcx = tempTexture.getContext();\r\n const offset = this._getFrameOffset(i);\r\n\r\n const updateDt = () => {\r\n doneCount++;\r\n tempTexture.update(false);\r\n const iDat = tcx.getImageData(0, 0, tcs, tcs);\r\n\r\n //Update Set\r\n const dt = (this.sets as any)[setName];\r\n const dtx = dt.getContext();\r\n dtx.putImageData(iDat, dtSize.x * offset.x, dtSize.y * offset.y);\r\n tempTexture.dispose();\r\n dt.update(false);\r\n if (doneCount == expecting) {\r\n done();\r\n resolve();\r\n return;\r\n }\r\n };\r\n\r\n const setName = sKeys[j] || \"_blank\";\r\n if (!mat || (mat as any)[setName] === null) {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n\r\n if (this.options.fillBlanks) {\r\n tcx.fillStyle = this.options.customFillColor as string;\r\n }\r\n\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n\r\n updateDt();\r\n } else {\r\n const setTexture = (mat as any)[setName];\r\n const img = new Image();\r\n\r\n if (setTexture instanceof DynamicTexture) {\r\n img.src = setTexture.getContext().canvas.toDataURL(\"image/png\");\r\n } else {\r\n img.src = setTexture!.url;\r\n }\r\n Tools.SetCorsBehavior(img.src, img);\r\n\r\n img.onload = () => {\r\n tcx.fillStyle = \"rgba(0,0,0,0)\";\r\n tcx.fillRect(0, 0, tcs, tcs);\r\n tempTexture.update(false);\r\n\r\n tcx.setTransform(1, 0, 0, -1, 0, 0);\r\n const cellOffsets = [0, 0, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0, -1 - 1, 0, -1, 1, -1];\r\n\r\n switch (this.options.paddingMode) {\r\n //Wrap Mode\r\n case 0:\r\n for (let i = 0; i < 9; i++) {\r\n tcx.drawImage(\r\n img,\r\n 0,\r\n 0,\r\n img.width,\r\n img.height,\r\n padding + baseSize * cellOffsets[i],\r\n padding + baseSize * cellOffsets[i + 1] - tcs,\r\n baseSize,\r\n baseSize\r\n );\r\n }\r\n break;\r\n //Extend Mode\r\n case 1:\r\n for (let i = 0; i < padding; i++) {\r\n tcx.drawImage(img, 0, 0, img.width, img.height, i + baseSize * cellOffsets[0], padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding * 2 - i, padding - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, i - tcs, baseSize, baseSize);\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding, padding * 2 - i - tcs, baseSize, baseSize);\r\n }\r\n\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n //Color Mode\r\n case 2:\r\n tcx.fillStyle = (this.options.paddingColor || Color3.Black()).toHexString();\r\n tcx.fillRect(0, 0, tcs, -tcs);\r\n tcx.clearRect(padding, padding, baseSize, baseSize);\r\n tcx.drawImage(img, 0, 0, img.width, img.height, padding + baseSize * cellOffsets[0], padding + baseSize * cellOffsets[1] - tcs, baseSize, baseSize);\r\n\r\n break;\r\n }\r\n\r\n tcx.setTransform(1, 0, 0, 1, 0, 0);\r\n\r\n updateDt();\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the Size of the Channel Sets\r\n * @returns Vector2\r\n */\r\n private _calculateSize(): Vector2 {\r\n const meshLength: number = this.meshes.length || 0;\r\n const baseSize: number = this.options.frameSize || 0;\r\n const padding: number = this._paddingValue || 0;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n return new Vector2(baseSize * meshLength + 2 * padding * meshLength, baseSize + 2 * padding);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n const size = baseSize * sqrtCount + 2 * padding * sqrtCount;\r\n return new Vector2(size, size);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n return new Vector2(baseSize * cols + 2 * padding * cols, baseSize * rowCnt + 2 * padding * rowCnt);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Calculates the UV data for the frames.\r\n * @param baseSize the base frameSize\r\n * @param padding the base frame padding\r\n * @param dtSize size of the Dynamic Texture for that channel\r\n * @param dtUnits is 1/dtSize\r\n * @param update flag to update the input meshes\r\n */\r\n private _calculateMeshUVFrames(baseSize: number, padding: number, dtSize: Vector2, dtUnits: Vector2, update: boolean) {\r\n const meshLength = this.meshes.length;\r\n\r\n for (let i = 0; i < meshLength; i++) {\r\n const m = this.meshes[i];\r\n\r\n const scale = new Vector2(baseSize / dtSize.x, baseSize / dtSize.y);\r\n\r\n const pOffset: Vector2 = dtUnits.clone().scale(padding);\r\n const frameOffset: Vector2 = this._getFrameOffset(i);\r\n const offset: Vector2 = frameOffset.add(pOffset);\r\n\r\n const frame: TexturePackerFrame = new TexturePackerFrame(i, scale, offset);\r\n\r\n this.frames.push(frame);\r\n\r\n //Update Output UVs\r\n if (update) {\r\n this._updateMeshUV(m, i);\r\n this._updateTextureReferences(m);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the frames Offset.\r\n * @param index of the frame\r\n * @returns Vector2\r\n */\r\n private _getFrameOffset(index: number): Vector2 {\r\n const meshLength = this.meshes.length;\r\n let uvStep, yStep, xStep;\r\n\r\n switch (this.options.layout) {\r\n case 0: {\r\n //STRIP_LAYOUT\r\n uvStep = 1 / meshLength;\r\n return new Vector2(index * uvStep, 0);\r\n }\r\n case 1: {\r\n //POWER2\r\n const sqrtCount = Math.max(2, Math.ceil(Math.sqrt(meshLength)));\r\n yStep = Math.floor(index / sqrtCount);\r\n xStep = index - yStep * sqrtCount;\r\n uvStep = 1 / sqrtCount;\r\n return new Vector2(xStep * uvStep, yStep * uvStep);\r\n }\r\n case 2: {\r\n //COLNUM\r\n const cols = this.options.colnum || 1;\r\n const rowCnt = Math.max(1, Math.ceil(meshLength / cols));\r\n xStep = Math.floor(index / rowCnt);\r\n yStep = index - xStep * rowCnt;\r\n uvStep = new Vector2(1 / cols, 1 / rowCnt);\r\n return new Vector2(xStep * uvStep.x, yStep * uvStep.y);\r\n }\r\n }\r\n\r\n return Vector2.Zero();\r\n }\r\n\r\n /**\r\n * Updates a Mesh to the frame data\r\n * @param mesh that is the target\r\n * @param frameID or the frame index\r\n */\r\n private _updateMeshUV(mesh: AbstractMesh, frameID: number): void {\r\n const frame: TexturePackerFrame = (this.frames as any)[frameID];\r\n const uvIn = mesh.getVerticesData(this.options.uvsIn || VertexBuffer.UVKind);\r\n const uvOut = [];\r\n let toCount = 0;\r\n\r\n if (uvIn!.length) {\r\n toCount = uvIn!.length || 0;\r\n }\r\n\r\n for (let i = 0; i < toCount; i += 2) {\r\n uvOut.push((uvIn as any)[i] * frame.scale.x + frame.offset.x, (uvIn as any)[i + 1] * frame.scale.y + frame.offset.y);\r\n }\r\n\r\n mesh.setVerticesData(this.options.uvsOut || VertexBuffer.UVKind, uvOut);\r\n }\r\n\r\n /**\r\n * Updates a Meshes materials to use the texture packer channels\r\n * @param m is the mesh to target\r\n * @param force all channels on the packer to be set.\r\n */\r\n private _updateTextureReferences(m: AbstractMesh, force: boolean = false): void {\r\n const mat = m.material;\r\n const sKeys = Object.keys(this.sets);\r\n\r\n const _dispose = (_t: any) => {\r\n if (_t.dispose) {\r\n _t.dispose();\r\n }\r\n };\r\n\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const setName = sKeys[i];\r\n if (!force) {\r\n if (!mat) {\r\n return;\r\n }\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n } else {\r\n if ((mat as any)[setName] !== null) {\r\n _dispose((mat as any)[setName]);\r\n }\r\n (mat as any)[setName] = (this.sets as any)[setName];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Public method to set a Mesh to a frame\r\n * @param m that is the target\r\n * @param frameID or the frame index\r\n * @param updateMaterial trigger for if the Meshes attached Material be updated?\r\n */\r\n public setMeshToFrame(m: AbstractMesh, frameID: number, updateMaterial: boolean = false): void {\r\n this._updateMeshUV(m, frameID);\r\n if (updateMaterial) {\r\n this._updateTextureReferences(m, true);\r\n }\r\n }\r\n\r\n /**\r\n * Starts the async promise to compile the texture packer.\r\n * @returns Promise<void>\r\n */\r\n public processAsync(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n if (this.meshes.length === 0) {\r\n //Must be a JSON load!\r\n resolve();\r\n return;\r\n }\r\n let done = 0;\r\n const doneCheck = (mat: Material) => {\r\n done++;\r\n //Check Status of all Textures on all meshes, till they are ready.\r\n if (this.options.map) {\r\n for (let j = 0; j < this.options.map.length; j++) {\r\n const index: string = this.options.map[j];\r\n const t: Texture | DynamicTexture = (mat as any)[index];\r\n\r\n if (t !== null) {\r\n if (!(this.sets as any)[this.options.map[j]]) {\r\n (this.sets as any)[this.options.map[j]] = true;\r\n }\r\n\r\n this._expecting++;\r\n }\r\n }\r\n\r\n if (done === this.meshes.length) {\r\n this._createFrames(resolve);\r\n }\r\n }\r\n };\r\n\r\n for (let i = 0; i < this.meshes.length; i++) {\r\n const mesh = this.meshes[i];\r\n const material: Nullable<Material> = mesh.material;\r\n\r\n if (!material) {\r\n done++;\r\n if (done === this.meshes.length) {\r\n return this._createFrames(resolve);\r\n }\r\n continue;\r\n }\r\n\r\n material.forceCompilationAsync(mesh).then(() => {\r\n doneCheck(material as Material);\r\n });\r\n }\r\n } catch (e) {\r\n return reject(e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Disposes all textures associated with this packer\r\n */\r\n public dispose(): void {\r\n const sKeys = Object.keys(this.sets);\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel = sKeys[i];\r\n (this.sets as any)[channel].dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Starts the download process for all the channels converting them to base64 data and embedding it all in a JSON file.\r\n * @param imageType is the image type to use.\r\n * @param quality of the image if downloading as jpeg, Ranges from >0 to 1.\r\n */\r\n public download(imageType: string = \"png\", quality: number = 1): void {\r\n setTimeout(() => {\r\n const pack = {\r\n name: this.name,\r\n sets: {},\r\n options: {},\r\n frames: [],\r\n };\r\n\r\n const sKeys = Object.keys(this.sets);\r\n const oKeys = Object.keys(this.options);\r\n try {\r\n for (let i = 0; i < sKeys.length; i++) {\r\n const channel: string = sKeys[i];\r\n const dt = (this.sets as any)[channel];\r\n (pack.sets as any)[channel] = dt.getContext().canvas.toDataURL(\"image/\" + imageType, quality);\r\n }\r\n for (let i = 0; i < oKeys.length; i++) {\r\n const opt: string = oKeys[i];\r\n (pack.options as any)[opt] = (this.options as any)[opt];\r\n }\r\n for (let i = 0; i < this.frames.length; i++) {\r\n const _f = this.frames[i];\r\n (pack.frames as Array<number>).push(_f.scale.x, _f.scale.y, _f.offset.x, _f.offset.y);\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to download: \" + err);\r\n return;\r\n }\r\n\r\n const data = \"data:text/json;charset=utf-8,\" + encodeURIComponent(JSON.stringify(pack, null, 4));\r\n const _a = document.createElement(\"a\");\r\n _a.setAttribute(\"href\", data);\r\n _a.setAttribute(\"download\", this.name + \"_texurePackage.json\");\r\n document.body.appendChild(_a);\r\n _a.click();\r\n _a.remove();\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Public method to load a texturePacker JSON file.\r\n * @param data of the JSON file in string format.\r\n */\r\n public updateFromJSON(data: string): void {\r\n try {\r\n const parsedData: ITexturePackerJSON = JSON.parse(data);\r\n this.name = parsedData.name;\r\n const _options = Object.keys(parsedData.options);\r\n\r\n for (let i = 0; i < _options.length; i++) {\r\n (this.options as any)[_options[i]] = (parsedData.options as any)[_options[i]];\r\n }\r\n\r\n for (let i = 0; i < parsedData.frames.length; i += 4) {\r\n const frame: TexturePackerFrame = new TexturePackerFrame(\r\n i / 4,\r\n new Vector2(parsedData.frames[i], parsedData.frames[i + 1]),\r\n new Vector2(parsedData.frames[i + 2], parsedData.frames[i + 3])\r\n );\r\n this.frames.push(frame);\r\n }\r\n\r\n const channels = Object.keys(parsedData.sets);\r\n\r\n for (let i = 0; i < channels.length; i++) {\r\n const _t = new Texture(parsedData.sets[channels[i]], this.scene, false, false);\r\n (this.sets as any)[channels[i]] = _t;\r\n }\r\n } catch (err) {\r\n Logger.Warn(\"Unable to update from JSON: \" + err);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Scene } from "../../../scene";
|
|
2
2
|
import { Texture } from "../../../Materials/Textures/texture";
|
|
3
3
|
import { ProceduralTexture } from "./proceduralTexture";
|
|
4
|
+
import type { TextureSize } from "../../../Materials/Textures/textureCreationOptions";
|
|
4
5
|
/**
|
|
5
6
|
* Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.
|
|
6
7
|
* Custom Procedural textures are the easiest way to create your own procedural in your application.
|
|
@@ -24,7 +25,7 @@ export declare class CustomProceduralTexture extends ProceduralTexture {
|
|
|
24
25
|
* @param generateMipMaps Define if the texture should creates mip maps or not
|
|
25
26
|
* @param skipJson Define a boolena indicating that there is no json config file to load
|
|
26
27
|
*/
|
|
27
|
-
constructor(name: string, texturePath: string, size:
|
|
28
|
+
constructor(name: string, texturePath: string, size: TextureSize, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean, skipJson?: boolean);
|
|
28
29
|
private _loadJson;
|
|
29
30
|
/**
|
|
30
31
|
* Is the texture ready to be used ? (rendered at least once)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customProceduralTexture.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Textures/Procedurals/customProceduralTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../../Misc/logger\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Vector3, Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color4, Color3 } from \"../../../Maths/math.color\";\r\nimport { Texture } from \"../../../Materials/Textures/texture\";\r\nimport { ProceduralTexture } from \"./proceduralTexture\";\r\nimport { WebRequest } from \"../../../Misc/webRequest\";\r\n/**\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/how_to/how_to_use_procedural_textures#creating-custom-procedural-textures\r\n */\r\nexport class CustomProceduralTexture extends ProceduralTexture {\r\n private _animate: boolean = true;\r\n private _time: number = 0;\r\n private _config: any;\r\n private _texturePath: string;\r\n\r\n /**\r\n * Instantiates a new Custom Procedural Texture.\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/how_to/how_to_use_procedural_textures#creating-custom-procedural-textures\r\n * @param name Define the name of the texture\r\n * @param texturePath Define the folder path containing all the custom texture related files (config, shaders...)\r\n * @param size Define the size of the texture to create\r\n * @param scene Define the scene the texture belongs to\r\n * @param fallbackTexture Define a fallback texture in case there were issues to create the custom texture\r\n * @param generateMipMaps Define if the texture should creates mip maps or not\r\n * @param skipJson Define a boolena indicating that there is no json config file to load\r\n */\r\n constructor(name: string, texturePath: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean, skipJson?: boolean) {\r\n super(name, size, null, scene, fallbackTexture, generateMipMaps);\r\n this._texturePath = texturePath;\r\n\r\n if (!skipJson) {\r\n //Try to load json\r\n this._loadJson(texturePath);\r\n } else {\r\n this.setFragment(this._texturePath);\r\n }\r\n this.refreshRate = 1;\r\n }\r\n\r\n private _loadJson(jsonUrl: string): void {\r\n const noConfigFile = () => {\r\n try {\r\n this.setFragment(this._texturePath);\r\n } catch (ex) {\r\n Logger.Log(\"No json or ShaderStore or DOM element found for CustomProceduralTexture\");\r\n }\r\n };\r\n\r\n const configFileUrl = jsonUrl + \"/config.json\";\r\n const xhr = new WebRequest();\r\n\r\n xhr.open(\"GET\", configFileUrl);\r\n xhr.addEventListener(\r\n \"load\",\r\n () => {\r\n if (xhr.status === 200 || (xhr.responseText && xhr.responseText.length > 0)) {\r\n try {\r\n this._config = JSON.parse(xhr.response);\r\n\r\n this.updateShaderUniforms();\r\n this.updateTextures();\r\n this.setFragment(this._texturePath + \"/custom\");\r\n\r\n this._animate = this._config.animate;\r\n this.refreshRate = this._config.refreshrate;\r\n } catch (ex) {\r\n noConfigFile();\r\n }\r\n } else {\r\n noConfigFile();\r\n }\r\n },\r\n false\r\n );\r\n\r\n xhr.addEventListener(\r\n \"error\",\r\n () => {\r\n noConfigFile();\r\n },\r\n false\r\n );\r\n\r\n try {\r\n xhr.send();\r\n } catch (ex) {\r\n Logger.Error(\"CustomProceduralTexture: Error on XHR send request.\");\r\n }\r\n }\r\n\r\n /**\r\n * Is the texture ready to be used ? (rendered at least once)\r\n * @returns true if ready, otherwise, false.\r\n */\r\n public isReady(): boolean {\r\n if (!super.isReady()) {\r\n return false;\r\n }\r\n\r\n for (const name in this._textures) {\r\n const texture = this._textures[name];\r\n\r\n if (!texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Render the texture to its associated render target.\r\n * @param useCameraPostProcess Define if camera post process should be applied to the texture\r\n */\r\n public render(useCameraPostProcess?: boolean): void {\r\n const scene = this.getScene();\r\n if (this._animate && scene) {\r\n this._time += scene.getAnimationRatio() * 0.03;\r\n this.updateShaderUniforms();\r\n }\r\n\r\n super.render(useCameraPostProcess);\r\n }\r\n\r\n /**\r\n * Update the list of dependant textures samplers in the shader.\r\n */\r\n public updateTextures(): void {\r\n for (let i = 0; i < this._config.sampler2Ds.length; i++) {\r\n this.setTexture(this._config.sampler2Ds[i].sample2Dname, new Texture(this._texturePath + \"/\" + this._config.sampler2Ds[i].textureRelativeUrl, this.getScene()));\r\n }\r\n }\r\n\r\n /**\r\n * Update the uniform values of the procedural texture in the shader.\r\n */\r\n public updateShaderUniforms(): void {\r\n if (this._config) {\r\n for (let j = 0; j < this._config.uniforms.length; j++) {\r\n const uniform = this._config.uniforms[j];\r\n\r\n switch (uniform.type) {\r\n case \"float\":\r\n this.setFloat(uniform.name, uniform.value);\r\n break;\r\n case \"color3\":\r\n this.setColor3(uniform.name, new Color3(uniform.r, uniform.g, uniform.b));\r\n break;\r\n case \"color4\":\r\n this.setColor4(uniform.name, new Color4(uniform.r, uniform.g, uniform.b, uniform.a));\r\n break;\r\n case \"vector2\":\r\n this.setVector2(uniform.name, new Vector2(uniform.x, uniform.y));\r\n break;\r\n case \"vector3\":\r\n this.setVector3(uniform.name, new Vector3(uniform.x, uniform.y, uniform.z));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setFloat(\"time\", this._time);\r\n }\r\n\r\n /**\r\n * Define if the texture animates or not.\r\n */\r\n public get animate(): boolean {\r\n return this._animate;\r\n }\r\n\r\n public set animate(value: boolean) {\r\n this._animate = value;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"customProceduralTexture.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Textures/Procedurals/customProceduralTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../../../Misc/logger\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { Vector3, Vector2 } from \"../../../Maths/math.vector\";\r\nimport { Color4, Color3 } from \"../../../Maths/math.color\";\r\nimport { Texture } from \"../../../Materials/Textures/texture\";\r\nimport { ProceduralTexture } from \"./proceduralTexture\";\r\nimport { WebRequest } from \"../../../Misc/webRequest\";\r\nimport type { TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\n/**\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/how_to/how_to_use_procedural_textures#creating-custom-procedural-textures\r\n */\r\nexport class CustomProceduralTexture extends ProceduralTexture {\r\n private _animate: boolean = true;\r\n private _time: number = 0;\r\n private _config: any;\r\n private _texturePath: string;\r\n\r\n /**\r\n * Instantiates a new Custom Procedural Texture.\r\n * Procedural texturing is a way to programmatically create a texture. There are 2 types of procedural textures: code-only, and code that references some classic 2D images, sometimes called 'refMaps' or 'sampler' images.\r\n * Custom Procedural textures are the easiest way to create your own procedural in your application.\r\n * @see https://doc.babylonjs.com/how_to/how_to_use_procedural_textures#creating-custom-procedural-textures\r\n * @param name Define the name of the texture\r\n * @param texturePath Define the folder path containing all the custom texture related files (config, shaders...)\r\n * @param size Define the size of the texture to create\r\n * @param scene Define the scene the texture belongs to\r\n * @param fallbackTexture Define a fallback texture in case there were issues to create the custom texture\r\n * @param generateMipMaps Define if the texture should creates mip maps or not\r\n * @param skipJson Define a boolena indicating that there is no json config file to load\r\n */\r\n constructor(name: string, texturePath: string, size: TextureSize, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean, skipJson?: boolean) {\r\n super(name, size, null, scene, fallbackTexture, generateMipMaps);\r\n this._texturePath = texturePath;\r\n\r\n if (!skipJson) {\r\n //Try to load json\r\n this._loadJson(texturePath);\r\n } else {\r\n this.setFragment(this._texturePath);\r\n }\r\n this.refreshRate = 1;\r\n }\r\n\r\n private _loadJson(jsonUrl: string): void {\r\n const noConfigFile = () => {\r\n try {\r\n this.setFragment(this._texturePath);\r\n } catch (ex) {\r\n Logger.Log(\"No json or ShaderStore or DOM element found for CustomProceduralTexture\");\r\n }\r\n };\r\n\r\n const configFileUrl = jsonUrl + \"/config.json\";\r\n const xhr = new WebRequest();\r\n\r\n xhr.open(\"GET\", configFileUrl);\r\n xhr.addEventListener(\r\n \"load\",\r\n () => {\r\n if (xhr.status === 200 || (xhr.responseText && xhr.responseText.length > 0)) {\r\n try {\r\n this._config = JSON.parse(xhr.response);\r\n\r\n this.updateShaderUniforms();\r\n this.updateTextures();\r\n this.setFragment(this._texturePath + \"/custom\");\r\n\r\n this._animate = this._config.animate;\r\n this.refreshRate = this._config.refreshrate;\r\n } catch (ex) {\r\n noConfigFile();\r\n }\r\n } else {\r\n noConfigFile();\r\n }\r\n },\r\n false\r\n );\r\n\r\n xhr.addEventListener(\r\n \"error\",\r\n () => {\r\n noConfigFile();\r\n },\r\n false\r\n );\r\n\r\n try {\r\n xhr.send();\r\n } catch (ex) {\r\n Logger.Error(\"CustomProceduralTexture: Error on XHR send request.\");\r\n }\r\n }\r\n\r\n /**\r\n * Is the texture ready to be used ? (rendered at least once)\r\n * @returns true if ready, otherwise, false.\r\n */\r\n public isReady(): boolean {\r\n if (!super.isReady()) {\r\n return false;\r\n }\r\n\r\n for (const name in this._textures) {\r\n const texture = this._textures[name];\r\n\r\n if (!texture.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Render the texture to its associated render target.\r\n * @param useCameraPostProcess Define if camera post process should be applied to the texture\r\n */\r\n public render(useCameraPostProcess?: boolean): void {\r\n const scene = this.getScene();\r\n if (this._animate && scene) {\r\n this._time += scene.getAnimationRatio() * 0.03;\r\n this.updateShaderUniforms();\r\n }\r\n\r\n super.render(useCameraPostProcess);\r\n }\r\n\r\n /**\r\n * Update the list of dependant textures samplers in the shader.\r\n */\r\n public updateTextures(): void {\r\n for (let i = 0; i < this._config.sampler2Ds.length; i++) {\r\n this.setTexture(this._config.sampler2Ds[i].sample2Dname, new Texture(this._texturePath + \"/\" + this._config.sampler2Ds[i].textureRelativeUrl, this.getScene()));\r\n }\r\n }\r\n\r\n /**\r\n * Update the uniform values of the procedural texture in the shader.\r\n */\r\n public updateShaderUniforms(): void {\r\n if (this._config) {\r\n for (let j = 0; j < this._config.uniforms.length; j++) {\r\n const uniform = this._config.uniforms[j];\r\n\r\n switch (uniform.type) {\r\n case \"float\":\r\n this.setFloat(uniform.name, uniform.value);\r\n break;\r\n case \"color3\":\r\n this.setColor3(uniform.name, new Color3(uniform.r, uniform.g, uniform.b));\r\n break;\r\n case \"color4\":\r\n this.setColor4(uniform.name, new Color4(uniform.r, uniform.g, uniform.b, uniform.a));\r\n break;\r\n case \"vector2\":\r\n this.setVector2(uniform.name, new Vector2(uniform.x, uniform.y));\r\n break;\r\n case \"vector3\":\r\n this.setVector3(uniform.name, new Vector3(uniform.x, uniform.y, uniform.z));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setFloat(\"time\", this._time);\r\n }\r\n\r\n /**\r\n * Define if the texture animates or not.\r\n */\r\n public get animate(): boolean {\r\n return this._animate;\r\n }\r\n\r\n public set animate(value: boolean) {\r\n this._animate = value;\r\n }\r\n}\r\n"]}
|
|
@@ -93,12 +93,13 @@ export class NoiseProceduralTexture extends ProceduralTexture {
|
|
|
93
93
|
* @returns a parsed NoiseProceduralTexture
|
|
94
94
|
*/
|
|
95
95
|
static Parse(parsedTexture, scene) {
|
|
96
|
+
var _a;
|
|
96
97
|
const texture = new NoiseProceduralTexture(parsedTexture.name, parsedTexture.size, scene, undefined, parsedTexture.generateMipMaps);
|
|
97
98
|
texture.brightness = parsedTexture.brightness;
|
|
98
99
|
texture.octaves = parsedTexture.octaves;
|
|
99
100
|
texture.persistence = parsedTexture.persistence;
|
|
100
101
|
texture.animationSpeedFactor = parsedTexture.animationSpeedFactor;
|
|
101
|
-
texture.time = parsedTexture.time
|
|
102
|
+
texture.time = (_a = parsedTexture.time) !== null && _a !== void 0 ? _a : 0;
|
|
102
103
|
return texture;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noiseProceduralTexture.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Textures/Procedurals/noiseProceduralTexture.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"noiseProceduralTexture.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/Materials/Textures/Procedurals/noiseProceduralTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../../types\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport type { Texture } from \"../../../Materials/Textures/texture\";\r\nimport { ProceduralTexture } from \"./proceduralTexture\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\n\r\nimport \"../../../Shaders/noise.fragment\";\r\n\r\n/**\r\n * Class used to generate noise procedural textures\r\n */\r\nexport class NoiseProceduralTexture extends ProceduralTexture {\r\n /** Gets or sets the start time (default is 0) */\r\n public time: number = 0.0;\r\n\r\n /** Gets or sets a value between 0 and 1 indicating the overall brightness of the texture (default is 0.2) */\r\n public brightness = 0.2;\r\n\r\n /** Defines the number of octaves to process */\r\n public octaves = 3;\r\n\r\n /** Defines the level of persistence (0.8 by default) */\r\n public persistence = 0.8;\r\n\r\n /** Gets or sets animation speed factor (default is 1) */\r\n public animationSpeedFactor = 1;\r\n\r\n /**\r\n * Creates a new NoiseProceduralTexture\r\n * @param name defines the name fo the texture\r\n * @param size defines the size of the texture (default is 256)\r\n * @param scene defines the hosting scene\r\n * @param fallbackTexture defines the texture to use if the NoiseProceduralTexture can't be created\r\n * @param generateMipMaps defines if mipmaps must be generated (true by default)\r\n */\r\n constructor(name: string, size: number = 256, scene: Nullable<Scene> = EngineStore.LastCreatedScene, fallbackTexture?: Texture, generateMipMaps?: boolean) {\r\n super(name, size, \"noise\", scene, fallbackTexture, generateMipMaps);\r\n this.autoClear = false;\r\n this._updateShaderUniforms();\r\n }\r\n\r\n private _updateShaderUniforms() {\r\n const scene = this.getScene();\r\n\r\n if (!scene) {\r\n return;\r\n }\r\n\r\n this.time += scene.getAnimationRatio() * this.animationSpeedFactor * 0.01;\r\n\r\n this.setFloat(\"brightness\", this.brightness);\r\n this.setFloat(\"persistence\", this.persistence);\r\n this.setFloat(\"timeScale\", this.time);\r\n }\r\n\r\n protected _getDefines(): string {\r\n return \"#define OCTAVES \" + (this.octaves | 0);\r\n }\r\n\r\n /**\r\n * Generate the current state of the procedural texture\r\n * @param useCameraPostProcess\r\n */\r\n public render(useCameraPostProcess?: boolean) {\r\n this._updateShaderUniforms();\r\n super.render(useCameraPostProcess);\r\n }\r\n\r\n /**\r\n * Serializes this noise procedural texture\r\n * @returns a serialized noise procedural texture object\r\n */\r\n public serialize(): any {\r\n const serializationObject: any = {};\r\n serializationObject.customType = \"BABYLON.NoiseProceduralTexture\";\r\n\r\n serializationObject.brightness = this.brightness;\r\n serializationObject.octaves = this.octaves;\r\n serializationObject.persistence = this.persistence;\r\n serializationObject.animationSpeedFactor = this.animationSpeedFactor;\r\n serializationObject.size = this.getSize().width;\r\n serializationObject.generateMipMaps = this._generateMipMaps;\r\n serializationObject.time = this.time;\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Clone the texture.\r\n * @returns the cloned texture\r\n */\r\n public clone(): NoiseProceduralTexture {\r\n const textureSize = this.getSize();\r\n const newTexture = new NoiseProceduralTexture(\r\n this.name,\r\n textureSize.width,\r\n this.getScene(),\r\n this._fallbackTexture ? this._fallbackTexture : undefined,\r\n this._generateMipMaps\r\n );\r\n\r\n // Base texture\r\n newTexture.hasAlpha = this.hasAlpha;\r\n newTexture.level = this.level;\r\n\r\n // RenderTarget Texture\r\n newTexture.coordinatesMode = this.coordinatesMode;\r\n\r\n // Noise Specifics\r\n newTexture.brightness = this.brightness;\r\n newTexture.octaves = this.octaves;\r\n newTexture.persistence = this.persistence;\r\n newTexture.animationSpeedFactor = this.animationSpeedFactor;\r\n newTexture.time = this.time;\r\n\r\n return newTexture;\r\n }\r\n\r\n /**\r\n * Creates a NoiseProceduralTexture from parsed noise procedural texture data\r\n * @param parsedTexture defines parsed texture data\r\n * @param scene defines the current scene\r\n * @returns a parsed NoiseProceduralTexture\r\n */\r\n public static Parse(parsedTexture: any, scene: Scene): NoiseProceduralTexture {\r\n const texture = new NoiseProceduralTexture(parsedTexture.name, parsedTexture.size, scene, undefined, parsedTexture.generateMipMaps);\r\n\r\n texture.brightness = parsedTexture.brightness;\r\n texture.octaves = parsedTexture.octaves;\r\n texture.persistence = parsedTexture.persistence;\r\n texture.animationSpeedFactor = parsedTexture.animationSpeedFactor;\r\n texture.time = parsedTexture.time ?? 0;\r\n\r\n return texture;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NoiseProceduralTexture\", NoiseProceduralTexture);\r\n"]}
|
|
@@ -184,7 +184,8 @@ export class ProceduralTexture extends Texture {
|
|
|
184
184
|
* This can be called in case of context loss
|
|
185
185
|
*/
|
|
186
186
|
reset() {
|
|
187
|
-
|
|
187
|
+
var _a;
|
|
188
|
+
(_a = this._drawWrapper.effect) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
188
189
|
}
|
|
189
190
|
_getDefines() {
|
|
190
191
|
return "";
|
|
@@ -221,7 +222,8 @@ export class ProceduralTexture extends Texture {
|
|
|
221
222
|
if (this._cachedDefines !== defines) {
|
|
222
223
|
this._cachedDefines = defines;
|
|
223
224
|
this._drawWrapper.effect = engine.createEffect(shaders, [VertexBuffer.PositionKind], this._uniforms, this._samplers, defines, undefined, undefined, () => {
|
|
224
|
-
|
|
225
|
+
var _a;
|
|
226
|
+
(_a = this._rtWrapper) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
225
227
|
this._rtWrapper = this._texture = null;
|
|
226
228
|
if (this._fallbackTexture) {
|
|
227
229
|
this._texture = this._fallbackTexture._texture;
|
|
@@ -420,6 +422,7 @@ export class ProceduralTexture extends Texture {
|
|
|
420
422
|
*/
|
|
421
423
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
422
424
|
render(useCameraPostProcess) {
|
|
425
|
+
var _a, _b;
|
|
423
426
|
const scene = this.getScene();
|
|
424
427
|
if (!scene) {
|
|
425
428
|
return;
|
|
@@ -471,7 +474,7 @@ export class ProceduralTexture extends Texture {
|
|
|
471
474
|
if (!this._texture || !this._rtWrapper) {
|
|
472
475
|
return;
|
|
473
476
|
}
|
|
474
|
-
engine._debugPushGroup
|
|
477
|
+
(_a = engine._debugPushGroup) === null || _a === void 0 ? void 0 : _a.call(engine, `procedural texture generation for ${this.name}`, 1);
|
|
475
478
|
const viewPort = engine.currentViewport;
|
|
476
479
|
if (this.isCube) {
|
|
477
480
|
for (let face = 0; face < 6; face++) {
|
|
@@ -507,7 +510,7 @@ export class ProceduralTexture extends Texture {
|
|
|
507
510
|
if (this.isCube) {
|
|
508
511
|
engine.generateMipMapsForCubemap(this._texture);
|
|
509
512
|
}
|
|
510
|
-
engine._debugPopGroup
|
|
513
|
+
(_b = engine._debugPopGroup) === null || _b === void 0 ? void 0 : _b.call(engine, 1);
|
|
511
514
|
if (this.onGenerated) {
|
|
512
515
|
this.onGenerated();
|
|
513
516
|
}
|