@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,1255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InputManager centralizes keyboard, mouse, gamepad, and touch handling for Genesys.
|
|
3
|
+
*
|
|
4
|
+
* Detailed explanation:
|
|
5
|
+
* - Listens to DOM events and distributes them to registered `IInputHandler` implementations.
|
|
6
|
+
* - Tracks current input state, pointer lock, and provides helper queries for button presses.
|
|
7
|
+
* - Manages gamepad connections and polling so gameplay code can be agnostic of the hardware.
|
|
8
|
+
* - Provides touch input support with virtual joystick using nipplejs for mobile devices.
|
|
9
|
+
* - Detects and reports swipe and tap gestures with configurable thresholds.
|
|
10
|
+
*
|
|
11
|
+
* Recommended usage (for humans and AI assistants):
|
|
12
|
+
* - Instantiate once per world and add your custom handlers via `addInputHandler`.
|
|
13
|
+
* - Use `requestPointerLock` in response to user interaction if your controls need exclusive mouse input.
|
|
14
|
+
* - Touch input is automatically enabled on mobile browsers detected by `isMobileBrowser()`.
|
|
15
|
+
* - Virtual joystick provides movement input for mobile devices and can be customized via options.
|
|
16
|
+
* - Swipe and tap gestures can be detected by implementing handleSwipe/handleTap or subscribing to onSwipe/onTap delegates.
|
|
17
|
+
* - Avoid directly reading DOM events; rely on this manager to ensure consistent behavior across platforms.
|
|
18
|
+
*/
|
|
19
|
+
import * as THREE from 'three';
|
|
20
|
+
|
|
21
|
+
import { Delegate } from '../utils/Delegate.js';
|
|
22
|
+
import { getEnv, isMobileBrowser, isNode } from '../utils/Utils.js';
|
|
23
|
+
|
|
24
|
+
import type { World } from '../game/World';
|
|
25
|
+
import type nipplejs from 'nipplejs';
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
export type KeyboardEventDelegate = Delegate<[KeyboardEvent], boolean>;
|
|
29
|
+
export type MouseEventDelegate = Delegate<[MouseButton, MouseEvent], boolean>;
|
|
30
|
+
export type GamepadEventDelegate = Delegate<[Gamepad], void>;
|
|
31
|
+
export type GamepadButtonEventDelegate = Delegate<[number, GamepadButton, number], boolean>;
|
|
32
|
+
export type GamepadAxisEventDelegate = Delegate<[number, GamepadAxis, number], boolean>;
|
|
33
|
+
export type VirtualJoystickEventDelegate = Delegate<[VirtualJoystickIndex, VirtualJoystickData], boolean>;
|
|
34
|
+
export type SwipeEventDelegate = Delegate<[SwipeData], boolean>;
|
|
35
|
+
export type TapEventDelegate = Delegate<[TapData], boolean>;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Enum for mouse buttons
|
|
39
|
+
* @enum {number}
|
|
40
|
+
*/
|
|
41
|
+
export enum MouseButton {
|
|
42
|
+
Left = 0,
|
|
43
|
+
Middle = 1,
|
|
44
|
+
Right = 2,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export enum VirtualJoystickIndex {
|
|
48
|
+
Left = 0,
|
|
49
|
+
Right = 1,
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Virtual joystick input data from nipplejs
|
|
54
|
+
*/
|
|
55
|
+
export interface VirtualJoystickData {
|
|
56
|
+
/** The type of joystick event */
|
|
57
|
+
type: 'start' | 'move' | 'end';
|
|
58
|
+
/** Joystick position */
|
|
59
|
+
position: THREE.Vector2;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Swipe direction enum
|
|
64
|
+
*/
|
|
65
|
+
export enum SwipeDirection {
|
|
66
|
+
Up = 'up',
|
|
67
|
+
Down = 'down',
|
|
68
|
+
Left = 'left',
|
|
69
|
+
Right = 'right',
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Swipe gesture data
|
|
74
|
+
*/
|
|
75
|
+
export interface SwipeData {
|
|
76
|
+
/** The direction of the swipe */
|
|
77
|
+
direction: SwipeDirection;
|
|
78
|
+
/** The starting position of the swipe in screen coordinates */
|
|
79
|
+
startPosition: THREE.Vector2;
|
|
80
|
+
/** The ending position of the swipe in screen coordinates */
|
|
81
|
+
endPosition: THREE.Vector2;
|
|
82
|
+
/** The distance of the swipe in pixels */
|
|
83
|
+
distance: number;
|
|
84
|
+
/** The duration of the swipe in milliseconds */
|
|
85
|
+
duration: number;
|
|
86
|
+
/** The velocity of the swipe in pixels per second */
|
|
87
|
+
velocity: number;
|
|
88
|
+
/** The underlying touch event */
|
|
89
|
+
event: TouchEvent;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Tap gesture data
|
|
94
|
+
*/
|
|
95
|
+
export interface TapData {
|
|
96
|
+
/** The position of the tap in screen coordinates */
|
|
97
|
+
position: THREE.Vector2;
|
|
98
|
+
/** The position of the tap in NDC (Normalized Device Coordinates) */
|
|
99
|
+
normalizedPosition: THREE.Vector2;
|
|
100
|
+
/** The underlying touch event */
|
|
101
|
+
event: TouchEvent;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Interface for handling input events in the engine
|
|
106
|
+
* Implement this interface to create custom input handlers that can receive
|
|
107
|
+
* and process keyboard, mouse, gamepad, and touch events from the InputManager
|
|
108
|
+
*/
|
|
109
|
+
export interface IInputHandler {
|
|
110
|
+
/**
|
|
111
|
+
* Called when a key is pressed down
|
|
112
|
+
* @param e - The keyboard event containing key information
|
|
113
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
114
|
+
* or false to allow other handlers to process the event
|
|
115
|
+
*/
|
|
116
|
+
handleKeyDown(e: KeyboardEvent): boolean
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Called when a key is released
|
|
120
|
+
* @param e - The keyboard event containing key information
|
|
121
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
122
|
+
* or false to allow other handlers to process the event
|
|
123
|
+
*/
|
|
124
|
+
handleKeyUp(e: KeyboardEvent): boolean
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Called when a mouse button is pressed down
|
|
128
|
+
* @param button - The mouse button that was pressed
|
|
129
|
+
* @param e - The mouse event containing button and position information
|
|
130
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
131
|
+
* or false to allow other handlers to process the event
|
|
132
|
+
*/
|
|
133
|
+
handleMouseDown(button: MouseButton, e: MouseEvent): boolean
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Called when a mouse button is released
|
|
137
|
+
* @param button - The mouse button that was released
|
|
138
|
+
* @param e - The mouse event containing button and position information
|
|
139
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
140
|
+
* or false to allow other handlers to process the event
|
|
141
|
+
*/
|
|
142
|
+
handleMouseUp(button: MouseButton, e: MouseEvent): boolean
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Called when the mouse is moved
|
|
146
|
+
* @param e - The mouse event containing movement and position information
|
|
147
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
148
|
+
* or false to allow other handlers to process the event
|
|
149
|
+
*/
|
|
150
|
+
handleMouseMove(e: MouseEvent): boolean
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Called when a mouse click is detected (down + up on same element)
|
|
154
|
+
* @param button - The mouse button that was clicked
|
|
155
|
+
* @param e - The mouse event containing click information
|
|
156
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
157
|
+
* or false to allow other handlers to process the event
|
|
158
|
+
*/
|
|
159
|
+
handleMouseClick(button: MouseButton, e: MouseEvent): boolean
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Called when a gamepad button is pressed down
|
|
163
|
+
* @param gamepadIndex - The index of the gamepad
|
|
164
|
+
* @param buttonIndex - The index of the button
|
|
165
|
+
* @param value - The value of the button press (0.0 to 1.0)
|
|
166
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
167
|
+
* or false to allow other handlers to process the event
|
|
168
|
+
*/
|
|
169
|
+
handleGamepadButtonDown?(gamepadIndex: number, buttonIndex: GamepadButton, value: number): boolean
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Called when a gamepad button is released
|
|
173
|
+
* @param gamepadIndex - The index of the gamepad
|
|
174
|
+
* @param buttonIndex - The index of the button
|
|
175
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
176
|
+
* or false to allow other handlers to process the event
|
|
177
|
+
*/
|
|
178
|
+
handleGamepadButtonUp?(gamepadIndex: number, buttonIndex: GamepadButton): boolean
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Called when a gamepad axis changes value
|
|
182
|
+
* @param gamepadIndex - The index of the gamepad
|
|
183
|
+
* @param axisIndex - The index of the axis
|
|
184
|
+
* @param value - The value of the axis (-1.0 to 1.0)
|
|
185
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
186
|
+
* or false to allow other handlers to process the event
|
|
187
|
+
*/
|
|
188
|
+
handleGamepadAxisChange?(gamepadIndex: number, axisIndex: GamepadAxis, value: number): boolean
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Called when a virtual joystick event occurs (from nipplejs)
|
|
192
|
+
* @param index - The index of the virtual joystick
|
|
193
|
+
* @param joystickData - The virtual joystick data containing position, distance, and angle
|
|
194
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
195
|
+
* or false to allow other handlers to process the event
|
|
196
|
+
*/
|
|
197
|
+
handleVirtualJoystick?(index: VirtualJoystickIndex, joystickData: VirtualJoystickData): boolean
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Called when a swipe gesture is detected
|
|
201
|
+
* @param swipeData - The swipe data containing direction, distance, velocity, etc.
|
|
202
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
203
|
+
* or false to allow other handlers to process the event
|
|
204
|
+
*/
|
|
205
|
+
handleSwipe?(swipeData: SwipeData): boolean
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Called when a tap gesture is detected
|
|
209
|
+
* @param tapData - The tap data containing position and normalized coordinates
|
|
210
|
+
* @returns Should return true to stop event propagation to other handlers,
|
|
211
|
+
* or false to allow other handlers to process the event
|
|
212
|
+
*/
|
|
213
|
+
handleTap?(tapData: TapData): boolean
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Called when the handler is added to or removed from an InputManager
|
|
217
|
+
* @param manager - The InputManager instance when being added,
|
|
218
|
+
* or null when being removed
|
|
219
|
+
*/
|
|
220
|
+
setInputManager(manager: InputManager | null): void
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Enumeration for standard gamepad buttons
|
|
225
|
+
*/
|
|
226
|
+
export enum GamepadButton {
|
|
227
|
+
FaceBottom = 0, // Usually A on Xbox, X on PlayStation
|
|
228
|
+
FaceRight = 1, // Usually B on Xbox, Circle on PlayStation
|
|
229
|
+
FaceLeft = 2, // Usually X on Xbox, Square on PlayStation
|
|
230
|
+
FaceTop = 3, // Usually Y on Xbox, Triangle on PlayStation
|
|
231
|
+
LeftBumper = 4,
|
|
232
|
+
RightBumper = 5,
|
|
233
|
+
LeftTrigger = 6,
|
|
234
|
+
RightTrigger = 7,
|
|
235
|
+
Select = 8,
|
|
236
|
+
Start = 9,
|
|
237
|
+
LeftStick = 10,
|
|
238
|
+
RightStick = 11,
|
|
239
|
+
DpadUp = 12,
|
|
240
|
+
DpadDown = 13,
|
|
241
|
+
DpadLeft = 14,
|
|
242
|
+
DpadRight = 15
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Enumeration for standard gamepad axes
|
|
247
|
+
*/
|
|
248
|
+
export enum GamepadAxis {
|
|
249
|
+
LeftStickX = 0,
|
|
250
|
+
LeftStickY = 1,
|
|
251
|
+
RightStickX = 2,
|
|
252
|
+
RightStickY = 3
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Configuration options for initializing an InputManager instance
|
|
257
|
+
*/
|
|
258
|
+
export interface InputManagerOptions {
|
|
259
|
+
/**
|
|
260
|
+
* The DOM element that will receive mouse input events
|
|
261
|
+
* Typically this is the renderer's DOM element
|
|
262
|
+
*/
|
|
263
|
+
rendererDomElement: HTMLElement;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* The DOM element that will receive touch input events
|
|
267
|
+
* Typically this is the game container
|
|
268
|
+
*/
|
|
269
|
+
gameContainer: HTMLElement;
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* The World instance that this input manager belongs to
|
|
273
|
+
* Used to check play state before processing input events
|
|
274
|
+
*/
|
|
275
|
+
world: WeakRef<World>;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Whether to enable gamepad support
|
|
279
|
+
* Default: true
|
|
280
|
+
*/
|
|
281
|
+
enableGamepad?: boolean;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Configuration for the virtual joystick
|
|
285
|
+
*/
|
|
286
|
+
virtualJoystickOptions?: {
|
|
287
|
+
/** Size of the joystick in pixels */
|
|
288
|
+
size?: number;
|
|
289
|
+
/** Opacity of the joystick (0.0 to 1.0) */
|
|
290
|
+
opacity?: number;
|
|
291
|
+
/** Color of the joystick */
|
|
292
|
+
color?: string;
|
|
293
|
+
/** Whether the joystick should be static or dynamic */
|
|
294
|
+
mode?: 'static' | 'dynamic';
|
|
295
|
+
/** Whether to show the joystick only when touching */
|
|
296
|
+
fadeTime?: number;
|
|
297
|
+
/** Whether to hide/disable the virtual joystick (default: false) */
|
|
298
|
+
hidden?: boolean;
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Configuration for swipe gesture detection
|
|
303
|
+
*/
|
|
304
|
+
swipeOptions?: {
|
|
305
|
+
/** Minimum distance in pixels for a swipe to be recognized (default: 50) */
|
|
306
|
+
minDistance?: number;
|
|
307
|
+
/** Maximum duration in milliseconds for a swipe (default: 1000) */
|
|
308
|
+
maxDuration?: number;
|
|
309
|
+
/** Minimum velocity in pixels per second for a swipe (default: 100) */
|
|
310
|
+
minVelocity?: number;
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Configuration for tap gesture detection
|
|
315
|
+
*/
|
|
316
|
+
tapOptions?: {
|
|
317
|
+
/** Maximum duration in milliseconds for a tap (default: 300) */
|
|
318
|
+
maxDuration?: number;
|
|
319
|
+
/** Maximum movement in pixels for a tap (default: 10) */
|
|
320
|
+
maxMovement?: number;
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Options for configuring pointer lock behavior
|
|
326
|
+
*/
|
|
327
|
+
export interface PointerLockOptions {
|
|
328
|
+
/**
|
|
329
|
+
* When true, uses raw/unadjusted movement values which can be useful for
|
|
330
|
+
* first-person controls that need to ignore OS-level mouse acceleration
|
|
331
|
+
* @default false
|
|
332
|
+
*/
|
|
333
|
+
unadjustedMovement?: boolean;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Centralized input management system for handling keyboard, mouse, gamepad, and touch input
|
|
338
|
+
*
|
|
339
|
+
* Features:
|
|
340
|
+
* - Distributes input events to registered handlers
|
|
341
|
+
* - Tracks current input state (keys pressed, mouse buttons, position)
|
|
342
|
+
* - Provides pointer lock functionality
|
|
343
|
+
* - Normalizes mouse coordinates to NDC (Normalized Device Coordinates)
|
|
344
|
+
* - Manages gamepad connections and input
|
|
345
|
+
* - Handles touch input with normalized coordinates and pressure data
|
|
346
|
+
* - Provides virtual joystick support for mobile devices using nipplejs
|
|
347
|
+
* - Detects swipe gestures with configurable distance, velocity, and duration thresholds
|
|
348
|
+
* - Detects tap gestures with configurable duration and movement thresholds
|
|
349
|
+
* - Automatically enables touch input on mobile browsers
|
|
350
|
+
*/
|
|
351
|
+
export class InputManager {
|
|
352
|
+
private keys: Set<string> = new Set();
|
|
353
|
+
private mousePosition: THREE.Vector2 = new THREE.Vector2();
|
|
354
|
+
private mouseButtons: Set<number> = new Set();
|
|
355
|
+
private inputHandlers: IInputHandler[] = [];
|
|
356
|
+
private pointerLockOptions: PointerLockOptions | null = null;
|
|
357
|
+
private inputEnabled: boolean = true;
|
|
358
|
+
|
|
359
|
+
// Gamepad related properties
|
|
360
|
+
private connectedGamepads: Map<number, Gamepad> = new Map();
|
|
361
|
+
private previousButtonStates: Map<number, Map<number, boolean>> = new Map();
|
|
362
|
+
private previousAxisValues: Map<number, Map<number, number>> = new Map();
|
|
363
|
+
private gamepadDeadzone: number = 0.1;
|
|
364
|
+
private isPollingGamepads: boolean = false;
|
|
365
|
+
private gamepadRafId: number | null = null;
|
|
366
|
+
private boundHandleGamepadConnected: (event: GamepadEvent) => void = () => {};
|
|
367
|
+
private boundHandleGamepadDisconnected: (event: GamepadEvent) => void = () => {};
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
public readonly onGamepadConnected: GamepadEventDelegate = new Delegate<[Gamepad], void>();
|
|
371
|
+
public readonly onGamepadDisconnected: GamepadEventDelegate = new Delegate<[Gamepad], void>();
|
|
372
|
+
|
|
373
|
+
// Touch related properties
|
|
374
|
+
private virtualJoysticks: Map<VirtualJoystickIndex, nipplejs.JoystickManager> = new Map();
|
|
375
|
+
private leftJoystickZone: HTMLElement | null = null;
|
|
376
|
+
private rightJoystickZone: HTMLElement | null = null;
|
|
377
|
+
|
|
378
|
+
// Gesture detection properties
|
|
379
|
+
private touchStartPosition: THREE.Vector2 | null = null;
|
|
380
|
+
private touchStartTime: number = 0;
|
|
381
|
+
private touchMoved: boolean = false;
|
|
382
|
+
|
|
383
|
+
// Gesture thresholds with defaults
|
|
384
|
+
private swipeMinDistance: number = 50;
|
|
385
|
+
private swipeMaxDuration: number = 1000;
|
|
386
|
+
private swipeMinVelocity: number = 100;
|
|
387
|
+
private tapMaxDuration: number = 300;
|
|
388
|
+
private tapMaxMovement: number = 10;
|
|
389
|
+
|
|
390
|
+
public readonly onSwipe: SwipeEventDelegate = new Delegate<[SwipeData], boolean>();
|
|
391
|
+
public readonly onTap: TapEventDelegate = new Delegate<[TapData], boolean>();
|
|
392
|
+
|
|
393
|
+
private abortController = new AbortController();
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Creates a new InputManager instance
|
|
397
|
+
* @param options - Required configuration including DOM element and World reference
|
|
398
|
+
*/
|
|
399
|
+
constructor(readonly options: InputManagerOptions) {
|
|
400
|
+
// Apply custom swipe options
|
|
401
|
+
if (options.swipeOptions) {
|
|
402
|
+
this.swipeMinDistance = options.swipeOptions.minDistance ?? this.swipeMinDistance;
|
|
403
|
+
this.swipeMaxDuration = options.swipeOptions.maxDuration ?? this.swipeMaxDuration;
|
|
404
|
+
this.swipeMinVelocity = options.swipeOptions.minVelocity ?? this.swipeMinVelocity;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// Apply custom tap options
|
|
408
|
+
if (options.tapOptions) {
|
|
409
|
+
this.tapMaxDuration = options.tapOptions.maxDuration ?? this.tapMaxDuration;
|
|
410
|
+
this.tapMaxMovement = options.tapOptions.maxMovement ?? this.tapMaxMovement;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
this.setupEventListeners();
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
public beginPlay(): void {
|
|
418
|
+
this.setupTouchInput();
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
public endPlay(): void {
|
|
422
|
+
this.destroyTouchInput();
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Cleans up resources used by the input manager
|
|
427
|
+
*/
|
|
428
|
+
public destroy(): void {
|
|
429
|
+
this.abortController.abort();
|
|
430
|
+
|
|
431
|
+
// Clean up gamepad resources
|
|
432
|
+
this.stopGamepadPolling();
|
|
433
|
+
this.connectedGamepads.clear();
|
|
434
|
+
this.previousButtonStates.clear();
|
|
435
|
+
this.previousAxisValues.clear();
|
|
436
|
+
|
|
437
|
+
// Clean up touch resources
|
|
438
|
+
this.destroyTouchInput();
|
|
439
|
+
|
|
440
|
+
this.inputHandlers = [];
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Requests pointer lock on the renderer element
|
|
445
|
+
* @param options - Optional configuration for pointer lock behavior
|
|
446
|
+
* @remarks
|
|
447
|
+
* Pointer lock hides the cursor and provides raw mouse movement data,
|
|
448
|
+
* which is useful for first-person controls
|
|
449
|
+
*/
|
|
450
|
+
public requestPointerLock(options?: PointerLockOptions) {
|
|
451
|
+
this.pointerLockOptions = options ?? {};
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Registers an input handler to receive input events
|
|
456
|
+
* @param handler - The handler to add
|
|
457
|
+
* @remarks
|
|
458
|
+
* Handlers are called in the order they were added until one returns true
|
|
459
|
+
*/
|
|
460
|
+
public addInputHandler(handler: IInputHandler): void {
|
|
461
|
+
handler.setInputManager(this);
|
|
462
|
+
this.inputHandlers.push(handler);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Unregisters an input handler
|
|
467
|
+
* @param handler - The handler to remove
|
|
468
|
+
*/
|
|
469
|
+
public removeInputHandler(handler: IInputHandler): void {
|
|
470
|
+
const index = this.inputHandlers.indexOf(handler);
|
|
471
|
+
if (index !== -1) {
|
|
472
|
+
handler.setInputManager(null);
|
|
473
|
+
this.inputHandlers.splice(index, 1);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Enables or disables input processing
|
|
479
|
+
* @param enabled - When true, input events will be processed; when false, all input events are ignored
|
|
480
|
+
*/
|
|
481
|
+
public setInputEnabled(enabled: boolean): void {
|
|
482
|
+
this.inputEnabled = enabled;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Checks if input processing is currently enabled
|
|
487
|
+
* @returns True if input processing is enabled, false otherwise
|
|
488
|
+
*/
|
|
489
|
+
public isInputEnabled(): boolean {
|
|
490
|
+
return this.inputEnabled;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Gets all currently connected gamepads
|
|
495
|
+
* @returns An array of connected gamepads
|
|
496
|
+
*/
|
|
497
|
+
public getConnectedGamepads(): Gamepad[] {
|
|
498
|
+
return Array.from(this.connectedGamepads.values());
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/**
|
|
502
|
+
* Gets a gamepad by its index
|
|
503
|
+
* @param index The index of the gamepad to get
|
|
504
|
+
* @returns The gamepad or null if not found
|
|
505
|
+
*/
|
|
506
|
+
public getGamepad(index: number): Gamepad | null {
|
|
507
|
+
return this.connectedGamepads.get(index) ?? null;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
/**
|
|
511
|
+
* Gets the current value of a gamepad button
|
|
512
|
+
* @param gamepadIndex The index of the gamepad
|
|
513
|
+
* @param buttonIndex The index of the button
|
|
514
|
+
* @returns The button value (0.0 to 1.0) or 0 if not pressed/not found
|
|
515
|
+
*/
|
|
516
|
+
public getGamepadButtonValue(gamepadIndex: number, buttonIndex: number): number {
|
|
517
|
+
const gamepad = this.connectedGamepads.get(gamepadIndex);
|
|
518
|
+
if (!gamepad || buttonIndex >= gamepad.buttons.length) return 0;
|
|
519
|
+
return gamepad.buttons[buttonIndex].value;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Gets the current value of a gamepad axis
|
|
524
|
+
* @param gamepadIndex The index of the gamepad
|
|
525
|
+
* @param axisIndex The index of the axis
|
|
526
|
+
* @returns The axis value (-1.0 to 1.0) or 0 if not found
|
|
527
|
+
*/
|
|
528
|
+
public getGamepadAxisValue(gamepadIndex: number, axisIndex: number): number {
|
|
529
|
+
const gamepad = this.connectedGamepads.get(gamepadIndex);
|
|
530
|
+
if (!gamepad || axisIndex >= gamepad.axes.length) return 0;
|
|
531
|
+
|
|
532
|
+
const value = gamepad.axes[axisIndex];
|
|
533
|
+
// Apply deadzone
|
|
534
|
+
return Math.abs(value) < this.gamepadDeadzone ? 0 : value;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Starts polling for gamepad input
|
|
539
|
+
*/
|
|
540
|
+
private startGamepadPolling(): void {
|
|
541
|
+
if (this.isPollingGamepads) return;
|
|
542
|
+
this.isPollingGamepads = true;
|
|
543
|
+
this.pollGamepads();
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* Stops polling for gamepad input
|
|
548
|
+
*/
|
|
549
|
+
private stopGamepadPolling(): void {
|
|
550
|
+
if (!this.isPollingGamepads) return;
|
|
551
|
+
this.isPollingGamepads = false;
|
|
552
|
+
if (this.gamepadRafId !== null) {
|
|
553
|
+
cancelAnimationFrame(this.gamepadRafId);
|
|
554
|
+
this.gamepadRafId = null;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
//====================================================================================================
|
|
559
|
+
|
|
560
|
+
private shouldIgnoreInput(): boolean {
|
|
561
|
+
return !this.isInputEnabled() || !this.options.world.deref()?.isPlaying();
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
private setupEventListeners(): void {
|
|
565
|
+
if (isNode()) {
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
const options = { signal: this.abortController.signal };
|
|
570
|
+
window.addEventListener('keydown', this.handleKeyDown.bind(this), options);
|
|
571
|
+
window.addEventListener('keyup', this.handleKeyUp.bind(this), options);
|
|
572
|
+
this.options.rendererDomElement.addEventListener('mousedown', this.handleMouseDown.bind(this), options);
|
|
573
|
+
this.options.rendererDomElement.addEventListener('mouseup', this.handleMouseUp.bind(this), options);
|
|
574
|
+
this.options.rendererDomElement.addEventListener('mousemove', this.handleMouseMove.bind(this), options);
|
|
575
|
+
this.options.rendererDomElement.addEventListener('click', this.handleMouseClick.bind(this), options);
|
|
576
|
+
|
|
577
|
+
// Setup touch event listeners for swipe and tap detection
|
|
578
|
+
this.options.rendererDomElement.addEventListener('touchstart', this.handleTouchStart.bind(this), options);
|
|
579
|
+
this.options.rendererDomElement.addEventListener('touchmove', this.handleTouchMove.bind(this), options);
|
|
580
|
+
this.options.rendererDomElement.addEventListener('touchend', this.handleTouchEnd.bind(this), options);
|
|
581
|
+
this.options.rendererDomElement.addEventListener('touchcancel', this.handleTouchCancel.bind(this), options);
|
|
582
|
+
|
|
583
|
+
// Setup pointer lock change listeners
|
|
584
|
+
document.addEventListener('pointerlockchange', this.handlePointerLockChange.bind(this), options);
|
|
585
|
+
document.addEventListener('mozpointerlockchange', this.handlePointerLockChange.bind(this), options);
|
|
586
|
+
document.addEventListener('webkitpointerlockchange', this.handlePointerLockChange.bind(this), options);
|
|
587
|
+
|
|
588
|
+
// Setup gamepad listeners if enabled
|
|
589
|
+
if (this.options.enableGamepad !== false) {
|
|
590
|
+
// Bind methods once to ensure we can remove them later
|
|
591
|
+
this.boundHandleGamepadConnected = this.handleGamepadConnected.bind(this);
|
|
592
|
+
this.boundHandleGamepadDisconnected = this.handleGamepadDisconnected.bind(this);
|
|
593
|
+
|
|
594
|
+
window.addEventListener('gamepadconnected', this.boundHandleGamepadConnected, options);
|
|
595
|
+
window.addEventListener('gamepaddisconnected', this.boundHandleGamepadDisconnected, options);
|
|
596
|
+
|
|
597
|
+
// Check for already connected gamepads that may have been missed by the event
|
|
598
|
+
const gamepads = navigator.getGamepads();
|
|
599
|
+
for (const gamepad of gamepads) {
|
|
600
|
+
if (gamepad) {
|
|
601
|
+
this.handleGamepadConnected({ gamepad } as GamepadEvent);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
private handleKeyDown(e: KeyboardEvent): void {
|
|
608
|
+
if (this.shouldIgnoreInput() || this.keys.has(e.key)) {
|
|
609
|
+
return;
|
|
610
|
+
}
|
|
611
|
+
this.keys.add(e.key);
|
|
612
|
+
for (const handler of this.inputHandlers) {
|
|
613
|
+
if (handler.handleKeyDown(e)) {
|
|
614
|
+
break;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
private handleKeyUp(e: KeyboardEvent): void {
|
|
620
|
+
if (this.shouldIgnoreInput()) {
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
this.keys.delete(e.key);
|
|
624
|
+
for (const handler of this.inputHandlers) {
|
|
625
|
+
if (handler.handleKeyUp(e)) {
|
|
626
|
+
break;
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
private handleMouseDown(e: MouseEvent): void {
|
|
632
|
+
if (this.shouldIgnoreInput()) {
|
|
633
|
+
return;
|
|
634
|
+
}
|
|
635
|
+
this.mouseButtons.add(e.button);
|
|
636
|
+
for (const handler of this.inputHandlers) {
|
|
637
|
+
if (handler.handleMouseDown(e.button, e)) {
|
|
638
|
+
break;
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
private handleMouseUp(e: MouseEvent): void {
|
|
644
|
+
if (this.shouldIgnoreInput()) {
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
this.mouseButtons.delete(e.button);
|
|
648
|
+
for (const handler of this.inputHandlers) {
|
|
649
|
+
if (handler.handleMouseUp(e.button, e)) {
|
|
650
|
+
break;
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
private handleMouseClick(e: MouseEvent): void {
|
|
656
|
+
if (this.shouldIgnoreInput()) {
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
659
|
+
if (this.pointerLockOptions && !this.isPointerLocked()) {
|
|
660
|
+
if (this.options.rendererDomElement.requestPointerLock) {
|
|
661
|
+
this.options.rendererDomElement.requestPointerLock(this.pointerLockOptions);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
for (const handler of this.inputHandlers) {
|
|
665
|
+
if (handler.handleMouseClick(e.button, e)) {
|
|
666
|
+
break;
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
private handleMouseMove(e: MouseEvent): void {
|
|
672
|
+
if (this.shouldIgnoreInput()) {
|
|
673
|
+
return;
|
|
674
|
+
}
|
|
675
|
+
const rect = this.options.rendererDomElement.getBoundingClientRect();
|
|
676
|
+
this.mousePosition.x = ((e.clientX - rect.left) / rect.width) * 2 - 1;
|
|
677
|
+
this.mousePosition.y = -((e.clientY - rect.top) / rect.height) * 2 + 1;
|
|
678
|
+
for (const handler of this.inputHandlers) {
|
|
679
|
+
if (handler.handleMouseMove(e)) {
|
|
680
|
+
break;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Checks if a specific key is currently pressed
|
|
687
|
+
* @param key - The key to check (case-sensitive)
|
|
688
|
+
* @returns True if the key is currently pressed down
|
|
689
|
+
*/
|
|
690
|
+
public isKeyDown(key: string): boolean {
|
|
691
|
+
return this.keys.has(key);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
/**
|
|
695
|
+
* Checks if a specific mouse button is currently pressed
|
|
696
|
+
* @param button - The button index to check (0=left, 1=middle, 2=right)
|
|
697
|
+
* @returns True if the button is currently pressed down
|
|
698
|
+
*/
|
|
699
|
+
public isMouseButtonDown(button: number): boolean {
|
|
700
|
+
return this.mouseButtons.has(button);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
/**
|
|
704
|
+
* Gets the current mouse position in Normalized Device Coordinates (NDC)
|
|
705
|
+
* @returns A Vector2 where:
|
|
706
|
+
* - x ranges from -1 (left) to 1 (right)
|
|
707
|
+
* - y ranges from -1 (bottom) to 1 (top)
|
|
708
|
+
*/
|
|
709
|
+
public getMousePosition(): THREE.Vector2 {
|
|
710
|
+
return this.mousePosition.clone();
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* Checks if pointer lock is currently active on the renderer element
|
|
715
|
+
* @returns True if pointer lock is active
|
|
716
|
+
*/
|
|
717
|
+
public isPointerLocked(): boolean {
|
|
718
|
+
return document.pointerLockElement === this.options.rendererDomElement;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/**
|
|
722
|
+
* Releases pointer lock if currently active
|
|
723
|
+
*/
|
|
724
|
+
public exitPointerLock() {
|
|
725
|
+
this.pointerLockOptions = null;
|
|
726
|
+
if (document.exitPointerLock) {
|
|
727
|
+
document.exitPointerLock();
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
// Gamepad handling methods
|
|
732
|
+
private handleGamepadConnected(event: GamepadEvent): void {
|
|
733
|
+
const gamepad = event.gamepad;
|
|
734
|
+
this.connectedGamepads.set(gamepad.index, gamepad);
|
|
735
|
+
this.previousButtonStates.set(gamepad.index, new Map());
|
|
736
|
+
this.previousAxisValues.set(gamepad.index, new Map());
|
|
737
|
+
|
|
738
|
+
// Initialize button states
|
|
739
|
+
const buttonStates = this.previousButtonStates.get(gamepad.index)!;
|
|
740
|
+
for (let i = 0; i < gamepad.buttons.length; i++) {
|
|
741
|
+
buttonStates.set(i, gamepad.buttons[i].pressed);
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// Initialize axis values
|
|
745
|
+
const axisValues = this.previousAxisValues.get(gamepad.index)!;
|
|
746
|
+
for (let i = 0; i < gamepad.axes.length; i++) {
|
|
747
|
+
axisValues.set(i, gamepad.axes[i]);
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// Start polling if we have connected gamepads and aren't already polling
|
|
751
|
+
if (!this.isPollingGamepads && this.connectedGamepads.size > 0) {
|
|
752
|
+
this.startGamepadPolling();
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
this.onGamepadConnected.invoke(gamepad);
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
private handleGamepadDisconnected(event: GamepadEvent): void {
|
|
759
|
+
const gamepad = event.gamepad;
|
|
760
|
+
this.connectedGamepads.delete(gamepad.index);
|
|
761
|
+
this.previousButtonStates.delete(gamepad.index);
|
|
762
|
+
this.previousAxisValues.delete(gamepad.index);
|
|
763
|
+
|
|
764
|
+
// Stop polling if no gamepads are connected
|
|
765
|
+
if (this.connectedGamepads.size === 0) {
|
|
766
|
+
this.stopGamepadPolling();
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
this.onGamepadDisconnected.invoke(gamepad);
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
private pollGamepads(): void {
|
|
773
|
+
if (!this.isPollingGamepads) return;
|
|
774
|
+
|
|
775
|
+
this.gamepadRafId = requestAnimationFrame(this.pollGamepads.bind(this));
|
|
776
|
+
|
|
777
|
+
// Skip polling if input is disabled or world is not playing
|
|
778
|
+
if (this.shouldIgnoreInput()) return;
|
|
779
|
+
|
|
780
|
+
// Process standard gamepads
|
|
781
|
+
this.pollStandardGamepads();
|
|
782
|
+
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
private pollStandardGamepads(): void {
|
|
786
|
+
// Get all connected gamepads
|
|
787
|
+
const gamepads = navigator.getGamepads();
|
|
788
|
+
if (!gamepads) return;
|
|
789
|
+
|
|
790
|
+
// Process each gamepad
|
|
791
|
+
for (const gamepad of gamepads) {
|
|
792
|
+
if (!gamepad) continue;
|
|
793
|
+
|
|
794
|
+
// Update the stored gamepad reference
|
|
795
|
+
this.connectedGamepads.set(gamepad.index, gamepad);
|
|
796
|
+
|
|
797
|
+
// Check for button changes
|
|
798
|
+
for (let i = 0; i < gamepad.buttons.length; i++) {
|
|
799
|
+
const button = gamepad.buttons[i];
|
|
800
|
+
const buttonStates = this.previousButtonStates.get(gamepad.index)!;
|
|
801
|
+
const wasPressed = buttonStates.get(i) ?? false;
|
|
802
|
+
const isPressed = button.pressed;
|
|
803
|
+
|
|
804
|
+
// If button state changed
|
|
805
|
+
if (wasPressed !== isPressed) {
|
|
806
|
+
buttonStates.set(i, isPressed);
|
|
807
|
+
|
|
808
|
+
// Fire appropriate event
|
|
809
|
+
if (isPressed) {
|
|
810
|
+
// Button was pressed
|
|
811
|
+
for (const handler of this.inputHandlers) {
|
|
812
|
+
if (handler.handleGamepadButtonDown && handler.handleGamepadButtonDown(gamepad.index, i, button.value)) {
|
|
813
|
+
break;
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
} else {
|
|
817
|
+
// Button was released
|
|
818
|
+
for (const handler of this.inputHandlers) {
|
|
819
|
+
if (handler.handleGamepadButtonUp && handler.handleGamepadButtonUp(gamepad.index, i)) {
|
|
820
|
+
break;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
// Check for axis changes
|
|
828
|
+
for (let i = 0; i < gamepad.axes.length; i++) {
|
|
829
|
+
const currentValue = gamepad.axes[i];
|
|
830
|
+
const axisValues = this.previousAxisValues.get(gamepad.index)!;
|
|
831
|
+
const previousValue = axisValues.get(i) ?? 0;
|
|
832
|
+
|
|
833
|
+
// Apply deadzone to both values for comparison
|
|
834
|
+
const deadzonedCurrent = Math.abs(currentValue) < this.gamepadDeadzone ? 0 : currentValue;
|
|
835
|
+
const deadzonedPrevious = Math.abs(previousValue) < this.gamepadDeadzone ? 0 : previousValue;
|
|
836
|
+
|
|
837
|
+
// If axis value changed significantly
|
|
838
|
+
if (Math.abs(deadzonedCurrent - deadzonedPrevious) > 0.01) {
|
|
839
|
+
axisValues.set(i, currentValue);
|
|
840
|
+
|
|
841
|
+
// Notify handlers
|
|
842
|
+
for (const handler of this.inputHandlers) {
|
|
843
|
+
if (handler.handleGamepadAxisChange && handler.handleGamepadAxisChange(gamepad.index, i, deadzonedCurrent)) {
|
|
844
|
+
break;
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
// Touch event handlers for swipe and tap detection
|
|
858
|
+
private handleTouchStart(e: TouchEvent): void {
|
|
859
|
+
if (this.shouldIgnoreInput()) {
|
|
860
|
+
return;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
// Only track single touch for swipe/tap detection
|
|
864
|
+
if (e.touches.length === 1) {
|
|
865
|
+
const touch = e.touches[0];
|
|
866
|
+
this.touchStartPosition = new THREE.Vector2(touch.clientX, touch.clientY);
|
|
867
|
+
this.touchStartTime = performance.now();
|
|
868
|
+
this.touchMoved = false;
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
private handleTouchMove(e: TouchEvent): void {
|
|
873
|
+
if (this.shouldIgnoreInput()) {
|
|
874
|
+
return;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
// Track if touch has moved
|
|
878
|
+
if (e.touches.length === 1 && this.touchStartPosition) {
|
|
879
|
+
const touch = e.touches[0];
|
|
880
|
+
const currentPosition = new THREE.Vector2(touch.clientX, touch.clientY);
|
|
881
|
+
const distance = this.touchStartPosition.distanceTo(currentPosition);
|
|
882
|
+
|
|
883
|
+
if (distance > this.tapMaxMovement) {
|
|
884
|
+
this.touchMoved = true;
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
private handleTouchEnd(e: TouchEvent): void {
|
|
890
|
+
if (this.shouldIgnoreInput()) {
|
|
891
|
+
return;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
if (!this.touchStartPosition) {
|
|
895
|
+
return;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
const touch = e.changedTouches[0];
|
|
899
|
+
const endPosition = new THREE.Vector2(touch.clientX, touch.clientY);
|
|
900
|
+
const duration = performance.now() - this.touchStartTime;
|
|
901
|
+
const distance = this.touchStartPosition.distanceTo(endPosition);
|
|
902
|
+
|
|
903
|
+
// Check for tap gesture
|
|
904
|
+
if (!this.touchMoved && duration <= this.tapMaxDuration && distance <= this.tapMaxMovement) {
|
|
905
|
+
this.handleTapGesture(endPosition, e);
|
|
906
|
+
}
|
|
907
|
+
// Check for swipe gesture
|
|
908
|
+
else if (this.touchMoved && duration <= this.swipeMaxDuration && distance >= this.swipeMinDistance) {
|
|
909
|
+
const velocity = (distance / duration) * 1000; // Convert to pixels per second
|
|
910
|
+
|
|
911
|
+
if (velocity >= this.swipeMinVelocity) {
|
|
912
|
+
this.handleSwipeGesture(this.touchStartPosition, endPosition, distance, duration, velocity, e);
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
// Reset touch tracking
|
|
917
|
+
this.touchStartPosition = null;
|
|
918
|
+
this.touchStartTime = 0;
|
|
919
|
+
this.touchMoved = false;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
private handleTouchCancel(e: TouchEvent): void {
|
|
923
|
+
// Reset touch tracking on cancel
|
|
924
|
+
this.touchStartPosition = null;
|
|
925
|
+
this.touchStartTime = 0;
|
|
926
|
+
this.touchMoved = false;
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
private handleTapGesture(position: THREE.Vector2, event: TouchEvent): void {
|
|
930
|
+
// Calculate normalized position (NDC)
|
|
931
|
+
const rect = this.options.rendererDomElement.getBoundingClientRect();
|
|
932
|
+
const normalizedPosition = new THREE.Vector2(
|
|
933
|
+
((position.x - rect.left) / rect.width) * 2 - 1,
|
|
934
|
+
-((position.y - rect.top) / rect.height) * 2 + 1
|
|
935
|
+
);
|
|
936
|
+
|
|
937
|
+
const tapData: TapData = {
|
|
938
|
+
position: position.clone(),
|
|
939
|
+
normalizedPosition,
|
|
940
|
+
event
|
|
941
|
+
};
|
|
942
|
+
|
|
943
|
+
// Distribute to handlers
|
|
944
|
+
for (const handler of this.inputHandlers) {
|
|
945
|
+
if (handler.handleTap && handler.handleTap(tapData)) {
|
|
946
|
+
break;
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
// Invoke delegate
|
|
951
|
+
this.onTap.invoke(tapData);
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
private handleSwipeGesture(
|
|
955
|
+
startPosition: THREE.Vector2,
|
|
956
|
+
endPosition: THREE.Vector2,
|
|
957
|
+
distance: number,
|
|
958
|
+
duration: number,
|
|
959
|
+
velocity: number,
|
|
960
|
+
event: TouchEvent
|
|
961
|
+
): void {
|
|
962
|
+
// Calculate swipe direction
|
|
963
|
+
const dx = endPosition.x - startPosition.x;
|
|
964
|
+
const dy = endPosition.y - startPosition.y;
|
|
965
|
+
const absDx = Math.abs(dx);
|
|
966
|
+
const absDy = Math.abs(dy);
|
|
967
|
+
|
|
968
|
+
let direction: SwipeDirection;
|
|
969
|
+
if (absDx > absDy) {
|
|
970
|
+
// Horizontal swipe
|
|
971
|
+
direction = dx > 0 ? SwipeDirection.Right : SwipeDirection.Left;
|
|
972
|
+
} else {
|
|
973
|
+
// Vertical swipe
|
|
974
|
+
direction = dy > 0 ? SwipeDirection.Down : SwipeDirection.Up;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
const swipeData: SwipeData = {
|
|
978
|
+
direction,
|
|
979
|
+
startPosition: startPosition.clone(),
|
|
980
|
+
endPosition: endPosition.clone(),
|
|
981
|
+
distance,
|
|
982
|
+
duration,
|
|
983
|
+
velocity,
|
|
984
|
+
event
|
|
985
|
+
};
|
|
986
|
+
|
|
987
|
+
// Distribute to handlers
|
|
988
|
+
for (const handler of this.inputHandlers) {
|
|
989
|
+
if (handler.handleSwipe && handler.handleSwipe(swipeData)) {
|
|
990
|
+
break;
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
// Invoke delegate
|
|
995
|
+
this.onSwipe.invoke(swipeData);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
// Handle pointer lock change events
|
|
999
|
+
private handlePointerLockChange(): void {
|
|
1000
|
+
// This method handles changes to the pointer lock state
|
|
1001
|
+
// It can be used to add additional logic when pointer lock is acquired or released
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
// Touch input setup and management methods
|
|
1005
|
+
private async setupTouchInput(): Promise<void> {
|
|
1006
|
+
|
|
1007
|
+
const debugTouchInput = getEnv('VITE_DEBUG_TOUCH_INPUT') === 'true';
|
|
1008
|
+
|
|
1009
|
+
if (isNode()) {
|
|
1010
|
+
return;
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
if (!isMobileBrowser() && !debugTouchInput) {
|
|
1014
|
+
return;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
// Check if virtual joystick is explicitly hidden
|
|
1018
|
+
if (this.options.virtualJoystickOptions?.hidden) {
|
|
1019
|
+
return;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
// cannot import the nipplejs module globally as it requires the window global
|
|
1023
|
+
const nipplejs = await import('nipplejs');
|
|
1024
|
+
const nippleModule = nipplejs.default || nipplejs;
|
|
1025
|
+
|
|
1026
|
+
const defaultOptions = {
|
|
1027
|
+
size: 120,
|
|
1028
|
+
opacity: 0.7,
|
|
1029
|
+
color: 'white',
|
|
1030
|
+
mode: 'static' as const,
|
|
1031
|
+
fadeTime: 250
|
|
1032
|
+
};
|
|
1033
|
+
|
|
1034
|
+
const joystickOptions = {
|
|
1035
|
+
...defaultOptions,
|
|
1036
|
+
...this.options.virtualJoystickOptions
|
|
1037
|
+
};
|
|
1038
|
+
|
|
1039
|
+
try {
|
|
1040
|
+
// Calculate joystick zone size based on joystick size plus padding for interaction
|
|
1041
|
+
const zoneSize = joystickOptions.size * 1.5; // Extra space for comfortable interaction
|
|
1042
|
+
|
|
1043
|
+
// Create left joystick zone
|
|
1044
|
+
this.leftJoystickZone = document.createElement('div');
|
|
1045
|
+
this.leftJoystickZone.style.position = 'absolute';
|
|
1046
|
+
this.leftJoystickZone.style.left = '20px';
|
|
1047
|
+
this.leftJoystickZone.style.bottom = '20px';
|
|
1048
|
+
this.leftJoystickZone.style.width = `${zoneSize}px`;
|
|
1049
|
+
this.leftJoystickZone.style.height = `${zoneSize}px`;
|
|
1050
|
+
this.leftJoystickZone.style.pointerEvents = 'auto';
|
|
1051
|
+
if (debugTouchInput) {
|
|
1052
|
+
this.leftJoystickZone.style.border = '2px solid rgba(255, 0, 0, 0.5)';
|
|
1053
|
+
this.leftJoystickZone.style.backgroundColor = 'rgba(255, 0, 0, 0.1)';
|
|
1054
|
+
this.leftJoystickZone.style.boxSizing = 'border-box';
|
|
1055
|
+
}
|
|
1056
|
+
this.options.gameContainer.appendChild(this.leftJoystickZone);
|
|
1057
|
+
|
|
1058
|
+
// Create right joystick zone
|
|
1059
|
+
this.rightJoystickZone = document.createElement('div');
|
|
1060
|
+
this.rightJoystickZone.style.position = 'absolute';
|
|
1061
|
+
this.rightJoystickZone.style.right = '20px';
|
|
1062
|
+
this.rightJoystickZone.style.bottom = '20px';
|
|
1063
|
+
this.rightJoystickZone.style.width = `${zoneSize}px`;
|
|
1064
|
+
this.rightJoystickZone.style.height = `${zoneSize}px`;
|
|
1065
|
+
this.rightJoystickZone.style.pointerEvents = 'auto';
|
|
1066
|
+
if (debugTouchInput) {
|
|
1067
|
+
this.rightJoystickZone.style.border = '2px solid rgba(0, 0, 255, 0.5)';
|
|
1068
|
+
this.rightJoystickZone.style.backgroundColor = 'rgba(0, 0, 255, 0.1)';
|
|
1069
|
+
this.rightJoystickZone.style.boxSizing = 'border-box';
|
|
1070
|
+
}
|
|
1071
|
+
this.options.gameContainer.appendChild(this.rightJoystickZone);
|
|
1072
|
+
|
|
1073
|
+
const leftStick = nippleModule.create({
|
|
1074
|
+
zone: this.leftJoystickZone,
|
|
1075
|
+
mode: joystickOptions.mode,
|
|
1076
|
+
position: { left: '50%', bottom: '50%' },
|
|
1077
|
+
size: joystickOptions.size,
|
|
1078
|
+
color: joystickOptions.color,
|
|
1079
|
+
fadeTime: joystickOptions.fadeTime,
|
|
1080
|
+
restOpacity: joystickOptions.opacity * 0.5,
|
|
1081
|
+
threshold: 0.1,
|
|
1082
|
+
catchDistance: 200,
|
|
1083
|
+
});
|
|
1084
|
+
|
|
1085
|
+
const rightStick = nippleModule.create({
|
|
1086
|
+
zone: this.rightJoystickZone,
|
|
1087
|
+
mode: joystickOptions.mode,
|
|
1088
|
+
position: { left: '50%', bottom: '50%' },
|
|
1089
|
+
size: joystickOptions.size,
|
|
1090
|
+
color: joystickOptions.color,
|
|
1091
|
+
fadeTime: joystickOptions.fadeTime,
|
|
1092
|
+
restOpacity: joystickOptions.opacity * 0.5,
|
|
1093
|
+
threshold: 0.1,
|
|
1094
|
+
catchDistance: 200
|
|
1095
|
+
});
|
|
1096
|
+
|
|
1097
|
+
this.virtualJoysticks.set(VirtualJoystickIndex.Left, leftStick);
|
|
1098
|
+
this.virtualJoysticks.set(VirtualJoystickIndex.Right, rightStick);
|
|
1099
|
+
|
|
1100
|
+
// Bind virtual joystick events
|
|
1101
|
+
const leftHandler = this.handleVirtualJoystickEvent.bind(this, VirtualJoystickIndex.Left);
|
|
1102
|
+
leftStick.on('start', leftHandler);
|
|
1103
|
+
leftStick.on('move', leftHandler);
|
|
1104
|
+
leftStick.on('end', leftHandler);
|
|
1105
|
+
|
|
1106
|
+
const rightHandler = this.handleVirtualJoystickEvent.bind(this, VirtualJoystickIndex.Right);
|
|
1107
|
+
rightStick.on('start', rightHandler);
|
|
1108
|
+
rightStick.on('move', rightHandler);
|
|
1109
|
+
rightStick.on('end', rightHandler);
|
|
1110
|
+
} catch (error) {
|
|
1111
|
+
console.warn('Failed to initialize virtual joystick:', error);
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
private destroyTouchInput(): void {
|
|
1116
|
+
if (this.leftJoystickZone) {
|
|
1117
|
+
this.leftJoystickZone.remove();
|
|
1118
|
+
this.leftJoystickZone = null;
|
|
1119
|
+
}
|
|
1120
|
+
if (this.rightJoystickZone) {
|
|
1121
|
+
this.rightJoystickZone.remove();
|
|
1122
|
+
this.rightJoystickZone = null;
|
|
1123
|
+
}
|
|
1124
|
+
for (const joystick of this.virtualJoysticks.values()) {
|
|
1125
|
+
joystick.destroy();
|
|
1126
|
+
}
|
|
1127
|
+
this.virtualJoysticks.clear();
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
// Virtual joystick event handlers
|
|
1131
|
+
private handleVirtualJoystickEvent(index: VirtualJoystickIndex, event: nipplejs.EventData, output: nipplejs.JoystickOutputData): void {
|
|
1132
|
+
if (this.shouldIgnoreInput()) {
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
if (event.type === 'start' || event.type === 'move' || event.type === 'end') {
|
|
1137
|
+
const joystickData: VirtualJoystickData = {
|
|
1138
|
+
type: event.type,
|
|
1139
|
+
position: new THREE.Vector2(output.position.x, output.position.y),
|
|
1140
|
+
};
|
|
1141
|
+
|
|
1142
|
+
// Distribute to handlers
|
|
1143
|
+
for (const handler of this.inputHandlers) {
|
|
1144
|
+
if (handler.handleVirtualJoystick && handler.handleVirtualJoystick(index, joystickData)) {
|
|
1145
|
+
break;
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
/**
|
|
1152
|
+
* Checks if virtual joystick is enabled
|
|
1153
|
+
* @returns True if virtual joystick is enabled
|
|
1154
|
+
*/
|
|
1155
|
+
public isVirtualJoystickEnabled(): boolean {
|
|
1156
|
+
return !!this.virtualJoysticks.values.length;
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
/**
|
|
1160
|
+
* Shows the virtual joystick by setting visibility to visible
|
|
1161
|
+
* Only works if joysticks have been initialized
|
|
1162
|
+
*/
|
|
1163
|
+
public showVirtualJoystick(): void {
|
|
1164
|
+
if (this.leftJoystickZone) {
|
|
1165
|
+
this.leftJoystickZone.style.visibility = 'visible';
|
|
1166
|
+
}
|
|
1167
|
+
if (this.rightJoystickZone) {
|
|
1168
|
+
this.rightJoystickZone.style.visibility = 'visible';
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
/**
|
|
1173
|
+
* Hides the virtual joystick by setting visibility to hidden
|
|
1174
|
+
* The joystick will still capture events but won't be visible
|
|
1175
|
+
*/
|
|
1176
|
+
public hideVirtualJoystick(): void {
|
|
1177
|
+
if (this.leftJoystickZone) {
|
|
1178
|
+
this.leftJoystickZone.style.visibility = 'hidden';
|
|
1179
|
+
}
|
|
1180
|
+
if (this.rightJoystickZone) {
|
|
1181
|
+
this.rightJoystickZone.style.visibility = 'hidden';
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
/**
|
|
1186
|
+
* Checks if the virtual joystick is currently visible
|
|
1187
|
+
* @returns True if visible, false if hidden or not initialized
|
|
1188
|
+
*/
|
|
1189
|
+
public isVirtualJoystickVisible(): boolean {
|
|
1190
|
+
if (!this.leftJoystickZone) {
|
|
1191
|
+
return false;
|
|
1192
|
+
}
|
|
1193
|
+
return this.leftJoystickZone.style.visibility !== 'hidden';
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
/**
|
|
1198
|
+
* Base class for input handlers that provides default implementations for all methods
|
|
1199
|
+
* Subclasses can override specific methods to handle specific input events
|
|
1200
|
+
*/
|
|
1201
|
+
export class BaseInputHandler implements IInputHandler {
|
|
1202
|
+
protected inputManager: InputManager | null = null;
|
|
1203
|
+
|
|
1204
|
+
public handleKeyDown(e: KeyboardEvent): boolean {
|
|
1205
|
+
return false;
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
public handleKeyUp(e: KeyboardEvent): boolean {
|
|
1209
|
+
return false;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
public handleMouseDown(button: MouseButton, e: MouseEvent): boolean {
|
|
1213
|
+
return false;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
public handleMouseUp(button: MouseButton, e: MouseEvent): boolean {
|
|
1217
|
+
return false;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
public handleMouseMove(e: MouseEvent): boolean {
|
|
1221
|
+
return false;
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
public handleMouseClick(button: MouseButton, e: MouseEvent): boolean {
|
|
1225
|
+
return false;
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
public handleGamepadButtonDown(gamepadIndex: number, buttonIndex: number, value: number): boolean {
|
|
1229
|
+
return false;
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
public handleGamepadButtonUp(gamepadIndex: number, buttonIndex: number): boolean {
|
|
1233
|
+
return false;
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
public handleGamepadAxisChange(gamepadIndex: number, axisIndex: number, value: number): boolean {
|
|
1237
|
+
return false;
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
public handleVirtualJoystick(index: VirtualJoystickIndex, joystickData: VirtualJoystickData): boolean {
|
|
1241
|
+
return false;
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
public handleSwipe(swipeData: SwipeData): boolean {
|
|
1245
|
+
return false;
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
public handleTap(tapData: TapData): boolean {
|
|
1249
|
+
return false;
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
public setInputManager(manager: InputManager | null): void {
|
|
1253
|
+
this.inputManager = manager;
|
|
1254
|
+
}
|
|
1255
|
+
}
|