@directivegames/genesys.js 3.1.24

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 (1501) hide show
  1. package/README.md +123 -0
  2. package/assets/animation-profiles/mixamo.skeleton-profile.json +63 -0
  3. package/assets/animation-profiles/rigify.skeleton-profile.json +61 -0
  4. package/assets/character/SKM_SB_MediumHuman.glb +0 -0
  5. package/assets/character/config/AnimationStateMachineComponent.md +107 -0
  6. package/assets/character/config/mannequin-anim.json +53 -0
  7. package/assets/character/mannequin.glb +0 -0
  8. package/assets/character/mannequinG.glb +0 -0
  9. package/assets/default.genesys-scene +194 -0
  10. package/assets/models/PickupActors/SM_Pickup_Health.glb +0 -0
  11. package/assets/models/PickupActors/SM_Pickup_Station.glb +0 -0
  12. package/assets/models/SM_Capsule.glb +0 -0
  13. package/assets/models/SM_ChamferCube.glb +0 -0
  14. package/assets/models/SM_Cone.glb +0 -0
  15. package/assets/models/SM_Cube.glb +0 -0
  16. package/assets/models/SM_Cylinder.glb +0 -0
  17. package/assets/models/SM_Plane.glb +0 -0
  18. package/assets/models/SM_Pyramid.glb +0 -0
  19. package/assets/models/SM_Sphere.glb +0 -0
  20. package/assets/models/SM_Torus.glb +0 -0
  21. package/assets/models/SM_Wedge.glb +0 -0
  22. package/assets/models/Weapons/SM_ShotGun_01.glb +0 -0
  23. package/assets/models/demo/Characters/Knightdude.glb +0 -0
  24. package/assets/models/demo/Characters/Spacedude.glb +0 -0
  25. package/assets/models/demo/LowPoly/SM_Bush01.glb +0 -0
  26. package/assets/models/demo/LowPoly/SM_Bush02.glb +0 -0
  27. package/assets/models/demo/LowPoly/SM_Flower01.glb +0 -0
  28. package/assets/models/demo/LowPoly/SM_Flower02.glb +0 -0
  29. package/assets/models/demo/LowPoly/SM_Flower03.glb +0 -0
  30. package/assets/models/demo/LowPoly/SM_GeneratedLandscape.glb +0 -0
  31. package/assets/models/demo/LowPoly/SM_Grass01.glb +0 -0
  32. package/assets/models/demo/LowPoly/SM_Grass02.glb +0 -0
  33. package/assets/models/demo/LowPoly/SM_Grass03.glb +0 -0
  34. package/assets/models/demo/LowPoly/SM_Mushroom01.glb +0 -0
  35. package/assets/models/demo/LowPoly/SM_Mushroom02.glb +0 -0
  36. package/assets/models/demo/LowPoly/SM_MushroomCluster01.glb +0 -0
  37. package/assets/models/demo/LowPoly/SM_MushroomCluster02.glb +0 -0
  38. package/assets/models/demo/LowPoly/SM_Rock01.glb +0 -0
  39. package/assets/models/demo/LowPoly/SM_Rock02.glb +0 -0
  40. package/assets/models/demo/LowPoly/SM_Rock03.glb +0 -0
  41. package/assets/models/demo/LowPoly/SM_Rock04.glb +0 -0
  42. package/assets/models/demo/LowPoly/SM_Tree01.glb +0 -0
  43. package/assets/models/demo/LowPoly/SM_Tree02.glb +0 -0
  44. package/assets/models/demo/LowPoly/SM_Tree03.glb +0 -0
  45. package/assets/models/demo/LowPoly/SM_Tree04.glb +0 -0
  46. package/assets/models/demo/LowPoly/SM_TreeStump.glb +0 -0
  47. package/assets/models/demo/LowPoly/SM_TreeTrunk.glb +0 -0
  48. package/assets/models/demo/LowPoly/low_poly_ship_wreck.glb +0 -0
  49. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block.glb +0 -0
  50. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Dirt.glb +0 -0
  51. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Grass02.glb +0 -0
  52. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Grass02Patch.glb +0 -0
  53. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Gravel.glb +0 -0
  54. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Lava.glb +0 -0
  55. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_LavaStone.glb +0 -0
  56. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Sand.glb +0 -0
  57. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Stone.glb +0 -0
  58. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_StoneA.glb +0 -0
  59. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_StoneC.glb +0 -0
  60. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Wall.glb +0 -0
  61. package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Water.glb +0 -0
  62. package/assets/models/demo/SandboxAsset/Characters/SKM_Arachnids_Large_Spider.glb +0 -0
  63. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Adventurer_F01.glb +0 -0
  64. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Adventurer_M01.glb +0 -0
  65. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aviator_F01.glb +0 -0
  66. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aviator_M01.glb +0 -0
  67. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aztec_F01.glb +0 -0
  68. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aztec_M01.glb +0 -0
  69. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_MediumHuman.glb +0 -0
  70. package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Shaman.glb +0 -0
  71. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_01.glb +0 -0
  72. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_02.glb +0 -0
  73. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_03.glb +0 -0
  74. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_04.glb +0 -0
  75. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_01.glb +0 -0
  76. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_02.glb +0 -0
  77. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_03.glb +0 -0
  78. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_04.glb +0 -0
  79. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_05.glb +0 -0
  80. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_06.glb +0 -0
  81. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_07.glb +0 -0
  82. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_SmallCloud01.glb +0 -0
  83. package/assets/models/demo/SandboxAsset/Clouds/SM_SB_SmallCloud_02.glb +0 -0
  84. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_AztecStatue.glb +0 -0
  85. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_01.glb +0 -0
  86. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_02.glb +0 -0
  87. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_03.glb +0 -0
  88. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_Broken_01.glb +0 -0
  89. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_Broken_02.glb +0 -0
  90. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Crystal_Calendar_01.glb +0 -0
  91. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Crystal_Calendar_02.glb +0 -0
  92. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Crystal_Skull.glb +0 -0
  93. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Goldpile_01.glb +0 -0
  94. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Goldpile_02.glb +0 -0
  95. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Rubble_Skeleton_01.glb +0 -0
  96. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_TreasureChest.glb +0 -0
  97. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_TreasureChestSmall.glb +0 -0
  98. package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Wall_Deco_01.glb +0 -0
  99. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_AngledWall.glb +0 -0
  100. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Arch.glb +0 -0
  101. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Beams.glb +0 -0
  102. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Beams02.glb +0 -0
  103. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Corner.glb +0 -0
  104. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_CornerB.glb +0 -0
  105. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Floor.glb +0 -0
  106. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Floor2.glb +0 -0
  107. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Floor3.glb +0 -0
  108. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_GrowingTree.glb +0 -0
  109. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_HalfFloor.glb +0 -0
  110. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_IronBucket.glb +0 -0
  111. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Pillar.glb +0 -0
  112. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Railing.glb +0 -0
  113. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_RoofWindow.glb +0 -0
  114. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Stairs01.glb +0 -0
  115. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Statue.glb +0 -0
  116. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall.glb +0 -0
  117. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall02.glb +0 -0
  118. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall03.glb +0 -0
  119. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall03B.glb +0 -0
  120. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall04.glb +0 -0
  121. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_WallB.glb +0 -0
  122. package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_WallTrim.glb +0 -0
  123. package/assets/models/demo/SandboxAsset/Floors/SM_SB_Floor_01.glb +0 -0
  124. package/assets/models/demo/SandboxAsset/Floors/SM_SB_Floor_02.glb +0 -0
  125. package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower01_ColorA.glb +0 -0
  126. package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower01_ColorB.glb +0 -0
  127. package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower02_ColorA.glb +0 -0
  128. package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower02_ColorB.glb +0 -0
  129. package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower03_ColorA.glb +0 -0
  130. package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower03_ColorB.glb +0 -0
  131. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Beach_Grass.glb +0 -0
  132. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Birgaradier_Tree.glb +0 -0
  133. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Cactus_Long.glb +0 -0
  134. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_ElephantEar01.glb +0 -0
  135. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Fern01.glb +0 -0
  136. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_GrassPatch.glb +0 -0
  137. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Growing_Plant.glb +0 -0
  138. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Leaf_bush01.glb +0 -0
  139. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Middle_Moss.glb +0 -0
  140. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Oracle_Tree.glb +0 -0
  141. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Plant01.glb +0 -0
  142. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Tree01.glb +0 -0
  143. package/assets/models/demo/SandboxAsset/Foliage/SM_SB_plant.glb +0 -0
  144. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Arrow_large_01.glb +0 -0
  145. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Arrow_large_02.glb +0 -0
  146. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_HangingBridgeEnd_01.glb +0 -0
  147. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_HangingBridgeEnd_02.glb +0 -0
  148. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_HangingBridgeMiddle.glb +0 -0
  149. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_MovingPlatform_01.glb +0 -0
  150. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_MovingWall.glb +0 -0
  151. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_ObsidianTrap.glb +0 -0
  152. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Scull_Arrowshooter01.glb +0 -0
  153. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Scull_Arrowshooter02.glb +0 -0
  154. package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Snakepit.glb +0 -0
  155. package/assets/models/demo/SandboxAsset/Rocks/SM_SB_Rock01.glb +0 -0
  156. package/assets/models/demo/SandboxAsset/Rocks/SM_SB_Rock02.glb +0 -0
  157. package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Corner_L.glb +0 -0
  158. package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Corner_R.glb +0 -0
  159. package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Edge.glb +0 -0
  160. package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_End01.glb +0 -0
  161. package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Module.glb +0 -0
  162. package/assets/models/demo/SandboxAsset/Trees/SM_SB_CaribbeanPine_01.glb +0 -0
  163. package/assets/models/demo/SandboxAsset/Trees/SM_SB_CaribbeanPine_02.glb +0 -0
  164. package/assets/models/demo/SandboxAsset/Trees/SM_SB_CoconutTree01.glb +0 -0
  165. package/assets/models/demo/SandboxAsset/Trees/SM_SB_CoconutTree02.glb +0 -0
  166. package/assets/models/demo/SandboxAsset/Trees/SM_SB_KapokTree_01.glb +0 -0
  167. package/assets/models/demo/SandboxAsset/Trees/SM_SB_KapokTree_02.glb +0 -0
  168. package/assets/models/demo/SandboxAsset/Trees/SM_SB_QueenPalm_01.glb +0 -0
  169. package/assets/models/demo/SandboxAsset/Trees/SM_SB_QueenPalm_02.glb +0 -0
  170. package/assets/models/demo/SandboxAsset/Trees/SM_SB_TreeTrunk.glb +0 -0
  171. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimA.glb +0 -0
  172. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimB.glb +0 -0
  173. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimC.glb +0 -0
  174. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimD.glb +0 -0
  175. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimE.glb +0 -0
  176. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimF.glb +0 -0
  177. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimG.glb +0 -0
  178. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimH.glb +0 -0
  179. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimI.glb +0 -0
  180. package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimJ.glb +0 -0
  181. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Aztec_Wall_01.glb +0 -0
  182. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Aztec_Wall_02.glb +0 -0
  183. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Brick01.glb +0 -0
  184. package/assets/models/demo/SandboxAsset/Walls/SM_SB_BrickBlock01.glb +0 -0
  185. package/assets/models/demo/SandboxAsset/Walls/SM_SB_BrickBlock02.glb +0 -0
  186. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Vineswall01.glb +0 -0
  187. package/assets/models/demo/SandboxAsset/Walls/SM_SB_WallDecoA.glb +0 -0
  188. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_01B_128x96.glb +0 -0
  189. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_01_128x96.glb +0 -0
  190. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02B_128x96.glb +0 -0
  191. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02C_128x96.glb +0 -0
  192. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02D_128x96.glb +0 -0
  193. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02_128x96.glb +0 -0
  194. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_03B_128x96.glb +0 -0
  195. package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_03_128x96.glb +0 -0
  196. package/assets/prefabs/actors/demo_health_pickup.prefab.json +114 -0
  197. package/assets/prefabs/actors/demo_health_pickup_spawner.prefab.json +102 -0
  198. package/assets/prefabs/actors/test.prefab.json +87 -0
  199. package/assets/shaders/M_Anisotropy_Brushed.material.json +89 -0
  200. package/assets/shaders/M_Anisotropy_Radial.material.json +55 -0
  201. package/assets/shaders/M_Chrome.material.json +18 -0
  202. package/assets/shaders/M_Emissive_Blue.material.json +26 -0
  203. package/assets/shaders/M_Glass_Frosted.material.json +24 -0
  204. package/assets/shaders/M_Glass_ThinFilm.material.json +23 -0
  205. package/assets/shaders/M_Glossy_Grey.material.json +20 -0
  206. package/assets/shaders/M_Matte_White.material.json +20 -0
  207. package/assets/shaders/M_Metal_Anisotropic_Gold.material.json +31 -0
  208. package/assets/shaders/M_Metal_Anisotropic_Silver.material.json +31 -0
  209. package/assets/shaders/M_Metal_Brushed.material.json +61 -0
  210. package/assets/shaders/M_Paint_Clearcoat.material.json +28 -0
  211. package/assets/shaders/M_Stone_Mossy.material.json +153 -0
  212. package/assets/shaders/M_Stone_Mossy_Snow.material.json +151 -0
  213. package/assets/shaders/M_Toon_Anime.material.json +49 -0
  214. package/assets/shaders/M_Toon_Anime_5Step.material.json +45 -0
  215. package/assets/shaders/M_Toon_Cel.material.json +49 -0
  216. package/assets/shaders/M_Transmission.material.json +42 -0
  217. package/assets/shaders/M_Velvet_Blue.material.json +33 -0
  218. package/assets/shaders/M_Velvet_Purple.material.json +30 -0
  219. package/assets/shaders/M_Velvet_Red.material.json +33 -0
  220. package/assets/shaders/M_Wax_SSSLite.material.json +55 -0
  221. package/assets/shaders/matcap/M_Matcap_Blue.material.json +27 -0
  222. package/assets/shaders/matcap/M_Matcap_Rainbow.material.json +26 -0
  223. package/assets/shaders/matcap/M_Matcap_White.material.json +28 -0
  224. package/assets/sounds/birds.mp3 +0 -0
  225. package/assets/sounds/explosion.mp3 +0 -0
  226. package/assets/sounds/game-gun-short.mp3 +0 -0
  227. package/assets/sounds/laser.mp3 +0 -0
  228. package/assets/sounds/pickup.mp3 +0 -0
  229. package/assets/sounds/tuba.mp3 +0 -0
  230. package/assets/textures/Checkerboard.png +0 -0
  231. package/assets/textures/Grid_10x10.png +0 -0
  232. package/assets/textures/T_AnisotropyMap_Radial.png +0 -0
  233. package/assets/textures/T_Anisotropy_Roughness.png +0 -0
  234. package/assets/textures/T_Gradient.png +0 -0
  235. package/assets/textures/T_Grid_01.png +0 -0
  236. package/assets/textures/T_Grid_01.texture.json +7 -0
  237. package/assets/textures/T_Metal_Brushed_Normal.png +0 -0
  238. package/assets/textures/T_Normal.png +0 -0
  239. package/assets/textures/T_Stone_Mossy_AmbientOcclusion.jpg +0 -0
  240. package/assets/textures/T_Stone_Mossy_BaseColor.jpg +0 -0
  241. package/assets/textures/T_Stone_Mossy_Normal.jpg +0 -0
  242. package/assets/textures/T_Stone_Mossy_Roughness.jpg +0 -0
  243. package/assets/textures/T_Stone_Mossy_Snow_AmbientOcclusion.jpg +0 -0
  244. package/assets/textures/T_Stone_Mossy_Snow_BaseColor.jpg +0 -0
  245. package/assets/textures/T_Stone_Mossy_Snow_Normal.jpg +0 -0
  246. package/assets/textures/T_Stone_Mossy_Snow_Roughness.jpg +0 -0
  247. package/assets/textures/T_Toon_Anime_4Step.png +0 -0
  248. package/assets/textures/T_Toon_Anime_5Step.png +0 -0
  249. package/assets/textures/T_Toon_Cel_2Step.png +0 -0
  250. package/assets/textures/T_Wax_Thickness.png +0 -0
  251. package/assets/textures/matcaps/T_Matcap_Rainbow.png.png +0 -0
  252. package/assets/textures/matcaps/beige.png +0 -0
  253. package/assets/textures/matcaps/black.png +0 -0
  254. package/assets/textures/matcaps/blue.png +0 -0
  255. package/assets/textures/matcaps/brown.png +0 -0
  256. package/assets/textures/matcaps/emeraldGreen.png +0 -0
  257. package/assets/textures/matcaps/gold.png +0 -0
  258. package/assets/textures/matcaps/gray.png +0 -0
  259. package/assets/textures/matcaps/green.png +0 -0
  260. package/assets/textures/matcaps/metal.png +0 -0
  261. package/assets/textures/matcaps/orange.png +0 -0
  262. package/assets/textures/matcaps/purple.png +0 -0
  263. package/assets/textures/matcaps/red.png +0 -0
  264. package/assets/textures/matcaps/white.png +0 -0
  265. package/assets/textures/matcaps/yellow.png +0 -0
  266. package/assets/textures/skybox/citrus_orchard_road_puresky_2k.hdr +0 -0
  267. package/assets/textures/skybox/venice_sunset_4k.hdr +0 -0
  268. package/assets/ui/styles/ammo-counter.css +58 -0
  269. package/assets/ui/styles/compass.css +54 -0
  270. package/assets/ui/styles/controls-help.css +21 -0
  271. package/assets/ui/styles/crosshair.css +51 -0
  272. package/assets/ui/styles/inventory-bar.css +112 -0
  273. package/assets/ui/styles/inventory-grid.css +257 -0
  274. package/assets/ui/styles/main-menu.css +59 -0
  275. package/assets/ui/styles/minimap.css +12 -0
  276. package/assets/ui/styles/number-display.css +18 -0
  277. package/assets/ui/styles/progress-bar.css +199 -0
  278. package/assets/ui/styles/reload-indicator.css +76 -0
  279. package/assets/ui/templates/ammo-counter.html +7 -0
  280. package/assets/ui/templates/compass.html +6 -0
  281. package/assets/ui/templates/controls-help.html +9 -0
  282. package/assets/ui/templates/crosshair.html +1 -0
  283. package/assets/ui/templates/inventory-bar.html +38 -0
  284. package/assets/ui/templates/inventory-grid.html +9 -0
  285. package/assets/ui/templates/main-menu.html +10 -0
  286. package/assets/ui/templates/minimap.html +3 -0
  287. package/assets/ui/templates/number-display.html +3 -0
  288. package/assets/ui/templates/progress-bar.html +7 -0
  289. package/assets/ui/templates/reload-indicator.html +13 -0
  290. package/dist/games/animation-demo.d.ts +21 -0
  291. package/dist/games/animation-demo.js +398 -0
  292. package/dist/games/animation-retarget-demo.d.ts +44 -0
  293. package/dist/games/animation-retarget-demo.js +574 -0
  294. package/dist/games/behavior-tree-demo.d.ts +100 -0
  295. package/dist/games/behavior-tree-demo.js +1656 -0
  296. package/dist/games/character_animation.d.ts +15 -0
  297. package/dist/games/character_animation.js +170 -0
  298. package/dist/games/collision-demo.d.ts +4 -0
  299. package/dist/games/collision-demo.js +134 -0
  300. package/dist/games/deprecated/advanced-grid-demo.d.ts +18 -0
  301. package/dist/games/deprecated/advanced-grid-demo.js +305 -0
  302. package/dist/games/deprecated/airplane-demo.d.ts +10 -0
  303. package/dist/games/deprecated/airplane-demo.js +136 -0
  304. package/dist/games/deprecated/character-controller.d.ts +6 -0
  305. package/dist/games/deprecated/character-controller.js +144 -0
  306. package/dist/games/deprecated/chase-game.d.ts +17 -0
  307. package/dist/games/deprecated/chase-game.js +269 -0
  308. package/dist/games/deprecated/collision-config.d.ts +7 -0
  309. package/dist/games/deprecated/collision-config.js +295 -0
  310. package/dist/games/deprecated/door-demo.d.ts +30 -0
  311. package/dist/games/deprecated/door-demo.js +562 -0
  312. package/dist/games/deprecated/fps-demo.d.ts +9 -0
  313. package/dist/games/deprecated/fps-demo.js +119 -0
  314. package/dist/games/deprecated/fps-shotgun-demo.d.ts +19 -0
  315. package/dist/games/deprecated/fps-shotgun-demo.js +221 -0
  316. package/dist/games/deprecated/index.d.ts +25 -0
  317. package/dist/games/deprecated/index.js +26 -0
  318. package/dist/games/deprecated/lightmapping-demo.d.ts +135 -0
  319. package/dist/games/deprecated/lightmapping-demo.js +1344 -0
  320. package/dist/games/deprecated/lights-demo.d.ts +93 -0
  321. package/dist/games/deprecated/lights-demo.js +815 -0
  322. package/dist/games/deprecated/matcap-demo.d.ts +54 -0
  323. package/dist/games/deprecated/matcap-demo.js +788 -0
  324. package/dist/games/deprecated/material-demo-2.d.ts +14 -0
  325. package/dist/games/deprecated/material-demo-2.js +521 -0
  326. package/dist/games/deprecated/material-demo.d.ts +8 -0
  327. package/dist/games/deprecated/material-demo.js +177 -0
  328. package/dist/games/deprecated/memory-leak-test.d.ts +6 -0
  329. package/dist/games/deprecated/memory-leak-test.js +20 -0
  330. package/dist/games/deprecated/model-stress-test.d.ts +10 -0
  331. package/dist/games/deprecated/model-stress-test.js +116 -0
  332. package/dist/games/deprecated/multiplayer-demo.d.ts +13 -0
  333. package/dist/games/deprecated/multiplayer-demo.js +377 -0
  334. package/dist/games/deprecated/physics-demo.d.ts +10 -0
  335. package/dist/games/deprecated/physics-demo.js +200 -0
  336. package/dist/games/deprecated/shadow-demo.d.ts +25 -0
  337. package/dist/games/deprecated/shadow-demo.js +402 -0
  338. package/dist/games/deprecated/shooting-demo.d.ts +19 -0
  339. package/dist/games/deprecated/shooting-demo.js +338 -0
  340. package/dist/games/deprecated/skybox-demo.d.ts +35 -0
  341. package/dist/games/deprecated/skybox-demo.js +323 -0
  342. package/dist/games/deprecated/sound-demo.d.ts +11 -0
  343. package/dist/games/deprecated/sound-demo.js +125 -0
  344. package/dist/games/deprecated/timer-demo.d.ts +11 -0
  345. package/dist/games/deprecated/timer-demo.js +150 -0
  346. package/dist/games/deprecated/voxel-demo.d.ts +5 -0
  347. package/dist/games/deprecated/voxel-demo.js +41 -0
  348. package/dist/games/deprecated/world-commands.d.ts +8 -0
  349. package/dist/games/deprecated/world-commands.js +168 -0
  350. package/dist/games/deprecated/world-loading.d.ts +6 -0
  351. package/dist/games/deprecated/world-loading.js +86 -0
  352. package/dist/games/examples/fps-advanced/const.d.ts +171 -0
  353. package/dist/games/examples/fps-advanced/const.js +116 -0
  354. package/dist/games/examples/fps-advanced/enemies.d.ts +21 -0
  355. package/dist/games/examples/fps-advanced/enemies.js +182 -0
  356. package/dist/games/examples/fps-advanced/game-mode.d.ts +53 -0
  357. package/dist/games/examples/fps-advanced/game-mode.js +353 -0
  358. package/dist/games/examples/fps-advanced/game.d.ts +9 -0
  359. package/dist/games/examples/fps-advanced/game.js +58 -0
  360. package/dist/games/examples/fps-advanced/pickups.d.ts +36 -0
  361. package/dist/games/examples/fps-advanced/pickups.js +225 -0
  362. package/dist/games/examples/fps-advanced/player.d.ts +12 -0
  363. package/dist/games/examples/fps-advanced/player.js +110 -0
  364. package/dist/games/examples/fps-advanced/ui/endgame-ui.d.ts +21 -0
  365. package/dist/games/examples/fps-advanced/ui/endgame-ui.js +291 -0
  366. package/dist/games/examples/fps-advanced/ui/game-hud.d.ts +17 -0
  367. package/dist/games/examples/fps-advanced/ui/game-hud.js +225 -0
  368. package/dist/games/examples/fps-advanced/ui/menu-ui.d.ts +13 -0
  369. package/dist/games/examples/fps-advanced/ui/menu-ui.js +224 -0
  370. package/dist/games/examples/fps-advanced/ui/weapon-hud.d.ts +27 -0
  371. package/dist/games/examples/fps-advanced/ui/weapon-hud.js +259 -0
  372. package/dist/games/examples/fps-advanced/weapons.d.ts +14 -0
  373. package/dist/games/examples/fps-advanced/weapons.js +173 -0
  374. package/dist/games/examples/index.d.ts +5 -0
  375. package/dist/games/examples/index.js +6 -0
  376. package/dist/games/examples/plugin-demo/game.d.ts +7 -0
  377. package/dist/games/examples/plugin-demo/game.js +168 -0
  378. package/dist/games/examples/plugin-demo/plugins/dynamic-lighting.d.ts +8 -0
  379. package/dist/games/examples/plugin-demo/plugins/dynamic-lighting.js +156 -0
  380. package/dist/games/examples/plugin-demo/plugins/instanced-forest.d.ts +7 -0
  381. package/dist/games/examples/plugin-demo/plugins/instanced-forest.js +194 -0
  382. package/dist/games/examples/plugin-demo/plugins/particle-fountain.d.ts +7 -0
  383. package/dist/games/examples/plugin-demo/plugins/particle-fountain.js +64 -0
  384. package/dist/games/examples/plugin-demo/plugins/physics-playground.d.ts +7 -0
  385. package/dist/games/examples/plugin-demo/plugins/physics-playground.js +185 -0
  386. package/dist/games/examples/plugin-demo/plugins/robot-follower.d.ts +7 -0
  387. package/dist/games/examples/plugin-demo/plugins/robot-follower.js +347 -0
  388. package/dist/games/examples/plugin-demo/plugins/scatter-models.d.ts +7 -0
  389. package/dist/games/examples/plugin-demo/plugins/scatter-models.js +70 -0
  390. package/dist/games/examples/plugin-demo/plugins/simple-cube.d.ts +7 -0
  391. package/dist/games/examples/plugin-demo/plugins/simple-cube.js +44 -0
  392. package/dist/games/examples/plugin-demo/plugins/tic-tac-toe.d.ts +8 -0
  393. package/dist/games/examples/plugin-demo/plugins/tic-tac-toe.js +526 -0
  394. package/dist/games/examples/plugin-demo/plugins/wobbling-sphere.d.ts +7 -0
  395. package/dist/games/examples/plugin-demo/plugins/wobbling-sphere.js +63 -0
  396. package/dist/games/examples/side-scroller-advanced/const.d.ts +97 -0
  397. package/dist/games/examples/side-scroller-advanced/const.js +82 -0
  398. package/dist/games/examples/side-scroller-advanced/game-mode.d.ts +54 -0
  399. package/dist/games/examples/side-scroller-advanced/game-mode.js +351 -0
  400. package/dist/games/examples/side-scroller-advanced/game.d.ts +9 -0
  401. package/dist/games/examples/side-scroller-advanced/game.js +70 -0
  402. package/dist/games/examples/side-scroller-advanced/level-generator.d.ts +68 -0
  403. package/dist/games/examples/side-scroller-advanced/level-generator.js +366 -0
  404. package/dist/games/examples/side-scroller-advanced/pickups.d.ts +18 -0
  405. package/dist/games/examples/side-scroller-advanced/pickups.js +147 -0
  406. package/dist/games/examples/side-scroller-advanced/player.d.ts +5 -0
  407. package/dist/games/examples/side-scroller-advanced/player.js +104 -0
  408. package/dist/games/examples/side-scroller-advanced/ui/endgame-ui.d.ts +16 -0
  409. package/dist/games/examples/side-scroller-advanced/ui/endgame-ui.js +290 -0
  410. package/dist/games/examples/side-scroller-advanced/ui/game-hud.d.ts +21 -0
  411. package/dist/games/examples/side-scroller-advanced/ui/game-hud.js +265 -0
  412. package/dist/games/examples/side-scroller-advanced/ui/menu-ui.d.ts +13 -0
  413. package/dist/games/examples/side-scroller-advanced/ui/menu-ui.js +222 -0
  414. package/dist/games/examples/vehicle/base-vehicle.d.ts +30 -0
  415. package/dist/games/examples/vehicle/base-vehicle.js +155 -0
  416. package/dist/games/examples/vehicle/game.d.ts +11 -0
  417. package/dist/games/examples/vehicle/game.js +140 -0
  418. package/dist/games/examples/vehicle/mesh-vehicle.d.ts +19 -0
  419. package/dist/games/examples/vehicle/mesh-vehicle.js +194 -0
  420. package/dist/games/examples/vehicle/player.d.ts +9 -0
  421. package/dist/games/examples/vehicle/player.js +87 -0
  422. package/dist/games/examples/vehicle/primitive-vehicle.d.ts +21 -0
  423. package/dist/games/examples/vehicle/primitive-vehicle.js +269 -0
  424. package/dist/games/examples/vr-game/VRAttachableCube.d.ts +8 -0
  425. package/dist/games/examples/vr-game/VRAttachableCube.js +41 -0
  426. package/dist/games/examples/vr-game/VRInteractableCylinder.d.ts +10 -0
  427. package/dist/games/examples/vr-game/VRInteractableCylinder.js +76 -0
  428. package/dist/games/examples/vr-game/VRPressableButton.d.ts +24 -0
  429. package/dist/games/examples/vr-game/VRPressableButton.js +135 -0
  430. package/dist/games/examples/vr-game/VRProjectileActor.d.ts +19 -0
  431. package/dist/games/examples/vr-game/VRProjectileActor.js +75 -0
  432. package/dist/games/examples/vr-game/VRRifleActor.d.ts +16 -0
  433. package/dist/games/examples/vr-game/VRRifleActor.js +142 -0
  434. package/dist/games/examples/vr-game/game.d.ts +9 -0
  435. package/dist/games/examples/vr-game/game.js +56 -0
  436. package/dist/games/examples/vr-game/index.d.ts +5 -0
  437. package/dist/games/examples/vr-game/index.js +9 -0
  438. package/dist/games/examples/vr-game/scene.d.ts +5 -0
  439. package/dist/games/examples/vr-game/scene.js +83 -0
  440. package/dist/games/hand-tracking-demo.d.ts +10 -0
  441. package/dist/games/hand-tracking-demo.js +65 -0
  442. package/dist/games/index.d.ts +21 -0
  443. package/dist/games/index.js +22 -0
  444. package/dist/games/instanced-mesh-demo.d.ts +45 -0
  445. package/dist/games/instanced-mesh-demo.js +416 -0
  446. package/dist/games/manifold-demo.d.ts +6 -0
  447. package/dist/games/manifold-demo.js +44 -0
  448. package/dist/games/navigation-demo.d.ts +30 -0
  449. package/dist/games/navigation-demo.js +336 -0
  450. package/dist/games/navmesh-primitives-demo.d.ts +167 -0
  451. package/dist/games/navmesh-primitives-demo.js +1105 -0
  452. package/dist/games/performance-test-demo.d.ts +13 -0
  453. package/dist/games/performance-test-demo.js +214 -0
  454. package/dist/games/postprocess-demo.d.ts +46 -0
  455. package/dist/games/postprocess-demo.js +829 -0
  456. package/dist/games/ragdoll-demo-simple.d.ts +34 -0
  457. package/dist/games/ragdoll-demo-simple.js +152 -0
  458. package/dist/games/ragdoll-demo.d.ts +30 -0
  459. package/dist/games/ragdoll-demo.js +258 -0
  460. package/dist/games/swipe-tap-demo.d.ts +24 -0
  461. package/dist/games/swipe-tap-demo.js +238 -0
  462. package/dist/games/tween-demo.d.ts +22 -0
  463. package/dist/games/tween-demo.js +122 -0
  464. package/dist/games/ui-demo.d.ts +75 -0
  465. package/dist/games/ui-demo.js +1054 -0
  466. package/dist/games/vfx-demo.d.ts +48 -0
  467. package/dist/games/vfx-demo.js +821 -0
  468. package/dist/games/vfx-wawa-demo.d.ts +7 -0
  469. package/dist/games/vfx-wawa-demo.js +471 -0
  470. package/dist/games/vr-ui-demo-minimal.d.ts +15 -0
  471. package/dist/games/vr-ui-demo-minimal.js +141 -0
  472. package/dist/games/vr-ui-demo.d.ts +32 -0
  473. package/dist/games/vr-ui-demo.js +871 -0
  474. package/dist/genesys.min.mjs +7035 -0
  475. package/dist/launcher.d.ts +1 -0
  476. package/dist/launcher.js +778 -0
  477. package/dist/scripts/build-browser-bundle.d.ts +5 -0
  478. package/dist/scripts/build-browser-bundle.js +69 -0
  479. package/dist/scripts/check-asset-path.d.ts +1 -0
  480. package/dist/scripts/check-asset-path.js +146 -0
  481. package/dist/scripts/dump-templates.d.ts +1 -0
  482. package/dist/scripts/dump-templates.js +16 -0
  483. package/dist/scripts/generate-dependencies.d.ts +1 -0
  484. package/dist/scripts/generate-dependencies.js +110 -0
  485. package/dist/scripts/generate-prefabs.d.ts +1 -0
  486. package/dist/scripts/generate-prefabs.js +106 -0
  487. package/dist/scripts/load-save-world.d.ts +2 -0
  488. package/dist/scripts/load-save-world.js +35 -0
  489. package/dist/scripts/loc.d.ts +1 -0
  490. package/dist/scripts/loc.js +80 -0
  491. package/dist/scripts/optimize-glb-wrapper.d.ts +1 -0
  492. package/dist/scripts/optimize-glb-wrapper.js +26 -0
  493. package/dist/scripts/optimize-glb.d.ts +41 -0
  494. package/dist/scripts/optimize-glb.js +296 -0
  495. package/dist/scripts/session-server.d.ts +117 -0
  496. package/dist/scripts/session-server.js +782 -0
  497. package/dist/scripts/test-world-loading.d.ts +14 -0
  498. package/dist/scripts/test-world-loading.js +19 -0
  499. package/dist/src/actors/Actor.d.ts +510 -0
  500. package/dist/src/actors/Actor.js +1180 -0
  501. package/dist/src/actors/GLTFMeshActor.d.ts +34 -0
  502. package/dist/src/actors/GLTFMeshActor.js +102 -0
  503. package/dist/src/actors/GlobalParticleManager.d.ts +154 -0
  504. package/dist/src/actors/GlobalParticleManager.js +365 -0
  505. package/dist/src/actors/Pawn.d.ts +191 -0
  506. package/dist/src/actors/Pawn.js +384 -0
  507. package/dist/src/actors/PlayerController.d.ts +177 -0
  508. package/dist/src/actors/PlayerController.js +763 -0
  509. package/dist/src/actors/PlayerStart.d.ts +8 -0
  510. package/dist/src/actors/PlayerStart.js +48 -0
  511. package/dist/src/actors/Projectile.d.ts +50 -0
  512. package/dist/src/actors/Projectile.js +157 -0
  513. package/dist/src/actors/RagdollTestActor.d.ts +31 -0
  514. package/dist/src/actors/RagdollTestActor.js +153 -0
  515. package/dist/src/actors/ThirdPersonCharacterPawn.d.ts +27 -0
  516. package/dist/src/actors/ThirdPersonCharacterPawn.js +149 -0
  517. package/dist/src/actors/index.d.ts +20 -0
  518. package/dist/src/actors/index.js +21 -0
  519. package/dist/src/animation/AnimationClipCache.d.ts +41 -0
  520. package/dist/src/animation/AnimationClipCache.js +97 -0
  521. package/dist/src/animation/AnimationRetargeting.d.ts +100 -0
  522. package/dist/src/animation/AnimationRetargeting.js +455 -0
  523. package/dist/src/animation/SkeletonProfile.d.ts +112 -0
  524. package/dist/src/animation/SkeletonProfile.js +84 -0
  525. package/dist/src/animation/index.d.ts +14 -0
  526. package/dist/src/animation/index.js +15 -0
  527. package/dist/src/animation/retargeting.d.ts +142 -0
  528. package/dist/src/animation/retargeting.js +834 -0
  529. package/dist/src/components/CharacterStatsComponent.d.ts +89 -0
  530. package/dist/src/components/CharacterStatsComponent.js +207 -0
  531. package/dist/src/components/CollisionShapeComponent.d.ts +102 -0
  532. package/dist/src/components/CollisionShapeComponent.js +232 -0
  533. package/dist/src/components/Component.d.ts +82 -0
  534. package/dist/src/components/Component.js +2 -0
  535. package/dist/src/components/FollowComponent.d.ts +67 -0
  536. package/dist/src/components/FollowComponent.js +128 -0
  537. package/dist/src/components/PrimitiveComponent.d.ts +183 -0
  538. package/dist/src/components/PrimitiveComponent.js +368 -0
  539. package/dist/src/components/ResetPositionComponent.d.ts +52 -0
  540. package/dist/src/components/ResetPositionComponent.js +161 -0
  541. package/dist/src/components/SceneComponent.d.ts +225 -0
  542. package/dist/src/components/SceneComponent.js +621 -0
  543. package/dist/src/components/audio/SoundComponent.d.ts +109 -0
  544. package/dist/src/components/audio/SoundComponent.js +353 -0
  545. package/dist/src/components/audio/index.d.ts +11 -0
  546. package/dist/src/components/audio/index.js +12 -0
  547. package/dist/src/components/csg/CSGCombiner.d.ts +87 -0
  548. package/dist/src/components/csg/CSGCombiner.js +240 -0
  549. package/dist/src/components/csg/CSGShapes.d.ts +173 -0
  550. package/dist/src/components/csg/CSGShapes.js +326 -0
  551. package/dist/src/components/csg/index.d.ts +12 -0
  552. package/dist/src/components/csg/index.js +13 -0
  553. package/dist/src/components/gameplay/BaseWeaponComponent.d.ts +175 -0
  554. package/dist/src/components/gameplay/BaseWeaponComponent.js +496 -0
  555. package/dist/src/components/gameplay/DoorComponent.d.ts +236 -0
  556. package/dist/src/components/gameplay/DoorComponent.js +928 -0
  557. package/dist/src/components/gameplay/Equipment.d.ts +22 -0
  558. package/dist/src/components/gameplay/Equipment.js +9 -0
  559. package/dist/src/components/gameplay/GenericEquipment.d.ts +37 -0
  560. package/dist/src/components/gameplay/GenericEquipment.js +90 -0
  561. package/dist/src/components/gameplay/InstantHitWeaponComponent.d.ts +96 -0
  562. package/dist/src/components/gameplay/InstantHitWeaponComponent.js +194 -0
  563. package/dist/src/components/gameplay/PickupComponent.d.ts +130 -0
  564. package/dist/src/components/gameplay/PickupComponent.js +429 -0
  565. package/dist/src/components/gameplay/ProjectileWeaponComponent.d.ts +49 -0
  566. package/dist/src/components/gameplay/ProjectileWeaponComponent.js +93 -0
  567. package/dist/src/components/gameplay/ShotgunComponent.d.ts +18 -0
  568. package/dist/src/components/gameplay/ShotgunComponent.js +216 -0
  569. package/dist/src/components/gameplay/SwitchComponent.d.ts +152 -0
  570. package/dist/src/components/gameplay/SwitchComponent.js +481 -0
  571. package/dist/src/components/gameplay/TriggerZoneComponent.d.ts +157 -0
  572. package/dist/src/components/gameplay/TriggerZoneComponent.js +312 -0
  573. package/dist/src/components/gameplay/index.d.ts +20 -0
  574. package/dist/src/components/gameplay/index.js +21 -0
  575. package/dist/src/components/index.d.ts +16 -0
  576. package/dist/src/components/index.js +18 -0
  577. package/dist/src/components/lights/AmbientLightComponent.d.ts +37 -0
  578. package/dist/src/components/lights/AmbientLightComponent.js +68 -0
  579. package/dist/src/components/lights/DirectionalLightComponent.d.ts +77 -0
  580. package/dist/src/components/lights/DirectionalLightComponent.js +146 -0
  581. package/dist/src/components/lights/HemisphereLightComponent.d.ts +67 -0
  582. package/dist/src/components/lights/HemisphereLightComponent.js +121 -0
  583. package/dist/src/components/lights/LightComponent.d.ts +145 -0
  584. package/dist/src/components/lights/LightComponent.js +315 -0
  585. package/dist/src/components/lights/PointLightComponent.d.ts +61 -0
  586. package/dist/src/components/lights/PointLightComponent.js +103 -0
  587. package/dist/src/components/lights/RectAreaLightComponent.d.ts +78 -0
  588. package/dist/src/components/lights/RectAreaLightComponent.js +135 -0
  589. package/dist/src/components/lights/SpotLightComponent.d.ts +100 -0
  590. package/dist/src/components/lights/SpotLightComponent.js +167 -0
  591. package/dist/src/components/lights/index.d.ts +17 -0
  592. package/dist/src/components/lights/index.js +18 -0
  593. package/dist/src/components/movement/AerialMovementComponent.d.ts +93 -0
  594. package/dist/src/components/movement/AerialMovementComponent.js +339 -0
  595. package/dist/src/components/movement/AirplaneMovementComponent.d.ts +59 -0
  596. package/dist/src/components/movement/AirplaneMovementComponent.js +215 -0
  597. package/dist/src/components/movement/BasePawnMovementComponent.d.ts +132 -0
  598. package/dist/src/components/movement/BasePawnMovementComponent.js +264 -0
  599. package/dist/src/components/movement/CharacterMovementComponent.d.ts +175 -0
  600. package/dist/src/components/movement/CharacterMovementComponent.js +448 -0
  601. package/dist/src/components/movement/DirectionalCharacterMovementComponent.d.ts +17 -0
  602. package/dist/src/components/movement/DirectionalCharacterMovementComponent.js +82 -0
  603. package/dist/src/components/movement/NpcMovementComponent.d.ts +232 -0
  604. package/dist/src/components/movement/NpcMovementComponent.js +890 -0
  605. package/dist/src/components/movement/PathMovementComponent.d.ts +54 -0
  606. package/dist/src/components/movement/PathMovementComponent.js +211 -0
  607. package/dist/src/components/movement/TopDownMovementComponent.d.ts +25 -0
  608. package/dist/src/components/movement/TopDownMovementComponent.js +79 -0
  609. package/dist/src/components/movement/TweenMovementComponent.d.ts +59 -0
  610. package/dist/src/components/movement/TweenMovementComponent.js +362 -0
  611. package/dist/src/components/movement/VehicleMovementComponent.d.ts +98 -0
  612. package/dist/src/components/movement/VehicleMovementComponent.js +402 -0
  613. package/dist/src/components/movement/index.d.ts +19 -0
  614. package/dist/src/components/movement/index.js +20 -0
  615. package/dist/src/components/physics/RagdollComponent.d.ts +118 -0
  616. package/dist/src/components/physics/RagdollComponent.js +671 -0
  617. package/dist/src/components/visual/AnimationComponent.d.ts +29 -0
  618. package/dist/src/components/visual/AnimationComponent.js +234 -0
  619. package/dist/src/components/visual/AnimationStateMachineComponent.d.ts +235 -0
  620. package/dist/src/components/visual/AnimationStateMachineComponent.js +1048 -0
  621. package/dist/src/components/visual/BaseInstancedMeshComponent.d.ts +253 -0
  622. package/dist/src/components/visual/BaseInstancedMeshComponent.js +763 -0
  623. package/dist/src/components/visual/BillboardComponent.d.ts +26 -0
  624. package/dist/src/components/visual/BillboardComponent.js +143 -0
  625. package/dist/src/components/visual/EditorOnlyMeshComponent.d.ts +17 -0
  626. package/dist/src/components/visual/EditorOnlyMeshComponent.js +53 -0
  627. package/dist/src/components/visual/FogComponent.d.ts +32 -0
  628. package/dist/src/components/visual/FogComponent.js +131 -0
  629. package/dist/src/components/visual/GLTFMeshComponent.d.ts +138 -0
  630. package/dist/src/components/visual/GLTFMeshComponent.js +411 -0
  631. package/dist/src/components/visual/InstancedGltfMeshComponent.d.ts +75 -0
  632. package/dist/src/components/visual/InstancedGltfMeshComponent.js +217 -0
  633. package/dist/src/components/visual/InstancedMeshComponent.d.ts +57 -0
  634. package/dist/src/components/visual/InstancedMeshComponent.js +114 -0
  635. package/dist/src/components/visual/MeshComponent.d.ts +71 -0
  636. package/dist/src/components/visual/MeshComponent.js +208 -0
  637. package/dist/src/components/visual/ParticleEmitterComponent.d.ts +145 -0
  638. package/dist/src/components/visual/ParticleEmitterComponent.js +569 -0
  639. package/dist/src/components/visual/SkyboxComponent.d.ts +135 -0
  640. package/dist/src/components/visual/SkyboxComponent.js +342 -0
  641. package/dist/src/components/visual/TerrainMeshComponent.d.ts +119 -0
  642. package/dist/src/components/visual/TerrainMeshComponent.js +309 -0
  643. package/dist/src/components/visual/UI3DComponent.d.ts +60 -0
  644. package/dist/src/components/visual/UI3DComponent.js +248 -0
  645. package/dist/src/components/visual/index.d.ts +23 -0
  646. package/dist/src/components/visual/index.js +24 -0
  647. package/dist/src/components/voxel/MagicaVoxelLoader.d.ts +18 -0
  648. package/dist/src/components/voxel/MagicaVoxelLoader.js +151 -0
  649. package/dist/src/components/voxel/VoxelMeshComponent.d.ts +66 -0
  650. package/dist/src/components/voxel/VoxelMeshComponent.js +246 -0
  651. package/dist/src/components/voxel/index.d.ts +2 -0
  652. package/dist/src/components/voxel/index.js +3 -0
  653. package/dist/src/const.d.ts +61 -0
  654. package/dist/src/const.js +62 -0
  655. package/dist/src/csg/CSGUtils.d.ts +118 -0
  656. package/dist/src/csg/CSGUtils.js +805 -0
  657. package/dist/src/csg/ManifoldWrapper.d.ts +172 -0
  658. package/dist/src/csg/ManifoldWrapper.js +629 -0
  659. package/dist/src/csg/index.d.ts +13 -0
  660. package/dist/src/csg/index.js +14 -0
  661. package/dist/src/dependencies.d.ts +125 -0
  662. package/dist/src/dependencies.js +72 -0
  663. package/dist/src/game/GameBuilder.d.ts +104 -0
  664. package/dist/src/game/GameBuilder.js +263 -0
  665. package/dist/src/game/GameLoop.d.ts +204 -0
  666. package/dist/src/game/GameLoop.js +545 -0
  667. package/dist/src/game/GameMode.d.ts +58 -0
  668. package/dist/src/game/GameMode.js +131 -0
  669. package/dist/src/game/Playable.d.ts +38 -0
  670. package/dist/src/game/Playable.js +83 -0
  671. package/dist/src/game/World.d.ts +512 -0
  672. package/dist/src/game/World.js +1467 -0
  673. package/dist/src/game/index.d.ts +18 -0
  674. package/dist/src/game/index.js +19 -0
  675. package/dist/src/index.d.ts +39 -0
  676. package/dist/src/index.js +40 -0
  677. package/dist/src/materials.d.ts +49 -0
  678. package/dist/src/materials.js +177 -0
  679. package/dist/src/multiplayer/MovementPrediction.d.ts +28 -0
  680. package/dist/src/multiplayer/MovementPrediction.js +204 -0
  681. package/dist/src/multiplayer/NetWorld.d.ts +125 -0
  682. package/dist/src/multiplayer/NetWorld.js +960 -0
  683. package/dist/src/multiplayer/implementations/MemorySession.d.ts +18 -0
  684. package/dist/src/multiplayer/implementations/MemorySession.js +112 -0
  685. package/dist/src/multiplayer/implementations/WebSocketSession.d.ts +134 -0
  686. package/dist/src/multiplayer/implementations/WebSocketSession.js +439 -0
  687. package/dist/src/multiplayer/implementations/index.d.ts +14 -0
  688. package/dist/src/multiplayer/implementations/index.js +15 -0
  689. package/dist/src/multiplayer/index.d.ts +16 -0
  690. package/dist/src/multiplayer/index.js +17 -0
  691. package/dist/src/multiplayer/interface.d.ts +134 -0
  692. package/dist/src/multiplayer/interface.js +87 -0
  693. package/dist/src/navigation/NavigationServer.d.ts +134 -0
  694. package/dist/src/navigation/NavigationServer.js +47 -0
  695. package/dist/src/navigation/RecastNavigationServer.d.ts +82 -0
  696. package/dist/src/navigation/RecastNavigationServer.js +325 -0
  697. package/dist/src/navigation/index.d.ts +16 -0
  698. package/dist/src/navigation/index.js +17 -0
  699. package/dist/src/npc/behavior-tree/BehaviorNode.d.ts +95 -0
  700. package/dist/src/npc/behavior-tree/BehaviorNode.js +177 -0
  701. package/dist/src/npc/behavior-tree/BehaviorTreeComponent.d.ts +104 -0
  702. package/dist/src/npc/behavior-tree/BehaviorTreeComponent.js +341 -0
  703. package/dist/src/npc/behavior-tree/behaviors/BehaviorAction.d.ts +52 -0
  704. package/dist/src/npc/behavior-tree/behaviors/BehaviorAction.js +70 -0
  705. package/dist/src/npc/behavior-tree/behaviors/ConditionEvaluator.d.ts +73 -0
  706. package/dist/src/npc/behavior-tree/behaviors/ConditionEvaluator.js +116 -0
  707. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialMoveToTargetAction.d.ts +33 -0
  708. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialMoveToTargetAction.js +138 -0
  709. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialSearchAction.d.ts +42 -0
  710. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialSearchAction.js +170 -0
  711. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialTrackTargetAction.d.ts +27 -0
  712. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialTrackTargetAction.js +86 -0
  713. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialWanderAction.d.ts +50 -0
  714. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialWanderAction.js +189 -0
  715. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/index.d.ts +4 -0
  716. package/dist/src/npc/behavior-tree/behaviors/actions/aerial/index.js +6 -0
  717. package/dist/src/npc/behavior-tree/behaviors/actions/combat/MeleeAttackAction.d.ts +37 -0
  718. package/dist/src/npc/behavior-tree/behaviors/actions/combat/MeleeAttackAction.js +172 -0
  719. package/dist/src/npc/behavior-tree/behaviors/actions/combat/ShootAction.d.ts +35 -0
  720. package/dist/src/npc/behavior-tree/behaviors/actions/combat/ShootAction.js +173 -0
  721. package/dist/src/npc/behavior-tree/behaviors/actions/combat/index.d.ts +2 -0
  722. package/dist/src/npc/behavior-tree/behaviors/actions/combat/index.js +4 -0
  723. package/dist/src/npc/behavior-tree/behaviors/actions/ground/FleeFromTargetAction.d.ts +34 -0
  724. package/dist/src/npc/behavior-tree/behaviors/actions/ground/FleeFromTargetAction.js +148 -0
  725. package/dist/src/npc/behavior-tree/behaviors/actions/ground/FollowActorAction.d.ts +30 -0
  726. package/dist/src/npc/behavior-tree/behaviors/actions/ground/FollowActorAction.js +129 -0
  727. package/dist/src/npc/behavior-tree/behaviors/actions/ground/MoveToPositionAction.d.ts +27 -0
  728. package/dist/src/npc/behavior-tree/behaviors/actions/ground/MoveToPositionAction.js +115 -0
  729. package/dist/src/npc/behavior-tree/behaviors/actions/ground/SetNextWaypointAction.d.ts +28 -0
  730. package/dist/src/npc/behavior-tree/behaviors/actions/ground/SetNextWaypointAction.js +120 -0
  731. package/dist/src/npc/behavior-tree/behaviors/actions/ground/WanderAction.d.ts +35 -0
  732. package/dist/src/npc/behavior-tree/behaviors/actions/ground/WanderAction.js +172 -0
  733. package/dist/src/npc/behavior-tree/behaviors/actions/ground/index.d.ts +5 -0
  734. package/dist/src/npc/behavior-tree/behaviors/actions/ground/index.js +7 -0
  735. package/dist/src/npc/behavior-tree/behaviors/actions/index.d.ts +4 -0
  736. package/dist/src/npc/behavior-tree/behaviors/actions/index.js +10 -0
  737. package/dist/src/npc/behavior-tree/behaviors/actions/utility/CalculateTacticalPositionAction.d.ts +32 -0
  738. package/dist/src/npc/behavior-tree/behaviors/actions/utility/CalculateTacticalPositionAction.js +123 -0
  739. package/dist/src/npc/behavior-tree/behaviors/actions/utility/LookAtTargetAction.d.ts +43 -0
  740. package/dist/src/npc/behavior-tree/behaviors/actions/utility/LookAtTargetAction.js +140 -0
  741. package/dist/src/npc/behavior-tree/behaviors/actions/utility/WaitAction.d.ts +24 -0
  742. package/dist/src/npc/behavior-tree/behaviors/actions/utility/WaitAction.js +85 -0
  743. package/dist/src/npc/behavior-tree/behaviors/actions/utility/index.d.ts +3 -0
  744. package/dist/src/npc/behavior-tree/behaviors/actions/utility/index.js +5 -0
  745. package/dist/src/npc/behavior-tree/behaviors/conditions/BlackboardValueCondition.d.ts +40 -0
  746. package/dist/src/npc/behavior-tree/behaviors/conditions/BlackboardValueCondition.js +133 -0
  747. package/dist/src/npc/behavior-tree/behaviors/conditions/CanSeeTargetCondition.d.ts +29 -0
  748. package/dist/src/npc/behavior-tree/behaviors/conditions/CanSeeTargetCondition.js +167 -0
  749. package/dist/src/npc/behavior-tree/behaviors/conditions/HasLastKnownPositionCondition.d.ts +19 -0
  750. package/dist/src/npc/behavior-tree/behaviors/conditions/HasLastKnownPositionCondition.js +67 -0
  751. package/dist/src/npc/behavior-tree/behaviors/conditions/HpAbovePercentCondition.d.ts +25 -0
  752. package/dist/src/npc/behavior-tree/behaviors/conditions/HpAbovePercentCondition.js +94 -0
  753. package/dist/src/npc/behavior-tree/behaviors/conditions/IsPlayerNearCondition.d.ts +15 -0
  754. package/dist/src/npc/behavior-tree/behaviors/conditions/IsPlayerNearCondition.js +51 -0
  755. package/dist/src/npc/behavior-tree/behaviors/conditions/TargetBelowHpPercentCondition.d.ts +19 -0
  756. package/dist/src/npc/behavior-tree/behaviors/conditions/TargetBelowHpPercentCondition.js +66 -0
  757. package/dist/src/npc/behavior-tree/behaviors/conditions/TargetInConeCondition.d.ts +26 -0
  758. package/dist/src/npc/behavior-tree/behaviors/conditions/TargetInConeCondition.js +111 -0
  759. package/dist/src/npc/behavior-tree/behaviors/conditions/TimeLimitCondition.d.ts +24 -0
  760. package/dist/src/npc/behavior-tree/behaviors/conditions/TimeLimitCondition.js +81 -0
  761. package/dist/src/npc/behavior-tree/behaviors/conditions/index.d.ts +8 -0
  762. package/dist/src/npc/behavior-tree/behaviors/conditions/index.js +15 -0
  763. package/dist/src/npc/behavior-tree/behaviors/index.d.ts +4 -0
  764. package/dist/src/npc/behavior-tree/behaviors/index.js +8 -0
  765. package/dist/src/npc/behavior-tree/blackboard/Blackboard.d.ts +50 -0
  766. package/dist/src/npc/behavior-tree/blackboard/Blackboard.js +121 -0
  767. package/dist/src/npc/behavior-tree/blackboard/BlackboardKey.d.ts +35 -0
  768. package/dist/src/npc/behavior-tree/blackboard/BlackboardKey.js +66 -0
  769. package/dist/src/npc/behavior-tree/blackboard/index.d.ts +2 -0
  770. package/dist/src/npc/behavior-tree/blackboard/index.js +3 -0
  771. package/dist/src/npc/behavior-tree/index.d.ts +9 -0
  772. package/dist/src/npc/behavior-tree/index.js +19 -0
  773. package/dist/src/npc/behavior-tree/loader/BehaviorTreeLoader.d.ts +91 -0
  774. package/dist/src/npc/behavior-tree/loader/BehaviorTreeLoader.js +240 -0
  775. package/dist/src/npc/behavior-tree/nodes/CompositeNode.d.ts +46 -0
  776. package/dist/src/npc/behavior-tree/nodes/CompositeNode.js +93 -0
  777. package/dist/src/npc/behavior-tree/nodes/LeafNode.d.ts +8 -0
  778. package/dist/src/npc/behavior-tree/nodes/LeafNode.js +11 -0
  779. package/dist/src/npc/behavior-tree/nodes/composite/SelectorNode.d.ts +15 -0
  780. package/dist/src/npc/behavior-tree/nodes/composite/SelectorNode.js +61 -0
  781. package/dist/src/npc/behavior-tree/nodes/composite/SequenceNode.d.ts +15 -0
  782. package/dist/src/npc/behavior-tree/nodes/composite/SequenceNode.js +61 -0
  783. package/dist/src/physics/BasePhysicsEngine.d.ts +389 -0
  784. package/dist/src/physics/BasePhysicsEngine.js +1227 -0
  785. package/dist/src/physics/IPhysicsVehicle.d.ts +150 -0
  786. package/dist/src/physics/IPhysicsVehicle.js +2 -0
  787. package/dist/src/physics/PhysicsEngine.d.ts +425 -0
  788. package/dist/src/physics/PhysicsEngine.js +69 -0
  789. package/dist/src/physics/PhysicsTypes.d.ts +91 -0
  790. package/dist/src/physics/PhysicsTypes.js +24 -0
  791. package/dist/src/physics/implementations/RapierDebugRender.d.ts +24 -0
  792. package/dist/src/physics/implementations/RapierDebugRender.js +66 -0
  793. package/dist/src/physics/implementations/RapierPhysics.d.ts +122 -0
  794. package/dist/src/physics/implementations/RapierPhysics.js +1191 -0
  795. package/dist/src/physics/implementations/RapierVehicle.d.ts +31 -0
  796. package/dist/src/physics/implementations/RapierVehicle.js +236 -0
  797. package/dist/src/physics/index.d.ts +16 -0
  798. package/dist/src/physics/index.js +17 -0
  799. package/dist/src/render/EdgeOutlineEffect.d.ts +40 -0
  800. package/dist/src/render/EdgeOutlineEffect.js +389 -0
  801. package/dist/src/render/PostProcessManager.d.ts +274 -0
  802. package/dist/src/render/PostProcessManager.js +932 -0
  803. package/dist/src/render/Renderer.d.ts +84 -0
  804. package/dist/src/render/Renderer.js +306 -0
  805. package/dist/src/render/Texture.d.ts +51 -0
  806. package/dist/src/render/Texture.js +144 -0
  807. package/dist/src/render/index.d.ts +20 -0
  808. package/dist/src/render/index.js +21 -0
  809. package/dist/src/render/lightmapping/LightmapAtlas.d.ts +52 -0
  810. package/dist/src/render/lightmapping/LightmapAtlas.js +201 -0
  811. package/dist/src/render/lightmapping/LightmapBaker.d.ts +99 -0
  812. package/dist/src/render/lightmapping/LightmapBaker.js +239 -0
  813. package/dist/src/render/lightmapping/LightmapManager.d.ts +148 -0
  814. package/dist/src/render/lightmapping/LightmapManager.js +630 -0
  815. package/dist/src/render/lightmapping/LightmapMaterial.d.ts +26 -0
  816. package/dist/src/render/lightmapping/LightmapMaterial.js +242 -0
  817. package/dist/src/render/lightmapping/LightmapSerialization.d.ts +379 -0
  818. package/dist/src/render/lightmapping/LightmapSerialization.js +244 -0
  819. package/dist/src/render/lightmapping/LightmapSerializer.d.ts +94 -0
  820. package/dist/src/render/lightmapping/LightmapSerializer.js +223 -0
  821. package/dist/src/render/lightmapping/MultiLightmapperMaterial.d.ts +41 -0
  822. package/dist/src/render/lightmapping/MultiLightmapperMaterial.js +424 -0
  823. package/dist/src/render/lightmapping/index.d.ts +9 -0
  824. package/dist/src/render/lightmapping/index.js +6 -0
  825. package/dist/src/render/postprocessing/EffectPassWrapper.d.ts +17 -0
  826. package/dist/src/render/postprocessing/EffectPassWrapper.js +47 -0
  827. package/dist/src/render/postprocessing/ObjectOutlineEffect.d.ts +49 -0
  828. package/dist/src/render/postprocessing/ObjectOutlineEffect.js +364 -0
  829. package/dist/src/render/postprocessing/index.d.ts +2 -0
  830. package/dist/src/render/postprocessing/index.js +3 -0
  831. package/dist/src/runtime/GameRuntime.d.ts +25 -0
  832. package/dist/src/runtime/GameRuntime.js +131 -0
  833. package/dist/src/runtime/InjectedDependencies.d.ts +13 -0
  834. package/dist/src/runtime/InjectedDependencies.js +63 -0
  835. package/dist/src/runtime/Utils.d.ts +16 -0
  836. package/dist/src/runtime/Utils.js +113 -0
  837. package/dist/src/runtime/index.d.ts +4 -0
  838. package/dist/src/runtime/index.js +5 -0
  839. package/dist/src/runtime/materials/MatcapShaderMaterial.d.ts +23 -0
  840. package/dist/src/runtime/materials/MatcapShaderMaterial.js +235 -0
  841. package/dist/src/runtime/materials/index.d.ts +1 -0
  842. package/dist/src/runtime/materials/index.js +2 -0
  843. package/dist/src/scripting/Plugin.d.ts +64 -0
  844. package/dist/src/scripting/Plugin.js +2 -0
  845. package/dist/src/scripting/PluginManager.d.ts +40 -0
  846. package/dist/src/scripting/PluginManager.js +111 -0
  847. package/dist/src/scripting/index.d.ts +1 -0
  848. package/dist/src/scripting/index.js +2 -0
  849. package/dist/src/storage/defaultStorageProvider.d.ts +15 -0
  850. package/dist/src/storage/defaultStorageProvider.js +73 -0
  851. package/dist/src/storage/index.d.ts +16 -0
  852. package/dist/src/storage/index.js +17 -0
  853. package/dist/src/storage/projectContext.d.ts +80 -0
  854. package/dist/src/storage/projectContext.js +164 -0
  855. package/dist/src/storage/storageProvider.d.ts +148 -0
  856. package/dist/src/storage/storageProvider.js +181 -0
  857. package/dist/src/systems/ClassRegistry.d.ts +98 -0
  858. package/dist/src/systems/ClassRegistry.js +478 -0
  859. package/dist/src/systems/ConsoleManager.d.ts +66 -0
  860. package/dist/src/systems/ConsoleManager.js +465 -0
  861. package/dist/src/systems/ConsoleVariableHandler.d.ts +17 -0
  862. package/dist/src/systems/ConsoleVariableHandler.js +120 -0
  863. package/dist/src/systems/ConsoleVariableManager.d.ts +128 -0
  864. package/dist/src/systems/ConsoleVariableManager.js +295 -0
  865. package/dist/src/systems/InputManager.d.ts +511 -0
  866. package/dist/src/systems/InputManager.js +1025 -0
  867. package/dist/src/systems/ObjectNamingSystem.d.ts +9 -0
  868. package/dist/src/systems/ObjectNamingSystem.js +34 -0
  869. package/dist/src/systems/Stats.d.ts +36 -0
  870. package/dist/src/systems/Stats.js +193 -0
  871. package/dist/src/systems/TimerSystem.d.ts +180 -0
  872. package/dist/src/systems/TimerSystem.js +292 -0
  873. package/dist/src/systems/TweenManager.d.ts +57 -0
  874. package/dist/src/systems/TweenManager.js +107 -0
  875. package/dist/src/systems/WorldSerialization.d.ts +216 -0
  876. package/dist/src/systems/WorldSerialization.js +1082 -0
  877. package/dist/src/systems/collision/CollisionConfig.d.ts +56 -0
  878. package/dist/src/systems/collision/CollisionConfig.js +249 -0
  879. package/dist/src/systems/collision/CollisionTypes.d.ts +138 -0
  880. package/dist/src/systems/collision/CollisionTypes.js +204 -0
  881. package/dist/src/systems/collision/index.d.ts +15 -0
  882. package/dist/src/systems/collision/index.js +16 -0
  883. package/dist/src/systems/index.d.ts +23 -0
  884. package/dist/src/systems/index.js +24 -0
  885. package/dist/src/templates/MyActor.d.ts +9 -0
  886. package/dist/src/templates/MyActor.js +25 -0
  887. package/dist/src/templates/MySceneComponent.d.ts +9 -0
  888. package/dist/src/templates/MySceneComponent.js +25 -0
  889. package/dist/src/ui/LoadingScreen.d.ts +15 -0
  890. package/dist/src/ui/LoadingScreen.js +103 -0
  891. package/dist/src/ui/UIElement.d.ts +74 -0
  892. package/dist/src/ui/UIElement.js +202 -0
  893. package/dist/src/ui/UILayout.d.ts +126 -0
  894. package/dist/src/ui/UILayout.js +244 -0
  895. package/dist/src/ui/UIManager.d.ts +44 -0
  896. package/dist/src/ui/UIManager.js +148 -0
  897. package/dist/src/ui/UIResource.d.ts +6 -0
  898. package/dist/src/ui/UIResource.js +24 -0
  899. package/dist/src/ui/components/AmmoCounter.d.ts +28 -0
  900. package/dist/src/ui/components/AmmoCounter.js +125 -0
  901. package/dist/src/ui/components/BaseUIComponent.d.ts +128 -0
  902. package/dist/src/ui/components/BaseUIComponent.js +342 -0
  903. package/dist/src/ui/components/Compass.d.ts +28 -0
  904. package/dist/src/ui/components/Compass.js +125 -0
  905. package/dist/src/ui/components/ControlsPanel.d.ts +37 -0
  906. package/dist/src/ui/components/ControlsPanel.js +47 -0
  907. package/dist/src/ui/components/Crosshair.d.ts +20 -0
  908. package/dist/src/ui/components/Crosshair.js +67 -0
  909. package/dist/src/ui/components/InventoryBar.d.ts +103 -0
  910. package/dist/src/ui/components/InventoryBar.js +177 -0
  911. package/dist/src/ui/components/InventoryGrid.d.ts +139 -0
  912. package/dist/src/ui/components/InventoryGrid.js +407 -0
  913. package/dist/src/ui/components/Minimap.d.ts +39 -0
  914. package/dist/src/ui/components/Minimap.js +156 -0
  915. package/dist/src/ui/components/NumberDisplay.d.ts +51 -0
  916. package/dist/src/ui/components/NumberDisplay.js +164 -0
  917. package/dist/src/ui/components/ProgressBar.d.ts +115 -0
  918. package/dist/src/ui/components/ProgressBar.js +347 -0
  919. package/dist/src/ui/components/ReloadIndicator.d.ts +29 -0
  920. package/dist/src/ui/components/ReloadIndicator.js +147 -0
  921. package/dist/src/ui/components/index.d.ts +11 -0
  922. package/dist/src/ui/components/index.js +13 -0
  923. package/dist/src/ui/index.d.ts +21 -0
  924. package/dist/src/ui/index.js +22 -0
  925. package/dist/src/ui/ui-loader.d.ts +49 -0
  926. package/dist/src/ui/ui-loader.js +83 -0
  927. package/dist/src/utils/Color.d.ts +48 -0
  928. package/dist/src/utils/Color.js +121 -0
  929. package/dist/src/utils/Delegate.d.ts +72 -0
  930. package/dist/src/utils/Delegate.js +102 -0
  931. package/dist/src/utils/DescriptionHelpers.d.ts +47 -0
  932. package/dist/src/utils/DescriptionHelpers.js +65 -0
  933. package/dist/src/utils/EditorClassMeta.d.ts +99 -0
  934. package/dist/src/utils/EditorClassMeta.js +2 -0
  935. package/dist/src/utils/GlobalAudioManager.d.ts +141 -0
  936. package/dist/src/utils/GlobalAudioManager.js +312 -0
  937. package/dist/src/utils/IAsyncLoadable.d.ts +94 -0
  938. package/dist/src/utils/IAsyncLoadable.js +52 -0
  939. package/dist/src/utils/MaterialHelpers.d.ts +67 -0
  940. package/dist/src/utils/MaterialHelpers.js +278 -0
  941. package/dist/src/utils/MathHelpers.d.ts +65 -0
  942. package/dist/src/utils/MathHelpers.js +60 -0
  943. package/dist/src/utils/NodeJs.d.ts +1 -0
  944. package/dist/src/utils/NodeJs.js +81 -0
  945. package/dist/src/utils/Perlin.d.ts +39 -0
  946. package/dist/src/utils/Perlin.js +380 -0
  947. package/dist/src/utils/ResourceManager.d.ts +183 -0
  948. package/dist/src/utils/ResourceManager.js +703 -0
  949. package/dist/src/utils/SceneGraphUtils.d.ts +26 -0
  950. package/dist/src/utils/SceneGraphUtils.js +139 -0
  951. package/dist/src/utils/Spawn.d.ts +27 -0
  952. package/dist/src/utils/Spawn.js +73 -0
  953. package/dist/src/utils/ThreeJsExtensions.d.ts +298 -0
  954. package/dist/src/utils/ThreeJsExtensions.js +817 -0
  955. package/dist/src/utils/TweenExtensions.d.ts +8 -0
  956. package/dist/src/utils/TweenExtensions.js +103 -0
  957. package/dist/src/utils/UserCodeEngine.d.ts +70 -0
  958. package/dist/src/utils/UserCodeEngine.js +235 -0
  959. package/dist/src/utils/Utils.d.ts +65 -0
  960. package/dist/src/utils/Utils.js +296 -0
  961. package/dist/src/utils/VRButtonUtils.d.ts +21 -0
  962. package/dist/src/utils/VRButtonUtils.js +88 -0
  963. package/dist/src/utils/browser-polyfills/module.d.ts +20 -0
  964. package/dist/src/utils/browser-polyfills/module.js +31 -0
  965. package/dist/src/utils/browser-polyfills/path.d.ts +69 -0
  966. package/dist/src/utils/browser-polyfills/path.js +188 -0
  967. package/dist/src/utils/index.d.ts +29 -0
  968. package/dist/src/utils/index.js +30 -0
  969. package/dist/src/utils/serialization/cdo.d.ts +6 -0
  970. package/dist/src/utils/serialization/cdo.js +74 -0
  971. package/dist/src/utils/serialization/clsAlias.d.ts +15 -0
  972. package/dist/src/utils/serialization/clsAlias.js +96 -0
  973. package/dist/src/utils/serialization/decorator.d.ts +132 -0
  974. package/dist/src/utils/serialization/decorator.js +66 -0
  975. package/dist/src/utils/serialization/index.d.ts +7 -0
  976. package/dist/src/utils/serialization/index.js +8 -0
  977. package/dist/src/utils/serialization/prefab.d.ts +9 -0
  978. package/dist/src/utils/serialization/prefab.js +55 -0
  979. package/dist/src/utils/serialization/prefabManager.d.ts +17 -0
  980. package/dist/src/utils/serialization/prefabManager.js +84 -0
  981. package/dist/src/utils/serialization/serializable.d.ts +23 -0
  982. package/dist/src/utils/serialization/serializable.js +2 -0
  983. package/dist/src/utils/serialization/serializer.d.ts +126 -0
  984. package/dist/src/utils/serialization/serializer.js +1032 -0
  985. package/dist/src/utils/serialization/specialization.d.ts +1 -0
  986. package/dist/src/utils/serialization/specialization.js +194 -0
  987. package/dist/src/utils/serialization/specializationUtils.d.ts +27 -0
  988. package/dist/src/utils/serialization/specializationUtils.js +137 -0
  989. package/dist/src/vfx/VFXComponent.d.ts +65 -0
  990. package/dist/src/vfx/VFXComponent.js +202 -0
  991. package/dist/src/vfx/index.d.ts +11 -0
  992. package/dist/src/vfx/index.js +11 -0
  993. package/dist/src/vfx/types.d.ts +146 -0
  994. package/dist/src/vfx/types.js +146 -0
  995. package/dist/src/world-commands/common.d.ts +23 -0
  996. package/dist/src/world-commands/common.js +2 -0
  997. package/dist/src/world-commands/generate-code.d.ts +3 -0
  998. package/dist/src/world-commands/generate-code.js +90 -0
  999. package/dist/src/world-commands/index.d.ts +19 -0
  1000. package/dist/src/world-commands/index.js +20 -0
  1001. package/dist/src/world-commands/place-gltf.d.ts +25 -0
  1002. package/dist/src/world-commands/place-gltf.js +39 -0
  1003. package/dist/src/world-commands/place-prefab.d.ts +25 -0
  1004. package/dist/src/world-commands/place-prefab.js +40 -0
  1005. package/dist/src/world-commands/place-primitive.d.ts +39 -0
  1006. package/dist/src/world-commands/place-primitive.js +100 -0
  1007. package/dist/src/world-commands/remove-actors.d.ts +23 -0
  1008. package/dist/src/world-commands/remove-actors.js +9 -0
  1009. package/dist/src/xr/VRActor.d.ts +46 -0
  1010. package/dist/src/xr/VRActor.js +56 -0
  1011. package/dist/src/xr/VRControllerHandler.d.ts +25 -0
  1012. package/dist/src/xr/VRControllerHandler.js +74 -0
  1013. package/dist/src/xr/VRControllerManager.d.ts +194 -0
  1014. package/dist/src/xr/VRControllerManager.js +539 -0
  1015. package/dist/src/xr/VRDeviceHandler.d.ts +47 -0
  1016. package/dist/src/xr/VRDeviceHandler.js +61 -0
  1017. package/dist/src/xr/VRHandHandler.d.ts +23 -0
  1018. package/dist/src/xr/VRHandHandler.js +161 -0
  1019. package/dist/src/xr/VRInputDevice.d.ts +100 -0
  1020. package/dist/src/xr/VRInputDevice.js +367 -0
  1021. package/dist/src/xr/VRPawn.d.ts +198 -0
  1022. package/dist/src/xr/VRPawn.js +771 -0
  1023. package/dist/src/xr/actor-components/CanvasUIComponent.d.ts +61 -0
  1024. package/dist/src/xr/actor-components/CanvasUIComponent.js +418 -0
  1025. package/dist/src/xr/actor-components/VRBaseComponent.d.ts +15 -0
  1026. package/dist/src/xr/actor-components/VRBaseComponent.js +24 -0
  1027. package/dist/src/xr/actor-components/VRGrabbableComponent.d.ts +31 -0
  1028. package/dist/src/xr/actor-components/VRGrabbableComponent.js +81 -0
  1029. package/dist/src/xr/actor-components/VRInteractableComponent.d.ts +19 -0
  1030. package/dist/src/xr/actor-components/VRInteractableComponent.js +50 -0
  1031. package/dist/src/xr/index.d.ts +17 -0
  1032. package/dist/src/xr/index.js +18 -0
  1033. package/dist/src/xr/pawn-components/VRGrabComponent.d.ts +36 -0
  1034. package/dist/src/xr/pawn-components/VRGrabComponent.js +445 -0
  1035. package/dist/src/xr/pawn-components/VRInteractComponent.d.ts +20 -0
  1036. package/dist/src/xr/pawn-components/VRInteractComponent.js +81 -0
  1037. package/dist/src/xr/pawn-components/VRSnapTurnComponent.d.ts +25 -0
  1038. package/dist/src/xr/pawn-components/VRSnapTurnComponent.js +114 -0
  1039. package/dist/src/xr/pawn-components/VRTeleportComponent.d.ts +42 -0
  1040. package/dist/src/xr/pawn-components/VRTeleportComponent.js +318 -0
  1041. package/dist/src/xr/ui/CanvasColorPicker.d.ts +33 -0
  1042. package/dist/src/xr/ui/CanvasColorPicker.js +188 -0
  1043. package/dist/src/xr/ui/CanvasKeyboard.d.ts +21 -0
  1044. package/dist/src/xr/ui/CanvasKeyboard.js +281 -0
  1045. package/dist/src/xr/ui/CanvasSlider.d.ts +21 -0
  1046. package/dist/src/xr/ui/CanvasSlider.js +112 -0
  1047. package/dist/src/xr/ui/CanvasUI.d.ts +129 -0
  1048. package/dist/src/xr/ui/CanvasUI.js +876 -0
  1049. package/dist/src/xr/ui/index.d.ts +8 -0
  1050. package/dist/src/xr/ui/index.js +9 -0
  1051. package/dist/test/absolute-transform.test.d.ts +1 -0
  1052. package/dist/test/absolute-transform.test.js +796 -0
  1053. package/dist/test/asset-path.test.d.ts +1 -0
  1054. package/dist/test/asset-path.test.js +339 -0
  1055. package/dist/test/component.test.d.ts +1 -0
  1056. package/dist/test/component.test.js +24 -0
  1057. package/dist/test/construction.test.d.ts +1 -0
  1058. package/dist/test/construction.test.js +26 -0
  1059. package/dist/test/default-options-validation.test.d.ts +1 -0
  1060. package/dist/test/default-options-validation.test.js +186 -0
  1061. package/dist/test/metadata.test.d.ts +1 -0
  1062. package/dist/test/metadata.test.js +82 -0
  1063. package/dist/test/nodeStorage.d.ts +19 -0
  1064. package/dist/test/nodeStorage.js +85 -0
  1065. package/dist/test/postprocess-manager.test.d.ts +1 -0
  1066. package/dist/test/postprocess-manager.test.js +77 -0
  1067. package/dist/test/prefab.test.d.ts +1 -0
  1068. package/dist/test/prefab.test.js +903 -0
  1069. package/dist/test/scene-component.test.d.ts +1 -0
  1070. package/dist/test/scene-component.test.js +13 -0
  1071. package/dist/test/scene-graph.test.d.ts +1 -0
  1072. package/dist/test/scene-graph.test.js +163 -0
  1073. package/dist/test/serialization-v1.test.d.ts +15 -0
  1074. package/dist/test/serialization-v1.test.js +1057 -0
  1075. package/dist/test/serialization.test.d.ts +1 -0
  1076. package/dist/test/serialization.test.js +425 -0
  1077. package/dist/test/spawn.test.d.ts +1 -0
  1078. package/dist/test/spawn.test.js +137 -0
  1079. package/dist/test/utils.d.ts +27 -0
  1080. package/dist/test/utils.js +115 -0
  1081. package/docs/agent-instructions.md +49 -0
  1082. package/docs/deprecated/8-guide-user-interface-2.md +600 -0
  1083. package/docs/deprecated/Agents.md +117 -0
  1084. package/docs/deprecated/TELEGRAM_MINIAPP_SUPPORT_PLAN.md +283 -0
  1085. package/docs/deprecated/summary-2.md +101 -0
  1086. package/docs/engine-summary.md +104 -0
  1087. package/docs/guides/0-world-and-gameloop.md +331 -0
  1088. package/docs/guides/1-actors-and-components.md +955 -0
  1089. package/docs/guides/10-camera-system.md +778 -0
  1090. package/docs/guides/11-equipment-and-weapons.md +850 -0
  1091. package/docs/guides/12-threejs-extensions.md +528 -0
  1092. package/docs/guides/13-visual-effects-and-particles.md +530 -0
  1093. package/docs/guides/14-sound-system.md +436 -0
  1094. package/docs/guides/15-global-audio-manager.md +367 -0
  1095. package/docs/guides/15-navigation-and-pathfinding.md +818 -0
  1096. package/docs/guides/16-ragdoll-physics.md +479 -0
  1097. package/docs/guides/17-asset-referencing.md +248 -0
  1098. package/docs/guides/18-lightmapping-system.md +984 -0
  1099. package/docs/guides/19-webxr-virtual-reality.md +367 -0
  1100. package/docs/guides/2-player-inputs-and-controls.md +737 -0
  1101. package/docs/guides/3-physics-and-collisions.md +248 -0
  1102. package/docs/guides/4-visuals-and-rendering.md +946 -0
  1103. package/docs/guides/5-animation.md +310 -0
  1104. package/docs/guides/6-ai-and-behavior-trees.md +1316 -0
  1105. package/docs/guides/7-building-levels.md +211 -0
  1106. package/docs/guides/8-user-interface.md +291 -0
  1107. package/docs/guides/9-multiplayer.md +181 -0
  1108. package/docs/high-level-class-hierarchy.md +218 -0
  1109. package/eslint-rules/constructor-type-consistency.js +251 -0
  1110. package/eslint-rules/default-getter-return-type.js +42 -0
  1111. package/eslint-rules/engine-class-name-consistency.js +62 -0
  1112. package/eslint-rules/no-async-override-mismatch.js +100 -0
  1113. package/eslint-rules/no-default-class-fields.js +66 -0
  1114. package/eslint-rules/no-override-methods.js +158 -0
  1115. package/games/animation-demo.ts +367 -0
  1116. package/games/animation-retarget-demo.ts +553 -0
  1117. package/games/behavior-tree-demo.ts +1774 -0
  1118. package/games/character_animation.ts +194 -0
  1119. package/games/collision-demo.ts +139 -0
  1120. package/games/deprecated/advanced-grid-demo.ts +336 -0
  1121. package/games/deprecated/airplane-demo.ts +156 -0
  1122. package/games/deprecated/character-controller.ts +161 -0
  1123. package/games/deprecated/chase-game.ts +310 -0
  1124. package/games/deprecated/collision-config.ts +317 -0
  1125. package/games/deprecated/door-demo.ts +641 -0
  1126. package/games/deprecated/fps-demo.ts +128 -0
  1127. package/games/deprecated/fps-shotgun-demo.ts +227 -0
  1128. package/games/deprecated/index.ts +25 -0
  1129. package/games/deprecated/lightmapping-demo.ts +1515 -0
  1130. package/games/deprecated/lights-demo.ts +957 -0
  1131. package/games/deprecated/matcap-demo.ts +823 -0
  1132. package/games/deprecated/material-demo-2.ts +582 -0
  1133. package/games/deprecated/material-demo.ts +204 -0
  1134. package/games/deprecated/memory-leak-test.ts +23 -0
  1135. package/games/deprecated/model-stress-test.ts +150 -0
  1136. package/games/deprecated/multiplayer-demo.ts +392 -0
  1137. package/games/deprecated/physics-demo.ts +199 -0
  1138. package/games/deprecated/shadow-demo.ts +435 -0
  1139. package/games/deprecated/shooting-demo.ts +352 -0
  1140. package/games/deprecated/skybox-demo.ts +341 -0
  1141. package/games/deprecated/sound-demo.ts +117 -0
  1142. package/games/deprecated/timer-demo.ts +178 -0
  1143. package/games/deprecated/voxel-demo.ts +50 -0
  1144. package/games/deprecated/world-commands.ts +184 -0
  1145. package/games/deprecated/world-loading.ts +90 -0
  1146. package/games/examples/fps-advanced/const.ts +122 -0
  1147. package/games/examples/fps-advanced/enemies.ts +174 -0
  1148. package/games/examples/fps-advanced/game-mode.ts +347 -0
  1149. package/games/examples/fps-advanced/game.ts +74 -0
  1150. package/games/examples/fps-advanced/pickups.ts +225 -0
  1151. package/games/examples/fps-advanced/player.ts +101 -0
  1152. package/games/examples/fps-advanced/ui/endgame-ui.ts +277 -0
  1153. package/games/examples/fps-advanced/ui/game-hud.ts +211 -0
  1154. package/games/examples/fps-advanced/ui/menu-ui.ts +217 -0
  1155. package/games/examples/fps-advanced/ui/weapon-hud.ts +254 -0
  1156. package/games/examples/fps-advanced/weapons.ts +209 -0
  1157. package/games/examples/index.ts +5 -0
  1158. package/games/examples/plugin-demo/game.ts +175 -0
  1159. package/games/examples/plugin-demo/plugins/dynamic-lighting.ts +146 -0
  1160. package/games/examples/plugin-demo/plugins/instanced-forest.ts +186 -0
  1161. package/games/examples/plugin-demo/plugins/particle-fountain.ts +63 -0
  1162. package/games/examples/plugin-demo/plugins/physics-playground.ts +189 -0
  1163. package/games/examples/plugin-demo/plugins/robot-follower.ts +306 -0
  1164. package/games/examples/plugin-demo/plugins/scatter-models.ts +74 -0
  1165. package/games/examples/plugin-demo/plugins/simple-cube.ts +44 -0
  1166. package/games/examples/plugin-demo/plugins/tic-tac-toe.ts +522 -0
  1167. package/games/examples/plugin-demo/plugins/wobbling-sphere.ts +66 -0
  1168. package/games/examples/side-scroller-advanced/const.ts +88 -0
  1169. package/games/examples/side-scroller-advanced/game-mode.ts +350 -0
  1170. package/games/examples/side-scroller-advanced/game.ts +80 -0
  1171. package/games/examples/side-scroller-advanced/level-generator.ts +384 -0
  1172. package/games/examples/side-scroller-advanced/pickups.ts +132 -0
  1173. package/games/examples/side-scroller-advanced/player.ts +105 -0
  1174. package/games/examples/side-scroller-advanced/ui/endgame-ui.ts +278 -0
  1175. package/games/examples/side-scroller-advanced/ui/game-hud.ts +238 -0
  1176. package/games/examples/side-scroller-advanced/ui/menu-ui.ts +215 -0
  1177. package/games/examples/vehicle/base-vehicle.ts +159 -0
  1178. package/games/examples/vehicle/game.ts +154 -0
  1179. package/games/examples/vehicle/mesh-vehicle.ts +191 -0
  1180. package/games/examples/vehicle/player.ts +86 -0
  1181. package/games/examples/vehicle/primitive-vehicle.ts +266 -0
  1182. package/games/examples/vr-game/VRAttachableCube.ts +39 -0
  1183. package/games/examples/vr-game/VRInteractableCylinder.ts +83 -0
  1184. package/games/examples/vr-game/VRPressableButton.ts +113 -0
  1185. package/games/examples/vr-game/VRProjectileActor.ts +69 -0
  1186. package/games/examples/vr-game/VRRifleActor.ts +138 -0
  1187. package/games/examples/vr-game/game.ts +69 -0
  1188. package/games/examples/vr-game/index.ts +9 -0
  1189. package/games/examples/vr-game/scene.ts +99 -0
  1190. package/games/hand-tracking-demo.ts +71 -0
  1191. package/games/index.ts +21 -0
  1192. package/games/instanced-mesh-demo.ts +429 -0
  1193. package/games/manifold-demo.ts +52 -0
  1194. package/games/navigation-demo.ts +351 -0
  1195. package/games/navmesh-primitives-demo.ts +1252 -0
  1196. package/games/performance-test-demo.ts +237 -0
  1197. package/games/postprocess-demo.ts +867 -0
  1198. package/games/ragdoll-demo-simple.ts +163 -0
  1199. package/games/ragdoll-demo.ts +272 -0
  1200. package/games/swipe-tap-demo.ts +228 -0
  1201. package/games/tween-demo.ts +125 -0
  1202. package/games/ui-demo.ts +1058 -0
  1203. package/games/vfx-demo.ts +922 -0
  1204. package/games/vfx-wawa-demo.ts +540 -0
  1205. package/games/vr-ui-demo-minimal.ts +156 -0
  1206. package/games/vr-ui-demo.ts +972 -0
  1207. package/package.json +104 -0
  1208. package/scripts/build-browser-bundle.ts +75 -0
  1209. package/scripts/check-asset-path.ts +166 -0
  1210. package/scripts/dump-templates.ts +21 -0
  1211. package/scripts/generate-dependencies.ts +145 -0
  1212. package/scripts/generate-prefabs.ts +120 -0
  1213. package/scripts/load-save-world.ts +44 -0
  1214. package/scripts/loc.ts +112 -0
  1215. package/scripts/optimize-glb-wrapper.ts +28 -0
  1216. package/scripts/optimize-glb.ts +352 -0
  1217. package/scripts/session-server.ts +861 -0
  1218. package/scripts/test-world-loading.ts +23 -0
  1219. package/src/actors/Actor.ts +1183 -0
  1220. package/src/actors/GLTFMeshActor.ts +107 -0
  1221. package/src/actors/GlobalParticleManager.ts +460 -0
  1222. package/src/actors/Pawn.ts +370 -0
  1223. package/src/actors/PlayerController.ts +646 -0
  1224. package/src/actors/PlayerStart.ts +47 -0
  1225. package/src/actors/Projectile.ts +179 -0
  1226. package/src/actors/RagdollTestActor.ts +153 -0
  1227. package/src/actors/ThirdPersonCharacterPawn.ts +139 -0
  1228. package/src/actors/index.ts +21 -0
  1229. package/src/animation/AnimationClipCache.ts +86 -0
  1230. package/src/animation/AnimationRetargeting.ts +566 -0
  1231. package/src/animation/SkeletonProfile.ts +137 -0
  1232. package/src/animation/index.ts +14 -0
  1233. package/src/animation/retargeting.ts +866 -0
  1234. package/src/components/CharacterStatsComponent.ts +199 -0
  1235. package/src/components/CollisionShapeComponent.ts +256 -0
  1236. package/src/components/Component.ts +111 -0
  1237. package/src/components/FollowComponent.ts +149 -0
  1238. package/src/components/PrimitiveComponent.ts +368 -0
  1239. package/src/components/ResetPositionComponent.ts +175 -0
  1240. package/src/components/SceneComponent.ts +628 -0
  1241. package/src/components/audio/SoundComponent.ts +385 -0
  1242. package/src/components/audio/index.ts +11 -0
  1243. package/src/components/csg/CSGCombiner.ts +268 -0
  1244. package/src/components/csg/CSGShapes.ts +344 -0
  1245. package/src/components/csg/index.ts +12 -0
  1246. package/src/components/gameplay/BaseWeaponComponent.ts +597 -0
  1247. package/src/components/gameplay/DoorComponent.ts +930 -0
  1248. package/src/components/gameplay/Equipment.ts +30 -0
  1249. package/src/components/gameplay/GenericEquipment.ts +96 -0
  1250. package/src/components/gameplay/InstantHitWeaponComponent.ts +248 -0
  1251. package/src/components/gameplay/PickupComponent.ts +473 -0
  1252. package/src/components/gameplay/ProjectileWeaponComponent.ts +114 -0
  1253. package/src/components/gameplay/ShotgunComponent.ts +220 -0
  1254. package/src/components/gameplay/SwitchComponent.ts +466 -0
  1255. package/src/components/gameplay/TriggerZoneComponent.ts +346 -0
  1256. package/src/components/gameplay/index.ts +20 -0
  1257. package/src/components/index.ts +19 -0
  1258. package/src/components/lights/AmbientLightComponent.ts +72 -0
  1259. package/src/components/lights/DirectionalLightComponent.ts +163 -0
  1260. package/src/components/lights/HemisphereLightComponent.ts +132 -0
  1261. package/src/components/lights/LightComponent.ts +351 -0
  1262. package/src/components/lights/PointLightComponent.ts +115 -0
  1263. package/src/components/lights/RectAreaLightComponent.ts +151 -0
  1264. package/src/components/lights/SpotLightComponent.ts +193 -0
  1265. package/src/components/lights/index.ts +17 -0
  1266. package/src/components/movement/AerialMovementComponent.ts +348 -0
  1267. package/src/components/movement/AirplaneMovementComponent.ts +236 -0
  1268. package/src/components/movement/BasePawnMovementComponent.ts +297 -0
  1269. package/src/components/movement/CharacterMovementComponent.ts +446 -0
  1270. package/src/components/movement/DirectionalCharacterMovementComponent.ts +79 -0
  1271. package/src/components/movement/NpcMovementComponent.ts +930 -0
  1272. package/src/components/movement/PathMovementComponent.ts +190 -0
  1273. package/src/components/movement/TopDownMovementComponent.ts +88 -0
  1274. package/src/components/movement/TweenMovementComponent.ts +386 -0
  1275. package/src/components/movement/VehicleMovementComponent.ts +469 -0
  1276. package/src/components/movement/index.ts +19 -0
  1277. package/src/components/physics/RagdollComponent.ts +730 -0
  1278. package/src/components/visual/AnimationComponent.ts +208 -0
  1279. package/src/components/visual/AnimationStateMachineComponent.ts +1079 -0
  1280. package/src/components/visual/BaseInstancedMeshComponent.ts +904 -0
  1281. package/src/components/visual/BillboardComponent.ts +127 -0
  1282. package/src/components/visual/EditorOnlyMeshComponent.ts +54 -0
  1283. package/src/components/visual/FogComponent.ts +131 -0
  1284. package/src/components/visual/GLTFMeshComponent.ts +444 -0
  1285. package/src/components/visual/InstancedGltfMeshComponent.ts +215 -0
  1286. package/src/components/visual/InstancedMeshComponent.ts +118 -0
  1287. package/src/components/visual/MeshComponent.ts +224 -0
  1288. package/src/components/visual/ParticleEmitterComponent.ts +628 -0
  1289. package/src/components/visual/SkyboxComponent.ts +381 -0
  1290. package/src/components/visual/TerrainMeshComponent.ts +346 -0
  1291. package/src/components/visual/UI3DComponent.ts +264 -0
  1292. package/src/components/visual/index.ts +23 -0
  1293. package/src/components/voxel/MagicaVoxelLoader.ts +184 -0
  1294. package/src/components/voxel/VoxelMeshComponent.ts +274 -0
  1295. package/src/components/voxel/index.ts +3 -0
  1296. package/src/const.ts +68 -0
  1297. package/src/csg/CSGUtils.ts +771 -0
  1298. package/src/csg/ManifoldWrapper.ts +704 -0
  1299. package/src/csg/index.ts +13 -0
  1300. package/src/dependencies.ts +76 -0
  1301. package/src/game/GameBuilder.ts +280 -0
  1302. package/src/game/GameLoop.ts +614 -0
  1303. package/src/game/GameMode.ts +127 -0
  1304. package/src/game/Playable.ts +84 -0
  1305. package/src/game/World.ts +1430 -0
  1306. package/src/game/index.ts +18 -0
  1307. package/src/global.d.ts +11 -0
  1308. package/src/index.ts +39 -0
  1309. package/src/materials.ts +181 -0
  1310. package/src/multiplayer/MovementPrediction.ts +202 -0
  1311. package/src/multiplayer/NetWorld.ts +920 -0
  1312. package/src/multiplayer/README.md +349 -0
  1313. package/src/multiplayer/implementations/MemorySession.ts +112 -0
  1314. package/src/multiplayer/implementations/WebSocketSession.ts +468 -0
  1315. package/src/multiplayer/implementations/index.ts +14 -0
  1316. package/src/multiplayer/index.ts +16 -0
  1317. package/src/multiplayer/interface.ts +174 -0
  1318. package/src/navigation/NavigationServer.ts +170 -0
  1319. package/src/navigation/RecastNavigationServer.ts +370 -0
  1320. package/src/navigation/index.ts +17 -0
  1321. package/src/npc/behavior-tree/BehaviorNode.ts +191 -0
  1322. package/src/npc/behavior-tree/BehaviorTreeComponent.ts +351 -0
  1323. package/src/npc/behavior-tree/behaviors/BehaviorAction.ts +97 -0
  1324. package/src/npc/behavior-tree/behaviors/ConditionEvaluator.ts +128 -0
  1325. package/src/npc/behavior-tree/behaviors/actions/aerial/AerialMoveToTargetAction.ts +128 -0
  1326. package/src/npc/behavior-tree/behaviors/actions/aerial/AerialSearchAction.ts +159 -0
  1327. package/src/npc/behavior-tree/behaviors/actions/aerial/AerialTrackTargetAction.ts +76 -0
  1328. package/src/npc/behavior-tree/behaviors/actions/aerial/AerialWanderAction.ts +160 -0
  1329. package/src/npc/behavior-tree/behaviors/actions/aerial/index.ts +5 -0
  1330. package/src/npc/behavior-tree/behaviors/actions/combat/MeleeAttackAction.ts +151 -0
  1331. package/src/npc/behavior-tree/behaviors/actions/combat/ShootAction.ts +158 -0
  1332. package/src/npc/behavior-tree/behaviors/actions/combat/index.ts +3 -0
  1333. package/src/npc/behavior-tree/behaviors/actions/ground/FleeFromTargetAction.ts +157 -0
  1334. package/src/npc/behavior-tree/behaviors/actions/ground/FollowActorAction.ts +131 -0
  1335. package/src/npc/behavior-tree/behaviors/actions/ground/MoveToPositionAction.ts +99 -0
  1336. package/src/npc/behavior-tree/behaviors/actions/ground/SetNextWaypointAction.ts +114 -0
  1337. package/src/npc/behavior-tree/behaviors/actions/ground/WanderAction.ts +146 -0
  1338. package/src/npc/behavior-tree/behaviors/actions/ground/index.ts +6 -0
  1339. package/src/npc/behavior-tree/behaviors/actions/index.ts +13 -0
  1340. package/src/npc/behavior-tree/behaviors/actions/utility/CalculateTacticalPositionAction.ts +117 -0
  1341. package/src/npc/behavior-tree/behaviors/actions/utility/LookAtTargetAction.ts +136 -0
  1342. package/src/npc/behavior-tree/behaviors/actions/utility/WaitAction.ts +70 -0
  1343. package/src/npc/behavior-tree/behaviors/actions/utility/index.ts +4 -0
  1344. package/src/npc/behavior-tree/behaviors/conditions/BlackboardValueCondition.ts +144 -0
  1345. package/src/npc/behavior-tree/behaviors/conditions/CanSeeTargetCondition.ts +171 -0
  1346. package/src/npc/behavior-tree/behaviors/conditions/HasLastKnownPositionCondition.ts +63 -0
  1347. package/src/npc/behavior-tree/behaviors/conditions/HpAbovePercentCondition.ts +83 -0
  1348. package/src/npc/behavior-tree/behaviors/conditions/IsPlayerNearCondition.ts +49 -0
  1349. package/src/npc/behavior-tree/behaviors/conditions/TargetBelowHpPercentCondition.ts +61 -0
  1350. package/src/npc/behavior-tree/behaviors/conditions/TargetInConeCondition.ts +106 -0
  1351. package/src/npc/behavior-tree/behaviors/conditions/TimeLimitCondition.ts +65 -0
  1352. package/src/npc/behavior-tree/behaviors/conditions/index.ts +19 -0
  1353. package/src/npc/behavior-tree/behaviors/index.ts +9 -0
  1354. package/src/npc/behavior-tree/blackboard/Blackboard.ts +127 -0
  1355. package/src/npc/behavior-tree/blackboard/BlackboardKey.ts +59 -0
  1356. package/src/npc/behavior-tree/blackboard/index.ts +2 -0
  1357. package/src/npc/behavior-tree/index.ts +27 -0
  1358. package/src/npc/behavior-tree/loader/BehaviorTreeLoader.ts +296 -0
  1359. package/src/npc/behavior-tree/nodes/CompositeNode.ts +100 -0
  1360. package/src/npc/behavior-tree/nodes/LeafNode.ts +11 -0
  1361. package/src/npc/behavior-tree/nodes/composite/SelectorNode.ts +56 -0
  1362. package/src/npc/behavior-tree/nodes/composite/SequenceNode.ts +56 -0
  1363. package/src/physics/BasePhysicsEngine.ts +1486 -0
  1364. package/src/physics/IPhysicsVehicle.ts +162 -0
  1365. package/src/physics/PhysicsEngine.ts +517 -0
  1366. package/src/physics/PhysicsTypes.ts +116 -0
  1367. package/src/physics/implementations/RapierDebugRender.ts +55 -0
  1368. package/src/physics/implementations/RapierPhysics.ts +1419 -0
  1369. package/src/physics/implementations/RapierVehicle.ts +267 -0
  1370. package/src/physics/index.ts +16 -0
  1371. package/src/render/EdgeOutlineEffect.ts +365 -0
  1372. package/src/render/PostProcessManager.ts +1025 -0
  1373. package/src/render/Renderer.ts +310 -0
  1374. package/src/render/Texture.ts +140 -0
  1375. package/src/render/index.ts +22 -0
  1376. package/src/render/lightmapping/LightmapAtlas.ts +248 -0
  1377. package/src/render/lightmapping/LightmapBaker.ts +333 -0
  1378. package/src/render/lightmapping/LightmapManager.ts +752 -0
  1379. package/src/render/lightmapping/LightmapMaterial.ts +283 -0
  1380. package/src/render/lightmapping/LightmapSerialization.ts +336 -0
  1381. package/src/render/lightmapping/LightmapSerializer.ts +309 -0
  1382. package/src/render/lightmapping/MultiLightmapperMaterial.ts +484 -0
  1383. package/src/render/lightmapping/index.ts +18 -0
  1384. package/src/render/postprocessing/EffectPassWrapper.ts +47 -0
  1385. package/src/render/postprocessing/ObjectOutlineEffect.ts +356 -0
  1386. package/src/render/postprocessing/index.ts +2 -0
  1387. package/src/runtime/GameRuntime.ts +153 -0
  1388. package/src/runtime/InjectedDependencies.ts +70 -0
  1389. package/src/runtime/Utils.ts +146 -0
  1390. package/src/runtime/index.ts +4 -0
  1391. package/src/runtime/materials/MatcapShaderMaterial.ts +242 -0
  1392. package/src/runtime/materials/index.ts +1 -0
  1393. package/src/scripting/Plugin.ts +67 -0
  1394. package/src/scripting/PluginManager.ts +99 -0
  1395. package/src/scripting/index.ts +1 -0
  1396. package/src/storage/defaultStorageProvider.ts +95 -0
  1397. package/src/storage/index.ts +16 -0
  1398. package/src/storage/projectContext.ts +176 -0
  1399. package/src/storage/storageProvider.ts +271 -0
  1400. package/src/systems/ClassRegistry.ts +484 -0
  1401. package/src/systems/ConsoleManager.ts +484 -0
  1402. package/src/systems/ConsoleVariableHandler.ts +105 -0
  1403. package/src/systems/ConsoleVariableManager.ts +288 -0
  1404. package/src/systems/InputManager.ts +1255 -0
  1405. package/src/systems/ObjectNamingSystem.ts +30 -0
  1406. package/src/systems/Stats.ts +178 -0
  1407. package/src/systems/TimerSystem.ts +353 -0
  1408. package/src/systems/TweenManager.ts +107 -0
  1409. package/src/systems/WorldSerialization.ts +1211 -0
  1410. package/src/systems/collision/CollisionConfig.ts +281 -0
  1411. package/src/systems/collision/CollisionTypes.ts +185 -0
  1412. package/src/systems/collision/index.ts +15 -0
  1413. package/src/systems/index.ts +23 -0
  1414. package/src/templates/MyActor.ts +29 -0
  1415. package/src/templates/MySceneComponent.ts +29 -0
  1416. package/src/templates/README.md +1 -0
  1417. package/src/types/rapier-es.d.ts +16 -0
  1418. package/src/types/stats.js.d.ts +22 -0
  1419. package/src/ui/LoadingScreen.ts +110 -0
  1420. package/src/ui/UIElement.ts +224 -0
  1421. package/src/ui/UILayout.ts +269 -0
  1422. package/src/ui/UIManager.ts +161 -0
  1423. package/src/ui/UIResource.ts +20 -0
  1424. package/src/ui/components/AmmoCounter.ts +126 -0
  1425. package/src/ui/components/BaseUIComponent.md +296 -0
  1426. package/src/ui/components/BaseUIComponent.ts +390 -0
  1427. package/src/ui/components/Compass.ts +144 -0
  1428. package/src/ui/components/ControlsPanel.ts +62 -0
  1429. package/src/ui/components/Crosshair.ts +76 -0
  1430. package/src/ui/components/InventoryBar.ts +224 -0
  1431. package/src/ui/components/InventoryGrid.ts +471 -0
  1432. package/src/ui/components/Minimap.ts +181 -0
  1433. package/src/ui/components/NumberDisplay.ts +198 -0
  1434. package/src/ui/components/ProgressBar.ts +403 -0
  1435. package/src/ui/components/ReloadIndicator.ts +159 -0
  1436. package/src/ui/components/index.ts +12 -0
  1437. package/src/ui/index.ts +21 -0
  1438. package/src/ui/ui-loader.ts +87 -0
  1439. package/src/utils/Color.ts +51 -0
  1440. package/src/utils/Delegate.ts +112 -0
  1441. package/src/utils/DescriptionHelpers.ts +93 -0
  1442. package/src/utils/EditorClassMeta.ts +91 -0
  1443. package/src/utils/GlobalAudioManager.ts +370 -0
  1444. package/src/utils/IAsyncLoadable.ts +122 -0
  1445. package/src/utils/MaterialHelpers.ts +321 -0
  1446. package/src/utils/MathHelpers.ts +79 -0
  1447. package/src/utils/NodeJs.ts +79 -0
  1448. package/src/utils/Perlin.ts +346 -0
  1449. package/src/utils/ResourceManager.ts +716 -0
  1450. package/src/utils/SceneGraphUtils.ts +173 -0
  1451. package/src/utils/Spawn.ts +93 -0
  1452. package/src/utils/ThreeJsExtensions.ts +1200 -0
  1453. package/src/utils/TweenExtensions.ts +124 -0
  1454. package/src/utils/UserCodeEngine.ts +243 -0
  1455. package/src/utils/Utils.ts +328 -0
  1456. package/src/utils/VRButtonUtils.ts +125 -0
  1457. package/src/utils/browser-polyfills/module.ts +36 -0
  1458. package/src/utils/browser-polyfills/path.ts +232 -0
  1459. package/src/utils/index.ts +29 -0
  1460. package/src/utils/serialization/cdo.ts +87 -0
  1461. package/src/utils/serialization/clsAlias.ts +92 -0
  1462. package/src/utils/serialization/decorator.ts +176 -0
  1463. package/src/utils/serialization/index.ts +7 -0
  1464. package/src/utils/serialization/prefab.ts +78 -0
  1465. package/src/utils/serialization/prefabManager.ts +88 -0
  1466. package/src/utils/serialization/serializable.ts +28 -0
  1467. package/src/utils/serialization/serializer.ts +1111 -0
  1468. package/src/utils/serialization/specialization.ts +224 -0
  1469. package/src/utils/serialization/specializationUtils.ts +185 -0
  1470. package/src/vfx/VFXComponent.ts +206 -0
  1471. package/src/vfx/index.ts +17 -0
  1472. package/src/vfx/types.ts +287 -0
  1473. package/src/vfx/wawa-vfx-reference.md +399 -0
  1474. package/src/world-commands/common.ts +25 -0
  1475. package/src/world-commands/generate-code.ts +99 -0
  1476. package/src/world-commands/index.ts +19 -0
  1477. package/src/world-commands/place-gltf.ts +63 -0
  1478. package/src/world-commands/place-prefab.ts +62 -0
  1479. package/src/world-commands/place-primitive.ts +128 -0
  1480. package/src/world-commands/remove-actors.ts +32 -0
  1481. package/src/xr/VRActor.ts +71 -0
  1482. package/src/xr/VRControllerHandler.ts +87 -0
  1483. package/src/xr/VRControllerManager.ts +559 -0
  1484. package/src/xr/VRDeviceHandler.ts +77 -0
  1485. package/src/xr/VRHandHandler.ts +166 -0
  1486. package/src/xr/VRInputDevice.ts +374 -0
  1487. package/src/xr/VRPawn.ts +815 -0
  1488. package/src/xr/actor-components/CanvasUIComponent.ts +425 -0
  1489. package/src/xr/actor-components/VRBaseComponent.ts +26 -0
  1490. package/src/xr/actor-components/VRGrabbableComponent.ts +73 -0
  1491. package/src/xr/actor-components/VRInteractableComponent.ts +43 -0
  1492. package/src/xr/index.ts +17 -0
  1493. package/src/xr/pawn-components/VRGrabComponent.ts +435 -0
  1494. package/src/xr/pawn-components/VRInteractComponent.ts +77 -0
  1495. package/src/xr/pawn-components/VRSnapTurnComponent.ts +103 -0
  1496. package/src/xr/pawn-components/VRTeleportComponent.ts +284 -0
  1497. package/src/xr/ui/CanvasColorPicker.ts +172 -0
  1498. package/src/xr/ui/CanvasKeyboard.ts +283 -0
  1499. package/src/xr/ui/CanvasSlider.ts +83 -0
  1500. package/src/xr/ui/CanvasUI.ts +879 -0
  1501. package/src/xr/ui/index.ts +9 -0
@@ -0,0 +1,904 @@
1
+ /**
2
+ * BaseInstancedMeshComponent provides the foundation for components that manage
3
+ * multiple THREE.InstancedMesh objects efficiently.
4
+ *
5
+ * This component allows rendering multiple instances of different geometry and material
6
+ * combinations efficiently. Each geometry-material pair creates its own InstancedMesh,
7
+ * and each instance can have its own transform matrix and optional per-instance colors.
8
+ * This is ideal for rendering large numbers of similar objects like grass, rocks, trees,
9
+ * or particles with minimal performance impact.
10
+ *
11
+ * The component manages instance matrices and colors internally, providing methods
12
+ * to update individual instances or all instances at once. It synchronizes shadow
13
+ * settings and ensures proper cleanup when instances are added or removed.
14
+ */
15
+ import * as THREE from 'three';
16
+
17
+ import { ClassRegistry, EngineClass } from '../../systems/ClassRegistry.js';
18
+ import { resourceManager } from '../../utils/ResourceManager.js';
19
+ import { isNode } from '../../utils/Utils.js';
20
+ import { PrimitiveComponent } from '../PrimitiveComponent.js';
21
+
22
+ import type { GenericMaterialType } from '../../materials.js';
23
+ import type { EditorClassMeta, EditorPropertyChangedResult } from '../../utils/EditorClassMeta.js';
24
+ import type { SceneGraphDebugNode } from '../../utils/SceneGraphUtils.js';
25
+ import type { ComponentDescriptionOptions } from '../Component.js';
26
+ import type { PrimitiveComponentOptions } from '../PrimitiveComponent.js';
27
+
28
+ export interface GeometryMaterialPair {
29
+ geometry: THREE.BufferGeometry;
30
+ material: GenericMaterialType;
31
+ geometryMatrix?: THREE.Matrix4;
32
+ }
33
+
34
+ export interface InstanceTransform {
35
+ position?: THREE.Vector3;
36
+ rotation?: THREE.Euler;
37
+ scale?: THREE.Vector3;
38
+ }
39
+
40
+ export interface BaseInstancedMeshComponentOptions extends PrimitiveComponentOptions {
41
+ maxInstances?: number;
42
+ availableInstances?: number;
43
+ uvScaleTilesPerUnit?: number;
44
+ excludeFromNavigation?: boolean;
45
+ instances?: InstanceTransform[];
46
+ isWorldSpace?: boolean;
47
+ colors?: THREE.Color[] | THREE.Color | Map<number, THREE.Color>; // color(s) applied to instances - single color for all, array per instance, or map of index to color
48
+ updatePhysicsOnInstanceTransform?: boolean; // if physics should be updated when any instance transform changes
49
+ instanceScale?: THREE.Vector3; // base scale applied to all instances
50
+ instanceRotation?: THREE.Vector3; // base rotation applied to all instances (in degrees)
51
+ instanceOffset?: THREE.Vector3; // base position offset applied to all instances
52
+ instanceDensity?: number; // density value for editor placement frequency
53
+ instanceScaleDelta?: number; // multiplicative scale variance (0.1 = 10% variance)
54
+ instanceRotationDelta?: THREE.Vector3; // additive rotation variance applied randomly (in degrees)
55
+ instanceOffsetDelta?: THREE.Vector3; // additive position offset variance applied randomly
56
+ }
57
+
58
+ @EngineClass('BaseInstancedMeshComponent')
59
+ export class BaseInstancedMeshComponent<TOptions extends BaseInstancedMeshComponentOptions = BaseInstancedMeshComponentOptions> extends PrimitiveComponent<TOptions> {
60
+ protected _geometryMaterialPairs: GeometryMaterialPair[] = [];
61
+ protected instancedMeshes: THREE.InstancedMesh[] = [];
62
+ private shouldRefreshPhysics: boolean = false;
63
+
64
+ static override readonly EDITOR_CLASS_META: EditorClassMeta = {
65
+ ...PrimitiveComponent.EDITOR_CLASS_META,
66
+ maxInstances: { number: { min: 1, step: 1 } },
67
+ instances: { hidden: true },
68
+ availableInstances: { readonly: true },
69
+ instanceDensity: { number: { min: 0, step: 0.1 } },
70
+ } as const;
71
+
72
+ static override get DEFAULT_OPTIONS(): BaseInstancedMeshComponentOptions {
73
+ const DEFAULT_MAX_INSTANCES = 1000;
74
+
75
+ return {
76
+ ...PrimitiveComponent.DEFAULT_OPTIONS,
77
+ maxInstances: DEFAULT_MAX_INSTANCES,
78
+ excludeFromNavigation: false,
79
+ uvScaleTilesPerUnit: 1,
80
+ instances: [{position: new THREE.Vector3(), rotation: new THREE.Euler(), scale: new THREE.Vector3(1, 1, 1)}],
81
+ isWorldSpace: false,
82
+ colors: undefined,
83
+ updatePhysicsOnInstanceTransform: false,
84
+ availableInstances: DEFAULT_MAX_INSTANCES,
85
+ instanceScale: new THREE.Vector3(1, 1, 1),
86
+ instanceRotation: new THREE.Vector3(0, 0, 0),
87
+ instanceOffset: new THREE.Vector3(0, 0, 0),
88
+ instanceDensity: 1.0,
89
+ instanceScaleDelta: 0.0,
90
+ instanceRotationDelta: new THREE.Vector3(0, 0, 0),
91
+ instanceOffsetDelta: new THREE.Vector3(0, 0, 0),
92
+ };
93
+ } /**
94
+ * Creates a new BaseInstancedMeshComponent with the specified options
95
+ * @param options Configuration options for the base instanced mesh component
96
+ */
97
+ constructor(options: TOptions = (BaseInstancedMeshComponent.DEFAULT_OPTIONS as TOptions)) {
98
+ console.log('BaseInstancedMeshComponent constructor called with options:', options);
99
+ super(options);
100
+
101
+ // make sure we're ready for populating instances
102
+ this.updateMatrixWorld(true);
103
+ }
104
+
105
+ public override tickPrePhysics(deltaTime: number): void {
106
+ if (this.shouldRefreshPhysics) {
107
+ this.refreshPhysics();
108
+ this.shouldRefreshPhysics = false;
109
+ }
110
+ super.tickPrePhysics(deltaTime);
111
+ }
112
+
113
+ protected populateInstances(geometriesAndMaterials: GeometryMaterialPair[]) {
114
+ const options = this.options;
115
+ const maxInstances = this.getMaxInstances();
116
+ const availableInstances = this.availableInstances;
117
+
118
+ this._geometryMaterialPairs = geometriesAndMaterials;
119
+ if (geometriesAndMaterials.length === 0) {
120
+ console.warn('BaseInstancedMeshComponent.populateInstances called with empty geometry-material pairs');
121
+ }
122
+
123
+ // Initialize instanced meshes from geometry-material pairs
124
+ // Buffer capacity should be the maxInstances guard
125
+ this.initializeInstancedMeshes(geometriesAndMaterials, maxInstances);
126
+
127
+ // Set initial instances if provided, clamped by maxInstances
128
+ const instances = options.instances ?? [];
129
+ if (instances.length > 0) {
130
+ const isWorldSpace = options.isWorldSpace ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.isWorldSpace;
131
+ const effectiveCount = Math.min(instances.length, maxInstances);
132
+ this.setInstanceTransforms(instances.slice(0, effectiveCount), isWorldSpace);
133
+ }
134
+
135
+ // Apply colors if provided
136
+ if (options.colors) {
137
+ this.setInstanceColors(options.colors);
138
+ }
139
+
140
+ console.log(
141
+ 'BaseInstancedMeshComponent populated:',
142
+ 'availableInstances:', availableInstances,
143
+ 'maxInstances:', maxInstances,
144
+ 'actuallyShown:', Math.min(availableInstances, maxInstances),
145
+ 'meshCount:', this.instancedMeshes.length,
146
+ 'isWorldSpace:', this.options.isWorldSpace
147
+ );
148
+ }
149
+
150
+ protected repopulateInstances() {
151
+ this.populateInstances(this._geometryMaterialPairs);
152
+ }
153
+
154
+ public requestUpdatePhysics(): void {
155
+ this.shouldRefreshPhysics = true;
156
+ }
157
+
158
+ protected override shouldSyncToPhysics(): boolean {
159
+ // if this.shouldRefreshPhysics is true, physics will be re-created in tickPrePhysics,
160
+ // also the instances won't move if the instanced mesh component itself moves
161
+ // so no need to update physics by syncToPhysics
162
+ return false;
163
+ }
164
+
165
+ protected initializeInstancedMeshes(pairs: GeometryMaterialPair[], maxInstances: number): void {
166
+ // Clear existing meshes
167
+ this.clearInstancedMeshes();
168
+
169
+ for (const pair of pairs) {
170
+ const instancedMesh = new THREE.InstancedMesh(
171
+ pair.geometry,
172
+ undefined,
173
+ maxInstances
174
+ );
175
+ instancedMesh.userData.geometryMatrix = pair.geometryMatrix;
176
+ instancedMesh.userData.geometryMatrixInv = pair.geometryMatrix ? pair.geometryMatrix.clone().invert() : undefined;
177
+
178
+ this.instancedMeshes.push(instancedMesh);
179
+ this.setupInstancedMesh(instancedMesh);
180
+
181
+ // Set material if not in Node.js environment
182
+ if (!isNode()) {
183
+ this.setMaterialForMesh(instancedMesh, pair.material);
184
+ }
185
+ }
186
+ }
187
+
188
+ private setupInstancedMesh(instancedMesh: THREE.InstancedMesh): void {
189
+ instancedMesh.setTransient(true);
190
+ this.bindObject3DProperties(instancedMesh, ['castShadow', 'receiveShadow']);
191
+ this.add(instancedMesh);
192
+ instancedMesh.updateMatrixWorld(true);
193
+
194
+ // TODO: Fix me
195
+ // if (this.options.uvScaleTilesPerUnit) {
196
+ // MaterialUtils.scaleUVsBySize(instancedMesh, this.options.uvScaleTilesPerUnit);
197
+ // }
198
+ }
199
+
200
+ private setMaterialForMesh(instancedMesh: THREE.InstancedMesh, material: GenericMaterialType): void {
201
+ if (typeof material === 'string') {
202
+ // Otherwise, load it asynchronously
203
+ resourceManager.loadGenericMaterial(material).then((loadedMaterial) => {
204
+ if (loadedMaterial) {
205
+ instancedMesh.material = loadedMaterial;
206
+ }
207
+ });
208
+ } else {
209
+ // If it's already a THREE.Material, apply it immediately
210
+ instancedMesh.material = material;
211
+ }
212
+ }
213
+
214
+ private clearInstancedMeshes(): void {
215
+ for (const mesh of this.instancedMeshes) {
216
+ mesh.removeFromParent();
217
+ }
218
+ this.instancedMeshes = [];
219
+ }
220
+
221
+ /**
222
+ * Returns all THREE.InstancedMesh objects associated with this component
223
+ * @returns Array of THREE.InstancedMesh instances
224
+ */
225
+ public getInstancedMeshes(): THREE.InstancedMesh[] {
226
+ return this.instancedMeshes;
227
+ }
228
+
229
+ /**
230
+ * Returns a specific THREE.InstancedMesh by index
231
+ * @param index Index of the mesh to retrieve
232
+ * @returns The THREE.InstancedMesh instance or undefined if index is invalid
233
+ */
234
+ public getInstancedMesh(index: number = 0): THREE.InstancedMesh | undefined {
235
+ return this.instancedMeshes[index];
236
+ }
237
+
238
+ /**
239
+ * Returns the materials of all instanced meshes
240
+ * @returns Array of materials
241
+ */
242
+ public getMaterials(): (THREE.Material | THREE.Material[])[] {
243
+ return this.instancedMeshes.map(mesh => mesh.material);
244
+ }
245
+
246
+ /**
247
+ * Returns the material of a specific instanced mesh
248
+ * @param index Index of the mesh
249
+ * @returns The material of the instanced mesh or undefined if index is invalid
250
+ */
251
+ public getMaterial(index: number = 0): THREE.Material | THREE.Material[] | undefined {
252
+ const mesh = this.instancedMeshes[index];
253
+ return mesh?.material;
254
+ }
255
+
256
+ /**
257
+ * Updates the geometry of a specific instanced mesh
258
+ * @param geometry The new THREE.BufferGeometry to apply
259
+ * @param index Index of the mesh to update
260
+ */
261
+ public setGeometry(geometry: THREE.BufferGeometry, index: number = 0): void {
262
+ const mesh = this.instancedMeshes[index];
263
+ if (mesh) {
264
+ mesh.geometry = geometry;
265
+ }
266
+ }
267
+
268
+ /**
269
+ * Updates the material of a specific instanced mesh
270
+ * @param material The new material to apply
271
+ * @param index Index of the mesh to update
272
+ */
273
+ public setMaterial(material: GenericMaterialType, index: number = 0): void {
274
+ const mesh = this.instancedMeshes[index];
275
+ if (mesh) {
276
+ this.setMaterialForMesh(mesh, material);
277
+ }
278
+ }
279
+
280
+ /**
281
+ * Gets the number of available instance transforms
282
+ * @returns The count of instance positions available
283
+ */
284
+ public get availableInstances(): number {
285
+ return this.options.instances?.length ?? 0;
286
+ }
287
+
288
+ /**
289
+ * Gets the current number of active instances
290
+ * @returns The number of instances currently being rendered
291
+ */
292
+ public getInstanceCount(): number {
293
+ if (this.instancedMeshes.length === 0) {
294
+ return 0;
295
+ }
296
+ return this.instancedMeshes[0].count;
297
+ }
298
+
299
+ /**
300
+ * Gets the maximum number of instances this component can handle
301
+ * This is the effective limit considering both available instances and the maxInstances guard
302
+ * @returns The maximum instance count
303
+ */
304
+ public getMaxInstances(): number {
305
+ const optionsMax = this.options.maxInstances ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.maxInstances!;
306
+ return optionsMax;
307
+ }
308
+
309
+ /**
310
+ * Gets the capacity of the instanced mesh buffers
311
+ * @returns The buffer capacity
312
+ */
313
+ private getBufferCapacity(): number {
314
+ if (this.instancedMeshes.length === 0) {
315
+ return 0;
316
+ }
317
+ return this.instancedMeshes[0].instanceMatrix.count;
318
+ }
319
+
320
+ /**
321
+ * Private core function that sets a transform for a specific instance on all meshes
322
+ * @param instanceId The index of the instance to update
323
+ * @param transform The transformation to apply
324
+ * @param isWorldSpace Whether the transform is in world space (true) or local space (false)
325
+ */
326
+ private setInstanceTransformCore(instanceId: number, transform: InstanceTransform, isWorldSpace: boolean): void {
327
+ // Validate instance ID against buffer capacity
328
+ const bufferCapacity = this.getBufferCapacity();
329
+ if (instanceId < 0 || instanceId >= bufferCapacity) {
330
+ return;
331
+ }
332
+
333
+ // Create matrix from transform
334
+ const matrix = new THREE.Matrix4();
335
+ const euler = transform.rotation ?? new THREE.Euler();
336
+ matrix.compose(
337
+ transform.position ?? new THREE.Vector3(),
338
+ new THREE.Quaternion().setFromEuler(euler),
339
+ transform.scale ?? new THREE.Vector3(1, 1, 1)
340
+ );
341
+
342
+ // Update all meshes
343
+ for (const mesh of this.instancedMeshes) {
344
+ // Create a copy of the matrix for this mesh
345
+ const meshMatrix = matrix.clone();
346
+
347
+ if (mesh.userData.geometryMatrix) {
348
+ meshMatrix.multiply(mesh.userData.geometryMatrix);
349
+ }
350
+
351
+ // If world space, we need to convert to local space relative to the mesh
352
+ if (isWorldSpace) {
353
+ const meshWorldMatrixInverse = new THREE.Matrix4().copy(mesh.matrixWorld).invert();
354
+ meshMatrix.premultiply(meshWorldMatrixInverse);
355
+ }
356
+
357
+ mesh.setMatrixAt(instanceId, meshMatrix);
358
+ mesh.instanceMatrix.needsUpdate = true;
359
+ }
360
+
361
+ if (this.options.updatePhysicsOnInstanceTransform) {
362
+ this.requestUpdatePhysics();
363
+ }
364
+ }
365
+
366
+ /**
367
+ * Sets the transform for a specific instance across all meshes
368
+ * @param instanceId The index of the instance to update
369
+ * @param transform The transformation to apply
370
+ * @param isWorldSpace Whether the transform is in world space (default: true) or local space
371
+ */
372
+ public setInstanceTransform(instanceId: number, transform: InstanceTransform, isWorldSpace: boolean = false): void {
373
+ this.setInstanceTransformCore(instanceId, transform, isWorldSpace);
374
+ }
375
+
376
+ /**
377
+ * Updates all instance transforms at once for all meshes
378
+ * @param transforms Array of transformations
379
+ * @param isWorldSpace Whether the transforms are in world space (default: true) or local space
380
+ */
381
+ public setInstanceTransforms(transforms: InstanceTransform[], isWorldSpace: boolean = false): void {
382
+ const bufferCapacity = this.getBufferCapacity();
383
+ const count = Math.min(transforms.length, bufferCapacity);
384
+ console.log(`setInstanceTransforms: setting ${count} transforms (bufferCapacity: ${bufferCapacity}, worldSpace: ${isWorldSpace})`);
385
+
386
+ // Use the core function for each transform
387
+ for (let i = 0; i < count; i++) {
388
+ this.setInstanceTransformCore(i, transforms[i], isWorldSpace);
389
+ }
390
+
391
+ // Update the instance count to match the number of transforms provided
392
+ for (const mesh of this.instancedMeshes) {
393
+ mesh.count = count;
394
+ }
395
+ console.log(`Instance count after setInstanceTransforms: ${count}`);
396
+ }
397
+
398
+ /**
399
+ * Gets the transform for a specific instance from the first mesh
400
+ * @param instanceId The index of the instance to get
401
+ * @param isWorldSpace Whether to return the transform in world space (default: true) or local space
402
+ * @returns The transformation of the instance
403
+ */
404
+ public getInstanceTransform(instanceId: number, isWorldSpace: boolean = false): InstanceTransform | null {
405
+ const mesh = this.instancedMeshes[0];
406
+ if (!mesh || instanceId < 0 || instanceId >= this.getInstanceCount()) {
407
+ return null;
408
+ }
409
+
410
+ const matrix = new THREE.Matrix4();
411
+ mesh.getMatrixAt(instanceId, matrix);
412
+
413
+ if (mesh.userData.geometryMatrixInv) {
414
+ matrix.multiply(mesh.userData.geometryMatrixInv);
415
+ }
416
+
417
+ // If world space, convert from local to world space
418
+ if (isWorldSpace) {
419
+ // Force update the mesh's world matrix to ensure it's current
420
+ mesh.updateMatrixWorld(true);
421
+ matrix.premultiply(mesh.matrixWorld);
422
+ }
423
+
424
+ // Decompose matrix into transform components
425
+ const position = new THREE.Vector3();
426
+ const quaternion = new THREE.Quaternion();
427
+ const scale = new THREE.Vector3();
428
+ matrix.decompose(position, quaternion, scale);
429
+
430
+ const rotation = new THREE.Euler().setFromQuaternion(quaternion);
431
+
432
+ return {
433
+ position,
434
+ rotation,
435
+ scale
436
+ };
437
+ }
438
+
439
+
440
+ /**
441
+ * Gets the transforms for all instances from the first mesh
442
+ * @param isWorldSpace Whether to return the transforms in world space (default: false) or local space
443
+ * @returns Array of transformations for all instances
444
+ */
445
+ public getInstancesTransforms(isWorldSpace: boolean = false): InstanceTransform[] {
446
+ const instanceCount = this.getInstanceCount();
447
+ const transforms: InstanceTransform[] = [];
448
+
449
+ for (let i = 0; i < instanceCount; i++) {
450
+ const transform = this.getInstanceTransform(i, isWorldSpace);
451
+ if (transform) {
452
+ transforms.push(transform);
453
+ }
454
+ }
455
+
456
+ return transforms;
457
+ }
458
+
459
+ /**
460
+ * Adds a single instance at the end of the current instances
461
+ * @param transform The transformation for the new instance
462
+ * @param isWorldSpace Whether the transform is in world space (default: true) or local space
463
+ * @returns The index of the newly added instance, or -1 if max instances reached
464
+ */
465
+ public addInstance(transform: InstanceTransform, isWorldSpace: boolean = false): number {
466
+ const currentCount = this.getInstanceCount();
467
+ const bufferCapacity = this.getBufferCapacity();
468
+
469
+ if (currentCount >= bufferCapacity) {
470
+ console.warn(`Cannot add instance: buffer capacity (${bufferCapacity}) reached`);
471
+ return -1;
472
+ }
473
+
474
+ const newInstanceId = currentCount;
475
+ this.setInstanceTransformCore(newInstanceId, transform, isWorldSpace);
476
+
477
+ // Update instance count
478
+ for (const mesh of this.instancedMeshes) {
479
+ mesh.count = currentCount + 1;
480
+ }
481
+
482
+ return newInstanceId;
483
+ }
484
+
485
+ /**
486
+ * Adds multiple instances at the end of the current instances
487
+ * @param transforms Array of transformations for the new instances
488
+ * @param isWorldSpace Whether the transforms are in world space (default: true) or local space
489
+ * @returns Array of indices of the newly added instances
490
+ */
491
+ public addInstances(transforms: InstanceTransform[], isWorldSpace: boolean = false): number[] {
492
+ const currentCount = this.getInstanceCount();
493
+ const bufferCapacity = this.getBufferCapacity();
494
+ const availableSlots = bufferCapacity - currentCount;
495
+ const addCount = Math.min(transforms.length, availableSlots);
496
+
497
+ if (addCount < transforms.length) {
498
+ console.warn(`Cannot add all instances: only ${availableSlots} slots available, requested ${transforms.length}`);
499
+ }
500
+
501
+ const addedIndices: number[] = [];
502
+ for (let i = 0; i < addCount; i++) {
503
+ const newInstanceId = currentCount + i;
504
+ this.setInstanceTransformCore(newInstanceId, transforms[i], isWorldSpace);
505
+ addedIndices.push(newInstanceId);
506
+ }
507
+
508
+ // Update instance count
509
+ for (const mesh of this.instancedMeshes) {
510
+ mesh.count = currentCount + addCount;
511
+ }
512
+
513
+ return addedIndices;
514
+ }
515
+
516
+ /**
517
+ * Updates the transform of an existing instance
518
+ * @param instanceId The index of the instance to update
519
+ * @param transform The new transformation
520
+ * @param isWorldSpace Whether the transform is in world space (default: true) or local space
521
+ * @returns True if the instance was updated, false if instanceId is invalid
522
+ */
523
+ public updateInstance(instanceId: number, transform: InstanceTransform, isWorldSpace: boolean = false): boolean {
524
+ if (instanceId < 0 || instanceId >= this.getInstanceCount()) {
525
+ return false;
526
+ }
527
+
528
+ this.setInstanceTransformCore(instanceId, transform, isWorldSpace);
529
+ return true;
530
+ }
531
+
532
+ /**
533
+ * Updates multiple existing instances
534
+ * @param updates Array of objects containing instanceId and transform
535
+ * @param isWorldSpace Whether the transforms are in world space (default: true) or local space
536
+ * @returns Number of instances successfully updated
537
+ */
538
+ public updateInstances(updates: Array<{instanceId: number, transform: InstanceTransform}>, isWorldSpace: boolean = false): number {
539
+ let updatedCount = 0;
540
+ const currentCount = this.getInstanceCount();
541
+
542
+ for (const update of updates) {
543
+ if (update.instanceId >= 0 && update.instanceId < currentCount) {
544
+ this.setInstanceTransformCore(update.instanceId, update.transform, isWorldSpace);
545
+ updatedCount++;
546
+ }
547
+ }
548
+
549
+ return updatedCount;
550
+ }
551
+
552
+ /**
553
+ * Removes a single instance by moving the last instance to its position
554
+ * @param instanceId The index of the instance to remove
555
+ * @returns True if the instance was removed, false if instanceId is invalid
556
+ */
557
+ public removeInstance(instanceId: number): boolean {
558
+ const currentCount = this.getInstanceCount();
559
+ if (instanceId < 0 || instanceId >= currentCount) {
560
+ return false;
561
+ }
562
+
563
+ // If it's not the last instance, move the last instance to this position
564
+ if (instanceId < currentCount - 1) {
565
+ const lastInstanceId = currentCount - 1;
566
+
567
+ // Copy transform from last instance to the removed instance's position
568
+ for (const mesh of this.instancedMeshes) {
569
+ const lastMatrix = new THREE.Matrix4();
570
+ mesh.getMatrixAt(lastInstanceId, lastMatrix);
571
+ mesh.setMatrixAt(instanceId, lastMatrix);
572
+
573
+ // Copy color if it exists
574
+ if (mesh.instanceColor) {
575
+ const lastColor = new THREE.Color();
576
+ mesh.getColorAt(lastInstanceId, lastColor);
577
+ mesh.setColorAt(instanceId, lastColor);
578
+ }
579
+
580
+ mesh.instanceMatrix.needsUpdate = true;
581
+ if (mesh.instanceColor) {
582
+ mesh.instanceColor.needsUpdate = true;
583
+ }
584
+ }
585
+ }
586
+
587
+ // Decrease instance count
588
+ for (const mesh of this.instancedMeshes) {
589
+ mesh.count = currentCount - 1;
590
+ }
591
+
592
+ this.requestUpdatePhysics();
593
+ return true;
594
+ }
595
+
596
+ /**
597
+ * Removes multiple instances by their indices
598
+ * @param instanceIds Array of instance indices to remove
599
+ * @returns Number of instances successfully removed
600
+ */
601
+ public removeInstances(instanceIds: number[]): number {
602
+ // Sort indices in descending order to avoid index shifting issues
603
+ const sortedIds = [...instanceIds].sort((a, b) => b - a);
604
+ let removedCount = 0;
605
+
606
+ for (const instanceId of sortedIds) {
607
+ if (this.removeInstance(instanceId)) {
608
+ removedCount++;
609
+ }
610
+ }
611
+
612
+ return removedCount;
613
+ }
614
+
615
+ /**
616
+ * Removes all instance data within a specified radius from a center point (eraser tool)
617
+ * This modifies the underlying instance data array and rebuilds the visual representation
618
+ * @param center The center point to check distance from
619
+ * @param radius The radius within which instances should be removed
620
+ * @param isWorldSpace Whether the center point is in world space (default: true) or local space
621
+ * @returns Number of instances successfully removed
622
+ */
623
+ public removeInstanceDataInRadius(center: THREE.Vector3, radius: number, isWorldSpace: boolean = true): number {
624
+ if (!this.options.instances || this.options.instances.length === 0) return 0;
625
+
626
+ const radiusSq = radius * radius;
627
+ const matrix = new THREE.Matrix4();
628
+ const position = new THREE.Vector3();
629
+ const scale = new THREE.Vector3();
630
+ const quaternion = new THREE.Quaternion();
631
+
632
+ // Get the component's world transform for local-to-world conversion
633
+ let componentWorldMatrix: THREE.Matrix4 | null = null;
634
+ if (isWorldSpace) {
635
+ this.updateMatrixWorld(true);
636
+ componentWorldMatrix = this.matrixWorld.clone();
637
+ }
638
+
639
+ // Filter out instances within the radius
640
+ const initialCount = this.options.instances.length;
641
+ this.options.instances = this.options.instances.filter((instance) => {
642
+ // Build matrix from instance transform
643
+ const euler = instance.rotation ?? new THREE.Euler();
644
+ quaternion.setFromEuler(euler);
645
+ matrix.compose(
646
+ instance.position ?? new THREE.Vector3(),
647
+ quaternion,
648
+ instance.scale ?? new THREE.Vector3(1, 1, 1)
649
+ );
650
+
651
+ // Convert to world space if needed
652
+ if (isWorldSpace && componentWorldMatrix) {
653
+ matrix.premultiply(componentWorldMatrix);
654
+ }
655
+
656
+ // Extract position and check distance
657
+ position.setFromMatrixPosition(matrix);
658
+ const distanceSq = position.distanceToSquared(center);
659
+
660
+ // Keep instances that are outside the radius
661
+ return distanceSq > radiusSq;
662
+ });
663
+
664
+ const removedCount = initialCount - this.options.instances.length;
665
+
666
+ // Rebuild visual representation if any were removed
667
+ if (removedCount > 0) {
668
+ this.repopulateInstances();
669
+ }
670
+
671
+ return removedCount;
672
+ }
673
+
674
+ /**
675
+ * Clears all instance data and rebuilds the instanced meshes
676
+ * This removes all instances from the underlying data array
677
+ */
678
+ public clearInstanceData(): void {
679
+ this.options.instances = [];
680
+ this.repopulateInstances();
681
+ }
682
+
683
+ /**
684
+ * Combines the base instance transform properties with a modification transform
685
+ * @param transform The modification transform to apply on top of base properties
686
+ * @returns Combined transform
687
+ */
688
+ protected combineWithBaseTransform(transform: InstanceTransform): InstanceTransform {
689
+ const baseScale = this.options.instanceScale ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.instanceScale!;
690
+ const baseRotation = this.options.instanceRotation ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.instanceRotation!;
691
+ const baseOffset = this.options.instanceOffset ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.instanceOffset!;
692
+ const scaleDelta = this.options.instanceScaleDelta ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.instanceScaleDelta!;
693
+ const rotationDelta = this.options.instanceRotationDelta ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.instanceRotationDelta!;
694
+ const offsetDelta = this.options.instanceOffsetDelta ?? BaseInstancedMeshComponent.DEFAULT_OPTIONS.instanceOffsetDelta!;
695
+
696
+ // Combine position: base offset + transform position + random offset delta
697
+ const position = new THREE.Vector3();
698
+ if (transform.position) {
699
+ position.copy(transform.position);
700
+ }
701
+ position.add(baseOffset);
702
+ position.x += (Math.random() * 2 - 1) * offsetDelta.x;
703
+ position.y += (Math.random() * 2 - 1) * offsetDelta.y;
704
+ position.z += (Math.random() * 2 - 1) * offsetDelta.z;
705
+
706
+ // Combine rotation: use quaternion multiplication for correct rotation composition
707
+ // Convert from degrees to radians for baseRotation and rotationDelta (user-specified as degrees)
708
+ // Note: transform.rotation is already a THREE.Euler in radians, so don't convert it
709
+ const qBase = new THREE.Quaternion().setFromEuler(new THREE.Euler(
710
+ THREE.MathUtils.degToRad(baseRotation.x),
711
+ THREE.MathUtils.degToRad(baseRotation.y),
712
+ THREE.MathUtils.degToRad(baseRotation.z)
713
+ ));
714
+ const qTransform = transform.rotation
715
+ ? new THREE.Quaternion().setFromEuler(transform.rotation)
716
+ : new THREE.Quaternion();
717
+ const qDelta = new THREE.Quaternion().setFromEuler(new THREE.Euler(
718
+ THREE.MathUtils.degToRad((Math.random() * 2 - 1) * rotationDelta.x),
719
+ THREE.MathUtils.degToRad((Math.random() * 2 - 1) * rotationDelta.y),
720
+ THREE.MathUtils.degToRad((Math.random() * 2 - 1) * rotationDelta.z)
721
+ ));
722
+
723
+ const qFinal = new THREE.Quaternion();
724
+ qFinal.multiplyQuaternions(qBase, qTransform);
725
+ qFinal.multiply(qDelta);
726
+
727
+ const rotation = new THREE.Euler().setFromQuaternion(qFinal);
728
+
729
+ // Combine scale: base scale * transform scale * (1 + random scale delta)
730
+ const scale = new THREE.Vector3();
731
+ scale.copy(baseScale);
732
+ if (transform.scale) {
733
+ scale.multiply(transform.scale);
734
+ }
735
+ const scaleMultiplier = 1 + (Math.random() * 2 - 1) * scaleDelta;
736
+ scale.multiplyScalar(scaleMultiplier);
737
+
738
+ return { position, rotation, scale };
739
+ }
740
+
741
+ /**
742
+ * Appends a new instance to the underlying instance data array and rebuilds
743
+ * @param transform The transformation for the new instance (applied as modification on top of base transform)
744
+ */
745
+ public pushInstanceData(transform: InstanceTransform): void {
746
+ this.options.instances ??= [];
747
+ const combinedTransform = this.combineWithBaseTransform(transform);
748
+ this.options.instances.push(combinedTransform);
749
+ this.repopulateInstances();
750
+ }
751
+
752
+ /**
753
+ * Gets the color for a specific instance from the first mesh
754
+ * @param instanceId The index of the instance to get
755
+ * @param target The color to store the result in (optional)
756
+ * @returns The color of the instance
757
+ */
758
+ public getInstanceColor(instanceId: number, target?: THREE.Color): THREE.Color {
759
+ const color = target ?? new THREE.Color();
760
+ const mesh = this.instancedMeshes[0];
761
+ if (mesh?.instanceColor && instanceId >= 0 && instanceId < this.getBufferCapacity()) {
762
+ mesh.getColorAt(instanceId, color);
763
+ }
764
+ return color;
765
+ }
766
+
767
+ /**
768
+ * Updates all instance colors at once for all meshes
769
+ * @param colors Array of colors, a single color to apply to all instances, or a map of index to color
770
+ */
771
+ public setInstanceColors(colors: THREE.Color[] | THREE.Color | Map<number, THREE.Color>): void {
772
+ const bufferCapacity = this.getBufferCapacity();
773
+ const isMap = colors instanceof Map;
774
+ const isSingleColor = !Array.isArray(colors) && !isMap;
775
+
776
+ for (const mesh of this.instancedMeshes) {
777
+ if (!mesh.instanceColor) {
778
+ // Create instance color attribute if it doesn't exist
779
+ const colorArray = new Float32Array(bufferCapacity * 3);
780
+ mesh.instanceColor = new THREE.InstancedBufferAttribute(colorArray, 3);
781
+ }
782
+
783
+ if (isSingleColor) {
784
+ // Apply single color to all instances
785
+ for (let i = 0; i < bufferCapacity; i++) {
786
+ mesh.setColorAt(i, colors as THREE.Color);
787
+ }
788
+ } else if (isMap) {
789
+ // Apply colors from map at specific indices
790
+ for (const [index, color] of colors.entries()) {
791
+ if (index >= 0 && index < bufferCapacity && color) {
792
+ mesh.setColorAt(index, color);
793
+ }
794
+ }
795
+ } else {
796
+ // Apply colors from array
797
+ const count = Math.min((colors as THREE.Color[]).length, bufferCapacity);
798
+ for (let i = 0; i < count; i++) {
799
+ const color = (colors as THREE.Color[])[i];
800
+ if (!color) continue;
801
+ mesh.setColorAt(i, color);
802
+ }
803
+ }
804
+ mesh.instanceColor.needsUpdate = true;
805
+ }
806
+
807
+ // Store colors back to options for serialization
808
+ this.options.colors = colors;
809
+ }
810
+
811
+ /**
812
+ * Marks the instance matrix buffer as needing an update for all meshes
813
+ * Call this after manually modifying instance data
814
+ */
815
+ public updateInstanceMatrix(): void {
816
+ for (const mesh of this.instancedMeshes) {
817
+ mesh.instanceMatrix.needsUpdate = true;
818
+ }
819
+ }
820
+
821
+ /**
822
+ * Entirely refreshes the physics representation for this component
823
+ * This need to be called if instances are updated
824
+ */
825
+ public refreshPhysics(): void {
826
+
827
+ const actor = this.getActor();
828
+ if (actor?.isPlaying() && this.isPhysicsEnabled()) {
829
+ const physicsEngine = this.getPhysicsEngine();
830
+ if (physicsEngine) {
831
+ // Remove existing physics representation
832
+ physicsEngine.removeComponent(this);
833
+
834
+ // Create new physics representation based on the loaded model
835
+ this.motionType = physicsEngine.addComponent(this) ?? null;
836
+ }
837
+ }
838
+ this.shouldRefreshPhysics = false;
839
+ }
840
+
841
+ public override beginPlay(): void {
842
+ super.beginPlay();
843
+ }
844
+
845
+ public override generateDebugNode(): SceneGraphDebugNode | null {
846
+ const node = super.generateDebugNode()!;
847
+ node.data = {
848
+ ...node.data,
849
+ meshCount: this.instancedMeshes.length,
850
+ availableInstances: this.availableInstances,
851
+ instanceCount: this.getInstanceCount(),
852
+ maxInstances: this.getMaxInstances(),
853
+ geometries: this.instancedMeshes.map(mesh => ClassRegistry.getClassOrConstructorName(mesh.geometry)),
854
+ materials: this.instancedMeshes.map(mesh => ClassRegistry.getClassOrConstructorName(mesh.material)),
855
+ };
856
+ return node;
857
+ }
858
+
859
+ public override calcBoundingBox(): void {
860
+ if (this.instancedMeshes.length === 0) {
861
+ this._boundingBox.makeEmpty();
862
+ return;
863
+ }
864
+
865
+ // Start with the first mesh's bounding box
866
+ const firstMesh = this.instancedMeshes[0];
867
+ firstMesh.geometry.computeBoundingBox();
868
+ this._boundingBox.copy(firstMesh.geometry.boundingBox!).applyMatrix4(firstMesh.matrixWorld);
869
+
870
+ // Expand to include all other meshes
871
+ const tempBox = new THREE.Box3();
872
+ for (let i = 1; i < this.instancedMeshes.length; i++) {
873
+ const mesh = this.instancedMeshes[i];
874
+ mesh.geometry.computeBoundingBox();
875
+ tempBox.copy(mesh.geometry.boundingBox!).applyMatrix4(mesh.matrixWorld);
876
+ this._boundingBox.union(tempBox);
877
+ }
878
+ }
879
+
880
+ public override describe(options?: ComponentDescriptionOptions): Record<string, any> {
881
+ const result = super.describe(options);
882
+ if (options?.includeDetails) {
883
+ result.meshCount = this.instancedMeshes.length;
884
+ result.meshTypes = this.instancedMeshes.map(mesh => mesh.geometry.type);
885
+ result.availableInstances = this.availableInstances;
886
+ result.instanceCount = this.getInstanceCount();
887
+ result.maxInstances = this.getMaxInstances();
888
+ }
889
+ return result;
890
+ }
891
+
892
+ //====================================================================================================
893
+ // Editor Functions
894
+ //====================================================================================================
895
+
896
+ public override onEditorPropertyChanged(path: string, value: any, result: EditorPropertyChangedResult): void {
897
+ super.onEditorPropertyChanged(path, value, result);
898
+ this.repopulateInstances();
899
+ }
900
+
901
+ public override getEditorClassIcon(): string | null {
902
+ return 'Icon_InstancedMesh';
903
+ }
904
+ }