@onerjs/core 8.30.4 → 8.30.6

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 (288) hide show
  1. package/Actions/action.d.ts +5 -0
  2. package/Actions/action.js.map +1 -1
  3. package/Actions/actionManager.js +6 -2
  4. package/Actions/actionManager.js.map +1 -1
  5. package/Animations/runtimeAnimation.d.ts +0 -2
  6. package/Animations/runtimeAnimation.js +3 -5
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.d.ts +9 -5
  9. package/Audio/audioSceneComponent.js +1 -0
  10. package/Audio/audioSceneComponent.js.map +1 -1
  11. package/AudioV2/abstractAudio/abstractSound.js +1 -0
  12. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  13. package/AudioV2/abstractAudio/audioEngineV2.d.ts +10 -0
  14. package/AudioV2/abstractAudio/audioEngineV2.js +29 -0
  15. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  16. package/AudioV2/webAudio/webAudioEngine.d.ts +5 -0
  17. package/AudioV2/webAudio/webAudioEngine.js +8 -0
  18. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  19. package/AudioV2/webAudio/webAudioStaticSound.js +10 -5
  20. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  21. package/AudioV2/webAudio/webAudioStreamingSound.js +5 -2
  22. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  23. package/Cameras/camera.d.ts +4 -0
  24. package/Cameras/camera.js +18 -9
  25. package/Cameras/camera.js.map +1 -1
  26. package/Collisions/gpuPicker.js +0 -1
  27. package/Collisions/gpuPicker.js.map +1 -1
  28. package/Decorators/nodeDecorator.d.ts +3 -1
  29. package/Decorators/nodeDecorator.js +2 -0
  30. package/Decorators/nodeDecorator.js.map +1 -1
  31. package/Engines/Native/nativeInterfaces.d.ts +1 -1
  32. package/Engines/Native/nativeInterfaces.js.map +1 -1
  33. package/Engines/WebGPU/webgpuDrawContext.d.ts +8 -0
  34. package/Engines/WebGPU/webgpuDrawContext.js +8 -0
  35. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  36. package/Engines/abstractEngine.js +2 -2
  37. package/Engines/abstractEngine.js.map +1 -1
  38. package/Engines/nativeEngine.js +12 -13
  39. package/Engines/nativeEngine.js.map +1 -1
  40. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.d.ts +2 -2
  41. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js +2 -2
  42. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js.map +1 -1
  43. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +1 -1
  44. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  45. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.d.ts +44 -0
  46. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +152 -0
  47. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -0
  48. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +2 -2
  49. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +2 -2
  50. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
  51. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +1 -1
  52. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
  53. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +2 -2
  54. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +2 -2
  55. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
  56. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.d.ts +2 -2
  57. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js +3 -3
  58. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js.map +1 -1
  59. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +2 -2
  60. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +2 -2
  61. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
  62. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.d.ts +2 -2
  63. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js +2 -2
  64. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js.map +1 -1
  65. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.d.ts +2 -2
  66. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js +2 -2
  67. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js.map +1 -1
  68. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +2 -2
  69. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +2 -2
  70. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
  71. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.d.ts +2 -2
  72. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js +2 -2
  73. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js.map +1 -1
  74. package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.d.ts +2 -2
  75. package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js +2 -2
  76. package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js.map +1 -1
  77. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.d.ts +2 -2
  78. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js +2 -2
  79. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js.map +1 -1
  80. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.d.ts +2 -2
  81. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js +3 -3
  82. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js.map +1 -1
  83. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.d.ts +2 -2
  84. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js +2 -2
  85. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js.map +1 -1
  86. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.d.ts +3 -3
  87. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js +3 -3
  88. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js.map +1 -1
  89. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.d.ts +2 -2
  90. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js +2 -2
  91. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js.map +1 -1
  92. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.d.ts +2 -2
  93. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js +4 -4
  94. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js.map +1 -1
  95. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.d.ts +2 -2
  96. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js +2 -2
  97. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js.map +1 -1
  98. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.d.ts +2 -2
  99. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js +2 -2
  100. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js.map +1 -1
  101. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +17 -1
  102. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +70 -0
  103. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
  104. package/FrameGraph/Node/Blocks/computeShaderBlock.d.ts +42 -0
  105. package/FrameGraph/Node/Blocks/computeShaderBlock.js +74 -0
  106. package/FrameGraph/Node/Blocks/computeShaderBlock.js.map +1 -0
  107. package/FrameGraph/Node/Blocks/executeBlock.d.ts +11 -1
  108. package/FrameGraph/Node/Blocks/executeBlock.js +18 -0
  109. package/FrameGraph/Node/Blocks/executeBlock.js.map +1 -1
  110. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  111. package/FrameGraph/Node/Blocks/index.js +1 -0
  112. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  113. package/FrameGraph/Node/Blocks/inputBlock.js +2 -0
  114. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
  115. package/FrameGraph/Node/Blocks/outputBlock.js +1 -0
  116. package/FrameGraph/Node/Blocks/outputBlock.js.map +1 -1
  117. package/FrameGraph/Node/nodeRenderGraph.d.ts +1 -1
  118. package/FrameGraph/Node/nodeRenderGraph.js +7 -3
  119. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  120. package/FrameGraph/Node/nodeRenderGraphBlock.js +7 -0
  121. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  122. package/FrameGraph/Passes/pass.d.ts +11 -1
  123. package/FrameGraph/Passes/pass.js +11 -1
  124. package/FrameGraph/Passes/pass.js.map +1 -1
  125. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +115 -0
  126. package/FrameGraph/Tasks/Misc/computeShaderTask.js +174 -0
  127. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -0
  128. package/FrameGraph/Tasks/Misc/executeTask.d.ts +5 -0
  129. package/FrameGraph/Tasks/Misc/executeTask.js +3 -0
  130. package/FrameGraph/Tasks/Misc/executeTask.js.map +1 -1
  131. package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +1 -1
  132. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +1 -1
  133. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  134. package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +7 -1
  135. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +8 -2
  136. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  137. package/FrameGraph/Tasks/PostProcesses/ssao2Task.d.ts +1 -0
  138. package/FrameGraph/Tasks/PostProcesses/ssao2Task.js +7 -0
  139. package/FrameGraph/Tasks/PostProcesses/ssao2Task.js.map +1 -1
  140. package/FrameGraph/Tasks/PostProcesses/taaTask.d.ts +1 -1
  141. package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
  142. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -4
  143. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -3
  144. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  145. package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +7 -1
  146. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +4 -1
  147. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  148. package/FrameGraph/frameGraph.d.ts +1 -1
  149. package/FrameGraph/frameGraph.js +3 -6
  150. package/FrameGraph/frameGraph.js.map +1 -1
  151. package/FrameGraph/frameGraphContext.d.ts +8 -1
  152. package/FrameGraph/frameGraphContext.js +9 -0
  153. package/FrameGraph/frameGraphContext.js.map +1 -1
  154. package/FrameGraph/frameGraphRenderContext.d.ts +4 -2
  155. package/FrameGraph/frameGraphRenderContext.js +11 -5
  156. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  157. package/FrameGraph/frameGraphTask.d.ts +11 -2
  158. package/FrameGraph/frameGraphTask.js +17 -2
  159. package/FrameGraph/frameGraphTask.js.map +1 -1
  160. package/FrameGraph/frameGraphTextureManager.js +2 -2
  161. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  162. package/FrameGraph/index.d.ts +1 -0
  163. package/FrameGraph/index.js +1 -0
  164. package/FrameGraph/index.js.map +1 -1
  165. package/Lights/directionalLight.js +1 -4
  166. package/Lights/directionalLight.js.map +1 -1
  167. package/Lights/pointLight.js +2 -5
  168. package/Lights/pointLight.js.map +1 -1
  169. package/Materials/Textures/mirrorTexture.js +4 -1
  170. package/Materials/Textures/mirrorTexture.js.map +1 -1
  171. package/Materials/clipPlaneMaterialHelper.js +11 -1
  172. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  173. package/Materials/floatingOriginMatrixOverrides.d.ts +4 -1
  174. package/Materials/floatingOriginMatrixOverrides.js +14 -2
  175. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  176. package/Materials/index.d.ts +1 -0
  177. package/Materials/index.js +1 -0
  178. package/Materials/index.js.map +1 -1
  179. package/Materials/materialHelper.functions.d.ts +8 -0
  180. package/Materials/materialHelper.functions.js +31 -0
  181. package/Materials/materialHelper.functions.js.map +1 -1
  182. package/Materials/shaderMaterial.js +21 -1
  183. package/Materials/shaderMaterial.js.map +1 -1
  184. package/Maths/math.vector.functions.d.ts +55 -16
  185. package/Maths/math.vector.functions.js +68 -10
  186. package/Maths/math.vector.functions.js.map +1 -1
  187. package/Misc/copyTextureToTexture.d.ts +10 -0
  188. package/Misc/copyTextureToTexture.js +15 -0
  189. package/Misc/copyTextureToTexture.js.map +1 -1
  190. package/Misc/decorators.d.ts +1 -1
  191. package/Misc/decorators.js.map +1 -1
  192. package/Misc/dumpTools.d.ts +20 -0
  193. package/Misc/dumpTools.js +60 -49
  194. package/Misc/dumpTools.js.map +1 -1
  195. package/Misc/index.d.ts +1 -2
  196. package/Misc/index.js +1 -2
  197. package/Misc/index.js.map +1 -1
  198. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +7 -7
  199. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
  200. package/Particles/Node/Blocks/Emitters/coneShapeBlock.d.ts +57 -0
  201. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +163 -0
  202. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -0
  203. package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +4 -0
  204. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +18 -2
  205. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
  206. package/Particles/Node/Blocks/Emitters/customShapeBlock.js +7 -7
  207. package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
  208. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +8 -8
  209. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
  210. package/Particles/Node/Blocks/Emitters/index.d.ts +5 -4
  211. package/Particles/Node/Blocks/Emitters/index.js +5 -4
  212. package/Particles/Node/Blocks/Emitters/index.js.map +1 -1
  213. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +9 -9
  214. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
  215. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +6 -6
  216. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
  217. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +7 -7
  218. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
  219. package/Particles/Node/Blocks/particleInputBlock.js +2 -0
  220. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
  221. package/Particles/Node/Blocks/systemBlock.d.ts +33 -1
  222. package/Particles/Node/Blocks/systemBlock.js +82 -3
  223. package/Particles/Node/Blocks/systemBlock.js.map +1 -1
  224. package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +5 -1
  225. package/Particles/Node/Enums/nodeParticleContextualSources.js +4 -0
  226. package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
  227. package/Particles/Node/nodeParticleBuildState.d.ts +2 -7
  228. package/Particles/Node/nodeParticleBuildState.js +12 -22
  229. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  230. package/Particles/Node/nodeParticleSystemSet.helper.d.ts +4 -3
  231. package/Particles/Node/nodeParticleSystemSet.helper.js +344 -112
  232. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  233. package/Particles/thinParticleSystem.js +1 -0
  234. package/Particles/thinParticleSystem.js.map +1 -1
  235. package/Physics/physicsRaycastResult.d.ts +3 -0
  236. package/Physics/physicsRaycastResult.js.map +1 -1
  237. package/Physics/v2/IPhysicsEnginePlugin.d.ts +1 -1
  238. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  239. package/Physics/v2/Plugins/havokPlugin.d.ts +27 -4
  240. package/Physics/v2/Plugins/havokPlugin.js +73 -9
  241. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  242. package/Physics/v2/physicsEngine.d.ts +12 -2
  243. package/Physics/v2/physicsEngine.js +15 -1
  244. package/Physics/v2/physicsEngine.js.map +1 -1
  245. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +1 -0
  246. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +9 -1
  247. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  248. package/PostProcesses/thinSSAO2PostProcess.d.ts +1 -0
  249. package/PostProcesses/thinSSAO2PostProcess.js +18 -6
  250. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  251. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +4 -0
  252. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  253. package/Shaders/ShadersInclude/openpbrDirectLighting.js +5 -2
  254. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  255. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +1 -1
  256. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  257. package/Shaders/particles.vertex.js +1 -1
  258. package/Shaders/particles.vertex.js.map +1 -1
  259. package/Shaders/picking.fragment.js +1 -1
  260. package/Shaders/picking.fragment.js.map +1 -1
  261. package/Shaders/picking.vertex.js +1 -1
  262. package/Shaders/picking.vertex.js.map +1 -1
  263. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +2 -2
  264. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  265. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +5 -2
  266. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  267. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +2 -2
  268. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  269. package/ShadersWGSL/iblVoxelGrid.vertex.js +78 -4
  270. package/ShadersWGSL/iblVoxelGrid.vertex.js.map +1 -1
  271. package/ShadersWGSL/particles.vertex.js +1 -1
  272. package/ShadersWGSL/particles.vertex.js.map +1 -1
  273. package/ShadersWGSL/picking.fragment.js +1 -1
  274. package/ShadersWGSL/picking.fragment.js.map +1 -1
  275. package/ShadersWGSL/picking.vertex.js +1 -1
  276. package/ShadersWGSL/picking.vertex.js.map +1 -1
  277. package/Sprites/spriteRenderer.js +10 -8
  278. package/Sprites/spriteRenderer.js.map +1 -1
  279. package/XR/features/WebXRLightEstimation.d.ts +8 -0
  280. package/XR/features/WebXRLightEstimation.js +6 -1
  281. package/XR/features/WebXRLightEstimation.js.map +1 -1
  282. package/assetContainer.d.ts +1 -1
  283. package/assetContainer.js +1 -1
  284. package/assetContainer.js.map +1 -1
  285. package/package.json +1 -1
  286. package/scene.d.ts +7 -2
  287. package/scene.js +11 -8
  288. package/scene.js.map +1 -1
@@ -50,6 +50,11 @@ export interface IAction {
50
50
  * @see https://www.babylonjs-playground.com/#1T30HR#0
51
51
  */
52
52
  then(action: IAction): IAction;
53
+ /**
54
+ * Internal only - Returns if the current condition allows to run the action
55
+ * @internal
56
+ */
57
+ _evaluateConditionForCurrentFrame(): boolean;
53
58
  }
54
59
  /**
55
60
  * The action to be carried out following a trigger
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/action.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../Misc/observable\";\r\nimport { Vector2, Vector3 } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\nimport type { Condition } from \"./condition\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport type { AbstractActionManager } from \"./abstractActionManager\";\r\nimport type { Nullable } from \"../types\";\r\nimport type { Material } from \"../Materials/material\";\r\n\r\nimport type { Scene } from \"../scene\";\r\nimport type { ActionManager } from \"./actionManager\";\r\nimport type { ActionEvent } from \"./actionEvent\";\r\nimport type { Mesh } from \"../Meshes/mesh\";\r\nimport type { Light } from \"../Lights/light\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Node } from \"../node\";\r\n\r\n/**\r\n * Interface used to define Action\r\n */\r\nexport interface IAction {\r\n /**\r\n * Trigger for the action\r\n */\r\n trigger: number;\r\n\r\n /** Options of the trigger */\r\n triggerOptions: any;\r\n\r\n /**\r\n * Gets the trigger parameters\r\n * @returns the trigger parameters\r\n */\r\n getTriggerParameter(): any;\r\n\r\n /**\r\n * Internal only - executes current action event\r\n * @internal\r\n */\r\n _executeCurrent(evt?: ActionEvent): void;\r\n\r\n /**\r\n * Serialize placeholder for child classes\r\n * @param parent of child\r\n * @returns the serialized object\r\n */\r\n serialize(parent: any): any;\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n _prepare(): void;\r\n\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n _actionManager: Nullable<AbstractActionManager>;\r\n\r\n /**\r\n * Adds action to chain of actions, may be a DoNothingAction\r\n * @param action defines the next action to execute\r\n * @returns The action passed in\r\n * @see https://www.babylonjs-playground.com/#1T30HR#0\r\n */\r\n then(action: IAction): IAction;\r\n}\r\n\r\n/**\r\n * The action to be carried out following a trigger\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#available-actions\r\n */\r\nexport class Action implements IAction {\r\n /**\r\n * Trigger for the action\r\n */\r\n public trigger: number;\r\n\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _nextActiveAction: Action;\r\n private _child: Action;\r\n private _condition?: Condition;\r\n private _triggerParameter: any;\r\n\r\n /**\r\n * An event triggered prior to action being executed.\r\n */\r\n public onBeforeExecuteObservable = new Observable<Action>();\r\n\r\n /**\r\n * Creates a new Action\r\n * @param triggerOptions the trigger, with or without parameters, for the action\r\n * @param condition an optional determinant of action\r\n */\r\n constructor(\r\n /** the trigger, with or without parameters, for the action */\r\n public triggerOptions: any,\r\n condition?: Condition\r\n ) {\r\n if (triggerOptions.parameter) {\r\n this.trigger = triggerOptions.trigger;\r\n this._triggerParameter = triggerOptions.parameter;\r\n } else if (triggerOptions.trigger) {\r\n this.trigger = triggerOptions.trigger;\r\n } else {\r\n this.trigger = triggerOptions;\r\n }\r\n\r\n this._nextActiveAction = this;\r\n this._condition = condition;\r\n }\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n public _prepare(): void {}\r\n\r\n /**\r\n * Gets the trigger parameter\r\n * @returns the trigger parameter\r\n */\r\n public getTriggerParameter(): any {\r\n return this._triggerParameter;\r\n }\r\n\r\n /**\r\n * Sets the trigger parameter\r\n * @param value defines the new trigger parameter\r\n */\r\n public setTriggerParameter(value: any) {\r\n this._triggerParameter = value;\r\n }\r\n\r\n /**\r\n * Internal only - Returns if the current condition allows to run the action\r\n * @internal\r\n */\r\n public _evaluateConditionForCurrentFrame(): boolean {\r\n const condition = this._condition;\r\n if (!condition) {\r\n return true;\r\n }\r\n\r\n const currentRenderId = this._actionManager.getScene().getRenderId();\r\n\r\n // We cache the current evaluation for the current frame\r\n if (condition._evaluationId !== currentRenderId) {\r\n condition._evaluationId = currentRenderId;\r\n condition._currentResult = condition.isValid();\r\n }\r\n\r\n return condition._currentResult;\r\n }\r\n\r\n /**\r\n * Internal only - executes current action event\r\n * @internal\r\n */\r\n public _executeCurrent(evt?: ActionEvent): void {\r\n const isConditionValid = this._evaluateConditionForCurrentFrame();\r\n if (!isConditionValid) {\r\n return;\r\n }\r\n\r\n this.onBeforeExecuteObservable.notifyObservers(this);\r\n this._nextActiveAction.execute(evt);\r\n\r\n this.skipToNextActiveAction();\r\n }\r\n\r\n /**\r\n * Execute placeholder for child classes\r\n * @param evt optional action event\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public execute(evt?: ActionEvent): void {}\r\n\r\n /**\r\n * Skips to next active action\r\n */\r\n public skipToNextActiveAction(): void {\r\n if (this._nextActiveAction._child) {\r\n if (!this._nextActiveAction._child._actionManager) {\r\n this._nextActiveAction._child._actionManager = this._actionManager;\r\n }\r\n\r\n this._nextActiveAction = this._nextActiveAction._child;\r\n } else {\r\n this._nextActiveAction = this;\r\n }\r\n }\r\n\r\n /**\r\n * Adds action to chain of actions, may be a DoNothingAction\r\n * @param action defines the next action to execute\r\n * @returns The action passed in\r\n * @see https://www.babylonjs-playground.com/#1T30HR#0\r\n */\r\n public then(action: Action): Action {\r\n this._child = action;\r\n\r\n action._actionManager = this._actionManager;\r\n action._prepare();\r\n\r\n return action;\r\n }\r\n\r\n /**\r\n * Internal only\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 /**\r\n * Serialize placeholder for child classes\r\n * @param parent of child\r\n * @returns the serialized object\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public serialize(parent: any): any {\r\n return null;\r\n }\r\n\r\n /**\r\n * Internal only called by serialize\r\n * @internal\r\n */\r\n protected _serialize(serializedAction: any, parent?: any): any {\r\n const serializationObject: any = {\r\n type: 1,\r\n children: [],\r\n name: serializedAction.name,\r\n properties: serializedAction.properties || [],\r\n };\r\n\r\n // Serialize child\r\n if (this._child) {\r\n this._child.serialize(serializationObject);\r\n }\r\n\r\n // Check if \"this\" has a condition\r\n if (this._condition) {\r\n const serializedCondition = this._condition.serialize();\r\n serializedCondition.children.push(serializationObject);\r\n\r\n if (parent) {\r\n parent.children.push(serializedCondition);\r\n }\r\n return serializedCondition;\r\n }\r\n\r\n if (parent) {\r\n parent.children.push(serializationObject);\r\n }\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n public static _SerializeValueAsString = (value: any): string => {\r\n if (typeof value === \"number\") {\r\n return value.toString();\r\n }\r\n\r\n if (typeof value === \"boolean\") {\r\n return value ? \"true\" : \"false\";\r\n }\r\n\r\n if (value instanceof Vector2) {\r\n return value.x + \", \" + value.y;\r\n }\r\n if (value instanceof Vector3) {\r\n return value.x + \", \" + value.y + \", \" + value.z;\r\n }\r\n\r\n if (value instanceof Color3) {\r\n return value.r + \", \" + value.g + \", \" + value.b;\r\n }\r\n if (value instanceof Color4) {\r\n return value.r + \", \" + value.g + \", \" + value.b + \", \" + value.a;\r\n }\r\n\r\n return value as string; // string\r\n };\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n public static _GetTargetProperty = (target: Scene | Node | Material) => {\r\n return {\r\n name: \"target\",\r\n targetType: (<Mesh>target)._isMesh\r\n ? \"MeshProperties\"\r\n : (<Light>target)._isLight\r\n ? \"LightProperties\"\r\n : (<Camera>target)._isCamera\r\n ? \"CameraProperties\"\r\n : (<Material>target)._isMaterial\r\n ? \"MaterialProperties\"\r\n : \"SceneProperties\",\r\n value: (<Scene>target)._isScene ? \"Scene\" : (<Node>target).name,\r\n };\r\n };\r\n}\r\n\r\nRegisterClass(\"BABYLON.Action\", Action);\r\n"]}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/action.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../Misc/observable\";\r\nimport { Vector2, Vector3 } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\nimport type { Condition } from \"./condition\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport type { AbstractActionManager } from \"./abstractActionManager\";\r\nimport type { Nullable } from \"../types\";\r\nimport type { Material } from \"../Materials/material\";\r\n\r\nimport type { Scene } from \"../scene\";\r\nimport type { ActionManager } from \"./actionManager\";\r\nimport type { ActionEvent } from \"./actionEvent\";\r\nimport type { Mesh } from \"../Meshes/mesh\";\r\nimport type { Light } from \"../Lights/light\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Node } from \"../node\";\r\n\r\n/**\r\n * Interface used to define Action\r\n */\r\nexport interface IAction {\r\n /**\r\n * Trigger for the action\r\n */\r\n trigger: number;\r\n\r\n /** Options of the trigger */\r\n triggerOptions: any;\r\n\r\n /**\r\n * Gets the trigger parameters\r\n * @returns the trigger parameters\r\n */\r\n getTriggerParameter(): any;\r\n\r\n /**\r\n * Internal only - executes current action event\r\n * @internal\r\n */\r\n _executeCurrent(evt?: ActionEvent): void;\r\n\r\n /**\r\n * Serialize placeholder for child classes\r\n * @param parent of child\r\n * @returns the serialized object\r\n */\r\n serialize(parent: any): any;\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n _prepare(): void;\r\n\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n _actionManager: Nullable<AbstractActionManager>;\r\n\r\n /**\r\n * Adds action to chain of actions, may be a DoNothingAction\r\n * @param action defines the next action to execute\r\n * @returns The action passed in\r\n * @see https://www.babylonjs-playground.com/#1T30HR#0\r\n */\r\n then(action: IAction): IAction;\r\n\r\n /**\r\n * Internal only - Returns if the current condition allows to run the action\r\n * @internal\r\n */\r\n _evaluateConditionForCurrentFrame(): boolean;\r\n}\r\n\r\n/**\r\n * The action to be carried out following a trigger\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#available-actions\r\n */\r\nexport class Action implements IAction {\r\n /**\r\n * Trigger for the action\r\n */\r\n public trigger: number;\r\n\r\n /**\r\n * Internal only - manager for action\r\n * @internal\r\n */\r\n public _actionManager: ActionManager;\r\n\r\n private _nextActiveAction: Action;\r\n private _child: Action;\r\n private _condition?: Condition;\r\n private _triggerParameter: any;\r\n\r\n /**\r\n * An event triggered prior to action being executed.\r\n */\r\n public onBeforeExecuteObservable = new Observable<Action>();\r\n\r\n /**\r\n * Creates a new Action\r\n * @param triggerOptions the trigger, with or without parameters, for the action\r\n * @param condition an optional determinant of action\r\n */\r\n constructor(\r\n /** the trigger, with or without parameters, for the action */\r\n public triggerOptions: any,\r\n condition?: Condition\r\n ) {\r\n if (triggerOptions.parameter) {\r\n this.trigger = triggerOptions.trigger;\r\n this._triggerParameter = triggerOptions.parameter;\r\n } else if (triggerOptions.trigger) {\r\n this.trigger = triggerOptions.trigger;\r\n } else {\r\n this.trigger = triggerOptions;\r\n }\r\n\r\n this._nextActiveAction = this;\r\n this._condition = condition;\r\n }\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n public _prepare(): void {}\r\n\r\n /**\r\n * Gets the trigger parameter\r\n * @returns the trigger parameter\r\n */\r\n public getTriggerParameter(): any {\r\n return this._triggerParameter;\r\n }\r\n\r\n /**\r\n * Sets the trigger parameter\r\n * @param value defines the new trigger parameter\r\n */\r\n public setTriggerParameter(value: any) {\r\n this._triggerParameter = value;\r\n }\r\n\r\n /**\r\n * Internal only - Returns if the current condition allows to run the action\r\n * @internal\r\n */\r\n public _evaluateConditionForCurrentFrame(): boolean {\r\n const condition = this._condition;\r\n if (!condition) {\r\n return true;\r\n }\r\n\r\n const currentRenderId = this._actionManager.getScene().getRenderId();\r\n\r\n // We cache the current evaluation for the current frame\r\n if (condition._evaluationId !== currentRenderId) {\r\n condition._evaluationId = currentRenderId;\r\n condition._currentResult = condition.isValid();\r\n }\r\n\r\n return condition._currentResult;\r\n }\r\n\r\n /**\r\n * Internal only - executes current action event\r\n * @internal\r\n */\r\n public _executeCurrent(evt?: ActionEvent): void {\r\n const isConditionValid = this._evaluateConditionForCurrentFrame();\r\n if (!isConditionValid) {\r\n return;\r\n }\r\n\r\n this.onBeforeExecuteObservable.notifyObservers(this);\r\n this._nextActiveAction.execute(evt);\r\n\r\n this.skipToNextActiveAction();\r\n }\r\n\r\n /**\r\n * Execute placeholder for child classes\r\n * @param evt optional action event\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public execute(evt?: ActionEvent): void {}\r\n\r\n /**\r\n * Skips to next active action\r\n */\r\n public skipToNextActiveAction(): void {\r\n if (this._nextActiveAction._child) {\r\n if (!this._nextActiveAction._child._actionManager) {\r\n this._nextActiveAction._child._actionManager = this._actionManager;\r\n }\r\n\r\n this._nextActiveAction = this._nextActiveAction._child;\r\n } else {\r\n this._nextActiveAction = this;\r\n }\r\n }\r\n\r\n /**\r\n * Adds action to chain of actions, may be a DoNothingAction\r\n * @param action defines the next action to execute\r\n * @returns The action passed in\r\n * @see https://www.babylonjs-playground.com/#1T30HR#0\r\n */\r\n public then(action: Action): Action {\r\n this._child = action;\r\n\r\n action._actionManager = this._actionManager;\r\n action._prepare();\r\n\r\n return action;\r\n }\r\n\r\n /**\r\n * Internal only\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 /**\r\n * Serialize placeholder for child classes\r\n * @param parent of child\r\n * @returns the serialized object\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public serialize(parent: any): any {\r\n return null;\r\n }\r\n\r\n /**\r\n * Internal only called by serialize\r\n * @internal\r\n */\r\n protected _serialize(serializedAction: any, parent?: any): any {\r\n const serializationObject: any = {\r\n type: 1,\r\n children: [],\r\n name: serializedAction.name,\r\n properties: serializedAction.properties || [],\r\n };\r\n\r\n // Serialize child\r\n if (this._child) {\r\n this._child.serialize(serializationObject);\r\n }\r\n\r\n // Check if \"this\" has a condition\r\n if (this._condition) {\r\n const serializedCondition = this._condition.serialize();\r\n serializedCondition.children.push(serializationObject);\r\n\r\n if (parent) {\r\n parent.children.push(serializedCondition);\r\n }\r\n return serializedCondition;\r\n }\r\n\r\n if (parent) {\r\n parent.children.push(serializationObject);\r\n }\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n public static _SerializeValueAsString = (value: any): string => {\r\n if (typeof value === \"number\") {\r\n return value.toString();\r\n }\r\n\r\n if (typeof value === \"boolean\") {\r\n return value ? \"true\" : \"false\";\r\n }\r\n\r\n if (value instanceof Vector2) {\r\n return value.x + \", \" + value.y;\r\n }\r\n if (value instanceof Vector3) {\r\n return value.x + \", \" + value.y + \", \" + value.z;\r\n }\r\n\r\n if (value instanceof Color3) {\r\n return value.r + \", \" + value.g + \", \" + value.b;\r\n }\r\n if (value instanceof Color4) {\r\n return value.r + \", \" + value.g + \", \" + value.b + \", \" + value.a;\r\n }\r\n\r\n return value as string; // string\r\n };\r\n\r\n /**\r\n * Internal only\r\n * @internal\r\n */\r\n public static _GetTargetProperty = (target: Scene | Node | Material) => {\r\n return {\r\n name: \"target\",\r\n targetType: (<Mesh>target)._isMesh\r\n ? \"MeshProperties\"\r\n : (<Light>target)._isLight\r\n ? \"LightProperties\"\r\n : (<Camera>target)._isCamera\r\n ? \"CameraProperties\"\r\n : (<Material>target)._isMaterial\r\n ? \"MaterialProperties\"\r\n : \"SceneProperties\",\r\n value: (<Scene>target)._isScene ? \"Scene\" : (<Node>target).name,\r\n };\r\n };\r\n}\r\n\r\nRegisterClass(\"BABYLON.Action\", Action);\r\n"]}
@@ -116,7 +116,9 @@ export class ActionManager extends AbstractActionManager {
116
116
  for (let index = 0; index < this.actions.length; index++) {
117
117
  const action = this.actions[index];
118
118
  if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPointerOutTrigger) {
119
- return true;
119
+ if (action._evaluateConditionForCurrentFrame()) {
120
+ return true;
121
+ }
120
122
  }
121
123
  }
122
124
  return false;
@@ -128,7 +130,9 @@ export class ActionManager extends AbstractActionManager {
128
130
  for (let index = 0; index < this.actions.length; index++) {
129
131
  const action = this.actions[index];
130
132
  if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPickUpTrigger) {
131
- return true;
133
+ if (action._evaluateConditionForCurrentFrame()) {
134
+ return true;
135
+ }
132
136
  }
133
137
  }
134
138
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"actionManager.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/actionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Vector3, Vector4 } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\nimport { Condition, ValueCondition } from \"./condition\";\r\nimport type { IAction } from \"./action\";\r\nimport { Action } from \"./action\";\r\nimport { DoNothingAction } from \"./directActions\";\r\n\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport type { IActionEvent } from \"../Actions/actionEvent\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { DeepCopier } from \"../Misc/deepCopier\";\r\nimport { GetClass } from \"../Misc/typeStore\";\r\nimport { AbstractActionManager } from \"./abstractActionManager\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Action Manager manages all events to be triggered on a given mesh or the global scene.\r\n * A single scene can have many Action Managers to handle predefined actions on specific meshes.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class ActionManager extends AbstractActionManager {\r\n /**\r\n * Nothing\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly NothingTrigger = Constants.ACTION_NothingTrigger;\r\n\r\n /**\r\n * On pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickTrigger = Constants.ACTION_OnPickTrigger;\r\n\r\n /**\r\n * On left pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLeftPickTrigger = Constants.ACTION_OnLeftPickTrigger;\r\n\r\n /**\r\n * On right pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnRightPickTrigger = Constants.ACTION_OnRightPickTrigger;\r\n\r\n /**\r\n * On center pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnCenterPickTrigger = Constants.ACTION_OnCenterPickTrigger;\r\n\r\n /**\r\n * On pick down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickDownTrigger = Constants.ACTION_OnPickDownTrigger;\r\n\r\n /**\r\n * On double pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnDoublePickTrigger = Constants.ACTION_OnDoublePickTrigger;\r\n\r\n /**\r\n * On pick up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickUpTrigger = Constants.ACTION_OnPickUpTrigger;\r\n /**\r\n * On pick out.\r\n * This trigger will only be raised if you also declared a OnPickDown\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickOutTrigger = Constants.ACTION_OnPickOutTrigger;\r\n\r\n /**\r\n * On long press\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLongPressTrigger = Constants.ACTION_OnLongPressTrigger;\r\n\r\n /**\r\n * On pointer over\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOverTrigger = Constants.ACTION_OnPointerOverTrigger;\r\n\r\n /**\r\n * On pointer out\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOutTrigger = Constants.ACTION_OnPointerOutTrigger;\r\n\r\n /**\r\n * On every frame\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnEveryFrameTrigger = Constants.ACTION_OnEveryFrameTrigger;\r\n /**\r\n * On intersection enter\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionEnterTrigger = Constants.ACTION_OnIntersectionEnterTrigger;\r\n\r\n /**\r\n * On intersection exit\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionExitTrigger = Constants.ACTION_OnIntersectionExitTrigger;\r\n\r\n /**\r\n * On key down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyDownTrigger = Constants.ACTION_OnKeyDownTrigger;\r\n\r\n /**\r\n * On key up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyUpTrigger = Constants.ACTION_OnKeyUpTrigger;\r\n\r\n // Members\r\n private _scene: Scene;\r\n\r\n /**\r\n * Creates a new action manager\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(scene?: Nullable<Scene>) {\r\n super();\r\n scene = scene || EngineStore.LastCreatedScene;\r\n if (!scene) {\r\n return;\r\n }\r\n this._scene = scene;\r\n\r\n scene.actionManagers.push(this);\r\n }\r\n\r\n // Methods\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose(): void {\r\n const sceneIndex = this._scene.actionManagers.indexOf(this);\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const action = this.actions[i];\r\n ActionManager.Triggers[action.trigger]--;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n }\r\n\r\n this.actions.length = 0;\r\n\r\n if (sceneIndex > -1) {\r\n this._scene.actionManagers.splice(sceneIndex, 1);\r\n }\r\n\r\n const ownerMeshes = this._scene.meshes.filter((m) => m.actionManager === this);\r\n for (const ownerMesh of ownerMeshes) {\r\n ownerMesh.actionManager = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets hosting scene\r\n * @returns the hosting scene\r\n */\r\n public getScene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers\r\n * @param triggers defines the triggers to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers(triggers: number[]): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggers.indexOf(action.trigger) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers. This function takes two arguments for\r\n * speed.\r\n * @param triggerA defines the trigger to be tested\r\n * @param triggerB defines the trigger to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers2(triggerA: number, triggerB: number): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggerA == action.trigger || triggerB == action.trigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of a given trigger\r\n * @param trigger defines the trigger to be tested\r\n * @param parameterPredicate defines an optional predicate to filter triggers by parameter\r\n * @returns whether the trigger is handled\r\n */\r\n public hasSpecificTrigger(trigger: number, parameterPredicate?: (parameter: any) => boolean): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (parameterPredicate) {\r\n if (parameterPredicate(action.getTriggerParameter())) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pointer triggers\r\n */\r\n public get hasPointerTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPointerOutTrigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pick triggers\r\n */\r\n public get hasPickTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPickUpTrigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Registers an action to this action manager\r\n * @param action defines the action to be registered\r\n * @returns the action amended (prepared) after registration\r\n */\r\n public registerAction(action: IAction): Nullable<IAction> {\r\n if (action.trigger === ActionManager.OnEveryFrameTrigger) {\r\n if (this.getScene().actionManager !== this) {\r\n Logger.Warn(\"OnEveryFrameTrigger can only be used with scene.actionManager\");\r\n return null;\r\n }\r\n }\r\n\r\n this.actions.push(action);\r\n this.getScene()._registeredActions++;\r\n\r\n if (ActionManager.Triggers[action.trigger]) {\r\n ActionManager.Triggers[action.trigger]++;\r\n } else {\r\n ActionManager.Triggers[action.trigger] = 1;\r\n }\r\n\r\n action._actionManager = this;\r\n action._prepare();\r\n\r\n return action;\r\n }\r\n\r\n /**\r\n * Unregisters an action to this action manager\r\n * @param action defines the action to be unregistered\r\n * @returns a boolean indicating whether the action has been unregistered\r\n */\r\n public unregisterAction(action: IAction): boolean {\r\n const index = this.actions.indexOf(action);\r\n if (index !== -1) {\r\n this.actions.splice(index, 1);\r\n ActionManager.Triggers[action.trigger] -= 1;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n action._actionManager = null;\r\n this.getScene()._registeredActions--;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Process a specific trigger\r\n * @param trigger defines the trigger to process\r\n * @param evt defines the event details to be processed\r\n */\r\n public processTrigger(trigger: number, evt?: IActionEvent): void {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (evt) {\r\n if (trigger === ActionManager.OnKeyUpTrigger || trigger === ActionManager.OnKeyDownTrigger) {\r\n const parameter = action.getTriggerParameter();\r\n\r\n if (typeof parameter === \"function\") {\r\n if (!parameter(evt)) {\r\n continue;\r\n }\r\n } else if (parameter && parameter !== evt.sourceEvent.keyCode) {\r\n if (!parameter.toLowerCase) {\r\n continue;\r\n }\r\n const lowerCase = parameter.toLowerCase();\r\n\r\n if (lowerCase !== evt.sourceEvent.key) {\r\n const unicode = evt.sourceEvent.charCode ? evt.sourceEvent.charCode : evt.sourceEvent.keyCode;\r\n const actualkey = String.fromCharCode(unicode).toLowerCase();\r\n if (actualkey !== lowerCase) {\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n action._executeCurrent(evt);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n const properties = propertyPath.split(\".\");\r\n\r\n for (let index = 0; index < properties.length - 1; index++) {\r\n target = target[properties[index]];\r\n }\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n const properties = propertyPath.split(\".\");\r\n\r\n return properties[properties.length - 1];\r\n }\r\n\r\n /**\r\n * Serialize this manager to a JSON object\r\n * @param name defines the property name to store this manager\r\n * @returns a JSON representation of this manager\r\n */\r\n public serialize(name: string): any {\r\n const root = {\r\n children: [] as any[],\r\n name: name,\r\n type: 3, // Root node\r\n properties: [] as {\r\n name: string;\r\n targetType: Nullable<string>;\r\n value: string;\r\n }[], // Empty for root but required\r\n };\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const triggerObject = {\r\n type: 0, // Trigger\r\n children: [] as any[],\r\n name: ActionManager.GetTriggerName(this.actions[i].trigger),\r\n properties: [] as {\r\n name: string;\r\n targetType: Nullable<string>;\r\n value: string;\r\n }[],\r\n };\r\n\r\n const triggerOptions = this.actions[i].triggerOptions;\r\n\r\n if (triggerOptions && typeof triggerOptions !== \"number\") {\r\n if (triggerOptions.parameter instanceof Node) {\r\n triggerObject.properties.push(Action._GetTargetProperty(triggerOptions.parameter));\r\n } else if (typeof triggerOptions.parameter === \"object\") {\r\n const parameter = <any>{};\r\n DeepCopier.DeepCopy(triggerOptions.parameter, parameter, [\"mesh\"]);\r\n\r\n if (triggerOptions.parameter && triggerOptions.parameter.mesh) {\r\n parameter._meshId = triggerOptions.parameter.mesh.id;\r\n }\r\n\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: parameter });\r\n } else {\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: triggerOptions.parameter });\r\n }\r\n }\r\n\r\n // Serialize child action, recursively\r\n this.actions[i].serialize(triggerObject);\r\n\r\n // Add serialized trigger\r\n root.children.push(triggerObject);\r\n }\r\n\r\n return root;\r\n }\r\n\r\n /**\r\n * Creates a new ActionManager from a JSON data\r\n * @param parsedActions defines the JSON data to read from\r\n * @param object defines the hosting mesh\r\n * @param scene defines the hosting scene\r\n */\r\n public static Parse(parsedActions: any, object: Nullable<AbstractMesh>, scene: Scene): void {\r\n const actionManager = new ActionManager(scene);\r\n if (object === null) {\r\n scene.actionManager = actionManager;\r\n } else {\r\n object.actionManager = actionManager;\r\n }\r\n\r\n // instantiate a new object\r\n const instantiate = (name: string, params: Array<any>): any => {\r\n const internalClassType = GetClass(\"BABYLON.\" + name);\r\n return internalClassType && new internalClassType(...params);\r\n };\r\n\r\n const parseParameter = (name: string, value: string, target: any, propertyPath: Nullable<string>): any => {\r\n if (propertyPath === null) {\r\n // String, boolean or float\r\n const floatValue = parseFloat(value);\r\n\r\n if (value === \"true\" || value === \"false\") {\r\n return value === \"true\";\r\n } else {\r\n return isNaN(floatValue) ? value : floatValue;\r\n }\r\n }\r\n\r\n const effectiveTarget = propertyPath.split(\".\");\r\n const values = value.split(\",\");\r\n\r\n // Get effective Target\r\n for (let i = 0; i < effectiveTarget.length; i++) {\r\n target = target[effectiveTarget[i]];\r\n }\r\n\r\n // Return appropriate value with its type\r\n if (typeof target === \"boolean\") {\r\n return values[0] === \"true\";\r\n }\r\n\r\n if (typeof target === \"string\") {\r\n return values[0];\r\n }\r\n\r\n // Parameters with multiple values such as Vector3 etc.\r\n const split: number[] = [];\r\n for (let i = 0; i < values.length; i++) {\r\n split.push(parseFloat(values[i]));\r\n }\r\n\r\n if (target instanceof Vector3) {\r\n return Vector3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Vector4) {\r\n return Vector4.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color3) {\r\n return Color3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color4) {\r\n return Color4.FromArray(split);\r\n }\r\n\r\n return parseFloat(values[0]);\r\n };\r\n\r\n // traverse graph per trigger\r\n const traverse = (parsedAction: any, trigger: any, condition: Nullable<Condition>, action: Nullable<Action>, combineArray: Nullable<Array<Action>> = null) => {\r\n if (parsedAction.detached) {\r\n return;\r\n }\r\n\r\n const parameters: any[] = [];\r\n let target: any = null;\r\n let propertyPath: Nullable<string> = null;\r\n const combine = parsedAction.combine && parsedAction.combine.length > 0;\r\n\r\n // Parameters\r\n if (parsedAction.type === 2) {\r\n parameters.push(actionManager);\r\n } else {\r\n parameters.push(trigger);\r\n }\r\n\r\n if (combine) {\r\n const actions: Action[] = [];\r\n for (let j = 0; j < parsedAction.combine.length; j++) {\r\n traverse(parsedAction.combine[j], ActionManager.NothingTrigger, condition, action, actions);\r\n }\r\n parameters.push(actions);\r\n } else {\r\n for (let i = 0; i < parsedAction.properties.length; i++) {\r\n let value = parsedAction.properties[i].value;\r\n const name = parsedAction.properties[i].name;\r\n const targetType = parsedAction.properties[i].targetType;\r\n\r\n if (name === \"target\") {\r\n if (targetType === \"SceneProperties\") {\r\n value = target = scene;\r\n } else if (targetType === \"MaterialProperties\") {\r\n value = target = scene.getMaterialByName(value);\r\n } else {\r\n value = target = scene.getNodeByName(value);\r\n }\r\n } else if (name === \"parent\") {\r\n value = scene.getNodeByName(value);\r\n } else if (name === \"sound\") {\r\n // Can not externalize to component, so only checks for the presence off the API.\r\n if (scene.getSoundByName) {\r\n value = scene.getSoundByName(value);\r\n }\r\n } else if (name !== \"propertyPath\") {\r\n if (parsedAction.type === 2 && name === \"operator\") {\r\n value = (<any>ValueCondition)[value];\r\n } else {\r\n value = parseParameter(name, value, target, name === \"value\" ? propertyPath : null);\r\n }\r\n } else {\r\n propertyPath = value;\r\n }\r\n\r\n parameters.push(value);\r\n }\r\n }\r\n\r\n if (combineArray === null) {\r\n parameters.push(condition);\r\n } else {\r\n parameters.push(null);\r\n }\r\n\r\n // If interpolate value action\r\n if (parsedAction.name === \"InterpolateValueAction\") {\r\n const param = parameters[parameters.length - 2];\r\n parameters[parameters.length - 1] = param;\r\n parameters[parameters.length - 2] = condition;\r\n }\r\n\r\n // Action or condition(s) and not CombineAction\r\n let newAction = instantiate(parsedAction.name, parameters);\r\n\r\n if (newAction instanceof Condition && condition !== null) {\r\n const nothing = new DoNothingAction(trigger, condition);\r\n\r\n if (action) {\r\n // eslint-disable-next-line github/no-then\r\n action.then(nothing);\r\n } else {\r\n actionManager.registerAction(nothing);\r\n }\r\n\r\n action = nothing;\r\n }\r\n\r\n if (combineArray === null) {\r\n if (newAction instanceof Condition) {\r\n condition = newAction;\r\n newAction = action;\r\n } else {\r\n condition = null;\r\n if (action) {\r\n // eslint-disable-next-line github/no-then\r\n action.then(newAction);\r\n } else {\r\n actionManager.registerAction(newAction);\r\n }\r\n }\r\n } else {\r\n combineArray.push(newAction);\r\n }\r\n\r\n for (let i = 0; i < parsedAction.children.length; i++) {\r\n traverse(parsedAction.children[i], trigger, condition, newAction, null);\r\n }\r\n };\r\n\r\n // triggers\r\n for (let i = 0; i < parsedActions.children.length; i++) {\r\n let triggerParams: any;\r\n const trigger = parsedActions.children[i];\r\n\r\n if (trigger.properties.length > 0) {\r\n const param = trigger.properties[0].value;\r\n const value = trigger.properties[0].targetType === null ? param : scene.getMeshByName(param);\r\n\r\n if (value._meshId) {\r\n value.mesh = scene.getMeshById(value._meshId);\r\n }\r\n\r\n triggerParams = { trigger: (<any>ActionManager)[trigger.name], parameter: value };\r\n } else {\r\n triggerParams = (<any>ActionManager)[trigger.name];\r\n }\r\n\r\n for (let j = 0; j < trigger.children.length; j++) {\r\n if (!trigger.detached) {\r\n traverse(trigger.children[j], triggerParams, null, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get a trigger name by index\r\n * @param trigger defines the trigger index\r\n * @returns a trigger name\r\n */\r\n public static GetTriggerName(trigger: number): string {\r\n switch (trigger) {\r\n case Constants.ACTION_NothingTrigger:\r\n return \"NothingTrigger\";\r\n case Constants.ACTION_OnPickTrigger:\r\n return \"OnPickTrigger\";\r\n case Constants.ACTION_OnLeftPickTrigger:\r\n return \"OnLeftPickTrigger\";\r\n case Constants.ACTION_OnRightPickTrigger:\r\n return \"OnRightPickTrigger\";\r\n case Constants.ACTION_OnCenterPickTrigger:\r\n return \"OnCenterPickTrigger\";\r\n case Constants.ACTION_OnPickDownTrigger:\r\n return \"OnPickDownTrigger\";\r\n case Constants.ACTION_OnDoublePickTrigger:\r\n return \"OnDoublePickTrigger\"; // start;\r\n case Constants.ACTION_OnPickUpTrigger:\r\n return \"OnPickUpTrigger\";\r\n case Constants.ACTION_OnLongPressTrigger:\r\n return \"OnLongPressTrigger\";\r\n case Constants.ACTION_OnPointerOverTrigger:\r\n return \"OnPointerOverTrigger\";\r\n case Constants.ACTION_OnPointerOutTrigger:\r\n return \"OnPointerOutTrigger\";\r\n case Constants.ACTION_OnEveryFrameTrigger:\r\n return \"OnEveryFrameTrigger\";\r\n case Constants.ACTION_OnIntersectionEnterTrigger:\r\n return \"OnIntersectionEnterTrigger\";\r\n case Constants.ACTION_OnIntersectionExitTrigger:\r\n return \"OnIntersectionExitTrigger\";\r\n case Constants.ACTION_OnKeyDownTrigger:\r\n return \"OnKeyDownTrigger\";\r\n case Constants.ACTION_OnKeyUpTrigger:\r\n return \"OnKeyUpTrigger\";\r\n case Constants.ACTION_OnPickOutTrigger:\r\n return \"OnPickOutTrigger\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"actionManager.js","sourceRoot":"","sources":["../../../../dev/core/src/Actions/actionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { Scene } from \"../scene\";\r\nimport { Vector3, Vector4 } from \"../Maths/math.vector\";\r\nimport { Color3, Color4 } from \"../Maths/math.color\";\r\nimport { Condition, ValueCondition } from \"./condition\";\r\nimport type { IAction } from \"./action\";\r\nimport { Action } from \"./action\";\r\nimport { DoNothingAction } from \"./directActions\";\r\n\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport type { IActionEvent } from \"../Actions/actionEvent\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport { DeepCopier } from \"../Misc/deepCopier\";\r\nimport { GetClass } from \"../Misc/typeStore\";\r\nimport { AbstractActionManager } from \"./abstractActionManager\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\n/**\r\n * Action Manager manages all events to be triggered on a given mesh or the global scene.\r\n * A single scene can have many Action Managers to handle predefined actions on specific meshes.\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions\r\n */\r\nexport class ActionManager extends AbstractActionManager {\r\n /**\r\n * Nothing\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly NothingTrigger = Constants.ACTION_NothingTrigger;\r\n\r\n /**\r\n * On pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickTrigger = Constants.ACTION_OnPickTrigger;\r\n\r\n /**\r\n * On left pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLeftPickTrigger = Constants.ACTION_OnLeftPickTrigger;\r\n\r\n /**\r\n * On right pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnRightPickTrigger = Constants.ACTION_OnRightPickTrigger;\r\n\r\n /**\r\n * On center pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnCenterPickTrigger = Constants.ACTION_OnCenterPickTrigger;\r\n\r\n /**\r\n * On pick down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickDownTrigger = Constants.ACTION_OnPickDownTrigger;\r\n\r\n /**\r\n * On double pick\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnDoublePickTrigger = Constants.ACTION_OnDoublePickTrigger;\r\n\r\n /**\r\n * On pick up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickUpTrigger = Constants.ACTION_OnPickUpTrigger;\r\n /**\r\n * On pick out.\r\n * This trigger will only be raised if you also declared a OnPickDown\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPickOutTrigger = Constants.ACTION_OnPickOutTrigger;\r\n\r\n /**\r\n * On long press\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnLongPressTrigger = Constants.ACTION_OnLongPressTrigger;\r\n\r\n /**\r\n * On pointer over\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOverTrigger = Constants.ACTION_OnPointerOverTrigger;\r\n\r\n /**\r\n * On pointer out\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnPointerOutTrigger = Constants.ACTION_OnPointerOutTrigger;\r\n\r\n /**\r\n * On every frame\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnEveryFrameTrigger = Constants.ACTION_OnEveryFrameTrigger;\r\n /**\r\n * On intersection enter\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionEnterTrigger = Constants.ACTION_OnIntersectionEnterTrigger;\r\n\r\n /**\r\n * On intersection exit\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnIntersectionExitTrigger = Constants.ACTION_OnIntersectionExitTrigger;\r\n\r\n /**\r\n * On key down\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyDownTrigger = Constants.ACTION_OnKeyDownTrigger;\r\n\r\n /**\r\n * On key up\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/events/actions#triggers\r\n */\r\n public static readonly OnKeyUpTrigger = Constants.ACTION_OnKeyUpTrigger;\r\n\r\n // Members\r\n private _scene: Scene;\r\n\r\n /**\r\n * Creates a new action manager\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(scene?: Nullable<Scene>) {\r\n super();\r\n scene = scene || EngineStore.LastCreatedScene;\r\n if (!scene) {\r\n return;\r\n }\r\n this._scene = scene;\r\n\r\n scene.actionManagers.push(this);\r\n }\r\n\r\n // Methods\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose(): void {\r\n const sceneIndex = this._scene.actionManagers.indexOf(this);\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const action = this.actions[i];\r\n ActionManager.Triggers[action.trigger]--;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n }\r\n\r\n this.actions.length = 0;\r\n\r\n if (sceneIndex > -1) {\r\n this._scene.actionManagers.splice(sceneIndex, 1);\r\n }\r\n\r\n const ownerMeshes = this._scene.meshes.filter((m) => m.actionManager === this);\r\n for (const ownerMesh of ownerMeshes) {\r\n ownerMesh.actionManager = null;\r\n }\r\n }\r\n\r\n /**\r\n * Gets hosting scene\r\n * @returns the hosting scene\r\n */\r\n public getScene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers\r\n * @param triggers defines the triggers to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers(triggers: number[]): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggers.indexOf(action.trigger) > -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of any of the given triggers. This function takes two arguments for\r\n * speed.\r\n * @param triggerA defines the trigger to be tested\r\n * @param triggerB defines the trigger to be tested\r\n * @returns a boolean indicating whether one (or more) of the triggers is handled\r\n */\r\n public hasSpecificTriggers2(triggerA: number, triggerB: number): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (triggerA == action.trigger || triggerB == action.trigger) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager handles actions of a given trigger\r\n * @param trigger defines the trigger to be tested\r\n * @param parameterPredicate defines an optional predicate to filter triggers by parameter\r\n * @returns whether the trigger is handled\r\n */\r\n public hasSpecificTrigger(trigger: number, parameterPredicate?: (parameter: any) => boolean): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (parameterPredicate) {\r\n if (parameterPredicate(action.getTriggerParameter())) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pointer triggers\r\n */\r\n public get hasPointerTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPointerOutTrigger) {\r\n if (action._evaluateConditionForCurrentFrame()) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Does this action manager has pick triggers\r\n */\r\n public get hasPickTriggers(): boolean {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger >= ActionManager.OnPickTrigger && action.trigger <= ActionManager.OnPickUpTrigger) {\r\n if (action._evaluateConditionForCurrentFrame()) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Registers an action to this action manager\r\n * @param action defines the action to be registered\r\n * @returns the action amended (prepared) after registration\r\n */\r\n public registerAction(action: IAction): Nullable<IAction> {\r\n if (action.trigger === ActionManager.OnEveryFrameTrigger) {\r\n if (this.getScene().actionManager !== this) {\r\n Logger.Warn(\"OnEveryFrameTrigger can only be used with scene.actionManager\");\r\n return null;\r\n }\r\n }\r\n\r\n this.actions.push(action);\r\n this.getScene()._registeredActions++;\r\n\r\n if (ActionManager.Triggers[action.trigger]) {\r\n ActionManager.Triggers[action.trigger]++;\r\n } else {\r\n ActionManager.Triggers[action.trigger] = 1;\r\n }\r\n\r\n action._actionManager = this;\r\n action._prepare();\r\n\r\n return action;\r\n }\r\n\r\n /**\r\n * Unregisters an action to this action manager\r\n * @param action defines the action to be unregistered\r\n * @returns a boolean indicating whether the action has been unregistered\r\n */\r\n public unregisterAction(action: IAction): boolean {\r\n const index = this.actions.indexOf(action);\r\n if (index !== -1) {\r\n this.actions.splice(index, 1);\r\n ActionManager.Triggers[action.trigger] -= 1;\r\n if (ActionManager.Triggers[action.trigger] === 0) {\r\n delete ActionManager.Triggers[action.trigger];\r\n }\r\n action._actionManager = null;\r\n this.getScene()._registeredActions--;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Process a specific trigger\r\n * @param trigger defines the trigger to process\r\n * @param evt defines the event details to be processed\r\n */\r\n public processTrigger(trigger: number, evt?: IActionEvent): void {\r\n for (let index = 0; index < this.actions.length; index++) {\r\n const action = this.actions[index];\r\n\r\n if (action.trigger === trigger) {\r\n if (evt) {\r\n if (trigger === ActionManager.OnKeyUpTrigger || trigger === ActionManager.OnKeyDownTrigger) {\r\n const parameter = action.getTriggerParameter();\r\n\r\n if (typeof parameter === \"function\") {\r\n if (!parameter(evt)) {\r\n continue;\r\n }\r\n } else if (parameter && parameter !== evt.sourceEvent.keyCode) {\r\n if (!parameter.toLowerCase) {\r\n continue;\r\n }\r\n const lowerCase = parameter.toLowerCase();\r\n\r\n if (lowerCase !== evt.sourceEvent.key) {\r\n const unicode = evt.sourceEvent.charCode ? evt.sourceEvent.charCode : evt.sourceEvent.keyCode;\r\n const actualkey = String.fromCharCode(unicode).toLowerCase();\r\n if (actualkey !== lowerCase) {\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n action._executeCurrent(evt);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getEffectiveTarget(target: any, propertyPath: string): any {\r\n const properties = propertyPath.split(\".\");\r\n\r\n for (let index = 0; index < properties.length - 1; index++) {\r\n target = target[properties[index]];\r\n }\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _getProperty(propertyPath: string): string {\r\n const properties = propertyPath.split(\".\");\r\n\r\n return properties[properties.length - 1];\r\n }\r\n\r\n /**\r\n * Serialize this manager to a JSON object\r\n * @param name defines the property name to store this manager\r\n * @returns a JSON representation of this manager\r\n */\r\n public serialize(name: string): any {\r\n const root = {\r\n children: [] as any[],\r\n name: name,\r\n type: 3, // Root node\r\n properties: [] as {\r\n name: string;\r\n targetType: Nullable<string>;\r\n value: string;\r\n }[], // Empty for root but required\r\n };\r\n\r\n for (let i = 0; i < this.actions.length; i++) {\r\n const triggerObject = {\r\n type: 0, // Trigger\r\n children: [] as any[],\r\n name: ActionManager.GetTriggerName(this.actions[i].trigger),\r\n properties: [] as {\r\n name: string;\r\n targetType: Nullable<string>;\r\n value: string;\r\n }[],\r\n };\r\n\r\n const triggerOptions = this.actions[i].triggerOptions;\r\n\r\n if (triggerOptions && typeof triggerOptions !== \"number\") {\r\n if (triggerOptions.parameter instanceof Node) {\r\n triggerObject.properties.push(Action._GetTargetProperty(triggerOptions.parameter));\r\n } else if (typeof triggerOptions.parameter === \"object\") {\r\n const parameter = <any>{};\r\n DeepCopier.DeepCopy(triggerOptions.parameter, parameter, [\"mesh\"]);\r\n\r\n if (triggerOptions.parameter && triggerOptions.parameter.mesh) {\r\n parameter._meshId = triggerOptions.parameter.mesh.id;\r\n }\r\n\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: parameter });\r\n } else {\r\n triggerObject.properties.push({ name: \"parameter\", targetType: null, value: triggerOptions.parameter });\r\n }\r\n }\r\n\r\n // Serialize child action, recursively\r\n this.actions[i].serialize(triggerObject);\r\n\r\n // Add serialized trigger\r\n root.children.push(triggerObject);\r\n }\r\n\r\n return root;\r\n }\r\n\r\n /**\r\n * Creates a new ActionManager from a JSON data\r\n * @param parsedActions defines the JSON data to read from\r\n * @param object defines the hosting mesh\r\n * @param scene defines the hosting scene\r\n */\r\n public static Parse(parsedActions: any, object: Nullable<AbstractMesh>, scene: Scene): void {\r\n const actionManager = new ActionManager(scene);\r\n if (object === null) {\r\n scene.actionManager = actionManager;\r\n } else {\r\n object.actionManager = actionManager;\r\n }\r\n\r\n // instantiate a new object\r\n const instantiate = (name: string, params: Array<any>): any => {\r\n const internalClassType = GetClass(\"BABYLON.\" + name);\r\n return internalClassType && new internalClassType(...params);\r\n };\r\n\r\n const parseParameter = (name: string, value: string, target: any, propertyPath: Nullable<string>): any => {\r\n if (propertyPath === null) {\r\n // String, boolean or float\r\n const floatValue = parseFloat(value);\r\n\r\n if (value === \"true\" || value === \"false\") {\r\n return value === \"true\";\r\n } else {\r\n return isNaN(floatValue) ? value : floatValue;\r\n }\r\n }\r\n\r\n const effectiveTarget = propertyPath.split(\".\");\r\n const values = value.split(\",\");\r\n\r\n // Get effective Target\r\n for (let i = 0; i < effectiveTarget.length; i++) {\r\n target = target[effectiveTarget[i]];\r\n }\r\n\r\n // Return appropriate value with its type\r\n if (typeof target === \"boolean\") {\r\n return values[0] === \"true\";\r\n }\r\n\r\n if (typeof target === \"string\") {\r\n return values[0];\r\n }\r\n\r\n // Parameters with multiple values such as Vector3 etc.\r\n const split: number[] = [];\r\n for (let i = 0; i < values.length; i++) {\r\n split.push(parseFloat(values[i]));\r\n }\r\n\r\n if (target instanceof Vector3) {\r\n return Vector3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Vector4) {\r\n return Vector4.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color3) {\r\n return Color3.FromArray(split);\r\n }\r\n\r\n if (target instanceof Color4) {\r\n return Color4.FromArray(split);\r\n }\r\n\r\n return parseFloat(values[0]);\r\n };\r\n\r\n // traverse graph per trigger\r\n const traverse = (parsedAction: any, trigger: any, condition: Nullable<Condition>, action: Nullable<Action>, combineArray: Nullable<Array<Action>> = null) => {\r\n if (parsedAction.detached) {\r\n return;\r\n }\r\n\r\n const parameters: any[] = [];\r\n let target: any = null;\r\n let propertyPath: Nullable<string> = null;\r\n const combine = parsedAction.combine && parsedAction.combine.length > 0;\r\n\r\n // Parameters\r\n if (parsedAction.type === 2) {\r\n parameters.push(actionManager);\r\n } else {\r\n parameters.push(trigger);\r\n }\r\n\r\n if (combine) {\r\n const actions: Action[] = [];\r\n for (let j = 0; j < parsedAction.combine.length; j++) {\r\n traverse(parsedAction.combine[j], ActionManager.NothingTrigger, condition, action, actions);\r\n }\r\n parameters.push(actions);\r\n } else {\r\n for (let i = 0; i < parsedAction.properties.length; i++) {\r\n let value = parsedAction.properties[i].value;\r\n const name = parsedAction.properties[i].name;\r\n const targetType = parsedAction.properties[i].targetType;\r\n\r\n if (name === \"target\") {\r\n if (targetType === \"SceneProperties\") {\r\n value = target = scene;\r\n } else if (targetType === \"MaterialProperties\") {\r\n value = target = scene.getMaterialByName(value);\r\n } else {\r\n value = target = scene.getNodeByName(value);\r\n }\r\n } else if (name === \"parent\") {\r\n value = scene.getNodeByName(value);\r\n } else if (name === \"sound\") {\r\n // Can not externalize to component, so only checks for the presence off the API.\r\n if (scene.getSoundByName) {\r\n value = scene.getSoundByName(value);\r\n }\r\n } else if (name !== \"propertyPath\") {\r\n if (parsedAction.type === 2 && name === \"operator\") {\r\n value = (<any>ValueCondition)[value];\r\n } else {\r\n value = parseParameter(name, value, target, name === \"value\" ? propertyPath : null);\r\n }\r\n } else {\r\n propertyPath = value;\r\n }\r\n\r\n parameters.push(value);\r\n }\r\n }\r\n\r\n if (combineArray === null) {\r\n parameters.push(condition);\r\n } else {\r\n parameters.push(null);\r\n }\r\n\r\n // If interpolate value action\r\n if (parsedAction.name === \"InterpolateValueAction\") {\r\n const param = parameters[parameters.length - 2];\r\n parameters[parameters.length - 1] = param;\r\n parameters[parameters.length - 2] = condition;\r\n }\r\n\r\n // Action or condition(s) and not CombineAction\r\n let newAction = instantiate(parsedAction.name, parameters);\r\n\r\n if (newAction instanceof Condition && condition !== null) {\r\n const nothing = new DoNothingAction(trigger, condition);\r\n\r\n if (action) {\r\n // eslint-disable-next-line github/no-then\r\n action.then(nothing);\r\n } else {\r\n actionManager.registerAction(nothing);\r\n }\r\n\r\n action = nothing;\r\n }\r\n\r\n if (combineArray === null) {\r\n if (newAction instanceof Condition) {\r\n condition = newAction;\r\n newAction = action;\r\n } else {\r\n condition = null;\r\n if (action) {\r\n // eslint-disable-next-line github/no-then\r\n action.then(newAction);\r\n } else {\r\n actionManager.registerAction(newAction);\r\n }\r\n }\r\n } else {\r\n combineArray.push(newAction);\r\n }\r\n\r\n for (let i = 0; i < parsedAction.children.length; i++) {\r\n traverse(parsedAction.children[i], trigger, condition, newAction, null);\r\n }\r\n };\r\n\r\n // triggers\r\n for (let i = 0; i < parsedActions.children.length; i++) {\r\n let triggerParams: any;\r\n const trigger = parsedActions.children[i];\r\n\r\n if (trigger.properties.length > 0) {\r\n const param = trigger.properties[0].value;\r\n const value = trigger.properties[0].targetType === null ? param : scene.getMeshByName(param);\r\n\r\n if (value._meshId) {\r\n value.mesh = scene.getMeshById(value._meshId);\r\n }\r\n\r\n triggerParams = { trigger: (<any>ActionManager)[trigger.name], parameter: value };\r\n } else {\r\n triggerParams = (<any>ActionManager)[trigger.name];\r\n }\r\n\r\n for (let j = 0; j < trigger.children.length; j++) {\r\n if (!trigger.detached) {\r\n traverse(trigger.children[j], triggerParams, null, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get a trigger name by index\r\n * @param trigger defines the trigger index\r\n * @returns a trigger name\r\n */\r\n public static GetTriggerName(trigger: number): string {\r\n switch (trigger) {\r\n case Constants.ACTION_NothingTrigger:\r\n return \"NothingTrigger\";\r\n case Constants.ACTION_OnPickTrigger:\r\n return \"OnPickTrigger\";\r\n case Constants.ACTION_OnLeftPickTrigger:\r\n return \"OnLeftPickTrigger\";\r\n case Constants.ACTION_OnRightPickTrigger:\r\n return \"OnRightPickTrigger\";\r\n case Constants.ACTION_OnCenterPickTrigger:\r\n return \"OnCenterPickTrigger\";\r\n case Constants.ACTION_OnPickDownTrigger:\r\n return \"OnPickDownTrigger\";\r\n case Constants.ACTION_OnDoublePickTrigger:\r\n return \"OnDoublePickTrigger\"; // start;\r\n case Constants.ACTION_OnPickUpTrigger:\r\n return \"OnPickUpTrigger\";\r\n case Constants.ACTION_OnLongPressTrigger:\r\n return \"OnLongPressTrigger\";\r\n case Constants.ACTION_OnPointerOverTrigger:\r\n return \"OnPointerOverTrigger\";\r\n case Constants.ACTION_OnPointerOutTrigger:\r\n return \"OnPointerOutTrigger\";\r\n case Constants.ACTION_OnEveryFrameTrigger:\r\n return \"OnEveryFrameTrigger\";\r\n case Constants.ACTION_OnIntersectionEnterTrigger:\r\n return \"OnIntersectionEnterTrigger\";\r\n case Constants.ACTION_OnIntersectionExitTrigger:\r\n return \"OnIntersectionExitTrigger\";\r\n case Constants.ACTION_OnKeyDownTrigger:\r\n return \"OnKeyDownTrigger\";\r\n case Constants.ACTION_OnKeyUpTrigger:\r\n return \"OnKeyUpTrigger\";\r\n case Constants.ACTION_OnPickOutTrigger:\r\n return \"OnPickOutTrigger\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n}\r\n"]}
@@ -88,8 +88,6 @@ export declare class RuntimeAnimation {
88
88
  private _keys;
89
89
  private _minFrame;
90
90
  private _maxFrame;
91
- private _minValue;
92
- private _maxValue;
93
91
  private _targetIsArray;
94
92
  /** @internal */
95
93
  _coreRuntimeAnimation: RuntimeAnimation | null;
@@ -126,11 +126,9 @@ export class RuntimeAnimation {
126
126
  this._keys = this._animation.getKeys();
127
127
  this._minFrame = this._keys[0].frame;
128
128
  this._maxFrame = this._keys[this._keys.length - 1].frame;
129
- this._minValue = this._keys[0].value;
130
- this._maxValue = this._keys[this._keys.length - 1].value;
131
129
  // Add a start key at frame 0 if missing
132
130
  if (this._minFrame !== 0) {
133
- const newKey = { frame: 0, value: this._minValue };
131
+ const newKey = { frame: 0, value: this._keys[0].value };
134
132
  this._keys.splice(0, 0, newKey);
135
133
  }
136
134
  // Check data
@@ -467,11 +465,11 @@ export class RuntimeAnimation {
467
465
  if (!loop && to >= from && ((absoluteFrame >= frameRange && speedRatio > 0) || (absoluteFrame <= 0 && speedRatio < 0))) {
468
466
  // If we are out of range and not looping get back to caller
469
467
  returnValue = false;
470
- highLimitValue = animation._getKeyValue(this._maxValue);
468
+ highLimitValue = animation.evaluate(to);
471
469
  }
472
470
  else if (!loop && from >= to && ((absoluteFrame <= frameRange && speedRatio < 0) || (absoluteFrame >= 0 && speedRatio > 0))) {
473
471
  returnValue = false;
474
- highLimitValue = animation._getKeyValue(this._minValue);
472
+ highLimitValue = animation.evaluate(from);
475
473
  }
476
474
  else if (this._animationState.loopMode !== Animation.ANIMATIONLOOPMODE_CYCLE) {
477
475
  const keyOffset = to.toString() + from.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"runtimeAnimation.js","sourceRoot":"","sources":["../../../../dev/core/src/Animations/runtimeAnimation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Matrix } from \"../Maths/math.vector\";\r\nimport type { _IAnimationState } from \"./animation\";\r\nimport {\r\n Animation,\r\n _StaticOffsetValueColor3,\r\n _StaticOffsetValueColor4,\r\n _StaticOffsetValueQuaternion,\r\n _StaticOffsetValueSize,\r\n _StaticOffsetValueVector2,\r\n _StaticOffsetValueVector3,\r\n} from \"./animation\";\r\nimport type { AnimationEvent } from \"./animationEvent\";\r\nimport type { Animatable } from \"./animatable\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { IAnimationKey } from \"./animationKey\";\r\n\r\n/**\r\n * Defines a runtime animation\r\n */\r\nexport class RuntimeAnimation {\r\n private _events = new Array<AnimationEvent>();\r\n\r\n /**\r\n * The current frame of the runtime animation\r\n */\r\n private _currentFrame: number = 0;\r\n\r\n /**\r\n * The animation used by the runtime animation\r\n */\r\n public _animation: Animation;\r\n\r\n /**\r\n * The target of the runtime animation\r\n */\r\n private _target: any;\r\n\r\n /**\r\n * The initiating animatable\r\n */\r\n private _host: Animatable;\r\n\r\n /**\r\n * The original value of the runtime animation\r\n */\r\n private _originalValue = new Array<any>();\r\n\r\n /**\r\n * The original blend value of the runtime animation\r\n */\r\n private _originalBlendValue: Nullable<any> = null;\r\n\r\n /**\r\n * The offsets cache of the runtime animation\r\n */\r\n private _offsetsCache: { [key: string]: any } = {};\r\n\r\n /**\r\n * The high limits cache of the runtime animation\r\n */\r\n private _highLimitsCache: { [key: string]: any } = {};\r\n\r\n /**\r\n * Specifies if the runtime animation has been stopped\r\n */\r\n private _stopped = false;\r\n\r\n /**\r\n * The blending factor of the runtime animation\r\n */\r\n private _blendingFactor = 0;\r\n\r\n /**\r\n * The BabylonJS scene\r\n */\r\n private _scene: Scene;\r\n\r\n /**\r\n * The current value of the runtime animation\r\n */\r\n private _currentValue: Nullable<any> = null;\r\n\r\n /** @internal */\r\n public _animationState: _IAnimationState;\r\n\r\n /**\r\n * The active target of the runtime animation\r\n */\r\n private _activeTargets: any[];\r\n private _currentActiveTarget: Nullable<any> = null;\r\n private _directTarget: Nullable<any> = null;\r\n\r\n /**\r\n * The target path of the runtime animation\r\n */\r\n private _targetPath: string = \"\";\r\n\r\n /**\r\n * The weight of the runtime animation\r\n */\r\n private _weight = 1.0;\r\n\r\n /**\r\n * The absolute frame offset of the runtime animation\r\n */\r\n private _absoluteFrameOffset = 0;\r\n\r\n /**\r\n * The previous elapsed time (since start of animation) of the runtime animation\r\n */\r\n private _previousElapsedTime: number = 0;\r\n\r\n private _yoyoDirection: number = 1;\r\n\r\n /**\r\n * The previous absolute frame of the runtime animation (meaning, without taking into account the from/to values, only the elapsed time and the fps)\r\n */\r\n private _previousAbsoluteFrame: number = 0;\r\n\r\n private _enableBlending: boolean;\r\n\r\n private _keys: IAnimationKey[];\r\n private _minFrame: number;\r\n private _maxFrame: number;\r\n private _minValue: any;\r\n private _maxValue: any;\r\n private _targetIsArray = false;\r\n\r\n /** @internal */\r\n public _coreRuntimeAnimation: RuntimeAnimation | null = null;\r\n\r\n /**\r\n * Gets the current frame of the runtime animation\r\n */\r\n public get currentFrame(): number {\r\n return this._currentFrame;\r\n }\r\n\r\n /**\r\n * Gets the weight of the runtime animation\r\n */\r\n public get weight(): number {\r\n return this._weight;\r\n }\r\n\r\n /**\r\n * Gets the current value of the runtime animation\r\n */\r\n public get currentValue(): any {\r\n return this._currentValue;\r\n }\r\n\r\n /**\r\n * Gets or sets the target path of the runtime animation\r\n */\r\n public get targetPath(): string {\r\n return this._targetPath;\r\n }\r\n\r\n /**\r\n * Gets the actual target of the runtime animation\r\n */\r\n public get target(): any {\r\n return this._currentActiveTarget;\r\n }\r\n\r\n /**\r\n * Gets the additive state of the runtime animation\r\n */\r\n public get isAdditive(): boolean {\r\n return this._host && this._host.isAdditive;\r\n }\r\n\r\n /** @internal */\r\n public _onLoop: () => void;\r\n\r\n /**\r\n * Create a new RuntimeAnimation object\r\n * @param target defines the target of the animation\r\n * @param animation defines the source animation object\r\n * @param scene defines the hosting scene\r\n * @param host defines the initiating Animatable\r\n */\r\n public constructor(target: any, animation: Animation, scene: Scene, host: Animatable) {\r\n this._animation = animation;\r\n this._target = target;\r\n this._scene = scene;\r\n this._host = host;\r\n this._activeTargets = [];\r\n\r\n animation._runtimeAnimations.push(this);\r\n\r\n // State\r\n this._animationState = {\r\n key: 0,\r\n repeatCount: 0,\r\n loopMode: this._getCorrectLoopMode(),\r\n };\r\n\r\n if (this._animation.dataType === Animation.ANIMATIONTYPE_MATRIX) {\r\n this._animationState.workValue = Matrix.Zero();\r\n }\r\n\r\n // Limits\r\n this._keys = this._animation.getKeys();\r\n this._minFrame = this._keys[0].frame;\r\n this._maxFrame = this._keys[this._keys.length - 1].frame;\r\n this._minValue = this._keys[0].value;\r\n this._maxValue = this._keys[this._keys.length - 1].value;\r\n\r\n // Add a start key at frame 0 if missing\r\n if (this._minFrame !== 0) {\r\n const newKey = { frame: 0, value: this._minValue };\r\n this._keys.splice(0, 0, newKey);\r\n }\r\n\r\n // Check data\r\n if (this._target instanceof Array) {\r\n let index = 0;\r\n for (const target of this._target) {\r\n this._preparePath(target, index);\r\n this._getOriginalValues(index);\r\n index++;\r\n }\r\n this._targetIsArray = true;\r\n } else {\r\n this._preparePath(this._target);\r\n this._getOriginalValues();\r\n this._targetIsArray = false;\r\n this._directTarget = this._activeTargets[0];\r\n }\r\n\r\n // Cloning events locally\r\n const events = animation.getEvents();\r\n if (events && events.length > 0) {\r\n for (const e of events) {\r\n this._events.push(e._clone());\r\n }\r\n }\r\n\r\n this._enableBlending = target && target.animationPropertiesOverride ? target.animationPropertiesOverride.enableBlending : this._animation.enableBlending;\r\n }\r\n\r\n private _preparePath(target: any, targetIndex = 0) {\r\n const targetPropertyPath = this._animation.targetPropertyPath;\r\n\r\n if (targetPropertyPath.length > 1) {\r\n let property = target;\r\n for (let index = 0; index < targetPropertyPath.length - 1; index++) {\r\n const name = targetPropertyPath[index];\r\n property = property[name];\r\n if (property === undefined) {\r\n throw new Error(`Invalid property (${name}) in property path (${targetPropertyPath.join(\".\")})`);\r\n }\r\n }\r\n\r\n this._targetPath = targetPropertyPath[targetPropertyPath.length - 1];\r\n this._activeTargets[targetIndex] = property;\r\n } else {\r\n this._targetPath = targetPropertyPath[0];\r\n this._activeTargets[targetIndex] = target;\r\n }\r\n\r\n if (this._activeTargets[targetIndex][this._targetPath] === undefined) {\r\n throw new Error(`Invalid property (${this._targetPath}) in property path (${targetPropertyPath.join(\".\")})`);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the animation from the runtime animation\r\n */\r\n public get animation(): Animation {\r\n return this._animation;\r\n }\r\n\r\n /**\r\n * Resets the runtime animation to the beginning\r\n * @param restoreOriginal defines whether to restore the target property to the original value\r\n */\r\n public reset(restoreOriginal = false): void {\r\n if (restoreOriginal) {\r\n if (this._target instanceof Array) {\r\n let index = 0;\r\n for (const target of this._target) {\r\n if (this._originalValue[index] !== undefined) {\r\n this._setValue(target, this._activeTargets[index], this._originalValue[index], -1, index);\r\n }\r\n index++;\r\n }\r\n } else {\r\n if (this._originalValue[0] !== undefined) {\r\n this._setValue(this._target, this._directTarget, this._originalValue[0], -1, 0);\r\n }\r\n }\r\n }\r\n\r\n this._offsetsCache = {};\r\n this._highLimitsCache = {};\r\n this._currentFrame = 0;\r\n this._blendingFactor = 0;\r\n\r\n // Events\r\n for (let index = 0; index < this._events.length; index++) {\r\n this._events[index].isDone = false;\r\n }\r\n }\r\n\r\n /**\r\n * Specifies if the runtime animation is stopped\r\n * @returns Boolean specifying if the runtime animation is stopped\r\n */\r\n public isStopped(): boolean {\r\n return this._stopped;\r\n }\r\n\r\n /**\r\n * Disposes of the runtime animation\r\n */\r\n public dispose(): void {\r\n const index = this._animation.runtimeAnimations.indexOf(this);\r\n\r\n if (index > -1) {\r\n this._animation.runtimeAnimations.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Apply the interpolated value to the target\r\n * @param currentValue defines the value computed by the animation\r\n * @param weight defines the weight to apply to this value (Defaults to 1.0)\r\n */\r\n public setValue(currentValue: any, weight: number) {\r\n if (this._targetIsArray) {\r\n for (let index = 0; index < this._target.length; index++) {\r\n const target = this._target[index];\r\n this._setValue(target, this._activeTargets[index], currentValue, weight, index);\r\n }\r\n return;\r\n }\r\n this._setValue(this._target, this._directTarget, currentValue, weight, 0);\r\n }\r\n\r\n private _getOriginalValues(targetIndex = 0) {\r\n let originalValue: any;\r\n const target = this._activeTargets[targetIndex];\r\n\r\n if (target.getLocalMatrix && this._targetPath === \"_matrix\") {\r\n // For bones\r\n originalValue = target.getLocalMatrix();\r\n } else {\r\n originalValue = target[this._targetPath];\r\n }\r\n\r\n if (originalValue && originalValue.clone) {\r\n this._originalValue[targetIndex] = originalValue.clone();\r\n } else {\r\n this._originalValue[targetIndex] = originalValue;\r\n }\r\n }\r\n\r\n private _registerTargetForLateAnimationBinding(runtimeAnimation: RuntimeAnimation, originalValue: any): void {\r\n const target = runtimeAnimation.target;\r\n this._scene._registeredForLateAnimationBindings.pushNoDuplicate(target);\r\n\r\n if (!target._lateAnimationHolders) {\r\n target._lateAnimationHolders = {};\r\n }\r\n\r\n if (!target._lateAnimationHolders[runtimeAnimation.targetPath]) {\r\n target._lateAnimationHolders[runtimeAnimation.targetPath] = {\r\n totalWeight: 0,\r\n totalAdditiveWeight: 0,\r\n animations: [],\r\n additiveAnimations: [],\r\n originalValue: originalValue,\r\n };\r\n }\r\n\r\n if (runtimeAnimation.isAdditive) {\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].additiveAnimations.push(runtimeAnimation);\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalAdditiveWeight += runtimeAnimation.weight;\r\n } else {\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].animations.push(runtimeAnimation);\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalWeight += runtimeAnimation.weight;\r\n }\r\n }\r\n\r\n private _setValue(target: any, destination: any, currentValue: any, weight: number, targetIndex: number): void {\r\n // Set value\r\n this._currentActiveTarget = destination;\r\n\r\n this._weight = weight;\r\n\r\n if (this._enableBlending && this._blendingFactor <= 1.0) {\r\n if (!this._originalBlendValue) {\r\n const originalValue = destination[this._targetPath];\r\n\r\n if (originalValue.clone) {\r\n this._originalBlendValue = originalValue.clone();\r\n } else {\r\n this._originalBlendValue = originalValue;\r\n }\r\n }\r\n\r\n if (this._originalBlendValue.m) {\r\n // Matrix\r\n if (Animation.AllowMatrixDecomposeForInterpolation) {\r\n if (this._currentValue) {\r\n Matrix.DecomposeLerpToRef(this._originalBlendValue, currentValue, this._blendingFactor, this._currentValue);\r\n } else {\r\n this._currentValue = Matrix.DecomposeLerp(this._originalBlendValue, currentValue, this._blendingFactor);\r\n }\r\n } else {\r\n if (this._currentValue) {\r\n Matrix.LerpToRef(this._originalBlendValue, currentValue, this._blendingFactor, this._currentValue);\r\n } else {\r\n this._currentValue = Matrix.Lerp(this._originalBlendValue, currentValue, this._blendingFactor);\r\n }\r\n }\r\n } else {\r\n this._currentValue = Animation._UniversalLerp(this._originalBlendValue, currentValue, this._blendingFactor);\r\n }\r\n\r\n const blendingSpeed = target && target.animationPropertiesOverride ? target.animationPropertiesOverride.blendingSpeed : this._animation.blendingSpeed;\r\n this._blendingFactor += blendingSpeed;\r\n } else {\r\n if (!this._currentValue) {\r\n if (currentValue?.clone) {\r\n this._currentValue = currentValue.clone();\r\n } else {\r\n this._currentValue = currentValue;\r\n }\r\n } else if (this._currentValue.copyFrom) {\r\n if (currentValue !== null) {\r\n this._currentValue.copyFrom(currentValue);\r\n } else {\r\n this._currentValue = currentValue;\r\n }\r\n } else {\r\n this._currentValue = currentValue;\r\n }\r\n }\r\n\r\n if (weight !== -1.0) {\r\n this._registerTargetForLateAnimationBinding(this, this._originalValue[targetIndex]);\r\n } else {\r\n if (this._animationState.loopMode === Animation.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT) {\r\n if (this._currentValue.addToRef) {\r\n this._currentValue.addToRef(this._originalValue[targetIndex], destination[this._targetPath]);\r\n } else {\r\n destination[this._targetPath] = this._originalValue[targetIndex] + this._currentValue;\r\n }\r\n } else {\r\n destination[this._targetPath] = this._currentValue;\r\n }\r\n }\r\n\r\n if (target.markAsDirty) {\r\n target.markAsDirty(this._animation.targetProperty);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the loop pmode of the runtime animation\r\n * @returns Loop Mode\r\n */\r\n private _getCorrectLoopMode(): number | undefined {\r\n if (this._target && this._target.animationPropertiesOverride) {\r\n return this._target.animationPropertiesOverride.loopMode as number;\r\n }\r\n\r\n return this._animation.loopMode;\r\n }\r\n\r\n /**\r\n * Move the current animation to a given frame\r\n * @param frame defines the frame to move to\r\n * @param weight defines the weight to apply to the animation (-1.0 by default)\r\n */\r\n public goToFrame(frame: number, weight = -1): void {\r\n const keys = this._animation.getKeys();\r\n\r\n if (frame < keys[0].frame) {\r\n frame = keys[0].frame;\r\n } else if (frame > keys[keys.length - 1].frame) {\r\n frame = keys[keys.length - 1].frame;\r\n }\r\n\r\n // Need to reset animation events\r\n const events = this._events;\r\n if (events.length) {\r\n for (let index = 0; index < events.length; index++) {\r\n if (!events[index].onlyOnce) {\r\n // reset events in the future\r\n events[index].isDone = events[index].frame < frame;\r\n }\r\n }\r\n }\r\n\r\n this._currentFrame = frame;\r\n const currentValue = this._animation._interpolate(frame, this._animationState);\r\n\r\n this.setValue(currentValue, weight);\r\n }\r\n\r\n /**\r\n * @internal Internal use only\r\n */\r\n public _prepareForSpeedRatioChange(newSpeedRatio: number): void {\r\n const newAbsoluteFrame = (this._previousElapsedTime * (this._animation.framePerSecond * newSpeedRatio)) / 1000.0;\r\n\r\n this._absoluteFrameOffset = this._previousAbsoluteFrame - newAbsoluteFrame;\r\n }\r\n\r\n /**\r\n * Execute the current animation\r\n * @param elapsedTimeSinceAnimationStart defines the elapsed time (in milliseconds) since the animation was started\r\n * @param from defines the lower frame of the animation range\r\n * @param to defines the upper frame of the animation range\r\n * @param loop defines if the current animation must loop\r\n * @param speedRatio defines the current speed ratio\r\n * @param weight defines the weight of the animation (default is -1 so no weight)\r\n * @returns a boolean indicating if the animation is running\r\n */\r\n public animate(elapsedTimeSinceAnimationStart: number, from: number, to: number, loop: boolean, speedRatio: number, weight = -1.0): boolean {\r\n const animation = this._animation;\r\n const targetPropertyPath = animation.targetPropertyPath;\r\n if (!targetPropertyPath || targetPropertyPath.length < 1) {\r\n this._stopped = true;\r\n return false;\r\n }\r\n\r\n let returnValue = true;\r\n let currentFrame: number;\r\n const events = this._events;\r\n let frameRange = 0;\r\n\r\n if (!this._coreRuntimeAnimation) {\r\n // Check limits\r\n if (from < this._minFrame || from > this._maxFrame) {\r\n from = this._minFrame;\r\n }\r\n if (to < this._minFrame || to > this._maxFrame) {\r\n to = this._maxFrame;\r\n }\r\n\r\n frameRange = to - from;\r\n let offsetValue: any;\r\n\r\n // Compute the frame according to the elapsed time and the fps of the animation (\"from\" and \"to\" are not factored in!)\r\n let absoluteFrame = (elapsedTimeSinceAnimationStart * (animation.framePerSecond * speedRatio)) / 1000.0 + this._absoluteFrameOffset;\r\n let highLimitValue = 0;\r\n\r\n // Apply the yoyo function if required\r\n let yoyoLoop = false;\r\n const yoyoMode = loop && this._animationState.loopMode === Animation.ANIMATIONLOOPMODE_YOYO;\r\n if (yoyoMode) {\r\n const position = (absoluteFrame - from) / frameRange;\r\n\r\n // Apply the yoyo curve\r\n const sin = Math.sin(position * Math.PI);\r\n const yoyoPosition = Math.abs(sin);\r\n\r\n // Map the yoyo position back to the range\r\n absoluteFrame = yoyoPosition * frameRange + from;\r\n\r\n const direction = sin >= 0 ? 1 : -1;\r\n if (this._yoyoDirection !== direction) {\r\n yoyoLoop = true;\r\n }\r\n\r\n this._yoyoDirection = direction;\r\n }\r\n\r\n this._previousElapsedTime = elapsedTimeSinceAnimationStart;\r\n this._previousAbsoluteFrame = absoluteFrame;\r\n\r\n if (!loop && to >= from && ((absoluteFrame >= frameRange && speedRatio > 0) || (absoluteFrame <= 0 && speedRatio < 0))) {\r\n // If we are out of range and not looping get back to caller\r\n returnValue = false;\r\n highLimitValue = animation._getKeyValue(this._maxValue);\r\n } else if (!loop && from >= to && ((absoluteFrame <= frameRange && speedRatio < 0) || (absoluteFrame >= 0 && speedRatio > 0))) {\r\n returnValue = false;\r\n highLimitValue = animation._getKeyValue(this._minValue);\r\n } else if (this._animationState.loopMode !== Animation.ANIMATIONLOOPMODE_CYCLE) {\r\n const keyOffset = to.toString() + from.toString();\r\n if (!this._offsetsCache[keyOffset]) {\r\n this._animationState.repeatCount = 0;\r\n this._animationState.loopMode = Animation.ANIMATIONLOOPMODE_CYCLE; // force a specific codepath in animation._interpolate()!\r\n const fromValue = animation._interpolate(from, this._animationState);\r\n const toValue = animation._interpolate(to, this._animationState);\r\n\r\n this._animationState.loopMode = this._getCorrectLoopMode();\r\n switch (animation.dataType) {\r\n // Float\r\n case Animation.ANIMATIONTYPE_FLOAT:\r\n this._offsetsCache[keyOffset] = toValue - fromValue;\r\n break;\r\n // Quaternion\r\n case Animation.ANIMATIONTYPE_QUATERNION:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Vector3\r\n case Animation.ANIMATIONTYPE_VECTOR3:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Vector2\r\n case Animation.ANIMATIONTYPE_VECTOR2:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Size\r\n case Animation.ANIMATIONTYPE_SIZE:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Color3\r\n case Animation.ANIMATIONTYPE_COLOR3:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this._highLimitsCache[keyOffset] = toValue;\r\n }\r\n\r\n highLimitValue = this._highLimitsCache[keyOffset];\r\n offsetValue = this._offsetsCache[keyOffset];\r\n }\r\n\r\n if (offsetValue === undefined) {\r\n switch (animation.dataType) {\r\n // Float\r\n case Animation.ANIMATIONTYPE_FLOAT:\r\n offsetValue = 0;\r\n break;\r\n // Quaternion\r\n case Animation.ANIMATIONTYPE_QUATERNION:\r\n offsetValue = _StaticOffsetValueQuaternion;\r\n break;\r\n // Vector3\r\n case Animation.ANIMATIONTYPE_VECTOR3:\r\n offsetValue = _StaticOffsetValueVector3;\r\n break;\r\n // Vector2\r\n case Animation.ANIMATIONTYPE_VECTOR2:\r\n offsetValue = _StaticOffsetValueVector2;\r\n break;\r\n // Size\r\n case Animation.ANIMATIONTYPE_SIZE:\r\n offsetValue = _StaticOffsetValueSize;\r\n break;\r\n // Color3\r\n case Animation.ANIMATIONTYPE_COLOR3:\r\n offsetValue = _StaticOffsetValueColor3;\r\n break;\r\n case Animation.ANIMATIONTYPE_COLOR4:\r\n offsetValue = _StaticOffsetValueColor4;\r\n break;\r\n }\r\n }\r\n\r\n // Compute value\r\n\r\n if (this._host && this._host.syncRoot) {\r\n // If we must sync with an animatable, calculate the current frame based on the frame of the root animatable\r\n const syncRoot = this._host.syncRoot;\r\n const hostNormalizedFrame = (syncRoot.masterFrame - syncRoot.fromFrame) / (syncRoot.toFrame - syncRoot.fromFrame);\r\n currentFrame = from + frameRange * hostNormalizedFrame;\r\n } else {\r\n if ((absoluteFrame > 0 && from > to) || (absoluteFrame < 0 && from < to)) {\r\n currentFrame = returnValue && frameRange !== 0 ? to + (absoluteFrame % frameRange) : from;\r\n } else {\r\n currentFrame = returnValue && frameRange !== 0 ? from + (absoluteFrame % frameRange) : to;\r\n }\r\n }\r\n\r\n // Reset event/state if looping\r\n if ((!yoyoMode && ((speedRatio > 0 && this.currentFrame > currentFrame) || (speedRatio < 0 && this.currentFrame < currentFrame))) || (yoyoMode && yoyoLoop)) {\r\n this._onLoop();\r\n\r\n // Need to reset animation events\r\n for (let index = 0; index < events.length; index++) {\r\n if (!events[index].onlyOnce) {\r\n // reset event, the animation is looping\r\n events[index].isDone = false;\r\n }\r\n }\r\n\r\n this._animationState.key = speedRatio > 0 ? 0 : animation.getKeys().length - 1;\r\n }\r\n this._currentFrame = currentFrame;\r\n this._animationState.repeatCount = frameRange === 0 ? 0 : (absoluteFrame / frameRange) >> 0;\r\n this._animationState.highLimitValue = highLimitValue;\r\n this._animationState.offsetValue = offsetValue;\r\n } else {\r\n frameRange = to - from;\r\n currentFrame = this._coreRuntimeAnimation.currentFrame;\r\n this._currentFrame = currentFrame;\r\n this._animationState.repeatCount = this._coreRuntimeAnimation._animationState.repeatCount;\r\n this._animationState.highLimitValue = this._coreRuntimeAnimation._animationState.highLimitValue;\r\n this._animationState.offsetValue = this._coreRuntimeAnimation._animationState.offsetValue;\r\n }\r\n\r\n const currentValue = animation._interpolate(currentFrame, this._animationState);\r\n\r\n // Set value\r\n this.setValue(currentValue, weight);\r\n\r\n // Check events\r\n if (events.length) {\r\n for (let index = 0; index < events.length; index++) {\r\n // Make sure current frame has passed event frame and that event frame is within the current range\r\n // Also, handle both forward and reverse animations\r\n if (\r\n (frameRange >= 0 && currentFrame >= events[index].frame && events[index].frame >= from) ||\r\n (frameRange < 0 && currentFrame <= events[index].frame && events[index].frame <= from)\r\n ) {\r\n const event = events[index];\r\n if (!event.isDone) {\r\n // If event should be done only once, remove it.\r\n if (event.onlyOnce) {\r\n events.splice(index, 1);\r\n index--;\r\n }\r\n event.isDone = true;\r\n event.action(currentFrame);\r\n } // Don't do anything if the event has already been done.\r\n }\r\n }\r\n }\r\n\r\n if (!returnValue) {\r\n this._stopped = true;\r\n }\r\n\r\n return returnValue;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"runtimeAnimation.js","sourceRoot":"","sources":["../../../../dev/core/src/Animations/runtimeAnimation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Matrix } from \"../Maths/math.vector\";\r\nimport type { _IAnimationState } from \"./animation\";\r\nimport {\r\n Animation,\r\n _StaticOffsetValueColor3,\r\n _StaticOffsetValueColor4,\r\n _StaticOffsetValueQuaternion,\r\n _StaticOffsetValueSize,\r\n _StaticOffsetValueVector2,\r\n _StaticOffsetValueVector3,\r\n} from \"./animation\";\r\nimport type { AnimationEvent } from \"./animationEvent\";\r\nimport type { Animatable } from \"./animatable\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { IAnimationKey } from \"./animationKey\";\r\n\r\n/**\r\n * Defines a runtime animation\r\n */\r\nexport class RuntimeAnimation {\r\n private _events = new Array<AnimationEvent>();\r\n\r\n /**\r\n * The current frame of the runtime animation\r\n */\r\n private _currentFrame: number = 0;\r\n\r\n /**\r\n * The animation used by the runtime animation\r\n */\r\n public _animation: Animation;\r\n\r\n /**\r\n * The target of the runtime animation\r\n */\r\n private _target: any;\r\n\r\n /**\r\n * The initiating animatable\r\n */\r\n private _host: Animatable;\r\n\r\n /**\r\n * The original value of the runtime animation\r\n */\r\n private _originalValue = new Array<any>();\r\n\r\n /**\r\n * The original blend value of the runtime animation\r\n */\r\n private _originalBlendValue: Nullable<any> = null;\r\n\r\n /**\r\n * The offsets cache of the runtime animation\r\n */\r\n private _offsetsCache: { [key: string]: any } = {};\r\n\r\n /**\r\n * The high limits cache of the runtime animation\r\n */\r\n private _highLimitsCache: { [key: string]: any } = {};\r\n\r\n /**\r\n * Specifies if the runtime animation has been stopped\r\n */\r\n private _stopped = false;\r\n\r\n /**\r\n * The blending factor of the runtime animation\r\n */\r\n private _blendingFactor = 0;\r\n\r\n /**\r\n * The BabylonJS scene\r\n */\r\n private _scene: Scene;\r\n\r\n /**\r\n * The current value of the runtime animation\r\n */\r\n private _currentValue: Nullable<any> = null;\r\n\r\n /** @internal */\r\n public _animationState: _IAnimationState;\r\n\r\n /**\r\n * The active target of the runtime animation\r\n */\r\n private _activeTargets: any[];\r\n private _currentActiveTarget: Nullable<any> = null;\r\n private _directTarget: Nullable<any> = null;\r\n\r\n /**\r\n * The target path of the runtime animation\r\n */\r\n private _targetPath: string = \"\";\r\n\r\n /**\r\n * The weight of the runtime animation\r\n */\r\n private _weight = 1.0;\r\n\r\n /**\r\n * The absolute frame offset of the runtime animation\r\n */\r\n private _absoluteFrameOffset = 0;\r\n\r\n /**\r\n * The previous elapsed time (since start of animation) of the runtime animation\r\n */\r\n private _previousElapsedTime: number = 0;\r\n\r\n private _yoyoDirection: number = 1;\r\n\r\n /**\r\n * The previous absolute frame of the runtime animation (meaning, without taking into account the from/to values, only the elapsed time and the fps)\r\n */\r\n private _previousAbsoluteFrame: number = 0;\r\n\r\n private _enableBlending: boolean;\r\n\r\n private _keys: IAnimationKey[];\r\n private _minFrame: number;\r\n private _maxFrame: number;\r\n private _targetIsArray = false;\r\n\r\n /** @internal */\r\n public _coreRuntimeAnimation: RuntimeAnimation | null = null;\r\n\r\n /**\r\n * Gets the current frame of the runtime animation\r\n */\r\n public get currentFrame(): number {\r\n return this._currentFrame;\r\n }\r\n\r\n /**\r\n * Gets the weight of the runtime animation\r\n */\r\n public get weight(): number {\r\n return this._weight;\r\n }\r\n\r\n /**\r\n * Gets the current value of the runtime animation\r\n */\r\n public get currentValue(): any {\r\n return this._currentValue;\r\n }\r\n\r\n /**\r\n * Gets or sets the target path of the runtime animation\r\n */\r\n public get targetPath(): string {\r\n return this._targetPath;\r\n }\r\n\r\n /**\r\n * Gets the actual target of the runtime animation\r\n */\r\n public get target(): any {\r\n return this._currentActiveTarget;\r\n }\r\n\r\n /**\r\n * Gets the additive state of the runtime animation\r\n */\r\n public get isAdditive(): boolean {\r\n return this._host && this._host.isAdditive;\r\n }\r\n\r\n /** @internal */\r\n public _onLoop: () => void;\r\n\r\n /**\r\n * Create a new RuntimeAnimation object\r\n * @param target defines the target of the animation\r\n * @param animation defines the source animation object\r\n * @param scene defines the hosting scene\r\n * @param host defines the initiating Animatable\r\n */\r\n public constructor(target: any, animation: Animation, scene: Scene, host: Animatable) {\r\n this._animation = animation;\r\n this._target = target;\r\n this._scene = scene;\r\n this._host = host;\r\n this._activeTargets = [];\r\n\r\n animation._runtimeAnimations.push(this);\r\n\r\n // State\r\n this._animationState = {\r\n key: 0,\r\n repeatCount: 0,\r\n loopMode: this._getCorrectLoopMode(),\r\n };\r\n\r\n if (this._animation.dataType === Animation.ANIMATIONTYPE_MATRIX) {\r\n this._animationState.workValue = Matrix.Zero();\r\n }\r\n\r\n // Limits\r\n this._keys = this._animation.getKeys();\r\n this._minFrame = this._keys[0].frame;\r\n this._maxFrame = this._keys[this._keys.length - 1].frame;\r\n\r\n // Add a start key at frame 0 if missing\r\n if (this._minFrame !== 0) {\r\n const newKey = { frame: 0, value: this._keys[0].value };\r\n this._keys.splice(0, 0, newKey);\r\n }\r\n\r\n // Check data\r\n if (this._target instanceof Array) {\r\n let index = 0;\r\n for (const target of this._target) {\r\n this._preparePath(target, index);\r\n this._getOriginalValues(index);\r\n index++;\r\n }\r\n this._targetIsArray = true;\r\n } else {\r\n this._preparePath(this._target);\r\n this._getOriginalValues();\r\n this._targetIsArray = false;\r\n this._directTarget = this._activeTargets[0];\r\n }\r\n\r\n // Cloning events locally\r\n const events = animation.getEvents();\r\n if (events && events.length > 0) {\r\n for (const e of events) {\r\n this._events.push(e._clone());\r\n }\r\n }\r\n\r\n this._enableBlending = target && target.animationPropertiesOverride ? target.animationPropertiesOverride.enableBlending : this._animation.enableBlending;\r\n }\r\n\r\n private _preparePath(target: any, targetIndex = 0) {\r\n const targetPropertyPath = this._animation.targetPropertyPath;\r\n\r\n if (targetPropertyPath.length > 1) {\r\n let property = target;\r\n for (let index = 0; index < targetPropertyPath.length - 1; index++) {\r\n const name = targetPropertyPath[index];\r\n property = property[name];\r\n if (property === undefined) {\r\n throw new Error(`Invalid property (${name}) in property path (${targetPropertyPath.join(\".\")})`);\r\n }\r\n }\r\n\r\n this._targetPath = targetPropertyPath[targetPropertyPath.length - 1];\r\n this._activeTargets[targetIndex] = property;\r\n } else {\r\n this._targetPath = targetPropertyPath[0];\r\n this._activeTargets[targetIndex] = target;\r\n }\r\n\r\n if (this._activeTargets[targetIndex][this._targetPath] === undefined) {\r\n throw new Error(`Invalid property (${this._targetPath}) in property path (${targetPropertyPath.join(\".\")})`);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the animation from the runtime animation\r\n */\r\n public get animation(): Animation {\r\n return this._animation;\r\n }\r\n\r\n /**\r\n * Resets the runtime animation to the beginning\r\n * @param restoreOriginal defines whether to restore the target property to the original value\r\n */\r\n public reset(restoreOriginal = false): void {\r\n if (restoreOriginal) {\r\n if (this._target instanceof Array) {\r\n let index = 0;\r\n for (const target of this._target) {\r\n if (this._originalValue[index] !== undefined) {\r\n this._setValue(target, this._activeTargets[index], this._originalValue[index], -1, index);\r\n }\r\n index++;\r\n }\r\n } else {\r\n if (this._originalValue[0] !== undefined) {\r\n this._setValue(this._target, this._directTarget, this._originalValue[0], -1, 0);\r\n }\r\n }\r\n }\r\n\r\n this._offsetsCache = {};\r\n this._highLimitsCache = {};\r\n this._currentFrame = 0;\r\n this._blendingFactor = 0;\r\n\r\n // Events\r\n for (let index = 0; index < this._events.length; index++) {\r\n this._events[index].isDone = false;\r\n }\r\n }\r\n\r\n /**\r\n * Specifies if the runtime animation is stopped\r\n * @returns Boolean specifying if the runtime animation is stopped\r\n */\r\n public isStopped(): boolean {\r\n return this._stopped;\r\n }\r\n\r\n /**\r\n * Disposes of the runtime animation\r\n */\r\n public dispose(): void {\r\n const index = this._animation.runtimeAnimations.indexOf(this);\r\n\r\n if (index > -1) {\r\n this._animation.runtimeAnimations.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Apply the interpolated value to the target\r\n * @param currentValue defines the value computed by the animation\r\n * @param weight defines the weight to apply to this value (Defaults to 1.0)\r\n */\r\n public setValue(currentValue: any, weight: number) {\r\n if (this._targetIsArray) {\r\n for (let index = 0; index < this._target.length; index++) {\r\n const target = this._target[index];\r\n this._setValue(target, this._activeTargets[index], currentValue, weight, index);\r\n }\r\n return;\r\n }\r\n this._setValue(this._target, this._directTarget, currentValue, weight, 0);\r\n }\r\n\r\n private _getOriginalValues(targetIndex = 0) {\r\n let originalValue: any;\r\n const target = this._activeTargets[targetIndex];\r\n\r\n if (target.getLocalMatrix && this._targetPath === \"_matrix\") {\r\n // For bones\r\n originalValue = target.getLocalMatrix();\r\n } else {\r\n originalValue = target[this._targetPath];\r\n }\r\n\r\n if (originalValue && originalValue.clone) {\r\n this._originalValue[targetIndex] = originalValue.clone();\r\n } else {\r\n this._originalValue[targetIndex] = originalValue;\r\n }\r\n }\r\n\r\n private _registerTargetForLateAnimationBinding(runtimeAnimation: RuntimeAnimation, originalValue: any): void {\r\n const target = runtimeAnimation.target;\r\n this._scene._registeredForLateAnimationBindings.pushNoDuplicate(target);\r\n\r\n if (!target._lateAnimationHolders) {\r\n target._lateAnimationHolders = {};\r\n }\r\n\r\n if (!target._lateAnimationHolders[runtimeAnimation.targetPath]) {\r\n target._lateAnimationHolders[runtimeAnimation.targetPath] = {\r\n totalWeight: 0,\r\n totalAdditiveWeight: 0,\r\n animations: [],\r\n additiveAnimations: [],\r\n originalValue: originalValue,\r\n };\r\n }\r\n\r\n if (runtimeAnimation.isAdditive) {\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].additiveAnimations.push(runtimeAnimation);\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalAdditiveWeight += runtimeAnimation.weight;\r\n } else {\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].animations.push(runtimeAnimation);\r\n target._lateAnimationHolders[runtimeAnimation.targetPath].totalWeight += runtimeAnimation.weight;\r\n }\r\n }\r\n\r\n private _setValue(target: any, destination: any, currentValue: any, weight: number, targetIndex: number): void {\r\n // Set value\r\n this._currentActiveTarget = destination;\r\n\r\n this._weight = weight;\r\n\r\n if (this._enableBlending && this._blendingFactor <= 1.0) {\r\n if (!this._originalBlendValue) {\r\n const originalValue = destination[this._targetPath];\r\n\r\n if (originalValue.clone) {\r\n this._originalBlendValue = originalValue.clone();\r\n } else {\r\n this._originalBlendValue = originalValue;\r\n }\r\n }\r\n\r\n if (this._originalBlendValue.m) {\r\n // Matrix\r\n if (Animation.AllowMatrixDecomposeForInterpolation) {\r\n if (this._currentValue) {\r\n Matrix.DecomposeLerpToRef(this._originalBlendValue, currentValue, this._blendingFactor, this._currentValue);\r\n } else {\r\n this._currentValue = Matrix.DecomposeLerp(this._originalBlendValue, currentValue, this._blendingFactor);\r\n }\r\n } else {\r\n if (this._currentValue) {\r\n Matrix.LerpToRef(this._originalBlendValue, currentValue, this._blendingFactor, this._currentValue);\r\n } else {\r\n this._currentValue = Matrix.Lerp(this._originalBlendValue, currentValue, this._blendingFactor);\r\n }\r\n }\r\n } else {\r\n this._currentValue = Animation._UniversalLerp(this._originalBlendValue, currentValue, this._blendingFactor);\r\n }\r\n\r\n const blendingSpeed = target && target.animationPropertiesOverride ? target.animationPropertiesOverride.blendingSpeed : this._animation.blendingSpeed;\r\n this._blendingFactor += blendingSpeed;\r\n } else {\r\n if (!this._currentValue) {\r\n if (currentValue?.clone) {\r\n this._currentValue = currentValue.clone();\r\n } else {\r\n this._currentValue = currentValue;\r\n }\r\n } else if (this._currentValue.copyFrom) {\r\n if (currentValue !== null) {\r\n this._currentValue.copyFrom(currentValue);\r\n } else {\r\n this._currentValue = currentValue;\r\n }\r\n } else {\r\n this._currentValue = currentValue;\r\n }\r\n }\r\n\r\n if (weight !== -1.0) {\r\n this._registerTargetForLateAnimationBinding(this, this._originalValue[targetIndex]);\r\n } else {\r\n if (this._animationState.loopMode === Animation.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT) {\r\n if (this._currentValue.addToRef) {\r\n this._currentValue.addToRef(this._originalValue[targetIndex], destination[this._targetPath]);\r\n } else {\r\n destination[this._targetPath] = this._originalValue[targetIndex] + this._currentValue;\r\n }\r\n } else {\r\n destination[this._targetPath] = this._currentValue;\r\n }\r\n }\r\n\r\n if (target.markAsDirty) {\r\n target.markAsDirty(this._animation.targetProperty);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the loop pmode of the runtime animation\r\n * @returns Loop Mode\r\n */\r\n private _getCorrectLoopMode(): number | undefined {\r\n if (this._target && this._target.animationPropertiesOverride) {\r\n return this._target.animationPropertiesOverride.loopMode as number;\r\n }\r\n\r\n return this._animation.loopMode;\r\n }\r\n\r\n /**\r\n * Move the current animation to a given frame\r\n * @param frame defines the frame to move to\r\n * @param weight defines the weight to apply to the animation (-1.0 by default)\r\n */\r\n public goToFrame(frame: number, weight = -1): void {\r\n const keys = this._animation.getKeys();\r\n\r\n if (frame < keys[0].frame) {\r\n frame = keys[0].frame;\r\n } else if (frame > keys[keys.length - 1].frame) {\r\n frame = keys[keys.length - 1].frame;\r\n }\r\n\r\n // Need to reset animation events\r\n const events = this._events;\r\n if (events.length) {\r\n for (let index = 0; index < events.length; index++) {\r\n if (!events[index].onlyOnce) {\r\n // reset events in the future\r\n events[index].isDone = events[index].frame < frame;\r\n }\r\n }\r\n }\r\n\r\n this._currentFrame = frame;\r\n const currentValue = this._animation._interpolate(frame, this._animationState);\r\n\r\n this.setValue(currentValue, weight);\r\n }\r\n\r\n /**\r\n * @internal Internal use only\r\n */\r\n public _prepareForSpeedRatioChange(newSpeedRatio: number): void {\r\n const newAbsoluteFrame = (this._previousElapsedTime * (this._animation.framePerSecond * newSpeedRatio)) / 1000.0;\r\n\r\n this._absoluteFrameOffset = this._previousAbsoluteFrame - newAbsoluteFrame;\r\n }\r\n\r\n /**\r\n * Execute the current animation\r\n * @param elapsedTimeSinceAnimationStart defines the elapsed time (in milliseconds) since the animation was started\r\n * @param from defines the lower frame of the animation range\r\n * @param to defines the upper frame of the animation range\r\n * @param loop defines if the current animation must loop\r\n * @param speedRatio defines the current speed ratio\r\n * @param weight defines the weight of the animation (default is -1 so no weight)\r\n * @returns a boolean indicating if the animation is running\r\n */\r\n public animate(elapsedTimeSinceAnimationStart: number, from: number, to: number, loop: boolean, speedRatio: number, weight = -1.0): boolean {\r\n const animation = this._animation;\r\n const targetPropertyPath = animation.targetPropertyPath;\r\n if (!targetPropertyPath || targetPropertyPath.length < 1) {\r\n this._stopped = true;\r\n return false;\r\n }\r\n\r\n let returnValue = true;\r\n let currentFrame: number;\r\n const events = this._events;\r\n let frameRange = 0;\r\n\r\n if (!this._coreRuntimeAnimation) {\r\n // Check limits\r\n if (from < this._minFrame || from > this._maxFrame) {\r\n from = this._minFrame;\r\n }\r\n if (to < this._minFrame || to > this._maxFrame) {\r\n to = this._maxFrame;\r\n }\r\n\r\n frameRange = to - from;\r\n let offsetValue: any;\r\n\r\n // Compute the frame according to the elapsed time and the fps of the animation (\"from\" and \"to\" are not factored in!)\r\n let absoluteFrame = (elapsedTimeSinceAnimationStart * (animation.framePerSecond * speedRatio)) / 1000.0 + this._absoluteFrameOffset;\r\n let highLimitValue = 0;\r\n\r\n // Apply the yoyo function if required\r\n let yoyoLoop = false;\r\n const yoyoMode = loop && this._animationState.loopMode === Animation.ANIMATIONLOOPMODE_YOYO;\r\n if (yoyoMode) {\r\n const position = (absoluteFrame - from) / frameRange;\r\n\r\n // Apply the yoyo curve\r\n const sin = Math.sin(position * Math.PI);\r\n const yoyoPosition = Math.abs(sin);\r\n\r\n // Map the yoyo position back to the range\r\n absoluteFrame = yoyoPosition * frameRange + from;\r\n\r\n const direction = sin >= 0 ? 1 : -1;\r\n if (this._yoyoDirection !== direction) {\r\n yoyoLoop = true;\r\n }\r\n\r\n this._yoyoDirection = direction;\r\n }\r\n\r\n this._previousElapsedTime = elapsedTimeSinceAnimationStart;\r\n this._previousAbsoluteFrame = absoluteFrame;\r\n\r\n if (!loop && to >= from && ((absoluteFrame >= frameRange && speedRatio > 0) || (absoluteFrame <= 0 && speedRatio < 0))) {\r\n // If we are out of range and not looping get back to caller\r\n returnValue = false;\r\n highLimitValue = animation.evaluate(to);\r\n } else if (!loop && from >= to && ((absoluteFrame <= frameRange && speedRatio < 0) || (absoluteFrame >= 0 && speedRatio > 0))) {\r\n returnValue = false;\r\n highLimitValue = animation.evaluate(from);\r\n } else if (this._animationState.loopMode !== Animation.ANIMATIONLOOPMODE_CYCLE) {\r\n const keyOffset = to.toString() + from.toString();\r\n if (!this._offsetsCache[keyOffset]) {\r\n this._animationState.repeatCount = 0;\r\n this._animationState.loopMode = Animation.ANIMATIONLOOPMODE_CYCLE; // force a specific codepath in animation._interpolate()!\r\n const fromValue = animation._interpolate(from, this._animationState);\r\n const toValue = animation._interpolate(to, this._animationState);\r\n\r\n this._animationState.loopMode = this._getCorrectLoopMode();\r\n switch (animation.dataType) {\r\n // Float\r\n case Animation.ANIMATIONTYPE_FLOAT:\r\n this._offsetsCache[keyOffset] = toValue - fromValue;\r\n break;\r\n // Quaternion\r\n case Animation.ANIMATIONTYPE_QUATERNION:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Vector3\r\n case Animation.ANIMATIONTYPE_VECTOR3:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Vector2\r\n case Animation.ANIMATIONTYPE_VECTOR2:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Size\r\n case Animation.ANIMATIONTYPE_SIZE:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n // Color3\r\n case Animation.ANIMATIONTYPE_COLOR3:\r\n this._offsetsCache[keyOffset] = toValue.subtract(fromValue);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this._highLimitsCache[keyOffset] = toValue;\r\n }\r\n\r\n highLimitValue = this._highLimitsCache[keyOffset];\r\n offsetValue = this._offsetsCache[keyOffset];\r\n }\r\n\r\n if (offsetValue === undefined) {\r\n switch (animation.dataType) {\r\n // Float\r\n case Animation.ANIMATIONTYPE_FLOAT:\r\n offsetValue = 0;\r\n break;\r\n // Quaternion\r\n case Animation.ANIMATIONTYPE_QUATERNION:\r\n offsetValue = _StaticOffsetValueQuaternion;\r\n break;\r\n // Vector3\r\n case Animation.ANIMATIONTYPE_VECTOR3:\r\n offsetValue = _StaticOffsetValueVector3;\r\n break;\r\n // Vector2\r\n case Animation.ANIMATIONTYPE_VECTOR2:\r\n offsetValue = _StaticOffsetValueVector2;\r\n break;\r\n // Size\r\n case Animation.ANIMATIONTYPE_SIZE:\r\n offsetValue = _StaticOffsetValueSize;\r\n break;\r\n // Color3\r\n case Animation.ANIMATIONTYPE_COLOR3:\r\n offsetValue = _StaticOffsetValueColor3;\r\n break;\r\n case Animation.ANIMATIONTYPE_COLOR4:\r\n offsetValue = _StaticOffsetValueColor4;\r\n break;\r\n }\r\n }\r\n\r\n // Compute value\r\n\r\n if (this._host && this._host.syncRoot) {\r\n // If we must sync with an animatable, calculate the current frame based on the frame of the root animatable\r\n const syncRoot = this._host.syncRoot;\r\n const hostNormalizedFrame = (syncRoot.masterFrame - syncRoot.fromFrame) / (syncRoot.toFrame - syncRoot.fromFrame);\r\n currentFrame = from + frameRange * hostNormalizedFrame;\r\n } else {\r\n if ((absoluteFrame > 0 && from > to) || (absoluteFrame < 0 && from < to)) {\r\n currentFrame = returnValue && frameRange !== 0 ? to + (absoluteFrame % frameRange) : from;\r\n } else {\r\n currentFrame = returnValue && frameRange !== 0 ? from + (absoluteFrame % frameRange) : to;\r\n }\r\n }\r\n\r\n // Reset event/state if looping\r\n if ((!yoyoMode && ((speedRatio > 0 && this.currentFrame > currentFrame) || (speedRatio < 0 && this.currentFrame < currentFrame))) || (yoyoMode && yoyoLoop)) {\r\n this._onLoop();\r\n\r\n // Need to reset animation events\r\n for (let index = 0; index < events.length; index++) {\r\n if (!events[index].onlyOnce) {\r\n // reset event, the animation is looping\r\n events[index].isDone = false;\r\n }\r\n }\r\n\r\n this._animationState.key = speedRatio > 0 ? 0 : animation.getKeys().length - 1;\r\n }\r\n this._currentFrame = currentFrame;\r\n this._animationState.repeatCount = frameRange === 0 ? 0 : (absoluteFrame / frameRange) >> 0;\r\n this._animationState.highLimitValue = highLimitValue;\r\n this._animationState.offsetValue = offsetValue;\r\n } else {\r\n frameRange = to - from;\r\n currentFrame = this._coreRuntimeAnimation.currentFrame;\r\n this._currentFrame = currentFrame;\r\n this._animationState.repeatCount = this._coreRuntimeAnimation._animationState.repeatCount;\r\n this._animationState.highLimitValue = this._coreRuntimeAnimation._animationState.highLimitValue;\r\n this._animationState.offsetValue = this._coreRuntimeAnimation._animationState.offsetValue;\r\n }\r\n\r\n const currentValue = animation._interpolate(currentFrame, this._animationState);\r\n\r\n // Set value\r\n this.setValue(currentValue, weight);\r\n\r\n // Check events\r\n if (events.length) {\r\n for (let index = 0; index < events.length; index++) {\r\n // Make sure current frame has passed event frame and that event frame is within the current range\r\n // Also, handle both forward and reverse animations\r\n if (\r\n (frameRange >= 0 && currentFrame >= events[index].frame && events[index].frame >= from) ||\r\n (frameRange < 0 && currentFrame <= events[index].frame && events[index].frame <= from)\r\n ) {\r\n const event = events[index];\r\n if (!event.isDone) {\r\n // If event should be done only once, remove it.\r\n if (event.onlyOnce) {\r\n events.splice(index, 1);\r\n index--;\r\n }\r\n event.isDone = true;\r\n event.action(currentFrame);\r\n } // Don't do anything if the event has already been done.\r\n }\r\n }\r\n }\r\n\r\n if (!returnValue) {\r\n this._stopped = true;\r\n }\r\n\r\n return returnValue;\r\n }\r\n}\r\n"]}