hytopia 0.2.11 → 0.3.0-dev.3
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/boilerplate/index.ts +17 -9
- package/docs/server.audio.md +7 -1
- package/docs/{server.audioeventtype.md → server.audioevent.md} +4 -4
- package/docs/server.audioeventpayloads._audio.pause_.md +15 -0
- package/docs/server.audioeventpayloads._audio.play_.md +15 -0
- package/docs/server.audioeventpayloads._audio.play_restart_.md +15 -0
- package/docs/server.audioeventpayloads._audio.set_attached_to_entity_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_detune_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_distortion_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_playback_rate_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_position_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_reference_distance_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_volume_.md +16 -0
- package/docs/server.audioeventpayloads.md +228 -0
- package/docs/server.baseentitycontroller.md +4 -138
- package/docs/server.baseentitycontrollerevent.md +117 -0
- package/docs/server.baseentitycontrollereventpayloads.attach.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.despawn.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.detach.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.md +152 -0
- package/docs/server.baseentitycontrollereventpayloads.spawn.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.tick.md +16 -0
- package/docs/server.baseentitycontrollereventpayloads.tickwithplayerinput.md +18 -0
- package/docs/server.blocktype.md +7 -39
- package/docs/server.blocktypeevent.md +61 -0
- package/docs/server.blocktypeeventpayloads._block_type.entity_collision_.md +19 -0
- package/docs/server.blocktypeeventpayloads._block_type.entity_contact_force_.md +17 -0
- package/docs/server.blocktypeeventpayloads.md +76 -0
- package/docs/server.blocktyperegistry.md +7 -1
- package/docs/{server.blocktyperegistryeventtype.md → server.blocktyperegistryevent.md} +4 -4
- package/docs/server.blocktyperegistryeventpayloads._block_type_registry.register_block_type_.md +17 -0
- package/docs/server.blocktyperegistryeventpayloads.md +57 -0
- package/docs/server.chatevent.md +61 -0
- package/docs/server.chateventpayloads._chat.broadcast_message_.md +17 -0
- package/docs/server.chateventpayloads._chat.player_message_.md +17 -0
- package/docs/server.chateventpayloads.md +76 -0
- package/docs/server.chatmanager.md +6 -45
- package/docs/server.chunk.md +7 -1
- package/docs/{server.chunkeventtype.md → server.chunkevent.md} +4 -4
- package/docs/server.chunkeventpayloads._chunk.despawn_.md +15 -0
- package/docs/server.chunkeventpayloads._chunk.set_block_.md +18 -0
- package/docs/server.chunkeventpayloads._chunk.spawn_.md +15 -0
- package/docs/server.chunkeventpayloads.md +95 -0
- package/docs/server.collider.md +2 -1
- package/docs/server.entity.md +4 -133
- package/docs/{server.entityeventtype.md → server.entityevent.md} +74 -4
- package/docs/server.entityeventpayloads._entity.block_collision_.md +19 -0
- package/docs/server.entityeventpayloads._entity.block_contact_force_.md +17 -0
- package/docs/server.entityeventpayloads._entity.despawn_.md +15 -0
- package/docs/server.entityeventpayloads._entity.entity_collision_.md +19 -0
- package/docs/server.entityeventpayloads._entity.entity_contact_force_.md +17 -0
- package/docs/server.entityeventpayloads._entity.set_model_animations_playback_rate_.md +16 -0
- package/docs/server.entityeventpayloads._entity.set_model_hidden_nodes_.md +16 -0
- package/docs/server.entityeventpayloads._entity.set_opacity_.md +16 -0
- package/docs/server.entityeventpayloads._entity.set_parent_.md +17 -0
- package/docs/server.entityeventpayloads._entity.set_tint_color_.md +16 -0
- package/docs/server.entityeventpayloads._entity.spawn_.md +15 -0
- package/docs/server.entityeventpayloads._entity.start_model_looped_animations_.md +16 -0
- package/docs/server.entityeventpayloads._entity.start_model_oneshot_animations_.md +16 -0
- package/docs/server.entityeventpayloads._entity.stop_model_animations_.md +16 -0
- package/docs/server.entityeventpayloads._entity.tick_.md +16 -0
- package/docs/server.entityeventpayloads._entity.update_position_.md +16 -0
- package/docs/server.entityeventpayloads._entity.update_rotation_.md +16 -0
- package/docs/server.entityeventpayloads.md +361 -0
- package/docs/server.eventpayloads.md +15 -0
- package/docs/server.eventrouter.emit.md +4 -4
- package/docs/server.eventrouter.emit_1.md +63 -0
- package/docs/server.eventrouter.emitwithglobal.md +69 -0
- package/docs/server.eventrouter.emitwithglobal_1.md +63 -0
- package/docs/server.eventrouter.emitwithworld.md +85 -0
- package/docs/server.eventrouter.emitwithworld_1.md +77 -0
- package/docs/{server.eventrouter.prependon.md → server.eventrouter.final_1.md} +4 -10
- package/docs/server.eventrouter.haslisteners.md +55 -0
- package/docs/server.eventrouter.listenercount.md +55 -0
- package/docs/server.eventrouter.listeners.md +55 -0
- package/docs/server.eventrouter.md +40 -95
- package/docs/server.eventrouter.off.md +3 -3
- package/docs/{server.eventrouter.prependonce.md → server.eventrouter.off_1.md} +4 -10
- package/docs/server.eventrouter.offall.md +4 -4
- package/docs/server.eventrouter.on.md +3 -3
- package/docs/server.eventrouter.on_1.md +63 -0
- package/docs/server.eventrouter.once.md +3 -3
- package/docs/server.eventrouter.once_1.md +63 -0
- package/docs/{server.gameservereventtype.md → server.gameserverevent.md} +4 -4
- package/docs/server.gameservereventpayloads._gameserver.start_.md +15 -0
- package/docs/server.gameservereventpayloads._gameserver.stop_.md +15 -0
- package/docs/server.gameservereventpayloads.md +76 -0
- package/docs/server.light.md +7 -1
- package/docs/{server.lighteventtype.md → server.lightevent.md} +4 -18
- package/docs/server.lighteventpayloads._light.despawn_.md +15 -0
- package/docs/server.lighteventpayloads._light.set_angle_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_attached_to_entity_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_color_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_distance_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_intensity_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_offset_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_penumbra_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_position_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_tracked_entity_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_tracked_position_.md +16 -0
- package/docs/server.lighteventpayloads._light.spawn_.md +15 -0
- package/docs/server.lighteventpayloads.md +266 -0
- package/docs/server.md +201 -84
- package/docs/server.modelregistry.md +38 -0
- package/docs/server.modelregistry.optimize.md +13 -0
- package/docs/server.modelregistry.optimizeeverystart.md +13 -0
- package/docs/server.player.md +7 -1
- package/docs/server.playercamera.md +7 -1
- package/docs/{server.playercameraeventtype.md → server.playercameraevent.md} +4 -4
- package/docs/server.playercameraeventpayloads._player_camera.look_at_entity_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.look_at_position_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_entity_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_position_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_film_offset_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_forward_offset_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_fov_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_mode_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_model_hidden_nodes_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_offset_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_tracked_entity_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_tracked_position_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_zoom_.md +16 -0
- package/docs/server.playercameraeventpayloads.md +285 -0
- package/docs/{server.playereventtype.md → server.playerevent.md} +4 -4
- package/docs/server.playereventpayloads._player.chat_message_send_.md +16 -0
- package/docs/server.playereventpayloads._player.joined_world_.md +16 -0
- package/docs/server.playereventpayloads._player.left_world_.md +16 -0
- package/docs/server.playereventpayloads._player.request_sync_.md +17 -0
- package/docs/server.playereventpayloads.md +114 -0
- package/docs/server.playermanager.md +4 -0
- package/docs/server.playermanagereventpayloads._player_manager.player_connected_.md +15 -0
- package/docs/server.playermanagereventpayloads._player_manager.player_disconnected_.md +15 -0
- package/docs/server.playermanagereventpayloads.md +76 -0
- package/docs/server.playerui.md +6 -20
- package/docs/{server.playeruieventtype.md → server.playeruievent.md} +18 -4
- package/docs/server.playeruieventpayloads._player_ui.data_.md +16 -0
- package/docs/server.playeruieventpayloads._player_ui.load_.md +16 -0
- package/docs/server.playeruieventpayloads._player_ui.lock_pointer_.md +16 -0
- package/docs/server.playeruieventpayloads._player_ui.send_data_.md +16 -0
- package/docs/server.playeruieventpayloads.md +114 -0
- package/docs/server.rigidbody.md +2 -1
- package/docs/server.sceneui.md +7 -1
- package/docs/server.sceneuievent.md +131 -0
- package/docs/server.sceneuieventpayloads._scene_ui.load_.md +15 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_attached_to_entity_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_offset_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_position_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_state_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_view_distance_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.unload_.md +15 -0
- package/docs/server.sceneuieventpayloads.md +171 -0
- package/docs/server.simulation.md +6 -1
- package/docs/server.simulationevent.md +89 -0
- package/docs/server.simulationeventpayloads._simulation.debug_raycast_.md +19 -0
- package/docs/server.simulationeventpayloads._simulation.debug_render_.md +17 -0
- package/docs/server.simulationeventpayloads._simulation.step_end_.md +16 -0
- package/docs/server.simulationeventpayloads._simulation.step_start_.md +16 -0
- package/docs/server.simulationeventpayloads.md +114 -0
- package/docs/server.world.md +7 -60
- package/docs/server.worldevent.md +131 -0
- package/docs/server.worldeventpayloads._world.set_ambient_light_color_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_ambient_light_intensity_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_directional_light_color_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_directional_light_intensity_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_directional_light_position_.md +16 -0
- package/docs/server.worldeventpayloads._world.start_.md +16 -0
- package/docs/server.worldeventpayloads._world.stop_.md +16 -0
- package/docs/server.worldeventpayloads.md +171 -0
- package/docs/server.worldloop.md +6 -1
- package/docs/{server.worldloopeventtype.md → server.worldloopevent.md} +4 -4
- package/docs/server.worldloopeventpayloads._world_loop.start_.md +15 -0
- package/docs/server.worldloopeventpayloads._world_loop.stop_.md +15 -0
- package/docs/server.worldloopeventpayloads._world_loop.tick_end_.md +16 -0
- package/docs/server.worldloopeventpayloads._world_loop.tick_error_.md +16 -0
- package/docs/server.worldloopeventpayloads._world_loop.tick_start_.md +16 -0
- package/docs/server.worldloopeventpayloads.md +133 -0
- package/examples/ai-agents/index.ts +9 -13
- package/examples/ai-agents/src/BaseAgent.ts +4 -2
- package/examples/ai-agents/src/behaviors/FishingBehavior.ts +2 -2
- package/examples/ai-agents/src/behaviors/FollowBehavior.ts +3 -3
- package/examples/ai-agents/src/behaviors/MiningBehavior.ts +2 -2
- package/examples/ai-agents/src/behaviors/PathfindingBehavior.ts +7 -7
- package/examples/big-world/index.ts +5 -4
- package/examples/block-entity/index.ts +12 -10
- package/examples/child-entity/index.ts +5 -4
- package/examples/custom-ui/index.ts +9 -7
- package/examples/entity-controller/index.ts +5 -4
- package/examples/entity-spawn/index.ts +8 -6
- package/examples/hole-in-wall-game/index.ts +9 -7
- package/examples/lighting/index.ts +5 -4
- package/examples/pathfinding/index.ts +5 -4
- package/examples/payload-game/assets/models/.optimized/bullet/baseColor.png +0 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.gltf +308 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf +142 -0
- package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/payload/baseColor.png +0 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.gltf +2868 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload.gltf +1109 -0
- package/examples/payload-game/assets/models/.optimized/payload/payload.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_1.png +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_2.png +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.gltf +8572 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf +7849 -0
- package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/raygun/baseColor_1.png +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/baseColor_2.png +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.gltf +7752 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf +832 -0
- package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_1.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_2.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_3.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_4.png +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.bin +0 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf +7774 -0
- package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf.md5 +1 -0
- package/examples/payload-game/assets/models/raygun.gltf +1 -0
- package/examples/payload-game/assets/models/soldier-player.gltf +1 -0
- package/examples/payload-game/index.ts +49 -26
- package/examples/wall-dodge-game/index.ts +8 -6
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.gltf +806 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.gltf +15 -686
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.gltf +1633 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.gltf +86 -1578
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.gltf +2480 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.gltf +88 -2427
- package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.gltf +136 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole.gltf +1 -1
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.gltf +831 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.gltf +16 -706
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.gltf +4025 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.gltf +136 -3944
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.gltf +196 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.gltf +57 -28
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.gltf +3412 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.bin +0 -0
- package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.gltf +133 -3323
- package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun-named-nodes.glb +0 -0
- package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun.glb +0 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.gltf +10037 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.bin +0 -0
- package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.gltf +1262 -4533
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.bin +0 -0
- package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.gltf +529 -434
- package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.bin +0 -0
- package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.gltf +136 -0
- package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace.gltf +1 -1
- package/examples/zombies-fps/classes/EnemyEntity.ts +10 -4
- package/examples/zombies-fps/classes/GamePlayerEntity.ts +7 -2
- package/examples/zombies-fps/classes/enemies/RipperEntity.ts +2 -1
- package/examples/zombies-fps/index.ts +5 -5
- package/package.json +5 -2
- package/server.api.json +9458 -7736
- package/server.d.ts +765 -486
- package/server.js +132 -90
- package/tsdoc-metadata.json +1 -1
- package/docs/server.audioeventpayload.md +0 -118
- package/docs/server.audioeventpayload.pause.audio.md +0 -11
- package/docs/server.audioeventpayload.pause.md +0 -53
- package/docs/server.audioeventpayload.play.audio.md +0 -11
- package/docs/server.audioeventpayload.play.md +0 -53
- package/docs/server.audioeventpayload.playrestart.audio.md +0 -11
- package/docs/server.audioeventpayload.playrestart.md +0 -53
- package/docs/server.audioeventpayload.setattachedtoentity.audio.md +0 -11
- package/docs/server.audioeventpayload.setattachedtoentity.entity.md +0 -11
- package/docs/server.audioeventpayload.setattachedtoentity.md +0 -70
- package/docs/server.audioeventpayload.setdetune.audio.md +0 -11
- package/docs/server.audioeventpayload.setdetune.detune.md +0 -11
- package/docs/server.audioeventpayload.setdetune.md +0 -70
- package/docs/server.audioeventpayload.setdistortion.audio.md +0 -11
- package/docs/server.audioeventpayload.setdistortion.distortion.md +0 -11
- package/docs/server.audioeventpayload.setdistortion.md +0 -70
- package/docs/server.audioeventpayload.setplaybackrate.audio.md +0 -11
- package/docs/server.audioeventpayload.setplaybackrate.md +0 -70
- package/docs/server.audioeventpayload.setplaybackrate.playbackrate.md +0 -11
- package/docs/server.audioeventpayload.setposition.audio.md +0 -11
- package/docs/server.audioeventpayload.setposition.md +0 -70
- package/docs/server.audioeventpayload.setposition.position.md +0 -11
- package/docs/server.audioeventpayload.setreferencedistance.audio.md +0 -11
- package/docs/server.audioeventpayload.setreferencedistance.md +0 -70
- package/docs/server.audioeventpayload.setreferencedistance.referencedistance.md +0 -11
- package/docs/server.audioeventpayload.setvolume.audio.md +0 -11
- package/docs/server.audioeventpayload.setvolume.md +0 -70
- package/docs/server.audioeventpayload.setvolume.volume.md +0 -11
- package/docs/server.baseentitycontroller.onattach.md +0 -13
- package/docs/server.baseentitycontroller.ondespawn.md +0 -13
- package/docs/server.baseentitycontroller.ondetach.md +0 -13
- package/docs/server.baseentitycontroller.onspawn.md +0 -13
- package/docs/server.baseentitycontroller.ontick.md +0 -13
- package/docs/server.baseentitycontroller.ontickwithplayerinput.md +0 -13
- package/docs/server.blocktype.onentitycollision.md +0 -18
- package/docs/server.blocktype.onentitycontactforce.md +0 -18
- package/docs/server.blocktyperegistryeventpayload.md +0 -37
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktype.md +0 -11
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktyperegistry.md +0 -11
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.id.md +0 -11
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.md +0 -87
- package/docs/server.chateventpayload.md +0 -46
- package/docs/server.chateventpayload.sendbroadcastmessage.color.md +0 -11
- package/docs/server.chateventpayload.sendbroadcastmessage.md +0 -91
- package/docs/server.chateventpayload.sendbroadcastmessage.message.md +0 -11
- package/docs/server.chateventpayload.sendbroadcastmessage.playerid.md +0 -11
- package/docs/server.chateventpayload.sendplayermessage.color.md +0 -11
- package/docs/server.chateventpayload.sendplayermessage.md +0 -89
- package/docs/server.chateventpayload.sendplayermessage.message.md +0 -11
- package/docs/server.chateventpayload.sendplayermessage.player.md +0 -11
- package/docs/server.chateventtype.md +0 -61
- package/docs/server.chatmanager.onbroadcastmessage.md +0 -13
- package/docs/server.chunkeventpayload.despawn.chunk.md +0 -11
- package/docs/server.chunkeventpayload.despawn.md +0 -53
- package/docs/server.chunkeventpayload.md +0 -55
- package/docs/server.chunkeventpayload.setblock.blocktypeid.md +0 -11
- package/docs/server.chunkeventpayload.setblock.chunk.md +0 -11
- package/docs/server.chunkeventpayload.setblock.globalcoordinate.md +0 -11
- package/docs/server.chunkeventpayload.setblock.localcoordinate.md +0 -11
- package/docs/server.chunkeventpayload.setblock.md +0 -104
- package/docs/server.chunkeventpayload.spawn.chunk.md +0 -11
- package/docs/server.chunkeventpayload.spawn.md +0 -53
- package/docs/server.entity.onblockcollision.md +0 -18
- package/docs/server.entity.onblockcontactforce.md +0 -18
- package/docs/server.entity.ondespawn.md +0 -13
- package/docs/server.entity.onentitycollision.md +0 -18
- package/docs/server.entity.onentitycontactforce.md +0 -18
- package/docs/server.entity.onspawn.md +0 -13
- package/docs/server.entity.ontick.md +0 -13
- package/docs/server.entityeventpayload.despawn.entity.md +0 -11
- package/docs/server.entityeventpayload.despawn.md +0 -53
- package/docs/server.entityeventpayload.md +0 -136
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.entity.md +0 -11
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.md +0 -70
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.playbackrate.md +0 -11
- package/docs/server.entityeventpayload.setmodelhiddennodes.entity.md +0 -11
- package/docs/server.entityeventpayload.setmodelhiddennodes.md +0 -70
- package/docs/server.entityeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
- package/docs/server.entityeventpayload.setopacity.entity.md +0 -11
- package/docs/server.entityeventpayload.setopacity.md +0 -70
- package/docs/server.entityeventpayload.setopacity.opacity.md +0 -11
- package/docs/server.entityeventpayload.setparent.entity.md +0 -11
- package/docs/server.entityeventpayload.setparent.md +0 -87
- package/docs/server.entityeventpayload.setparent.parent.md +0 -11
- package/docs/server.entityeventpayload.setparent.parentnodename.md +0 -11
- package/docs/server.entityeventpayload.settintcolor.entity.md +0 -11
- package/docs/server.entityeventpayload.settintcolor.md +0 -70
- package/docs/server.entityeventpayload.settintcolor.tintcolor.md +0 -11
- package/docs/server.entityeventpayload.spawn.entity.md +0 -11
- package/docs/server.entityeventpayload.spawn.md +0 -53
- package/docs/server.entityeventpayload.startmodelloopedanimations.animations.md +0 -11
- package/docs/server.entityeventpayload.startmodelloopedanimations.entity.md +0 -11
- package/docs/server.entityeventpayload.startmodelloopedanimations.md +0 -70
- package/docs/server.entityeventpayload.startmodeloneshotanimations.animations.md +0 -11
- package/docs/server.entityeventpayload.startmodeloneshotanimations.entity.md +0 -11
- package/docs/server.entityeventpayload.startmodeloneshotanimations.md +0 -70
- package/docs/server.entityeventpayload.stopmodelanimations.animations.md +0 -11
- package/docs/server.entityeventpayload.stopmodelanimations.entity.md +0 -11
- package/docs/server.entityeventpayload.stopmodelanimations.md +0 -70
- package/docs/server.entityeventpayload.updateposition.entity.md +0 -11
- package/docs/server.entityeventpayload.updateposition.md +0 -70
- package/docs/server.entityeventpayload.updateposition.position.md +0 -11
- package/docs/server.entityeventpayload.updaterotation.entity.md +0 -11
- package/docs/server.entityeventpayload.updaterotation.md +0 -70
- package/docs/server.entityeventpayload.updaterotation.rotation.md +0 -11
- package/docs/server.eventrouter._constructor_.md +0 -49
- package/docs/server.eventrouter.logallevents.md +0 -13
- package/docs/server.eventrouter.logeventspayloads.md +0 -13
- package/docs/server.eventrouter.logignoreeventprefixes.md +0 -13
- package/docs/server.eventrouter.logignoreevents.md +0 -13
- package/docs/server.eventrouter.logunlistenedevents.md +0 -13
- package/docs/server.eventrouter.serverinstance.md +0 -13
- package/docs/server.gameservereventpayload.md +0 -46
- package/docs/server.gameservereventpayload.start.md +0 -53
- package/docs/server.gameservereventpayload.start.startedatms.md +0 -11
- package/docs/server.gameservereventpayload.stop.md +0 -53
- package/docs/server.gameservereventpayload.stop.stoppedatms.md +0 -11
- package/docs/server.lighteventpayload.despawn.light.md +0 -11
- package/docs/server.lighteventpayload.despawn.md +0 -53
- package/docs/server.lighteventpayload.md +0 -136
- package/docs/server.lighteventpayload.setangle.angle.md +0 -11
- package/docs/server.lighteventpayload.setangle.light.md +0 -11
- package/docs/server.lighteventpayload.setangle.md +0 -70
- package/docs/server.lighteventpayload.setattachedtoentity.entity.md +0 -11
- package/docs/server.lighteventpayload.setattachedtoentity.light.md +0 -11
- package/docs/server.lighteventpayload.setattachedtoentity.md +0 -70
- package/docs/server.lighteventpayload.setcolor.color.md +0 -11
- package/docs/server.lighteventpayload.setcolor.light.md +0 -11
- package/docs/server.lighteventpayload.setcolor.md +0 -70
- package/docs/server.lighteventpayload.setdistance.distance.md +0 -11
- package/docs/server.lighteventpayload.setdistance.light.md +0 -11
- package/docs/server.lighteventpayload.setdistance.md +0 -70
- package/docs/server.lighteventpayload.setintensity.intensity.md +0 -11
- package/docs/server.lighteventpayload.setintensity.light.md +0 -11
- package/docs/server.lighteventpayload.setintensity.md +0 -70
- package/docs/server.lighteventpayload.setoffset.light.md +0 -11
- package/docs/server.lighteventpayload.setoffset.md +0 -70
- package/docs/server.lighteventpayload.setoffset.offset.md +0 -11
- package/docs/server.lighteventpayload.setpenumbra.light.md +0 -11
- package/docs/server.lighteventpayload.setpenumbra.md +0 -70
- package/docs/server.lighteventpayload.setpenumbra.penumbra.md +0 -11
- package/docs/server.lighteventpayload.setposition.light.md +0 -11
- package/docs/server.lighteventpayload.setposition.md +0 -70
- package/docs/server.lighteventpayload.setposition.position.md +0 -11
- package/docs/server.lighteventpayload.settrackedentity.entity.md +0 -11
- package/docs/server.lighteventpayload.settrackedentity.light.md +0 -11
- package/docs/server.lighteventpayload.settrackedentity.md +0 -70
- package/docs/server.lighteventpayload.settrackedposition.light.md +0 -11
- package/docs/server.lighteventpayload.settrackedposition.md +0 -70
- package/docs/server.lighteventpayload.settrackedposition.position.md +0 -11
- package/docs/server.lighteventpayload.spawn.light.md +0 -11
- package/docs/server.lighteventpayload.spawn.md +0 -53
- package/docs/server.playercameraeventpayload.lookatentity.entity.md +0 -11
- package/docs/server.playercameraeventpayload.lookatentity.md +0 -70
- package/docs/server.playercameraeventpayload.lookatentity.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.lookatposition.md +0 -70
- package/docs/server.playercameraeventpayload.lookatposition.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.lookatposition.position.md +0 -11
- package/docs/server.playercameraeventpayload.md +0 -145
- package/docs/server.playercameraeventpayload.setattachedtoentity.entity.md +0 -11
- package/docs/server.playercameraeventpayload.setattachedtoentity.md +0 -70
- package/docs/server.playercameraeventpayload.setattachedtoentity.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setattachedtoposition.md +0 -70
- package/docs/server.playercameraeventpayload.setattachedtoposition.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setattachedtoposition.position.md +0 -11
- package/docs/server.playercameraeventpayload.setfilmoffset.filmoffset.md +0 -11
- package/docs/server.playercameraeventpayload.setfilmoffset.md +0 -70
- package/docs/server.playercameraeventpayload.setfilmoffset.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setforwardoffset.forwardoffset.md +0 -11
- package/docs/server.playercameraeventpayload.setforwardoffset.md +0 -70
- package/docs/server.playercameraeventpayload.setforwardoffset.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setfov.fov.md +0 -11
- package/docs/server.playercameraeventpayload.setfov.md +0 -70
- package/docs/server.playercameraeventpayload.setfov.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setmode.md +0 -70
- package/docs/server.playercameraeventpayload.setmode.mode.md +0 -11
- package/docs/server.playercameraeventpayload.setmode.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setmodelhiddennodes.md +0 -70
- package/docs/server.playercameraeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
- package/docs/server.playercameraeventpayload.setmodelhiddennodes.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setoffset.md +0 -70
- package/docs/server.playercameraeventpayload.setoffset.offset.md +0 -11
- package/docs/server.playercameraeventpayload.setoffset.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedentity.entity.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedentity.md +0 -70
- package/docs/server.playercameraeventpayload.settrackedentity.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedposition.md +0 -70
- package/docs/server.playercameraeventpayload.settrackedposition.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedposition.position.md +0 -11
- package/docs/server.playercameraeventpayload.setzoom.md +0 -70
- package/docs/server.playercameraeventpayload.setzoom.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setzoom.zoom.md +0 -11
- package/docs/server.playereventpayload.chatmessagesend.md +0 -70
- package/docs/server.playereventpayload.chatmessagesend.message.md +0 -11
- package/docs/server.playereventpayload.chatmessagesend.player.md +0 -11
- package/docs/server.playereventpayload.joinedworld.md +0 -70
- package/docs/server.playereventpayload.joinedworld.player.md +0 -11
- package/docs/server.playereventpayload.joinedworld.world.md +0 -11
- package/docs/server.playereventpayload.leftworld.md +0 -70
- package/docs/server.playereventpayload.leftworld.player.md +0 -11
- package/docs/server.playereventpayload.leftworld.world.md +0 -11
- package/docs/server.playereventpayload.md +0 -64
- package/docs/server.playereventpayload.requestsync.md +0 -87
- package/docs/server.playereventpayload.requestsync.player.md +0 -11
- package/docs/server.playereventpayload.requestsync.receivedat.md +0 -11
- package/docs/server.playereventpayload.requestsync.receivedatms.md +0 -11
- package/docs/server.playerui.ondata.md +0 -18
- package/docs/server.playeruieventpayload.load.htmluri.md +0 -11
- package/docs/server.playeruieventpayload.load.md +0 -70
- package/docs/server.playeruieventpayload.load.playerui.md +0 -11
- package/docs/server.playeruieventpayload.lockpointer.lock.md +0 -11
- package/docs/server.playeruieventpayload.lockpointer.md +0 -70
- package/docs/server.playeruieventpayload.lockpointer.playerui.md +0 -11
- package/docs/server.playeruieventpayload.md +0 -55
- package/docs/server.playeruieventpayload.senddata.data.md +0 -11
- package/docs/server.playeruieventpayload.senddata.md +0 -70
- package/docs/server.playeruieventpayload.senddata.playerui.md +0 -11
- package/docs/server.world.eventrouter.md +0 -13
- package/docs/server.world.onplayerjoin.md +0 -13
- package/docs/server.world.onplayerleave.md +0 -13
- package/docs/server.worldloopeventpayload.md +0 -73
- package/docs/server.worldloopeventpayload.start.md +0 -53
- package/docs/server.worldloopeventpayload.start.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.stop.md +0 -53
- package/docs/server.worldloopeventpayload.stop.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.tickend.md +0 -70
- package/docs/server.worldloopeventpayload.tickend.tickdurationms.md +0 -11
- package/docs/server.worldloopeventpayload.tickend.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.tickerror.error.md +0 -11
- package/docs/server.worldloopeventpayload.tickerror.md +0 -70
- package/docs/server.worldloopeventpayload.tickerror.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.tickstart.md +0 -70
- package/docs/server.worldloopeventpayload.tickstart.tickdeltams.md +0 -11
- package/docs/server.worldloopeventpayload.tickstart.worldloop.md +0 -11
@@ -26,10 +26,10 @@
|
|
26
26
|
import {
|
27
27
|
startServer,
|
28
28
|
Audio,
|
29
|
-
|
30
|
-
PlayerEntity,
|
31
|
-
World,
|
29
|
+
ChatEvent,
|
32
30
|
Player,
|
31
|
+
PlayerEntity,
|
32
|
+
PlayerEvent,
|
33
33
|
Vector3,
|
34
34
|
} from "hytopia";
|
35
35
|
|
@@ -93,7 +93,7 @@ startServer((world) => {
|
|
93
93
|
* their inputs to control their in-game entity and
|
94
94
|
* internally uses our player entity controller.
|
95
95
|
*/
|
96
|
-
world.
|
96
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
97
97
|
const playerEntity = new PlayerEntity({
|
98
98
|
player,
|
99
99
|
name: "Player",
|
@@ -126,7 +126,7 @@ startServer((world) => {
|
|
126
126
|
lastThought: agent.getLastMonologue() || "Idle",
|
127
127
|
})),
|
128
128
|
});
|
129
|
-
};
|
129
|
+
});
|
130
130
|
|
131
131
|
/**
|
132
132
|
* Handle player leaving the game. The onPlayerLeave
|
@@ -139,11 +139,11 @@ startServer((world) => {
|
|
139
139
|
* the player who left by using our world's EntityManager
|
140
140
|
* instance.
|
141
141
|
*/
|
142
|
-
world.
|
142
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
143
143
|
world.entityManager
|
144
144
|
.getPlayerEntitiesByPlayer(player)
|
145
145
|
.forEach((entity) => entity.despawn());
|
146
|
-
};
|
146
|
+
});
|
147
147
|
|
148
148
|
/**
|
149
149
|
* Play some peaceful ambient music to
|
@@ -289,11 +289,7 @@ startServer((world) => {
|
|
289
289
|
* Instead of a chat command, we can override the chat message broadcast
|
290
290
|
* to automatically respond to the player.
|
291
291
|
*/
|
292
|
-
world.chatManager.
|
293
|
-
player: Player | undefined,
|
294
|
-
message: string,
|
295
|
-
color?: string
|
296
|
-
) => {
|
292
|
+
world.chatManager.on(ChatEvent.BROADCAST_MESSAGE, ({ player, message }) => {
|
297
293
|
const agents = world.entityManager
|
298
294
|
.getAllEntities()
|
299
295
|
.filter((entity) => entity instanceof BaseAgent) as BaseAgent[];
|
@@ -346,5 +342,5 @@ startServer((world) => {
|
|
346
342
|
});
|
347
343
|
}
|
348
344
|
});
|
349
|
-
};
|
345
|
+
});
|
350
346
|
});
|
@@ -3,6 +3,7 @@
|
|
3
3
|
*/
|
4
4
|
import {
|
5
5
|
Entity,
|
6
|
+
EntityEvent,
|
6
7
|
Player,
|
7
8
|
Vector3,
|
8
9
|
World,
|
@@ -79,7 +80,7 @@ export class BaseAgent extends Entity {
|
|
79
80
|
super({
|
80
81
|
name: options.name || "BaseAgent",
|
81
82
|
modelUri: "models/players/player.gltf",
|
82
|
-
modelLoopedAnimations: ["
|
83
|
+
modelLoopedAnimations: ["idle_upper", "idle_lower"],
|
83
84
|
modelScale: 0.5,
|
84
85
|
controller: new SimpleEntityController(),
|
85
86
|
rigidBodyOptions: {
|
@@ -88,7 +89,8 @@ export class BaseAgent extends Entity {
|
|
88
89
|
},
|
89
90
|
});
|
90
91
|
|
91
|
-
this.
|
92
|
+
this.on(EntityEvent.TICK, this.onTickBehavior);
|
93
|
+
|
92
94
|
this.systemPrompt = options.systemPrompt;
|
93
95
|
this.openai = new OpenAI({
|
94
96
|
apiKey: process.env.OPENAI_API_KEY,
|
@@ -89,8 +89,8 @@ export class FishingBehavior implements AgentBehavior {
|
|
89
89
|
this.isFishing = true;
|
90
90
|
|
91
91
|
// Start fishing animation if available
|
92
|
-
agent.stopModelAnimations(["
|
93
|
-
agent.startModelLoopedAnimations(["
|
92
|
+
agent.stopModelAnimations(["walk_upper", "walk_lower", "run_upper", "run_lower"]);
|
93
|
+
agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]); // Could be replaced with a fishing animation
|
94
94
|
|
95
95
|
// Simulate fishing time
|
96
96
|
setTimeout(() => {
|
@@ -80,7 +80,7 @@ export class FollowBehavior implements AgentBehavior {
|
|
80
80
|
|
81
81
|
if (Math.abs(distance - this.followDistance) > 0.5) {
|
82
82
|
const isRunning = distance > this.runThreshold;
|
83
|
-
agent.startModelLoopedAnimations([isRunning ? "
|
83
|
+
agent.startModelLoopedAnimations([isRunning ? "run_upper" : "walk_upper", isRunning ? "run_lower" : "walk_lower"]);
|
84
84
|
|
85
85
|
const angle = Math.atan2(dz, dx);
|
86
86
|
const targetPos = new Vector3(
|
@@ -115,8 +115,8 @@ export class FollowBehavior implements AgentBehavior {
|
|
115
115
|
);
|
116
116
|
agent.controller.face(targetEntity.position, this.speed * 2);
|
117
117
|
} else {
|
118
|
-
agent.stopModelAnimations(["
|
119
|
-
agent.startModelLoopedAnimations(["
|
118
|
+
agent.stopModelAnimations(["walk_upper", "walk_lower", "run_upper", "run_lower"]);
|
119
|
+
agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
|
120
120
|
this.isJumping = false; // Reset jump state when we're close enough
|
121
121
|
}
|
122
122
|
}
|
@@ -107,8 +107,8 @@ export class MiningBehavior implements AgentBehavior {
|
|
107
107
|
this.isMining = true;
|
108
108
|
|
109
109
|
// Start mining animation if available
|
110
|
-
agent.stopModelAnimations(["
|
111
|
-
agent.startModelLoopedAnimations(["
|
110
|
+
agent.stopModelAnimations(["walk_upper", "walk_lower", "run_upper", "run_lower"]);
|
111
|
+
agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]); // Could be replaced with mining animation
|
112
112
|
|
113
113
|
// Simulate mining time
|
114
114
|
setTimeout(() => {
|
@@ -48,8 +48,8 @@ export class PathfindingBehavior implements AgentBehavior {
|
|
48
48
|
).distance(finalPoint);
|
49
49
|
|
50
50
|
if (distanceToFinal < 3) {
|
51
|
-
agent.stopModelAnimations(["
|
52
|
-
agent.startModelLoopedAnimations(["
|
51
|
+
agent.stopModelAnimations(["walk_upper", "walk_lower"]);
|
52
|
+
agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
|
53
53
|
if (this.targetEntity) {
|
54
54
|
agent.controller.face(
|
55
55
|
this.targetEntity.position,
|
@@ -75,8 +75,8 @@ export class PathfindingBehavior implements AgentBehavior {
|
|
75
75
|
this.targetEntity.position,
|
76
76
|
this.moveSpeed * 2
|
77
77
|
);
|
78
|
-
agent.stopModelAnimations(["
|
79
|
-
agent.startModelLoopedAnimations(["
|
78
|
+
agent.stopModelAnimations(["walk_upper", "walk_lower"]);
|
79
|
+
agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
|
80
80
|
|
81
81
|
this.targetEntity = undefined;
|
82
82
|
}
|
@@ -111,15 +111,15 @@ export class PathfindingBehavior implements AgentBehavior {
|
|
111
111
|
moveIgnoreAxes: yDiff >= 0 ? { y: true } : undefined,
|
112
112
|
});
|
113
113
|
agent.controller.face(nextPoint, this.moveSpeed * 2);
|
114
|
-
agent.startModelLoopedAnimations(["
|
114
|
+
agent.startModelLoopedAnimations(["walk_upper", "walk_lower"]);
|
115
115
|
}
|
116
116
|
} else if (this.path.length > 0) {
|
117
117
|
this.path = [];
|
118
118
|
this.currentPathIndex = 0;
|
119
119
|
this.isJumping = false;
|
120
120
|
this.jumpCooldown = 0;
|
121
|
-
agent.stopModelAnimations(["
|
122
|
-
agent.startModelLoopedAnimations(["
|
121
|
+
agent.stopModelAnimations(["walk_upper", "walk_lower"]);
|
122
|
+
agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
|
123
123
|
}
|
124
124
|
}
|
125
125
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import {
|
2
2
|
startServer,
|
3
3
|
PlayerEntity,
|
4
|
+
PlayerEvent,
|
4
5
|
} from 'hytopia';
|
5
6
|
|
6
7
|
import worldMap from './assets/map.json';
|
@@ -22,7 +23,7 @@ startServer(world => {
|
|
22
23
|
world.loadMap(worldMap);
|
23
24
|
|
24
25
|
// Spawn a player entity when a player joins the game.
|
25
|
-
world.
|
26
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
26
27
|
const playerEntity = new PlayerEntity({
|
27
28
|
player,
|
28
29
|
name: 'Player',
|
@@ -32,10 +33,10 @@ startServer(world => {
|
|
32
33
|
});
|
33
34
|
|
34
35
|
playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
|
35
|
-
};
|
36
|
+
});
|
36
37
|
|
37
38
|
// Despawn all player entities when a player leaves the game.
|
38
|
-
world.
|
39
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
39
40
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
40
|
-
};
|
41
|
+
});
|
41
42
|
});
|
@@ -2,7 +2,9 @@ import {
|
|
2
2
|
startServer,
|
3
3
|
ColliderShape,
|
4
4
|
PlayerEntity,
|
5
|
+
PlayerEvent,
|
5
6
|
Entity,
|
7
|
+
EntityEvent,
|
6
8
|
RigidBodyType,
|
7
9
|
GameServer,
|
8
10
|
SimpleEntityController,
|
@@ -17,7 +19,7 @@ startServer(world => {
|
|
17
19
|
// world.simulation.enableDebugRendering(true);
|
18
20
|
|
19
21
|
world.loadMap(worldMap);
|
20
|
-
world.
|
22
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
21
23
|
const playerEntity = new PlayerEntity({
|
22
24
|
player,
|
23
25
|
name: 'Player',
|
@@ -27,11 +29,11 @@ startServer(world => {
|
|
27
29
|
});
|
28
30
|
|
29
31
|
playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
|
30
|
-
};
|
32
|
+
});
|
31
33
|
|
32
|
-
world.
|
34
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
33
35
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
34
|
-
};
|
36
|
+
});
|
35
37
|
|
36
38
|
/**
|
37
39
|
* Spawn a block entity as a moving platform
|
@@ -46,7 +48,7 @@ startServer(world => {
|
|
46
48
|
});
|
47
49
|
|
48
50
|
// Clamp the z range the platform moves back and forth between
|
49
|
-
blockPlatform.
|
51
|
+
blockPlatform.on(EntityEvent.TICK, () => {
|
50
52
|
const position = blockPlatform.position;
|
51
53
|
|
52
54
|
if (position.z < -9) {
|
@@ -56,7 +58,7 @@ startServer(world => {
|
|
56
58
|
if (position.z > 8) {
|
57
59
|
blockPlatform.setLinearVelocity({ x: 0, y: 0, z: -3 });
|
58
60
|
}
|
59
|
-
};
|
61
|
+
});
|
60
62
|
|
61
63
|
blockPlatform.spawn(world, { x: 3, y: 3, z: -7 });
|
62
64
|
|
@@ -87,11 +89,11 @@ startServer(world => {
|
|
87
89
|
blockHalfExtents: { x: 0.5, y: 0.5, z: 0.5 },
|
88
90
|
});
|
89
91
|
|
90
|
-
movableBlock.
|
92
|
+
movableBlock.on(EntityEvent.ENTITY_COLLISION, ({ started }) => {
|
91
93
|
if (started) {
|
92
94
|
world.chatManager.sendBroadcastMessage('The sand block was pushed!');
|
93
95
|
}
|
94
|
-
};
|
96
|
+
});
|
95
97
|
|
96
98
|
movableBlock.spawn(world, { x: -4, y: 10, z: -6 });
|
97
99
|
|
@@ -149,7 +151,7 @@ startServer(world => {
|
|
149
151
|
|
150
152
|
// Simple pathfinding
|
151
153
|
let pathfindAccumulator = 0;
|
152
|
-
blockPet.
|
154
|
+
blockPet.on(EntityEvent.TICK, ({ tickDeltaMs }) => {
|
153
155
|
pathfindAccumulator += tickDeltaMs;
|
154
156
|
|
155
157
|
if (pathfindAccumulator > 3000) { // only pathfind every 3 seconds so we don't do unecessary pathfinding
|
@@ -172,5 +174,5 @@ startServer(world => {
|
|
172
174
|
blockPetEntityController.move(targetPosition, 3);
|
173
175
|
blockPetEntityController.face(targetPosition, 1);
|
174
176
|
}
|
175
|
-
};
|
177
|
+
});
|
176
178
|
});
|
@@ -2,6 +2,7 @@ import {
|
|
2
2
|
startServer,
|
3
3
|
Entity,
|
4
4
|
PlayerEntity,
|
5
|
+
PlayerEvent,
|
5
6
|
Quaternion,
|
6
7
|
} from 'hytopia';
|
7
8
|
|
@@ -11,7 +12,7 @@ startServer(world => {
|
|
11
12
|
world.loadMap(worldMap);
|
12
13
|
|
13
14
|
// Spawn a player entity when a player joins the game.
|
14
|
-
world.
|
15
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
15
16
|
const playerEntity = new PlayerEntity({
|
16
17
|
player,
|
17
18
|
name: 'Player',
|
@@ -35,9 +36,9 @@ startServer(world => {
|
|
35
36
|
{ x: 0, y: 0.3, z: 0.5 }, // spawn with a position relative to the parent node
|
36
37
|
Quaternion.fromEuler(-90, 0, 90), // spawn with a rotation so it looks correct in the hand
|
37
38
|
);
|
38
|
-
};
|
39
|
+
});
|
39
40
|
|
40
|
-
world.
|
41
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
41
42
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
42
|
-
};
|
43
|
+
});
|
43
44
|
});
|
@@ -3,7 +3,8 @@ import {
|
|
3
3
|
Audio,
|
4
4
|
Player,
|
5
5
|
PlayerEntity,
|
6
|
-
|
6
|
+
PlayerEvent,
|
7
|
+
PlayerUIEvent,
|
7
8
|
} from 'hytopia';
|
8
9
|
|
9
10
|
import worldMap from './assets/map.json';
|
@@ -14,7 +15,7 @@ const playerEntityMap = new Map<Player, PlayerEntity>();
|
|
14
15
|
startServer(world => {
|
15
16
|
world.loadMap(worldMap);
|
16
17
|
|
17
|
-
world.
|
18
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
18
19
|
// Load the UI for the player.
|
19
20
|
// This is loaded directly into a sandboxed iframe
|
20
21
|
// overlaying the game. As long as it's an HTML file,
|
@@ -39,7 +40,8 @@ startServer(world => {
|
|
39
40
|
|
40
41
|
// Handle data sent from player to server by client UI interactions we define.
|
41
42
|
// See the ui/index.html file for the UI code that sends the data.
|
42
|
-
player.ui.
|
43
|
+
player.ui.on(PlayerUIEvent.DATA, ({ playerUI, data }) => {
|
44
|
+
console.log('data', data);
|
43
45
|
if (data.type === 'teleport') {
|
44
46
|
const randomX = Math.random() * 40 - 20; // Random between -20 and 20
|
45
47
|
const randomY = Math.random() * 13 + 2; // Random between 2 and 15
|
@@ -47,14 +49,14 @@ startServer(world => {
|
|
47
49
|
|
48
50
|
playerEntity.setPosition({ x: randomX, y: randomY, z: randomZ });
|
49
51
|
}
|
50
|
-
};
|
51
|
-
};
|
52
|
+
});
|
53
|
+
});
|
52
54
|
|
53
|
-
world.
|
55
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
54
56
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
55
57
|
// Remove the player entity from our map for our list.
|
56
58
|
playerEntityMap.delete(player);
|
57
|
-
};
|
59
|
+
});
|
58
60
|
|
59
61
|
// Update the player list every 1 second, no need to send too frequently.
|
60
62
|
// We want to balance not sending too much UI data too frequently, because
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import {
|
2
2
|
startServer,
|
3
3
|
PlayerEntity,
|
4
|
+
PlayerEvent,
|
4
5
|
} from 'hytopia';
|
5
6
|
|
6
7
|
import MyEntityController from './MyEntityController';
|
@@ -17,7 +18,7 @@ startServer(world => {
|
|
17
18
|
|
18
19
|
world.loadMap(worldMap);
|
19
20
|
|
20
|
-
world.
|
21
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
21
22
|
const playerEntity = new PlayerEntity({
|
22
23
|
player,
|
23
24
|
name: 'Player',
|
@@ -30,9 +31,9 @@ startServer(world => {
|
|
30
31
|
playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
|
31
32
|
console.log('Spawned player entity!');
|
32
33
|
|
33
|
-
};
|
34
|
+
});
|
34
35
|
|
35
|
-
world.
|
36
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
36
37
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
37
|
-
};
|
38
|
+
});
|
38
39
|
});
|
@@ -2,7 +2,9 @@ import {
|
|
2
2
|
startServer,
|
3
3
|
ColliderShape,
|
4
4
|
Entity,
|
5
|
+
EntityEvent,
|
5
6
|
PlayerEntity,
|
7
|
+
PlayerEvent,
|
6
8
|
RigidBodyType,
|
7
9
|
World,
|
8
10
|
Collider,
|
@@ -49,9 +51,9 @@ startServer(world => {
|
|
49
51
|
});
|
50
52
|
|
51
53
|
// A simple collision callback that logs when the spider collides with another Entity.
|
52
|
-
spider.
|
54
|
+
spider.on(EntityEvent.ENTITY_COLLISION, ({ otherEntity, started }) => {
|
53
55
|
console.log('spider colliding with', otherEntity.name, started);
|
54
|
-
};
|
56
|
+
});
|
55
57
|
|
56
58
|
spider.spawn(world, { x: 15, y: 10, z: 0 });
|
57
59
|
});
|
@@ -66,7 +68,7 @@ function setup(world: World) {
|
|
66
68
|
world.loadMap(worldMap);
|
67
69
|
|
68
70
|
// Spawn a player entity when a player joins the game.
|
69
|
-
world.
|
71
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
70
72
|
const playerEntity = new PlayerEntity({
|
71
73
|
player,
|
72
74
|
name: 'Player',
|
@@ -76,10 +78,10 @@ function setup(world: World) {
|
|
76
78
|
});
|
77
79
|
|
78
80
|
playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
|
79
|
-
};
|
81
|
+
});
|
80
82
|
|
81
83
|
// Despawn all player entities when a player leaves the game.
|
82
|
-
world.
|
84
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
83
85
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
84
|
-
};
|
86
|
+
});
|
85
87
|
}
|
@@ -4,11 +4,13 @@ import {
|
|
4
4
|
Collider,
|
5
5
|
ColliderShape,
|
6
6
|
Entity,
|
7
|
+
EntityEvent,
|
7
8
|
GameServer,
|
8
9
|
RigidBodyType,
|
9
10
|
startServer,
|
10
11
|
Player,
|
11
12
|
PlayerEntity,
|
13
|
+
PlayerEvent,
|
12
14
|
SceneUI,
|
13
15
|
World,
|
14
16
|
CollisionGroup,
|
@@ -57,7 +59,7 @@ const GAME_PLAYER_ENTITIES = new Set<PlayerEntity>();
|
|
57
59
|
let gameLevel = 1;
|
58
60
|
let gameState: 'awaitingPlayers' | 'starting' | 'inProgress' = 'awaitingPlayers';
|
59
61
|
let gameCountdownStartTime: number | null = null;
|
60
|
-
let gameInterval: NodeJS.
|
62
|
+
let gameInterval: NodeJS.Timeout;
|
61
63
|
let gameStartTime: number | null = null;
|
62
64
|
let gameUiState: object = {};
|
63
65
|
|
@@ -76,8 +78,8 @@ const gameInactiveAudio = new Audio({
|
|
76
78
|
|
77
79
|
startServer(world => {
|
78
80
|
world.loadMap(worldMap);
|
79
|
-
world.
|
80
|
-
world.
|
81
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => onPlayerJoin(world, player));
|
82
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => onPlayerLeave(world, player));
|
81
83
|
|
82
84
|
spawnJoinNpc(world);
|
83
85
|
gameInactiveAudio.play(world);
|
@@ -107,11 +109,11 @@ function onPlayerJoin(world: World, player: Player) {
|
|
107
109
|
collidesWith: [CollisionGroup.BLOCK, GAME_CONFIG.WALL_COLLISION_GROUP],
|
108
110
|
});
|
109
111
|
|
110
|
-
playerEntity.
|
112
|
+
playerEntity.on(EntityEvent.TICK, () => {
|
111
113
|
if (playerEntity.position.y < 5) {
|
112
114
|
killPlayer(playerEntity);
|
113
115
|
}
|
114
|
-
}
|
116
|
+
});
|
115
117
|
}
|
116
118
|
|
117
119
|
function onPlayerLeave(world: World, player: Player) {
|
@@ -343,7 +345,7 @@ function generateWall(world: World, direction: GameWallDirection, speedModifier:
|
|
343
345
|
z: GAME_CONFIG.WALL_VELOCITIES[direction].z * speedModifier,
|
344
346
|
});
|
345
347
|
|
346
|
-
wallSegment.
|
348
|
+
wallSegment.on(EntityEvent.TICK, () => {
|
347
349
|
if (!wallSegment.isSpawned) return;
|
348
350
|
const position = wallSegment.position;
|
349
351
|
|
@@ -357,7 +359,7 @@ function generateWall(world: World, direction: GameWallDirection, speedModifier:
|
|
357
359
|
}
|
358
360
|
}, 1000);
|
359
361
|
}
|
360
|
-
}
|
362
|
+
});
|
361
363
|
}
|
362
364
|
}
|
363
365
|
}
|
@@ -4,6 +4,7 @@ import {
|
|
4
4
|
Light,
|
5
5
|
LightType,
|
6
6
|
PlayerEntity,
|
7
|
+
PlayerEvent,
|
7
8
|
} from 'hytopia';
|
8
9
|
|
9
10
|
import worldMap from './assets/map.json';
|
@@ -83,7 +84,7 @@ startServer(world => {
|
|
83
84
|
|
84
85
|
|
85
86
|
// Spawn a player entity when a player joins the game.
|
86
|
-
world.
|
87
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
87
88
|
const playerEntity = new PlayerEntity({
|
88
89
|
player,
|
89
90
|
name: 'Player',
|
@@ -105,12 +106,12 @@ startServer(world => {
|
|
105
106
|
penumbra: 1,
|
106
107
|
trackedEntity: playerEntity,
|
107
108
|
})).spawn(world);
|
108
|
-
};
|
109
|
+
});
|
109
110
|
|
110
111
|
// Despawn all player entities when a player leaves the game.
|
111
|
-
world.
|
112
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
112
113
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
113
|
-
};
|
114
|
+
});
|
114
115
|
|
115
116
|
// Play some music on game start
|
116
117
|
(new Audio({
|
@@ -3,6 +3,7 @@ import {
|
|
3
3
|
Entity,
|
4
4
|
PathfindingEntityController,
|
5
5
|
PlayerEntity,
|
6
|
+
PlayerEvent,
|
6
7
|
Quaternion,
|
7
8
|
RigidBodyType,
|
8
9
|
ColliderShape,
|
@@ -92,7 +93,7 @@ startServer(world => {
|
|
92
93
|
});
|
93
94
|
|
94
95
|
// Spawn a player entity when a player joins the game.
|
95
|
-
world.
|
96
|
+
world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
|
96
97
|
const playerEntity = new PlayerEntity({
|
97
98
|
player,
|
98
99
|
name: 'Player',
|
@@ -104,10 +105,10 @@ startServer(world => {
|
|
104
105
|
world.chatManager.sendPlayerMessage(player, 'To make the zombie pathfind to you, enter: /pathfind', '00FF00');
|
105
106
|
|
106
107
|
playerEntity.spawn(world, { x: 4, y: 3, z: 1 });
|
107
|
-
};
|
108
|
+
});
|
108
109
|
|
109
110
|
// Despawn all player entities when a player leaves the game.
|
110
|
-
world.
|
111
|
+
world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
|
111
112
|
world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
|
112
|
-
};
|
113
|
+
});
|
113
114
|
});
|