@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,946 @@
|
|
|
1
|
+
## Instruction
|
|
2
|
+
Use this doc to understand how visuals and rendering work in Genesys.js and learn how to display 3D models using MeshComponent and GLTFMeshComponent, apply materials and textures, and set up lighting to create visually appealing game scenes.
|
|
3
|
+
|
|
4
|
+
# 4-visuals-and-rendering.md
|
|
5
|
+
|
|
6
|
+
## Visuals and Rendering in Genesys.js
|
|
7
|
+
|
|
8
|
+
The visual appearance of your game is crucial for creating an immersive experience. Genesys.js, built on top of Three.js, provides a powerful and flexible system for rendering 3D models, applying materials, and lighting your scenes. This guide covers the essential components and techniques for controlling the visuals of your game.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Displaying 3D Models
|
|
13
|
+
|
|
14
|
+
The primary way to get a 3D object on screen is by using a component that manages a `THREE.Mesh`.
|
|
15
|
+
|
|
16
|
+
### `MeshComponent` for Primitive Shapes
|
|
17
|
+
|
|
18
|
+
For simple geometric shapes like cubes, spheres, or planes, the `ENGINE.MeshComponent` is the perfect tool. You provide it with a Three.js `BufferGeometry` and a `Material`.
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import * as ENGINE from "genesys.js";
|
|
22
|
+
|
|
23
|
+
// Create an actor to hold our mesh.
|
|
24
|
+
const simpleActor = new ENGINE.Actor({
|
|
25
|
+
position: new THREE.Vector3(0, 1, 0),
|
|
26
|
+
rootComponent: new ENGINE.MeshComponent({
|
|
27
|
+
// Define the shape.
|
|
28
|
+
geometry: new THREE.SphereGeometry(0.5, 32, 16),
|
|
29
|
+
// Define the surface appearance.
|
|
30
|
+
material: new THREE.MeshStandardMaterial({
|
|
31
|
+
color: 'red',
|
|
32
|
+
roughness: 0.2,
|
|
33
|
+
metalness: 0.8
|
|
34
|
+
})
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Add it to the world to be rendered.
|
|
39
|
+
// world.addActors(simpleActor);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### `GLTFMeshComponent` for Complex Models
|
|
43
|
+
|
|
44
|
+
For complex models created in 3D modeling software like Blender, you'll typically use the glTF format (`.gltf` or `.glb`). The `ENGINE.GLTFMeshComponent` is designed to load and display these files.
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import * as ENGINE from "genesys.js";
|
|
48
|
+
|
|
49
|
+
// Create an actor to display a loaded model.
|
|
50
|
+
const modelActor = new ENGINE.Actor({
|
|
51
|
+
position: new THREE.Vector3(0, 0, -5),
|
|
52
|
+
rootComponent: new ENGINE.GLTFMeshComponent({
|
|
53
|
+
// The path to your model file, relative to your project's asset root.
|
|
54
|
+
modelUrl: '@engine/assets/models/MySpaceship.glb',
|
|
55
|
+
// Optional: override all materials in the model with a single one.
|
|
56
|
+
// materialOverride: new THREE.MeshNormalMaterial()
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// world.addActors(modelActor);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Model loading is asynchronous. You can use the `onModelLoaded` callback to execute code once the model is ready. This is especially important for things like animation setup.
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
const gltfComponent = modelActor.rootComponent as ENGINE.GLTFMeshComponent;
|
|
67
|
+
|
|
68
|
+
gltfComponent.onModelLoaded(() => {
|
|
69
|
+
console.log("Spaceship model has finished loading!");
|
|
70
|
+
// Now it's safe to access the model's data, e.g., gltfComponent.gltf
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 2. Materials
|
|
77
|
+
|
|
78
|
+
Materials define the surface properties of an object: its color, texture, shininess, and more. Genesys.js uses Three.js materials directly.
|
|
79
|
+
|
|
80
|
+
The most common material for realistic rendering is `THREE.MeshStandardMaterial`, which works with a physically-based rendering (PBR) workflow.
|
|
81
|
+
|
|
82
|
+
### Using Textures
|
|
83
|
+
|
|
84
|
+
To apply a texture, you load it and assign it to a material's `map` property. The engine provides a custom `UrlTexture` class that integrates with the serialization system.
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
import * as ENGINE from "genesys.js";
|
|
88
|
+
|
|
89
|
+
// Create a texture from a URL.
|
|
90
|
+
const woodTexture = new ENGINE.UrlTexture({
|
|
91
|
+
url: '@engine/assets/textures/wood_albedo.png',
|
|
92
|
+
wrapS: THREE.RepeatWrapping,
|
|
93
|
+
wrapT: THREE.RepeatWrapping
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// Create another texture for the normal map.
|
|
97
|
+
const woodNormalMap = new ENGINE.UrlTexture({
|
|
98
|
+
url: '@engine/assets/textures/wood_normal.png',
|
|
99
|
+
wrapS: THREE.RepeatWrapping,
|
|
100
|
+
wrapT: THREE.RepeatWrapping
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Create the material.
|
|
104
|
+
const woodMaterial = new THREE.MeshStandardMaterial({
|
|
105
|
+
map: woodTexture, // Base color texture
|
|
106
|
+
normalMap: woodNormalMap, // For surface detail
|
|
107
|
+
roughness: 0.8,
|
|
108
|
+
metalness: 0.1
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Create a cube with this material.
|
|
112
|
+
const woodCube = new ENGINE.MeshComponent({
|
|
113
|
+
geometry: new THREE.BoxGeometry(2, 2, 2),
|
|
114
|
+
material: woodMaterial
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### `MaterialUtils`
|
|
119
|
+
|
|
120
|
+
The engine provides a `MaterialUtils` class with some helpful presets:
|
|
121
|
+
|
|
122
|
+
* `MaterialUtils.DefaultMaterial`: A simple checkerboard material, great for placeholders.
|
|
123
|
+
* `MaterialUtils.MeshWorldSpaceNormalMaterial`: A debug material that visualizes the mesh's normals in world space.
|
|
124
|
+
* `MaterialUtils.scaleUVsBySize()`: A utility to automatically scale a texture's UVs based on the mesh size, preventing stretching. This is used by `GameBuilder.createDefaultGround()`.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 3. Lighting
|
|
129
|
+
|
|
130
|
+
A scene isn't complete without lighting. Genesys provides a component for each type of Three.js light, allowing you to easily add them to your scene as part of an actor.
|
|
131
|
+
|
|
132
|
+
### Light Component Types
|
|
133
|
+
|
|
134
|
+
* **`AmbientLightComponent`**: Provides a constant, non-directional light to the entire scene. It's useful for setting a baseline brightness so shadows aren't completely black.
|
|
135
|
+
* **`DirectionalLightComponent`**: Simulates a distant light source like the sun, where all light rays are parallel. This is the primary light source for casting shadows in outdoor scenes.
|
|
136
|
+
* **`PointLightComponent`**: Emits light in all directions from a single point, like a light bulb.
|
|
137
|
+
* **`SpotLightComponent`**: Emits light in a cone shape, like a flashlight or stage light.
|
|
138
|
+
* **`HemisphereLightComponent`**: Simulates ambient light from the sky and ground with two different colors.
|
|
139
|
+
|
|
140
|
+
### Adding Lights to the Scene
|
|
141
|
+
|
|
142
|
+
You add lights by creating an `Actor` and attaching a light component to it. The position and rotation of the actor will determine the light's position and direction.
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
import * as ENGINE from "genesys.js";
|
|
146
|
+
|
|
147
|
+
class MyGame extends ENGINE.BaseGameLoop {
|
|
148
|
+
protected override preStart(): void {
|
|
149
|
+
// --- The Sun ---
|
|
150
|
+
// A directional light to simulate the sun.
|
|
151
|
+
const sunActor = new ENGINE.Actor({
|
|
152
|
+
// Position the light source high up and to the side.
|
|
153
|
+
position: new THREE.Vector3(50, 80, 30),
|
|
154
|
+
sceneComponents: [
|
|
155
|
+
new ENGINE.DirectionalLightComponent({
|
|
156
|
+
color: 0xfffde8, // A warm, sunny color
|
|
157
|
+
intensity: 1.5,
|
|
158
|
+
// Enable shadow casting for this light.
|
|
159
|
+
castShadow: true
|
|
160
|
+
})
|
|
161
|
+
]
|
|
162
|
+
});
|
|
163
|
+
// The light will point from its position towards the world origin (0,0,0) by default.
|
|
164
|
+
this.world.addActors(sunActor);
|
|
165
|
+
|
|
166
|
+
// --- Ambient Light ---
|
|
167
|
+
// A soft ambient light to fill in the shadows.
|
|
168
|
+
const ambientActor = new ENGINE.Actor({
|
|
169
|
+
sceneComponents: [
|
|
170
|
+
new ENGINE.AmbientLightComponent({
|
|
171
|
+
color: 0x404080, // A cool, bluish ambient color
|
|
172
|
+
intensity: 0.3
|
|
173
|
+
})
|
|
174
|
+
]
|
|
175
|
+
});
|
|
176
|
+
this.world.addActors(ambientActor);
|
|
177
|
+
|
|
178
|
+
// --- A Point Light ---
|
|
179
|
+
// A flickering point light for a torch.
|
|
180
|
+
const torchActor = new ENGINE.Actor({
|
|
181
|
+
position: new THREE.Vector3(5, 1.5, -5),
|
|
182
|
+
sceneComponents: [
|
|
183
|
+
new ENGINE.PointLightComponent({
|
|
184
|
+
color: 0xffa500, // Orange
|
|
185
|
+
intensity: 2,
|
|
186
|
+
distance: 10, // Light fades out over 10 units
|
|
187
|
+
decay: 2
|
|
188
|
+
})
|
|
189
|
+
]
|
|
190
|
+
});
|
|
191
|
+
this.world.addActors(torchActor);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Shadows
|
|
197
|
+
|
|
198
|
+
For an object to cast or receive shadows, two things must be true:
|
|
199
|
+
|
|
200
|
+
1. A light source (like a `DirectionalLightComponent`) must have `castShadow: true`.
|
|
201
|
+
2. A `MeshComponent` must have `castShadow: true` (to cast a shadow) and/or `receiveShadow: true` (to have shadows cast upon it).
|
|
202
|
+
|
|
203
|
+
The `GameBuilder`'s default ground and pawn are already configured to receive and cast shadows, respectively.
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
// This cube will both cast a shadow and have shadows cast upon it.
|
|
207
|
+
const shadowCube = new ENGINE.MeshComponent({
|
|
208
|
+
geometry: new THREE.BoxGeometry(1, 1, 1),
|
|
209
|
+
material: new THREE.MeshStandardMaterial({ color: 'white' })
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
shadowCube.castShadow = true;
|
|
213
|
+
shadowCube.receiveShadow = true;
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Static vs Dynamic Lights (Lightmapping)
|
|
217
|
+
|
|
218
|
+
When using the lightmapping system, lights can be configured as either static (baked into lightmaps) or dynamic (runtime only):
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
// Static light - baked into lightmaps for optimal performance
|
|
222
|
+
const sunLight = new ENGINE.DirectionalLightComponent({
|
|
223
|
+
color: 0xffffff,
|
|
224
|
+
intensity: 1.5,
|
|
225
|
+
bakeLightmaps: true // Default - will be baked and hidden at runtime
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Dynamic light - excluded from lightmaps, stays active for real-time effects
|
|
229
|
+
const flashlight = new ENGINE.SpotLightComponent({
|
|
230
|
+
color: 0xffffff,
|
|
231
|
+
intensity: 100,
|
|
232
|
+
bakeLightmaps: false // Runtime-only lighting
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// Set lightmap baking
|
|
236
|
+
sunLight.setLightmapBaked(true); // bakeLightmaps: true
|
|
237
|
+
flashlight.setLightmapBaked(false); // bakeLightmaps: false
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Use static lights for:** Environmental lighting, architectural lights, performance-critical scenarios
|
|
241
|
+
**Use dynamic lights for:** Player-controlled lights, moving objects, interactive elements, temporary effects
|
|
242
|
+
|
|
243
|
+
For detailed lightmapping workflows, see the [Lightmapping System guide](18-lightmapping-system.md).
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 4. Skyboxes
|
|
248
|
+
|
|
249
|
+
A skybox creates the illusion of a distant environment surrounding your entire scene, providing both visual background and environmental lighting through reflections. Genesys.js provides the `ENGINE.SkyboxComponent` which supports two types of skyboxes: texture-based and procedural.
|
|
250
|
+
|
|
251
|
+
### Creating a Skybox with `GameBuilder`
|
|
252
|
+
|
|
253
|
+
The easiest way to add a skybox to your scene is using the `GameBuilder` helper:
|
|
254
|
+
|
|
255
|
+
```typescript
|
|
256
|
+
import * as ENGINE from "genesys.js";
|
|
257
|
+
|
|
258
|
+
class MyGame extends ENGINE.BaseGameLoop {
|
|
259
|
+
protected override preStart(): void {
|
|
260
|
+
// Create a default skybox with HDR texture
|
|
261
|
+
const skyboxComponent = ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
262
|
+
|
|
263
|
+
// The skybox is now active and providing environmental lighting
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Texture-Based Skyboxes
|
|
269
|
+
|
|
270
|
+
Texture-based skyboxes use panoramic images to create realistic environments. The component supports both HDR formats (`.hdr`, `.exr`) for high dynamic range lighting and standard image formats (`.png`, `.jpg`).
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
import * as ENGINE from "genesys.js";
|
|
274
|
+
|
|
275
|
+
// Create an actor with a skybox component
|
|
276
|
+
const skyboxActor = new ENGINE.Actor({
|
|
277
|
+
components: [
|
|
278
|
+
new ENGINE.SkyboxComponent({
|
|
279
|
+
// HDR texture for realistic lighting
|
|
280
|
+
url: '@engine/assets/textures/skybox/forest_environment.hdr'
|
|
281
|
+
})
|
|
282
|
+
]
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
// Add to world
|
|
286
|
+
// world.addActors(skyboxActor);
|
|
287
|
+
|
|
288
|
+
// Or dynamically change the skybox texture
|
|
289
|
+
const skyboxComponent = skyboxActor.getComponent(ENGINE.SkyboxComponent);
|
|
290
|
+
skyboxComponent.createTextureSkybox('@engine/assets/textures/skybox/sunset_sky.hdr');
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**Recommended HDR Sources:**
|
|
294
|
+
- [Poly Haven](https://polyhaven.com/hdris) - Free HDR environments
|
|
295
|
+
- HDR formats provide better lighting and reflections than standard images
|
|
296
|
+
|
|
297
|
+
### Finding and Managing Skybox Components
|
|
298
|
+
|
|
299
|
+
Once you've created a skybox, you can find and manage it from anywhere in your code using the world's component query methods:
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
import * as ENGINE from "genesys.js";
|
|
303
|
+
|
|
304
|
+
class MyGame extends ENGINE.BaseGameLoop {
|
|
305
|
+
protected override preStart(): void {
|
|
306
|
+
// Create initial skybox
|
|
307
|
+
ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Method to change skybox based on game state
|
|
311
|
+
private updateEnvironment(timeOfDay: 'dawn' | 'day' | 'dusk' | 'night'): void {
|
|
312
|
+
// Find the existing skybox component in the world
|
|
313
|
+
const skyboxComponent = this.world.getComponent(ENGINE.SkyboxComponent);
|
|
314
|
+
|
|
315
|
+
if (!skyboxComponent) {
|
|
316
|
+
console.warn('No skybox component found in world');
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Update skybox based on time of day
|
|
321
|
+
switch (timeOfDay) {
|
|
322
|
+
case 'dawn':
|
|
323
|
+
skyboxComponent.createProceduralSkybox({
|
|
324
|
+
width: 2048, height: 1024,
|
|
325
|
+
bottomColor: '#ffb347', // Peach
|
|
326
|
+
middleColor: '#ffa500', // Orange
|
|
327
|
+
topColor: '#ff8c00' // Dark orange
|
|
328
|
+
});
|
|
329
|
+
break;
|
|
330
|
+
case 'day':
|
|
331
|
+
skyboxComponent.createTextureSkybox('@engine/assets/textures/skybox/clear_day.hdr');
|
|
332
|
+
break;
|
|
333
|
+
case 'dusk':
|
|
334
|
+
skyboxComponent.createProceduralSkybox({
|
|
335
|
+
width: 2048, height: 1024,
|
|
336
|
+
bottomColor: '#ff4500', // Red-orange
|
|
337
|
+
middleColor: '#ff6347', // Tomato
|
|
338
|
+
topColor: '#ffd700' // Gold
|
|
339
|
+
});
|
|
340
|
+
break;
|
|
341
|
+
case 'night':
|
|
342
|
+
skyboxComponent.createTextureSkybox('@engine/assets/textures/skybox/starry_night.hdr');
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Check if a skybox exists
|
|
348
|
+
private hasSkybox(): boolean {
|
|
349
|
+
return this.world.getComponent(ENGINE.SkyboxComponent) !== null;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Remove skybox entirely
|
|
353
|
+
private removeSkybox(): void {
|
|
354
|
+
const skyboxComponent = this.world.getComponent(ENGINE.SkyboxComponent);
|
|
355
|
+
if (skyboxComponent) {
|
|
356
|
+
const skyboxActor = skyboxComponent.getOwner();
|
|
357
|
+
if (skyboxActor) {
|
|
358
|
+
this.world.removeActors(skyboxActor);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**Key Methods for Skybox Management:**
|
|
366
|
+
|
|
367
|
+
- **`world.getComponent(ENGINE.SkyboxComponent)`**: Finds the first (and typically only) skybox component in the world
|
|
368
|
+
- **`skyboxComponent.createTextureSkybox(url)`**: Switches to a texture-based skybox
|
|
369
|
+
- **`skyboxComponent.createProceduralSkybox(options)`**: Switches to a procedural skybox
|
|
370
|
+
- **`skyboxComponent.getOwner()`**: Gets the actor that owns the skybox component (useful for removal)
|
|
371
|
+
|
|
372
|
+
This approach allows you to:
|
|
373
|
+
- Change skyboxes dynamically based on game events
|
|
374
|
+
- Implement time-of-day systems
|
|
375
|
+
- Switch between different environment themes
|
|
376
|
+
- Check if a skybox exists before modifying it
|
|
377
|
+
- Remove skyboxes when needed
|
|
378
|
+
|
|
379
|
+
### Procedural Skyboxes
|
|
380
|
+
|
|
381
|
+
For stylized games or when you don't have HDR textures, procedural skyboxes generate gradient-based environments programmatically:
|
|
382
|
+
|
|
383
|
+
```typescript
|
|
384
|
+
import * as ENGINE from "genesys.js";
|
|
385
|
+
|
|
386
|
+
const proceduralSkybox = new ENGINE.SkyboxComponent();
|
|
387
|
+
|
|
388
|
+
// Create a sunset gradient skybox
|
|
389
|
+
proceduralSkybox.createProceduralSkybox({
|
|
390
|
+
width: 2048, // Texture resolution width
|
|
391
|
+
height: 1024, // Texture resolution height
|
|
392
|
+
bottomColor: '#ff4500', // Orange bottom (horizon)
|
|
393
|
+
middleColor: '#ff6347', // Red-orange middle
|
|
394
|
+
topColor: '#ffd700' // Gold top (sky)
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
const skyboxActor = new ENGINE.Actor({
|
|
398
|
+
components: [proceduralSkybox]
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
// world.addActors(skyboxActor);
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Environment Mapping and Reflections
|
|
405
|
+
|
|
406
|
+
Skyboxes automatically provide environment mapping for materials in your scene. This means reflective surfaces will show the skybox environment, creating realistic reflections:
|
|
407
|
+
|
|
408
|
+
```typescript
|
|
409
|
+
// Create a reflective sphere that will show the skybox
|
|
410
|
+
const reflectiveSphere = new ENGINE.Actor({
|
|
411
|
+
position: new THREE.Vector3(0, 2, 0),
|
|
412
|
+
rootComponent: new ENGINE.MeshComponent({
|
|
413
|
+
geometry: new THREE.SphereGeometry(1, 32, 16),
|
|
414
|
+
material: new THREE.MeshStandardMaterial({
|
|
415
|
+
color: 'white',
|
|
416
|
+
roughness: 0.1, // Low roughness = more reflective
|
|
417
|
+
metalness: 0.9 // High metalness = mirror-like
|
|
418
|
+
})
|
|
419
|
+
})
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
// The sphere will automatically reflect the skybox environment
|
|
423
|
+
// world.addActors(reflectiveSphere);
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### Dynamic Skybox Switching
|
|
427
|
+
|
|
428
|
+
You can change skyboxes during runtime to create time-of-day effects or different environments:
|
|
429
|
+
|
|
430
|
+
```typescript
|
|
431
|
+
class DynamicSkyboxGame extends ENGINE.BaseGameLoop {
|
|
432
|
+
private skyboxComponent: ENGINE.SkyboxComponent;
|
|
433
|
+
private timeOfDay = 0;
|
|
434
|
+
|
|
435
|
+
protected override preStart(): void {
|
|
436
|
+
this.skyboxComponent = ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
437
|
+
|
|
438
|
+
// Change skybox every 10 seconds
|
|
439
|
+
setInterval(() => {
|
|
440
|
+
this.updateTimeOfDay();
|
|
441
|
+
}, 10000);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
private updateTimeOfDay(): void {
|
|
445
|
+
this.timeOfDay = (this.timeOfDay + 1) % 4;
|
|
446
|
+
|
|
447
|
+
switch (this.timeOfDay) {
|
|
448
|
+
case 0: // Dawn
|
|
449
|
+
this.skyboxComponent.createProceduralSkybox({
|
|
450
|
+
width: 2048, height: 1024,
|
|
451
|
+
bottomColor: '#ffb347', middleColor: '#ffa500', topColor: '#ff8c00'
|
|
452
|
+
});
|
|
453
|
+
break;
|
|
454
|
+
case 1: // Day
|
|
455
|
+
this.skyboxComponent.createTextureSkybox('@engine/assets/textures/skybox/day_sky.hdr');
|
|
456
|
+
break;
|
|
457
|
+
case 2: // Sunset
|
|
458
|
+
this.skyboxComponent.createProceduralSkybox({
|
|
459
|
+
width: 2048, height: 1024,
|
|
460
|
+
bottomColor: '#ff4500', middleColor: '#ff6347', topColor: '#ffd700'
|
|
461
|
+
});
|
|
462
|
+
break;
|
|
463
|
+
case 3: // Night
|
|
464
|
+
this.skyboxComponent.createProceduralSkybox({
|
|
465
|
+
width: 2048, height: 1024,
|
|
466
|
+
bottomColor: '#191970', middleColor: '#483d8b', topColor: '#4b0082'
|
|
467
|
+
});
|
|
468
|
+
break;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Automatic Environment Mapping Integration
|
|
475
|
+
|
|
476
|
+
Genesys.js extends Three.js's `MeshStandardMaterial` to automatically integrate with skybox components for seamless environment mapping. This system provides realistic reflections and environmental lighting without requiring manual material configuration.
|
|
477
|
+
|
|
478
|
+
#### How It Works
|
|
479
|
+
|
|
480
|
+
When you create a skybox using `SkyboxComponent`, it automatically becomes available as an environment map for all `MeshStandardMaterial` objects in your scene. The engine patches the material's `envMap` and `envMapIntensity` properties to dynamically reference the active skybox.
|
|
481
|
+
|
|
482
|
+
```typescript
|
|
483
|
+
import * as ENGINE from "genesys.js";
|
|
484
|
+
|
|
485
|
+
class AutoEnvironmentExample extends ENGINE.BaseGameLoop {
|
|
486
|
+
protected override preStart(): void {
|
|
487
|
+
// Create a skybox - this will automatically provide environment mapping
|
|
488
|
+
const skyboxComponent = ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
489
|
+
|
|
490
|
+
// Create a reflective sphere - no manual envMap setup needed!
|
|
491
|
+
const reflectiveSphere = new ENGINE.Actor({
|
|
492
|
+
position: new THREE.Vector3(0, 2, 0),
|
|
493
|
+
rootComponent: new ENGINE.MeshComponent({
|
|
494
|
+
geometry: new THREE.SphereGeometry(1, 32, 16),
|
|
495
|
+
material: new THREE.MeshStandardMaterial({
|
|
496
|
+
color: 'white',
|
|
497
|
+
roughness: 0.1, // Low roughness = more reflective
|
|
498
|
+
metalness: 0.9 // High metalness = mirror-like
|
|
499
|
+
// No need to set envMap - it's automatic!
|
|
500
|
+
})
|
|
501
|
+
})
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
this.world.addActors(reflectiveSphere);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
#### Manual Override Support
|
|
510
|
+
|
|
511
|
+
You can still manually set `envMap` and `envMapIntensity` on materials when you need specific control:
|
|
512
|
+
|
|
513
|
+
```typescript
|
|
514
|
+
// Create a material with custom environment mapping
|
|
515
|
+
const customMaterial = new THREE.MeshStandardMaterial({
|
|
516
|
+
color: 'gold',
|
|
517
|
+
roughness: 0.2,
|
|
518
|
+
metalness: 0.8,
|
|
519
|
+
// Manual override - this will take precedence over the skybox
|
|
520
|
+
envMap: myCustomEnvironmentTexture,
|
|
521
|
+
envMapIntensity: 1.5
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
// This material will use the custom envMap instead of the skybox
|
|
525
|
+
const customReflectiveObject = new ENGINE.Actor({
|
|
526
|
+
rootComponent: new ENGINE.MeshComponent({
|
|
527
|
+
geometry: new THREE.BoxGeometry(1, 1, 1),
|
|
528
|
+
material: customMaterial
|
|
529
|
+
})
|
|
530
|
+
});
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
#### Dynamic Skybox Changes
|
|
534
|
+
|
|
535
|
+
When you change skyboxes dynamically, all materials automatically update their environment mapping:
|
|
536
|
+
|
|
537
|
+
```typescript
|
|
538
|
+
class DynamicEnvironmentExample extends ENGINE.BaseGameLoop {
|
|
539
|
+
private skyboxComponent: ENGINE.SkyboxComponent;
|
|
540
|
+
|
|
541
|
+
protected override preStart(): void {
|
|
542
|
+
// Create initial skybox
|
|
543
|
+
this.skyboxComponent = ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
544
|
+
|
|
545
|
+
// Create multiple reflective objects
|
|
546
|
+
for (let i = 0; i < 5; i++) {
|
|
547
|
+
const sphere = new ENGINE.Actor({
|
|
548
|
+
position: new THREE.Vector3(i * 3 - 6, 1, 0),
|
|
549
|
+
rootComponent: new ENGINE.MeshComponent({
|
|
550
|
+
geometry: new THREE.SphereGeometry(0.8, 32, 16),
|
|
551
|
+
material: new THREE.MeshStandardMaterial({
|
|
552
|
+
color: new THREE.Color().setHSL(i * 0.2, 1, 0.5),
|
|
553
|
+
roughness: i * 0.2,
|
|
554
|
+
metalness: 0.9
|
|
555
|
+
})
|
|
556
|
+
})
|
|
557
|
+
});
|
|
558
|
+
this.world.addActors(sphere);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
// Change environment every 5 seconds
|
|
562
|
+
setInterval(() => this.cycleEnvironment(), 5000);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
private cycleEnvironment(): void {
|
|
566
|
+
// All spheres will automatically reflect the new environment
|
|
567
|
+
this.skyboxComponent.createProceduralSkybox({
|
|
568
|
+
width: 2048, height: 1024,
|
|
569
|
+
bottomColor: `hsl(${Math.random() * 360}, 70%, 50%)`,
|
|
570
|
+
middleColor: `hsl(${Math.random() * 360}, 70%, 70%)`,
|
|
571
|
+
topColor: `hsl(${Math.random() * 360}, 70%, 90%)`,
|
|
572
|
+
envMapIntensity: 0.8
|
|
573
|
+
});
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
#### Environment Map Intensity Control
|
|
579
|
+
|
|
580
|
+
The skybox's `envMapIntensity` setting controls how strongly the environment affects material reflections:
|
|
581
|
+
|
|
582
|
+
```typescript
|
|
583
|
+
// Create skybox with specific intensity
|
|
584
|
+
const skyboxComponent = new ENGINE.SkyboxComponent({
|
|
585
|
+
url: '@engine/assets/textures/skybox/studio_lighting.hdr',
|
|
586
|
+
envMapIntensity: 1.2 // Stronger environmental reflections
|
|
587
|
+
});
|
|
588
|
+
|
|
589
|
+
// All materials will automatically use this intensity unless overridden
|
|
590
|
+
const material = new THREE.MeshStandardMaterial({
|
|
591
|
+
color: 'silver',
|
|
592
|
+
roughness: 0.1,
|
|
593
|
+
metalness: 1.0
|
|
594
|
+
// envMapIntensity will be 1.2 from the skybox
|
|
595
|
+
});
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
#### Technical Implementation Details
|
|
599
|
+
|
|
600
|
+
The automatic environment mapping works through these mechanisms:
|
|
601
|
+
|
|
602
|
+
1. **World Registration**: When a `SkyboxComponent` begins play, it registers itself with the world using `world.setSkyboxComponent(this)`
|
|
603
|
+
|
|
604
|
+
2. **Material Patching**: The engine patches `MeshStandardMaterial.prototype` to override the `envMap` and `envMapIntensity` getters
|
|
605
|
+
|
|
606
|
+
3. **Dynamic Resolution**: When a material's `envMap` is accessed, it checks:
|
|
607
|
+
- First: Any manually set `envMap` value (takes precedence)
|
|
608
|
+
- Second: The active skybox component's texture via `world.getSkyboxComponent()?.getTexture()`
|
|
609
|
+
|
|
610
|
+
4. **Automatic Updates**: Materials automatically detect environment changes and trigger shader recompilation when needed
|
|
611
|
+
|
|
612
|
+
This system ensures that:
|
|
613
|
+
- Materials automatically receive environmental lighting and reflections
|
|
614
|
+
- Manual overrides always take precedence when needed
|
|
615
|
+
- Dynamic skybox changes propagate to all materials seamlessly
|
|
616
|
+
- No performance overhead when materials have manual environment maps
|
|
617
|
+
|
|
618
|
+
### Performance Considerations
|
|
619
|
+
|
|
620
|
+
- **HDR Textures**: Provide the best visual quality but are larger in file size
|
|
621
|
+
- **Procedural Skyboxes**: Lightweight and customizable, perfect for stylized games
|
|
622
|
+
- **Resolution**: Higher resolution procedural skyboxes (4096x2048) look better but use more memory
|
|
623
|
+
- **Environment Mapping**: Automatically applied to all `MeshStandardMaterial` objects in the scene
|
|
624
|
+
- **Shader Compilation**: Environment changes may trigger shader recompilation, so avoid frequent skybox switching in performance-critical scenarios
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## 5. Tone Mapping
|
|
629
|
+
|
|
630
|
+
Tone mapping is a crucial post-processing technique that converts high dynamic range (HDR) lighting values to the limited range that can be displayed on standard monitors. Genesys.js provides access to Three.js's tone mapping system through the renderer, allowing you to control how bright lights and HDR environments are displayed.
|
|
631
|
+
|
|
632
|
+
### Understanding Tone Mapping
|
|
633
|
+
|
|
634
|
+
When using HDR lighting (from skyboxes, bright lights, or emissive materials), the light values can exceed the 0-1 range that monitors can display. Tone mapping algorithms compress this wide range of values while preserving visual detail and contrast, similar to how your eye adapts to different lighting conditions.
|
|
635
|
+
|
|
636
|
+
### Default Settings
|
|
637
|
+
|
|
638
|
+
By default, Genesys.js uses Reinhard tone mapping with an exposure of 1.0:
|
|
639
|
+
|
|
640
|
+
```typescript
|
|
641
|
+
// This is automatically set in the Renderer constructor
|
|
642
|
+
renderer.toneMapping = THREE.ReinhardToneMapping;
|
|
643
|
+
renderer.toneMappingExposure = 1.0;
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Available Tone Mapping Algorithms
|
|
647
|
+
|
|
648
|
+
Genesys.js supports all of Three.js's tone mapping algorithms, each with different visual characteristics:
|
|
649
|
+
|
|
650
|
+
```typescript
|
|
651
|
+
import * as THREE from 'three';
|
|
652
|
+
import * as ENGINE from 'genesys.js';
|
|
653
|
+
|
|
654
|
+
class ToneMappingDemo extends ENGINE.BaseGameLoop {
|
|
655
|
+
protected override preStart(): void {
|
|
656
|
+
// Access the renderer through the world
|
|
657
|
+
const renderer = this.world.getRenderer().renderer;
|
|
658
|
+
|
|
659
|
+
// No tone mapping - raw HDR values (may appear very bright/washed out)
|
|
660
|
+
renderer.toneMapping = THREE.NoToneMapping;
|
|
661
|
+
|
|
662
|
+
// Linear tone mapping - simple linear scaling
|
|
663
|
+
renderer.toneMapping = THREE.LinearToneMapping;
|
|
664
|
+
|
|
665
|
+
// Reinhard tone mapping - smooth, natural-looking (default)
|
|
666
|
+
renderer.toneMapping = THREE.ReinhardToneMapping;
|
|
667
|
+
|
|
668
|
+
// Cineon tone mapping - film-like, higher contrast
|
|
669
|
+
renderer.toneMapping = THREE.CineonToneMapping;
|
|
670
|
+
|
|
671
|
+
// ACES Filmic tone mapping - industry standard, cinematic look
|
|
672
|
+
renderer.toneMapping = THREE.ACESFilmicToneMapping;
|
|
673
|
+
|
|
674
|
+
// AgX tone mapping - modern, balanced approach
|
|
675
|
+
renderer.toneMapping = THREE.AgXToneMapping;
|
|
676
|
+
|
|
677
|
+
// Neutral tone mapping - minimal color shift
|
|
678
|
+
renderer.toneMapping = THREE.NeutralToneMapping;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
### Tone Mapping Exposure
|
|
684
|
+
|
|
685
|
+
The `toneMappingExposure` property acts like a camera's exposure setting, controlling the overall brightness of the scene:
|
|
686
|
+
|
|
687
|
+
```typescript
|
|
688
|
+
import * as ENGINE from 'genesys.js';
|
|
689
|
+
|
|
690
|
+
class ExposureDemo extends ENGINE.BaseGameLoop {
|
|
691
|
+
private currentExposure = 1.0;
|
|
692
|
+
|
|
693
|
+
protected override preStart(): void {
|
|
694
|
+
// Create a bright HDR environment
|
|
695
|
+
ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
696
|
+
|
|
697
|
+
// Add some bright lights
|
|
698
|
+
const brightLight = new ENGINE.Actor({
|
|
699
|
+
position: new THREE.Vector3(5, 10, 5),
|
|
700
|
+
sceneComponents: [
|
|
701
|
+
new ENGINE.PointLightComponent({
|
|
702
|
+
color: 0xffffff,
|
|
703
|
+
intensity: 100, // Very bright light
|
|
704
|
+
distance: 20
|
|
705
|
+
})
|
|
706
|
+
]
|
|
707
|
+
});
|
|
708
|
+
this.world.addActors(brightLight);
|
|
709
|
+
|
|
710
|
+
// Set up exposure controls
|
|
711
|
+
this.setupExposureControls();
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
private setupExposureControls(): void {
|
|
715
|
+
const renderer = this.world.getRenderer().renderer;
|
|
716
|
+
|
|
717
|
+
// Keyboard controls for exposure
|
|
718
|
+
window.addEventListener('keydown', (event) => {
|
|
719
|
+
switch (event.key) {
|
|
720
|
+
case '1': // Dark exposure
|
|
721
|
+
this.currentExposure = 0.5;
|
|
722
|
+
break;
|
|
723
|
+
case '2': // Normal exposure
|
|
724
|
+
this.currentExposure = 1.0;
|
|
725
|
+
break;
|
|
726
|
+
case '3': // Bright exposure
|
|
727
|
+
this.currentExposure = 2.0;
|
|
728
|
+
break;
|
|
729
|
+
case '4': // Very bright exposure
|
|
730
|
+
this.currentExposure = 4.0;
|
|
731
|
+
break;
|
|
732
|
+
case 'ArrowUp': // Increase exposure
|
|
733
|
+
this.currentExposure = Math.min(this.currentExposure * 1.1, 10);
|
|
734
|
+
break;
|
|
735
|
+
case 'ArrowDown': // Decrease exposure
|
|
736
|
+
this.currentExposure = Math.max(this.currentExposure * 0.9, 0.1);
|
|
737
|
+
break;
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
renderer.toneMappingExposure = this.currentExposure;
|
|
741
|
+
console.log(`Exposure: ${this.currentExposure.toFixed(2)}`);
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
### Tone Mapping Algorithm Comparison
|
|
748
|
+
|
|
749
|
+
Each tone mapping algorithm produces different visual results:
|
|
750
|
+
|
|
751
|
+
```typescript
|
|
752
|
+
import * as ENGINE from 'genesys.js';
|
|
753
|
+
|
|
754
|
+
class ToneMappingComparison extends ENGINE.BaseGameLoop {
|
|
755
|
+
private toneMappingModes = [
|
|
756
|
+
{ name: 'No Tone Mapping', value: THREE.NoToneMapping },
|
|
757
|
+
{ name: 'Linear', value: THREE.LinearToneMapping },
|
|
758
|
+
{ name: 'Reinhard', value: THREE.ReinhardToneMapping },
|
|
759
|
+
{ name: 'Cineon', value: THREE.CineonToneMapping },
|
|
760
|
+
{ name: 'ACES Filmic', value: THREE.ACESFilmicToneMapping },
|
|
761
|
+
{ name: 'AgX', value: THREE.AgXToneMapping },
|
|
762
|
+
{ name: 'Neutral', value: THREE.NeutralToneMapping }
|
|
763
|
+
];
|
|
764
|
+
private currentModeIndex = 2; // Start with Reinhard (default)
|
|
765
|
+
|
|
766
|
+
protected override preStart(): void {
|
|
767
|
+
// Create a scene with varied lighting conditions
|
|
768
|
+
this.setupTestScene();
|
|
769
|
+
this.setupToneMappingControls();
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
private setupTestScene(): void {
|
|
773
|
+
// HDR skybox for environmental lighting
|
|
774
|
+
ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
775
|
+
ENGINE.GameBuilder.createDefaultGround(this.world);
|
|
776
|
+
|
|
777
|
+
// Create materials with different brightness levels
|
|
778
|
+
const materials = [
|
|
779
|
+
new THREE.MeshStandardMaterial({ color: 0x808080 }), // Mid-gray
|
|
780
|
+
new THREE.MeshStandardMaterial({ color: 0xffffff }), // White
|
|
781
|
+
new THREE.MeshStandardMaterial({
|
|
782
|
+
color: 0x000000,
|
|
783
|
+
emissive: 0xff0000,
|
|
784
|
+
emissiveIntensity: 2
|
|
785
|
+
}), // Bright red emissive
|
|
786
|
+
new THREE.MeshStandardMaterial({
|
|
787
|
+
color: 0x000000,
|
|
788
|
+
emissive: 0x00ff00,
|
|
789
|
+
emissiveIntensity: 5
|
|
790
|
+
}), // Very bright green emissive
|
|
791
|
+
];
|
|
792
|
+
|
|
793
|
+
// Create spheres with different materials
|
|
794
|
+
materials.forEach((material, index) => {
|
|
795
|
+
const sphere = new ENGINE.Actor({
|
|
796
|
+
position: new THREE.Vector3(index * 3 - 4.5, 2, 0),
|
|
797
|
+
rootComponent: new ENGINE.MeshComponent({
|
|
798
|
+
geometry: new THREE.SphereGeometry(1, 32, 16),
|
|
799
|
+
material: material
|
|
800
|
+
})
|
|
801
|
+
});
|
|
802
|
+
this.world.addActors(sphere);
|
|
803
|
+
});
|
|
804
|
+
|
|
805
|
+
// Add a very bright directional light
|
|
806
|
+
const brightSun = new ENGINE.Actor({
|
|
807
|
+
position: new THREE.Vector3(10, 20, 10),
|
|
808
|
+
sceneComponents: [
|
|
809
|
+
new ENGINE.DirectionalLightComponent({
|
|
810
|
+
color: 0xffffff,
|
|
811
|
+
intensity: 3, // Bright sunlight
|
|
812
|
+
castShadow: true
|
|
813
|
+
})
|
|
814
|
+
]
|
|
815
|
+
});
|
|
816
|
+
this.world.addActors(brightSun);
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
private setupToneMappingControls(): void {
|
|
820
|
+
const renderer = this.world.getRenderer().renderer;
|
|
821
|
+
|
|
822
|
+
window.addEventListener('keydown', (event) => {
|
|
823
|
+
if (event.key === 'Tab') {
|
|
824
|
+
event.preventDefault();
|
|
825
|
+
|
|
826
|
+
// Cycle through tone mapping modes
|
|
827
|
+
this.currentModeIndex = (this.currentModeIndex + 1) % this.toneMappingModes.length;
|
|
828
|
+
const currentMode = this.toneMappingModes[this.currentModeIndex];
|
|
829
|
+
|
|
830
|
+
renderer.toneMapping = currentMode.value;
|
|
831
|
+
console.log(`Tone Mapping: ${currentMode.name}`);
|
|
832
|
+
}
|
|
833
|
+
});
|
|
834
|
+
|
|
835
|
+
console.log('Press Tab to cycle through tone mapping modes');
|
|
836
|
+
console.log('Current mode:', this.toneMappingModes[this.currentModeIndex].name);
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
### Accessing the Renderer
|
|
842
|
+
|
|
843
|
+
To modify tone mapping settings in your game, you need to access the renderer through the world:
|
|
844
|
+
|
|
845
|
+
```typescript
|
|
846
|
+
import * as ENGINE from 'genesys.js';
|
|
847
|
+
|
|
848
|
+
class MyGame extends ENGINE.BaseGameLoop {
|
|
849
|
+
protected override preStart(): void {
|
|
850
|
+
// Get the renderer from the world
|
|
851
|
+
const renderer = this.world.getRenderer().renderer;
|
|
852
|
+
|
|
853
|
+
// Modify tone mapping settings
|
|
854
|
+
renderer.toneMapping = THREE.ACESFilmicToneMapping;
|
|
855
|
+
renderer.toneMappingExposure = 1.5;
|
|
856
|
+
|
|
857
|
+
// Set up your scene...
|
|
858
|
+
ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
859
|
+
ENGINE.GameBuilder.createDefaultLighting(this.world);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
### Best Practices
|
|
865
|
+
|
|
866
|
+
**Choosing a Tone Mapping Algorithm:**
|
|
867
|
+
- **ReinhardToneMapping** (default): Good general-purpose choice, natural-looking
|
|
868
|
+
- **ACESFilmicToneMapping**: Industry standard for cinematic/realistic games
|
|
869
|
+
- **AgXToneMapping**: Modern alternative with good color reproduction
|
|
870
|
+
- **NeutralToneMapping**: Minimal color shifts, good for stylized games
|
|
871
|
+
- **CineonToneMapping**: Higher contrast, film-like appearance
|
|
872
|
+
- **LinearToneMapping**: Simple scaling, may wash out highlights
|
|
873
|
+
- **NoToneMapping**: Only use with low dynamic range lighting
|
|
874
|
+
|
|
875
|
+
**Setting Exposure:**
|
|
876
|
+
- Start with `1.0` and adjust based on your scene's brightness
|
|
877
|
+
- Lower values (0.5-0.8) for very bright scenes or sunny outdoor environments
|
|
878
|
+
- Higher values (1.5-3.0) for darker scenes or indoor environments
|
|
879
|
+
- Use exposure to balance HDR skyboxes with your scene lighting
|
|
880
|
+
|
|
881
|
+
**Performance Considerations:**
|
|
882
|
+
- Tone mapping has minimal performance impact
|
|
883
|
+
- Changing tone mapping algorithms may trigger shader recompilation
|
|
884
|
+
- Set tone mapping once during initialization rather than changing frequently
|
|
885
|
+
|
|
886
|
+
### Dynamic Tone Mapping
|
|
887
|
+
|
|
888
|
+
You can create adaptive exposure systems that respond to gameplay:
|
|
889
|
+
|
|
890
|
+
```typescript
|
|
891
|
+
import * as ENGINE from 'genesys.js';
|
|
892
|
+
|
|
893
|
+
class AdaptiveExposureGame extends ENGINE.BaseGameLoop {
|
|
894
|
+
private targetExposure = 1.0;
|
|
895
|
+
private currentExposure = 1.0;
|
|
896
|
+
private exposureSpeed = 2.0; // Adaptation speed
|
|
897
|
+
|
|
898
|
+
protected override preStart(): void {
|
|
899
|
+
ENGINE.GameBuilder.createDefaultSkybox(this.world);
|
|
900
|
+
this.setupAdaptiveExposure();
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
protected override tick(deltaTime: number): void {
|
|
904
|
+
// Smoothly interpolate exposure towards target
|
|
905
|
+
const exposureDiff = this.targetExposure - this.currentExposure;
|
|
906
|
+
this.currentExposure += exposureDiff * this.exposureSpeed * deltaTime;
|
|
907
|
+
|
|
908
|
+
const renderer = this.world.getRenderer().renderer;
|
|
909
|
+
renderer.toneMappingExposure = this.currentExposure;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
private setupAdaptiveExposure(): void {
|
|
913
|
+
// Simulate entering different lighting conditions
|
|
914
|
+
window.addEventListener('keydown', (event) => {
|
|
915
|
+
switch (event.key) {
|
|
916
|
+
case 'b': // Bright outdoor
|
|
917
|
+
this.targetExposure = 0.6;
|
|
918
|
+
break;
|
|
919
|
+
case 'n': // Normal indoor
|
|
920
|
+
this.targetExposure = 1.0;
|
|
921
|
+
break;
|
|
922
|
+
case 'd': // Dark cave
|
|
923
|
+
this.targetExposure = 2.5;
|
|
924
|
+
break;
|
|
925
|
+
}
|
|
926
|
+
});
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
This tone mapping system allows you to fine-tune the visual appearance of your game, ensuring that HDR lighting and bright environments are displayed correctly while maintaining visual detail and artistic intent.
|
|
932
|
+
|
|
933
|
+
## Source Code
|
|
934
|
+
Below are relevant engine source code you MUST digest in order to get complete understanding of the topic. Read them carefully.
|
|
935
|
+
|
|
936
|
+
```
|
|
937
|
+
<file path={src/render/Renderer.ts}>
|
|
938
|
+
<file path={src/actors/Actor.ts}>
|
|
939
|
+
<file path={src/components/SceneComponent.ts}>
|
|
940
|
+
<file path={src/components/visual/MeshComponent.ts}>
|
|
941
|
+
<file path={src/components/visual/GLTFMeshComponent.ts}>
|
|
942
|
+
<file path={src/components/visual/SkyboxComponent.ts}>
|
|
943
|
+
<file path={src/components/visual/TerrainMeshComponent.ts}>
|
|
944
|
+
<file path={src/render/Texture.ts}>
|
|
945
|
+
<file path={src/game/GameBuilder.ts}>
|
|
946
|
+
```
|