@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.
- package/README.md +123 -0
- package/assets/animation-profiles/mixamo.skeleton-profile.json +63 -0
- package/assets/animation-profiles/rigify.skeleton-profile.json +61 -0
- package/assets/character/SKM_SB_MediumHuman.glb +0 -0
- package/assets/character/config/AnimationStateMachineComponent.md +107 -0
- package/assets/character/config/mannequin-anim.json +53 -0
- package/assets/character/mannequin.glb +0 -0
- package/assets/character/mannequinG.glb +0 -0
- package/assets/default.genesys-scene +194 -0
- package/assets/models/PickupActors/SM_Pickup_Health.glb +0 -0
- package/assets/models/PickupActors/SM_Pickup_Station.glb +0 -0
- package/assets/models/SM_Capsule.glb +0 -0
- package/assets/models/SM_ChamferCube.glb +0 -0
- package/assets/models/SM_Cone.glb +0 -0
- package/assets/models/SM_Cube.glb +0 -0
- package/assets/models/SM_Cylinder.glb +0 -0
- package/assets/models/SM_Plane.glb +0 -0
- package/assets/models/SM_Pyramid.glb +0 -0
- package/assets/models/SM_Sphere.glb +0 -0
- package/assets/models/SM_Torus.glb +0 -0
- package/assets/models/SM_Wedge.glb +0 -0
- package/assets/models/Weapons/SM_ShotGun_01.glb +0 -0
- package/assets/models/demo/Characters/Knightdude.glb +0 -0
- package/assets/models/demo/Characters/Spacedude.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Bush01.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Bush02.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Flower01.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Flower02.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Flower03.glb +0 -0
- package/assets/models/demo/LowPoly/SM_GeneratedLandscape.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Grass01.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Grass02.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Grass03.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Mushroom01.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Mushroom02.glb +0 -0
- package/assets/models/demo/LowPoly/SM_MushroomCluster01.glb +0 -0
- package/assets/models/demo/LowPoly/SM_MushroomCluster02.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Rock01.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Rock02.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Rock03.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Rock04.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Tree01.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Tree02.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Tree03.glb +0 -0
- package/assets/models/demo/LowPoly/SM_Tree04.glb +0 -0
- package/assets/models/demo/LowPoly/SM_TreeStump.glb +0 -0
- package/assets/models/demo/LowPoly/SM_TreeTrunk.glb +0 -0
- package/assets/models/demo/LowPoly/low_poly_ship_wreck.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Dirt.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Grass02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Grass02Patch.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Gravel.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Lava.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_LavaStone.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Sand.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Stone.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_StoneA.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_StoneC.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Wall.glb +0 -0
- package/assets/models/demo/SandboxAsset/Blocks/SM_SB_Block_Water.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_Arachnids_Large_Spider.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Adventurer_F01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Adventurer_M01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aviator_F01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aviator_M01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aztec_F01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Aztec_M01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_MediumHuman.glb +0 -0
- package/assets/models/demo/SandboxAsset/Characters/SKM_SB_Shaman.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_03.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Cloud_04.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_03.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_04.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_05.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_06.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_Env_Cloud_07.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_SmallCloud01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Clouds/SM_SB_SmallCloud_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_AztecStatue.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_03.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_Broken_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Claypot_Broken_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Crystal_Calendar_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Crystal_Calendar_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Crystal_Skull.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Goldpile_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Goldpile_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Rubble_Skeleton_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_TreasureChest.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_TreasureChestSmall.glb +0 -0
- package/assets/models/demo/SandboxAsset/Decorations/SM_SB_Wall_Deco_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_AngledWall.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Arch.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Beams.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Beams02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Corner.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_CornerB.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Floor.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Floor2.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Floor3.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_GrowingTree.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_HalfFloor.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_IronBucket.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Pillar.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Railing.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_RoofWindow.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Stairs01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Statue.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall03.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall03B.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_Wall04.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_WallB.glb +0 -0
- package/assets/models/demo/SandboxAsset/Dungeon/SM_SB_WallTrim.glb +0 -0
- package/assets/models/demo/SandboxAsset/Floors/SM_SB_Floor_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Floors/SM_SB_Floor_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower01_ColorA.glb +0 -0
- package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower01_ColorB.glb +0 -0
- package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower02_ColorA.glb +0 -0
- package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower02_ColorB.glb +0 -0
- package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower03_ColorA.glb +0 -0
- package/assets/models/demo/SandboxAsset/Flowers/SM_SB_Flower03_ColorB.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Beach_Grass.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Birgaradier_Tree.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Cactus_Long.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_ElephantEar01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Fern01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_GrassPatch.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Growing_Plant.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Leaf_bush01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Middle_Moss.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Oracle_Tree.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Plant01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_Tree01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Foliage/SM_SB_plant.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Arrow_large_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Arrow_large_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_HangingBridgeEnd_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_HangingBridgeEnd_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_HangingBridgeMiddle.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_MovingPlatform_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_MovingWall.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_ObsidianTrap.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Scull_Arrowshooter01.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Scull_Arrowshooter02.glb +0 -0
- package/assets/models/demo/SandboxAsset/GameItems/SM_SB_Snakepit.glb +0 -0
- package/assets/models/demo/SandboxAsset/Rocks/SM_SB_Rock01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Rocks/SM_SB_Rock02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Corner_L.glb +0 -0
- package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Corner_R.glb +0 -0
- package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Edge.glb +0 -0
- package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_End01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Slides/SM_SB_Slide_Module.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_CaribbeanPine_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_CaribbeanPine_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_CoconutTree01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_CoconutTree02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_KapokTree_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_KapokTree_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_QueenPalm_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_QueenPalm_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trees/SM_SB_TreeTrunk.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimA.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimB.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimC.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimD.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimE.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimF.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimG.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimH.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimI.glb +0 -0
- package/assets/models/demo/SandboxAsset/Trims/SM_SB_TrimJ.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Aztec_Wall_01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Aztec_Wall_02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Brick01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_BrickBlock01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_BrickBlock02.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Vineswall01.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_WallDecoA.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_01B_128x96.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_01_128x96.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02B_128x96.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02C_128x96.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02D_128x96.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_02_128x96.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_03B_128x96.glb +0 -0
- package/assets/models/demo/SandboxAsset/Walls/SM_SB_Wall_L_03_128x96.glb +0 -0
- package/assets/prefabs/actors/demo_health_pickup.prefab.json +114 -0
- package/assets/prefabs/actors/demo_health_pickup_spawner.prefab.json +102 -0
- package/assets/prefabs/actors/test.prefab.json +87 -0
- package/assets/shaders/M_Anisotropy_Brushed.material.json +89 -0
- package/assets/shaders/M_Anisotropy_Radial.material.json +55 -0
- package/assets/shaders/M_Chrome.material.json +18 -0
- package/assets/shaders/M_Emissive_Blue.material.json +26 -0
- package/assets/shaders/M_Glass_Frosted.material.json +24 -0
- package/assets/shaders/M_Glass_ThinFilm.material.json +23 -0
- package/assets/shaders/M_Glossy_Grey.material.json +20 -0
- package/assets/shaders/M_Matte_White.material.json +20 -0
- package/assets/shaders/M_Metal_Anisotropic_Gold.material.json +31 -0
- package/assets/shaders/M_Metal_Anisotropic_Silver.material.json +31 -0
- package/assets/shaders/M_Metal_Brushed.material.json +61 -0
- package/assets/shaders/M_Paint_Clearcoat.material.json +28 -0
- package/assets/shaders/M_Stone_Mossy.material.json +153 -0
- package/assets/shaders/M_Stone_Mossy_Snow.material.json +151 -0
- package/assets/shaders/M_Toon_Anime.material.json +49 -0
- package/assets/shaders/M_Toon_Anime_5Step.material.json +45 -0
- package/assets/shaders/M_Toon_Cel.material.json +49 -0
- package/assets/shaders/M_Transmission.material.json +42 -0
- package/assets/shaders/M_Velvet_Blue.material.json +33 -0
- package/assets/shaders/M_Velvet_Purple.material.json +30 -0
- package/assets/shaders/M_Velvet_Red.material.json +33 -0
- package/assets/shaders/M_Wax_SSSLite.material.json +55 -0
- package/assets/shaders/matcap/M_Matcap_Blue.material.json +27 -0
- package/assets/shaders/matcap/M_Matcap_Rainbow.material.json +26 -0
- package/assets/shaders/matcap/M_Matcap_White.material.json +28 -0
- package/assets/sounds/birds.mp3 +0 -0
- package/assets/sounds/explosion.mp3 +0 -0
- package/assets/sounds/game-gun-short.mp3 +0 -0
- package/assets/sounds/laser.mp3 +0 -0
- package/assets/sounds/pickup.mp3 +0 -0
- package/assets/sounds/tuba.mp3 +0 -0
- package/assets/textures/Checkerboard.png +0 -0
- package/assets/textures/Grid_10x10.png +0 -0
- package/assets/textures/T_AnisotropyMap_Radial.png +0 -0
- package/assets/textures/T_Anisotropy_Roughness.png +0 -0
- package/assets/textures/T_Gradient.png +0 -0
- package/assets/textures/T_Grid_01.png +0 -0
- package/assets/textures/T_Grid_01.texture.json +7 -0
- package/assets/textures/T_Metal_Brushed_Normal.png +0 -0
- package/assets/textures/T_Normal.png +0 -0
- package/assets/textures/T_Stone_Mossy_AmbientOcclusion.jpg +0 -0
- package/assets/textures/T_Stone_Mossy_BaseColor.jpg +0 -0
- package/assets/textures/T_Stone_Mossy_Normal.jpg +0 -0
- package/assets/textures/T_Stone_Mossy_Roughness.jpg +0 -0
- package/assets/textures/T_Stone_Mossy_Snow_AmbientOcclusion.jpg +0 -0
- package/assets/textures/T_Stone_Mossy_Snow_BaseColor.jpg +0 -0
- package/assets/textures/T_Stone_Mossy_Snow_Normal.jpg +0 -0
- package/assets/textures/T_Stone_Mossy_Snow_Roughness.jpg +0 -0
- package/assets/textures/T_Toon_Anime_4Step.png +0 -0
- package/assets/textures/T_Toon_Anime_5Step.png +0 -0
- package/assets/textures/T_Toon_Cel_2Step.png +0 -0
- package/assets/textures/T_Wax_Thickness.png +0 -0
- package/assets/textures/matcaps/T_Matcap_Rainbow.png.png +0 -0
- package/assets/textures/matcaps/beige.png +0 -0
- package/assets/textures/matcaps/black.png +0 -0
- package/assets/textures/matcaps/blue.png +0 -0
- package/assets/textures/matcaps/brown.png +0 -0
- package/assets/textures/matcaps/emeraldGreen.png +0 -0
- package/assets/textures/matcaps/gold.png +0 -0
- package/assets/textures/matcaps/gray.png +0 -0
- package/assets/textures/matcaps/green.png +0 -0
- package/assets/textures/matcaps/metal.png +0 -0
- package/assets/textures/matcaps/orange.png +0 -0
- package/assets/textures/matcaps/purple.png +0 -0
- package/assets/textures/matcaps/red.png +0 -0
- package/assets/textures/matcaps/white.png +0 -0
- package/assets/textures/matcaps/yellow.png +0 -0
- package/assets/textures/skybox/citrus_orchard_road_puresky_2k.hdr +0 -0
- package/assets/textures/skybox/venice_sunset_4k.hdr +0 -0
- package/assets/ui/styles/ammo-counter.css +58 -0
- package/assets/ui/styles/compass.css +54 -0
- package/assets/ui/styles/controls-help.css +21 -0
- package/assets/ui/styles/crosshair.css +51 -0
- package/assets/ui/styles/inventory-bar.css +112 -0
- package/assets/ui/styles/inventory-grid.css +257 -0
- package/assets/ui/styles/main-menu.css +59 -0
- package/assets/ui/styles/minimap.css +12 -0
- package/assets/ui/styles/number-display.css +18 -0
- package/assets/ui/styles/progress-bar.css +199 -0
- package/assets/ui/styles/reload-indicator.css +76 -0
- package/assets/ui/templates/ammo-counter.html +7 -0
- package/assets/ui/templates/compass.html +6 -0
- package/assets/ui/templates/controls-help.html +9 -0
- package/assets/ui/templates/crosshair.html +1 -0
- package/assets/ui/templates/inventory-bar.html +38 -0
- package/assets/ui/templates/inventory-grid.html +9 -0
- package/assets/ui/templates/main-menu.html +10 -0
- package/assets/ui/templates/minimap.html +3 -0
- package/assets/ui/templates/number-display.html +3 -0
- package/assets/ui/templates/progress-bar.html +7 -0
- package/assets/ui/templates/reload-indicator.html +13 -0
- package/dist/games/animation-demo.d.ts +21 -0
- package/dist/games/animation-demo.js +398 -0
- package/dist/games/animation-retarget-demo.d.ts +44 -0
- package/dist/games/animation-retarget-demo.js +574 -0
- package/dist/games/behavior-tree-demo.d.ts +100 -0
- package/dist/games/behavior-tree-demo.js +1656 -0
- package/dist/games/character_animation.d.ts +15 -0
- package/dist/games/character_animation.js +170 -0
- package/dist/games/collision-demo.d.ts +4 -0
- package/dist/games/collision-demo.js +134 -0
- package/dist/games/deprecated/advanced-grid-demo.d.ts +18 -0
- package/dist/games/deprecated/advanced-grid-demo.js +305 -0
- package/dist/games/deprecated/airplane-demo.d.ts +10 -0
- package/dist/games/deprecated/airplane-demo.js +136 -0
- package/dist/games/deprecated/character-controller.d.ts +6 -0
- package/dist/games/deprecated/character-controller.js +144 -0
- package/dist/games/deprecated/chase-game.d.ts +17 -0
- package/dist/games/deprecated/chase-game.js +269 -0
- package/dist/games/deprecated/collision-config.d.ts +7 -0
- package/dist/games/deprecated/collision-config.js +295 -0
- package/dist/games/deprecated/door-demo.d.ts +30 -0
- package/dist/games/deprecated/door-demo.js +562 -0
- package/dist/games/deprecated/fps-demo.d.ts +9 -0
- package/dist/games/deprecated/fps-demo.js +119 -0
- package/dist/games/deprecated/fps-shotgun-demo.d.ts +19 -0
- package/dist/games/deprecated/fps-shotgun-demo.js +221 -0
- package/dist/games/deprecated/index.d.ts +25 -0
- package/dist/games/deprecated/index.js +26 -0
- package/dist/games/deprecated/lightmapping-demo.d.ts +135 -0
- package/dist/games/deprecated/lightmapping-demo.js +1344 -0
- package/dist/games/deprecated/lights-demo.d.ts +93 -0
- package/dist/games/deprecated/lights-demo.js +815 -0
- package/dist/games/deprecated/matcap-demo.d.ts +54 -0
- package/dist/games/deprecated/matcap-demo.js +788 -0
- package/dist/games/deprecated/material-demo-2.d.ts +14 -0
- package/dist/games/deprecated/material-demo-2.js +521 -0
- package/dist/games/deprecated/material-demo.d.ts +8 -0
- package/dist/games/deprecated/material-demo.js +177 -0
- package/dist/games/deprecated/memory-leak-test.d.ts +6 -0
- package/dist/games/deprecated/memory-leak-test.js +20 -0
- package/dist/games/deprecated/model-stress-test.d.ts +10 -0
- package/dist/games/deprecated/model-stress-test.js +116 -0
- package/dist/games/deprecated/multiplayer-demo.d.ts +13 -0
- package/dist/games/deprecated/multiplayer-demo.js +377 -0
- package/dist/games/deprecated/physics-demo.d.ts +10 -0
- package/dist/games/deprecated/physics-demo.js +200 -0
- package/dist/games/deprecated/shadow-demo.d.ts +25 -0
- package/dist/games/deprecated/shadow-demo.js +402 -0
- package/dist/games/deprecated/shooting-demo.d.ts +19 -0
- package/dist/games/deprecated/shooting-demo.js +338 -0
- package/dist/games/deprecated/skybox-demo.d.ts +35 -0
- package/dist/games/deprecated/skybox-demo.js +323 -0
- package/dist/games/deprecated/sound-demo.d.ts +11 -0
- package/dist/games/deprecated/sound-demo.js +125 -0
- package/dist/games/deprecated/timer-demo.d.ts +11 -0
- package/dist/games/deprecated/timer-demo.js +150 -0
- package/dist/games/deprecated/voxel-demo.d.ts +5 -0
- package/dist/games/deprecated/voxel-demo.js +41 -0
- package/dist/games/deprecated/world-commands.d.ts +8 -0
- package/dist/games/deprecated/world-commands.js +168 -0
- package/dist/games/deprecated/world-loading.d.ts +6 -0
- package/dist/games/deprecated/world-loading.js +86 -0
- package/dist/games/examples/fps-advanced/const.d.ts +171 -0
- package/dist/games/examples/fps-advanced/const.js +116 -0
- package/dist/games/examples/fps-advanced/enemies.d.ts +21 -0
- package/dist/games/examples/fps-advanced/enemies.js +182 -0
- package/dist/games/examples/fps-advanced/game-mode.d.ts +53 -0
- package/dist/games/examples/fps-advanced/game-mode.js +353 -0
- package/dist/games/examples/fps-advanced/game.d.ts +9 -0
- package/dist/games/examples/fps-advanced/game.js +58 -0
- package/dist/games/examples/fps-advanced/pickups.d.ts +36 -0
- package/dist/games/examples/fps-advanced/pickups.js +225 -0
- package/dist/games/examples/fps-advanced/player.d.ts +12 -0
- package/dist/games/examples/fps-advanced/player.js +110 -0
- package/dist/games/examples/fps-advanced/ui/endgame-ui.d.ts +21 -0
- package/dist/games/examples/fps-advanced/ui/endgame-ui.js +291 -0
- package/dist/games/examples/fps-advanced/ui/game-hud.d.ts +17 -0
- package/dist/games/examples/fps-advanced/ui/game-hud.js +225 -0
- package/dist/games/examples/fps-advanced/ui/menu-ui.d.ts +13 -0
- package/dist/games/examples/fps-advanced/ui/menu-ui.js +224 -0
- package/dist/games/examples/fps-advanced/ui/weapon-hud.d.ts +27 -0
- package/dist/games/examples/fps-advanced/ui/weapon-hud.js +259 -0
- package/dist/games/examples/fps-advanced/weapons.d.ts +14 -0
- package/dist/games/examples/fps-advanced/weapons.js +173 -0
- package/dist/games/examples/index.d.ts +5 -0
- package/dist/games/examples/index.js +6 -0
- package/dist/games/examples/plugin-demo/game.d.ts +7 -0
- package/dist/games/examples/plugin-demo/game.js +168 -0
- package/dist/games/examples/plugin-demo/plugins/dynamic-lighting.d.ts +8 -0
- package/dist/games/examples/plugin-demo/plugins/dynamic-lighting.js +156 -0
- package/dist/games/examples/plugin-demo/plugins/instanced-forest.d.ts +7 -0
- package/dist/games/examples/plugin-demo/plugins/instanced-forest.js +194 -0
- package/dist/games/examples/plugin-demo/plugins/particle-fountain.d.ts +7 -0
- package/dist/games/examples/plugin-demo/plugins/particle-fountain.js +64 -0
- package/dist/games/examples/plugin-demo/plugins/physics-playground.d.ts +7 -0
- package/dist/games/examples/plugin-demo/plugins/physics-playground.js +185 -0
- package/dist/games/examples/plugin-demo/plugins/robot-follower.d.ts +7 -0
- package/dist/games/examples/plugin-demo/plugins/robot-follower.js +347 -0
- package/dist/games/examples/plugin-demo/plugins/scatter-models.d.ts +7 -0
- package/dist/games/examples/plugin-demo/plugins/scatter-models.js +70 -0
- package/dist/games/examples/plugin-demo/plugins/simple-cube.d.ts +7 -0
- package/dist/games/examples/plugin-demo/plugins/simple-cube.js +44 -0
- package/dist/games/examples/plugin-demo/plugins/tic-tac-toe.d.ts +8 -0
- package/dist/games/examples/plugin-demo/plugins/tic-tac-toe.js +526 -0
- package/dist/games/examples/plugin-demo/plugins/wobbling-sphere.d.ts +7 -0
- package/dist/games/examples/plugin-demo/plugins/wobbling-sphere.js +63 -0
- package/dist/games/examples/side-scroller-advanced/const.d.ts +97 -0
- package/dist/games/examples/side-scroller-advanced/const.js +82 -0
- package/dist/games/examples/side-scroller-advanced/game-mode.d.ts +54 -0
- package/dist/games/examples/side-scroller-advanced/game-mode.js +351 -0
- package/dist/games/examples/side-scroller-advanced/game.d.ts +9 -0
- package/dist/games/examples/side-scroller-advanced/game.js +70 -0
- package/dist/games/examples/side-scroller-advanced/level-generator.d.ts +68 -0
- package/dist/games/examples/side-scroller-advanced/level-generator.js +366 -0
- package/dist/games/examples/side-scroller-advanced/pickups.d.ts +18 -0
- package/dist/games/examples/side-scroller-advanced/pickups.js +147 -0
- package/dist/games/examples/side-scroller-advanced/player.d.ts +5 -0
- package/dist/games/examples/side-scroller-advanced/player.js +104 -0
- package/dist/games/examples/side-scroller-advanced/ui/endgame-ui.d.ts +16 -0
- package/dist/games/examples/side-scroller-advanced/ui/endgame-ui.js +290 -0
- package/dist/games/examples/side-scroller-advanced/ui/game-hud.d.ts +21 -0
- package/dist/games/examples/side-scroller-advanced/ui/game-hud.js +265 -0
- package/dist/games/examples/side-scroller-advanced/ui/menu-ui.d.ts +13 -0
- package/dist/games/examples/side-scroller-advanced/ui/menu-ui.js +222 -0
- package/dist/games/examples/vehicle/base-vehicle.d.ts +30 -0
- package/dist/games/examples/vehicle/base-vehicle.js +155 -0
- package/dist/games/examples/vehicle/game.d.ts +11 -0
- package/dist/games/examples/vehicle/game.js +140 -0
- package/dist/games/examples/vehicle/mesh-vehicle.d.ts +19 -0
- package/dist/games/examples/vehicle/mesh-vehicle.js +194 -0
- package/dist/games/examples/vehicle/player.d.ts +9 -0
- package/dist/games/examples/vehicle/player.js +87 -0
- package/dist/games/examples/vehicle/primitive-vehicle.d.ts +21 -0
- package/dist/games/examples/vehicle/primitive-vehicle.js +269 -0
- package/dist/games/examples/vr-game/VRAttachableCube.d.ts +8 -0
- package/dist/games/examples/vr-game/VRAttachableCube.js +41 -0
- package/dist/games/examples/vr-game/VRInteractableCylinder.d.ts +10 -0
- package/dist/games/examples/vr-game/VRInteractableCylinder.js +76 -0
- package/dist/games/examples/vr-game/VRPressableButton.d.ts +24 -0
- package/dist/games/examples/vr-game/VRPressableButton.js +135 -0
- package/dist/games/examples/vr-game/VRProjectileActor.d.ts +19 -0
- package/dist/games/examples/vr-game/VRProjectileActor.js +75 -0
- package/dist/games/examples/vr-game/VRRifleActor.d.ts +16 -0
- package/dist/games/examples/vr-game/VRRifleActor.js +142 -0
- package/dist/games/examples/vr-game/game.d.ts +9 -0
- package/dist/games/examples/vr-game/game.js +56 -0
- package/dist/games/examples/vr-game/index.d.ts +5 -0
- package/dist/games/examples/vr-game/index.js +9 -0
- package/dist/games/examples/vr-game/scene.d.ts +5 -0
- package/dist/games/examples/vr-game/scene.js +83 -0
- package/dist/games/hand-tracking-demo.d.ts +10 -0
- package/dist/games/hand-tracking-demo.js +65 -0
- package/dist/games/index.d.ts +21 -0
- package/dist/games/index.js +22 -0
- package/dist/games/instanced-mesh-demo.d.ts +45 -0
- package/dist/games/instanced-mesh-demo.js +416 -0
- package/dist/games/manifold-demo.d.ts +6 -0
- package/dist/games/manifold-demo.js +44 -0
- package/dist/games/navigation-demo.d.ts +30 -0
- package/dist/games/navigation-demo.js +336 -0
- package/dist/games/navmesh-primitives-demo.d.ts +167 -0
- package/dist/games/navmesh-primitives-demo.js +1105 -0
- package/dist/games/performance-test-demo.d.ts +13 -0
- package/dist/games/performance-test-demo.js +214 -0
- package/dist/games/postprocess-demo.d.ts +46 -0
- package/dist/games/postprocess-demo.js +829 -0
- package/dist/games/ragdoll-demo-simple.d.ts +34 -0
- package/dist/games/ragdoll-demo-simple.js +152 -0
- package/dist/games/ragdoll-demo.d.ts +30 -0
- package/dist/games/ragdoll-demo.js +258 -0
- package/dist/games/swipe-tap-demo.d.ts +24 -0
- package/dist/games/swipe-tap-demo.js +238 -0
- package/dist/games/tween-demo.d.ts +22 -0
- package/dist/games/tween-demo.js +122 -0
- package/dist/games/ui-demo.d.ts +75 -0
- package/dist/games/ui-demo.js +1054 -0
- package/dist/games/vfx-demo.d.ts +48 -0
- package/dist/games/vfx-demo.js +821 -0
- package/dist/games/vfx-wawa-demo.d.ts +7 -0
- package/dist/games/vfx-wawa-demo.js +471 -0
- package/dist/games/vr-ui-demo-minimal.d.ts +15 -0
- package/dist/games/vr-ui-demo-minimal.js +141 -0
- package/dist/games/vr-ui-demo.d.ts +32 -0
- package/dist/games/vr-ui-demo.js +871 -0
- package/dist/genesys.min.mjs +7035 -0
- package/dist/launcher.d.ts +1 -0
- package/dist/launcher.js +778 -0
- package/dist/scripts/build-browser-bundle.d.ts +5 -0
- package/dist/scripts/build-browser-bundle.js +69 -0
- package/dist/scripts/check-asset-path.d.ts +1 -0
- package/dist/scripts/check-asset-path.js +146 -0
- package/dist/scripts/dump-templates.d.ts +1 -0
- package/dist/scripts/dump-templates.js +16 -0
- package/dist/scripts/generate-dependencies.d.ts +1 -0
- package/dist/scripts/generate-dependencies.js +110 -0
- package/dist/scripts/generate-prefabs.d.ts +1 -0
- package/dist/scripts/generate-prefabs.js +106 -0
- package/dist/scripts/load-save-world.d.ts +2 -0
- package/dist/scripts/load-save-world.js +35 -0
- package/dist/scripts/loc.d.ts +1 -0
- package/dist/scripts/loc.js +80 -0
- package/dist/scripts/optimize-glb-wrapper.d.ts +1 -0
- package/dist/scripts/optimize-glb-wrapper.js +26 -0
- package/dist/scripts/optimize-glb.d.ts +41 -0
- package/dist/scripts/optimize-glb.js +296 -0
- package/dist/scripts/session-server.d.ts +117 -0
- package/dist/scripts/session-server.js +782 -0
- package/dist/scripts/test-world-loading.d.ts +14 -0
- package/dist/scripts/test-world-loading.js +19 -0
- package/dist/src/actors/Actor.d.ts +510 -0
- package/dist/src/actors/Actor.js +1180 -0
- package/dist/src/actors/GLTFMeshActor.d.ts +34 -0
- package/dist/src/actors/GLTFMeshActor.js +102 -0
- package/dist/src/actors/GlobalParticleManager.d.ts +154 -0
- package/dist/src/actors/GlobalParticleManager.js +365 -0
- package/dist/src/actors/Pawn.d.ts +191 -0
- package/dist/src/actors/Pawn.js +384 -0
- package/dist/src/actors/PlayerController.d.ts +177 -0
- package/dist/src/actors/PlayerController.js +763 -0
- package/dist/src/actors/PlayerStart.d.ts +8 -0
- package/dist/src/actors/PlayerStart.js +48 -0
- package/dist/src/actors/Projectile.d.ts +50 -0
- package/dist/src/actors/Projectile.js +157 -0
- package/dist/src/actors/RagdollTestActor.d.ts +31 -0
- package/dist/src/actors/RagdollTestActor.js +153 -0
- package/dist/src/actors/ThirdPersonCharacterPawn.d.ts +27 -0
- package/dist/src/actors/ThirdPersonCharacterPawn.js +149 -0
- package/dist/src/actors/index.d.ts +20 -0
- package/dist/src/actors/index.js +21 -0
- package/dist/src/animation/AnimationClipCache.d.ts +41 -0
- package/dist/src/animation/AnimationClipCache.js +97 -0
- package/dist/src/animation/AnimationRetargeting.d.ts +100 -0
- package/dist/src/animation/AnimationRetargeting.js +455 -0
- package/dist/src/animation/SkeletonProfile.d.ts +112 -0
- package/dist/src/animation/SkeletonProfile.js +84 -0
- package/dist/src/animation/index.d.ts +14 -0
- package/dist/src/animation/index.js +15 -0
- package/dist/src/animation/retargeting.d.ts +142 -0
- package/dist/src/animation/retargeting.js +834 -0
- package/dist/src/components/CharacterStatsComponent.d.ts +89 -0
- package/dist/src/components/CharacterStatsComponent.js +207 -0
- package/dist/src/components/CollisionShapeComponent.d.ts +102 -0
- package/dist/src/components/CollisionShapeComponent.js +232 -0
- package/dist/src/components/Component.d.ts +82 -0
- package/dist/src/components/Component.js +2 -0
- package/dist/src/components/FollowComponent.d.ts +67 -0
- package/dist/src/components/FollowComponent.js +128 -0
- package/dist/src/components/PrimitiveComponent.d.ts +183 -0
- package/dist/src/components/PrimitiveComponent.js +368 -0
- package/dist/src/components/ResetPositionComponent.d.ts +52 -0
- package/dist/src/components/ResetPositionComponent.js +161 -0
- package/dist/src/components/SceneComponent.d.ts +225 -0
- package/dist/src/components/SceneComponent.js +621 -0
- package/dist/src/components/audio/SoundComponent.d.ts +109 -0
- package/dist/src/components/audio/SoundComponent.js +353 -0
- package/dist/src/components/audio/index.d.ts +11 -0
- package/dist/src/components/audio/index.js +12 -0
- package/dist/src/components/csg/CSGCombiner.d.ts +87 -0
- package/dist/src/components/csg/CSGCombiner.js +240 -0
- package/dist/src/components/csg/CSGShapes.d.ts +173 -0
- package/dist/src/components/csg/CSGShapes.js +326 -0
- package/dist/src/components/csg/index.d.ts +12 -0
- package/dist/src/components/csg/index.js +13 -0
- package/dist/src/components/gameplay/BaseWeaponComponent.d.ts +175 -0
- package/dist/src/components/gameplay/BaseWeaponComponent.js +496 -0
- package/dist/src/components/gameplay/DoorComponent.d.ts +236 -0
- package/dist/src/components/gameplay/DoorComponent.js +928 -0
- package/dist/src/components/gameplay/Equipment.d.ts +22 -0
- package/dist/src/components/gameplay/Equipment.js +9 -0
- package/dist/src/components/gameplay/GenericEquipment.d.ts +37 -0
- package/dist/src/components/gameplay/GenericEquipment.js +90 -0
- package/dist/src/components/gameplay/InstantHitWeaponComponent.d.ts +96 -0
- package/dist/src/components/gameplay/InstantHitWeaponComponent.js +194 -0
- package/dist/src/components/gameplay/PickupComponent.d.ts +130 -0
- package/dist/src/components/gameplay/PickupComponent.js +429 -0
- package/dist/src/components/gameplay/ProjectileWeaponComponent.d.ts +49 -0
- package/dist/src/components/gameplay/ProjectileWeaponComponent.js +93 -0
- package/dist/src/components/gameplay/ShotgunComponent.d.ts +18 -0
- package/dist/src/components/gameplay/ShotgunComponent.js +216 -0
- package/dist/src/components/gameplay/SwitchComponent.d.ts +152 -0
- package/dist/src/components/gameplay/SwitchComponent.js +481 -0
- package/dist/src/components/gameplay/TriggerZoneComponent.d.ts +157 -0
- package/dist/src/components/gameplay/TriggerZoneComponent.js +312 -0
- package/dist/src/components/gameplay/index.d.ts +20 -0
- package/dist/src/components/gameplay/index.js +21 -0
- package/dist/src/components/index.d.ts +16 -0
- package/dist/src/components/index.js +18 -0
- package/dist/src/components/lights/AmbientLightComponent.d.ts +37 -0
- package/dist/src/components/lights/AmbientLightComponent.js +68 -0
- package/dist/src/components/lights/DirectionalLightComponent.d.ts +77 -0
- package/dist/src/components/lights/DirectionalLightComponent.js +146 -0
- package/dist/src/components/lights/HemisphereLightComponent.d.ts +67 -0
- package/dist/src/components/lights/HemisphereLightComponent.js +121 -0
- package/dist/src/components/lights/LightComponent.d.ts +145 -0
- package/dist/src/components/lights/LightComponent.js +315 -0
- package/dist/src/components/lights/PointLightComponent.d.ts +61 -0
- package/dist/src/components/lights/PointLightComponent.js +103 -0
- package/dist/src/components/lights/RectAreaLightComponent.d.ts +78 -0
- package/dist/src/components/lights/RectAreaLightComponent.js +135 -0
- package/dist/src/components/lights/SpotLightComponent.d.ts +100 -0
- package/dist/src/components/lights/SpotLightComponent.js +167 -0
- package/dist/src/components/lights/index.d.ts +17 -0
- package/dist/src/components/lights/index.js +18 -0
- package/dist/src/components/movement/AerialMovementComponent.d.ts +93 -0
- package/dist/src/components/movement/AerialMovementComponent.js +339 -0
- package/dist/src/components/movement/AirplaneMovementComponent.d.ts +59 -0
- package/dist/src/components/movement/AirplaneMovementComponent.js +215 -0
- package/dist/src/components/movement/BasePawnMovementComponent.d.ts +132 -0
- package/dist/src/components/movement/BasePawnMovementComponent.js +264 -0
- package/dist/src/components/movement/CharacterMovementComponent.d.ts +175 -0
- package/dist/src/components/movement/CharacterMovementComponent.js +448 -0
- package/dist/src/components/movement/DirectionalCharacterMovementComponent.d.ts +17 -0
- package/dist/src/components/movement/DirectionalCharacterMovementComponent.js +82 -0
- package/dist/src/components/movement/NpcMovementComponent.d.ts +232 -0
- package/dist/src/components/movement/NpcMovementComponent.js +890 -0
- package/dist/src/components/movement/PathMovementComponent.d.ts +54 -0
- package/dist/src/components/movement/PathMovementComponent.js +211 -0
- package/dist/src/components/movement/TopDownMovementComponent.d.ts +25 -0
- package/dist/src/components/movement/TopDownMovementComponent.js +79 -0
- package/dist/src/components/movement/TweenMovementComponent.d.ts +59 -0
- package/dist/src/components/movement/TweenMovementComponent.js +362 -0
- package/dist/src/components/movement/VehicleMovementComponent.d.ts +98 -0
- package/dist/src/components/movement/VehicleMovementComponent.js +402 -0
- package/dist/src/components/movement/index.d.ts +19 -0
- package/dist/src/components/movement/index.js +20 -0
- package/dist/src/components/physics/RagdollComponent.d.ts +118 -0
- package/dist/src/components/physics/RagdollComponent.js +671 -0
- package/dist/src/components/visual/AnimationComponent.d.ts +29 -0
- package/dist/src/components/visual/AnimationComponent.js +234 -0
- package/dist/src/components/visual/AnimationStateMachineComponent.d.ts +235 -0
- package/dist/src/components/visual/AnimationStateMachineComponent.js +1048 -0
- package/dist/src/components/visual/BaseInstancedMeshComponent.d.ts +253 -0
- package/dist/src/components/visual/BaseInstancedMeshComponent.js +763 -0
- package/dist/src/components/visual/BillboardComponent.d.ts +26 -0
- package/dist/src/components/visual/BillboardComponent.js +143 -0
- package/dist/src/components/visual/EditorOnlyMeshComponent.d.ts +17 -0
- package/dist/src/components/visual/EditorOnlyMeshComponent.js +53 -0
- package/dist/src/components/visual/FogComponent.d.ts +32 -0
- package/dist/src/components/visual/FogComponent.js +131 -0
- package/dist/src/components/visual/GLTFMeshComponent.d.ts +138 -0
- package/dist/src/components/visual/GLTFMeshComponent.js +411 -0
- package/dist/src/components/visual/InstancedGltfMeshComponent.d.ts +75 -0
- package/dist/src/components/visual/InstancedGltfMeshComponent.js +217 -0
- package/dist/src/components/visual/InstancedMeshComponent.d.ts +57 -0
- package/dist/src/components/visual/InstancedMeshComponent.js +114 -0
- package/dist/src/components/visual/MeshComponent.d.ts +71 -0
- package/dist/src/components/visual/MeshComponent.js +208 -0
- package/dist/src/components/visual/ParticleEmitterComponent.d.ts +145 -0
- package/dist/src/components/visual/ParticleEmitterComponent.js +569 -0
- package/dist/src/components/visual/SkyboxComponent.d.ts +135 -0
- package/dist/src/components/visual/SkyboxComponent.js +342 -0
- package/dist/src/components/visual/TerrainMeshComponent.d.ts +119 -0
- package/dist/src/components/visual/TerrainMeshComponent.js +309 -0
- package/dist/src/components/visual/UI3DComponent.d.ts +60 -0
- package/dist/src/components/visual/UI3DComponent.js +248 -0
- package/dist/src/components/visual/index.d.ts +23 -0
- package/dist/src/components/visual/index.js +24 -0
- package/dist/src/components/voxel/MagicaVoxelLoader.d.ts +18 -0
- package/dist/src/components/voxel/MagicaVoxelLoader.js +151 -0
- package/dist/src/components/voxel/VoxelMeshComponent.d.ts +66 -0
- package/dist/src/components/voxel/VoxelMeshComponent.js +246 -0
- package/dist/src/components/voxel/index.d.ts +2 -0
- package/dist/src/components/voxel/index.js +3 -0
- package/dist/src/const.d.ts +61 -0
- package/dist/src/const.js +62 -0
- package/dist/src/csg/CSGUtils.d.ts +118 -0
- package/dist/src/csg/CSGUtils.js +805 -0
- package/dist/src/csg/ManifoldWrapper.d.ts +172 -0
- package/dist/src/csg/ManifoldWrapper.js +629 -0
- package/dist/src/csg/index.d.ts +13 -0
- package/dist/src/csg/index.js +14 -0
- package/dist/src/dependencies.d.ts +125 -0
- package/dist/src/dependencies.js +72 -0
- package/dist/src/game/GameBuilder.d.ts +104 -0
- package/dist/src/game/GameBuilder.js +263 -0
- package/dist/src/game/GameLoop.d.ts +204 -0
- package/dist/src/game/GameLoop.js +545 -0
- package/dist/src/game/GameMode.d.ts +58 -0
- package/dist/src/game/GameMode.js +131 -0
- package/dist/src/game/Playable.d.ts +38 -0
- package/dist/src/game/Playable.js +83 -0
- package/dist/src/game/World.d.ts +512 -0
- package/dist/src/game/World.js +1467 -0
- package/dist/src/game/index.d.ts +18 -0
- package/dist/src/game/index.js +19 -0
- package/dist/src/index.d.ts +39 -0
- package/dist/src/index.js +40 -0
- package/dist/src/materials.d.ts +49 -0
- package/dist/src/materials.js +177 -0
- package/dist/src/multiplayer/MovementPrediction.d.ts +28 -0
- package/dist/src/multiplayer/MovementPrediction.js +204 -0
- package/dist/src/multiplayer/NetWorld.d.ts +125 -0
- package/dist/src/multiplayer/NetWorld.js +960 -0
- package/dist/src/multiplayer/implementations/MemorySession.d.ts +18 -0
- package/dist/src/multiplayer/implementations/MemorySession.js +112 -0
- package/dist/src/multiplayer/implementations/WebSocketSession.d.ts +134 -0
- package/dist/src/multiplayer/implementations/WebSocketSession.js +439 -0
- package/dist/src/multiplayer/implementations/index.d.ts +14 -0
- package/dist/src/multiplayer/implementations/index.js +15 -0
- package/dist/src/multiplayer/index.d.ts +16 -0
- package/dist/src/multiplayer/index.js +17 -0
- package/dist/src/multiplayer/interface.d.ts +134 -0
- package/dist/src/multiplayer/interface.js +87 -0
- package/dist/src/navigation/NavigationServer.d.ts +134 -0
- package/dist/src/navigation/NavigationServer.js +47 -0
- package/dist/src/navigation/RecastNavigationServer.d.ts +82 -0
- package/dist/src/navigation/RecastNavigationServer.js +325 -0
- package/dist/src/navigation/index.d.ts +16 -0
- package/dist/src/navigation/index.js +17 -0
- package/dist/src/npc/behavior-tree/BehaviorNode.d.ts +95 -0
- package/dist/src/npc/behavior-tree/BehaviorNode.js +177 -0
- package/dist/src/npc/behavior-tree/BehaviorTreeComponent.d.ts +104 -0
- package/dist/src/npc/behavior-tree/BehaviorTreeComponent.js +341 -0
- package/dist/src/npc/behavior-tree/behaviors/BehaviorAction.d.ts +52 -0
- package/dist/src/npc/behavior-tree/behaviors/BehaviorAction.js +70 -0
- package/dist/src/npc/behavior-tree/behaviors/ConditionEvaluator.d.ts +73 -0
- package/dist/src/npc/behavior-tree/behaviors/ConditionEvaluator.js +116 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialMoveToTargetAction.d.ts +33 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialMoveToTargetAction.js +138 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialSearchAction.d.ts +42 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialSearchAction.js +170 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialTrackTargetAction.d.ts +27 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialTrackTargetAction.js +86 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialWanderAction.d.ts +50 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/AerialWanderAction.js +189 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/index.d.ts +4 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/aerial/index.js +6 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/combat/MeleeAttackAction.d.ts +37 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/combat/MeleeAttackAction.js +172 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/combat/ShootAction.d.ts +35 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/combat/ShootAction.js +173 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/combat/index.d.ts +2 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/combat/index.js +4 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/FleeFromTargetAction.d.ts +34 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/FleeFromTargetAction.js +148 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/FollowActorAction.d.ts +30 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/FollowActorAction.js +129 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/MoveToPositionAction.d.ts +27 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/MoveToPositionAction.js +115 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/SetNextWaypointAction.d.ts +28 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/SetNextWaypointAction.js +120 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/WanderAction.d.ts +35 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/WanderAction.js +172 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/index.d.ts +5 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/ground/index.js +7 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/index.d.ts +4 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/index.js +10 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/CalculateTacticalPositionAction.d.ts +32 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/CalculateTacticalPositionAction.js +123 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/LookAtTargetAction.d.ts +43 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/LookAtTargetAction.js +140 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/WaitAction.d.ts +24 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/WaitAction.js +85 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/index.d.ts +3 -0
- package/dist/src/npc/behavior-tree/behaviors/actions/utility/index.js +5 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/BlackboardValueCondition.d.ts +40 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/BlackboardValueCondition.js +133 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/CanSeeTargetCondition.d.ts +29 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/CanSeeTargetCondition.js +167 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/HasLastKnownPositionCondition.d.ts +19 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/HasLastKnownPositionCondition.js +67 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/HpAbovePercentCondition.d.ts +25 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/HpAbovePercentCondition.js +94 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/IsPlayerNearCondition.d.ts +15 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/IsPlayerNearCondition.js +51 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/TargetBelowHpPercentCondition.d.ts +19 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/TargetBelowHpPercentCondition.js +66 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/TargetInConeCondition.d.ts +26 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/TargetInConeCondition.js +111 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/TimeLimitCondition.d.ts +24 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/TimeLimitCondition.js +81 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/index.d.ts +8 -0
- package/dist/src/npc/behavior-tree/behaviors/conditions/index.js +15 -0
- package/dist/src/npc/behavior-tree/behaviors/index.d.ts +4 -0
- package/dist/src/npc/behavior-tree/behaviors/index.js +8 -0
- package/dist/src/npc/behavior-tree/blackboard/Blackboard.d.ts +50 -0
- package/dist/src/npc/behavior-tree/blackboard/Blackboard.js +121 -0
- package/dist/src/npc/behavior-tree/blackboard/BlackboardKey.d.ts +35 -0
- package/dist/src/npc/behavior-tree/blackboard/BlackboardKey.js +66 -0
- package/dist/src/npc/behavior-tree/blackboard/index.d.ts +2 -0
- package/dist/src/npc/behavior-tree/blackboard/index.js +3 -0
- package/dist/src/npc/behavior-tree/index.d.ts +9 -0
- package/dist/src/npc/behavior-tree/index.js +19 -0
- package/dist/src/npc/behavior-tree/loader/BehaviorTreeLoader.d.ts +91 -0
- package/dist/src/npc/behavior-tree/loader/BehaviorTreeLoader.js +240 -0
- package/dist/src/npc/behavior-tree/nodes/CompositeNode.d.ts +46 -0
- package/dist/src/npc/behavior-tree/nodes/CompositeNode.js +93 -0
- package/dist/src/npc/behavior-tree/nodes/LeafNode.d.ts +8 -0
- package/dist/src/npc/behavior-tree/nodes/LeafNode.js +11 -0
- package/dist/src/npc/behavior-tree/nodes/composite/SelectorNode.d.ts +15 -0
- package/dist/src/npc/behavior-tree/nodes/composite/SelectorNode.js +61 -0
- package/dist/src/npc/behavior-tree/nodes/composite/SequenceNode.d.ts +15 -0
- package/dist/src/npc/behavior-tree/nodes/composite/SequenceNode.js +61 -0
- package/dist/src/physics/BasePhysicsEngine.d.ts +389 -0
- package/dist/src/physics/BasePhysicsEngine.js +1227 -0
- package/dist/src/physics/IPhysicsVehicle.d.ts +150 -0
- package/dist/src/physics/IPhysicsVehicle.js +2 -0
- package/dist/src/physics/PhysicsEngine.d.ts +425 -0
- package/dist/src/physics/PhysicsEngine.js +69 -0
- package/dist/src/physics/PhysicsTypes.d.ts +91 -0
- package/dist/src/physics/PhysicsTypes.js +24 -0
- package/dist/src/physics/implementations/RapierDebugRender.d.ts +24 -0
- package/dist/src/physics/implementations/RapierDebugRender.js +66 -0
- package/dist/src/physics/implementations/RapierPhysics.d.ts +122 -0
- package/dist/src/physics/implementations/RapierPhysics.js +1191 -0
- package/dist/src/physics/implementations/RapierVehicle.d.ts +31 -0
- package/dist/src/physics/implementations/RapierVehicle.js +236 -0
- package/dist/src/physics/index.d.ts +16 -0
- package/dist/src/physics/index.js +17 -0
- package/dist/src/render/EdgeOutlineEffect.d.ts +40 -0
- package/dist/src/render/EdgeOutlineEffect.js +389 -0
- package/dist/src/render/PostProcessManager.d.ts +274 -0
- package/dist/src/render/PostProcessManager.js +932 -0
- package/dist/src/render/Renderer.d.ts +84 -0
- package/dist/src/render/Renderer.js +306 -0
- package/dist/src/render/Texture.d.ts +51 -0
- package/dist/src/render/Texture.js +144 -0
- package/dist/src/render/index.d.ts +20 -0
- package/dist/src/render/index.js +21 -0
- package/dist/src/render/lightmapping/LightmapAtlas.d.ts +52 -0
- package/dist/src/render/lightmapping/LightmapAtlas.js +201 -0
- package/dist/src/render/lightmapping/LightmapBaker.d.ts +99 -0
- package/dist/src/render/lightmapping/LightmapBaker.js +239 -0
- package/dist/src/render/lightmapping/LightmapManager.d.ts +148 -0
- package/dist/src/render/lightmapping/LightmapManager.js +630 -0
- package/dist/src/render/lightmapping/LightmapMaterial.d.ts +26 -0
- package/dist/src/render/lightmapping/LightmapMaterial.js +242 -0
- package/dist/src/render/lightmapping/LightmapSerialization.d.ts +379 -0
- package/dist/src/render/lightmapping/LightmapSerialization.js +244 -0
- package/dist/src/render/lightmapping/LightmapSerializer.d.ts +94 -0
- package/dist/src/render/lightmapping/LightmapSerializer.js +223 -0
- package/dist/src/render/lightmapping/MultiLightmapperMaterial.d.ts +41 -0
- package/dist/src/render/lightmapping/MultiLightmapperMaterial.js +424 -0
- package/dist/src/render/lightmapping/index.d.ts +9 -0
- package/dist/src/render/lightmapping/index.js +6 -0
- package/dist/src/render/postprocessing/EffectPassWrapper.d.ts +17 -0
- package/dist/src/render/postprocessing/EffectPassWrapper.js +47 -0
- package/dist/src/render/postprocessing/ObjectOutlineEffect.d.ts +49 -0
- package/dist/src/render/postprocessing/ObjectOutlineEffect.js +364 -0
- package/dist/src/render/postprocessing/index.d.ts +2 -0
- package/dist/src/render/postprocessing/index.js +3 -0
- package/dist/src/runtime/GameRuntime.d.ts +25 -0
- package/dist/src/runtime/GameRuntime.js +131 -0
- package/dist/src/runtime/InjectedDependencies.d.ts +13 -0
- package/dist/src/runtime/InjectedDependencies.js +63 -0
- package/dist/src/runtime/Utils.d.ts +16 -0
- package/dist/src/runtime/Utils.js +113 -0
- package/dist/src/runtime/index.d.ts +4 -0
- package/dist/src/runtime/index.js +5 -0
- package/dist/src/runtime/materials/MatcapShaderMaterial.d.ts +23 -0
- package/dist/src/runtime/materials/MatcapShaderMaterial.js +235 -0
- package/dist/src/runtime/materials/index.d.ts +1 -0
- package/dist/src/runtime/materials/index.js +2 -0
- package/dist/src/scripting/Plugin.d.ts +64 -0
- package/dist/src/scripting/Plugin.js +2 -0
- package/dist/src/scripting/PluginManager.d.ts +40 -0
- package/dist/src/scripting/PluginManager.js +111 -0
- package/dist/src/scripting/index.d.ts +1 -0
- package/dist/src/scripting/index.js +2 -0
- package/dist/src/storage/defaultStorageProvider.d.ts +15 -0
- package/dist/src/storage/defaultStorageProvider.js +73 -0
- package/dist/src/storage/index.d.ts +16 -0
- package/dist/src/storage/index.js +17 -0
- package/dist/src/storage/projectContext.d.ts +80 -0
- package/dist/src/storage/projectContext.js +164 -0
- package/dist/src/storage/storageProvider.d.ts +148 -0
- package/dist/src/storage/storageProvider.js +181 -0
- package/dist/src/systems/ClassRegistry.d.ts +98 -0
- package/dist/src/systems/ClassRegistry.js +478 -0
- package/dist/src/systems/ConsoleManager.d.ts +66 -0
- package/dist/src/systems/ConsoleManager.js +465 -0
- package/dist/src/systems/ConsoleVariableHandler.d.ts +17 -0
- package/dist/src/systems/ConsoleVariableHandler.js +120 -0
- package/dist/src/systems/ConsoleVariableManager.d.ts +128 -0
- package/dist/src/systems/ConsoleVariableManager.js +295 -0
- package/dist/src/systems/InputManager.d.ts +511 -0
- package/dist/src/systems/InputManager.js +1025 -0
- package/dist/src/systems/ObjectNamingSystem.d.ts +9 -0
- package/dist/src/systems/ObjectNamingSystem.js +34 -0
- package/dist/src/systems/Stats.d.ts +36 -0
- package/dist/src/systems/Stats.js +193 -0
- package/dist/src/systems/TimerSystem.d.ts +180 -0
- package/dist/src/systems/TimerSystem.js +292 -0
- package/dist/src/systems/TweenManager.d.ts +57 -0
- package/dist/src/systems/TweenManager.js +107 -0
- package/dist/src/systems/WorldSerialization.d.ts +216 -0
- package/dist/src/systems/WorldSerialization.js +1082 -0
- package/dist/src/systems/collision/CollisionConfig.d.ts +56 -0
- package/dist/src/systems/collision/CollisionConfig.js +249 -0
- package/dist/src/systems/collision/CollisionTypes.d.ts +138 -0
- package/dist/src/systems/collision/CollisionTypes.js +204 -0
- package/dist/src/systems/collision/index.d.ts +15 -0
- package/dist/src/systems/collision/index.js +16 -0
- package/dist/src/systems/index.d.ts +23 -0
- package/dist/src/systems/index.js +24 -0
- package/dist/src/templates/MyActor.d.ts +9 -0
- package/dist/src/templates/MyActor.js +25 -0
- package/dist/src/templates/MySceneComponent.d.ts +9 -0
- package/dist/src/templates/MySceneComponent.js +25 -0
- package/dist/src/ui/LoadingScreen.d.ts +15 -0
- package/dist/src/ui/LoadingScreen.js +103 -0
- package/dist/src/ui/UIElement.d.ts +74 -0
- package/dist/src/ui/UIElement.js +202 -0
- package/dist/src/ui/UILayout.d.ts +126 -0
- package/dist/src/ui/UILayout.js +244 -0
- package/dist/src/ui/UIManager.d.ts +44 -0
- package/dist/src/ui/UIManager.js +148 -0
- package/dist/src/ui/UIResource.d.ts +6 -0
- package/dist/src/ui/UIResource.js +24 -0
- package/dist/src/ui/components/AmmoCounter.d.ts +28 -0
- package/dist/src/ui/components/AmmoCounter.js +125 -0
- package/dist/src/ui/components/BaseUIComponent.d.ts +128 -0
- package/dist/src/ui/components/BaseUIComponent.js +342 -0
- package/dist/src/ui/components/Compass.d.ts +28 -0
- package/dist/src/ui/components/Compass.js +125 -0
- package/dist/src/ui/components/ControlsPanel.d.ts +37 -0
- package/dist/src/ui/components/ControlsPanel.js +47 -0
- package/dist/src/ui/components/Crosshair.d.ts +20 -0
- package/dist/src/ui/components/Crosshair.js +67 -0
- package/dist/src/ui/components/InventoryBar.d.ts +103 -0
- package/dist/src/ui/components/InventoryBar.js +177 -0
- package/dist/src/ui/components/InventoryGrid.d.ts +139 -0
- package/dist/src/ui/components/InventoryGrid.js +407 -0
- package/dist/src/ui/components/Minimap.d.ts +39 -0
- package/dist/src/ui/components/Minimap.js +156 -0
- package/dist/src/ui/components/NumberDisplay.d.ts +51 -0
- package/dist/src/ui/components/NumberDisplay.js +164 -0
- package/dist/src/ui/components/ProgressBar.d.ts +115 -0
- package/dist/src/ui/components/ProgressBar.js +347 -0
- package/dist/src/ui/components/ReloadIndicator.d.ts +29 -0
- package/dist/src/ui/components/ReloadIndicator.js +147 -0
- package/dist/src/ui/components/index.d.ts +11 -0
- package/dist/src/ui/components/index.js +13 -0
- package/dist/src/ui/index.d.ts +21 -0
- package/dist/src/ui/index.js +22 -0
- package/dist/src/ui/ui-loader.d.ts +49 -0
- package/dist/src/ui/ui-loader.js +83 -0
- package/dist/src/utils/Color.d.ts +48 -0
- package/dist/src/utils/Color.js +121 -0
- package/dist/src/utils/Delegate.d.ts +72 -0
- package/dist/src/utils/Delegate.js +102 -0
- package/dist/src/utils/DescriptionHelpers.d.ts +47 -0
- package/dist/src/utils/DescriptionHelpers.js +65 -0
- package/dist/src/utils/EditorClassMeta.d.ts +99 -0
- package/dist/src/utils/EditorClassMeta.js +2 -0
- package/dist/src/utils/GlobalAudioManager.d.ts +141 -0
- package/dist/src/utils/GlobalAudioManager.js +312 -0
- package/dist/src/utils/IAsyncLoadable.d.ts +94 -0
- package/dist/src/utils/IAsyncLoadable.js +52 -0
- package/dist/src/utils/MaterialHelpers.d.ts +67 -0
- package/dist/src/utils/MaterialHelpers.js +278 -0
- package/dist/src/utils/MathHelpers.d.ts +65 -0
- package/dist/src/utils/MathHelpers.js +60 -0
- package/dist/src/utils/NodeJs.d.ts +1 -0
- package/dist/src/utils/NodeJs.js +81 -0
- package/dist/src/utils/Perlin.d.ts +39 -0
- package/dist/src/utils/Perlin.js +380 -0
- package/dist/src/utils/ResourceManager.d.ts +183 -0
- package/dist/src/utils/ResourceManager.js +703 -0
- package/dist/src/utils/SceneGraphUtils.d.ts +26 -0
- package/dist/src/utils/SceneGraphUtils.js +139 -0
- package/dist/src/utils/Spawn.d.ts +27 -0
- package/dist/src/utils/Spawn.js +73 -0
- package/dist/src/utils/ThreeJsExtensions.d.ts +298 -0
- package/dist/src/utils/ThreeJsExtensions.js +817 -0
- package/dist/src/utils/TweenExtensions.d.ts +8 -0
- package/dist/src/utils/TweenExtensions.js +103 -0
- package/dist/src/utils/UserCodeEngine.d.ts +70 -0
- package/dist/src/utils/UserCodeEngine.js +235 -0
- package/dist/src/utils/Utils.d.ts +65 -0
- package/dist/src/utils/Utils.js +296 -0
- package/dist/src/utils/VRButtonUtils.d.ts +21 -0
- package/dist/src/utils/VRButtonUtils.js +88 -0
- package/dist/src/utils/browser-polyfills/module.d.ts +20 -0
- package/dist/src/utils/browser-polyfills/module.js +31 -0
- package/dist/src/utils/browser-polyfills/path.d.ts +69 -0
- package/dist/src/utils/browser-polyfills/path.js +188 -0
- package/dist/src/utils/index.d.ts +29 -0
- package/dist/src/utils/index.js +30 -0
- package/dist/src/utils/serialization/cdo.d.ts +6 -0
- package/dist/src/utils/serialization/cdo.js +74 -0
- package/dist/src/utils/serialization/clsAlias.d.ts +15 -0
- package/dist/src/utils/serialization/clsAlias.js +96 -0
- package/dist/src/utils/serialization/decorator.d.ts +132 -0
- package/dist/src/utils/serialization/decorator.js +66 -0
- package/dist/src/utils/serialization/index.d.ts +7 -0
- package/dist/src/utils/serialization/index.js +8 -0
- package/dist/src/utils/serialization/prefab.d.ts +9 -0
- package/dist/src/utils/serialization/prefab.js +55 -0
- package/dist/src/utils/serialization/prefabManager.d.ts +17 -0
- package/dist/src/utils/serialization/prefabManager.js +84 -0
- package/dist/src/utils/serialization/serializable.d.ts +23 -0
- package/dist/src/utils/serialization/serializable.js +2 -0
- package/dist/src/utils/serialization/serializer.d.ts +126 -0
- package/dist/src/utils/serialization/serializer.js +1032 -0
- package/dist/src/utils/serialization/specialization.d.ts +1 -0
- package/dist/src/utils/serialization/specialization.js +194 -0
- package/dist/src/utils/serialization/specializationUtils.d.ts +27 -0
- package/dist/src/utils/serialization/specializationUtils.js +137 -0
- package/dist/src/vfx/VFXComponent.d.ts +65 -0
- package/dist/src/vfx/VFXComponent.js +202 -0
- package/dist/src/vfx/index.d.ts +11 -0
- package/dist/src/vfx/index.js +11 -0
- package/dist/src/vfx/types.d.ts +146 -0
- package/dist/src/vfx/types.js +146 -0
- package/dist/src/world-commands/common.d.ts +23 -0
- package/dist/src/world-commands/common.js +2 -0
- package/dist/src/world-commands/generate-code.d.ts +3 -0
- package/dist/src/world-commands/generate-code.js +90 -0
- package/dist/src/world-commands/index.d.ts +19 -0
- package/dist/src/world-commands/index.js +20 -0
- package/dist/src/world-commands/place-gltf.d.ts +25 -0
- package/dist/src/world-commands/place-gltf.js +39 -0
- package/dist/src/world-commands/place-prefab.d.ts +25 -0
- package/dist/src/world-commands/place-prefab.js +40 -0
- package/dist/src/world-commands/place-primitive.d.ts +39 -0
- package/dist/src/world-commands/place-primitive.js +100 -0
- package/dist/src/world-commands/remove-actors.d.ts +23 -0
- package/dist/src/world-commands/remove-actors.js +9 -0
- package/dist/src/xr/VRActor.d.ts +46 -0
- package/dist/src/xr/VRActor.js +56 -0
- package/dist/src/xr/VRControllerHandler.d.ts +25 -0
- package/dist/src/xr/VRControllerHandler.js +74 -0
- package/dist/src/xr/VRControllerManager.d.ts +194 -0
- package/dist/src/xr/VRControllerManager.js +539 -0
- package/dist/src/xr/VRDeviceHandler.d.ts +47 -0
- package/dist/src/xr/VRDeviceHandler.js +61 -0
- package/dist/src/xr/VRHandHandler.d.ts +23 -0
- package/dist/src/xr/VRHandHandler.js +161 -0
- package/dist/src/xr/VRInputDevice.d.ts +100 -0
- package/dist/src/xr/VRInputDevice.js +367 -0
- package/dist/src/xr/VRPawn.d.ts +198 -0
- package/dist/src/xr/VRPawn.js +771 -0
- package/dist/src/xr/actor-components/CanvasUIComponent.d.ts +61 -0
- package/dist/src/xr/actor-components/CanvasUIComponent.js +418 -0
- package/dist/src/xr/actor-components/VRBaseComponent.d.ts +15 -0
- package/dist/src/xr/actor-components/VRBaseComponent.js +24 -0
- package/dist/src/xr/actor-components/VRGrabbableComponent.d.ts +31 -0
- package/dist/src/xr/actor-components/VRGrabbableComponent.js +81 -0
- package/dist/src/xr/actor-components/VRInteractableComponent.d.ts +19 -0
- package/dist/src/xr/actor-components/VRInteractableComponent.js +50 -0
- package/dist/src/xr/index.d.ts +17 -0
- package/dist/src/xr/index.js +18 -0
- package/dist/src/xr/pawn-components/VRGrabComponent.d.ts +36 -0
- package/dist/src/xr/pawn-components/VRGrabComponent.js +445 -0
- package/dist/src/xr/pawn-components/VRInteractComponent.d.ts +20 -0
- package/dist/src/xr/pawn-components/VRInteractComponent.js +81 -0
- package/dist/src/xr/pawn-components/VRSnapTurnComponent.d.ts +25 -0
- package/dist/src/xr/pawn-components/VRSnapTurnComponent.js +114 -0
- package/dist/src/xr/pawn-components/VRTeleportComponent.d.ts +42 -0
- package/dist/src/xr/pawn-components/VRTeleportComponent.js +318 -0
- package/dist/src/xr/ui/CanvasColorPicker.d.ts +33 -0
- package/dist/src/xr/ui/CanvasColorPicker.js +188 -0
- package/dist/src/xr/ui/CanvasKeyboard.d.ts +21 -0
- package/dist/src/xr/ui/CanvasKeyboard.js +281 -0
- package/dist/src/xr/ui/CanvasSlider.d.ts +21 -0
- package/dist/src/xr/ui/CanvasSlider.js +112 -0
- package/dist/src/xr/ui/CanvasUI.d.ts +129 -0
- package/dist/src/xr/ui/CanvasUI.js +876 -0
- package/dist/src/xr/ui/index.d.ts +8 -0
- package/dist/src/xr/ui/index.js +9 -0
- package/dist/test/absolute-transform.test.d.ts +1 -0
- package/dist/test/absolute-transform.test.js +796 -0
- package/dist/test/asset-path.test.d.ts +1 -0
- package/dist/test/asset-path.test.js +339 -0
- package/dist/test/component.test.d.ts +1 -0
- package/dist/test/component.test.js +24 -0
- package/dist/test/construction.test.d.ts +1 -0
- package/dist/test/construction.test.js +26 -0
- package/dist/test/default-options-validation.test.d.ts +1 -0
- package/dist/test/default-options-validation.test.js +186 -0
- package/dist/test/metadata.test.d.ts +1 -0
- package/dist/test/metadata.test.js +82 -0
- package/dist/test/nodeStorage.d.ts +19 -0
- package/dist/test/nodeStorage.js +85 -0
- package/dist/test/postprocess-manager.test.d.ts +1 -0
- package/dist/test/postprocess-manager.test.js +77 -0
- package/dist/test/prefab.test.d.ts +1 -0
- package/dist/test/prefab.test.js +903 -0
- package/dist/test/scene-component.test.d.ts +1 -0
- package/dist/test/scene-component.test.js +13 -0
- package/dist/test/scene-graph.test.d.ts +1 -0
- package/dist/test/scene-graph.test.js +163 -0
- package/dist/test/serialization-v1.test.d.ts +15 -0
- package/dist/test/serialization-v1.test.js +1057 -0
- package/dist/test/serialization.test.d.ts +1 -0
- package/dist/test/serialization.test.js +425 -0
- package/dist/test/spawn.test.d.ts +1 -0
- package/dist/test/spawn.test.js +137 -0
- package/dist/test/utils.d.ts +27 -0
- package/dist/test/utils.js +115 -0
- package/docs/agent-instructions.md +49 -0
- package/docs/deprecated/8-guide-user-interface-2.md +600 -0
- package/docs/deprecated/Agents.md +117 -0
- package/docs/deprecated/TELEGRAM_MINIAPP_SUPPORT_PLAN.md +283 -0
- package/docs/deprecated/summary-2.md +101 -0
- package/docs/engine-summary.md +104 -0
- package/docs/guides/0-world-and-gameloop.md +331 -0
- package/docs/guides/1-actors-and-components.md +955 -0
- package/docs/guides/10-camera-system.md +778 -0
- package/docs/guides/11-equipment-and-weapons.md +850 -0
- package/docs/guides/12-threejs-extensions.md +528 -0
- package/docs/guides/13-visual-effects-and-particles.md +530 -0
- package/docs/guides/14-sound-system.md +436 -0
- package/docs/guides/15-global-audio-manager.md +367 -0
- package/docs/guides/15-navigation-and-pathfinding.md +818 -0
- package/docs/guides/16-ragdoll-physics.md +479 -0
- package/docs/guides/17-asset-referencing.md +248 -0
- package/docs/guides/18-lightmapping-system.md +984 -0
- package/docs/guides/19-webxr-virtual-reality.md +367 -0
- package/docs/guides/2-player-inputs-and-controls.md +737 -0
- package/docs/guides/3-physics-and-collisions.md +248 -0
- package/docs/guides/4-visuals-and-rendering.md +946 -0
- package/docs/guides/5-animation.md +310 -0
- package/docs/guides/6-ai-and-behavior-trees.md +1316 -0
- package/docs/guides/7-building-levels.md +211 -0
- package/docs/guides/8-user-interface.md +291 -0
- package/docs/guides/9-multiplayer.md +181 -0
- package/docs/high-level-class-hierarchy.md +218 -0
- package/eslint-rules/constructor-type-consistency.js +251 -0
- package/eslint-rules/default-getter-return-type.js +42 -0
- package/eslint-rules/engine-class-name-consistency.js +62 -0
- package/eslint-rules/no-async-override-mismatch.js +100 -0
- package/eslint-rules/no-default-class-fields.js +66 -0
- package/eslint-rules/no-override-methods.js +158 -0
- package/games/animation-demo.ts +367 -0
- package/games/animation-retarget-demo.ts +553 -0
- package/games/behavior-tree-demo.ts +1774 -0
- package/games/character_animation.ts +194 -0
- package/games/collision-demo.ts +139 -0
- package/games/deprecated/advanced-grid-demo.ts +336 -0
- package/games/deprecated/airplane-demo.ts +156 -0
- package/games/deprecated/character-controller.ts +161 -0
- package/games/deprecated/chase-game.ts +310 -0
- package/games/deprecated/collision-config.ts +317 -0
- package/games/deprecated/door-demo.ts +641 -0
- package/games/deprecated/fps-demo.ts +128 -0
- package/games/deprecated/fps-shotgun-demo.ts +227 -0
- package/games/deprecated/index.ts +25 -0
- package/games/deprecated/lightmapping-demo.ts +1515 -0
- package/games/deprecated/lights-demo.ts +957 -0
- package/games/deprecated/matcap-demo.ts +823 -0
- package/games/deprecated/material-demo-2.ts +582 -0
- package/games/deprecated/material-demo.ts +204 -0
- package/games/deprecated/memory-leak-test.ts +23 -0
- package/games/deprecated/model-stress-test.ts +150 -0
- package/games/deprecated/multiplayer-demo.ts +392 -0
- package/games/deprecated/physics-demo.ts +199 -0
- package/games/deprecated/shadow-demo.ts +435 -0
- package/games/deprecated/shooting-demo.ts +352 -0
- package/games/deprecated/skybox-demo.ts +341 -0
- package/games/deprecated/sound-demo.ts +117 -0
- package/games/deprecated/timer-demo.ts +178 -0
- package/games/deprecated/voxel-demo.ts +50 -0
- package/games/deprecated/world-commands.ts +184 -0
- package/games/deprecated/world-loading.ts +90 -0
- package/games/examples/fps-advanced/const.ts +122 -0
- package/games/examples/fps-advanced/enemies.ts +174 -0
- package/games/examples/fps-advanced/game-mode.ts +347 -0
- package/games/examples/fps-advanced/game.ts +74 -0
- package/games/examples/fps-advanced/pickups.ts +225 -0
- package/games/examples/fps-advanced/player.ts +101 -0
- package/games/examples/fps-advanced/ui/endgame-ui.ts +277 -0
- package/games/examples/fps-advanced/ui/game-hud.ts +211 -0
- package/games/examples/fps-advanced/ui/menu-ui.ts +217 -0
- package/games/examples/fps-advanced/ui/weapon-hud.ts +254 -0
- package/games/examples/fps-advanced/weapons.ts +209 -0
- package/games/examples/index.ts +5 -0
- package/games/examples/plugin-demo/game.ts +175 -0
- package/games/examples/plugin-demo/plugins/dynamic-lighting.ts +146 -0
- package/games/examples/plugin-demo/plugins/instanced-forest.ts +186 -0
- package/games/examples/plugin-demo/plugins/particle-fountain.ts +63 -0
- package/games/examples/plugin-demo/plugins/physics-playground.ts +189 -0
- package/games/examples/plugin-demo/plugins/robot-follower.ts +306 -0
- package/games/examples/plugin-demo/plugins/scatter-models.ts +74 -0
- package/games/examples/plugin-demo/plugins/simple-cube.ts +44 -0
- package/games/examples/plugin-demo/plugins/tic-tac-toe.ts +522 -0
- package/games/examples/plugin-demo/plugins/wobbling-sphere.ts +66 -0
- package/games/examples/side-scroller-advanced/const.ts +88 -0
- package/games/examples/side-scroller-advanced/game-mode.ts +350 -0
- package/games/examples/side-scroller-advanced/game.ts +80 -0
- package/games/examples/side-scroller-advanced/level-generator.ts +384 -0
- package/games/examples/side-scroller-advanced/pickups.ts +132 -0
- package/games/examples/side-scroller-advanced/player.ts +105 -0
- package/games/examples/side-scroller-advanced/ui/endgame-ui.ts +278 -0
- package/games/examples/side-scroller-advanced/ui/game-hud.ts +238 -0
- package/games/examples/side-scroller-advanced/ui/menu-ui.ts +215 -0
- package/games/examples/vehicle/base-vehicle.ts +159 -0
- package/games/examples/vehicle/game.ts +154 -0
- package/games/examples/vehicle/mesh-vehicle.ts +191 -0
- package/games/examples/vehicle/player.ts +86 -0
- package/games/examples/vehicle/primitive-vehicle.ts +266 -0
- package/games/examples/vr-game/VRAttachableCube.ts +39 -0
- package/games/examples/vr-game/VRInteractableCylinder.ts +83 -0
- package/games/examples/vr-game/VRPressableButton.ts +113 -0
- package/games/examples/vr-game/VRProjectileActor.ts +69 -0
- package/games/examples/vr-game/VRRifleActor.ts +138 -0
- package/games/examples/vr-game/game.ts +69 -0
- package/games/examples/vr-game/index.ts +9 -0
- package/games/examples/vr-game/scene.ts +99 -0
- package/games/hand-tracking-demo.ts +71 -0
- package/games/index.ts +21 -0
- package/games/instanced-mesh-demo.ts +429 -0
- package/games/manifold-demo.ts +52 -0
- package/games/navigation-demo.ts +351 -0
- package/games/navmesh-primitives-demo.ts +1252 -0
- package/games/performance-test-demo.ts +237 -0
- package/games/postprocess-demo.ts +867 -0
- package/games/ragdoll-demo-simple.ts +163 -0
- package/games/ragdoll-demo.ts +272 -0
- package/games/swipe-tap-demo.ts +228 -0
- package/games/tween-demo.ts +125 -0
- package/games/ui-demo.ts +1058 -0
- package/games/vfx-demo.ts +922 -0
- package/games/vfx-wawa-demo.ts +540 -0
- package/games/vr-ui-demo-minimal.ts +156 -0
- package/games/vr-ui-demo.ts +972 -0
- package/package.json +104 -0
- package/scripts/build-browser-bundle.ts +75 -0
- package/scripts/check-asset-path.ts +166 -0
- package/scripts/dump-templates.ts +21 -0
- package/scripts/generate-dependencies.ts +145 -0
- package/scripts/generate-prefabs.ts +120 -0
- package/scripts/load-save-world.ts +44 -0
- package/scripts/loc.ts +112 -0
- package/scripts/optimize-glb-wrapper.ts +28 -0
- package/scripts/optimize-glb.ts +352 -0
- package/scripts/session-server.ts +861 -0
- package/scripts/test-world-loading.ts +23 -0
- package/src/actors/Actor.ts +1183 -0
- package/src/actors/GLTFMeshActor.ts +107 -0
- package/src/actors/GlobalParticleManager.ts +460 -0
- package/src/actors/Pawn.ts +370 -0
- package/src/actors/PlayerController.ts +646 -0
- package/src/actors/PlayerStart.ts +47 -0
- package/src/actors/Projectile.ts +179 -0
- package/src/actors/RagdollTestActor.ts +153 -0
- package/src/actors/ThirdPersonCharacterPawn.ts +139 -0
- package/src/actors/index.ts +21 -0
- package/src/animation/AnimationClipCache.ts +86 -0
- package/src/animation/AnimationRetargeting.ts +566 -0
- package/src/animation/SkeletonProfile.ts +137 -0
- package/src/animation/index.ts +14 -0
- package/src/animation/retargeting.ts +866 -0
- package/src/components/CharacterStatsComponent.ts +199 -0
- package/src/components/CollisionShapeComponent.ts +256 -0
- package/src/components/Component.ts +111 -0
- package/src/components/FollowComponent.ts +149 -0
- package/src/components/PrimitiveComponent.ts +368 -0
- package/src/components/ResetPositionComponent.ts +175 -0
- package/src/components/SceneComponent.ts +628 -0
- package/src/components/audio/SoundComponent.ts +385 -0
- package/src/components/audio/index.ts +11 -0
- package/src/components/csg/CSGCombiner.ts +268 -0
- package/src/components/csg/CSGShapes.ts +344 -0
- package/src/components/csg/index.ts +12 -0
- package/src/components/gameplay/BaseWeaponComponent.ts +597 -0
- package/src/components/gameplay/DoorComponent.ts +930 -0
- package/src/components/gameplay/Equipment.ts +30 -0
- package/src/components/gameplay/GenericEquipment.ts +96 -0
- package/src/components/gameplay/InstantHitWeaponComponent.ts +248 -0
- package/src/components/gameplay/PickupComponent.ts +473 -0
- package/src/components/gameplay/ProjectileWeaponComponent.ts +114 -0
- package/src/components/gameplay/ShotgunComponent.ts +220 -0
- package/src/components/gameplay/SwitchComponent.ts +466 -0
- package/src/components/gameplay/TriggerZoneComponent.ts +346 -0
- package/src/components/gameplay/index.ts +20 -0
- package/src/components/index.ts +19 -0
- package/src/components/lights/AmbientLightComponent.ts +72 -0
- package/src/components/lights/DirectionalLightComponent.ts +163 -0
- package/src/components/lights/HemisphereLightComponent.ts +132 -0
- package/src/components/lights/LightComponent.ts +351 -0
- package/src/components/lights/PointLightComponent.ts +115 -0
- package/src/components/lights/RectAreaLightComponent.ts +151 -0
- package/src/components/lights/SpotLightComponent.ts +193 -0
- package/src/components/lights/index.ts +17 -0
- package/src/components/movement/AerialMovementComponent.ts +348 -0
- package/src/components/movement/AirplaneMovementComponent.ts +236 -0
- package/src/components/movement/BasePawnMovementComponent.ts +297 -0
- package/src/components/movement/CharacterMovementComponent.ts +446 -0
- package/src/components/movement/DirectionalCharacterMovementComponent.ts +79 -0
- package/src/components/movement/NpcMovementComponent.ts +930 -0
- package/src/components/movement/PathMovementComponent.ts +190 -0
- package/src/components/movement/TopDownMovementComponent.ts +88 -0
- package/src/components/movement/TweenMovementComponent.ts +386 -0
- package/src/components/movement/VehicleMovementComponent.ts +469 -0
- package/src/components/movement/index.ts +19 -0
- package/src/components/physics/RagdollComponent.ts +730 -0
- package/src/components/visual/AnimationComponent.ts +208 -0
- package/src/components/visual/AnimationStateMachineComponent.ts +1079 -0
- package/src/components/visual/BaseInstancedMeshComponent.ts +904 -0
- package/src/components/visual/BillboardComponent.ts +127 -0
- package/src/components/visual/EditorOnlyMeshComponent.ts +54 -0
- package/src/components/visual/FogComponent.ts +131 -0
- package/src/components/visual/GLTFMeshComponent.ts +444 -0
- package/src/components/visual/InstancedGltfMeshComponent.ts +215 -0
- package/src/components/visual/InstancedMeshComponent.ts +118 -0
- package/src/components/visual/MeshComponent.ts +224 -0
- package/src/components/visual/ParticleEmitterComponent.ts +628 -0
- package/src/components/visual/SkyboxComponent.ts +381 -0
- package/src/components/visual/TerrainMeshComponent.ts +346 -0
- package/src/components/visual/UI3DComponent.ts +264 -0
- package/src/components/visual/index.ts +23 -0
- package/src/components/voxel/MagicaVoxelLoader.ts +184 -0
- package/src/components/voxel/VoxelMeshComponent.ts +274 -0
- package/src/components/voxel/index.ts +3 -0
- package/src/const.ts +68 -0
- package/src/csg/CSGUtils.ts +771 -0
- package/src/csg/ManifoldWrapper.ts +704 -0
- package/src/csg/index.ts +13 -0
- package/src/dependencies.ts +76 -0
- package/src/game/GameBuilder.ts +280 -0
- package/src/game/GameLoop.ts +614 -0
- package/src/game/GameMode.ts +127 -0
- package/src/game/Playable.ts +84 -0
- package/src/game/World.ts +1430 -0
- package/src/game/index.ts +18 -0
- package/src/global.d.ts +11 -0
- package/src/index.ts +39 -0
- package/src/materials.ts +181 -0
- package/src/multiplayer/MovementPrediction.ts +202 -0
- package/src/multiplayer/NetWorld.ts +920 -0
- package/src/multiplayer/README.md +349 -0
- package/src/multiplayer/implementations/MemorySession.ts +112 -0
- package/src/multiplayer/implementations/WebSocketSession.ts +468 -0
- package/src/multiplayer/implementations/index.ts +14 -0
- package/src/multiplayer/index.ts +16 -0
- package/src/multiplayer/interface.ts +174 -0
- package/src/navigation/NavigationServer.ts +170 -0
- package/src/navigation/RecastNavigationServer.ts +370 -0
- package/src/navigation/index.ts +17 -0
- package/src/npc/behavior-tree/BehaviorNode.ts +191 -0
- package/src/npc/behavior-tree/BehaviorTreeComponent.ts +351 -0
- package/src/npc/behavior-tree/behaviors/BehaviorAction.ts +97 -0
- package/src/npc/behavior-tree/behaviors/ConditionEvaluator.ts +128 -0
- package/src/npc/behavior-tree/behaviors/actions/aerial/AerialMoveToTargetAction.ts +128 -0
- package/src/npc/behavior-tree/behaviors/actions/aerial/AerialSearchAction.ts +159 -0
- package/src/npc/behavior-tree/behaviors/actions/aerial/AerialTrackTargetAction.ts +76 -0
- package/src/npc/behavior-tree/behaviors/actions/aerial/AerialWanderAction.ts +160 -0
- package/src/npc/behavior-tree/behaviors/actions/aerial/index.ts +5 -0
- package/src/npc/behavior-tree/behaviors/actions/combat/MeleeAttackAction.ts +151 -0
- package/src/npc/behavior-tree/behaviors/actions/combat/ShootAction.ts +158 -0
- package/src/npc/behavior-tree/behaviors/actions/combat/index.ts +3 -0
- package/src/npc/behavior-tree/behaviors/actions/ground/FleeFromTargetAction.ts +157 -0
- package/src/npc/behavior-tree/behaviors/actions/ground/FollowActorAction.ts +131 -0
- package/src/npc/behavior-tree/behaviors/actions/ground/MoveToPositionAction.ts +99 -0
- package/src/npc/behavior-tree/behaviors/actions/ground/SetNextWaypointAction.ts +114 -0
- package/src/npc/behavior-tree/behaviors/actions/ground/WanderAction.ts +146 -0
- package/src/npc/behavior-tree/behaviors/actions/ground/index.ts +6 -0
- package/src/npc/behavior-tree/behaviors/actions/index.ts +13 -0
- package/src/npc/behavior-tree/behaviors/actions/utility/CalculateTacticalPositionAction.ts +117 -0
- package/src/npc/behavior-tree/behaviors/actions/utility/LookAtTargetAction.ts +136 -0
- package/src/npc/behavior-tree/behaviors/actions/utility/WaitAction.ts +70 -0
- package/src/npc/behavior-tree/behaviors/actions/utility/index.ts +4 -0
- package/src/npc/behavior-tree/behaviors/conditions/BlackboardValueCondition.ts +144 -0
- package/src/npc/behavior-tree/behaviors/conditions/CanSeeTargetCondition.ts +171 -0
- package/src/npc/behavior-tree/behaviors/conditions/HasLastKnownPositionCondition.ts +63 -0
- package/src/npc/behavior-tree/behaviors/conditions/HpAbovePercentCondition.ts +83 -0
- package/src/npc/behavior-tree/behaviors/conditions/IsPlayerNearCondition.ts +49 -0
- package/src/npc/behavior-tree/behaviors/conditions/TargetBelowHpPercentCondition.ts +61 -0
- package/src/npc/behavior-tree/behaviors/conditions/TargetInConeCondition.ts +106 -0
- package/src/npc/behavior-tree/behaviors/conditions/TimeLimitCondition.ts +65 -0
- package/src/npc/behavior-tree/behaviors/conditions/index.ts +19 -0
- package/src/npc/behavior-tree/behaviors/index.ts +9 -0
- package/src/npc/behavior-tree/blackboard/Blackboard.ts +127 -0
- package/src/npc/behavior-tree/blackboard/BlackboardKey.ts +59 -0
- package/src/npc/behavior-tree/blackboard/index.ts +2 -0
- package/src/npc/behavior-tree/index.ts +27 -0
- package/src/npc/behavior-tree/loader/BehaviorTreeLoader.ts +296 -0
- package/src/npc/behavior-tree/nodes/CompositeNode.ts +100 -0
- package/src/npc/behavior-tree/nodes/LeafNode.ts +11 -0
- package/src/npc/behavior-tree/nodes/composite/SelectorNode.ts +56 -0
- package/src/npc/behavior-tree/nodes/composite/SequenceNode.ts +56 -0
- package/src/physics/BasePhysicsEngine.ts +1486 -0
- package/src/physics/IPhysicsVehicle.ts +162 -0
- package/src/physics/PhysicsEngine.ts +517 -0
- package/src/physics/PhysicsTypes.ts +116 -0
- package/src/physics/implementations/RapierDebugRender.ts +55 -0
- package/src/physics/implementations/RapierPhysics.ts +1419 -0
- package/src/physics/implementations/RapierVehicle.ts +267 -0
- package/src/physics/index.ts +16 -0
- package/src/render/EdgeOutlineEffect.ts +365 -0
- package/src/render/PostProcessManager.ts +1025 -0
- package/src/render/Renderer.ts +310 -0
- package/src/render/Texture.ts +140 -0
- package/src/render/index.ts +22 -0
- package/src/render/lightmapping/LightmapAtlas.ts +248 -0
- package/src/render/lightmapping/LightmapBaker.ts +333 -0
- package/src/render/lightmapping/LightmapManager.ts +752 -0
- package/src/render/lightmapping/LightmapMaterial.ts +283 -0
- package/src/render/lightmapping/LightmapSerialization.ts +336 -0
- package/src/render/lightmapping/LightmapSerializer.ts +309 -0
- package/src/render/lightmapping/MultiLightmapperMaterial.ts +484 -0
- package/src/render/lightmapping/index.ts +18 -0
- package/src/render/postprocessing/EffectPassWrapper.ts +47 -0
- package/src/render/postprocessing/ObjectOutlineEffect.ts +356 -0
- package/src/render/postprocessing/index.ts +2 -0
- package/src/runtime/GameRuntime.ts +153 -0
- package/src/runtime/InjectedDependencies.ts +70 -0
- package/src/runtime/Utils.ts +146 -0
- package/src/runtime/index.ts +4 -0
- package/src/runtime/materials/MatcapShaderMaterial.ts +242 -0
- package/src/runtime/materials/index.ts +1 -0
- package/src/scripting/Plugin.ts +67 -0
- package/src/scripting/PluginManager.ts +99 -0
- package/src/scripting/index.ts +1 -0
- package/src/storage/defaultStorageProvider.ts +95 -0
- package/src/storage/index.ts +16 -0
- package/src/storage/projectContext.ts +176 -0
- package/src/storage/storageProvider.ts +271 -0
- package/src/systems/ClassRegistry.ts +484 -0
- package/src/systems/ConsoleManager.ts +484 -0
- package/src/systems/ConsoleVariableHandler.ts +105 -0
- package/src/systems/ConsoleVariableManager.ts +288 -0
- package/src/systems/InputManager.ts +1255 -0
- package/src/systems/ObjectNamingSystem.ts +30 -0
- package/src/systems/Stats.ts +178 -0
- package/src/systems/TimerSystem.ts +353 -0
- package/src/systems/TweenManager.ts +107 -0
- package/src/systems/WorldSerialization.ts +1211 -0
- package/src/systems/collision/CollisionConfig.ts +281 -0
- package/src/systems/collision/CollisionTypes.ts +185 -0
- package/src/systems/collision/index.ts +15 -0
- package/src/systems/index.ts +23 -0
- package/src/templates/MyActor.ts +29 -0
- package/src/templates/MySceneComponent.ts +29 -0
- package/src/templates/README.md +1 -0
- package/src/types/rapier-es.d.ts +16 -0
- package/src/types/stats.js.d.ts +22 -0
- package/src/ui/LoadingScreen.ts +110 -0
- package/src/ui/UIElement.ts +224 -0
- package/src/ui/UILayout.ts +269 -0
- package/src/ui/UIManager.ts +161 -0
- package/src/ui/UIResource.ts +20 -0
- package/src/ui/components/AmmoCounter.ts +126 -0
- package/src/ui/components/BaseUIComponent.md +296 -0
- package/src/ui/components/BaseUIComponent.ts +390 -0
- package/src/ui/components/Compass.ts +144 -0
- package/src/ui/components/ControlsPanel.ts +62 -0
- package/src/ui/components/Crosshair.ts +76 -0
- package/src/ui/components/InventoryBar.ts +224 -0
- package/src/ui/components/InventoryGrid.ts +471 -0
- package/src/ui/components/Minimap.ts +181 -0
- package/src/ui/components/NumberDisplay.ts +198 -0
- package/src/ui/components/ProgressBar.ts +403 -0
- package/src/ui/components/ReloadIndicator.ts +159 -0
- package/src/ui/components/index.ts +12 -0
- package/src/ui/index.ts +21 -0
- package/src/ui/ui-loader.ts +87 -0
- package/src/utils/Color.ts +51 -0
- package/src/utils/Delegate.ts +112 -0
- package/src/utils/DescriptionHelpers.ts +93 -0
- package/src/utils/EditorClassMeta.ts +91 -0
- package/src/utils/GlobalAudioManager.ts +370 -0
- package/src/utils/IAsyncLoadable.ts +122 -0
- package/src/utils/MaterialHelpers.ts +321 -0
- package/src/utils/MathHelpers.ts +79 -0
- package/src/utils/NodeJs.ts +79 -0
- package/src/utils/Perlin.ts +346 -0
- package/src/utils/ResourceManager.ts +716 -0
- package/src/utils/SceneGraphUtils.ts +173 -0
- package/src/utils/Spawn.ts +93 -0
- package/src/utils/ThreeJsExtensions.ts +1200 -0
- package/src/utils/TweenExtensions.ts +124 -0
- package/src/utils/UserCodeEngine.ts +243 -0
- package/src/utils/Utils.ts +328 -0
- package/src/utils/VRButtonUtils.ts +125 -0
- package/src/utils/browser-polyfills/module.ts +36 -0
- package/src/utils/browser-polyfills/path.ts +232 -0
- package/src/utils/index.ts +29 -0
- package/src/utils/serialization/cdo.ts +87 -0
- package/src/utils/serialization/clsAlias.ts +92 -0
- package/src/utils/serialization/decorator.ts +176 -0
- package/src/utils/serialization/index.ts +7 -0
- package/src/utils/serialization/prefab.ts +78 -0
- package/src/utils/serialization/prefabManager.ts +88 -0
- package/src/utils/serialization/serializable.ts +28 -0
- package/src/utils/serialization/serializer.ts +1111 -0
- package/src/utils/serialization/specialization.ts +224 -0
- package/src/utils/serialization/specializationUtils.ts +185 -0
- package/src/vfx/VFXComponent.ts +206 -0
- package/src/vfx/index.ts +17 -0
- package/src/vfx/types.ts +287 -0
- package/src/vfx/wawa-vfx-reference.md +399 -0
- package/src/world-commands/common.ts +25 -0
- package/src/world-commands/generate-code.ts +99 -0
- package/src/world-commands/index.ts +19 -0
- package/src/world-commands/place-gltf.ts +63 -0
- package/src/world-commands/place-prefab.ts +62 -0
- package/src/world-commands/place-primitive.ts +128 -0
- package/src/world-commands/remove-actors.ts +32 -0
- package/src/xr/VRActor.ts +71 -0
- package/src/xr/VRControllerHandler.ts +87 -0
- package/src/xr/VRControllerManager.ts +559 -0
- package/src/xr/VRDeviceHandler.ts +77 -0
- package/src/xr/VRHandHandler.ts +166 -0
- package/src/xr/VRInputDevice.ts +374 -0
- package/src/xr/VRPawn.ts +815 -0
- package/src/xr/actor-components/CanvasUIComponent.ts +425 -0
- package/src/xr/actor-components/VRBaseComponent.ts +26 -0
- package/src/xr/actor-components/VRGrabbableComponent.ts +73 -0
- package/src/xr/actor-components/VRInteractableComponent.ts +43 -0
- package/src/xr/index.ts +17 -0
- package/src/xr/pawn-components/VRGrabComponent.ts +435 -0
- package/src/xr/pawn-components/VRInteractComponent.ts +77 -0
- package/src/xr/pawn-components/VRSnapTurnComponent.ts +103 -0
- package/src/xr/pawn-components/VRTeleportComponent.ts +284 -0
- package/src/xr/ui/CanvasColorPicker.ts +172 -0
- package/src/xr/ui/CanvasKeyboard.ts +283 -0
- package/src/xr/ui/CanvasSlider.ts +83 -0
- package/src/xr/ui/CanvasUI.ts +879 -0
- package/src/xr/ui/index.ts +9 -0
|
@@ -0,0 +1,1183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actor - base class for any object that can be placed in a Genesys world.
|
|
3
|
+
*
|
|
4
|
+
* Detailed explanation:
|
|
5
|
+
* - Wraps a root `SceneComponent` to anchor visuals, physics, and child components.
|
|
6
|
+
* - Interacts with the world lifecycle by dispatching begin/end play and tick events.
|
|
7
|
+
* - Supports serialization via `WorldSerializer` so instances can be saved as prefabs.
|
|
8
|
+
*
|
|
9
|
+
* Recommended usage (for humans and AI assistants):
|
|
10
|
+
* - Extend this class to create new actor types with custom components.
|
|
11
|
+
* - Override `tickBeforePhysics` or `tickAfterPhysics` for per-frame behavior.
|
|
12
|
+
* - Register subclasses with `ClassRegistry` if you want them loadable from data.
|
|
13
|
+
* - Include serializable fields in `toJSON` when state should persist across sessions.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import 'reflect-metadata';
|
|
17
|
+
import * as THREE from 'three';
|
|
18
|
+
|
|
19
|
+
import { PrimitiveComponent } from '../components/PrimitiveComponent.js';
|
|
20
|
+
import { SceneComponent } from '../components/SceneComponent.js';
|
|
21
|
+
import { Playable } from '../game/Playable.js';
|
|
22
|
+
import { PlayState } from '../game/Playable.js';
|
|
23
|
+
import { NetMovementPredictor } from '../multiplayer/MovementPrediction.js';
|
|
24
|
+
import { type INetObject, NetWorld } from '../multiplayer/NetWorld.js';
|
|
25
|
+
import { ClassRegistry, EngineClass } from '../systems/ClassRegistry.js';
|
|
26
|
+
import { ObjectNamingSystem } from '../systems/ObjectNamingSystem.js';
|
|
27
|
+
import { isLegacyData, WorldSerializer } from '../systems/WorldSerialization.js';
|
|
28
|
+
import { Delegate } from '../utils/Delegate.js';
|
|
29
|
+
import { DescriptionHelper } from '../utils/DescriptionHelpers.js';
|
|
30
|
+
import { isAsyncLoadable } from '../utils/IAsyncLoadable.js';
|
|
31
|
+
import { type ClassPropertyMetadata, getPropertyMetadata } from '../utils/serialization/decorator.js';
|
|
32
|
+
import { property } from '../utils/serialization/decorator.js';
|
|
33
|
+
import { instantiatePrefab } from '../utils/serialization/prefab.js';
|
|
34
|
+
import { ISerializableObjectTag } from '../utils/serialization/serializable.js';
|
|
35
|
+
import { ensure, shortUUID } from '../utils/Utils.js';
|
|
36
|
+
|
|
37
|
+
import type { PlayerController } from './PlayerController.js';
|
|
38
|
+
import type { DamageHitInfo } from '../components/CharacterStatsComponent.js';
|
|
39
|
+
import type { World } from '../game/World.js';
|
|
40
|
+
import type { CollisionEvent, IPhysicsEngine } from '../physics/PhysicsEngine.js';
|
|
41
|
+
import type { ComponentPhysicsOptions } from '../physics/PhysicsTypes.js';
|
|
42
|
+
import type { ISerializable, SerializedActor, WorldSerializationContext } from '../systems/WorldSerialization.js';
|
|
43
|
+
import type { EditorClassMeta, EditorPropertyChangedResult, IEditorObject } from '../utils/EditorClassMeta.js';
|
|
44
|
+
import type { IAsyncLoadable } from '../utils/IAsyncLoadable.js';
|
|
45
|
+
import type { ISceneGraphDebugNodeGenerator, SceneGraphDebugNode } from '../utils/SceneGraphUtils.js';
|
|
46
|
+
import type { Dumper, Loader, PrefabInfo } from '../utils/serialization/serializer.js';
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
export type ActorTickDelegate = Delegate<[Actor, number], void>;
|
|
50
|
+
export type ActorAddedToWorldDelegate = Delegate<[Actor, World], void>;
|
|
51
|
+
export type GenericActorDelegate = Delegate<[Actor], void>;
|
|
52
|
+
export type ActorClickDelegate = Delegate<[Actor, THREE.Intersection], void>;
|
|
53
|
+
export type ActorCollisionDelegate = Delegate<[Actor, SceneComponent, Actor, SceneComponent, CollisionEvent], void>;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Options for configuring an Actor instance
|
|
57
|
+
*/
|
|
58
|
+
export interface ActorOptions {
|
|
59
|
+
/** Initial position in world space */
|
|
60
|
+
position?: THREE.Vector3;
|
|
61
|
+
/** Initial rotation in world space */
|
|
62
|
+
rotation?: THREE.Euler;
|
|
63
|
+
/** Initial scale in world space */
|
|
64
|
+
scale?: THREE.Vector3;
|
|
65
|
+
/** Initial root component */
|
|
66
|
+
rootComponent?: SceneComponent;
|
|
67
|
+
/** Initial scene components added under the root component */
|
|
68
|
+
sceneComponents?: SceneComponent[];
|
|
69
|
+
/** Tags for identifying and grouping actors */
|
|
70
|
+
actorTags?: string[];
|
|
71
|
+
/**
|
|
72
|
+
* Internal flag to indicate if the actor is being deserialized
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
__isDeserializing?: boolean;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface ActorNetState {
|
|
79
|
+
position: [number, number, number];
|
|
80
|
+
rotation: [number, number, number];
|
|
81
|
+
scale: [number, number, number];
|
|
82
|
+
timestamp: number;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Options for describing an actor in the scene
|
|
87
|
+
* Used to generate a description of the actor's properties
|
|
88
|
+
*/
|
|
89
|
+
export interface ActorDescriptionOptions {
|
|
90
|
+
// whether to include the actor's components in the description
|
|
91
|
+
includeComponentsDetails?: boolean;
|
|
92
|
+
|
|
93
|
+
// if true, will omit all description, and only include the name and uuid
|
|
94
|
+
omitDescription?: boolean;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Base class for all actors in the scene
|
|
99
|
+
* An actor is an object that can be placed in the world and has components attached to it
|
|
100
|
+
*/
|
|
101
|
+
@EngineClass('Actor')
|
|
102
|
+
export class Actor<TOptions extends ActorOptions = ActorOptions> extends Playable implements
|
|
103
|
+
ISceneGraphDebugNodeGenerator,
|
|
104
|
+
ISerializable,
|
|
105
|
+
IEditorObject,
|
|
106
|
+
INetObject {
|
|
107
|
+
|
|
108
|
+
static readonly EDITOR_CLASS_META: EditorClassMeta = {
|
|
109
|
+
actorTags: {
|
|
110
|
+
isTagProperty: true,
|
|
111
|
+
}
|
|
112
|
+
} as const;
|
|
113
|
+
|
|
114
|
+
readonly [ISerializableObjectTag] = true;
|
|
115
|
+
|
|
116
|
+
@property({editorOnly: true, hidden: true})
|
|
117
|
+
public editorData: Record<string, any> = {};
|
|
118
|
+
|
|
119
|
+
@property({transientOnPrefab: true, readonly: true})
|
|
120
|
+
readonly uuid: string = shortUUID();
|
|
121
|
+
|
|
122
|
+
readonly name: string;
|
|
123
|
+
private _rootComponent: SceneComponent;
|
|
124
|
+
protected world: World | null = null;
|
|
125
|
+
protected lifeSpan: number = 0;
|
|
126
|
+
protected remoteNetClientId: string | null = null;
|
|
127
|
+
protected remoteNetDeviceId: string | null = null;
|
|
128
|
+
protected netRelevant: boolean = false;
|
|
129
|
+
protected movementPredictor: NetMovementPredictor | null = null;
|
|
130
|
+
|
|
131
|
+
// deprecate in favor of $$prefab
|
|
132
|
+
protected prefabName: string | null = null;
|
|
133
|
+
protected prefabData: SerializedActor | null = null;
|
|
134
|
+
protected prefabInheritanceChain: Record<string, SerializedActor> | null = null;
|
|
135
|
+
|
|
136
|
+
@property({ ctorArg: 'ctorArgOnly' })
|
|
137
|
+
private ctorArgOptions: TOptions;
|
|
138
|
+
|
|
139
|
+
// make it protected/private later
|
|
140
|
+
public $prefab: PrefabInfo | null = null;
|
|
141
|
+
|
|
142
|
+
private transient: boolean = false;
|
|
143
|
+
protected actorTags: string[] = [];
|
|
144
|
+
|
|
145
|
+
@property({default: false, category: 'Advanced'})
|
|
146
|
+
private hiddenInGame: boolean = false;
|
|
147
|
+
@property({default: false, category: 'Advanced'})
|
|
148
|
+
private editorOnly: boolean = false;
|
|
149
|
+
|
|
150
|
+
/** Invoked when this actor is added to a world */
|
|
151
|
+
public readonly onAddedToWorld: ActorAddedToWorldDelegate = new Delegate<[Actor, World], void>();
|
|
152
|
+
/** Invoked during tick before physics simulation */
|
|
153
|
+
public readonly onTickPrePhysics: ActorTickDelegate = new Delegate<[Actor, number], void>();
|
|
154
|
+
/** Invoked during tick after physics simulation */
|
|
155
|
+
public readonly onTickPostPhysics: ActorTickDelegate = new Delegate<[Actor, number], void>();
|
|
156
|
+
/** Invoked when this actor begins play */
|
|
157
|
+
public readonly onBeginPlay: GenericActorDelegate = new Delegate<[Actor], void>();
|
|
158
|
+
/** Invoked when this actor ends play */
|
|
159
|
+
public readonly onEndPlay: GenericActorDelegate = new Delegate<[Actor], void>();
|
|
160
|
+
/** Invoked right before this actor starts end play, so it's still in `playing` state */
|
|
161
|
+
public readonly onPreEndPlay: GenericActorDelegate = new Delegate<[Actor], void>();
|
|
162
|
+
/** Invoked when this actor is clicked */
|
|
163
|
+
public readonly onClicked: ActorClickDelegate = new Delegate<[Actor, THREE.Intersection], void>();
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Invoked when this actor collides with another actor
|
|
167
|
+
* Parameters: [thisActor, thisActorComponent, otherActor, otherActorComponent, collisionEvent]
|
|
168
|
+
*/
|
|
169
|
+
public readonly onCollideWith: ActorCollisionDelegate = new Delegate<[Actor, SceneComponent, Actor, SceneComponent, CollisionEvent], void>();
|
|
170
|
+
/**
|
|
171
|
+
* Invoked when this actor overlaps with another actor
|
|
172
|
+
* Parameters: [thisActor, thisActorComponent, otherActor, otherActorComponent, collisionEvent]
|
|
173
|
+
*/
|
|
174
|
+
public readonly onOverlapWith: ActorCollisionDelegate = new Delegate<[Actor, SceneComponent, Actor, SceneComponent, CollisionEvent], void>();
|
|
175
|
+
/**
|
|
176
|
+
* Invoked when this actor stops colliding with another actor
|
|
177
|
+
* Parameters: [thisActor, thisActorComponent, otherActor, otherActorComponent, collisionEvent]
|
|
178
|
+
*/
|
|
179
|
+
public readonly onStopCollidingWith: ActorCollisionDelegate = new Delegate<[Actor, SceneComponent, Actor, SceneComponent, CollisionEvent], void>();
|
|
180
|
+
/**
|
|
181
|
+
* Invoked when this actor stops overlapping with another actor
|
|
182
|
+
* Parameters: [thisActor, thisActorComponent, otherActor, otherActorComponent, collisionEvent]
|
|
183
|
+
*/
|
|
184
|
+
public readonly onStopOverlappingWith: ActorCollisionDelegate = new Delegate<[Actor, SceneComponent, Actor, SceneComponent, CollisionEvent], void>();
|
|
185
|
+
|
|
186
|
+
static get DEFAULT_OPTIONS(): ActorOptions {
|
|
187
|
+
return {
|
|
188
|
+
actorTags: []
|
|
189
|
+
} as const;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Creates a new Actor instance
|
|
194
|
+
* @param options Configuration options for the actor
|
|
195
|
+
*/
|
|
196
|
+
constructor(readonly options: TOptions = {} as TOptions) {
|
|
197
|
+
super();
|
|
198
|
+
this.ctorArgOptions = options;
|
|
199
|
+
options = { ...Actor.DEFAULT_OPTIONS, ...options, };
|
|
200
|
+
this.name = ObjectNamingSystem.generateName(this);
|
|
201
|
+
this.actorTags = options.actorTags ? [...options.actorTags] : [];
|
|
202
|
+
let rootComponent = options.rootComponent;
|
|
203
|
+
if (rootComponent && !ensure(rootComponent.getActor() === null)) {
|
|
204
|
+
rootComponent = undefined;
|
|
205
|
+
}
|
|
206
|
+
if (rootComponent) {
|
|
207
|
+
this._rootComponent = rootComponent;
|
|
208
|
+
if (options.position) {
|
|
209
|
+
this.rootComponent.position.copy(options.position);
|
|
210
|
+
}
|
|
211
|
+
if (options.rotation) {
|
|
212
|
+
this.rootComponent.rotation.copy(options.rotation);
|
|
213
|
+
}
|
|
214
|
+
if (options.scale) {
|
|
215
|
+
this.rootComponent.scale.copy(options.scale);
|
|
216
|
+
}
|
|
217
|
+
} else {
|
|
218
|
+
this._rootComponent = new SceneComponent({
|
|
219
|
+
position: options.position,
|
|
220
|
+
rotation: options.rotation,
|
|
221
|
+
scale: options.scale
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
this.rootComponent.setActor(this);
|
|
225
|
+
for (const component of options.sceneComponents ?? []) {
|
|
226
|
+
if (component instanceof SceneComponent) {
|
|
227
|
+
this.rootComponent.add(component);
|
|
228
|
+
} else {
|
|
229
|
+
console.trace(`${component} is not a SceneComponent`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
this.rootComponent.updateMatrixWorld(true);
|
|
234
|
+
|
|
235
|
+
const legacyPrefabName = (options as any).prefabName;
|
|
236
|
+
if (legacyPrefabName) {
|
|
237
|
+
this.prefabName = legacyPrefabName;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Gets the prefab name of this actor
|
|
243
|
+
* @returns The prefab name or null if not set
|
|
244
|
+
*/
|
|
245
|
+
public getPrefabName(): string | null {
|
|
246
|
+
return this.prefabName ?? this.$prefab?.$path ?? null;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Gets the prefab data of this actor
|
|
251
|
+
* @returns The prefab data or null if not set
|
|
252
|
+
*/
|
|
253
|
+
public getPrefabData(): SerializedActor | null {
|
|
254
|
+
return this.prefabData;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Gets the prefab inheritance chain of this actor
|
|
259
|
+
* @returns The prefab inheritance chain or null if not set
|
|
260
|
+
*/
|
|
261
|
+
public getPrefabInheritanceChain(): Record<string, SerializedActor> | null {
|
|
262
|
+
return this.prefabInheritanceChain;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Sets the prefab name and data of this actor
|
|
267
|
+
* @param name The prefab name
|
|
268
|
+
* @param data The prefab data
|
|
269
|
+
* @param inheritanceChain The full prefab inheritance chain (optional)
|
|
270
|
+
* @returns This actor instance for method chaining
|
|
271
|
+
*/
|
|
272
|
+
public setPrefab(name: string, data: SerializedActor, inheritanceChain?: Record<string, SerializedActor>): this {
|
|
273
|
+
this.prefabName = name;
|
|
274
|
+
this.prefabData = data;
|
|
275
|
+
this.prefabInheritanceChain = inheritanceChain ?? null;
|
|
276
|
+
return this;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Clears the prefab name and data of this actor
|
|
281
|
+
* @returns This actor instance for method chaining
|
|
282
|
+
*/
|
|
283
|
+
public clearPrefab(): this {
|
|
284
|
+
this.prefabName = null;
|
|
285
|
+
this.prefabData = null;
|
|
286
|
+
this.prefabInheritanceChain = null;
|
|
287
|
+
return this;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Gets all tags of this actor
|
|
292
|
+
* @returns Array of tags (empty array if no tags)
|
|
293
|
+
*/
|
|
294
|
+
public getActorTags(): string[] {
|
|
295
|
+
return [...this.actorTags]; // Return a copy to prevent external mutation
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Sets the tags of this actor
|
|
300
|
+
* @param tags The tags to set
|
|
301
|
+
* @returns This actor instance for method chaining
|
|
302
|
+
*/
|
|
303
|
+
public setActorTags(tags: string[]): this {
|
|
304
|
+
this.actorTags = [...tags]; // Store a copy to prevent external mutation
|
|
305
|
+
return this;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Adds a tag to this actor (if not already present)
|
|
310
|
+
* @param tag The tag to add
|
|
311
|
+
* @returns This actor instance for method chaining
|
|
312
|
+
*/
|
|
313
|
+
public addActorTag(tag: string): this {
|
|
314
|
+
if (!this.actorTags.includes(tag)) {
|
|
315
|
+
this.actorTags.push(tag);
|
|
316
|
+
}
|
|
317
|
+
return this;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Removes a tag from this actor
|
|
322
|
+
* @param tag The tag to remove
|
|
323
|
+
* @returns This actor instance for method chaining
|
|
324
|
+
*/
|
|
325
|
+
public removeActorTag(tag: string): this {
|
|
326
|
+
const index = this.actorTags.indexOf(tag);
|
|
327
|
+
if (index !== -1) {
|
|
328
|
+
this.actorTags.splice(index, 1);
|
|
329
|
+
}
|
|
330
|
+
return this;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Checks if this actor has the specified tag
|
|
335
|
+
* @param tag The tag to check for
|
|
336
|
+
* @returns True if the actor has the specified tag, false otherwise
|
|
337
|
+
*/
|
|
338
|
+
public hasActorTag(tag: string): boolean {
|
|
339
|
+
return this.actorTags.includes(tag);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Checks if this actor has any of the specified tags
|
|
344
|
+
* @param tags The tags to check for
|
|
345
|
+
* @returns True if the actor has at least one of the specified tags, false otherwise
|
|
346
|
+
*/
|
|
347
|
+
public hasAnyActorTag(tags: string[]): boolean {
|
|
348
|
+
return tags.some(tag => this.actorTags.includes(tag));
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Checks if this actor has all of the specified tags
|
|
353
|
+
* @param tags The tags to check for
|
|
354
|
+
* @returns True if the actor has all of the specified tags, false otherwise
|
|
355
|
+
*/
|
|
356
|
+
public hasAllActorTags(tags: string[]): boolean {
|
|
357
|
+
return tags.every(tag => this.actorTags.includes(tag));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Sets whether this actor is transient (excluded from serialization)
|
|
362
|
+
* @param transient Whether this actor is transient
|
|
363
|
+
*/
|
|
364
|
+
public setTransient(transient: boolean): void {
|
|
365
|
+
this.transient = transient;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Gets whether this actor is transient
|
|
370
|
+
* @returns Whether this actor is transient
|
|
371
|
+
*/
|
|
372
|
+
public isTransient(): boolean {
|
|
373
|
+
return this.transient;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Spawns a prefab actor
|
|
378
|
+
* @param prefabName The name of the prefab
|
|
379
|
+
* @param transform The transform of the actor
|
|
380
|
+
* @param prefabs The prefabs to use
|
|
381
|
+
* @returns The spawned actor
|
|
382
|
+
*/
|
|
383
|
+
public static async spawnPrefabActor(
|
|
384
|
+
prefabName: string,
|
|
385
|
+
transform?: { position?: THREE.Vector3, rotation?: THREE.Euler, scale?: THREE.Vector3 },
|
|
386
|
+
prefabs: Record<string, any> = {},
|
|
387
|
+
isEditor?: boolean
|
|
388
|
+
): Promise<Actor | null> {
|
|
389
|
+
const prefabData = prefabs[prefabName];
|
|
390
|
+
if (isLegacyData(prefabData)) {
|
|
391
|
+
return await WorldSerializer.loadActor({
|
|
392
|
+
ctor: {
|
|
393
|
+
position: transform?.position,
|
|
394
|
+
rotation: transform?.rotation,
|
|
395
|
+
scale: transform?.scale,
|
|
396
|
+
},
|
|
397
|
+
prefabName,
|
|
398
|
+
}, prefabs, isEditor);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
return instantiatePrefab(prefabName, prefabs, {ctorArgsOverrides: {
|
|
402
|
+
position: transform?.position,
|
|
403
|
+
rotation: transform?.rotation,
|
|
404
|
+
scale: transform?.scale,
|
|
405
|
+
}});
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
public getDefaultOptions(): TOptions {
|
|
409
|
+
return (this.constructor as typeof Actor).DEFAULT_OPTIONS as TOptions;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Exports the actor to a serializable format
|
|
414
|
+
* @param context The serialization context
|
|
415
|
+
* @param includeDefaults Whether to include default values
|
|
416
|
+
* @returns The serialized data
|
|
417
|
+
*/
|
|
418
|
+
public export(context: WorldSerializationContext, includeDefaults: boolean): SerializedActor {
|
|
419
|
+
const properties: Record<string, any> = {
|
|
420
|
+
editorData: this.editorData,
|
|
421
|
+
actorTags: this.actorTags?.length > 0 ? [...this.actorTags] : undefined,
|
|
422
|
+
hiddenInGame: this.hiddenInGame ? true : undefined,
|
|
423
|
+
editorOnly: this.editorOnly ? true : undefined,
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
// Include @property decorated properties
|
|
427
|
+
const metadata = getPropertyMetadata(this.constructor);
|
|
428
|
+
for (const propName of Object.keys(metadata)) {
|
|
429
|
+
if (propName in this) {
|
|
430
|
+
properties[propName] = (this as any)[propName];
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
const data: SerializedActor = {
|
|
435
|
+
uuid: this.uuid,
|
|
436
|
+
class: ClassRegistry.getClassNameChecked(this),
|
|
437
|
+
properties
|
|
438
|
+
};
|
|
439
|
+
data.ctor = context.exportObject({
|
|
440
|
+
...this.getExportedConstructor(),
|
|
441
|
+
rootComponent: this.rootComponent,
|
|
442
|
+
}, includeDefaults);
|
|
443
|
+
data.prefabName = this.prefabName ?? undefined;
|
|
444
|
+
|
|
445
|
+
// Include parent prefab name if this is a prefab with inheritance
|
|
446
|
+
if (this.prefabData?.parentPrefabName) {
|
|
447
|
+
data.parentPrefabName = this.prefabData.parentPrefabName;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
return data;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Triggers the click event on this actor
|
|
455
|
+
* @param intersection The intersection data from raycasting
|
|
456
|
+
*/
|
|
457
|
+
public clicked(intersection: THREE.Intersection): void {
|
|
458
|
+
this.onClicked.invoke(this, intersection);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Readonly access to the root scene component of this actor
|
|
463
|
+
* @returns The root scene component
|
|
464
|
+
*/
|
|
465
|
+
public get rootComponent(): SceneComponent {
|
|
466
|
+
return this._rootComponent;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Sets the root scene component of this actor
|
|
471
|
+
* @param newRootComponent The new root scene component
|
|
472
|
+
* @param copyTransform Whether to copy the transform from the existing root component
|
|
473
|
+
*/
|
|
474
|
+
public setRootComponent(newRootComponent: SceneComponent, copyTransform: boolean): this {
|
|
475
|
+
if (!ensure(!this.isPlayEnded())) {
|
|
476
|
+
return this;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
if (!ensure(newRootComponent.getActor() === null)) {
|
|
480
|
+
return this;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
if (copyTransform) {
|
|
484
|
+
newRootComponent.position.copy(this.rootComponent.position);
|
|
485
|
+
newRootComponent.rotation.copy(this.rootComponent.rotation);
|
|
486
|
+
newRootComponent.scale.copy(this.rootComponent.scale);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
const oldRootComponent = this.rootComponent;
|
|
490
|
+
oldRootComponent.removeFromParent();
|
|
491
|
+
oldRootComponent.setActor(null);
|
|
492
|
+
this._rootComponent = newRootComponent;
|
|
493
|
+
this.rootComponent.setActor(this);
|
|
494
|
+
this.rootComponent.updateMatrixWorld(true);
|
|
495
|
+
if (this.isPlaying()) {
|
|
496
|
+
this.rootComponent.beginPlay();
|
|
497
|
+
}
|
|
498
|
+
if (this.world) {
|
|
499
|
+
this.world.scene.add(newRootComponent);
|
|
500
|
+
}
|
|
501
|
+
return this;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* If the root component is a scene component and it has a single child, replace the root component with the child
|
|
506
|
+
* @returns True if the root component was collapsed, false otherwise
|
|
507
|
+
*/
|
|
508
|
+
public collapseRootComponent(): boolean {
|
|
509
|
+
if (ensure(this.getPlayState() === PlayState.NotStarted)) {
|
|
510
|
+
// don't use "instanceof SceneComponent" as we want pure equality check
|
|
511
|
+
if (ClassRegistry.getClassOrConstructorName(this.rootComponent) === 'SceneComponent' && this.rootComponent.children.length === 1) {
|
|
512
|
+
const child = this.rootComponent.children[0];
|
|
513
|
+
if (ensure(child instanceof SceneComponent)) {
|
|
514
|
+
child.removeFromParent();
|
|
515
|
+
this.setRootComponent(child as SceneComponent, true);
|
|
516
|
+
return true;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
return false;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* Sets the world this actor belongs to
|
|
525
|
+
* @param world The world to set, or null to remove from current world
|
|
526
|
+
*/
|
|
527
|
+
public setWorld(world: World | null): void {
|
|
528
|
+
if (!ensure(!this.world || !world)) {
|
|
529
|
+
return;
|
|
530
|
+
}
|
|
531
|
+
this.world = world;
|
|
532
|
+
if (world) {
|
|
533
|
+
this.onAddedToWorld.invoke(this, world);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Gets the world this actor belongs to
|
|
539
|
+
* @returns The world or null if not in a world
|
|
540
|
+
*/
|
|
541
|
+
public getWorld(): World | null {
|
|
542
|
+
return this.world;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Updates this actor before physics simulation
|
|
547
|
+
* @param deltaTime Time in seconds since the last tick
|
|
548
|
+
*/
|
|
549
|
+
public tickPrePhysics(deltaTime: number): void {
|
|
550
|
+
if (this.lifeSpan > 0) {
|
|
551
|
+
this.lifeSpan -= deltaTime;
|
|
552
|
+
if (this.lifeSpan <= 0) {
|
|
553
|
+
this.destroy();
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
if (this.movementPredictor) {
|
|
559
|
+
const predictedTransform = this.movementPredictor.predictCurrentTransform();
|
|
560
|
+
if (predictedTransform) {
|
|
561
|
+
const lerpedTransform = NetMovementPredictor.lerpTransform({
|
|
562
|
+
position: this.rootComponent.position,
|
|
563
|
+
rotation: this.rootComponent.quaternion,
|
|
564
|
+
scale: this.rootComponent.scale,
|
|
565
|
+
}, predictedTransform, NetMovementPredictor.LerpAlpha);
|
|
566
|
+
this.setWorldTransform({
|
|
567
|
+
position: lerpedTransform.position,
|
|
568
|
+
rotation: new THREE.Euler().setFromQuaternion(lerpedTransform.rotation),
|
|
569
|
+
scale: lerpedTransform.scale,
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
this.rootComponent.tickPrePhysics(deltaTime);
|
|
575
|
+
this.onTickPrePhysics.invoke(this, deltaTime);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Updates this actor after physics simulation
|
|
580
|
+
* @param deltaTime Time in seconds since the last tick
|
|
581
|
+
*/
|
|
582
|
+
public tickPostPhysics(deltaTime: number): void {
|
|
583
|
+
this.rootComponent.tickPostPhysics(deltaTime);
|
|
584
|
+
this.onTickPostPhysics.invoke(this, deltaTime);
|
|
585
|
+
if (this.movementPredictor) {
|
|
586
|
+
this.movementPredictor.addLocalTransform({
|
|
587
|
+
timestamp: NetMovementPredictor.currentTime(),
|
|
588
|
+
position: this.rootComponent.position.clone(),
|
|
589
|
+
rotation: this.rootComponent.quaternion.clone(),
|
|
590
|
+
scale: this.rootComponent.scale.clone(),
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Gets the forward direction vector of this actor
|
|
597
|
+
* @returns Normalized forward direction vector
|
|
598
|
+
*/
|
|
599
|
+
public forwardDirection(): THREE.Vector3 {
|
|
600
|
+
return new THREE.Vector3(0, 0, -1).applyQuaternion(this.rootComponent.quaternion).normalize();
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Gets the right direction vector of this actor
|
|
605
|
+
* @returns Normalized right direction vector
|
|
606
|
+
*/
|
|
607
|
+
public rightDirection(): THREE.Vector3 {
|
|
608
|
+
return new THREE.Vector3(1, 0, 0).applyQuaternion(this.rootComponent.quaternion).normalize();
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* Gets the up direction vector of this actor
|
|
613
|
+
* @returns Normalized up direction vector
|
|
614
|
+
*/
|
|
615
|
+
public upDirection(): THREE.Vector3 {
|
|
616
|
+
return new THREE.Vector3(0, 1, 0).applyQuaternion(this.rootComponent.quaternion).normalize();
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Gets the physics engine from the world this actor belongs to
|
|
621
|
+
* @returns The physics engine or null if not in a world or world has no physics engine
|
|
622
|
+
*/
|
|
623
|
+
public getPhysicsEngine(): IPhysicsEngine | null {
|
|
624
|
+
return this.world ? this.world.getPhysicsEngine() : null;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Sets whether this actor is hidden in the scene
|
|
629
|
+
* @param hidden True to hide the actor, false to show it
|
|
630
|
+
* @returns This actor instance for method chaining
|
|
631
|
+
*/
|
|
632
|
+
public setHidden(hidden: boolean): this {
|
|
633
|
+
if (this.isHidden() !== hidden) {
|
|
634
|
+
this.rootComponent.setHidden(hidden, true);
|
|
635
|
+
}
|
|
636
|
+
return this;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* Checks if this actor is currently hidden
|
|
641
|
+
* @returns True if the actor is hidden, false otherwise
|
|
642
|
+
*/
|
|
643
|
+
public isHidden(): boolean {
|
|
644
|
+
return this.rootComponent.isHidden();
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* Replaces the physics options for this actor
|
|
649
|
+
* @param newOptions The new physics options
|
|
650
|
+
* @param propagateToChildren Whether to propagate the new options to child components
|
|
651
|
+
* @returns This actor instance for method chaining
|
|
652
|
+
*/
|
|
653
|
+
public replacePhysicsOptions(newOptions: ComponentPhysicsOptions, propagateToChildren: boolean = false): this {
|
|
654
|
+
this.rootComponent.replacePhysicsOptions(newOptions, propagateToChildren);
|
|
655
|
+
return this;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Overrides the physics options for this actor
|
|
660
|
+
* @param newOptions The new physics options
|
|
661
|
+
* @param propagateToChildren Whether to propagate the new options to child components
|
|
662
|
+
* @returns This actor instance for method chaining
|
|
663
|
+
*/
|
|
664
|
+
public overridePhysicsOptions(newOptions: ComponentPhysicsOptions, propagateToChildren: boolean = false): this {
|
|
665
|
+
this.rootComponent.overridePhysicsOptions(newOptions, propagateToChildren);
|
|
666
|
+
return this;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
/**
|
|
670
|
+
* Sets whether physics simulation is enabled for this actor
|
|
671
|
+
* @param enable True to enable physics, false to disable
|
|
672
|
+
* @param propagateToChildren Whether to propagate the change to child components
|
|
673
|
+
* @returns This actor instance for method chaining
|
|
674
|
+
*/
|
|
675
|
+
public setPhysicsEnabled(enable: boolean, propagateToChildren: boolean = false): this {
|
|
676
|
+
this.rootComponent.setPhysicsEnabled(enable, propagateToChildren);
|
|
677
|
+
return this;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Checks if physics simulation is enabled for this actor
|
|
682
|
+
* @returns True if physics is enabled, false otherwise
|
|
683
|
+
*/
|
|
684
|
+
public isPhysicsEnabled(): boolean {
|
|
685
|
+
return (this.rootComponent instanceof PrimitiveComponent) && this.rootComponent.isPhysicsEnabled();
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
* Generates a debug node for the actor
|
|
690
|
+
* @returns A debug node for the actor
|
|
691
|
+
*/
|
|
692
|
+
public generateDebugNode(): SceneGraphDebugNode | null {
|
|
693
|
+
const children: (SceneGraphDebugNode | null)[] = [];
|
|
694
|
+
children.push(this.rootComponent.generateDebugNode());
|
|
695
|
+
return {
|
|
696
|
+
title: this.name,
|
|
697
|
+
children,
|
|
698
|
+
data: {
|
|
699
|
+
uuid: this.uuid,
|
|
700
|
+
}
|
|
701
|
+
};
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* Gets the life span of this actor
|
|
706
|
+
* @returns The life span in seconds
|
|
707
|
+
*/
|
|
708
|
+
public getLifeSpan(): number {
|
|
709
|
+
return this.lifeSpan;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
/**
|
|
713
|
+
* Sets the life span of this actor
|
|
714
|
+
* @param lifeSpan The life span in seconds
|
|
715
|
+
* @returns This actor instance for method chaining
|
|
716
|
+
*/
|
|
717
|
+
public setLifeSpan(lifeSpan: number): this {
|
|
718
|
+
this.lifeSpan = lifeSpan;
|
|
719
|
+
return this;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* Adds a component to the actor root component
|
|
724
|
+
* @param component The component to add
|
|
725
|
+
* @returns This actor instance for method chaining
|
|
726
|
+
*/
|
|
727
|
+
public addComponent(component: SceneComponent): this {
|
|
728
|
+
return this.addComponents(component);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Adds multiple components to the actor root component
|
|
733
|
+
* @param components The components to add
|
|
734
|
+
* @returns This actor instance for method chaining
|
|
735
|
+
*/
|
|
736
|
+
public addComponents(...components: SceneComponent[]): this {
|
|
737
|
+
components.forEach(component => {
|
|
738
|
+
this.rootComponent.add(component);
|
|
739
|
+
});
|
|
740
|
+
return this;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* Gets the first component/child object of a specified type
|
|
745
|
+
* @param type - The type of component/child object to search for
|
|
746
|
+
* @returns The first component/child object of the specified type or null if no such component exists
|
|
747
|
+
*/
|
|
748
|
+
public getComponent<T extends THREE.Object3D>(type: abstract new (...args: any[]) => T = SceneComponent as any): T | null {
|
|
749
|
+
return this.rootComponent.getComponent(type);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
/**
|
|
754
|
+
* Gets all components/child objects of a specified type
|
|
755
|
+
* @param type - The type of component/child object to search for
|
|
756
|
+
* @returns An array of all components/child objects of the specified type
|
|
757
|
+
*/
|
|
758
|
+
public getComponents<T extends THREE.Object3D>(type: abstract new (...args: any[]) => T = SceneComponent as any): T[] {
|
|
759
|
+
return this.rootComponent.getComponents(type);
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* Gets the path name of this actor
|
|
764
|
+
* @returns The path name of this actor
|
|
765
|
+
*/
|
|
766
|
+
public getPathName(): string {
|
|
767
|
+
return this.world ? `${this.world.getPathName()}.${this.name}` : this.name;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
/**
|
|
771
|
+
* Destroys this actor
|
|
772
|
+
*/
|
|
773
|
+
public destroy(): void {
|
|
774
|
+
if (this.world) {
|
|
775
|
+
this.world.removeActors(this);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Handles the death of this actor
|
|
781
|
+
* @param hitInfo The hit information
|
|
782
|
+
*/
|
|
783
|
+
public handleDeath(hitInfo?: DamageHitInfo): void {
|
|
784
|
+
this.destroy();
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
/**
|
|
788
|
+
* Returns an exported object representation of this actor
|
|
789
|
+
* @param includeDefaults Whether to include default values
|
|
790
|
+
* @returns An exported object representation of this actor
|
|
791
|
+
*/
|
|
792
|
+
public asExportedObject(includeDefaults: boolean = false): any {
|
|
793
|
+
return WorldSerializer.exportObject(this, includeDefaults);
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
public asExportedPrefabData(): any {
|
|
797
|
+
return WorldSerializer.exportAsPrefab(this);
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
/**
|
|
801
|
+
* Sets the world transform of this actor
|
|
802
|
+
* @param transform The transform to set
|
|
803
|
+
*/
|
|
804
|
+
public setWorldTransform(transform: { position?: THREE.Vector3, rotation?: THREE.Euler, scale?: THREE.Vector3 }): void {
|
|
805
|
+
this.rootComponent.setWorldTransform(transform);
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
/**
|
|
809
|
+
* Sets the world position of this actor
|
|
810
|
+
* @param position The position to set
|
|
811
|
+
*/
|
|
812
|
+
public setWorldPosition(position: THREE.Vector3): void {
|
|
813
|
+
this.setWorldTransform({ position });
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/**
|
|
817
|
+
* Sets the world rotation of this actor
|
|
818
|
+
* @param rotation The rotation to set
|
|
819
|
+
*/
|
|
820
|
+
public setWorldRotation(rotation: THREE.Euler): void {
|
|
821
|
+
this.setWorldTransform({ rotation });
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
/**
|
|
825
|
+
* Sets the world scale of this actor
|
|
826
|
+
* @param scale The scale to set
|
|
827
|
+
*/
|
|
828
|
+
public setWorldScale(scale: THREE.Vector3): void {
|
|
829
|
+
this.setWorldTransform({ scale });
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
/**
|
|
833
|
+
* Sets the world quaternion of this actor
|
|
834
|
+
* @param quat The quaternion to set
|
|
835
|
+
*/
|
|
836
|
+
public setWorldQuaternion(quaternion: THREE.Quaternion): void {
|
|
837
|
+
this.setWorldTransform({ rotation: new THREE.Euler().setFromQuaternion(quaternion) });
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
/**
|
|
841
|
+
* Gets the world position of this actor
|
|
842
|
+
* @returns The world position of this actor
|
|
843
|
+
*/
|
|
844
|
+
public getWorldPosition(): THREE.Vector3 {
|
|
845
|
+
return this.rootComponent.getWorldPosition();
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
/**
|
|
849
|
+
* Gets the world rotation of this actor
|
|
850
|
+
* @returns The world rotation of this actor
|
|
851
|
+
*/
|
|
852
|
+
public getWorldRotation(): THREE.Euler {
|
|
853
|
+
return this.rootComponent.getWorldRotation();
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Gets the world scale of this actor
|
|
858
|
+
* @returns The world scale of this actor
|
|
859
|
+
*/
|
|
860
|
+
public getWorldScale(): THREE.Vector3 {
|
|
861
|
+
return this.rootComponent.getWorldScale();
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
/**
|
|
865
|
+
* Gets the world quaternion of this actor
|
|
866
|
+
* @returns The world quaternion of this actor
|
|
867
|
+
*/
|
|
868
|
+
public getWorldQuaternion(): THREE.Quaternion {
|
|
869
|
+
return this.rootComponent.getWorldQuaternion();
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
/**
|
|
873
|
+
* Gets the world transform of this actor
|
|
874
|
+
* @returns The world transform of this actor
|
|
875
|
+
*/
|
|
876
|
+
public getWorldTransform(): { position: THREE.Vector3, rotation: THREE.Euler, scale: THREE.Vector3 } {
|
|
877
|
+
return this.rootComponent.getWorldTransform();
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
public setNetRelevant(relevant: boolean): void {
|
|
883
|
+
this.netRelevant = relevant;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
public isNetRelevant(): boolean {
|
|
887
|
+
return this.netRelevant;
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
public getNetObjectId(): string {
|
|
891
|
+
return `${ClassRegistry.getClassOrConstructorName(this)}'${this.uuid}'`;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
public setRemoteNetClientId(clientId: string): void {
|
|
895
|
+
this.remoteNetClientId = clientId;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
public setRemoteNetDeviceId(deviceId: string): void {
|
|
899
|
+
this.remoteNetDeviceId = deviceId;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
public getNetDeviceId(): string {
|
|
903
|
+
return this.remoteNetDeviceId ?? NetWorld.getDeviceId();
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
public getNetClientId(): string {
|
|
907
|
+
if (this.remoteNetClientId) {
|
|
908
|
+
return this.remoteNetClientId;
|
|
909
|
+
}
|
|
910
|
+
const netWorld = this.getWorld()?.netWorld;
|
|
911
|
+
if (!netWorld) {
|
|
912
|
+
throw new Error('Failed to get net world when getting net client id');
|
|
913
|
+
}
|
|
914
|
+
return netWorld.clientId;
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
public consumeLocalDynamicState(): boolean {
|
|
918
|
+
return false;
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
public getNetConstructionData(): object | null {
|
|
922
|
+
return this.asExportedObject();
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
public getNetDynamicState(lastReplicatedState: object | null): object | null {
|
|
926
|
+
const lastState = lastReplicatedState ? (lastReplicatedState as ActorNetState) : null;
|
|
927
|
+
const lastPosition = lastState?.position;
|
|
928
|
+
const lastRotation = lastState?.rotation;
|
|
929
|
+
const lastScale = lastState?.scale;
|
|
930
|
+
const currentPosition = this.rootComponent.position.toArray();
|
|
931
|
+
const currentRotation = this.rootComponent.rotation.toArray();
|
|
932
|
+
const currentScale = this.rootComponent.scale.toArray();
|
|
933
|
+
if (lastState &&
|
|
934
|
+
NetWorld.isVectorNearlyEqual(lastPosition!, currentPosition) &&
|
|
935
|
+
NetWorld.isVectorNearlyEqual(lastRotation!, currentRotation as [number, number, number]) &&
|
|
936
|
+
NetWorld.isVectorNearlyEqual(lastScale!, currentScale)) {
|
|
937
|
+
return null;
|
|
938
|
+
}
|
|
939
|
+
return {
|
|
940
|
+
position: currentPosition,
|
|
941
|
+
rotation: currentRotation,
|
|
942
|
+
scale: currentScale,
|
|
943
|
+
timestamp: NetMovementPredictor.currentTime(),
|
|
944
|
+
} as ActorNetState;
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
public setNetDynamicState(dynamicState: object): void {
|
|
948
|
+
const { position, rotation, scale, timestamp } = dynamicState as ActorNetState;
|
|
949
|
+
this.movementPredictor ??= new NetMovementPredictor();
|
|
950
|
+
this.movementPredictor.addRemoteTransform({
|
|
951
|
+
timestamp,
|
|
952
|
+
position: new THREE.Vector3(position[0], position[1], position[2]),
|
|
953
|
+
rotation: new THREE.Quaternion().setFromEuler(new THREE.Euler(rotation[0], rotation[1], rotation[2])),
|
|
954
|
+
scale: new THREE.Vector3(scale[0], scale[1], scale[2]),
|
|
955
|
+
});
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
public setOverrideMaterial(material: THREE.Material | null): this {
|
|
959
|
+
this.rootComponent.setOverrideMaterial(material, true);
|
|
960
|
+
return this;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
//====================================================================================================
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* Gets the constructor data for this actor
|
|
967
|
+
* @returns The constructor data for this actor
|
|
968
|
+
*/
|
|
969
|
+
protected getExportedConstructor(): any {
|
|
970
|
+
const transientRoot = this.rootComponent.isTransient();
|
|
971
|
+
return {
|
|
972
|
+
...this.options,
|
|
973
|
+
// if the root is transient then the actor transform needs to be saved in the ctor
|
|
974
|
+
position: transientRoot ? this.getWorldPosition() : undefined,
|
|
975
|
+
rotation: transientRoot ? this.getWorldRotation() : undefined,
|
|
976
|
+
scale: transientRoot ? this.getWorldScale() : undefined,
|
|
977
|
+
// scene components are serialized as part of the actor scene graph so no need to serialize them separately
|
|
978
|
+
sceneComponents: undefined,
|
|
979
|
+
__isDeserializing: undefined,
|
|
980
|
+
// this is merely used for clearing out the prefab name from the ctor for the legacy format
|
|
981
|
+
prefabName: undefined,
|
|
982
|
+
};
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
protected override doBeginPlay(): void {
|
|
986
|
+
this.rootComponent.beginPlay();
|
|
987
|
+
this.onBeginPlay.invoke(this);
|
|
988
|
+
this.getWorld()?.netWorld.addNetObject(this);
|
|
989
|
+
if (this.isHiddenInGame()) {
|
|
990
|
+
this.getWorld()?.setActorHiddenInGame(this, true);
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
protected override doPreEndPlay(): void {
|
|
995
|
+
this.onPreEndPlay.invoke(this);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
protected override doEndPlay(): void {
|
|
999
|
+
if (this.isHiddenInGame()) {
|
|
1000
|
+
this.getWorld()?.setActorHiddenInGame(this, false);
|
|
1001
|
+
}
|
|
1002
|
+
this.getWorld()?.netWorld.removeNetObject(this);
|
|
1003
|
+
this.rootComponent.endPlay();
|
|
1004
|
+
this.onEndPlay.invoke(this);
|
|
1005
|
+
this.world = null;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
// calc all scene components for bounding boxes first
|
|
1009
|
+
public calcBoundingBox(): THREE.Box3 {
|
|
1010
|
+
this.rootComponent.updateMatrixWorld(true);
|
|
1011
|
+
const sceneComponents = this.getComponents(SceneComponent);
|
|
1012
|
+
for (const component of sceneComponents) {
|
|
1013
|
+
component.calcBoundingBox();
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
return this.getBoundingBox();
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
// simply use the cached bounding box of scene components
|
|
1020
|
+
public getBoundingBox(): THREE.Box3 {
|
|
1021
|
+
const box = new THREE.Box3();
|
|
1022
|
+
const sceneComponents = this.getComponents(SceneComponent);
|
|
1023
|
+
for (const component of sceneComponents) {
|
|
1024
|
+
const componentBox = component.boundingBox;
|
|
1025
|
+
if (componentBox) {
|
|
1026
|
+
box.union(componentBox);
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
return box;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* Returns a description of this actor for a summary of this actor. Useful for AI assistants.
|
|
1034
|
+
* @returns An object describing the actor's properties
|
|
1035
|
+
*/
|
|
1036
|
+
public describe(options?: ActorDescriptionOptions): any {
|
|
1037
|
+
if (options?.omitDescription) {
|
|
1038
|
+
const simpleDescription: any = {
|
|
1039
|
+
name: this.name,
|
|
1040
|
+
uuid: this.uuid
|
|
1041
|
+
};
|
|
1042
|
+
|
|
1043
|
+
if (this.editorData?.displayName) {
|
|
1044
|
+
simpleDescription.displayName = this.editorData.displayName;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
return simpleDescription;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
const description: any = {
|
|
1051
|
+
name: this.name,
|
|
1052
|
+
uuid: this.uuid,
|
|
1053
|
+
className: ClassRegistry.getClassName(this) ?? this.constructor.name,
|
|
1054
|
+
position: DescriptionHelper.dumpPosition(this.getWorldPosition()),
|
|
1055
|
+
rotation: DescriptionHelper.dumpRotation(this.getWorldRotation()),
|
|
1056
|
+
scale: DescriptionHelper.dumpScale(this.getWorldScale())
|
|
1057
|
+
};
|
|
1058
|
+
|
|
1059
|
+
if (this.editorData?.displayName) {
|
|
1060
|
+
description.displayName = this.editorData.displayName;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
if (this.editorData?.description) {
|
|
1064
|
+
description.description = this.editorData.description;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
this.calcBoundingBox();
|
|
1068
|
+
const boundingBox = this.getBoundingBox();
|
|
1069
|
+
if (!boundingBox.isEmpty()) {
|
|
1070
|
+
description.boundingBox = DescriptionHelper.dumpBoundingBox(this.getBoundingBox());
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
const describeSceneComponent = (component: THREE.Object3D) => {
|
|
1074
|
+
const componentDescription = component.describe({ recalculateBounds: false, includeDetails: options?.includeComponentsDetails });
|
|
1075
|
+
if (component.children && component.children.length > 0) {
|
|
1076
|
+
const children = component.children.map(describeSceneComponent).filter(child => child && Object.keys(child).length > 0);
|
|
1077
|
+
if (children.length > 0) {
|
|
1078
|
+
componentDescription.children = children;
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
return componentDescription;
|
|
1082
|
+
};
|
|
1083
|
+
description.rootComponent = describeSceneComponent(this.rootComponent);
|
|
1084
|
+
|
|
1085
|
+
return description;
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
public isHiddenInGame(): boolean {
|
|
1089
|
+
return this.hiddenInGame;
|
|
1090
|
+
}
|
|
1091
|
+
public setHiddenInGame(hidden: boolean) {
|
|
1092
|
+
this.hiddenInGame = hidden;
|
|
1093
|
+
if (this.world) {
|
|
1094
|
+
this.world.setActorHiddenInGame(this, hidden);
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
public isEditorOnly(): boolean {
|
|
1099
|
+
return this.editorOnly;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
public setEditorOnly(editorOnly: boolean) {
|
|
1103
|
+
this.editorOnly = editorOnly;
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
/**
|
|
1107
|
+
* Gets the camera used for rendering when this actor is the view target
|
|
1108
|
+
* @returns The camera found
|
|
1109
|
+
*/
|
|
1110
|
+
public getCamera(): THREE.Camera | null {
|
|
1111
|
+
return this.getComponent(THREE.Camera) ?? null;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
/**
|
|
1115
|
+
* Gets the player controller that controls this actor
|
|
1116
|
+
* @returns The current player controller or null if none
|
|
1117
|
+
*/
|
|
1118
|
+
public getPlayerController(): PlayerController | null {
|
|
1119
|
+
return null;
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
/**
|
|
1123
|
+
* Return if this actor is player controlled
|
|
1124
|
+
*/
|
|
1125
|
+
public isPlayerControlled(): boolean {
|
|
1126
|
+
return !!this.getPlayerController();
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
public async waitForComponentsToLoad(): Promise<void> {
|
|
1130
|
+
const components = this.getComponents(SceneComponent);
|
|
1131
|
+
const asyncLoadables = components.filter(c => isAsyncLoadable(c)) as IAsyncLoadable[];
|
|
1132
|
+
const loadPromises = asyncLoadables.map(c => c.waitForLoad());
|
|
1133
|
+
await Promise.all(loadPromises);
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
public serialize(dumper: Dumper): void {
|
|
1137
|
+
dumper.dumpValue('rootComponent', this.rootComponent, '_rootComponent');
|
|
1138
|
+
dumper.dumpProperties(this);
|
|
1139
|
+
if (this.isEditorOnly()) {
|
|
1140
|
+
dumper.markEditorOnly();
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
public deserialize(loader: Loader): void {
|
|
1145
|
+
const rootComponent = loader.loadValue('rootComponent', this.rootComponent) as SceneComponent;
|
|
1146
|
+
if (rootComponent && rootComponent !== this.rootComponent) {
|
|
1147
|
+
this.setRootComponent(rootComponent, false);
|
|
1148
|
+
}
|
|
1149
|
+
loader.loadProperties(this);
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
//====================================================================================================
|
|
1153
|
+
// Editor Functions
|
|
1154
|
+
//====================================================================================================
|
|
1155
|
+
|
|
1156
|
+
public onEditorPropertyChanged(path: string, value: any, result: EditorPropertyChangedResult): void {
|
|
1157
|
+
if (path === 'actorTags') {
|
|
1158
|
+
this.setActorTags(value as string[]);
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
public onEditorSelectedChanged(isSelected: boolean, selectedActors: Actor[]): void {
|
|
1163
|
+
this.getComponents(SceneComponent).forEach(sceneComponent => sceneComponent.onEditorSelectedChanged(isSelected, selectedActors));
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
public onEditorAddToWorld(): void {
|
|
1167
|
+
this.getComponents(SceneComponent).forEach(sceneComponent => sceneComponent.onEditorAddToWorld());
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
public onEditorRemoveFromWorld(): void {
|
|
1171
|
+
this.getComponents(SceneComponent).forEach(sceneComponent => sceneComponent.onEditorRemoveFromWorld());
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
public getConfigurationWarnings(): string[] {
|
|
1175
|
+
const warnings: string[] = [];
|
|
1176
|
+
// Add any actor-specific warnings here
|
|
1177
|
+
return warnings;
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
public getEditorClassIcon(): string | null {
|
|
1181
|
+
return 'Icon_Actor';
|
|
1182
|
+
}
|
|
1183
|
+
}
|