@woosh/meep-engine 2.138.17 → 2.138.19
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 +1 -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/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 +1 -1
- package/src/engine/ecs/EntityManager.js +1 -1
- 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.js +1 -1
- 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/grid/HeightMap2AOMap.d.ts.map +1 -1
- package/src/engine/ecs/grid/HeightMap2AOMap.js +3 -2
- 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/ecs/path/PathDisplaySystem.d.ts.map +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/shaders/AmbientOcclusionShader.d.ts.map +1 -1
- package/src/engine/graphics/shaders/AmbientOcclusionShader.js +20 -5
- 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 +21 -14
- package/src/engine/graphics/util/build_max_height_pyramid.d.ts.map +1 -1
- package/src/engine/graphics/util/build_max_height_pyramid.js +107 -70
- 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,205 @@
|
|
|
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: 1.80,
|
|
13
|
+
/** Crouched eye height. */
|
|
14
|
+
crouchHeight: 1.10,
|
|
15
|
+
/** Capsule radius, for downstream physics. */
|
|
16
|
+
radius: 0.35,
|
|
17
|
+
/** Kilograms — drives bob amplitude and land-impact magnitude. */
|
|
18
|
+
mass: 80,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// Defaults are tuned toward an "athlete with juice" feel — plausible
|
|
22
|
+
// but biased for fun: snappy accel, fast top speed, generous air
|
|
23
|
+
// control, satisfying jump. Realistic-soldier values would roughly
|
|
24
|
+
// halve walk/sprint/airControl and use peakHeight ≈ 1.0–1.2.
|
|
25
|
+
motion = {
|
|
26
|
+
walkSpeed: 4.5, // brisk jog — quicker than a real walk
|
|
27
|
+
sprintSpeed: 9.0, // fast but sub-Olympic (~12 m/s is human peak)
|
|
28
|
+
crouchSpeed: 2.2,
|
|
29
|
+
/** [0..1] how much intent influences velocity while airborne. */
|
|
30
|
+
airControl: 0.5,
|
|
31
|
+
/** m/s^2 horizontal acceleration toward intent on ground. */
|
|
32
|
+
groundAccel: 60, // ~6g start-up — near-instant feel
|
|
33
|
+
/** m/s^2 horizontal deceleration toward 0 when intent is zero. */
|
|
34
|
+
groundDecel: 75, // crisp stops, no skating
|
|
35
|
+
/** m/s^2 horizontal acceleration while airborne. */
|
|
36
|
+
airAccel: 14, // mid-air agility for course-correction
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
jump = {
|
|
40
|
+
/** Apex height of a clean jump, meters. */
|
|
41
|
+
peakHeight: 1.8, // matches eye height — the iconic "athlete leap"
|
|
42
|
+
/** Seconds to reach apex from launch. Together these two derive g. */
|
|
43
|
+
timeToApex: 0.35, // snappier rise
|
|
44
|
+
coyoteTime: 0.14, // generous for forgiving platforming
|
|
45
|
+
bufferTime: 0.16,
|
|
46
|
+
/** Gravity multiplier while falling (vy <= 0). */
|
|
47
|
+
fallGravityMult: 2.4, // fast fall — classic Mario/Sonic feel
|
|
48
|
+
/** Gravity multiplier when jump released early during ascent. */
|
|
49
|
+
cutGravityMult: 2.0, // sharper variable-height differentiation
|
|
50
|
+
anticipation: {
|
|
51
|
+
duration: 0.06, // short — keeps jumps responsive
|
|
52
|
+
dipAmount: 0.08, // but visibly squashes
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
landing = {
|
|
57
|
+
/** m/s impact threshold; below = soft landing signal. */
|
|
58
|
+
softThreshold: 3.0,
|
|
59
|
+
/** m/s impact threshold; above = hard landing signal. */
|
|
60
|
+
hardThreshold: 7.5,
|
|
61
|
+
recovery: {
|
|
62
|
+
/** Meters of eye dip per m/s of impact velocity. */
|
|
63
|
+
dipPerVy: 0.016, // beefier squash on landing
|
|
64
|
+
/** Clamp on total dip. */
|
|
65
|
+
dipMax: 0.24,
|
|
66
|
+
spring: {
|
|
67
|
+
halfLife: 0.11,
|
|
68
|
+
/** zeta < 1 → rings once before settling, reads as compression. */
|
|
69
|
+
zeta: 0.50, // a touch more bounce
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
crouch = {
|
|
75
|
+
/** Seconds to lerp eye height between standing and crouched. */
|
|
76
|
+
transitionTime: 0.18,
|
|
77
|
+
/** "hold" or "toggle" */
|
|
78
|
+
mode: "hold",
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
bob = {
|
|
82
|
+
stepFreqAtWalk: 1.8,
|
|
83
|
+
stepFreqExp: 0.75, // sub-linear so sprint isn't frantic
|
|
84
|
+
verticalAmpAtWalk: 0.055,
|
|
85
|
+
lateralAmpAtWalk: 0.030,
|
|
86
|
+
/** Extra amplitude per kg above 80kg (reference mass). */
|
|
87
|
+
ampMassScale: 0.005,
|
|
88
|
+
rollAtWalkDeg: 0.8, // a touch more visible head sway
|
|
89
|
+
/** Speeds below this don't tick the stride at all. */
|
|
90
|
+
minStepSpeed: 0.2,
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
breath = {
|
|
94
|
+
rateRestHz: 0.23,
|
|
95
|
+
rateMaxHz: 0.70,
|
|
96
|
+
amplitudeRestM: 0.004,
|
|
97
|
+
amplitudeMaxM: 0.022,
|
|
98
|
+
pitchAmpRestDeg: 0.10,
|
|
99
|
+
pitchAmpMaxDeg: 0.55,
|
|
100
|
+
/** ±20% amplitude noise rides on the sine. */
|
|
101
|
+
noiseAmount: 0.20,
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
exertion = {
|
|
105
|
+
sprintRiseRate: 0.20,
|
|
106
|
+
jumpRise: 0.08,
|
|
107
|
+
idleDecayRate: 0.12,
|
|
108
|
+
rateDecayHalfLife: 4.0,
|
|
109
|
+
ampDecayHalfLife: 2.0,
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
lean = {
|
|
113
|
+
enabled: true,
|
|
114
|
+
/** Degrees of roll per (lateral m/s^2 / 9.81). */
|
|
115
|
+
maxRollDeg: 3.2, // more visible lean into turns — sells the athleticism
|
|
116
|
+
spring: { halfLife: 0.16, zeta: 1.0 },
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
fov = {
|
|
120
|
+
base: 75, // wider baseline — more energetic
|
|
121
|
+
sprintAdd: 10, // dramatic punch on sprint (Apex/Titanfall feel)
|
|
122
|
+
crouchAdd: -4,
|
|
123
|
+
smoothHalfLife: 0.18, // slightly snappier transitions
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
look = {
|
|
127
|
+
pitchMinDeg: -85,
|
|
128
|
+
pitchMaxDeg: 85,
|
|
129
|
+
invertY: false,
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
gravity = {
|
|
133
|
+
/** Default gravity magnitude (m/s^2). Overridden by computeJumpFromApex once
|
|
134
|
+
* the jump tunables are resolved; kept here so non-jumping entities (NPCs,
|
|
135
|
+
* paused players) still have a sensible fall behavior. */
|
|
136
|
+
magnitude: 9.81,
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
toJSON() {
|
|
140
|
+
return {
|
|
141
|
+
body: { ...this.body },
|
|
142
|
+
motion: { ...this.motion },
|
|
143
|
+
jump: { ...this.jump, anticipation: { ...this.jump.anticipation } },
|
|
144
|
+
landing: {
|
|
145
|
+
...this.landing,
|
|
146
|
+
recovery: {
|
|
147
|
+
...this.landing.recovery,
|
|
148
|
+
spring: { ...this.landing.recovery.spring },
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
crouch: { ...this.crouch },
|
|
152
|
+
bob: { ...this.bob },
|
|
153
|
+
breath: { ...this.breath },
|
|
154
|
+
exertion: { ...this.exertion },
|
|
155
|
+
lean: { ...this.lean, spring: { ...this.lean.spring } },
|
|
156
|
+
fov: { ...this.fov },
|
|
157
|
+
look: { ...this.look },
|
|
158
|
+
gravity: { ...this.gravity },
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
fromJSON(json) {
|
|
163
|
+
if (json.body) Object.assign(this.body, json.body);
|
|
164
|
+
if (json.motion) Object.assign(this.motion, json.motion);
|
|
165
|
+
if (json.jump) {
|
|
166
|
+
const { anticipation, ...rest } = json.jump;
|
|
167
|
+
Object.assign(this.jump, rest);
|
|
168
|
+
if (anticipation) Object.assign(this.jump.anticipation, anticipation);
|
|
169
|
+
}
|
|
170
|
+
if (json.landing) {
|
|
171
|
+
const { recovery, ...rest } = json.landing;
|
|
172
|
+
Object.assign(this.landing, rest);
|
|
173
|
+
if (recovery) {
|
|
174
|
+
const { spring, ...rrest } = recovery;
|
|
175
|
+
Object.assign(this.landing.recovery, rrest);
|
|
176
|
+
if (spring) Object.assign(this.landing.recovery.spring, spring);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (json.crouch) Object.assign(this.crouch, json.crouch);
|
|
180
|
+
if (json.bob) Object.assign(this.bob, json.bob);
|
|
181
|
+
if (json.breath) Object.assign(this.breath, json.breath);
|
|
182
|
+
if (json.exertion) Object.assign(this.exertion, json.exertion);
|
|
183
|
+
if (json.lean) {
|
|
184
|
+
const { spring, ...rest } = json.lean;
|
|
185
|
+
Object.assign(this.lean, rest);
|
|
186
|
+
if (spring) Object.assign(this.lean.spring, spring);
|
|
187
|
+
}
|
|
188
|
+
if (json.fov) Object.assign(this.fov, json.fov);
|
|
189
|
+
if (json.look) Object.assign(this.look, json.look);
|
|
190
|
+
if (json.gravity) Object.assign(this.gravity, json.gravity);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @param {FirstPersonPlayerControllerConfig} other
|
|
195
|
+
*/
|
|
196
|
+
copy(other) {
|
|
197
|
+
this.fromJSON(other.toJSON());
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
clone() {
|
|
201
|
+
const c = new FirstPersonPlayerControllerConfig();
|
|
202
|
+
c.copy(this);
|
|
203
|
+
return c;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drives a first-person camera + body from intent fields. See sibling
|
|
3
|
+
* DESIGN.md for goals, architecture, and the five processing layers (L0..L4).
|
|
4
|
+
*
|
|
5
|
+
* - fixedUpdate runs L1 (locomotion), L2 (pose state), and L4 (events) so
|
|
6
|
+
* the simulation remains deterministic.
|
|
7
|
+
* - update runs L3 (camera composition) at render rate so the eye is never
|
|
8
|
+
* smoother than the screen.
|
|
9
|
+
*
|
|
10
|
+
* The system itself integrates a simple flat-floor at y = `config.gravity.magnitude > 0
|
|
11
|
+
* ? state.groundY : -Infinity` for the prototype. A real physics layer should
|
|
12
|
+
* write `state.grounded`/`state.groundNormal` from outside instead; the
|
|
13
|
+
* built-in resolver is just a convenience to keep the controller usable
|
|
14
|
+
* without dependencies.
|
|
15
|
+
*
|
|
16
|
+
* @author Alex Goldring
|
|
17
|
+
* @copyright Company Named Limited (c) 2026
|
|
18
|
+
*/
|
|
19
|
+
export class FirstPersonPlayerControllerSystem extends System<any, any, any, any, any> {
|
|
20
|
+
constructor();
|
|
21
|
+
dependencies: (typeof Transform | typeof FirstPersonPlayerController)[];
|
|
22
|
+
components_used: (ResourceAccessSpecification<typeof Transform> | ResourceAccessSpecification<typeof Camera>)[];
|
|
23
|
+
/**
|
|
24
|
+
* Per-entity runtime, keyed by entity id.
|
|
25
|
+
* @type {Map<number, PerEntityRuntime>}
|
|
26
|
+
*/
|
|
27
|
+
runtime: Map<number, PerEntityRuntime>;
|
|
28
|
+
/**
|
|
29
|
+
* If true, the system clamps body y >= groundY and writes
|
|
30
|
+
* state.grounded itself. Turn off when wiring a real physics layer.
|
|
31
|
+
* @type {boolean}
|
|
32
|
+
*/
|
|
33
|
+
useBuiltInFlatGround: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* The flat-ground y for the built-in resolver. Ignored when
|
|
36
|
+
* useBuiltInFlatGround is false.
|
|
37
|
+
* @type {number}
|
|
38
|
+
*/
|
|
39
|
+
groundY: number;
|
|
40
|
+
/**
|
|
41
|
+
* @param {FirstPersonPlayerController} controller
|
|
42
|
+
* @param {Transform} bodyTransform
|
|
43
|
+
* @param {number} entity
|
|
44
|
+
*/
|
|
45
|
+
link(controller: FirstPersonPlayerController, bodyTransform: Transform, entity: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* @param {FirstPersonPlayerController} controller
|
|
48
|
+
* @param {Transform} bodyTransform
|
|
49
|
+
* @param {number} entity
|
|
50
|
+
*/
|
|
51
|
+
unlink(controller: FirstPersonPlayerController, bodyTransform: Transform, entity: number): void;
|
|
52
|
+
_currentDt: number;
|
|
53
|
+
_currentRenderDt: number;
|
|
54
|
+
/**
|
|
55
|
+
* @private
|
|
56
|
+
* @param {FirstPersonPlayerController} controller
|
|
57
|
+
* @param {number} entity
|
|
58
|
+
*/
|
|
59
|
+
private _tickEntity;
|
|
60
|
+
/**
|
|
61
|
+
* @private
|
|
62
|
+
* @param {FirstPersonPlayerController} controller
|
|
63
|
+
* @param {PerEntityRuntime} runtime
|
|
64
|
+
* @returns {boolean}
|
|
65
|
+
*/
|
|
66
|
+
private _resolveCrouchHeld;
|
|
67
|
+
/**
|
|
68
|
+
* Compose the eye transform from body + state-driven offsets.
|
|
69
|
+
* @private
|
|
70
|
+
* @param {FirstPersonPlayerController} controller
|
|
71
|
+
* @param {number} entity
|
|
72
|
+
*/
|
|
73
|
+
private _composeEye;
|
|
74
|
+
}
|
|
75
|
+
import { System } from "../../ecs/System.js";
|
|
76
|
+
import { Transform } from "../../ecs/transform/Transform.js";
|
|
77
|
+
import { FirstPersonPlayerController } from "./FirstPersonPlayerController.js";
|
|
78
|
+
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
79
|
+
import { Camera } from "../../graphics/ecs/camera/Camera.js";
|
|
80
|
+
/**
|
|
81
|
+
* Per-entity runtime state the system maintains internally — too transient
|
|
82
|
+
* even for {@link FirstPersonPlayerController}'s `state` member, because it
|
|
83
|
+
* encodes input-edge bookkeeping and timer values the public surface should
|
|
84
|
+
* never see directly.
|
|
85
|
+
*/
|
|
86
|
+
declare class PerEntityRuntime {
|
|
87
|
+
/** Eye pitch in radians, clamped to config.look limits. */
|
|
88
|
+
eyePitch: number;
|
|
89
|
+
/** Body yaw in radians (around world up). */
|
|
90
|
+
bodyYaw: number;
|
|
91
|
+
/** Horizontal+vertical velocity. We integrate these inside the system
|
|
92
|
+
* when no external physics layer is attached. */
|
|
93
|
+
velocityX: number;
|
|
94
|
+
velocityY: number;
|
|
95
|
+
velocityZ: number;
|
|
96
|
+
/** Previous-tick jump intent — for rising/falling edge detection. */
|
|
97
|
+
prevJumpHeld: boolean;
|
|
98
|
+
/** Previous-tick crouch intent — for toggle-mode edge detection. */
|
|
99
|
+
prevCrouchHeld: boolean;
|
|
100
|
+
/** True while crouch toggle is latched on (used only in toggle mode). */
|
|
101
|
+
crouchLatched: boolean;
|
|
102
|
+
/** Remaining time in jump anticipation, or <= 0 if not anticipating. */
|
|
103
|
+
anticipationRemaining: number;
|
|
104
|
+
/** Cached derived gravity (m/s^2) from peakHeight + timeToApex. */
|
|
105
|
+
gravity: number;
|
|
106
|
+
/** Cached derived jump impulse (m/s upward). */
|
|
107
|
+
jumpInitialVy: number;
|
|
108
|
+
/** Spring state for landing dip (mutated in place). */
|
|
109
|
+
landSpring: {
|
|
110
|
+
value: number;
|
|
111
|
+
velocity: number;
|
|
112
|
+
};
|
|
113
|
+
/** Spring state for FOV. */
|
|
114
|
+
fovSpring: {
|
|
115
|
+
value: number;
|
|
116
|
+
velocity: number;
|
|
117
|
+
};
|
|
118
|
+
/** Spring state for eye height (crouch). */
|
|
119
|
+
eyeHeightSpring: {
|
|
120
|
+
value: number;
|
|
121
|
+
velocity: number;
|
|
122
|
+
};
|
|
123
|
+
/** Spring state for lean roll (radians). */
|
|
124
|
+
leanSpring: {
|
|
125
|
+
value: number;
|
|
126
|
+
velocity: number;
|
|
127
|
+
};
|
|
128
|
+
/** Previous horizontal velocity — for lateral acceleration → lean. */
|
|
129
|
+
prevVelocityX: number;
|
|
130
|
+
prevVelocityZ: number;
|
|
131
|
+
/** Previous-tick grounded for edge detection. */
|
|
132
|
+
prevGrounded: boolean;
|
|
133
|
+
/** Vertical speed at moment of last "leave ground". */
|
|
134
|
+
takeoffVy: number;
|
|
135
|
+
/** Max vertical position since last takeoff — for jump apex detection. */
|
|
136
|
+
peakAltitude: number;
|
|
137
|
+
/** Set true once a jump has been launched; cleared on land. */
|
|
138
|
+
midJump: boolean;
|
|
139
|
+
/** Apex already fired for this airborne segment? */
|
|
140
|
+
apexFired: boolean;
|
|
141
|
+
/** Stride phase from previous fixed step — for footstep edge detection. */
|
|
142
|
+
prevStridePhase: number;
|
|
143
|
+
/** Breath phase from previous fixed step — for inhale/exhale edge detection. */
|
|
144
|
+
prevBreathPhase: number;
|
|
145
|
+
/** Which foot fires next — flipped on each footstep signal. */
|
|
146
|
+
nextFootSide: string;
|
|
147
|
+
/** Cached eye entity ID. -1 until link assigns it. */
|
|
148
|
+
eyeEntity: number;
|
|
149
|
+
}
|
|
150
|
+
export {};
|
|
151
|
+
//# sourceMappingURL=FirstPersonPlayerControllerSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FirstPersonPlayerControllerSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/control/first-person/FirstPersonPlayerControllerSystem.js"],"names":[],"mappings":"AAqGA;;;;;;;;;;;;;;;;;GAiBG;AACH;IACI,cA6BC;IA1BG,wEAA4D;IAE5D,gHAGC;IAED;;;OAGG;IACH,SAFU,IAAI,MAAM,EAAE,gBAAgB,CAAC,CAEf;IAExB;;;;OAIG;IACH,sBAFU,OAAO,CAEe;IAEhC;;;;OAIG;IACH,SAFU,MAAM,CAEA;IAGpB;;;;OAIG;IACH,iBAJW,2BAA2B,iBAC3B,SAAS,UACT,MAAM,QAmDhB;IAED;;;;OAIG;IACH,mBAJW,2BAA2B,iBAC3B,SAAS,UACT,MAAM,QAWhB;IAUG,mBAAoB;IAYpB,yBAA0B;IAI9B;;;;OAIG;IACH,oBAsXC;IAED;;;;;OAKG;IACH,2BAeC;IAED;;;;;OAKG;IACH,oBAsGC;CACJ;uBA/uBsB,qBAAqB;0BAClB,kCAAkC;4CAEhB,kCAAkC;4CANlC,oDAAoD;uBAKzE,qCAAqC;AAqB5D;;;;;GAKG;AACH;IAEQ,2DAA2D;IAC3D,iBAAiB;IACjB,6CAA6C;IAC7C,gBAAgB;IAEhB;sDACkD;IAClD,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAElB,qEAAqE;IACrE,sBAAyB;IACzB,oEAAoE;IACpE,wBAA2B;IAC3B,yEAAyE;IACzE,uBAA0B;IAE1B,wEAAwE;IACxE,8BAA8B;IAC9B,mEAAmE;IACnE,gBAAmB;IACnB,gDAAgD;IAChD,sBAAwB;IAExB,uDAAuD;IACvD;;;MAA2C;IAC3C,4BAA4B;IAC5B;;;MAA2C;IAC3C,4CAA4C;IAC5C;;;MAAmD;IACnD,4CAA4C;IAC5C;;;MAA2C;IAE3C,sEAAsE;IACtE,sBAAsB;IACtB,sBAAsB;IAEtB,iDAAiD;IACjD,sBAAwB;IACxB,uDAAuD;IACvD,kBAAkB;IAClB,0EAA0E;IAC1E,qBAAqB;IACrB,+DAA+D;IAC/D,iBAAoB;IACpB,oDAAoD;IACpD,mBAAsB;IAEtB,2EAA2E;IAC3E,wBAAwB;IACxB,gFAAgF;IAChF,wBAAwB;IACxB,+DAA+D;IAC/D,qBAAuB;IAEvB,sDAAsD;IACtD,kBAAmB;CAE1B"}
|