@woosh/meep-engine 2.138.18 → 2.138.20
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 +2 -2
- package/build/bundle-worker-image-decoder.js +1 -1
- package/editor/actions/concrete/ActionUpdateTexture.d.ts +12 -0
- package/editor/actions/concrete/ActionUpdateTexture.d.ts.map +1 -0
- package/editor/actions/concrete/ArrayCopyAction.d.ts +20 -0
- package/editor/actions/concrete/ArrayCopyAction.d.ts.map +1 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts +11 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts +47 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts.map +1 -0
- package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts +38 -0
- package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts.map +1 -0
- package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts +23 -0
- package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts.map +1 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +19 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -0
- package/editor/actions/concrete/SelectionRemoveAction.d.ts +10 -0
- package/editor/actions/concrete/SelectionRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/WriteGridValueAction.d.ts +15 -0
- package/editor/actions/concrete/WriteGridValueAction.d.ts.map +1 -0
- package/editor/ecs/component/FieldDescriptor.d.ts +27 -0
- package/editor/ecs/component/FieldDescriptor.d.ts.map +1 -0
- package/editor/ecs/component/FieldValueAdapter.d.ts +7 -0
- package/editor/ecs/component/FieldValueAdapter.d.ts.map +1 -0
- package/editor/ecs/component/createFieldEditor.d.ts +9 -0
- package/editor/ecs/component/createFieldEditor.d.ts.map +1 -0
- package/editor/ecs/component/createObjectEditor.d.ts +14 -0
- package/editor/ecs/component/createObjectEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts.map +1 -1
- package/editor/ecs/component/findNearestRegisteredType.d.ts +8 -0
- package/editor/ecs/component/findNearestRegisteredType.d.ts.map +1 -0
- package/editor/process/ObstacleGridDisplayProcess.d.ts.map +1 -1
- package/editor/process/symbolic/makeGridPositionSymbolDisplay.d.ts.map +1 -1
- package/editor/tools/GridPaintTool.d.ts +17 -0
- package/editor/tools/GridPaintTool.d.ts.map +1 -0
- package/editor/tools/SelectionTool.d.ts +27 -0
- package/editor/tools/SelectionTool.d.ts.map +1 -0
- package/editor/tools/TopDownCameraControlTool.d.ts +13 -0
- package/editor/tools/TopDownCameraControlTool.d.ts.map +1 -0
- package/editor/view/ecs/ComponentControlFactory.d.ts.map +1 -0
- package/editor/view/ecs/ComponentControlView.d.ts.map +1 -1
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -0
- package/editor/view/ecs/EntityList.d.ts.map +1 -0
- package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -0
- package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeView.d.ts.map +1 -1
- package/editor/view/node-graph/PortView.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/core/binary/BinaryBuffer.d.ts +1 -1
- package/src/core/binary/BinaryBuffer.js +1 -1
- package/src/core/binary/BitSet.d.ts +1 -1
- package/src/core/binary/BitSet.js +1 -1
- package/src/core/cache/Cache.js +1 -1
- package/src/core/cache/LoadingCache.js +1 -1
- package/src/core/collection/list/List.js +1 -1
- package/src/core/collection/map/HashMap.js +1 -1
- package/src/core/collection/table/RowFirstTable.d.ts +1 -1
- package/src/core/collection/table/RowFirstTable.js +1 -1
- package/src/core/collection/table/RowFirstTableSpec.d.ts +1 -1
- package/src/core/collection/table/RowFirstTableSpec.js +1 -1
- package/src/core/color/oklab/compute_max_saturation.d.ts +1 -1
- package/src/core/color/oklab/compute_max_saturation.js +1 -1
- package/src/core/color/oklab/find_cusp.d.ts +1 -1
- package/src/core/color/oklab/find_cusp.js +1 -1
- package/src/core/color/oklab/find_gamut_intersection.d.ts +1 -1
- package/src/core/color/oklab/find_gamut_intersection.js +1 -1
- package/src/core/color/oklab/okhsv_to_linear_srgb.d.ts +1 -1
- package/src/core/color/oklab/okhsv_to_linear_srgb.js +1 -1
- package/src/core/color/oklab/oklab_to_linear_srgb.d.ts +1 -1
- package/src/core/color/oklab/oklab_to_linear_srgb.js +1 -1
- package/src/core/color/oklab/oklab_to_xyz.d.ts +1 -1
- package/src/core/color/oklab/oklab_to_xyz.js +1 -1
- package/src/core/color/oklab/xyz_to_oklab.d.ts +1 -1
- package/src/core/color/oklab/xyz_to_oklab.js +1 -1
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.d.ts +1 -1
- package/src/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +1 -1
- package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_nearest_point_on_surface.js +57 -65
- package/src/core/geom/3d/octahedra/octahedral_uv_wrap.d.ts +1 -1
- package/src/core/geom/3d/octahedra/octahedral_uv_wrap.js +1 -1
- package/src/core/geom/3d/quaternion/quat_decode_from_uint32.d.ts +1 -1
- package/src/core/geom/3d/quaternion/quat_decode_from_uint32.js +1 -1
- package/src/core/geom/3d/quaternion/quat_encode_to_uint32.d.ts +1 -1
- package/src/core/geom/3d/quaternion/quat_encode_to_uint32.js +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +74 -3
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +37 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/CapsuleShape3D.js +210 -0
- package/src/core/geom/3d/shape/PointShape3D.d.ts +5 -0
- package/src/core/geom/3d/shape/PointShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PointShape3D.js +52 -14
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts +75 -12
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +12 -3
- package/src/core/geom/3d/shape/UnionShape3D.d.ts +47 -5
- package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts +12 -5
- package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts +17 -5
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/json/shape_to_type.d.ts.map +1 -1
- package/src/core/geom/3d/shape/json/shape_to_type.js +4 -1
- package/src/core/geom/3d/shape/json/type_adapters.d.ts +17 -2
- package/src/core/geom/3d/shape/json/type_adapters.d.ts.map +1 -1
- package/src/core/geom/3d/shape/json/type_adapters.js +18 -2
- package/src/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.d.ts.map +1 -1
- package/src/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.js +51 -48
- package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.d.ts +1 -1
- package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +1 -1
- package/src/core/geom/ConicRay.d.ts +1 -1
- package/src/core/geom/ConicRay.js +1 -1
- package/src/core/geom/Quaternion.d.ts +2 -2
- package/src/core/geom/Quaternion.js +2 -2
- package/src/core/geom/Vector1.d.ts +1 -1
- package/src/core/geom/Vector1.js +1 -1
- package/src/core/geom/Vector2.d.ts +1 -1
- package/src/core/geom/Vector2.js +1 -1
- package/src/core/geom/Vector3.d.ts +1 -1
- package/src/core/geom/Vector3.js +1 -1
- package/src/core/geom/packing/miniball/Miniball.d.ts +1 -1
- package/src/core/geom/packing/miniball/Miniball.js +1 -1
- package/src/core/geom/vec3/serialization/v3_binary_equality_decode.d.ts +1 -1
- package/src/core/geom/vec3/serialization/v3_binary_equality_decode.js +1 -1
- package/src/core/geom/vec3/serialization/v3_binary_equality_encode.d.ts +1 -1
- package/src/core/geom/vec3/serialization/v3_binary_equality_encode.js +1 -1
- package/src/core/math/spline/spline3_hermite.d.ts +1 -1
- package/src/core/math/spline/spline3_hermite.js +1 -1
- package/src/core/math/spline/spline3_hermite_bounds.d.ts +1 -1
- package/src/core/math/spline/spline3_hermite_bounds.js +1 -1
- package/src/core/math/spline/spline3_hermite_bounds_t.d.ts +1 -1
- package/src/core/math/spline/spline3_hermite_bounds_t.js +1 -1
- package/src/core/math/spline/spline3_hermite_to_monomial.d.ts +1 -1
- package/src/core/math/spline/spline3_hermite_to_monomial.js +1 -1
- package/src/core/model/ObservedBoolean.d.ts +1 -1
- package/src/core/model/ObservedBoolean.js +1 -1
- package/src/core/model/ObservedString.d.ts +1 -1
- package/src/core/model/ObservedString.js +1 -1
- package/src/core/process/undo/Action.js +1 -1
- package/src/core/process/undo/ActionProcessor.js +1 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +3 -4
- package/src/engine/animation/curve/AnimationCurve.d.ts +1 -1
- package/src/engine/animation/curve/AnimationCurve.js +1 -1
- package/src/engine/animation/curve/Keyframe.d.ts +1 -1
- package/src/engine/animation/curve/Keyframe.js +1 -1
- package/src/engine/animation/curve/animation_curve_compute_aabb.d.ts +1 -1
- package/src/engine/animation/curve/animation_curve_compute_aabb.js +1 -1
- package/src/engine/animation/curve/animation_curve_optimize.d.ts +1 -1
- package/src/engine/animation/curve/animation_curve_optimize.js +2 -2
- package/src/engine/asset/loaders/image/jpeg/JpegImage.js +1 -1
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/PNGReader.js +27 -7
- package/src/engine/asset/loaders/image/png/crc32.d.ts +1 -1
- package/src/engine/asset/loaders/image/png/crc32.js +1 -1
- package/src/engine/control/first-person/DESIGN.md +616 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +229 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -0
- package/src/engine/control/first-person/FirstPersonPlayerController.js +176 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +251 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +205 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +151 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +799 -0
- package/src/engine/control/first-person/math/computeJumpFromApex.d.ts +23 -0
- package/src/engine/control/first-person/math/computeJumpFromApex.d.ts.map +1 -0
- package/src/engine/control/first-person/math/computeJumpFromApex.js +23 -0
- package/src/engine/control/first-person/math/criticallyDampedSpring.d.ts +23 -0
- package/src/engine/control/first-person/math/criticallyDampedSpring.d.ts.map +1 -0
- package/src/engine/control/first-person/math/criticallyDampedSpring.js +34 -0
- package/src/engine/control/first-person/math/dampedSpringStep.d.ts +23 -0
- package/src/engine/control/first-person/math/dampedSpringStep.d.ts.map +1 -0
- package/src/engine/control/first-person/math/dampedSpringStep.js +72 -0
- package/src/engine/control/first-person/math/stepTowards.d.ts +12 -0
- package/src/engine/control/first-person/math/stepTowards.d.ts.map +1 -0
- package/src/engine/control/first-person/math/stepTowards.js +20 -0
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts +69 -0
- package/src/engine/control/first-person/pose/FirstPersonPose.d.ts.map +1 -0
- package/src/engine/control/first-person/pose/FirstPersonPose.js +91 -0
- package/src/engine/control/first-person/prototype_first_person_controller.d.ts +2 -0
- package/src/engine/control/first-person/prototype_first_person_controller.d.ts.map +1 -0
- package/src/engine/control/first-person/prototype_first_person_controller.js +314 -0
- package/src/engine/ecs/Entity.js +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +1 -1
- package/src/engine/ecs/EntityManager.d.ts +3 -3
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +14 -9
- package/src/engine/ecs/EntityObserver.js +1 -1
- package/src/engine/ecs/EntityReference.d.ts +1 -1
- package/src/engine/ecs/EntityReference.js +1 -1
- package/src/engine/ecs/System.d.ts.map +1 -1
- package/src/engine/ecs/System.js +3 -3
- package/src/engine/ecs/attachment/AttachmentSystem.d.ts +2 -2
- package/src/engine/ecs/attachment/AttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/guid/UUID.d.ts +1 -1
- package/src/engine/ecs/guid/UUID.js +1 -1
- package/src/engine/ecs/name/Name.d.ts +1 -1
- package/src/engine/ecs/name/Name.js +1 -1
- package/src/engine/ecs/parent/ParentEntity.js +1 -1
- package/src/engine/ecs/storage/BinaryBufferDeSerializer.d.ts +1 -1
- package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +1 -1
- package/src/engine/ecs/storage/BinaryBufferSerializer.d.ts +1 -1
- package/src/engine/ecs/storage/BinaryBufferSerializer.js +1 -1
- package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.js +1 -1
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts +1 -1
- package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +1 -1
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts +1 -1
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.js +1 -1
- package/src/engine/ecs/transform/Transform.d.ts +1 -1
- package/src/engine/ecs/transform/Transform.js +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +10 -1
- package/src/engine/graphics/impostors/voxel/README.md +149 -0
- package/src/engine/graphics/impostors/voxel/VoxelImpostorBaker.d.ts +91 -0
- package/src/engine/graphics/impostors/voxel/VoxelImpostorBaker.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/VoxelImpostorBaker.js +376 -0
- package/src/engine/graphics/impostors/voxel/VoxelImpostorDescription.d.ts +128 -0
- package/src/engine/graphics/impostors/voxel/VoxelImpostorDescription.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/VoxelImpostorDescription.js +141 -0
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts +38 -0
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +338 -0
- package/src/engine/graphics/impostors/voxel/bake/voxelize_samples.d.ts +43 -0
- package/src/engine/graphics/impostors/voxel/bake/voxelize_samples.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/bake/voxelize_samples.js +192 -0
- package/src/engine/graphics/impostors/voxel/prototype_voxel_impostors.d.ts +2 -0
- package/src/engine/graphics/impostors/voxel/prototype_voxel_impostors.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/prototype_voxel_impostors.js +343 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts +13 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +99 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts +19 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +231 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts +5 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +70 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts +13 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +127 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts +5 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +68 -0
- package/src/engine/graphics/impostors/voxel/util/make_voxel_impostor_geometry.d.ts +27 -0
- package/src/engine/graphics/impostors/voxel/util/make_voxel_impostor_geometry.d.ts.map +1 -0
- package/src/engine/graphics/impostors/voxel/util/make_voxel_impostor_geometry.js +96 -0
- package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +113 -29
- package/src/engine/graphics/render/forward_plus/SPECIFICATION.md +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +1 -1
- package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_NaiveFlood.d.ts +1 -1
- package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_NaiveFlood.js +1 -1
- package/src/engine/graphics/util/build_max_height_pyramid.d.ts.map +1 -1
- package/src/engine/graphics/util/build_max_height_pyramid.js +1 -7
- package/src/engine/input/devices/InputDeviceSwitch.js +1 -1
- package/src/engine/input/devices/KeyboardDevice.js +1 -1
- package/src/engine/input/devices/PointerDevice.js +1 -1
- package/src/engine/intelligence/behavior/Behavior.js +1 -1
- package/src/engine/intelligence/behavior/SelectorBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/SelectorBehavior.js +1 -1
- package/src/engine/intelligence/behavior/behavior_to_dot.d.ts +1 -1
- package/src/engine/intelligence/behavior/behavior_to_dot.js +1 -1
- package/src/engine/intelligence/behavior/composite/CompositeBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/composite/CompositeBehavior.js +1 -1
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.js +1 -1
- package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/composite/SequenceBehavior.js +1 -1
- package/src/engine/intelligence/behavior/decorator/AbstractDecoratorBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/decorator/AbstractDecoratorBehavior.js +1 -1
- package/src/engine/intelligence/behavior/decorator/IgnoreFailureBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/decorator/IgnoreFailureBehavior.js +1 -1
- package/src/engine/intelligence/behavior/decorator/InvertStatusBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/decorator/InvertStatusBehavior.js +1 -1
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/decorator/RepeatBehavior.js +1 -1
- package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.js +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorSystem.js +1 -1
- package/src/engine/intelligence/behavior/ecs/DieBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/DieBehavior.js +1 -1
- package/src/engine/intelligence/behavior/ecs/EntityBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/EntityBehavior.js +1 -1
- package/src/engine/intelligence/behavior/ecs/KillBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/KillBehavior.js +1 -1
- package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/SendEventBehavior.js +1 -1
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js +1 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +1 -1
- package/src/engine/intelligence/behavior/primitive/FailingBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/primitive/FailingBehavior.js +1 -1
- package/src/engine/intelligence/behavior/primitive/PromiseBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/primitive/PromiseBehavior.js +1 -1
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/primitive/SucceedingBehavior.js +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedElement.d.ts +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedElement.js +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +1 -1
- package/src/engine/intelligence/behavior/util/BranchBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/util/BranchBehavior.js +1 -1
- package/src/engine/intelligence/behavior/util/DelayBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/util/DelayBehavior.js +1 -1
- package/src/engine/intelligence/behavior/util/LogMessageBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/util/LogMessageBehavior.js +1 -1
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts +1 -1
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +1 -1
- package/src/engine/intelligence/blackboard/Blackboard.js +1 -1
- package/src/engine/intelligence/mcts/MonteCarlo.d.ts +1 -1
- package/src/engine/intelligence/mcts/MonteCarlo.js +1 -1
- package/src/engine/intelligence/mcts/MoveEdge.d.ts +1 -1
- package/src/engine/intelligence/mcts/MoveEdge.js +1 -1
- package/src/engine/intelligence/mcts/StateNode.d.ts +1 -1
- package/src/engine/intelligence/mcts/StateNode.js +1 -1
- package/src/engine/intelligence/resource/ActionSequence.d.ts +1 -1
- package/src/engine/intelligence/resource/ActionSequence.js +1 -1
- package/src/engine/intelligence/resource/Resource.d.ts +1 -1
- package/src/engine/intelligence/resource/Resource.js +1 -1
- package/src/engine/intelligence/resource/ResourceAllocation.d.ts +1 -1
- package/src/engine/intelligence/resource/ResourceAllocation.js +1 -1
- package/src/engine/intelligence/resource/ResourceAllocationBid.d.ts +1 -1
- package/src/engine/intelligence/resource/ResourceAllocationBid.js +1 -1
- package/src/engine/intelligence/resource/ResourceAllocationSolver.d.ts +1 -1
- package/src/engine/intelligence/resource/ResourceAllocationSolver.js +1 -1
- package/src/engine/intelligence/resource/StrategicResourceAllocator.d.ts +1 -1
- package/src/engine/intelligence/resource/StrategicResourceAllocator.js +1 -1
- package/src/engine/intelligence/resource/TacticalModule.d.ts +1 -1
- package/src/engine/intelligence/resource/TacticalModule.js +1 -1
- package/src/engine/network/NetworkSession.d.ts +1 -1
- package/src/engine/network/NetworkSession.js +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.js +1 -1
- package/src/engine/network/adapters/TransformReplicationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/TransformReplicationAdapter.js +1 -1
- package/src/engine/network/adapters/Vector3InterpolationAdapter.d.ts +1 -1
- package/src/engine/network/adapters/Vector3InterpolationAdapter.js +1 -1
- package/src/engine/network/core/quantize/quantize_float.d.ts +1 -1
- package/src/engine/network/core/quantize/quantize_float.js +1 -1
- package/src/engine/network/core/quantize/quantize_position.d.ts +1 -1
- package/src/engine/network/core/quantize/quantize_position.js +1 -1
- package/src/engine/network/core/sequence/ack_bitfield.d.ts +1 -1
- package/src/engine/network/core/sequence/ack_bitfield.js +1 -1
- package/src/engine/network/core/sequence/seq16.d.ts +1 -1
- package/src/engine/network/core/sequence/seq16.js +1 -1
- package/src/engine/network/core/sequence/seq32.d.ts +1 -1
- package/src/engine/network/core/sequence/seq32.js +1 -1
- package/src/engine/network/diagnostics/BandwidthMeter.d.ts +1 -1
- package/src/engine/network/diagnostics/BandwidthMeter.js +1 -1
- package/src/engine/network/diagnostics/ReplayLog.d.ts +1 -1
- package/src/engine/network/diagnostics/ReplayLog.js +1 -1
- package/src/engine/network/diagnostics/SyncTest.d.ts +1 -1
- package/src/engine/network/diagnostics/SyncTest.js +1 -1
- package/src/engine/network/ecs/NetworkSystem.d.ts +1 -1
- package/src/engine/network/ecs/NetworkSystem.js +1 -1
- package/src/engine/network/ecs/components/NetworkIdentity.d.ts +1 -1
- package/src/engine/network/ecs/components/NetworkIdentity.js +1 -1
- package/src/engine/network/ecs/serialization/NetworkIdentitySerializationAdapter.d.ts +1 -1
- package/src/engine/network/ecs/serialization/NetworkIdentitySerializationAdapter.js +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.d.ts +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +1 -1
- package/src/engine/network/replication/Replicator.d.ts +1 -1
- package/src/engine/network/replication/Replicator.js +1 -1
- package/src/engine/network/replication/ScopeFilter.d.ts +2 -2
- package/src/engine/network/replication/ScopeFilter.js +2 -2
- package/src/engine/network/sim/ActionLog.d.ts +1 -1
- package/src/engine/network/sim/ActionLog.js +1 -1
- package/src/engine/network/sim/BinaryInterpolationAdapter.d.ts +1 -1
- package/src/engine/network/sim/BinaryInterpolationAdapter.js +1 -1
- package/src/engine/network/sim/InterpolationLog.d.ts +1 -1
- package/src/engine/network/sim/InterpolationLog.js +1 -1
- package/src/engine/network/sim/ReplicatedComponentRegistry.d.ts +1 -1
- package/src/engine/network/sim/ReplicatedComponentRegistry.js +1 -1
- package/src/engine/network/sim/RewindEngine.d.ts +1 -1
- package/src/engine/network/sim/RewindEngine.js +1 -1
- package/src/engine/network/sim/SimAction.d.ts +1 -1
- package/src/engine/network/sim/SimAction.js +1 -1
- package/src/engine/network/sim/SimActionExecutor.d.ts +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +1 -1
- package/src/engine/network/sim/SimActionRegistry.d.ts +1 -1
- package/src/engine/network/sim/SimActionRegistry.js +1 -1
- package/src/engine/network/sim/SmoothingState.js +1 -1
- package/src/engine/network/sim/Snapshotter.d.ts +1 -1
- package/src/engine/network/sim/Snapshotter.js +1 -1
- package/src/engine/network/sim/SpeculationLog.d.ts +1 -1
- package/src/engine/network/sim/SpeculationLog.js +1 -1
- package/src/engine/network/state/Baseline.d.ts +1 -1
- package/src/engine/network/state/Baseline.js +1 -1
- package/src/engine/network/state/ChangedEntitySet.d.ts +1 -1
- package/src/engine/network/state/ChangedEntitySet.js +1 -1
- package/src/engine/network/state/InputRing.d.ts +1 -1
- package/src/engine/network/state/InputRing.js +1 -1
- package/src/engine/network/state/MutationLedger.d.ts +1 -1
- package/src/engine/network/state/MutationLedger.js +1 -1
- package/src/engine/network/state/PriorityAccumulator.d.ts +1 -1
- package/src/engine/network/state/PriorityAccumulator.js +1 -1
- package/src/engine/network/state/ReplicationSlotTable.d.ts +1 -1
- package/src/engine/network/state/ReplicationSlotTable.js +1 -1
- package/src/engine/network/time/AdaptiveRenderDelay.d.ts +1 -1
- package/src/engine/network/time/AdaptiveRenderDelay.js +1 -1
- package/src/engine/network/time/JitterBuffer.d.ts +1 -1
- package/src/engine/network/time/JitterBuffer.js +1 -1
- package/src/engine/network/time/TimeDilation.d.ts +1 -1
- package/src/engine/network/time/TimeDilation.js +1 -1
- package/src/engine/network/time/TimeSync.d.ts +1 -1
- package/src/engine/network/time/TimeSync.js +1 -1
- package/src/engine/network/transport/Channel.d.ts.map +1 -1
- package/src/engine/network/transport/Channel.js +3 -6
- package/src/engine/network/transport/LoopbackTransport.d.ts +1 -1
- package/src/engine/network/transport/LoopbackTransport.js +1 -1
- package/src/engine/network/transport/ReliableCommandPipeline.d.ts +1 -1
- package/src/engine/network/transport/ReliableCommandPipeline.js +1 -1
- package/src/engine/network/transport/Transport.d.ts +1 -1
- package/src/engine/network/transport/Transport.js +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +2 -2
- package/src/engine/network/transport/adapters/SimulatedTransport.d.ts +1 -1
- package/src/engine/network/transport/adapters/SimulatedTransport.js +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +1 -1
- package/src/engine/network/transport/adapters/WebSocketTransport.d.ts +1 -1
- package/src/engine/network/transport/adapters/WebSocketTransport.js +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.d.ts +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.js +1 -1
- package/src/engine/network/transport/fragments/FragmentAssembler.d.ts +1 -1
- package/src/engine/network/transport/fragments/FragmentAssembler.js +1 -1
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts +1 -1
- package/src/engine/network/transport/fragments/FragmentRetention.js +1 -1
- package/src/engine/network/transport/fragments/packet_size.d.ts +1 -1
- package/src/engine/network/transport/fragments/packet_size.js +1 -1
- package/src/engine/simulation/Ticker.d.ts +1 -1
- package/src/engine/simulation/Ticker.js +1 -1
- package/src/engine/sound/SoundEngine.js +1 -1
- package/src/engine/ui/DraggableAspect.d.ts +1 -1
- package/src/engine/ui/DraggableAspect.js +1 -1
- package/src/view/View.js +1 -1
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-person camera + body controller. See DESIGN.md (sibling file) for
|
|
3
|
+
* the goals, layered architecture, and tuning rationale.
|
|
4
|
+
*
|
|
5
|
+
* Lifecycle: only `config` is serialized. `intent`, `state`, `pose`,
|
|
6
|
+
* `signals`, and `eyeEntity` are transient — rebuilt by the system on
|
|
7
|
+
* link.
|
|
8
|
+
*
|
|
9
|
+
* @author Alex Goldring
|
|
10
|
+
* @copyright Company Named Limited (c) 2026
|
|
11
|
+
*/
|
|
12
|
+
export class FirstPersonPlayerController {
|
|
13
|
+
static typeName: string;
|
|
14
|
+
config: FirstPersonPlayerControllerConfig;
|
|
15
|
+
intent: FirstPersonIntent;
|
|
16
|
+
state: FirstPersonState;
|
|
17
|
+
pose: FirstPersonPose;
|
|
18
|
+
signals: FirstPersonSignals;
|
|
19
|
+
/**
|
|
20
|
+
* ID of the entity carrying the eye Transform + Camera. Created by
|
|
21
|
+
* the system on link if -1. Held as a plain number rather than
|
|
22
|
+
* EntityReference to keep serialization simple — the relationship
|
|
23
|
+
* is rebuilt on link anyway.
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
eyeEntity: number;
|
|
27
|
+
toJSON(): {
|
|
28
|
+
config: {
|
|
29
|
+
body: {
|
|
30
|
+
height: number;
|
|
31
|
+
crouchHeight: number;
|
|
32
|
+
radius: number;
|
|
33
|
+
mass: number;
|
|
34
|
+
};
|
|
35
|
+
motion: {
|
|
36
|
+
walkSpeed: number; /** Hold state — true while jump button is held. @type {boolean} */
|
|
37
|
+
sprintSpeed: number;
|
|
38
|
+
crouchSpeed: number;
|
|
39
|
+
airControl: number;
|
|
40
|
+
groundAccel: number;
|
|
41
|
+
groundDecel: number;
|
|
42
|
+
airAccel: number;
|
|
43
|
+
};
|
|
44
|
+
jump: {
|
|
45
|
+
anticipation: {
|
|
46
|
+
duration: number;
|
|
47
|
+
dipAmount: number;
|
|
48
|
+
};
|
|
49
|
+
peakHeight: number;
|
|
50
|
+
timeToApex: number;
|
|
51
|
+
coyoteTime: number;
|
|
52
|
+
bufferTime: number;
|
|
53
|
+
fallGravityMult: number;
|
|
54
|
+
cutGravityMult: number;
|
|
55
|
+
};
|
|
56
|
+
landing: {
|
|
57
|
+
recovery: {
|
|
58
|
+
spring: {
|
|
59
|
+
halfLife: number;
|
|
60
|
+
zeta: number; /** {verticalSpeed:number, kind:"soft"|"hard"} */
|
|
61
|
+
};
|
|
62
|
+
dipPerVy: number;
|
|
63
|
+
dipMax: number;
|
|
64
|
+
};
|
|
65
|
+
softThreshold: number;
|
|
66
|
+
hardThreshold: number;
|
|
67
|
+
};
|
|
68
|
+
crouch: {
|
|
69
|
+
transitionTime: number;
|
|
70
|
+
mode: string;
|
|
71
|
+
};
|
|
72
|
+
bob: {
|
|
73
|
+
stepFreqAtWalk: number;
|
|
74
|
+
stepFreqExp: number;
|
|
75
|
+
verticalAmpAtWalk: number;
|
|
76
|
+
lateralAmpAtWalk: number;
|
|
77
|
+
ampMassScale: number;
|
|
78
|
+
rollAtWalkDeg: number;
|
|
79
|
+
minStepSpeed: number;
|
|
80
|
+
};
|
|
81
|
+
breath: {
|
|
82
|
+
rateRestHz: number;
|
|
83
|
+
rateMaxHz: number;
|
|
84
|
+
amplitudeRestM: number;
|
|
85
|
+
amplitudeMaxM: number;
|
|
86
|
+
pitchAmpRestDeg: number;
|
|
87
|
+
pitchAmpMaxDeg: number;
|
|
88
|
+
noiseAmount: number;
|
|
89
|
+
};
|
|
90
|
+
exertion: {
|
|
91
|
+
sprintRiseRate: number;
|
|
92
|
+
jumpRise: number;
|
|
93
|
+
idleDecayRate: number;
|
|
94
|
+
rateDecayHalfLife: number;
|
|
95
|
+
ampDecayHalfLife: number;
|
|
96
|
+
};
|
|
97
|
+
lean: {
|
|
98
|
+
spring: {
|
|
99
|
+
halfLife: number;
|
|
100
|
+
zeta: number;
|
|
101
|
+
};
|
|
102
|
+
enabled: boolean;
|
|
103
|
+
maxRollDeg: number;
|
|
104
|
+
};
|
|
105
|
+
fov: {
|
|
106
|
+
base: number;
|
|
107
|
+
sprintAdd: number;
|
|
108
|
+
crouchAdd: number;
|
|
109
|
+
smoothHalfLife: number;
|
|
110
|
+
};
|
|
111
|
+
look: {
|
|
112
|
+
pitchMinDeg: number;
|
|
113
|
+
pitchMaxDeg: number;
|
|
114
|
+
invertY: boolean; /**
|
|
115
|
+
* @param {FirstPersonPlayerController} other
|
|
116
|
+
*/
|
|
117
|
+
};
|
|
118
|
+
gravity: {
|
|
119
|
+
magnitude: number;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
fromJSON(json: any): void;
|
|
124
|
+
/**
|
|
125
|
+
* @param {FirstPersonPlayerController} other
|
|
126
|
+
*/
|
|
127
|
+
copy(other: FirstPersonPlayerController): void;
|
|
128
|
+
clone(): FirstPersonPlayerController;
|
|
129
|
+
equals(other: any): boolean;
|
|
130
|
+
hash(): number;
|
|
131
|
+
}
|
|
132
|
+
export namespace FirstPersonPlayerController {
|
|
133
|
+
export { FirstPersonActionState as ActionState };
|
|
134
|
+
}
|
|
135
|
+
import { FirstPersonPlayerControllerConfig } from "./FirstPersonPlayerControllerConfig.js";
|
|
136
|
+
/**
|
|
137
|
+
* Intent — what the player (or AI) wants the body to do. All fields are
|
|
138
|
+
* latched ("hold-state") except `look`, which accumulates deltas between
|
|
139
|
+
* fixed updates and is zeroed by the system on consume.
|
|
140
|
+
*
|
|
141
|
+
* The system performs its own edge detection on `jump` (and on `crouch`
|
|
142
|
+
* when toggle-mode is configured). This is what guarantees a held jump
|
|
143
|
+
* button does not produce repeated jumps.
|
|
144
|
+
*/
|
|
145
|
+
declare class FirstPersonIntent {
|
|
146
|
+
/** [-1..1, -1..1] forward+/right+ in body-local. @type {Vector2} */
|
|
147
|
+
move: Vector2;
|
|
148
|
+
/**
|
|
149
|
+
* Accumulated look delta (radians). x = yaw, y = pitch. Consumed and
|
|
150
|
+
* zeroed by the system in fixedUpdate.
|
|
151
|
+
* @type {Vector2}
|
|
152
|
+
*/
|
|
153
|
+
look: Vector2;
|
|
154
|
+
/** Hold state — true while jump button is held. @type {boolean} */
|
|
155
|
+
jump: boolean;
|
|
156
|
+
/** Hold state — meaning depends on config.crouch.mode. @type {boolean} */
|
|
157
|
+
crouch: boolean;
|
|
158
|
+
/** Hold state — true while sprint button is held. @type {boolean} */
|
|
159
|
+
sprint: boolean;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Derived state — read-only outputs. Useful for HUDs, sound systems, AI
|
|
163
|
+
* sensors that need to know "is the player crouched / sprinting / etc."
|
|
164
|
+
*/
|
|
165
|
+
declare class FirstPersonState {
|
|
166
|
+
grounded: boolean;
|
|
167
|
+
timeSinceGrounded: number;
|
|
168
|
+
/** Set by the physics layer (or the prototype's flat-ground integrator). */
|
|
169
|
+
groundNormal: Vector3;
|
|
170
|
+
surfaceTag: any;
|
|
171
|
+
speed: number;
|
|
172
|
+
/** [0..1] vs sprint speed — drives bob amp and FOV kick. */
|
|
173
|
+
speedNormalized: number;
|
|
174
|
+
/** "Idle" | "Walk" | "Sprint" | "Crouch" | "Air" */
|
|
175
|
+
moveMode: string;
|
|
176
|
+
verticalSpeed: number;
|
|
177
|
+
airborneTime: number;
|
|
178
|
+
fallDistance: number;
|
|
179
|
+
jumpBufferRemaining: number;
|
|
180
|
+
inJumpAnticipation: boolean;
|
|
181
|
+
isVariableJumpCut: boolean;
|
|
182
|
+
/** Set to true while jumping ascent until apex; gates the cut behavior. */
|
|
183
|
+
isAscending: boolean;
|
|
184
|
+
exertion: number;
|
|
185
|
+
breathPhase: number;
|
|
186
|
+
breathRateHz: number;
|
|
187
|
+
breathAmplitudeM: number;
|
|
188
|
+
stridePhase: number;
|
|
189
|
+
stepCount: number;
|
|
190
|
+
/** Which foot fires next: 0 = right, 1 = left. */
|
|
191
|
+
nextFoot: number;
|
|
192
|
+
eyeHeight: number;
|
|
193
|
+
/** Set true when crouch was released but a ceiling above prevents standing. */
|
|
194
|
+
crouchBlocked: boolean;
|
|
195
|
+
/** True while in crouch pose (independent of intent — see crouchBlocked). */
|
|
196
|
+
crouchActive: boolean;
|
|
197
|
+
leanRollRad: number;
|
|
198
|
+
}
|
|
199
|
+
import { FirstPersonPose } from "./pose/FirstPersonPose.js";
|
|
200
|
+
/**
|
|
201
|
+
* Event surface. All signals are sent from fixedUpdate so listeners see
|
|
202
|
+
* consistent state across the same simulation tick.
|
|
203
|
+
*/
|
|
204
|
+
declare class FirstPersonSignals {
|
|
205
|
+
/** {side:"L"|"R", speed:number, surfaceTag:string?} */
|
|
206
|
+
onFootStep: Signal<any, any, any, any, any, any, any, any>;
|
|
207
|
+
/** {peakHeight:number} fired at impulse, after anticipation finishes. */
|
|
208
|
+
onJumpStart: Signal<any, any, any, any, any, any, any, any>;
|
|
209
|
+
/** No payload. */
|
|
210
|
+
onJumpApex: Signal<any, any, any, any, any, any, any, any>;
|
|
211
|
+
/** {reason:"jump"|"fall"} */
|
|
212
|
+
onLeaveGround: Signal<any, any, any, any, any, any, any, any>;
|
|
213
|
+
/** {verticalSpeed:number, kind:"soft"|"hard"} */
|
|
214
|
+
onLand: Signal<any, any, any, any, any, any, any, any>;
|
|
215
|
+
onCrouchEnter: Signal<any, any, any, any, any, any, any, any>;
|
|
216
|
+
onCrouchExit: Signal<any, any, any, any, any, any, any, any>;
|
|
217
|
+
onSprintStart: Signal<any, any, any, any, any, any, any, any>;
|
|
218
|
+
onSprintStop: Signal<any, any, any, any, any, any, any, any>;
|
|
219
|
+
/** {amplitude:number, rateHz:number} fired at peak inhale (phase 0.25). */
|
|
220
|
+
onBreathIn: Signal<any, any, any, any, any, any, any, any>;
|
|
221
|
+
/** {amplitude:number, rateHz:number} fired at peak exhale (phase 0.75). */
|
|
222
|
+
onBreathOut: Signal<any, any, any, any, any, any, any, any>;
|
|
223
|
+
}
|
|
224
|
+
import { FirstPersonActionState } from "./pose/FirstPersonPose.js";
|
|
225
|
+
import Vector2 from "../../../core/geom/Vector2.js";
|
|
226
|
+
import Vector3 from "../../../core/geom/Vector3.js";
|
|
227
|
+
import Signal from "../../../core/events/signal/Signal.js";
|
|
228
|
+
export {};
|
|
229
|
+
//# sourceMappingURL=FirstPersonPlayerController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FirstPersonPlayerController.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerController.js"],"names":[],"mappings":"AA6GA;;;;;;;;;;GAUG;AACH;IACI,wBAAgD;IAG5C,0CAAqD;IACrD,0BAAqC;IACrC,wBAAmC;IACnC,sBAAiC;IACjC,4BAAuC;IAEvC;;;;;;OAMG;IACH,WAFU,MAAM,CAEG;IAGvB;;;;;;;;;mCAlHA,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;sCAuEnE,iDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAqDjD;;mBAEG;;;;;;MAVF;IAED,0BAIC;IAED;;OAEG;IACH,YAFW,2BAA2B,QAKrC;IAED,qCAIC;IAED,4BAGC;IAED,eAGC;CACJ;;;;kDA1KiD,wCAAwC;AAG1F;;;;;;;;GAQG;AACH;IACI,oEAAoE;IACpE,MADyD,OAAO,CACvC;IAEzB;;;;OAIG;IACH,MAFU,OAAO,CAEQ;IAEzB,mEAAmE;IACnE,MADwD,OAAO,CAClD;IAEb,0EAA0E;IAC1E,QAD+D,OAAO,CACvD;IAEf,qEAAqE;IACrE,QAD0D,OAAO,CAClD;CAClB;AAED;;;GAGG;AACH;IACI,kBAAgB;IAChB,0BAAsB;IAEtB,4EAA4E;IAC5E,sBAAoC;IACpC,gBAAkB;IAElB,cAAU;IACV,4DAA4D;IAC5D,wBAAoB;IACpB,oDAAoD;IACpD,iBAAkB;IAElB,sBAAkB;IAClB,qBAAiB;IACjB,qBAAiB;IAEjB,4BAAwB;IACxB,4BAA2B;IAC3B,2BAA0B;IAC1B,2EAA2E;IAC3E,qBAAoB;IAEpB,iBAAa;IACb,oBAAgB;IAChB,qBAAiB;IACjB,yBAAqB;IAErB,oBAAgB;IAChB,kBAAc;IACd,kDAAkD;IAClD,iBAAa;IAEb,kBAAiB;IAEjB,+EAA+E;IAC/E,uBAAsB;IACtB,6EAA6E;IAC7E,sBAAqB;IAErB,oBAAgB;CACnB;gCA9EuD,2BAA2B;AAgFnF;;;GAGG;AACH;IACI,uDAAuD;IACvD,2DAA0B;IAC1B,yEAAyE;IACzE,4DAA2B;IAC3B,kBAAkB;IAClB,2DAA0B;IAC1B,6BAA6B;IAC7B,8DAA6B;IAC7B,iDAAiD;IACjD,uDAAsB;IACtB,8DAA6B;IAC7B,6DAA4B;IAC5B,8DAA6B;IAC7B,6DAA4B;IAC5B,2EAA2E;IAC3E,2DAA0B;IAC1B,2EAA2E;IAC3E,4DAA2B;CAC9B;uCAvGuD,2BAA2B;oBAH/D,+BAA+B;oBAC/B,+BAA+B;mBAFhC,uCAAuC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import Signal from "../../../core/events/signal/Signal.js";
|
|
2
|
+
import Vector2 from "../../../core/geom/Vector2.js";
|
|
3
|
+
import Vector3 from "../../../core/geom/Vector3.js";
|
|
4
|
+
import { FirstPersonPlayerControllerConfig } from "./FirstPersonPlayerControllerConfig.js";
|
|
5
|
+
import { FirstPersonActionState, FirstPersonPose } from "./pose/FirstPersonPose.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Intent — what the player (or AI) wants the body to do. All fields are
|
|
9
|
+
* latched ("hold-state") except `look`, which accumulates deltas between
|
|
10
|
+
* fixed updates and is zeroed by the system on consume.
|
|
11
|
+
*
|
|
12
|
+
* The system performs its own edge detection on `jump` (and on `crouch`
|
|
13
|
+
* when toggle-mode is configured). This is what guarantees a held jump
|
|
14
|
+
* button does not produce repeated jumps.
|
|
15
|
+
*/
|
|
16
|
+
class FirstPersonIntent {
|
|
17
|
+
/** [-1..1, -1..1] forward+/right+ in body-local. @type {Vector2} */
|
|
18
|
+
move = new Vector2(0, 0);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Accumulated look delta (radians). x = yaw, y = pitch. Consumed and
|
|
22
|
+
* zeroed by the system in fixedUpdate.
|
|
23
|
+
* @type {Vector2}
|
|
24
|
+
*/
|
|
25
|
+
look = new Vector2(0, 0);
|
|
26
|
+
|
|
27
|
+
/** Hold state — true while jump button is held. @type {boolean} */
|
|
28
|
+
jump = false;
|
|
29
|
+
|
|
30
|
+
/** Hold state — meaning depends on config.crouch.mode. @type {boolean} */
|
|
31
|
+
crouch = false;
|
|
32
|
+
|
|
33
|
+
/** Hold state — true while sprint button is held. @type {boolean} */
|
|
34
|
+
sprint = false;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Derived state — read-only outputs. Useful for HUDs, sound systems, AI
|
|
39
|
+
* sensors that need to know "is the player crouched / sprinting / etc."
|
|
40
|
+
*/
|
|
41
|
+
class FirstPersonState {
|
|
42
|
+
grounded = true;
|
|
43
|
+
timeSinceGrounded = 0;
|
|
44
|
+
|
|
45
|
+
/** Set by the physics layer (or the prototype's flat-ground integrator). */
|
|
46
|
+
groundNormal = new Vector3(0, 1, 0);
|
|
47
|
+
surfaceTag = null;
|
|
48
|
+
|
|
49
|
+
speed = 0;
|
|
50
|
+
/** [0..1] vs sprint speed — drives bob amp and FOV kick. */
|
|
51
|
+
speedNormalized = 0;
|
|
52
|
+
/** "Idle" | "Walk" | "Sprint" | "Crouch" | "Air" */
|
|
53
|
+
moveMode = "Idle";
|
|
54
|
+
|
|
55
|
+
verticalSpeed = 0;
|
|
56
|
+
airborneTime = 0;
|
|
57
|
+
fallDistance = 0;
|
|
58
|
+
|
|
59
|
+
jumpBufferRemaining = 0;
|
|
60
|
+
inJumpAnticipation = false;
|
|
61
|
+
isVariableJumpCut = false;
|
|
62
|
+
/** Set to true while jumping ascent until apex; gates the cut behavior. */
|
|
63
|
+
isAscending = false;
|
|
64
|
+
|
|
65
|
+
exertion = 0;
|
|
66
|
+
breathPhase = 0;
|
|
67
|
+
breathRateHz = 0;
|
|
68
|
+
breathAmplitudeM = 0;
|
|
69
|
+
|
|
70
|
+
stridePhase = 0;
|
|
71
|
+
stepCount = 0;
|
|
72
|
+
/** Which foot fires next: 0 = right, 1 = left. */
|
|
73
|
+
nextFoot = 0;
|
|
74
|
+
|
|
75
|
+
eyeHeight = 1.80;
|
|
76
|
+
|
|
77
|
+
/** Set true when crouch was released but a ceiling above prevents standing. */
|
|
78
|
+
crouchBlocked = false;
|
|
79
|
+
/** True while in crouch pose (independent of intent — see crouchBlocked). */
|
|
80
|
+
crouchActive = false;
|
|
81
|
+
|
|
82
|
+
leanRollRad = 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Event surface. All signals are sent from fixedUpdate so listeners see
|
|
87
|
+
* consistent state across the same simulation tick.
|
|
88
|
+
*/
|
|
89
|
+
class FirstPersonSignals {
|
|
90
|
+
/** {side:"L"|"R", speed:number, surfaceTag:string?} */
|
|
91
|
+
onFootStep = new Signal();
|
|
92
|
+
/** {peakHeight:number} fired at impulse, after anticipation finishes. */
|
|
93
|
+
onJumpStart = new Signal();
|
|
94
|
+
/** No payload. */
|
|
95
|
+
onJumpApex = new Signal();
|
|
96
|
+
/** {reason:"jump"|"fall"} */
|
|
97
|
+
onLeaveGround = new Signal();
|
|
98
|
+
/** {verticalSpeed:number, kind:"soft"|"hard"} */
|
|
99
|
+
onLand = new Signal();
|
|
100
|
+
onCrouchEnter = new Signal();
|
|
101
|
+
onCrouchExit = new Signal();
|
|
102
|
+
onSprintStart = new Signal();
|
|
103
|
+
onSprintStop = new Signal();
|
|
104
|
+
/** {amplitude:number, rateHz:number} fired at peak inhale (phase 0.25). */
|
|
105
|
+
onBreathIn = new Signal();
|
|
106
|
+
/** {amplitude:number, rateHz:number} fired at peak exhale (phase 0.75). */
|
|
107
|
+
onBreathOut = new Signal();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* First-person camera + body controller. See DESIGN.md (sibling file) for
|
|
112
|
+
* the goals, layered architecture, and tuning rationale.
|
|
113
|
+
*
|
|
114
|
+
* Lifecycle: only `config` is serialized. `intent`, `state`, `pose`,
|
|
115
|
+
* `signals`, and `eyeEntity` are transient — rebuilt by the system on
|
|
116
|
+
* link.
|
|
117
|
+
*
|
|
118
|
+
* @author Alex Goldring
|
|
119
|
+
* @copyright Company Named Limited (c) 2026
|
|
120
|
+
*/
|
|
121
|
+
export class FirstPersonPlayerController {
|
|
122
|
+
static typeName = "FirstPersonPlayerController";
|
|
123
|
+
|
|
124
|
+
constructor() {
|
|
125
|
+
this.config = new FirstPersonPlayerControllerConfig();
|
|
126
|
+
this.intent = new FirstPersonIntent();
|
|
127
|
+
this.state = new FirstPersonState();
|
|
128
|
+
this.pose = new FirstPersonPose();
|
|
129
|
+
this.signals = new FirstPersonSignals();
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* ID of the entity carrying the eye Transform + Camera. Created by
|
|
133
|
+
* the system on link if -1. Held as a plain number rather than
|
|
134
|
+
* EntityReference to keep serialization simple — the relationship
|
|
135
|
+
* is rebuilt on link anyway.
|
|
136
|
+
* @type {number}
|
|
137
|
+
*/
|
|
138
|
+
this.eyeEntity = -1;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
toJSON() {
|
|
142
|
+
return { config: this.config.toJSON() };
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
fromJSON(json) {
|
|
146
|
+
if (json && json.config) {
|
|
147
|
+
this.config.fromJSON(json.config);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @param {FirstPersonPlayerController} other
|
|
153
|
+
*/
|
|
154
|
+
copy(other) {
|
|
155
|
+
this.config.copy(other.config);
|
|
156
|
+
// intent/state/pose/signals/eyeEntity are transient
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
clone() {
|
|
160
|
+
const c = new FirstPersonPlayerController();
|
|
161
|
+
c.copy(this);
|
|
162
|
+
return c;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
equals(other) {
|
|
166
|
+
// config-only equality (the rest is runtime state)
|
|
167
|
+
return JSON.stringify(this.config.toJSON()) === JSON.stringify(other.config.toJSON());
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
hash() {
|
|
171
|
+
// hashing transient state is undesirable; the config is large; return 0
|
|
172
|
+
return 0;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
FirstPersonPlayerController.ActionState = FirstPersonActionState;
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tunable parameters for {@link FirstPersonPlayerController}. The full
|
|
3
|
+
* config is the only serialized portion of the component — everything else
|
|
4
|
+
* (intent, state, pose, signals) is transient and rebuilt on link.
|
|
5
|
+
*
|
|
6
|
+
* Defaults aim for a baseline "human soldier" feel — see DESIGN.md §4.1.
|
|
7
|
+
* Every value is exposed so designers can mod it to taste.
|
|
8
|
+
*/
|
|
9
|
+
export class FirstPersonPlayerControllerConfig {
|
|
10
|
+
body: {
|
|
11
|
+
/** Standing eye height, meters above body origin. */
|
|
12
|
+
height: number;
|
|
13
|
+
/** Crouched eye height. */
|
|
14
|
+
crouchHeight: number;
|
|
15
|
+
/** Capsule radius, for downstream physics. */
|
|
16
|
+
radius: number;
|
|
17
|
+
/** Kilograms — drives bob amplitude and land-impact magnitude. */
|
|
18
|
+
mass: number;
|
|
19
|
+
};
|
|
20
|
+
motion: {
|
|
21
|
+
walkSpeed: number;
|
|
22
|
+
sprintSpeed: number;
|
|
23
|
+
crouchSpeed: number;
|
|
24
|
+
/** [0..1] how much intent influences velocity while airborne. */
|
|
25
|
+
airControl: number;
|
|
26
|
+
/** m/s^2 horizontal acceleration toward intent on ground. */
|
|
27
|
+
groundAccel: number;
|
|
28
|
+
/** m/s^2 horizontal deceleration toward 0 when intent is zero. */
|
|
29
|
+
groundDecel: number;
|
|
30
|
+
/** m/s^2 horizontal acceleration while airborne. */
|
|
31
|
+
airAccel: number;
|
|
32
|
+
};
|
|
33
|
+
jump: {
|
|
34
|
+
/** Apex height of a clean jump, meters. */
|
|
35
|
+
peakHeight: number;
|
|
36
|
+
/** Seconds to reach apex from launch. Together these two derive g. */
|
|
37
|
+
timeToApex: number;
|
|
38
|
+
coyoteTime: number;
|
|
39
|
+
bufferTime: number;
|
|
40
|
+
/** Gravity multiplier while falling (vy <= 0). */
|
|
41
|
+
fallGravityMult: number;
|
|
42
|
+
/** Gravity multiplier when jump released early during ascent. */
|
|
43
|
+
cutGravityMult: number;
|
|
44
|
+
anticipation: {
|
|
45
|
+
duration: number;
|
|
46
|
+
dipAmount: number;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
landing: {
|
|
50
|
+
/** m/s impact threshold; below = soft landing signal. */
|
|
51
|
+
softThreshold: number;
|
|
52
|
+
/** m/s impact threshold; above = hard landing signal. */
|
|
53
|
+
hardThreshold: number;
|
|
54
|
+
recovery: {
|
|
55
|
+
/** Meters of eye dip per m/s of impact velocity. */
|
|
56
|
+
dipPerVy: number;
|
|
57
|
+
/** Clamp on total dip. */
|
|
58
|
+
dipMax: number;
|
|
59
|
+
spring: {
|
|
60
|
+
halfLife: number;
|
|
61
|
+
/** zeta < 1 → rings once before settling, reads as compression. */
|
|
62
|
+
zeta: number;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
crouch: {
|
|
67
|
+
/** Seconds to lerp eye height between standing and crouched. */
|
|
68
|
+
transitionTime: number;
|
|
69
|
+
/** "hold" or "toggle" */
|
|
70
|
+
mode: string;
|
|
71
|
+
};
|
|
72
|
+
bob: {
|
|
73
|
+
stepFreqAtWalk: number;
|
|
74
|
+
stepFreqExp: number;
|
|
75
|
+
verticalAmpAtWalk: number;
|
|
76
|
+
lateralAmpAtWalk: number;
|
|
77
|
+
/** Extra amplitude per kg above 80kg (reference mass). */
|
|
78
|
+
ampMassScale: number;
|
|
79
|
+
rollAtWalkDeg: number;
|
|
80
|
+
/** Speeds below this don't tick the stride at all. */
|
|
81
|
+
minStepSpeed: number;
|
|
82
|
+
};
|
|
83
|
+
breath: {
|
|
84
|
+
rateRestHz: number;
|
|
85
|
+
rateMaxHz: number;
|
|
86
|
+
amplitudeRestM: number;
|
|
87
|
+
amplitudeMaxM: number;
|
|
88
|
+
pitchAmpRestDeg: number;
|
|
89
|
+
pitchAmpMaxDeg: number;
|
|
90
|
+
/** ±20% amplitude noise rides on the sine. */
|
|
91
|
+
noiseAmount: number;
|
|
92
|
+
};
|
|
93
|
+
exertion: {
|
|
94
|
+
sprintRiseRate: number;
|
|
95
|
+
jumpRise: number;
|
|
96
|
+
idleDecayRate: number;
|
|
97
|
+
rateDecayHalfLife: number;
|
|
98
|
+
ampDecayHalfLife: number;
|
|
99
|
+
};
|
|
100
|
+
lean: {
|
|
101
|
+
enabled: boolean;
|
|
102
|
+
/** Degrees of roll per (lateral m/s^2 / 9.81). */
|
|
103
|
+
maxRollDeg: number;
|
|
104
|
+
spring: {
|
|
105
|
+
halfLife: number;
|
|
106
|
+
zeta: number;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
fov: {
|
|
110
|
+
base: number;
|
|
111
|
+
sprintAdd: number;
|
|
112
|
+
crouchAdd: number;
|
|
113
|
+
smoothHalfLife: number;
|
|
114
|
+
};
|
|
115
|
+
look: {
|
|
116
|
+
pitchMinDeg: number;
|
|
117
|
+
pitchMaxDeg: number;
|
|
118
|
+
invertY: boolean;
|
|
119
|
+
};
|
|
120
|
+
gravity: {
|
|
121
|
+
/** Default gravity magnitude (m/s^2). Overridden by computeJumpFromApex once
|
|
122
|
+
* the jump tunables are resolved; kept here so non-jumping entities (NPCs,
|
|
123
|
+
* paused players) still have a sensible fall behavior. */
|
|
124
|
+
magnitude: number;
|
|
125
|
+
};
|
|
126
|
+
toJSON(): {
|
|
127
|
+
body: {
|
|
128
|
+
/** Standing eye height, meters above body origin. */
|
|
129
|
+
height: number;
|
|
130
|
+
/** Crouched eye height. */
|
|
131
|
+
crouchHeight: number;
|
|
132
|
+
/** Capsule radius, for downstream physics. */
|
|
133
|
+
radius: number;
|
|
134
|
+
/** Kilograms — drives bob amplitude and land-impact magnitude. */
|
|
135
|
+
mass: number;
|
|
136
|
+
};
|
|
137
|
+
motion: {
|
|
138
|
+
walkSpeed: number;
|
|
139
|
+
sprintSpeed: number;
|
|
140
|
+
crouchSpeed: number;
|
|
141
|
+
/** [0..1] how much intent influences velocity while airborne. */
|
|
142
|
+
airControl: number;
|
|
143
|
+
/** m/s^2 horizontal acceleration toward intent on ground. */
|
|
144
|
+
groundAccel: number;
|
|
145
|
+
/** m/s^2 horizontal deceleration toward 0 when intent is zero. */
|
|
146
|
+
groundDecel: number;
|
|
147
|
+
/** m/s^2 horizontal acceleration while airborne. */
|
|
148
|
+
airAccel: number;
|
|
149
|
+
};
|
|
150
|
+
jump: {
|
|
151
|
+
anticipation: {
|
|
152
|
+
duration: number;
|
|
153
|
+
dipAmount: number;
|
|
154
|
+
};
|
|
155
|
+
/** Apex height of a clean jump, meters. */
|
|
156
|
+
peakHeight: number;
|
|
157
|
+
/** Seconds to reach apex from launch. Together these two derive g. */
|
|
158
|
+
timeToApex: number;
|
|
159
|
+
coyoteTime: number;
|
|
160
|
+
bufferTime: number;
|
|
161
|
+
/** Gravity multiplier while falling (vy <= 0). */
|
|
162
|
+
fallGravityMult: number;
|
|
163
|
+
/** Gravity multiplier when jump released early during ascent. */
|
|
164
|
+
cutGravityMult: number;
|
|
165
|
+
};
|
|
166
|
+
landing: {
|
|
167
|
+
recovery: {
|
|
168
|
+
spring: {
|
|
169
|
+
halfLife: number;
|
|
170
|
+
/** zeta < 1 → rings once before settling, reads as compression. */
|
|
171
|
+
zeta: number;
|
|
172
|
+
};
|
|
173
|
+
/** Meters of eye dip per m/s of impact velocity. */
|
|
174
|
+
dipPerVy: number;
|
|
175
|
+
/** Clamp on total dip. */
|
|
176
|
+
dipMax: number;
|
|
177
|
+
};
|
|
178
|
+
/** m/s impact threshold; below = soft landing signal. */
|
|
179
|
+
softThreshold: number;
|
|
180
|
+
/** m/s impact threshold; above = hard landing signal. */
|
|
181
|
+
hardThreshold: number;
|
|
182
|
+
};
|
|
183
|
+
crouch: {
|
|
184
|
+
/** Seconds to lerp eye height between standing and crouched. */
|
|
185
|
+
transitionTime: number;
|
|
186
|
+
/** "hold" or "toggle" */
|
|
187
|
+
mode: string;
|
|
188
|
+
};
|
|
189
|
+
bob: {
|
|
190
|
+
stepFreqAtWalk: number;
|
|
191
|
+
stepFreqExp: number;
|
|
192
|
+
verticalAmpAtWalk: number;
|
|
193
|
+
lateralAmpAtWalk: number;
|
|
194
|
+
/** Extra amplitude per kg above 80kg (reference mass). */
|
|
195
|
+
ampMassScale: number;
|
|
196
|
+
rollAtWalkDeg: number;
|
|
197
|
+
/** Speeds below this don't tick the stride at all. */
|
|
198
|
+
minStepSpeed: number;
|
|
199
|
+
};
|
|
200
|
+
breath: {
|
|
201
|
+
rateRestHz: number;
|
|
202
|
+
rateMaxHz: number;
|
|
203
|
+
amplitudeRestM: number;
|
|
204
|
+
amplitudeMaxM: number;
|
|
205
|
+
pitchAmpRestDeg: number;
|
|
206
|
+
pitchAmpMaxDeg: number;
|
|
207
|
+
/** ±20% amplitude noise rides on the sine. */
|
|
208
|
+
noiseAmount: number;
|
|
209
|
+
};
|
|
210
|
+
exertion: {
|
|
211
|
+
sprintRiseRate: number;
|
|
212
|
+
jumpRise: number;
|
|
213
|
+
idleDecayRate: number;
|
|
214
|
+
rateDecayHalfLife: number;
|
|
215
|
+
ampDecayHalfLife: number;
|
|
216
|
+
};
|
|
217
|
+
lean: {
|
|
218
|
+
spring: {
|
|
219
|
+
halfLife: number;
|
|
220
|
+
zeta: number;
|
|
221
|
+
};
|
|
222
|
+
enabled: boolean;
|
|
223
|
+
/** Degrees of roll per (lateral m/s^2 / 9.81). */
|
|
224
|
+
maxRollDeg: number;
|
|
225
|
+
};
|
|
226
|
+
fov: {
|
|
227
|
+
base: number;
|
|
228
|
+
sprintAdd: number;
|
|
229
|
+
crouchAdd: number;
|
|
230
|
+
smoothHalfLife: number;
|
|
231
|
+
};
|
|
232
|
+
look: {
|
|
233
|
+
pitchMinDeg: number;
|
|
234
|
+
pitchMaxDeg: number;
|
|
235
|
+
invertY: boolean;
|
|
236
|
+
};
|
|
237
|
+
gravity: {
|
|
238
|
+
/** Default gravity magnitude (m/s^2). Overridden by computeJumpFromApex once
|
|
239
|
+
* the jump tunables are resolved; kept here so non-jumping entities (NPCs,
|
|
240
|
+
* paused players) still have a sensible fall behavior. */
|
|
241
|
+
magnitude: number;
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
fromJSON(json: any): void;
|
|
245
|
+
/**
|
|
246
|
+
* @param {FirstPersonPlayerControllerConfig} other
|
|
247
|
+
*/
|
|
248
|
+
copy(other: FirstPersonPlayerControllerConfig): void;
|
|
249
|
+
clone(): FirstPersonPlayerControllerConfig;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=FirstPersonPlayerControllerConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FirstPersonPlayerControllerConfig.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerControllerConfig.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH;IACI;QACI,qDAAqD;;QAErD,2BAA2B;;QAE3B,8CAA8C;;QAE9C,kEAAkE;;MAEpE;IAMF;;;;QAII,iEAAiE;;QAEjE,6DAA6D;;QAE7D,kEAAkE;;QAElE,oDAAoD;;MAEtD;IAEF;QACI,2CAA2C;;QAE3C,sEAAsE;;;;QAItE,kDAAkD;;QAElD,iEAAiE;;;;;;MAMnE;IAEF;QACI,yDAAyD;;QAEzD,yDAAyD;;;YAGrD,oDAAoD;;YAEpD,0BAA0B;;;;gBAItB,mEAAmE;;;;MAI7E;IAEF;QACI,gEAAgE;;QAEhE,yBAAyB;;MAE3B;IAEF;;;;;QAKI,0DAA0D;;;QAG1D,sDAAsD;;MAExD;IAEF;;;;;;;QAOI,8CAA8C;;MAEhD;IAEF;;;;;;MAME;IAEF;;QAEI,kDAAkD;;;;;;MAGpD;IAEF;;;;;MAKE;IAEF;;;;MAIE;IAEF;QACI;;mEAE2D;;MAE7D;IAEF;;YAhII,qDAAqD;;YAErD,2BAA2B;;YAE3B,8CAA8C;;YAE9C,kEAAkE;;;;;;;YAYlE,iEAAiE;;YAEjE,6DAA6D;;YAE7D,kEAAkE;;YAElE,oDAAoD;;;;;;;;YAKpD,2CAA2C;;YAE3C,sEAAsE;;;;YAItE,kDAAkD;;YAElD,iEAAiE;;;;;;;oBAoBzD,mEAAmE;;;gBANvE,oDAAoD;;gBAEpD,0BAA0B;;;YAP9B,yDAAyD;;YAEzD,yDAAyD;;;;YAgBzD,gEAAgE;;YAEhE,yBAAyB;;;;;;;;YASzB,0DAA0D;;;YAG1D,sDAAsD;;;;;;;;;;YAWtD,8CAA8C;;;;;;;;;;;;;;;;YAc9C,kDAAkD;;;;;;;;;;;;;;;YAmBlD;;uEAE2D;;;MAyB9D;IAED,0BA6BC;IAED;;OAEG;IACH,YAFW,iCAAiC,QAI3C;IAED,2CAIC;CACJ"}
|