@babylonjs/core 7.3.1 → 7.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/Actions/condition.js.map +1 -1
  2. package/Actions/directActions.js.map +1 -1
  3. package/Actions/directAudioActions.js.map +1 -1
  4. package/Actions/interpolateValueAction.js.map +1 -1
  5. package/Animations/easing.js.map +1 -1
  6. package/Behaviors/Meshes/sixDofDragBehavior.js.map +1 -1
  7. package/Bones/bone.js.map +1 -1
  8. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  9. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  10. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  11. package/Cameras/Stereoscopic/anaglyphArcRotateCamera.js.map +1 -1
  12. package/Cameras/Stereoscopic/anaglyphFreeCamera.js.map +1 -1
  13. package/Cameras/Stereoscopic/anaglyphGamepadCamera.js.map +1 -1
  14. package/Cameras/Stereoscopic/anaglyphUniversalCamera.js.map +1 -1
  15. package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.js.map +1 -1
  16. package/Cameras/Stereoscopic/stereoscopicFreeCamera.js.map +1 -1
  17. package/Cameras/Stereoscopic/stereoscopicGamepadCamera.js.map +1 -1
  18. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  19. package/Cameras/Stereoscopic/stereoscopicUniversalCamera.js.map +1 -1
  20. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  21. package/Cameras/VR/vrDeviceOrientationFreeCamera.js.map +1 -1
  22. package/Cameras/VR/vrDeviceOrientationGamepadCamera.js.map +1 -1
  23. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  24. package/Cameras/arcRotateCamera.js.map +1 -1
  25. package/Cameras/camera.js.map +1 -1
  26. package/Cameras/deviceOrientationCamera.js.map +1 -1
  27. package/Cameras/flyCamera.js.map +1 -1
  28. package/Cameras/followCamera.js.map +1 -1
  29. package/Cameras/freeCamera.js.map +1 -1
  30. package/Cameras/freeCameraInputsManager.js.map +1 -1
  31. package/Cameras/gamepadCamera.js.map +1 -1
  32. package/Cameras/targetCamera.js.map +1 -1
  33. package/Cameras/touchCamera.js.map +1 -1
  34. package/Cameras/universalCamera.js.map +1 -1
  35. package/Cameras/virtualJoysticksCamera.js.map +1 -1
  36. package/Compute/computeEffect.js +4 -4
  37. package/Compute/computeEffect.js.map +1 -1
  38. package/Debug/boneAxesViewer.js.map +1 -1
  39. package/Engines/IPipelineContext.d.ts +3 -0
  40. package/Engines/IPipelineContext.js.map +1 -1
  41. package/Engines/Native/nativePipelineContext.d.ts +2 -0
  42. package/Engines/Native/nativePipelineContext.js +3 -0
  43. package/Engines/Native/nativePipelineContext.js.map +1 -1
  44. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  45. package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.js.map +1 -1
  46. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
  47. package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.js.map +1 -1
  48. package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.js.map +1 -1
  49. package/Engines/Processors/iShaderProcessor.d.ts +3 -2
  50. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  51. package/Engines/Processors/shaderCodeConditionNode.js.map +1 -1
  52. package/Engines/Processors/shaderCodeTestNode.js.map +1 -1
  53. package/Engines/Processors/shaderProcessor.d.ts +15 -23
  54. package/Engines/Processors/shaderProcessor.js +332 -320
  55. package/Engines/Processors/shaderProcessor.js.map +1 -1
  56. package/Engines/WebGL/webGLPipelineContext.d.ts +2 -0
  57. package/Engines/WebGL/webGLPipelineContext.js +3 -0
  58. package/Engines/WebGL/webGLPipelineContext.js.map +1 -1
  59. package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
  60. package/Engines/WebGL/webGLShaderProcessors.d.ts +3 -2
  61. package/Engines/WebGL/webGLShaderProcessors.js +2 -2
  62. package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
  63. package/Engines/WebGPU/Extensions/engine.computeShader.js +1 -1
  64. package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
  65. package/Engines/WebGPU/Extensions/engine.rawTexture.js +10 -10
  66. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  67. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  68. package/Engines/WebGPU/webgpuDepthCullingState.js.map +1 -1
  69. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +2 -0
  70. package/Engines/WebGPU/webgpuHardwareTexture.js +2 -0
  71. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  72. package/Engines/WebGPU/webgpuPipelineContext.d.ts +2 -0
  73. package/Engines/WebGPU/webgpuPipelineContext.js +3 -0
  74. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  75. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +3 -2
  76. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +2 -4
  77. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  78. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  79. package/Engines/WebGPU/webgpuStencilStateComposer.js.map +1 -1
  80. package/Engines/abstractEngine.d.ts +10 -5
  81. package/Engines/abstractEngine.functions.d.ts +38 -0
  82. package/Engines/abstractEngine.functions.js +75 -0
  83. package/Engines/abstractEngine.functions.js.map +1 -0
  84. package/Engines/abstractEngine.js +34 -14
  85. package/Engines/abstractEngine.js.map +1 -1
  86. package/Engines/constants.d.ts +2 -0
  87. package/Engines/constants.js +2 -0
  88. package/Engines/constants.js.map +1 -1
  89. package/Engines/engine.d.ts +0 -8
  90. package/Engines/engine.js +0 -28
  91. package/Engines/engine.js.map +1 -1
  92. package/Engines/nativeEngine.js.map +1 -1
  93. package/Engines/nullEngine.js.map +1 -1
  94. package/Engines/thinEngine.d.ts +11 -6
  95. package/Engines/thinEngine.functions.d.ts +96 -0
  96. package/Engines/thinEngine.functions.js +249 -0
  97. package/Engines/thinEngine.functions.js.map +1 -0
  98. package/Engines/thinEngine.js +50 -129
  99. package/Engines/thinEngine.js.map +1 -1
  100. package/Engines/webgpuEngine.js +5 -1
  101. package/Engines/webgpuEngine.js.map +1 -1
  102. package/Events/keyboardEvents.js.map +1 -1
  103. package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
  104. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  105. package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.js.map +1 -1
  106. package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
  107. package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js.map +1 -1
  108. package/FlowGraph/Blocks/Data/flowGraphCoordinateTransformBlock.js.map +1 -1
  109. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -1
  110. package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
  111. package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -1
  112. package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js.map +1 -1
  113. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js.map +1 -1
  114. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
  115. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
  116. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
  117. package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
  118. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  119. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
  120. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -1
  121. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -1
  122. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.js.map +1 -1
  123. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
  124. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
  125. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
  126. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.js.map +1 -1
  127. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
  128. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.js.map +1 -1
  129. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -1
  130. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.js.map +1 -1
  131. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
  132. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
  133. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
  134. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
  135. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
  136. package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
  137. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
  138. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
  139. package/FlowGraph/flowGraphDataConnection.js.map +1 -1
  140. package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
  141. package/FlowGraph/flowGraphSignalConnection.js.map +1 -1
  142. package/Gamepads/dualShockGamepad.js.map +1 -1
  143. package/Gamepads/gamepad.js.map +1 -1
  144. package/Gamepads/xboxGamepad.js.map +1 -1
  145. package/Gizmos/axisDragGizmo.js.map +1 -1
  146. package/Gizmos/axisScaleGizmo.js.map +1 -1
  147. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  148. package/Gizmos/cameraGizmo.js.map +1 -1
  149. package/Gizmos/lightGizmo.js.map +1 -1
  150. package/Gizmos/planeDragGizmo.js.map +1 -1
  151. package/Gizmos/planeRotationGizmo.js.map +1 -1
  152. package/Gizmos/positionGizmo.js.map +1 -1
  153. package/Gizmos/rotationGizmo.js.map +1 -1
  154. package/Gizmos/scaleGizmo.js.map +1 -1
  155. package/Helpers/photoDome.js.map +1 -1
  156. package/Helpers/textureDome.js.map +1 -1
  157. package/Helpers/videoDome.js.map +1 -1
  158. package/Layers/glowLayer.js.map +1 -1
  159. package/Layers/highlightLayer.js.map +1 -1
  160. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  161. package/Lights/directionalLight.js.map +1 -1
  162. package/Lights/hemisphericLight.js.map +1 -1
  163. package/Lights/light.js.map +1 -1
  164. package/Lights/pointLight.js.map +1 -1
  165. package/Lights/shadowLight.js.map +1 -1
  166. package/Lights/spotLight.js.map +1 -1
  167. package/Materials/Background/backgroundMaterial.js.map +1 -1
  168. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  169. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  170. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  171. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  172. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  173. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  175. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  176. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  178. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/Dual/textureBlock.js +3 -3
  180. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  181. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  182. package/Materials/Node/Blocks/Fragment/derivativeBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/Fragment/discardBlock.js.map +1 -1
  184. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  185. package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  190. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  196. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  200. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  202. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  205. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/Particle/particleRampGradientBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  209. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  211. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  215. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  217. package/Materials/Node/Blocks/arcTan2Block.js.map +1 -1
  218. package/Materials/Node/Blocks/biPlanarBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  221. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/colorSplitterBlock.js.map +1 -1
  223. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/crossBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  226. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  227. package/Materials/Node/Blocks/desaturateBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/distanceBlock.js.map +1 -1
  229. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  230. package/Materials/Node/Blocks/dotBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  232. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  233. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/lengthBlock.js.map +1 -1
  235. package/Materials/Node/Blocks/lerpBlock.js.map +1 -1
  236. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/matrixDeterminantBlock.js.map +1 -1
  238. package/Materials/Node/Blocks/matrixTransposeBlock.js.map +1 -1
  239. package/Materials/Node/Blocks/maxBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  241. package/Materials/Node/Blocks/minBlock.js.map +1 -1
  242. package/Materials/Node/Blocks/modBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  244. package/Materials/Node/Blocks/nLerpBlock.js.map +1 -1
  245. package/Materials/Node/Blocks/negateBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/normalBlendBlock.js.map +1 -1
  247. package/Materials/Node/Blocks/normalizeBlock.js.map +1 -1
  248. package/Materials/Node/Blocks/oneMinusBlock.js.map +1 -1
  249. package/Materials/Node/Blocks/posterizeBlock.js.map +1 -1
  250. package/Materials/Node/Blocks/powBlock.js.map +1 -1
  251. package/Materials/Node/Blocks/randomNumberBlock.js.map +1 -1
  252. package/Materials/Node/Blocks/reciprocalBlock.js.map +1 -1
  253. package/Materials/Node/Blocks/reflectBlock.js.map +1 -1
  254. package/Materials/Node/Blocks/refractBlock.js.map +1 -1
  255. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  256. package/Materials/Node/Blocks/replaceColorBlock.js.map +1 -1
  257. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  258. package/Materials/Node/Blocks/scaleBlock.js.map +1 -1
  259. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  260. package/Materials/Node/Blocks/smoothStepBlock.js.map +1 -1
  261. package/Materials/Node/Blocks/stepBlock.js.map +1 -1
  262. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  263. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  264. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  265. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  266. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  267. package/Materials/Node/Blocks/vectorSplitterBlock.js.map +1 -1
  268. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  269. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -1
  270. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  271. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  272. package/Materials/Node/nodeMaterial.js.map +1 -1
  273. package/Materials/Node/nodeMaterialConnectionPointCustomObject.js.map +1 -1
  274. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  275. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  276. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  277. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  278. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  279. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  280. package/Materials/PBR/pbrMaterial.js.map +1 -1
  281. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  282. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  283. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  284. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  285. package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
  286. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  287. package/Materials/Textures/Procedurals/noiseProceduralTexture.js.map +1 -1
  288. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +9 -1
  289. package/Materials/Textures/Procedurals/proceduralTexture.js +16 -0
  290. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  291. package/Materials/Textures/baseTexture.js.map +1 -1
  292. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  293. package/Materials/Textures/cubeTexture.js.map +1 -1
  294. package/Materials/Textures/dynamicTexture.js.map +1 -1
  295. package/Materials/Textures/equiRectangularCubeTexture.js +1 -1
  296. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  297. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  298. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  299. package/Materials/Textures/internalTexture.js.map +1 -1
  300. package/Materials/Textures/mirrorTexture.js.map +1 -1
  301. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  302. package/Materials/Textures/prePassRenderTarget.js.map +1 -1
  303. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  304. package/Materials/Textures/refractionTexture.js.map +1 -1
  305. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  306. package/Materials/Textures/texture.js.map +1 -1
  307. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  308. package/Materials/Textures/videoTexture.js.map +1 -1
  309. package/Materials/effect.d.ts +11 -6
  310. package/Materials/effect.functions.d.ts +86 -0
  311. package/Materials/effect.functions.js +185 -0
  312. package/Materials/effect.functions.js.map +1 -0
  313. package/Materials/effect.js +94 -153
  314. package/Materials/effect.js.map +1 -1
  315. package/Materials/effect.webgl.functions.d.ts +13 -0
  316. package/Materials/effect.webgl.functions.js +83 -0
  317. package/Materials/effect.webgl.functions.js.map +1 -0
  318. package/Materials/material.decalMapConfiguration.js.map +1 -1
  319. package/Materials/material.detailMapConfiguration.js.map +1 -1
  320. package/Materials/materialPluginManager.js +2 -2
  321. package/Materials/materialPluginManager.js.map +1 -1
  322. package/Materials/meshDebugPluginMaterial.js.map +1 -1
  323. package/Materials/multiMaterial.js.map +1 -1
  324. package/Materials/pushMaterial.js.map +1 -1
  325. package/Materials/shaderMaterial.js.map +1 -1
  326. package/Materials/standardMaterial.js.map +1 -1
  327. package/Meshes/Compression/dracoCompression.js.map +1 -1
  328. package/Meshes/Compression/dracoCompressionWorker.d.ts +1 -1
  329. package/Meshes/Compression/dracoCompressionWorker.js +21 -10
  330. package/Meshes/Compression/dracoCompressionWorker.js.map +1 -1
  331. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  332. package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
  333. package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
  334. package/Meshes/GreasedLine/greasedLineRibbonMesh.js.map +1 -1
  335. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  336. package/Meshes/Node/Blocks/Instances/instantiateBlock.js.map +1 -1
  337. package/Meshes/Node/Blocks/Instances/instantiateLinearBlock.js.map +1 -1
  338. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
  339. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
  340. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
  341. package/Meshes/Node/Blocks/Instances/instantiateRadialBlock.js.map +1 -1
  342. package/Meshes/Node/Blocks/Matrices/alignBlock.js.map +1 -1
  343. package/Meshes/Node/Blocks/Matrices/rotationXBlock.js.map +1 -1
  344. package/Meshes/Node/Blocks/Matrices/rotationYBlock.js.map +1 -1
  345. package/Meshes/Node/Blocks/Matrices/rotationZBlock.js.map +1 -1
  346. package/Meshes/Node/Blocks/Matrices/scalingBlock.js.map +1 -1
  347. package/Meshes/Node/Blocks/Matrices/translationBlock.js.map +1 -1
  348. package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
  349. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.js.map +1 -1
  350. package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
  351. package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
  352. package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
  353. package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
  354. package/Meshes/Node/Blocks/Sources/boxBlock.js.map +1 -1
  355. package/Meshes/Node/Blocks/Sources/capsuleBlock.js.map +1 -1
  356. package/Meshes/Node/Blocks/Sources/cylinderBlock.js.map +1 -1
  357. package/Meshes/Node/Blocks/Sources/discBlock.js.map +1 -1
  358. package/Meshes/Node/Blocks/Sources/gridBlock.js.map +1 -1
  359. package/Meshes/Node/Blocks/Sources/icoSphereBlock.js.map +1 -1
  360. package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
  361. package/Meshes/Node/Blocks/Sources/nullBlock.js.map +1 -1
  362. package/Meshes/Node/Blocks/Sources/planeBlock.js.map +1 -1
  363. package/Meshes/Node/Blocks/Sources/sphereBlock.js.map +1 -1
  364. package/Meshes/Node/Blocks/Sources/torusBlock.js.map +1 -1
  365. package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  366. package/Meshes/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  367. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  368. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  369. package/Meshes/Node/Blocks/booleanGeometryBlock.js.map +1 -1
  370. package/Meshes/Node/Blocks/boundingBlock.js.map +1 -1
  371. package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -1
  372. package/Meshes/Node/Blocks/conditionBlock.js.map +1 -1
  373. package/Meshes/Node/Blocks/debugBlock.js.map +1 -1
  374. package/Meshes/Node/Blocks/geometryArcTan2Block.js.map +1 -1
  375. package/Meshes/Node/Blocks/geometryClampBlock.js.map +1 -1
  376. package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -1
  377. package/Meshes/Node/Blocks/geometryCrossBlock.js.map +1 -1
  378. package/Meshes/Node/Blocks/geometryCurveBlock.js.map +1 -1
  379. package/Meshes/Node/Blocks/geometryDesaturateBlock.js.map +1 -1
  380. package/Meshes/Node/Blocks/geometryDistanceBlock.js.map +1 -1
  381. package/Meshes/Node/Blocks/geometryDotBlock.js.map +1 -1
  382. package/Meshes/Node/Blocks/geometryElbowBlock.js.map +1 -1
  383. package/Meshes/Node/Blocks/geometryInfoBlock.js.map +1 -1
  384. package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -1
  385. package/Meshes/Node/Blocks/geometryLengthBlock.js.map +1 -1
  386. package/Meshes/Node/Blocks/geometryLerpBlock.js.map +1 -1
  387. package/Meshes/Node/Blocks/geometryModBlock.js.map +1 -1
  388. package/Meshes/Node/Blocks/geometryNLerpBlock.js.map +1 -1
  389. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  390. package/Meshes/Node/Blocks/geometryOutputBlock.js.map +1 -1
  391. package/Meshes/Node/Blocks/geometryPosterizeBlock.js.map +1 -1
  392. package/Meshes/Node/Blocks/geometryPowBlock.js.map +1 -1
  393. package/Meshes/Node/Blocks/geometryReplaceColorBlock.js.map +1 -1
  394. package/Meshes/Node/Blocks/geometryRotate2dBlock.js.map +1 -1
  395. package/Meshes/Node/Blocks/geometrySmoothStepBlock.js.map +1 -1
  396. package/Meshes/Node/Blocks/geometryStepBlock.js.map +1 -1
  397. package/Meshes/Node/Blocks/geometryTransformBlock.js.map +1 -1
  398. package/Meshes/Node/Blocks/geometryTrigonometryBlock.js.map +1 -1
  399. package/Meshes/Node/Blocks/intFloatConverterBlock.js.map +1 -1
  400. package/Meshes/Node/Blocks/mapRangeBlock.js.map +1 -1
  401. package/Meshes/Node/Blocks/mappingBlock.js.map +1 -1
  402. package/Meshes/Node/Blocks/mathBlock.js.map +1 -1
  403. package/Meshes/Node/Blocks/matrixComposeBlock.js.map +1 -1
  404. package/Meshes/Node/Blocks/mergeGeometryBlock.js.map +1 -1
  405. package/Meshes/Node/Blocks/noiseBlock.js.map +1 -1
  406. package/Meshes/Node/Blocks/normalizeVectorBlock.js.map +1 -1
  407. package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
  408. package/Meshes/Node/Blocks/vectorConverterBlock.js.map +1 -1
  409. package/Meshes/Node/nodeGeometryBlock.js +1 -0
  410. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  411. package/Meshes/WebGL/webGLDataBuffer.js.map +1 -1
  412. package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
  413. package/Meshes/abstractMesh.js.map +1 -1
  414. package/Meshes/geodesicMesh.js.map +1 -1
  415. package/Meshes/goldbergMesh.js.map +1 -1
  416. package/Meshes/groundMesh.js.map +1 -1
  417. package/Meshes/instancedMesh.js.map +1 -1
  418. package/Meshes/linesMesh.js.map +1 -1
  419. package/Meshes/mesh.js.map +1 -1
  420. package/Meshes/trailMesh.js.map +1 -1
  421. package/Meshes/transformNode.js.map +1 -1
  422. package/Misc/assetsManager.js.map +1 -1
  423. package/Misc/depthReducer.js.map +1 -1
  424. package/Misc/fileTools.js +4 -3
  425. package/Misc/fileTools.js.map +1 -1
  426. package/Misc/sceneOptimizer.js.map +1 -1
  427. package/Misc/smartArray.js.map +1 -1
  428. package/Misc/workerPool.js.map +1 -1
  429. package/Particles/EmitterTypes/cylinderParticleEmitter.js.map +1 -1
  430. package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
  431. package/Particles/gpuParticleSystem.js.map +1 -1
  432. package/Particles/particleSystem.js.map +1 -1
  433. package/Particles/thinParticleSystem.js.map +1 -1
  434. package/Physics/physicsRaycastResult.js.map +1 -1
  435. package/Physics/proximityCastResult.js.map +1 -1
  436. package/Physics/v1/physicsJoint.js.map +1 -1
  437. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  438. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  439. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  440. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  441. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  442. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  443. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.js.map +1 -1
  444. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  445. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  446. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  447. package/PostProcesses/blurPostProcess.js.map +1 -1
  448. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  449. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  450. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  451. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  452. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  453. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  454. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  455. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  456. package/PostProcesses/filterPostProcess.js.map +1 -1
  457. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  458. package/PostProcesses/grainPostProcess.js.map +1 -1
  459. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  460. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  461. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  462. package/PostProcesses/passPostProcess.js.map +1 -1
  463. package/PostProcesses/refractionPostProcess.js.map +1 -1
  464. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  465. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  466. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  467. package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
  468. package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
  469. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  470. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  471. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  472. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  473. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  474. package/Rendering/edgesRenderer.js.map +1 -1
  475. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  476. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  477. package/Rendering/reflectiveShadowMap.js.map +1 -1
  478. package/Sprites/sprite.js.map +1 -1
  479. package/Sprites/spritePackedManager.js.map +1 -1
  480. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  481. package/XR/features/Layers/WebXRProjectionLayer.js.map +1 -1
  482. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  483. package/XR/features/WebXRBackgroundRemover.js.map +1 -1
  484. package/XR/features/WebXRControllerMovement.js.map +1 -1
  485. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  486. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  487. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  488. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  489. package/XR/features/WebXRDepthSensing.js.map +1 -1
  490. package/XR/features/WebXREyeTracking.js.map +1 -1
  491. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  492. package/XR/features/WebXRHandTracking.js.map +1 -1
  493. package/XR/features/WebXRHitTest.js.map +1 -1
  494. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  495. package/XR/features/WebXRImageTracking.js.map +1 -1
  496. package/XR/features/WebXRLayers.js.map +1 -1
  497. package/XR/features/WebXRLightEstimation.js.map +1 -1
  498. package/XR/features/WebXRMeshDetector.js.map +1 -1
  499. package/XR/features/WebXRNearInteraction.js.map +1 -1
  500. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  501. package/XR/features/WebXRRawCameraAccess.js.map +1 -1
  502. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  503. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  504. package/XR/motionController/webXRProfiledMotionController.js.map +1 -1
  505. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  506. package/XR/webXRCamera.js.map +1 -1
  507. package/XR/webXRWebGLLayer.js.map +1 -1
  508. package/assets/Draco/draco_wasm_wrapper.js +115 -115
  509. package/package.json +1 -1
  510. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/condition.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from \"./action\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { ActionManager } from \"./actionManager\";\r\n\r\n/**\r\n * A Condition applied to an Action\r\n */\r\nexport class Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _evaluationId: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _currentResult: boolean;\r\n\r\n /**\r\n * Creates a new Condition\r\n * @param actionManager the manager of the action the condition is applied to\r\n */\r\n constructor(actionManager: ActionManager) {\r\n this._actionManager = actionManager;\r\n }\r\n\r\n /**\r\n * Check if the current condition is valid\r\n * @returns a boolean\r\n */\r\n public isValid(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n return this._actionManager._getProperty(propertyPath);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n return this._actionManager._getEffectiveTarget(target, propertyPath);\r\n }\r\n\r\n // eslint-disable-next-line jsdoc/require-returns-check\r\n /**\r\n * Serialize placeholder for child classes\r\n * @returns the serialized object\r\n */\r\n public serialize(): any {}\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _serialize(serializedCondition: any): any {\r\n return {\r\n type: 2, // Condition\r\n children: [],\r\n name: serializedCondition.name,\r\n properties: serializedCondition.properties,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Defines specific conditional operators as extensions of Condition\r\n */\r\nexport class ValueCondition extends Condition {\r\n private static _IsEqual = 0;\r\n private static _IsDifferent = 1;\r\n private static _IsGreater = 2;\r\n private static _IsLesser = 3;\r\n\r\n /**\r\n * returns the number for IsEqual\r\n */\r\n public static get IsEqual(): number {\r\n return ValueCondition._IsEqual;\r\n }\r\n\r\n /**\r\n * Returns the number for IsDifferent\r\n */\r\n public static get IsDifferent(): number {\r\n return ValueCondition._IsDifferent;\r\n }\r\n\r\n /**\r\n * Returns the number for IsGreater\r\n */\r\n public static get IsGreater(): number {\r\n return ValueCondition._IsGreater;\r\n }\r\n\r\n /**\r\n * Returns the number for IsLesser\r\n */\r\n public static get IsLesser(): number {\r\n return ValueCondition._IsLesser;\r\n }\r\n\r\n /**\r\n * Internal only The action manager for the condition\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Creates a new ValueCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target for the action\r\n * @param propertyPath path to specify the property of the target the conditional operator uses\r\n * @param value the value compared by the conditional operator against the current value of the property\r\n * @param operator the conditional operator, default ValueCondition.IsEqual\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** path to specify the property of the target the conditional operator uses */\r\n public propertyPath: string,\r\n /** the value compared by the conditional operator against the current value of the property */\r\n public value: any,\r\n /** the conditional operator, default ValueCondition.IsEqual */\r\n public operator: number = ValueCondition.IsEqual\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n this._effectiveTarget = this._getEffectiveTarget(target, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Compares the given value with the property value for the specified conditional operator\r\n * @returns the result of the comparison\r\n */\r\n public isValid(): boolean {\r\n switch (this.operator) {\r\n case ValueCondition.IsGreater:\r\n return this._effectiveTarget[this._property] > this.value;\r\n case ValueCondition.IsLesser:\r\n return this._effectiveTarget[this._property] < this.value;\r\n case ValueCondition.IsEqual:\r\n case ValueCondition.IsDifferent: {\r\n let check: boolean;\r\n\r\n if (this.value.equals) {\r\n check = this.value.equals(this._effectiveTarget[this._property]);\r\n } else {\r\n check = this.value === this._effectiveTarget[this._property];\r\n }\r\n return this.operator === ValueCondition.IsEqual ? check : !check;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Serialize the ValueCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public serialize(): any {\r\n return this._serialize({\r\n name: \"ValueCondition\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n { name: \"operator\", value: ValueCondition.GetOperatorName(this.operator) },\r\n ],\r\n });\r\n }\r\n\r\n /**\r\n * Gets the name of the conditional operator for the ValueCondition\r\n * @param operator the conditional operator\r\n * @returns the name\r\n */\r\n public static GetOperatorName(operator: number): string {\r\n switch (operator) {\r\n case ValueCondition._IsEqual:\r\n return \"IsEqual\";\r\n case ValueCondition._IsDifferent:\r\n return \"IsDifferent\";\r\n case ValueCondition._IsGreater:\r\n return \"IsGreater\";\r\n case ValueCondition._IsLesser:\r\n return \"IsLesser\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Defines a predicate condition as an extension of Condition\r\n */\r\nexport class PredicateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n /**\r\n * Creates a new PredicateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param predicate defines the predicate function used to validate the condition\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n /** defines the predicate function used to validate the condition */\r\n public predicate: () => boolean\r\n ) {\r\n super(actionManager);\r\n }\r\n\r\n /**\r\n * @returns the validity of the predicate condition\r\n */\r\n public isValid(): boolean {\r\n return this.predicate();\r\n }\r\n}\r\n\r\n/**\r\n * Defines a state condition as an extension of Condition\r\n */\r\nexport class StateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Creates a new StateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target of the condition\r\n * @param value to compare with target state\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** Value to compare with target state */\r\n public value: string\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the current condition is met\r\n * @returns the validity of the state\r\n */\r\n public isValid(): boolean {\r\n return this._target.state === this.value;\r\n }\r\n\r\n /**\r\n * Serialize the StateCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public serialize(): any {\r\n return this._serialize({\r\n name: \"StateCondition\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"value\", value: this.value }],\r\n });\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ValueCondition\", ValueCondition);\r\nRegisterClass(\"BABYLON.PredicateCondition\", PredicateCondition);\r\nRegisterClass(\"BABYLON.StateCondition\", StateCondition);\r\n"]}
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/condition.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from \"./action\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { ActionManager } from \"./actionManager\";\r\n\r\n/**\r\n * A Condition applied to an Action\r\n */\r\nexport class Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _evaluationId: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n public _currentResult: boolean;\r\n\r\n /**\r\n * Creates a new Condition\r\n * @param actionManager the manager of the action the condition is applied to\r\n */\r\n constructor(actionManager: ActionManager) {\r\n this._actionManager = actionManager;\r\n }\r\n\r\n /**\r\n * Check if the current condition is valid\r\n * @returns a boolean\r\n */\r\n public isValid(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n return this._actionManager._getProperty(propertyPath);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n return this._actionManager._getEffectiveTarget(target, propertyPath);\r\n }\r\n\r\n // eslint-disable-next-line jsdoc/require-returns-check\r\n /**\r\n * Serialize placeholder for child classes\r\n * @returns the serialized object\r\n */\r\n public serialize(): any {}\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _serialize(serializedCondition: any): any {\r\n return {\r\n type: 2, // Condition\r\n children: [],\r\n name: serializedCondition.name,\r\n properties: serializedCondition.properties,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Defines specific conditional operators as extensions of Condition\r\n */\r\nexport class ValueCondition extends Condition {\r\n private static _IsEqual = 0;\r\n private static _IsDifferent = 1;\r\n private static _IsGreater = 2;\r\n private static _IsLesser = 3;\r\n\r\n /**\r\n * returns the number for IsEqual\r\n */\r\n public static get IsEqual(): number {\r\n return ValueCondition._IsEqual;\r\n }\r\n\r\n /**\r\n * Returns the number for IsDifferent\r\n */\r\n public static get IsDifferent(): number {\r\n return ValueCondition._IsDifferent;\r\n }\r\n\r\n /**\r\n * Returns the number for IsGreater\r\n */\r\n public static get IsGreater(): number {\r\n return ValueCondition._IsGreater;\r\n }\r\n\r\n /**\r\n * Returns the number for IsLesser\r\n */\r\n public static get IsLesser(): number {\r\n return ValueCondition._IsLesser;\r\n }\r\n\r\n /**\r\n * Internal only The action manager for the condition\r\n * @internal\r\n */\r\n public override _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Creates a new ValueCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target for the action\r\n * @param propertyPath path to specify the property of the target the conditional operator uses\r\n * @param value the value compared by the conditional operator against the current value of the property\r\n * @param operator the conditional operator, default ValueCondition.IsEqual\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** path to specify the property of the target the conditional operator uses */\r\n public propertyPath: string,\r\n /** the value compared by the conditional operator against the current value of the property */\r\n public value: any,\r\n /** the conditional operator, default ValueCondition.IsEqual */\r\n public operator: number = ValueCondition.IsEqual\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n this._effectiveTarget = this._getEffectiveTarget(target, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Compares the given value with the property value for the specified conditional operator\r\n * @returns the result of the comparison\r\n */\r\n public override isValid(): boolean {\r\n switch (this.operator) {\r\n case ValueCondition.IsGreater:\r\n return this._effectiveTarget[this._property] > this.value;\r\n case ValueCondition.IsLesser:\r\n return this._effectiveTarget[this._property] < this.value;\r\n case ValueCondition.IsEqual:\r\n case ValueCondition.IsDifferent: {\r\n let check: boolean;\r\n\r\n if (this.value.equals) {\r\n check = this.value.equals(this._effectiveTarget[this._property]);\r\n } else {\r\n check = this.value === this._effectiveTarget[this._property];\r\n }\r\n return this.operator === ValueCondition.IsEqual ? check : !check;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Serialize the ValueCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public override serialize(): any {\r\n return this._serialize({\r\n name: \"ValueCondition\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n { name: \"operator\", value: ValueCondition.GetOperatorName(this.operator) },\r\n ],\r\n });\r\n }\r\n\r\n /**\r\n * Gets the name of the conditional operator for the ValueCondition\r\n * @param operator the conditional operator\r\n * @returns the name\r\n */\r\n public static GetOperatorName(operator: number): string {\r\n switch (operator) {\r\n case ValueCondition._IsEqual:\r\n return \"IsEqual\";\r\n case ValueCondition._IsDifferent:\r\n return \"IsDifferent\";\r\n case ValueCondition._IsGreater:\r\n return \"IsGreater\";\r\n case ValueCondition._IsLesser:\r\n return \"IsLesser\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Defines a predicate condition as an extension of Condition\r\n */\r\nexport class PredicateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public override _actionManager: ActionManager;\r\n\r\n /**\r\n * Creates a new PredicateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param predicate defines the predicate function used to validate the condition\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n /** defines the predicate function used to validate the condition */\r\n public predicate: () => boolean\r\n ) {\r\n super(actionManager);\r\n }\r\n\r\n /**\r\n * @returns the validity of the predicate condition\r\n */\r\n public override isValid(): boolean {\r\n return this.predicate();\r\n }\r\n}\r\n\r\n/**\r\n * Defines a state condition as an extension of Condition\r\n */\r\nexport class StateCondition extends Condition {\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public override _actionManager: ActionManager;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Creates a new StateCondition\r\n * @param actionManager manager for the action the condition applies to\r\n * @param target of the condition\r\n * @param value to compare with target state\r\n */\r\n constructor(\r\n actionManager: ActionManager,\r\n target: any,\r\n /** Value to compare with target state */\r\n public value: string\r\n ) {\r\n super(actionManager);\r\n\r\n this._target = target;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the current condition is met\r\n * @returns the validity of the state\r\n */\r\n public override isValid(): boolean {\r\n return this._target.state === this.value;\r\n }\r\n\r\n /**\r\n * Serialize the StateCondition into a JSON compatible object\r\n * @returns serialization object\r\n */\r\n public override serialize(): any {\r\n return this._serialize({\r\n name: \"StateCondition\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"value\", value: this.value }],\r\n });\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ValueCondition\", ValueCondition);\r\nRegisterClass(\"BABYLON.PredicateCondition\", PredicateCondition);\r\nRegisterClass(\"BABYLON.StateCondition\", StateCondition);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"directActions.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/directActions.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { Action } from \"./action\";\r\nimport type { Condition } from \"./condition\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { ActionEvent } from \"./actionEvent\";\r\n\r\n/**\r\n * This defines an action responsible to toggle a boolean once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SwitchBooleanAction extends Action {\r\n /**\r\n * The path to the boolean property in the target object\r\n */\r\n public propertyPath: string;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the boolean\r\n * @param propertyPath defines the path to the boolean property in the target object\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, propertyPath: string, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.propertyPath = propertyPath;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Execute the action toggle the boolean value.\r\n */\r\n public execute(): void {\r\n this._effectiveTarget[this._property] = !this._effectiveTarget[this._property];\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SwitchBooleanAction\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"propertyPath\", value: this.propertyPath }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to set a the state field of the target\r\n * to a desired value once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SetStateAction extends Action {\r\n /**\r\n * The value to store in the state field.\r\n */\r\n public value: string;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the state property\r\n * @param value defines the value to store in the state field\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, value: string, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.value = value;\r\n this._target = target;\r\n }\r\n\r\n /**\r\n * Execute the action and store the value on the target state property.\r\n */\r\n public execute(): void {\r\n this._target.state = this.value;\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SetStateAction\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"value\", value: this.value }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to set a property of the target\r\n * to a desired value once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SetValueAction extends Action {\r\n /**\r\n * The path of the property to set in the target.\r\n */\r\n public propertyPath: string;\r\n\r\n /**\r\n * The value to set in the property\r\n */\r\n public value: any;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the property\r\n * @param propertyPath defines the path of the property to set in the target\r\n * @param value defines the value to set in the property\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, propertyPath: string, value: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.propertyPath = propertyPath;\r\n this.value = value;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Execute the action and set the targeted property to the desired value.\r\n */\r\n public execute(): void {\r\n this._effectiveTarget[this._property] = this.value;\r\n\r\n if (this._target.markAsDirty) {\r\n this._target.markAsDirty(this._property);\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SetValueAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to increment the target value\r\n * to a desired value once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class IncrementValueAction extends Action {\r\n /**\r\n * The path of the property to increment in the target.\r\n */\r\n public propertyPath: string;\r\n\r\n /**\r\n * The value we should increment the property by.\r\n */\r\n public value: any;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the property\r\n * @param propertyPath defines the path of the property to increment in the target\r\n * @param value defines the value value we should increment the property by\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, propertyPath: string, value: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.propertyPath = propertyPath;\r\n this.value = value;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n\r\n if (typeof this._effectiveTarget[this._property] !== \"number\") {\r\n Logger.Warn(\"Warning: IncrementValueAction can only be used with number values\");\r\n }\r\n }\r\n\r\n /**\r\n * Execute the action and increment the target of the value amount.\r\n */\r\n public execute(): void {\r\n this._effectiveTarget[this._property] += this.value;\r\n\r\n if (this._target.markAsDirty) {\r\n this._target.markAsDirty(this._property);\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"IncrementValueAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to start an animation once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class PlayAnimationAction extends Action {\r\n /**\r\n * Where the animation should start (animation frame)\r\n */\r\n public from: number;\r\n\r\n /**\r\n * Where the animation should stop (animation frame)\r\n */\r\n public to: number;\r\n\r\n /**\r\n * Define if the animation should loop or stop after the first play.\r\n */\r\n public loop?: boolean;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the target animation or animation name\r\n * @param from defines from where the animation should start (animation frame)\r\n * @param to defines where the animation should stop (animation frame)\r\n * @param loop defines if the animation should loop or stop after the first play\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, from: number, to: number, loop?: boolean, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.from = from;\r\n this.to = to;\r\n this.loop = loop;\r\n this._target = target;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and play the animation.\r\n */\r\n public execute(): void {\r\n const scene = this._actionManager.getScene();\r\n scene.beginAnimation(this._target, this.from, this.to, this.loop);\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"PlayAnimationAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"from\", value: String(this.from) },\r\n { name: \"to\", value: String(this.to) },\r\n { name: \"loop\", value: Action._SerializeValueAsString(this.loop) || false },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to stop an animation once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class StopAnimationAction extends Action {\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the target animation or animation name\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._target = target;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and stop the animation.\r\n */\r\n public execute(): void {\r\n const scene = this._actionManager.getScene();\r\n scene.stopAnimation(this._target);\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"StopAnimationAction\",\r\n properties: [Action._GetTargetProperty(this._target)],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible that does nothing once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class DoNothingAction extends Action {\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any = Constants.ACTION_NothingTrigger, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n }\r\n\r\n /**\r\n * Execute the action and do nothing.\r\n */\r\n public execute(): void {}\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"DoNothingAction\",\r\n properties: [],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to trigger several actions once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class CombineAction extends Action {\r\n /**\r\n * The list of aggregated animations to run.\r\n */\r\n public children: Action[];\r\n\r\n /**\r\n * defines if the children actions conditions should be check before execution\r\n */\r\n public enableChildrenConditions: boolean;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param children defines the list of aggregated animations to run\r\n * @param condition defines the trigger related conditions\r\n * @param enableChildrenConditions defines if the children actions conditions should be check before execution\r\n */\r\n constructor(triggerOptions: any, children: Action[], condition?: Condition, enableChildrenConditions = true) {\r\n super(triggerOptions, condition);\r\n this.children = children;\r\n this.enableChildrenConditions = enableChildrenConditions;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {\r\n for (let index = 0; index < this.children.length; index++) {\r\n this.children[index]._actionManager = this._actionManager;\r\n this.children[index]._prepare();\r\n }\r\n }\r\n\r\n /**\r\n * Execute the action and executes all the aggregated actions.\r\n * @param evt event to execute\r\n */\r\n public execute(evt: ActionEvent): void {\r\n for (const action of this.children) {\r\n if (!this.enableChildrenConditions || action._evaluateConditionForCurrentFrame()) {\r\n action.execute(evt);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n const serializationObject = super._serialize(\r\n {\r\n name: \"CombineAction\",\r\n properties: [],\r\n combine: [],\r\n },\r\n parent\r\n );\r\n\r\n for (let i = 0; i < this.children.length; i++) {\r\n serializationObject.combine.push(this.children[i].serialize(null));\r\n }\r\n\r\n return serializationObject;\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to run code (external event) once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class ExecuteCodeAction extends Action {\r\n /**\r\n * The callback function to run.\r\n */\r\n public func: (evt: ActionEvent) => void;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param func defines the callback function to run\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, func: (evt: ActionEvent) => void, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.func = func;\r\n }\r\n\r\n /**\r\n * Execute the action and run the attached code.\r\n * @param evt event to execute\r\n */\r\n public execute(evt: ActionEvent): void {\r\n this.func(evt);\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to set the parent property of the target once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SetParentAction extends Action {\r\n private _parent: any;\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the target containing the parent property\r\n * @param parent defines from where the animation should start (animation frame)\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, parent: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._target = target;\r\n this._parent = parent;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and set the parent property.\r\n */\r\n public execute(): void {\r\n if (this._target.parent === this._parent) {\r\n return;\r\n }\r\n\r\n const invertParentWorldMatrix = this._parent.getWorldMatrix().clone();\r\n invertParentWorldMatrix.invert();\r\n\r\n this._target.position = Vector3.TransformCoordinates(this._target.position, invertParentWorldMatrix);\r\n\r\n this._target.parent = this._parent;\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SetParentAction\",\r\n properties: [Action._GetTargetProperty(this._target), Action._GetTargetProperty(this._parent)],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SetParentAction\", SetParentAction);\r\nRegisterClass(\"BABYLON.ExecuteCodeAction\", ExecuteCodeAction);\r\nRegisterClass(\"BABYLON.DoNothingAction\", DoNothingAction);\r\nRegisterClass(\"BABYLON.StopAnimationAction\", StopAnimationAction);\r\nRegisterClass(\"BABYLON.PlayAnimationAction\", PlayAnimationAction);\r\nRegisterClass(\"BABYLON.IncrementValueAction\", IncrementValueAction);\r\nRegisterClass(\"BABYLON.SetValueAction\", SetValueAction);\r\nRegisterClass(\"BABYLON.SetStateAction\", SetStateAction);\r\nRegisterClass(\"BABYLON.SetParentAction\", SetParentAction);\r\nRegisterClass(\"BABYLON.SwitchBooleanAction\", SwitchBooleanAction);\r\nRegisterClass(\"BABYLON.CombineAction\", CombineAction);\r\n"]}
1
+ {"version":3,"file":"directActions.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/directActions.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { Vector3 } from \"../Maths/math.vector\";\r\nimport { Action } from \"./action\";\r\nimport type { Condition } from \"./condition\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport type { ActionEvent } from \"./actionEvent\";\r\n\r\n/**\r\n * This defines an action responsible to toggle a boolean once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SwitchBooleanAction extends Action {\r\n /**\r\n * The path to the boolean property in the target object\r\n */\r\n public propertyPath: string;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the boolean\r\n * @param propertyPath defines the path to the boolean property in the target object\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, propertyPath: string, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.propertyPath = propertyPath;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Execute the action toggle the boolean value.\r\n */\r\n public override execute(): void {\r\n this._effectiveTarget[this._property] = !this._effectiveTarget[this._property];\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SwitchBooleanAction\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"propertyPath\", value: this.propertyPath }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to set a the state field of the target\r\n * to a desired value once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SetStateAction extends Action {\r\n /**\r\n * The value to store in the state field.\r\n */\r\n public value: string;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the state property\r\n * @param value defines the value to store in the state field\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, value: string, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.value = value;\r\n this._target = target;\r\n }\r\n\r\n /**\r\n * Execute the action and store the value on the target state property.\r\n */\r\n public override execute(): void {\r\n this._target.state = this.value;\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SetStateAction\",\r\n properties: [Action._GetTargetProperty(this._target), { name: \"value\", value: this.value }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to set a property of the target\r\n * to a desired value once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SetValueAction extends Action {\r\n /**\r\n * The path of the property to set in the target.\r\n */\r\n public propertyPath: string;\r\n\r\n /**\r\n * The value to set in the property\r\n */\r\n public value: any;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the property\r\n * @param propertyPath defines the path of the property to set in the target\r\n * @param value defines the value to set in the property\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, propertyPath: string, value: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.propertyPath = propertyPath;\r\n this.value = value;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Execute the action and set the targeted property to the desired value.\r\n */\r\n public override execute(): void {\r\n this._effectiveTarget[this._property] = this.value;\r\n\r\n if (this._target.markAsDirty) {\r\n this._target.markAsDirty(this._property);\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SetValueAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to increment the target value\r\n * to a desired value once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class IncrementValueAction extends Action {\r\n /**\r\n * The path of the property to increment in the target.\r\n */\r\n public propertyPath: string;\r\n\r\n /**\r\n * The value we should increment the property by.\r\n */\r\n public value: any;\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the property\r\n * @param propertyPath defines the path of the property to increment in the target\r\n * @param value defines the value value we should increment the property by\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, propertyPath: string, value: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.propertyPath = propertyPath;\r\n this.value = value;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n\r\n if (typeof this._effectiveTarget[this._property] !== \"number\") {\r\n Logger.Warn(\"Warning: IncrementValueAction can only be used with number values\");\r\n }\r\n }\r\n\r\n /**\r\n * Execute the action and increment the target of the value amount.\r\n */\r\n public override execute(): void {\r\n this._effectiveTarget[this._property] += this.value;\r\n\r\n if (this._target.markAsDirty) {\r\n this._target.markAsDirty(this._property);\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"IncrementValueAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to start an animation once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class PlayAnimationAction extends Action {\r\n /**\r\n * Where the animation should start (animation frame)\r\n */\r\n public from: number;\r\n\r\n /**\r\n * Where the animation should stop (animation frame)\r\n */\r\n public to: number;\r\n\r\n /**\r\n * Define if the animation should loop or stop after the first play.\r\n */\r\n public loop?: boolean;\r\n\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the target animation or animation name\r\n * @param from defines from where the animation should start (animation frame)\r\n * @param to defines where the animation should stop (animation frame)\r\n * @param loop defines if the animation should loop or stop after the first play\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, from: number, to: number, loop?: boolean, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.from = from;\r\n this.to = to;\r\n this.loop = loop;\r\n this._target = target;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and play the animation.\r\n */\r\n public override execute(): void {\r\n const scene = this._actionManager.getScene();\r\n scene.beginAnimation(this._target, this.from, this.to, this.loop);\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"PlayAnimationAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"from\", value: String(this.from) },\r\n { name: \"to\", value: String(this.to) },\r\n { name: \"loop\", value: Action._SerializeValueAsString(this.loop) || false },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to stop an animation once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class StopAnimationAction extends Action {\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the target animation or animation name\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._target = target;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and stop the animation.\r\n */\r\n public override execute(): void {\r\n const scene = this._actionManager.getScene();\r\n scene.stopAnimation(this._target);\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"StopAnimationAction\",\r\n properties: [Action._GetTargetProperty(this._target)],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible that does nothing once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class DoNothingAction extends Action {\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any = Constants.ACTION_NothingTrigger, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n }\r\n\r\n /**\r\n * Execute the action and do nothing.\r\n */\r\n public override execute(): void {}\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"DoNothingAction\",\r\n properties: [],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to trigger several actions once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class CombineAction extends Action {\r\n /**\r\n * The list of aggregated animations to run.\r\n */\r\n public children: Action[];\r\n\r\n /**\r\n * defines if the children actions conditions should be check before execution\r\n */\r\n public enableChildrenConditions: boolean;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param children defines the list of aggregated animations to run\r\n * @param condition defines the trigger related conditions\r\n * @param enableChildrenConditions defines if the children actions conditions should be check before execution\r\n */\r\n constructor(triggerOptions: any, children: Action[], condition?: Condition, enableChildrenConditions = true) {\r\n super(triggerOptions, condition);\r\n this.children = children;\r\n this.enableChildrenConditions = enableChildrenConditions;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {\r\n for (let index = 0; index < this.children.length; index++) {\r\n this.children[index]._actionManager = this._actionManager;\r\n this.children[index]._prepare();\r\n }\r\n }\r\n\r\n /**\r\n * Execute the action and executes all the aggregated actions.\r\n * @param evt event to execute\r\n */\r\n public override execute(evt: ActionEvent): void {\r\n for (const action of this.children) {\r\n if (!this.enableChildrenConditions || action._evaluateConditionForCurrentFrame()) {\r\n action.execute(evt);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n const serializationObject = super._serialize(\r\n {\r\n name: \"CombineAction\",\r\n properties: [],\r\n combine: [],\r\n },\r\n parent\r\n );\r\n\r\n for (let i = 0; i < this.children.length; i++) {\r\n serializationObject.combine.push(this.children[i].serialize(null));\r\n }\r\n\r\n return serializationObject;\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to run code (external event) once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class ExecuteCodeAction extends Action {\r\n /**\r\n * The callback function to run.\r\n */\r\n public func: (evt: ActionEvent) => void;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param func defines the callback function to run\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, func: (evt: ActionEvent) => void, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this.func = func;\r\n }\r\n\r\n /**\r\n * Execute the action and run the attached code.\r\n * @param evt event to execute\r\n */\r\n public override execute(evt: ActionEvent): void {\r\n this.func(evt);\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action responsible to set the parent property of the target once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class SetParentAction extends Action {\r\n private _parent: any;\r\n private _target: any;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the target containing the parent property\r\n * @param parent defines from where the animation should start (animation frame)\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, target: any, parent: any, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._target = target;\r\n this._parent = parent;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and set the parent property.\r\n */\r\n public override execute(): void {\r\n if (this._target.parent === this._parent) {\r\n return;\r\n }\r\n\r\n const invertParentWorldMatrix = this._parent.getWorldMatrix().clone();\r\n invertParentWorldMatrix.invert();\r\n\r\n this._target.position = Vector3.TransformCoordinates(this._target.position, invertParentWorldMatrix);\r\n\r\n this._target.parent = this._parent;\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"SetParentAction\",\r\n properties: [Action._GetTargetProperty(this._target), Action._GetTargetProperty(this._parent)],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SetParentAction\", SetParentAction);\r\nRegisterClass(\"BABYLON.ExecuteCodeAction\", ExecuteCodeAction);\r\nRegisterClass(\"BABYLON.DoNothingAction\", DoNothingAction);\r\nRegisterClass(\"BABYLON.StopAnimationAction\", StopAnimationAction);\r\nRegisterClass(\"BABYLON.PlayAnimationAction\", PlayAnimationAction);\r\nRegisterClass(\"BABYLON.IncrementValueAction\", IncrementValueAction);\r\nRegisterClass(\"BABYLON.SetValueAction\", SetValueAction);\r\nRegisterClass(\"BABYLON.SetStateAction\", SetStateAction);\r\nRegisterClass(\"BABYLON.SetParentAction\", SetParentAction);\r\nRegisterClass(\"BABYLON.SwitchBooleanAction\", SwitchBooleanAction);\r\nRegisterClass(\"BABYLON.CombineAction\", CombineAction);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"directAudioActions.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/directAudioActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAGvC;;;;;OAKG;IACH,YAAY,cAAmB,EAAE,KAAY,EAAE,SAAqB;QAChE,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,QAAQ,KAAU,CAAC;IAE1B;;OAEG;IACI,OAAO;QACV,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;IACL,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAAW;QACxB,OAAO,KAAK,CAAC,UAAU,CACnB;YACI,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC3D,EACD,MAAM,CACT,CAAC;IACN,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAGvC;;;;;OAKG;IACH,YAAY,cAAmB,EAAE,KAAY,EAAE,SAAqB;QAChE,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,gBAAgB;IACT,QAAQ,KAAU,CAAC;IAE1B;;OAEG;IACI,OAAO;QACV,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;IACL,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAAW;QACxB,OAAO,KAAK,CAAC,UAAU,CACnB;YACI,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC3D,EACD,MAAM,CACT,CAAC;IACN,CAAC;CACJ;AAED,aAAa,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC;AAC1D,aAAa,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import { Action } from \"./action\";\r\nimport type { Condition } from \"./condition\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport type { Sound } from \"../Audio/sound\";\r\n\r\n/**\r\n * This defines an action helpful to play a defined sound on a triggered action.\r\n */\r\nexport class PlaySoundAction extends Action {\r\n private _sound: Sound;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param sound defines the sound to play\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, sound: Sound, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._sound = sound;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and play the sound.\r\n */\r\n public execute(): void {\r\n if (this._sound !== undefined) {\r\n this._sound.play();\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"PlaySoundAction\",\r\n properties: [{ name: \"sound\", value: this._sound.name }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action helpful to stop a defined sound on a triggered action.\r\n */\r\nexport class StopSoundAction extends Action {\r\n private _sound: Sound;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param sound defines the sound to stop\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, sound: Sound, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._sound = sound;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and stop the sound.\r\n */\r\n public execute(): void {\r\n if (this._sound !== undefined) {\r\n this._sound.stop();\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"StopSoundAction\",\r\n properties: [{ name: \"sound\", value: this._sound.name }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PlaySoundAction\", PlaySoundAction);\r\nRegisterClass(\"BABYLON.StopSoundAction\", StopSoundAction);\r\n"]}
1
+ {"version":3,"file":"directAudioActions.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/directAudioActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAGvC;;;;;OAKG;IACH,YAAY,cAAmB,EAAE,KAAY,EAAE,SAAqB;QAChE,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,gBAAgB;IACA,QAAQ,KAAU,CAAC;IAEnC;;OAEG;IACa,OAAO;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;IACL,CAAC;IAED;;;;OAIG;IACa,SAAS,CAAC,MAAW;QACjC,OAAO,KAAK,CAAC,UAAU,CACnB;YACI,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC3D,EACD,MAAM,CACT,CAAC;IACN,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAM;IAGvC;;;;;OAKG;IACH,YAAY,cAAmB,EAAE,KAAY,EAAE,SAAqB;QAChE,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,gBAAgB;IACA,QAAQ,KAAU,CAAC;IAEnC;;OAEG;IACa,OAAO;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;IACL,CAAC;IAED;;;;OAIG;IACa,SAAS,CAAC,MAAW;QACjC,OAAO,KAAK,CAAC,UAAU,CACnB;YACI,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC3D,EACD,MAAM,CACT,CAAC;IACN,CAAC;CACJ;AAED,aAAa,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC;AAC1D,aAAa,CAAC,yBAAyB,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import { Action } from \"./action\";\r\nimport type { Condition } from \"./condition\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport type { Sound } from \"../Audio/sound\";\r\n\r\n/**\r\n * This defines an action helpful to play a defined sound on a triggered action.\r\n */\r\nexport class PlaySoundAction extends Action {\r\n private _sound: Sound;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param sound defines the sound to play\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, sound: Sound, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._sound = sound;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and play the sound.\r\n */\r\n public override execute(): void {\r\n if (this._sound !== undefined) {\r\n this._sound.play();\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"PlaySoundAction\",\r\n properties: [{ name: \"sound\", value: this._sound.name }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * This defines an action helpful to stop a defined sound on a triggered action.\r\n */\r\nexport class StopSoundAction extends Action {\r\n private _sound: Sound;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param sound defines the sound to stop\r\n * @param condition defines the trigger related conditions\r\n */\r\n constructor(triggerOptions: any, sound: Sound, condition?: Condition) {\r\n super(triggerOptions, condition);\r\n this._sound = sound;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {}\r\n\r\n /**\r\n * Execute the action and stop the sound.\r\n */\r\n public override execute(): void {\r\n if (this._sound !== undefined) {\r\n this._sound.stop();\r\n }\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"StopSoundAction\",\r\n properties: [{ name: \"sound\", value: this._sound.name }],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.PlaySoundAction\", PlaySoundAction);\r\nRegisterClass(\"BABYLON.StopSoundAction\", StopSoundAction);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"interpolateValueAction.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/interpolateValueAction.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from \"./action\";\r\nimport type { Condition } from \"./condition\";\r\n\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { Vector3, Matrix, Quaternion } from \"../Maths/math.vector\";\r\nimport { Animation } from \"../Animations/animation\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * This defines an action responsible to change the value of a property\r\n * by interpolating between its current value and the newly set one once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class InterpolateValueAction extends Action {\r\n /**\r\n * Defines the path of the property where the value should be interpolated\r\n */\r\n public propertyPath: string;\r\n\r\n /**\r\n * Defines the target value at the end of the interpolation.\r\n */\r\n public value: any;\r\n\r\n /**\r\n * Defines the time it will take for the property to interpolate to the value.\r\n */\r\n public duration: number = 1000;\r\n\r\n /**\r\n * Defines if the other scene animations should be stopped when the action has been triggered\r\n */\r\n public stopOtherAnimations?: boolean;\r\n\r\n /**\r\n * Defines a callback raised once the interpolation animation has been done.\r\n */\r\n public onInterpolationDone?: () => void;\r\n\r\n /**\r\n * Observable triggered once the interpolation animation has been done.\r\n */\r\n public onInterpolationDoneObservable = new Observable<InterpolateValueAction>();\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the value to interpolate\r\n * @param propertyPath defines the path to the property in the target object\r\n * @param value defines the target value at the end of the interpolation\r\n * @param duration defines the time it will take for the property to interpolate to the value.\r\n * @param condition defines the trigger related conditions\r\n * @param stopOtherAnimations defines if the other scene animations should be stopped when the action has been triggered\r\n * @param onInterpolationDone defines a callback raised once the interpolation animation has been done\r\n */\r\n constructor(\r\n triggerOptions: any,\r\n target: any,\r\n propertyPath: string,\r\n value: any,\r\n duration: number = 1000,\r\n condition?: Condition,\r\n stopOtherAnimations?: boolean,\r\n onInterpolationDone?: () => void\r\n ) {\r\n super(triggerOptions, condition);\r\n\r\n this.propertyPath = propertyPath;\r\n this.value = value;\r\n this.duration = duration;\r\n this.stopOtherAnimations = stopOtherAnimations;\r\n this.onInterpolationDone = onInterpolationDone;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Execute the action starts the value interpolation.\r\n */\r\n public execute(): void {\r\n const scene = this._actionManager.getScene();\r\n const keys = [\r\n {\r\n frame: 0,\r\n value: this._effectiveTarget[this._property],\r\n },\r\n {\r\n frame: 100,\r\n value: this.value,\r\n },\r\n ];\r\n\r\n let dataType: number;\r\n\r\n if (typeof this.value === \"number\") {\r\n dataType = Animation.ANIMATIONTYPE_FLOAT;\r\n } else if (this.value instanceof Color3) {\r\n dataType = Animation.ANIMATIONTYPE_COLOR3;\r\n } else if (this.value instanceof Vector3) {\r\n dataType = Animation.ANIMATIONTYPE_VECTOR3;\r\n } else if (this.value instanceof Matrix) {\r\n dataType = Animation.ANIMATIONTYPE_MATRIX;\r\n } else if (this.value instanceof Quaternion) {\r\n dataType = Animation.ANIMATIONTYPE_QUATERNION;\r\n } else {\r\n Logger.Warn(\"InterpolateValueAction: Unsupported type (\" + typeof this.value + \")\");\r\n return;\r\n }\r\n\r\n const animation = new Animation(\"InterpolateValueAction\", this._property, 100 * (1000.0 / this.duration), dataType, Animation.ANIMATIONLOOPMODE_CONSTANT);\r\n\r\n animation.setKeys(keys);\r\n\r\n if (this.stopOtherAnimations) {\r\n scene.stopAnimation(this._effectiveTarget);\r\n }\r\n\r\n const wrapper = () => {\r\n this.onInterpolationDoneObservable.notifyObservers(this);\r\n if (this.onInterpolationDone) {\r\n this.onInterpolationDone();\r\n }\r\n };\r\n\r\n scene.beginDirectAnimation(this._effectiveTarget, [animation], 0, 100, false, 1, wrapper);\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"InterpolateValueAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n { name: \"duration\", value: Action._SerializeValueAsString(this.duration) },\r\n { name: \"stopOtherAnimations\", value: Action._SerializeValueAsString(this.stopOtherAnimations) || false },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.InterpolateValueAction\", InterpolateValueAction);\r\n"]}
1
+ {"version":3,"file":"interpolateValueAction.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/interpolateValueAction.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action } from \"./action\";\r\nimport type { Condition } from \"./condition\";\r\n\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport { Vector3, Matrix, Quaternion } from \"../Maths/math.vector\";\r\nimport { Animation } from \"../Animations/animation\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\n/**\r\n * This defines an action responsible to change the value of a property\r\n * by interpolating between its current value and the newly set one once triggered.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class InterpolateValueAction extends Action {\r\n /**\r\n * Defines the path of the property where the value should be interpolated\r\n */\r\n public propertyPath: string;\r\n\r\n /**\r\n * Defines the target value at the end of the interpolation.\r\n */\r\n public value: any;\r\n\r\n /**\r\n * Defines the time it will take for the property to interpolate to the value.\r\n */\r\n public duration: number = 1000;\r\n\r\n /**\r\n * Defines if the other scene animations should be stopped when the action has been triggered\r\n */\r\n public stopOtherAnimations?: boolean;\r\n\r\n /**\r\n * Defines a callback raised once the interpolation animation has been done.\r\n */\r\n public onInterpolationDone?: () => void;\r\n\r\n /**\r\n * Observable triggered once the interpolation animation has been done.\r\n */\r\n public onInterpolationDoneObservable = new Observable<InterpolateValueAction>();\r\n\r\n private _target: any;\r\n private _effectiveTarget: any;\r\n private _property: string;\r\n\r\n /**\r\n * Instantiate the action\r\n * @param triggerOptions defines the trigger options\r\n * @param target defines the object containing the value to interpolate\r\n * @param propertyPath defines the path to the property in the target object\r\n * @param value defines the target value at the end of the interpolation\r\n * @param duration defines the time it will take for the property to interpolate to the value.\r\n * @param condition defines the trigger related conditions\r\n * @param stopOtherAnimations defines if the other scene animations should be stopped when the action has been triggered\r\n * @param onInterpolationDone defines a callback raised once the interpolation animation has been done\r\n */\r\n constructor(\r\n triggerOptions: any,\r\n target: any,\r\n propertyPath: string,\r\n value: any,\r\n duration: number = 1000,\r\n condition?: Condition,\r\n stopOtherAnimations?: boolean,\r\n onInterpolationDone?: () => void\r\n ) {\r\n super(triggerOptions, condition);\r\n\r\n this.propertyPath = propertyPath;\r\n this.value = value;\r\n this.duration = duration;\r\n this.stopOtherAnimations = stopOtherAnimations;\r\n this.onInterpolationDone = onInterpolationDone;\r\n this._target = this._effectiveTarget = target;\r\n }\r\n\r\n /** @internal */\r\n public override _prepare(): void {\r\n this._effectiveTarget = this._getEffectiveTarget(this._effectiveTarget, this.propertyPath);\r\n this._property = this._getProperty(this.propertyPath);\r\n }\r\n\r\n /**\r\n * Execute the action starts the value interpolation.\r\n */\r\n public override execute(): void {\r\n const scene = this._actionManager.getScene();\r\n const keys = [\r\n {\r\n frame: 0,\r\n value: this._effectiveTarget[this._property],\r\n },\r\n {\r\n frame: 100,\r\n value: this.value,\r\n },\r\n ];\r\n\r\n let dataType: number;\r\n\r\n if (typeof this.value === \"number\") {\r\n dataType = Animation.ANIMATIONTYPE_FLOAT;\r\n } else if (this.value instanceof Color3) {\r\n dataType = Animation.ANIMATIONTYPE_COLOR3;\r\n } else if (this.value instanceof Vector3) {\r\n dataType = Animation.ANIMATIONTYPE_VECTOR3;\r\n } else if (this.value instanceof Matrix) {\r\n dataType = Animation.ANIMATIONTYPE_MATRIX;\r\n } else if (this.value instanceof Quaternion) {\r\n dataType = Animation.ANIMATIONTYPE_QUATERNION;\r\n } else {\r\n Logger.Warn(\"InterpolateValueAction: Unsupported type (\" + typeof this.value + \")\");\r\n return;\r\n }\r\n\r\n const animation = new Animation(\"InterpolateValueAction\", this._property, 100 * (1000.0 / this.duration), dataType, Animation.ANIMATIONLOOPMODE_CONSTANT);\r\n\r\n animation.setKeys(keys);\r\n\r\n if (this.stopOtherAnimations) {\r\n scene.stopAnimation(this._effectiveTarget);\r\n }\r\n\r\n const wrapper = () => {\r\n this.onInterpolationDoneObservable.notifyObservers(this);\r\n if (this.onInterpolationDone) {\r\n this.onInterpolationDone();\r\n }\r\n };\r\n\r\n scene.beginDirectAnimation(this._effectiveTarget, [animation], 0, 100, false, 1, wrapper);\r\n }\r\n\r\n /**\r\n * Serializes the actions and its related information.\r\n * @param parent defines the object to serialize in\r\n * @returns the serialized object\r\n */\r\n public override serialize(parent: any): any {\r\n return super._serialize(\r\n {\r\n name: \"InterpolateValueAction\",\r\n properties: [\r\n Action._GetTargetProperty(this._target),\r\n { name: \"propertyPath\", value: this.propertyPath },\r\n { name: \"value\", value: Action._SerializeValueAsString(this.value) },\r\n { name: \"duration\", value: Action._SerializeValueAsString(this.duration) },\r\n { name: \"stopOtherAnimations\", value: Action._SerializeValueAsString(this.stopOtherAnimations) || false },\r\n ],\r\n },\r\n parent\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.InterpolateValueAction\", InterpolateValueAction);\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"easing.js","sourceRoot":"","sources":["../../../../dev/core/src/Animations/easing.ts"],"names":[],"mappings":"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","sourcesContent":["import { BezierCurve } from \"../Maths/math.path\";\r\n\r\n/**\r\n * This represents the main contract an easing function should follow.\r\n * Easing functions are used throughout the animation system.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport interface IEasingFunction {\r\n /**\r\n * Given an input gradient between 0 and 1, this returns the corresponding value\r\n * of the easing function.\r\n * The link below provides some of the most common examples of easing functions.\r\n * @see https://easings.net/\r\n * @param gradient Defines the value between 0 and 1 we want the easing value for\r\n * @returns the corresponding value on the curve defined by the easing function\r\n */\r\n ease(gradient: number): number;\r\n}\r\n\r\n/**\r\n * Base class used for every default easing function.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class EasingFunction implements IEasingFunction {\r\n /**\r\n * Interpolation follows the mathematical formula associated with the easing function.\r\n */\r\n public static readonly EASINGMODE_EASEIN = 0;\r\n\r\n /**\r\n * Interpolation follows 100% interpolation minus the output of the formula associated with the easing function.\r\n */\r\n public static readonly EASINGMODE_EASEOUT = 1;\r\n\r\n /**\r\n * Interpolation uses EaseIn for the first half of the animation and EaseOut for the second half.\r\n */\r\n public static readonly EASINGMODE_EASEINOUT = 2;\r\n\r\n private _easingMode = EasingFunction.EASINGMODE_EASEIN;\r\n\r\n /**\r\n * Sets the easing mode of the current function.\r\n * @param easingMode Defines the willing mode (EASINGMODE_EASEIN, EASINGMODE_EASEOUT or EASINGMODE_EASEINOUT)\r\n */\r\n public setEasingMode(easingMode: number) {\r\n const n = Math.min(Math.max(easingMode, 0), 2);\r\n this._easingMode = n;\r\n }\r\n /**\r\n * Gets the current easing mode.\r\n * @returns the easing mode\r\n */\r\n public getEasingMode(): number {\r\n return this._easingMode;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public easeInCore(gradient: number): number {\r\n throw new Error(\"You must implement this method\");\r\n }\r\n\r\n /**\r\n * Given an input gradient between 0 and 1, this returns the corresponding value\r\n * of the easing function.\r\n * @param gradient Defines the value between 0 and 1 we want the easing value for\r\n * @returns the corresponding value on the curve defined by the easing function\r\n */\r\n public ease(gradient: number): number {\r\n switch (this._easingMode) {\r\n case EasingFunction.EASINGMODE_EASEIN:\r\n return this.easeInCore(gradient);\r\n case EasingFunction.EASINGMODE_EASEOUT:\r\n return 1 - this.easeInCore(1 - gradient);\r\n }\r\n\r\n if (gradient >= 0.5) {\r\n return (1 - this.easeInCore((1 - gradient) * 2)) * 0.5 + 0.5;\r\n }\r\n\r\n return this.easeInCore(gradient * 2) * 0.5;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a circle shape (see link below).\r\n * @see https://easings.net/#easeInCirc\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class CircleEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n gradient = Math.max(0, Math.min(1, gradient));\r\n return 1.0 - Math.sqrt(1.0 - gradient * gradient);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a ease back shape (see link below).\r\n * @see https://easings.net/#easeInBack\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class BackEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates a back ease easing\r\n * @see https://easings.net/#easeInBack\r\n * @param amplitude Defines the amplitude of the function\r\n */\r\n constructor(\r\n /** Defines the amplitude of the function */\r\n public amplitude: number = 1\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n const num = Math.max(0, this.amplitude);\r\n return Math.pow(gradient, 3.0) - gradient * num * Math.sin(3.1415926535897931 * gradient);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a bouncing shape (see link below).\r\n * @see https://easings.net/#easeInBounce\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class BounceEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates a bounce easing\r\n * @see https://easings.net/#easeInBounce\r\n * @param bounces Defines the number of bounces\r\n * @param bounciness Defines the amplitude of the bounce\r\n */\r\n constructor(\r\n /** Defines the number of bounces */\r\n public bounces: number = 3,\r\n /** Defines the amplitude of the bounce */\r\n public bounciness: number = 2\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n const y = Math.max(0.0, this.bounces);\r\n let bounciness = this.bounciness;\r\n if (bounciness <= 1.0) {\r\n bounciness = 1.001;\r\n }\r\n const num9 = Math.pow(bounciness, y);\r\n const num5 = 1.0 - bounciness;\r\n const num4 = (1.0 - num9) / num5 + num9 * 0.5;\r\n const num15 = gradient * num4;\r\n const num65 = Math.log(-num15 * (1.0 - bounciness) + 1.0) / Math.log(bounciness);\r\n const num3 = Math.floor(num65);\r\n const num13 = num3 + 1.0;\r\n const num8 = (1.0 - Math.pow(bounciness, num3)) / (num5 * num4);\r\n const num12 = (1.0 - Math.pow(bounciness, num13)) / (num5 * num4);\r\n const num7 = (num8 + num12) * 0.5;\r\n const num6 = gradient - num7;\r\n const num2 = num7 - num8;\r\n return (-Math.pow(1.0 / bounciness, y - num3) / (num2 * num2)) * (num6 - num2) * (num6 + num2);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 3 shape (see link below).\r\n * @see https://easings.net/#easeInCubic\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class CubicEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n return gradient * gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with an elastic shape (see link below).\r\n * @see https://easings.net/#easeInElastic\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class ElasticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates an elastic easing function\r\n * @see https://easings.net/#easeInElastic\r\n * @param oscillations Defines the number of oscillations\r\n * @param springiness Defines the amplitude of the oscillations\r\n */\r\n constructor(\r\n /** Defines the number of oscillations*/\r\n public oscillations: number = 3,\r\n /** Defines the amplitude of the oscillations*/\r\n public springiness: number = 3\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n let num2;\r\n const num3 = Math.max(0.0, this.oscillations);\r\n const num = Math.max(0.0, this.springiness);\r\n\r\n if (num == 0) {\r\n num2 = gradient;\r\n } else {\r\n num2 = (Math.exp(num * gradient) - 1.0) / (Math.exp(num) - 1.0);\r\n }\r\n return num2 * Math.sin((6.2831853071795862 * num3 + 1.5707963267948966) * gradient);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with an exponential shape (see link below).\r\n * @see https://easings.net/#easeInExpo\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class ExponentialEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates an exponential easing function\r\n * @see https://easings.net/#easeInExpo\r\n * @param exponent Defines the exponent of the function\r\n */\r\n constructor(\r\n /** Defines the exponent of the function */\r\n public exponent: number = 2\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n if (this.exponent <= 0) {\r\n return gradient;\r\n }\r\n\r\n return (Math.exp(this.exponent * gradient) - 1.0) / (Math.exp(this.exponent) - 1.0);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power shape (see link below).\r\n * @see https://easings.net/#easeInQuad\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class PowerEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates an power base easing function\r\n * @see https://easings.net/#easeInQuad\r\n * @param power Defines the power of the function\r\n */\r\n constructor(\r\n /** Defines the power of the function */\r\n public power: number = 2\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n const y = Math.max(0.0, this.power);\r\n return Math.pow(gradient, y);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 2 shape (see link below).\r\n * @see https://easings.net/#easeInQuad\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class QuadraticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n return gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 4 shape (see link below).\r\n * @see https://easings.net/#easeInQuart\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class QuarticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n return gradient * gradient * gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 5 shape (see link below).\r\n * @see https://easings.net/#easeInQuint\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class QuinticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n return gradient * gradient * gradient * gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a sin shape (see link below).\r\n * @see https://easings.net/#easeInSine\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class SineEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n return 1.0 - Math.sin(1.5707963267948966 * (1.0 - gradient));\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a bezier shape (see link below).\r\n * @see http://cubic-bezier.com/#.17,.67,.83,.67\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class BezierCurveEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates a bezier function\r\n * @see http://cubic-bezier.com/#.17,.67,.83,.67\r\n * @param x1 Defines the x component of the start tangent in the bezier curve\r\n * @param y1 Defines the y component of the start tangent in the bezier curve\r\n * @param x2 Defines the x component of the end tangent in the bezier curve\r\n * @param y2 Defines the y component of the end tangent in the bezier curve\r\n */\r\n constructor(\r\n /** Defines the x component of the start tangent in the bezier curve */\r\n public x1: number = 0,\r\n /** Defines the y component of the start tangent in the bezier curve */\r\n public y1: number = 0,\r\n /** Defines the x component of the end tangent in the bezier curve */\r\n public x2: number = 1,\r\n /** Defines the y component of the end tangent in the bezier curve */\r\n public y2: number = 1\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public easeInCore(gradient: number): number {\r\n return BezierCurve.Interpolate(gradient, this.x1, this.y1, this.x2, this.y2);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"easing.js","sourceRoot":"","sources":["../../../../dev/core/src/Animations/easing.ts"],"names":[],"mappings":"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","sourcesContent":["import { BezierCurve } from \"../Maths/math.path\";\r\n\r\n/**\r\n * This represents the main contract an easing function should follow.\r\n * Easing functions are used throughout the animation system.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport interface IEasingFunction {\r\n /**\r\n * Given an input gradient between 0 and 1, this returns the corresponding value\r\n * of the easing function.\r\n * The link below provides some of the most common examples of easing functions.\r\n * @see https://easings.net/\r\n * @param gradient Defines the value between 0 and 1 we want the easing value for\r\n * @returns the corresponding value on the curve defined by the easing function\r\n */\r\n ease(gradient: number): number;\r\n}\r\n\r\n/**\r\n * Base class used for every default easing function.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class EasingFunction implements IEasingFunction {\r\n /**\r\n * Interpolation follows the mathematical formula associated with the easing function.\r\n */\r\n public static readonly EASINGMODE_EASEIN = 0;\r\n\r\n /**\r\n * Interpolation follows 100% interpolation minus the output of the formula associated with the easing function.\r\n */\r\n public static readonly EASINGMODE_EASEOUT = 1;\r\n\r\n /**\r\n * Interpolation uses EaseIn for the first half of the animation and EaseOut for the second half.\r\n */\r\n public static readonly EASINGMODE_EASEINOUT = 2;\r\n\r\n private _easingMode = EasingFunction.EASINGMODE_EASEIN;\r\n\r\n /**\r\n * Sets the easing mode of the current function.\r\n * @param easingMode Defines the willing mode (EASINGMODE_EASEIN, EASINGMODE_EASEOUT or EASINGMODE_EASEINOUT)\r\n */\r\n public setEasingMode(easingMode: number) {\r\n const n = Math.min(Math.max(easingMode, 0), 2);\r\n this._easingMode = n;\r\n }\r\n /**\r\n * Gets the current easing mode.\r\n * @returns the easing mode\r\n */\r\n public getEasingMode(): number {\r\n return this._easingMode;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public easeInCore(gradient: number): number {\r\n throw new Error(\"You must implement this method\");\r\n }\r\n\r\n /**\r\n * Given an input gradient between 0 and 1, this returns the corresponding value\r\n * of the easing function.\r\n * @param gradient Defines the value between 0 and 1 we want the easing value for\r\n * @returns the corresponding value on the curve defined by the easing function\r\n */\r\n public ease(gradient: number): number {\r\n switch (this._easingMode) {\r\n case EasingFunction.EASINGMODE_EASEIN:\r\n return this.easeInCore(gradient);\r\n case EasingFunction.EASINGMODE_EASEOUT:\r\n return 1 - this.easeInCore(1 - gradient);\r\n }\r\n\r\n if (gradient >= 0.5) {\r\n return (1 - this.easeInCore((1 - gradient) * 2)) * 0.5 + 0.5;\r\n }\r\n\r\n return this.easeInCore(gradient * 2) * 0.5;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a circle shape (see link below).\r\n * @see https://easings.net/#easeInCirc\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class CircleEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n gradient = Math.max(0, Math.min(1, gradient));\r\n return 1.0 - Math.sqrt(1.0 - gradient * gradient);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a ease back shape (see link below).\r\n * @see https://easings.net/#easeInBack\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class BackEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates a back ease easing\r\n * @see https://easings.net/#easeInBack\r\n * @param amplitude Defines the amplitude of the function\r\n */\r\n constructor(\r\n /** Defines the amplitude of the function */\r\n public amplitude: number = 1\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n const num = Math.max(0, this.amplitude);\r\n return Math.pow(gradient, 3.0) - gradient * num * Math.sin(3.1415926535897931 * gradient);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a bouncing shape (see link below).\r\n * @see https://easings.net/#easeInBounce\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class BounceEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates a bounce easing\r\n * @see https://easings.net/#easeInBounce\r\n * @param bounces Defines the number of bounces\r\n * @param bounciness Defines the amplitude of the bounce\r\n */\r\n constructor(\r\n /** Defines the number of bounces */\r\n public bounces: number = 3,\r\n /** Defines the amplitude of the bounce */\r\n public bounciness: number = 2\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n const y = Math.max(0.0, this.bounces);\r\n let bounciness = this.bounciness;\r\n if (bounciness <= 1.0) {\r\n bounciness = 1.001;\r\n }\r\n const num9 = Math.pow(bounciness, y);\r\n const num5 = 1.0 - bounciness;\r\n const num4 = (1.0 - num9) / num5 + num9 * 0.5;\r\n const num15 = gradient * num4;\r\n const num65 = Math.log(-num15 * (1.0 - bounciness) + 1.0) / Math.log(bounciness);\r\n const num3 = Math.floor(num65);\r\n const num13 = num3 + 1.0;\r\n const num8 = (1.0 - Math.pow(bounciness, num3)) / (num5 * num4);\r\n const num12 = (1.0 - Math.pow(bounciness, num13)) / (num5 * num4);\r\n const num7 = (num8 + num12) * 0.5;\r\n const num6 = gradient - num7;\r\n const num2 = num7 - num8;\r\n return (-Math.pow(1.0 / bounciness, y - num3) / (num2 * num2)) * (num6 - num2) * (num6 + num2);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 3 shape (see link below).\r\n * @see https://easings.net/#easeInCubic\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class CubicEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n return gradient * gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with an elastic shape (see link below).\r\n * @see https://easings.net/#easeInElastic\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class ElasticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates an elastic easing function\r\n * @see https://easings.net/#easeInElastic\r\n * @param oscillations Defines the number of oscillations\r\n * @param springiness Defines the amplitude of the oscillations\r\n */\r\n constructor(\r\n /** Defines the number of oscillations*/\r\n public oscillations: number = 3,\r\n /** Defines the amplitude of the oscillations*/\r\n public springiness: number = 3\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n let num2;\r\n const num3 = Math.max(0.0, this.oscillations);\r\n const num = Math.max(0.0, this.springiness);\r\n\r\n if (num == 0) {\r\n num2 = gradient;\r\n } else {\r\n num2 = (Math.exp(num * gradient) - 1.0) / (Math.exp(num) - 1.0);\r\n }\r\n return num2 * Math.sin((6.2831853071795862 * num3 + 1.5707963267948966) * gradient);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with an exponential shape (see link below).\r\n * @see https://easings.net/#easeInExpo\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class ExponentialEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates an exponential easing function\r\n * @see https://easings.net/#easeInExpo\r\n * @param exponent Defines the exponent of the function\r\n */\r\n constructor(\r\n /** Defines the exponent of the function */\r\n public exponent: number = 2\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n if (this.exponent <= 0) {\r\n return gradient;\r\n }\r\n\r\n return (Math.exp(this.exponent * gradient) - 1.0) / (Math.exp(this.exponent) - 1.0);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power shape (see link below).\r\n * @see https://easings.net/#easeInQuad\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class PowerEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates an power base easing function\r\n * @see https://easings.net/#easeInQuad\r\n * @param power Defines the power of the function\r\n */\r\n constructor(\r\n /** Defines the power of the function */\r\n public power: number = 2\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n const y = Math.max(0.0, this.power);\r\n return Math.pow(gradient, y);\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 2 shape (see link below).\r\n * @see https://easings.net/#easeInQuad\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class QuadraticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n return gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 4 shape (see link below).\r\n * @see https://easings.net/#easeInQuart\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class QuarticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n return gradient * gradient * gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a power of 5 shape (see link below).\r\n * @see https://easings.net/#easeInQuint\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class QuinticEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n return gradient * gradient * gradient * gradient * gradient;\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a sin shape (see link below).\r\n * @see https://easings.net/#easeInSine\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class SineEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n return 1.0 - Math.sin(1.5707963267948966 * (1.0 - gradient));\r\n }\r\n}\r\n\r\n/**\r\n * Easing function with a bezier shape (see link below).\r\n * @see http://cubic-bezier.com/#.17,.67,.83,.67\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#easing-functions\r\n */\r\nexport class BezierCurveEase extends EasingFunction implements IEasingFunction {\r\n /**\r\n * Instantiates a bezier function\r\n * @see http://cubic-bezier.com/#.17,.67,.83,.67\r\n * @param x1 Defines the x component of the start tangent in the bezier curve\r\n * @param y1 Defines the y component of the start tangent in the bezier curve\r\n * @param x2 Defines the x component of the end tangent in the bezier curve\r\n * @param y2 Defines the y component of the end tangent in the bezier curve\r\n */\r\n constructor(\r\n /** Defines the x component of the start tangent in the bezier curve */\r\n public x1: number = 0,\r\n /** Defines the y component of the start tangent in the bezier curve */\r\n public y1: number = 0,\r\n /** Defines the x component of the end tangent in the bezier curve */\r\n public x2: number = 1,\r\n /** Defines the y component of the end tangent in the bezier curve */\r\n public y2: number = 1\r\n ) {\r\n super();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override easeInCore(gradient: number): number {\r\n return BezierCurve.Interpolate(gradient, this.x1, this.y1, this.x2, this.y2);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sixDofDragBehavior.js","sourceRoot":"","sources":["../../../../../dev/core/src/Behaviors/Meshes/sixDofDragBehavior.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,sBAAsB;IAA9D;;QACY,yBAAoB,GAA8B,IAAI,CAAC;QAGrD,oBAAe,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,uBAAkB,GAAG,IAAI,UAAU,EAAE,CAAC;QACtC,mBAAc,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,sBAAiB,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,yBAAoB,GAAG,IAAI,UAAU,EAAE,CAAC;QACxC,qBAAgB,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElD;;WAEG;QACI,gCAA2B,GAAG,IAAI,UAAU,EAAyB,CAAC;QAE7E;;WAEG;QACI,mBAAc,GAAG,GAAG,CAAC;QAE5B;;WAEG;QACI,wBAAmB,GAAG,IAAI,CAAC;QAElC;;WAEG;QACI,sBAAiB,GAAG,KAAK,CAAC;QAEjC;;WAEG;QACI,+BAA0B,GAAG,IAAI,CAAC;QASzC;;WAEG;QACI,oBAAe,GAAY,KAAK,CAAC;QAExC;;WAEG;QACI,0BAAqB,GAAG,KAAK,CAAC;IA6MzC,CAAC;IA5NG;;OAEG;IACH,IAAW,IAAI;QACX,OAAO,YAAY,CAAC;IACxB,CAAC;IAYD;;;;OAIG;IACI,MAAM,CAAC,SAAe;QACzB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAExB,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC;QACjC,uDAAuD;QACvD,SAAS,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,CAAC,qBAAqB,GAAG,IAAI,aAAa,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACvG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QAEtE,sFAAsF;QACtF,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE;YAC/E,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACtF,4BAA4B;gBAC5B,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACxH,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACpD,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC3C,0FAA0F;gBAC1F,0BAA0B;gBAC1B,IAAI,SAAS,CAAC,MAAM,EAAE;oBAClB,MAAM,2BAA2B,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACxD,SAAS,CAAC,MAAwB,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;oBAC7G,2BAA2B,CAAC,MAAM,EAAE,CAAC;oBACrC,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,2BAA2B,EAAE,qBAAqB,CAAC,CAAC;iBAChG;gBACD,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAErD,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBAE3F,0DAA0D;gBAC1D,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAE,SAAS,CAAC,MAAwB,CAAC,OAAO,IAAI,CAAE,SAAS,CAAC,MAAwB,CAAC,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,EAAE;oBACrJ,MAAM,eAAe,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACjD,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAClD,IAAI,SAAS,CAAC,MAAM,EAAE;wBAClB,MAAM,qBAAqB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;wBACvD,qBAAqB,CAAC,QAAQ,CAAE,SAAS,CAAC,MAAwB,CAAC,0BAA0B,CAAC,CAAC;wBAC/F,qBAAqB,CAAC,aAAa,EAAE,CAAC;wBACtC,qBAAqB,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;qBACjF;oBACD,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAmB,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,kBAAmB,CAAC,CAAC;iBAC7H;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,wBAAwB,CAAC,yBAAkC,EAAE,OAAe,EAAE,QAAoB;QACtG,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACpD,MAAM,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;QACxD,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACjD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;QAE3D,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI;QACvI,MAAM,CAAC,gBAAgB,CAAC,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK;QAC9I,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI;QAC1D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5D,oBAAoB,CAAC,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS;QAC1E,WAAW,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa;QAClE,WAAW,CAAC,aAAa,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC,iBAAiB;QAE5E,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC;IACxC,CAAC;IAEO,0BAA0B,CAAC,kBAA2B,EAAE,kBAA8B;QAC1F,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACxC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,IAAI,CAAC,iBAAiB,EAAE;oBACxB,qDAAqD;oBACrD,UAAU,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9G;qBAAM;oBACH,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;iBACzD;gBACD,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAC9F;SACJ;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,oBAAoB,IAAI,IAAI,CAAC,0BAA0B,CAAC,EAAE;YACnJ,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACxF;QAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACzF,CAAC;IAEO,2BAA2B;QAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACtG,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACtG,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7C,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;QAC9D,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7C,iBAAiB,CAAC,aAAa,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;QAEnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9G,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9G,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5C,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAC3D,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5C,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAEhE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3D,MAAM,kBAAkB,GAAG,UAAU,CAAC,eAAe,CACjD,CAAC,EACD,OAAO,CAAC,6BAA6B,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,EAChH,CAAC,CACJ,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC/J,IAAI,CAAC,qBAAqB,CAAC,kBAAmB,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAmB,CAAC,CAAC;QACtH,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/G,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAES,gBAAgB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;QAE3D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;YACrC,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAC5J;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;QAE3D,IAAI,YAAY,KAAK,CAAC,EAAE;YACpB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAChE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;YAC7E,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAE9D,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;gBACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACtE,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;oBAClC,UAAU,CAAC,wBAAwB,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC7E;qBAAM;oBACH,UAAU,CAAC,wBAAwB,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;iBAC7E;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,UAAU,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC5D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACvD;aAAM,IAAI,YAAY,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAC/E,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAC7E,IAAI,CAAC,qBAAqB,CAAC,kBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;YACpG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACtC;IACL,CAAC;IAES,WAAW,CAAC,kBAA2B,EAAE,kBAA8B;QAC7E,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7C,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;SAC3E;aAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,KAAK,CAAC,EAAE;YACpD,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACtC;IACL,CAAC;IAES,cAAc;QACpB,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7C,mGAAmG;YACnG,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CAAC;YAC1D,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;SACvD;IACL,CAAC;IAED;;OAEG;IACI,MAAM;QACT,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACzF;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;SACxC;IACL,CAAC;CACJ","sourcesContent":["import type { Mesh } from \"../../Meshes/mesh\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Vector3, Quaternion, Matrix, TmpVectors } from \"../../Maths/math.vector\";\r\nimport type { Observer } from \"../../Misc/observable\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { BaseSixDofDragBehavior } from \"./baseSixDofDragBehavior\";\r\nimport { TransformNode } from \"../../Meshes/transformNode\";\r\nimport { Space } from \"../../Maths/math.axis\";\r\n\r\n/**\r\n * A behavior that when attached to a mesh will allow the mesh to be dragged around based on directions and origin of the pointer's ray\r\n */\r\nexport class SixDofDragBehavior extends BaseSixDofDragBehavior {\r\n private _sceneRenderObserver: Nullable<Observer<Scene>> = null;\r\n private _virtualTransformNode: TransformNode;\r\n\r\n protected _targetPosition = new Vector3(0, 0, 0);\r\n protected _targetOrientation = new Quaternion();\r\n protected _targetScaling = new Vector3(1, 1, 1);\r\n protected _startingPosition = new Vector3(0, 0, 0);\r\n protected _startingOrientation = new Quaternion();\r\n protected _startingScaling = new Vector3(1, 1, 1);\r\n\r\n /**\r\n * Fires when position is updated\r\n */\r\n public onPositionChangedObservable = new Observable<{ position: Vector3 }>();\r\n\r\n /**\r\n * The distance towards the target drag position to move each frame. This can be useful to avoid jitter. Set this to 1 for no delay. (Default: 0.2)\r\n */\r\n public dragDeltaRatio = 0.2;\r\n\r\n /**\r\n * If the object should rotate to face the drag origin\r\n */\r\n public rotateDraggedObject = true;\r\n\r\n /**\r\n * If `rotateDraggedObject` is set to `true`, this parameter determines if we are only rotating around the y axis (yaw)\r\n */\r\n public rotateAroundYOnly = false;\r\n\r\n /**\r\n * Should the behavior rotate 1:1 with the motion controller, when one is used.\r\n */\r\n public rotateWithMotionController = true;\r\n\r\n /**\r\n * The name of the behavior\r\n */\r\n public get name(): string {\r\n return \"SixDofDrag\";\r\n }\r\n\r\n /**\r\n * Use this flag to update the target but not move the owner node towards the target\r\n */\r\n public disableMovement: boolean = false;\r\n\r\n /**\r\n * Should the object rotate towards the camera when we start dragging it\r\n */\r\n public faceCameraOnDragStart = false;\r\n\r\n /**\r\n * Attaches the six DoF drag behavior\r\n * In XR mode the mesh and its children will have their isNearGrabbable property set to true\r\n * @param ownerNode The mesh that will be dragged around once attached\r\n */\r\n public attach(ownerNode: Mesh): void {\r\n super.attach(ownerNode);\r\n\r\n ownerNode.isNearGrabbable = true;\r\n // if it has children, make sure they are grabbable too\r\n ownerNode.getChildMeshes().forEach((m) => {\r\n m.isNearGrabbable = true;\r\n });\r\n\r\n // Node that will save the owner's transform\r\n this._virtualTransformNode = new TransformNode(\"virtual_sixDof\", BaseSixDofDragBehavior._virtualScene);\r\n this._virtualTransformNode.rotationQuaternion = Quaternion.Identity();\r\n\r\n // On every frame move towards target scaling to avoid jitter caused by vr controllers\r\n this._sceneRenderObserver = ownerNode.getScene().onBeforeRenderObservable.add(() => {\r\n if (this.currentDraggingPointerIds.length === 1 && this._moving && !this.disableMovement) {\r\n // 1 pointer only drags mesh\r\n const deltaToAdd = TmpVectors.Vector3[0];\r\n deltaToAdd.copyFrom(this._targetPosition).subtractInPlace(ownerNode.absolutePosition).scaleInPlace(this.dragDeltaRatio);\r\n const deltaToAddTransformed = TmpVectors.Vector3[1];\r\n deltaToAddTransformed.copyFrom(deltaToAdd);\r\n // If the node has a parent, transform the delta to local space, so it can be added to the\r\n // position in local space\r\n if (ownerNode.parent) {\r\n const parentRotationMatrixInverse = TmpVectors.Matrix[0];\r\n (ownerNode.parent as TransformNode).absoluteRotationQuaternion.toRotationMatrix(parentRotationMatrixInverse);\r\n parentRotationMatrixInverse.invert();\r\n Vector3.TransformNormalToRef(deltaToAdd, parentRotationMatrixInverse, deltaToAddTransformed);\r\n }\r\n ownerNode.position.addInPlace(deltaToAddTransformed);\r\n\r\n this.onPositionChangedObservable.notifyObservers({ position: ownerNode.absolutePosition });\r\n\r\n // Only rotate the mesh if it's parent has uniform scaling\r\n if (!ownerNode.parent || ((ownerNode.parent as TransformNode).scaling && !(ownerNode.parent as TransformNode).scaling.isNonUniformWithinEpsilon(0.001))) {\r\n const rotationToApply = TmpVectors.Quaternion[0];\r\n rotationToApply.copyFrom(this._targetOrientation);\r\n if (ownerNode.parent) {\r\n const parentRotationInverse = TmpVectors.Quaternion[0];\r\n parentRotationInverse.copyFrom((ownerNode.parent as TransformNode).absoluteRotationQuaternion);\r\n parentRotationInverse.invertInPlace();\r\n parentRotationInverse.multiplyToRef(this._targetOrientation, rotationToApply);\r\n }\r\n Quaternion.SlerpToRef(ownerNode.rotationQuaternion!, rotationToApply, this.dragDeltaRatio, ownerNode.rotationQuaternion!);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private _getPositionOffsetAround(transformationLocalOrigin: Vector3, scaling: number, rotation: Quaternion): Vector3 {\r\n const translationMatrix = TmpVectors.Matrix[0]; // T\r\n const translationMatrixInv = TmpVectors.Matrix[1]; // T'\r\n const rotationMatrix = TmpVectors.Matrix[2]; // R\r\n const scaleMatrix = TmpVectors.Matrix[3]; // S\r\n const finalMatrix = TmpVectors.Matrix[4]; // T' x R x S x T\r\n\r\n Matrix.TranslationToRef(transformationLocalOrigin.x, transformationLocalOrigin.y, transformationLocalOrigin.z, translationMatrix); // T\r\n Matrix.TranslationToRef(-transformationLocalOrigin.x, -transformationLocalOrigin.y, -transformationLocalOrigin.z, translationMatrixInv); // T'\r\n Matrix.FromQuaternionToRef(rotation, rotationMatrix); // R\r\n Matrix.ScalingToRef(scaling, scaling, scaling, scaleMatrix);\r\n translationMatrixInv.multiplyToRef(rotationMatrix, finalMatrix); // T' x R\r\n finalMatrix.multiplyToRef(scaleMatrix, finalMatrix); // T' x R x S\r\n finalMatrix.multiplyToRef(translationMatrix, finalMatrix); // T' x R x S x T\r\n\r\n return finalMatrix.getTranslation();\r\n }\r\n\r\n private _onePointerPositionUpdated(worldDeltaPosition: Vector3, worldDeltaRotation: Quaternion) {\r\n const pointerDelta = TmpVectors.Vector3[0];\r\n pointerDelta.setAll(0);\r\n\r\n if (this._dragging === this._dragType.DRAG) {\r\n if (this.rotateDraggedObject) {\r\n if (this.rotateAroundYOnly) {\r\n // Convert change in rotation to only y axis rotation\r\n Quaternion.RotationYawPitchRollToRef(worldDeltaRotation.toEulerAngles().y, 0, 0, TmpVectors.Quaternion[0]);\r\n } else {\r\n TmpVectors.Quaternion[0].copyFrom(worldDeltaRotation);\r\n }\r\n TmpVectors.Quaternion[0].multiplyToRef(this._startingOrientation, this._targetOrientation);\r\n }\r\n } else if (this._dragging === this._dragType.NEAR_DRAG || (this._dragging === this._dragType.DRAG_WITH_CONTROLLER && this.rotateWithMotionController)) {\r\n worldDeltaRotation.multiplyToRef(this._startingOrientation, this._targetOrientation);\r\n }\r\n\r\n this._targetPosition.copyFrom(this._startingPosition).addInPlace(worldDeltaPosition);\r\n }\r\n\r\n private _twoPointersPositionUpdated() {\r\n const startingPosition0 = this._virtualMeshesInfo[this.currentDraggingPointerIds[0]].startingPosition;\r\n const startingPosition1 = this._virtualMeshesInfo[this.currentDraggingPointerIds[1]].startingPosition;\r\n const startingCenter = TmpVectors.Vector3[0];\r\n startingPosition0.addToRef(startingPosition1, startingCenter);\r\n startingCenter.scaleInPlace(0.5);\r\n const startingVector = TmpVectors.Vector3[1];\r\n startingPosition1.subtractToRef(startingPosition0, startingVector);\r\n\r\n const currentPosition0 = this._virtualMeshesInfo[this.currentDraggingPointerIds[0]].dragMesh.absolutePosition;\r\n const currentPosition1 = this._virtualMeshesInfo[this.currentDraggingPointerIds[1]].dragMesh.absolutePosition;\r\n const currentCenter = TmpVectors.Vector3[2];\r\n currentPosition0.addToRef(currentPosition1, currentCenter);\r\n currentCenter.scaleInPlace(0.5);\r\n const currentVector = TmpVectors.Vector3[3];\r\n currentPosition1.subtractToRef(currentPosition0, currentVector);\r\n\r\n const scaling = currentVector.length() / startingVector.length();\r\n const translation = currentCenter.subtract(startingCenter);\r\n const rotationQuaternion = Quaternion.FromEulerAngles(\r\n 0,\r\n Vector3.GetAngleBetweenVectorsOnPlane(startingVector.normalize(), currentVector.normalize(), Vector3.UpReadOnly),\r\n 0\r\n );\r\n\r\n const oldParent = this._ownerNode.parent;\r\n this._ownerNode.setParent(null);\r\n\r\n const positionOffset = this._getPositionOffsetAround(startingCenter.subtract(this._virtualTransformNode.getAbsolutePivotPoint()), scaling, rotationQuaternion);\r\n this._virtualTransformNode.rotationQuaternion!.multiplyToRef(rotationQuaternion, this._ownerNode.rotationQuaternion!);\r\n this._virtualTransformNode.scaling.scaleToRef(scaling, this._ownerNode.scaling);\r\n this._virtualTransformNode.position.addToRef(translation.addInPlace(positionOffset), this._ownerNode.position);\r\n this.onPositionChangedObservable.notifyObservers({ position: this._ownerNode.position });\r\n\r\n this._ownerNode.setParent(oldParent);\r\n }\r\n\r\n protected _targetDragStart() {\r\n const pointerCount = this.currentDraggingPointerIds.length;\r\n\r\n if (!this._ownerNode.rotationQuaternion) {\r\n this._ownerNode.rotationQuaternion = Quaternion.RotationYawPitchRoll(this._ownerNode.rotation.y, this._ownerNode.rotation.x, this._ownerNode.rotation.z);\r\n }\r\n const worldPivot = this._ownerNode.getAbsolutePivotPoint();\r\n\r\n if (pointerCount === 1) {\r\n this._targetPosition.copyFrom(this._ownerNode.absolutePosition);\r\n this._targetOrientation.copyFrom(this._ownerNode.absoluteRotationQuaternion);\r\n this._targetScaling.copyFrom(this._ownerNode.absoluteScaling);\r\n\r\n if (this.faceCameraOnDragStart && this._scene.activeCamera) {\r\n const toCamera = TmpVectors.Vector3[0];\r\n this._scene.activeCamera.position.subtractToRef(worldPivot, toCamera);\r\n toCamera.normalize();\r\n const quat = TmpVectors.Quaternion[0];\r\n if (this._scene.useRightHandedSystem) {\r\n Quaternion.FromLookDirectionRHToRef(toCamera, new Vector3(0, 1, 0), quat);\r\n } else {\r\n Quaternion.FromLookDirectionLHToRef(toCamera, new Vector3(0, 1, 0), quat);\r\n }\r\n quat.normalize();\r\n Quaternion.RotationYawPitchRollToRef(quat.toEulerAngles().y, 0, 0, TmpVectors.Quaternion[0]);\r\n this._targetOrientation.copyFrom(TmpVectors.Quaternion[0]);\r\n }\r\n this._startingPosition.copyFrom(this._targetPosition);\r\n this._startingOrientation.copyFrom(this._targetOrientation);\r\n this._startingScaling.copyFrom(this._targetScaling);\r\n } else if (pointerCount === 2) {\r\n this._virtualTransformNode.setPivotPoint(new Vector3(0, 0, 0), Space.LOCAL);\r\n this._virtualTransformNode.position.copyFrom(this._ownerNode.absolutePosition);\r\n this._virtualTransformNode.scaling.copyFrom(this._ownerNode.absoluteScaling);\r\n this._virtualTransformNode.rotationQuaternion!.copyFrom(this._ownerNode.absoluteRotationQuaternion);\r\n this._virtualTransformNode.setPivotPoint(worldPivot, Space.WORLD);\r\n this._resetVirtualMeshesPosition();\r\n }\r\n }\r\n\r\n protected _targetDrag(worldDeltaPosition: Vector3, worldDeltaRotation: Quaternion) {\r\n if (this.currentDraggingPointerIds.length === 1) {\r\n this._onePointerPositionUpdated(worldDeltaPosition, worldDeltaRotation);\r\n } else if (this.currentDraggingPointerIds.length === 2) {\r\n this._twoPointersPositionUpdated();\r\n }\r\n }\r\n\r\n protected _targetDragEnd() {\r\n if (this.currentDraggingPointerIds.length === 1) {\r\n // We still have 1 active pointer, we must simulate a dragstart with a reseted position/orientation\r\n this._resetVirtualMeshesPosition();\r\n const previousFaceCameraFlag = this.faceCameraOnDragStart;\r\n this.faceCameraOnDragStart = false;\r\n this._targetDragStart();\r\n this.faceCameraOnDragStart = previousFaceCameraFlag;\r\n }\r\n }\r\n\r\n /**\r\n * Detaches the behavior from the mesh\r\n */\r\n public detach(): void {\r\n super.detach();\r\n\r\n if (this._ownerNode) {\r\n this._ownerNode.getScene().onBeforeRenderObservable.remove(this._sceneRenderObserver);\r\n }\r\n\r\n if (this._virtualTransformNode) {\r\n this._virtualTransformNode.dispose();\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"sixDofDragBehavior.js","sourceRoot":"","sources":["../../../../../dev/core/src/Behaviors/Meshes/sixDofDragBehavior.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Mesh } from \"../../Meshes/mesh\";\r\nimport type { Scene } from \"../../scene\";\r\nimport type { Nullable } from \"../../types\";\r\nimport { Vector3, Quaternion, Matrix, TmpVectors } from \"../../Maths/math.vector\";\r\nimport type { Observer } from \"../../Misc/observable\";\r\nimport { Observable } from \"../../Misc/observable\";\r\nimport { BaseSixDofDragBehavior } from \"./baseSixDofDragBehavior\";\r\nimport { TransformNode } from \"../../Meshes/transformNode\";\r\nimport { Space } from \"../../Maths/math.axis\";\r\n\r\n/**\r\n * A behavior that when attached to a mesh will allow the mesh to be dragged around based on directions and origin of the pointer's ray\r\n */\r\nexport class SixDofDragBehavior extends BaseSixDofDragBehavior {\r\n private _sceneRenderObserver: Nullable<Observer<Scene>> = null;\r\n private _virtualTransformNode: TransformNode;\r\n\r\n protected _targetPosition = new Vector3(0, 0, 0);\r\n protected _targetOrientation = new Quaternion();\r\n protected _targetScaling = new Vector3(1, 1, 1);\r\n protected _startingPosition = new Vector3(0, 0, 0);\r\n protected _startingOrientation = new Quaternion();\r\n protected _startingScaling = new Vector3(1, 1, 1);\r\n\r\n /**\r\n * Fires when position is updated\r\n */\r\n public onPositionChangedObservable = new Observable<{ position: Vector3 }>();\r\n\r\n /**\r\n * The distance towards the target drag position to move each frame. This can be useful to avoid jitter. Set this to 1 for no delay. (Default: 0.2)\r\n */\r\n public dragDeltaRatio = 0.2;\r\n\r\n /**\r\n * If the object should rotate to face the drag origin\r\n */\r\n public rotateDraggedObject = true;\r\n\r\n /**\r\n * If `rotateDraggedObject` is set to `true`, this parameter determines if we are only rotating around the y axis (yaw)\r\n */\r\n public rotateAroundYOnly = false;\r\n\r\n /**\r\n * Should the behavior rotate 1:1 with the motion controller, when one is used.\r\n */\r\n public rotateWithMotionController = true;\r\n\r\n /**\r\n * The name of the behavior\r\n */\r\n public override get name(): string {\r\n return \"SixDofDrag\";\r\n }\r\n\r\n /**\r\n * Use this flag to update the target but not move the owner node towards the target\r\n */\r\n public disableMovement: boolean = false;\r\n\r\n /**\r\n * Should the object rotate towards the camera when we start dragging it\r\n */\r\n public faceCameraOnDragStart = false;\r\n\r\n /**\r\n * Attaches the six DoF drag behavior\r\n * In XR mode the mesh and its children will have their isNearGrabbable property set to true\r\n * @param ownerNode The mesh that will be dragged around once attached\r\n */\r\n public override attach(ownerNode: Mesh): void {\r\n super.attach(ownerNode);\r\n\r\n ownerNode.isNearGrabbable = true;\r\n // if it has children, make sure they are grabbable too\r\n ownerNode.getChildMeshes().forEach((m) => {\r\n m.isNearGrabbable = true;\r\n });\r\n\r\n // Node that will save the owner's transform\r\n this._virtualTransformNode = new TransformNode(\"virtual_sixDof\", BaseSixDofDragBehavior._virtualScene);\r\n this._virtualTransformNode.rotationQuaternion = Quaternion.Identity();\r\n\r\n // On every frame move towards target scaling to avoid jitter caused by vr controllers\r\n this._sceneRenderObserver = ownerNode.getScene().onBeforeRenderObservable.add(() => {\r\n if (this.currentDraggingPointerIds.length === 1 && this._moving && !this.disableMovement) {\r\n // 1 pointer only drags mesh\r\n const deltaToAdd = TmpVectors.Vector3[0];\r\n deltaToAdd.copyFrom(this._targetPosition).subtractInPlace(ownerNode.absolutePosition).scaleInPlace(this.dragDeltaRatio);\r\n const deltaToAddTransformed = TmpVectors.Vector3[1];\r\n deltaToAddTransformed.copyFrom(deltaToAdd);\r\n // If the node has a parent, transform the delta to local space, so it can be added to the\r\n // position in local space\r\n if (ownerNode.parent) {\r\n const parentRotationMatrixInverse = TmpVectors.Matrix[0];\r\n (ownerNode.parent as TransformNode).absoluteRotationQuaternion.toRotationMatrix(parentRotationMatrixInverse);\r\n parentRotationMatrixInverse.invert();\r\n Vector3.TransformNormalToRef(deltaToAdd, parentRotationMatrixInverse, deltaToAddTransformed);\r\n }\r\n ownerNode.position.addInPlace(deltaToAddTransformed);\r\n\r\n this.onPositionChangedObservable.notifyObservers({ position: ownerNode.absolutePosition });\r\n\r\n // Only rotate the mesh if it's parent has uniform scaling\r\n if (!ownerNode.parent || ((ownerNode.parent as TransformNode).scaling && !(ownerNode.parent as TransformNode).scaling.isNonUniformWithinEpsilon(0.001))) {\r\n const rotationToApply = TmpVectors.Quaternion[0];\r\n rotationToApply.copyFrom(this._targetOrientation);\r\n if (ownerNode.parent) {\r\n const parentRotationInverse = TmpVectors.Quaternion[0];\r\n parentRotationInverse.copyFrom((ownerNode.parent as TransformNode).absoluteRotationQuaternion);\r\n parentRotationInverse.invertInPlace();\r\n parentRotationInverse.multiplyToRef(this._targetOrientation, rotationToApply);\r\n }\r\n Quaternion.SlerpToRef(ownerNode.rotationQuaternion!, rotationToApply, this.dragDeltaRatio, ownerNode.rotationQuaternion!);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private _getPositionOffsetAround(transformationLocalOrigin: Vector3, scaling: number, rotation: Quaternion): Vector3 {\r\n const translationMatrix = TmpVectors.Matrix[0]; // T\r\n const translationMatrixInv = TmpVectors.Matrix[1]; // T'\r\n const rotationMatrix = TmpVectors.Matrix[2]; // R\r\n const scaleMatrix = TmpVectors.Matrix[3]; // S\r\n const finalMatrix = TmpVectors.Matrix[4]; // T' x R x S x T\r\n\r\n Matrix.TranslationToRef(transformationLocalOrigin.x, transformationLocalOrigin.y, transformationLocalOrigin.z, translationMatrix); // T\r\n Matrix.TranslationToRef(-transformationLocalOrigin.x, -transformationLocalOrigin.y, -transformationLocalOrigin.z, translationMatrixInv); // T'\r\n Matrix.FromQuaternionToRef(rotation, rotationMatrix); // R\r\n Matrix.ScalingToRef(scaling, scaling, scaling, scaleMatrix);\r\n translationMatrixInv.multiplyToRef(rotationMatrix, finalMatrix); // T' x R\r\n finalMatrix.multiplyToRef(scaleMatrix, finalMatrix); // T' x R x S\r\n finalMatrix.multiplyToRef(translationMatrix, finalMatrix); // T' x R x S x T\r\n\r\n return finalMatrix.getTranslation();\r\n }\r\n\r\n private _onePointerPositionUpdated(worldDeltaPosition: Vector3, worldDeltaRotation: Quaternion) {\r\n const pointerDelta = TmpVectors.Vector3[0];\r\n pointerDelta.setAll(0);\r\n\r\n if (this._dragging === this._dragType.DRAG) {\r\n if (this.rotateDraggedObject) {\r\n if (this.rotateAroundYOnly) {\r\n // Convert change in rotation to only y axis rotation\r\n Quaternion.RotationYawPitchRollToRef(worldDeltaRotation.toEulerAngles().y, 0, 0, TmpVectors.Quaternion[0]);\r\n } else {\r\n TmpVectors.Quaternion[0].copyFrom(worldDeltaRotation);\r\n }\r\n TmpVectors.Quaternion[0].multiplyToRef(this._startingOrientation, this._targetOrientation);\r\n }\r\n } else if (this._dragging === this._dragType.NEAR_DRAG || (this._dragging === this._dragType.DRAG_WITH_CONTROLLER && this.rotateWithMotionController)) {\r\n worldDeltaRotation.multiplyToRef(this._startingOrientation, this._targetOrientation);\r\n }\r\n\r\n this._targetPosition.copyFrom(this._startingPosition).addInPlace(worldDeltaPosition);\r\n }\r\n\r\n private _twoPointersPositionUpdated() {\r\n const startingPosition0 = this._virtualMeshesInfo[this.currentDraggingPointerIds[0]].startingPosition;\r\n const startingPosition1 = this._virtualMeshesInfo[this.currentDraggingPointerIds[1]].startingPosition;\r\n const startingCenter = TmpVectors.Vector3[0];\r\n startingPosition0.addToRef(startingPosition1, startingCenter);\r\n startingCenter.scaleInPlace(0.5);\r\n const startingVector = TmpVectors.Vector3[1];\r\n startingPosition1.subtractToRef(startingPosition0, startingVector);\r\n\r\n const currentPosition0 = this._virtualMeshesInfo[this.currentDraggingPointerIds[0]].dragMesh.absolutePosition;\r\n const currentPosition1 = this._virtualMeshesInfo[this.currentDraggingPointerIds[1]].dragMesh.absolutePosition;\r\n const currentCenter = TmpVectors.Vector3[2];\r\n currentPosition0.addToRef(currentPosition1, currentCenter);\r\n currentCenter.scaleInPlace(0.5);\r\n const currentVector = TmpVectors.Vector3[3];\r\n currentPosition1.subtractToRef(currentPosition0, currentVector);\r\n\r\n const scaling = currentVector.length() / startingVector.length();\r\n const translation = currentCenter.subtract(startingCenter);\r\n const rotationQuaternion = Quaternion.FromEulerAngles(\r\n 0,\r\n Vector3.GetAngleBetweenVectorsOnPlane(startingVector.normalize(), currentVector.normalize(), Vector3.UpReadOnly),\r\n 0\r\n );\r\n\r\n const oldParent = this._ownerNode.parent;\r\n this._ownerNode.setParent(null);\r\n\r\n const positionOffset = this._getPositionOffsetAround(startingCenter.subtract(this._virtualTransformNode.getAbsolutePivotPoint()), scaling, rotationQuaternion);\r\n this._virtualTransformNode.rotationQuaternion!.multiplyToRef(rotationQuaternion, this._ownerNode.rotationQuaternion!);\r\n this._virtualTransformNode.scaling.scaleToRef(scaling, this._ownerNode.scaling);\r\n this._virtualTransformNode.position.addToRef(translation.addInPlace(positionOffset), this._ownerNode.position);\r\n this.onPositionChangedObservable.notifyObservers({ position: this._ownerNode.position });\r\n\r\n this._ownerNode.setParent(oldParent);\r\n }\r\n\r\n protected override _targetDragStart() {\r\n const pointerCount = this.currentDraggingPointerIds.length;\r\n\r\n if (!this._ownerNode.rotationQuaternion) {\r\n this._ownerNode.rotationQuaternion = Quaternion.RotationYawPitchRoll(this._ownerNode.rotation.y, this._ownerNode.rotation.x, this._ownerNode.rotation.z);\r\n }\r\n const worldPivot = this._ownerNode.getAbsolutePivotPoint();\r\n\r\n if (pointerCount === 1) {\r\n this._targetPosition.copyFrom(this._ownerNode.absolutePosition);\r\n this._targetOrientation.copyFrom(this._ownerNode.absoluteRotationQuaternion);\r\n this._targetScaling.copyFrom(this._ownerNode.absoluteScaling);\r\n\r\n if (this.faceCameraOnDragStart && this._scene.activeCamera) {\r\n const toCamera = TmpVectors.Vector3[0];\r\n this._scene.activeCamera.position.subtractToRef(worldPivot, toCamera);\r\n toCamera.normalize();\r\n const quat = TmpVectors.Quaternion[0];\r\n if (this._scene.useRightHandedSystem) {\r\n Quaternion.FromLookDirectionRHToRef(toCamera, new Vector3(0, 1, 0), quat);\r\n } else {\r\n Quaternion.FromLookDirectionLHToRef(toCamera, new Vector3(0, 1, 0), quat);\r\n }\r\n quat.normalize();\r\n Quaternion.RotationYawPitchRollToRef(quat.toEulerAngles().y, 0, 0, TmpVectors.Quaternion[0]);\r\n this._targetOrientation.copyFrom(TmpVectors.Quaternion[0]);\r\n }\r\n this._startingPosition.copyFrom(this._targetPosition);\r\n this._startingOrientation.copyFrom(this._targetOrientation);\r\n this._startingScaling.copyFrom(this._targetScaling);\r\n } else if (pointerCount === 2) {\r\n this._virtualTransformNode.setPivotPoint(new Vector3(0, 0, 0), Space.LOCAL);\r\n this._virtualTransformNode.position.copyFrom(this._ownerNode.absolutePosition);\r\n this._virtualTransformNode.scaling.copyFrom(this._ownerNode.absoluteScaling);\r\n this._virtualTransformNode.rotationQuaternion!.copyFrom(this._ownerNode.absoluteRotationQuaternion);\r\n this._virtualTransformNode.setPivotPoint(worldPivot, Space.WORLD);\r\n this._resetVirtualMeshesPosition();\r\n }\r\n }\r\n\r\n protected override _targetDrag(worldDeltaPosition: Vector3, worldDeltaRotation: Quaternion) {\r\n if (this.currentDraggingPointerIds.length === 1) {\r\n this._onePointerPositionUpdated(worldDeltaPosition, worldDeltaRotation);\r\n } else if (this.currentDraggingPointerIds.length === 2) {\r\n this._twoPointersPositionUpdated();\r\n }\r\n }\r\n\r\n protected override _targetDragEnd() {\r\n if (this.currentDraggingPointerIds.length === 1) {\r\n // We still have 1 active pointer, we must simulate a dragstart with a reseted position/orientation\r\n this._resetVirtualMeshesPosition();\r\n const previousFaceCameraFlag = this.faceCameraOnDragStart;\r\n this.faceCameraOnDragStart = false;\r\n this._targetDragStart();\r\n this.faceCameraOnDragStart = previousFaceCameraFlag;\r\n }\r\n }\r\n\r\n /**\r\n * Detaches the behavior from the mesh\r\n */\r\n public override detach(): void {\r\n super.detach();\r\n\r\n if (this._ownerNode) {\r\n this._ownerNode.getScene().onBeforeRenderObservable.remove(this._sceneRenderObserver);\r\n }\r\n\r\n if (this._virtualTransformNode) {\r\n this._virtualTransformNode.dispose();\r\n }\r\n }\r\n}\r\n"]}