@relu-interactives/spatial-ecs 0.11.0 → 0.11.1
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/dist/{System-BldSHxZV.d.cts → System-D8vm-Jvv.d.cts} +110 -3
- package/dist/{System-CADhPyQs.d.ts → System-ttkDQCrj.d.ts} +110 -3
- package/dist/{XRHandPose-D3Ab1Dfs.d.cts → XRHandPose-C97XVW2R.d.cts} +2 -41
- package/dist/{XRHandPose-BNSwd1y9.d.ts → XRHandPose-CxXtWF1y.d.ts} +2 -41
- package/dist/animation/index.cjs +33 -1
- package/dist/animation/index.cjs.map +1 -1
- package/dist/animation/index.js +1 -1
- package/dist/{chunk-TY3XCHOR.js → chunk-2DJBNWBB.js} +56 -15
- package/dist/chunk-2DJBNWBB.js.map +1 -0
- package/dist/{chunk-WWP46AEF.js → chunk-4FHJA6U4.js} +8 -4
- package/dist/chunk-4FHJA6U4.js.map +1 -0
- package/dist/{chunk-GSWC6LLD.js → chunk-GMSFEXUZ.js} +35 -3
- package/dist/chunk-GMSFEXUZ.js.map +1 -0
- package/dist/{chunk-JEPUCLZX.js → chunk-QAZCVCMP.js} +88 -27
- package/dist/chunk-QAZCVCMP.js.map +1 -0
- package/dist/{chunk-NXASMBDS.js → chunk-SM5KGNYX.js} +4 -4
- package/dist/{chunk-NXASMBDS.js.map → chunk-SM5KGNYX.js.map} +1 -1
- package/dist/{chunk-JNYPJB55.js → chunk-T7SRBLPJ.js} +24 -4
- package/dist/chunk-T7SRBLPJ.js.map +1 -0
- package/dist/components/index.cjs +21 -1
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.cts +3 -3
- package/dist/components/index.d.ts +3 -3
- package/dist/components/index.js +1 -1
- package/dist/docs/api/Behaviour/classes/Behaviour.md +187 -46
- package/dist/docs/api/Behaviour/type-aliases/UiInteractionEvent.md +5 -5
- package/dist/docs/api/Component/classes/Component.md +7 -1
- package/dist/docs/api/components/classes/AnimationComponent.md +26 -26
- package/dist/docs/api/components/classes/AudioComponent.md +20 -19
- package/dist/docs/api/components/classes/BoneAttachmentComponent.md +65 -0
- package/dist/docs/api/components/classes/CameraComponent.md +14 -14
- package/dist/docs/api/components/classes/EntityType.md +3 -3
- package/dist/docs/api/components/classes/Environment.md +3 -3
- package/dist/docs/api/components/classes/IKComponent.md +59 -0
- package/dist/docs/api/components/classes/ImageComponent.md +7 -7
- package/dist/docs/api/components/classes/ImageTarget.md +7 -7
- package/dist/docs/api/components/classes/ImageTargetAnchor.md +4 -4
- package/dist/docs/api/components/classes/InstanceSlotComponent.md +4 -4
- package/dist/docs/api/components/classes/InstancedMeshComponent.md +10 -10
- package/dist/docs/api/components/classes/LightComponent.md +6 -6
- package/dist/docs/api/components/classes/MaterialComponent.md +14 -14
- package/dist/docs/api/components/classes/MeshComponent.md +3 -3
- package/dist/docs/api/components/classes/MeshGeometryComponent.md +9 -9
- package/dist/docs/api/components/classes/ModelComponent.md +6 -6
- package/dist/docs/api/components/classes/Name.md +3 -3
- package/dist/docs/api/components/classes/NetworkIdentityComponent.md +42 -0
- package/dist/docs/api/components/classes/NetworkSpawnerComponent.md +48 -0
- package/dist/docs/api/components/classes/NetworkTransformComponent.md +51 -0
- package/dist/docs/api/components/classes/NetworkedPropsComponent.md +47 -0
- package/dist/docs/api/components/classes/Object3DRef.md +4 -4
- package/dist/docs/api/components/classes/ParentId.md +3 -3
- package/dist/docs/api/components/classes/PhysicsComponent.md +7 -7
- package/dist/docs/api/components/classes/Postprocessing.md +3 -3
- package/dist/docs/api/components/classes/PrefabInstance.md +5 -5
- package/dist/docs/api/components/classes/PrefabNode.md +3 -3
- package/dist/docs/api/components/classes/ScriptComponent.md +5 -5
- package/dist/docs/api/components/classes/ScriptObjectComponent.md +9 -9
- package/dist/docs/api/components/classes/Selectable.md +3 -3
- package/dist/docs/api/components/classes/SelectionTransformState.md +5 -5
- package/dist/docs/api/components/classes/SpriteComponent.md +7 -7
- package/dist/docs/api/components/classes/TransformComponent.md +12 -12
- package/dist/docs/api/components/classes/UIButtonComponent.md +18 -14
- package/dist/docs/api/components/classes/UIPanelComponent.md +13 -11
- package/dist/docs/api/components/classes/UISliderComponent.md +16 -11
- package/dist/docs/api/components/classes/UITextComponent.md +14 -12
- package/dist/docs/api/components/classes/UIToggleComponent.md +12 -9
- package/dist/docs/api/components/classes/VRTeleportAreaComponent.md +6 -6
- package/dist/docs/api/components/classes/VideoComponent.md +28 -28
- package/dist/docs/api/components/classes/XRAnchorComponent.md +3 -3
- package/dist/docs/api/components/classes/XREnvironmentComponent.md +5 -5
- package/dist/docs/api/components/classes/XRHandPoseComponent.md +4 -4
- package/dist/docs/api/components/classes/XRInteractableComponent.md +28 -28
- package/dist/docs/api/components/classes/XRInteractorComponent.md +10 -10
- package/dist/docs/api/components/classes/XRInteractorSideComponent.md +3 -3
- package/dist/docs/api/components/classes/XRRigComponent.md +17 -17
- package/dist/docs/api/components/functions/createAttachPoint.md +1 -1
- package/dist/docs/api/components/functions/createHandPoseEntry.md +1 -1
- package/dist/docs/api/components/functions/defaultMaterialValue.md +1 -1
- package/dist/docs/api/components/functions/handPoseDefinitionFor.md +1 -1
- package/dist/docs/api/components/functions/normalizeBoneHold.md +25 -0
- package/dist/docs/api/components/functions/normalizeEnvironmentLighting.md +1 -1
- package/dist/docs/api/components/functions/normalizeIKChain.md +25 -0
- package/dist/docs/api/components/functions/normalizePhysicsState.md +1 -1
- package/dist/docs/api/components/functions/setModelLoadState.md +1 -1
- package/dist/docs/api/components/functions/setPhysicsLiveRef.md +1 -1
- package/dist/docs/api/components/index.md +18 -0
- package/dist/docs/api/components/type-aliases/AnimationComponentOptions.md +9 -9
- package/dist/docs/api/components/type-aliases/BoneAttachmentOptions.md +35 -0
- package/dist/docs/api/components/type-aliases/BoneHold.md +34 -0
- package/dist/docs/api/components/type-aliases/CameraComponentOptions.md +13 -13
- package/dist/docs/api/components/type-aliases/CameraProjection.md +1 -1
- package/dist/docs/api/components/type-aliases/CameraRuntimeType.md +1 -1
- package/dist/docs/api/components/type-aliases/ColliderShape.md +1 -1
- package/dist/docs/api/components/type-aliases/ColliderState.md +20 -20
- package/dist/docs/api/components/type-aliases/CubeMeshParameters.md +4 -4
- package/dist/docs/api/components/type-aliases/EditableMeshObjectKind.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentFogState.md +8 -8
- package/dist/docs/api/components/type-aliases/EnvironmentFogType.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentGradientEffect.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentLightingState.md +9 -9
- package/dist/docs/api/components/type-aliases/EnvironmentSkyboxImageProjection.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentSkyboxState.md +8 -8
- package/dist/docs/api/components/type-aliases/EnvironmentSkyboxType.md +1 -1
- package/dist/docs/api/components/type-aliases/EnvironmentState.md +6 -6
- package/dist/docs/api/components/type-aliases/EnvironmentToneMapping.md +1 -1
- package/dist/docs/api/components/type-aliases/IKChain.md +37 -0
- package/dist/docs/api/components/type-aliases/IKLimb.md +15 -0
- package/dist/docs/api/components/type-aliases/IKOptions.md +27 -0
- package/dist/docs/api/components/type-aliases/ImageTargetAnchorOptions.md +3 -3
- package/dist/docs/api/components/type-aliases/ImageTargetReference.md +7 -7
- package/dist/docs/api/components/type-aliases/InstanceTransform.md +13 -13
- package/dist/docs/api/components/type-aliases/InstancedMeshKind.md +1 -1
- package/dist/docs/api/components/type-aliases/LightShadowState.md +8 -8
- package/dist/docs/api/components/type-aliases/LightValueState.md +12 -12
- package/dist/docs/api/components/type-aliases/MaterialTypeValue.md +1 -1
- package/dist/docs/api/components/type-aliases/MaterialValueState.md +28 -28
- package/dist/docs/api/components/type-aliases/MeshGeometryParameters.md +1 -1
- package/dist/docs/api/components/type-aliases/MeshGeometryParametersByKind.md +7 -7
- package/dist/docs/api/components/type-aliases/ModelLoadState.md +1 -1
- package/dist/docs/api/components/type-aliases/NetValue.md +23 -0
- package/dist/docs/api/components/type-aliases/NetworkTransformOptions.md +18 -0
- package/dist/docs/api/components/type-aliases/PhysicsState.md +3 -3
- package/dist/docs/api/components/type-aliases/PlaneMeshParameters.md +3 -3
- package/dist/docs/api/components/type-aliases/PostprocessingState.md +62 -62
- package/dist/docs/api/components/type-aliases/RadiusHeightMeshParameters.md +3 -3
- package/dist/docs/api/components/type-aliases/RadiusMeshParameters.md +2 -2
- package/dist/docs/api/components/type-aliases/RigidbodyState.md +17 -17
- package/dist/docs/api/components/type-aliases/RigidbodyType.md +1 -1
- package/dist/docs/api/components/type-aliases/ScriptEntry.md +8 -8
- package/dist/docs/api/components/type-aliases/ScriptObjectComponentInput.md +1 -1
- package/dist/docs/api/components/type-aliases/ScriptObjectRuntimeState.md +1 -1
- package/dist/docs/api/components/type-aliases/TextureFilteringValue.md +1 -1
- package/dist/docs/api/components/type-aliases/TransformData.md +4 -4
- package/dist/docs/api/components/type-aliases/TransformModeValue.md +1 -1
- package/dist/docs/api/components/type-aliases/TransformSpaceValue.md +1 -1
- package/dist/docs/api/components/type-aliases/UIButtonOptions.md +21 -13
- package/dist/docs/api/components/type-aliases/UIPanelOptions.md +14 -10
- package/dist/docs/api/components/type-aliases/UISliderOptions.md +20 -10
- package/dist/docs/api/components/type-aliases/UITextOptions.md +15 -11
- package/dist/docs/api/components/type-aliases/UIToggleOptions.md +14 -8
- package/dist/docs/api/components/type-aliases/UiFollowMode.md +1 -1
- package/dist/docs/api/components/type-aliases/UiIconPosition.md +13 -0
- package/dist/docs/api/components/type-aliases/UiSliderVariant.md +13 -0
- package/dist/docs/api/components/type-aliases/UiTextAlign.md +1 -1
- package/dist/docs/api/components/type-aliases/UiTextVAlign.md +1 -1
- package/dist/docs/api/components/type-aliases/UiToggleVariant.md +13 -0
- package/dist/docs/api/components/type-aliases/VRTeleportAreaOptions.md +5 -5
- package/dist/docs/api/components/type-aliases/Vec3.md +4 -4
- package/dist/docs/api/components/type-aliases/VrTeleportShape.md +1 -1
- package/dist/docs/api/components/type-aliases/XRAnchorOptions.md +2 -2
- package/dist/docs/api/components/type-aliases/XRHandPoseOptions.md +3 -3
- package/dist/docs/api/components/type-aliases/XRInteractableOptions.md +27 -27
- package/dist/docs/api/components/type-aliases/XRInteractorOptions.md +9 -9
- package/dist/docs/api/components/type-aliases/XRRigOptions.md +16 -16
- package/dist/docs/api/components/type-aliases/XrAttachPoint.md +13 -13
- package/dist/docs/api/components/type-aliases/XrDistanceGrabBehavior.md +1 -1
- package/dist/docs/api/components/type-aliases/XrEnvironmentKind.md +1 -1
- package/dist/docs/api/components/type-aliases/XrEnvironmentOrientation.md +1 -1
- package/dist/docs/api/components/type-aliases/XrEnvironmentPhysics.md +1 -1
- package/dist/docs/api/components/type-aliases/XrGrabGesture.md +1 -1
- package/dist/docs/api/components/type-aliases/XrGrabHands.md +1 -1
- package/dist/docs/api/components/type-aliases/XrGrabReach.md +1 -1
- package/dist/docs/api/components/type-aliases/XrHandPoseEntry.md +12 -12
- package/dist/docs/api/components/type-aliases/XrHandPreset.md +1 -1
- package/dist/docs/api/components/type-aliases/XrInteractorSide.md +1 -1
- package/dist/docs/api/components/type-aliases/XrInteractorType.md +1 -1
- package/dist/docs/api/components/type-aliases/XrLocomotionMode.md +1 -1
- package/dist/docs/api/components/type-aliases/XrTrackingOrigin.md +1 -1
- package/dist/docs/api/components/type-aliases/XrTwoHandRotation.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_COLLIDER_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_LIGHTING.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_INSTANCED_MESH_PARAMETERS.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_INSTANCE_TRANSFORM.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_MESH_GEOMETRY_PARAMETERS.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_PHYSICS_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_POSE_CURLS.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_POSE_DIRECTIONS.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_POSTPROCESSING_STATE.md +1 -1
- package/dist/docs/api/components/variables/DEFAULT_RIGIDBODY_STATE.md +1 -1
- package/dist/docs/api/components/variables/MODEL_NO_PATH_MESSAGE.md +1 -1
- package/dist/docs/api/index/classes/AnimationStateMachine.md +16 -16
- package/dist/docs/api/index/classes/AnimationStateManager.md +13 -13
- package/dist/docs/api/index/classes/AnimationSystem.md +3 -3
- package/dist/docs/api/index/classes/AudioMixer.md +161 -0
- package/dist/docs/api/index/classes/AudioSystem.md +138 -4
- package/dist/docs/api/index/classes/BoneHoldSystem.md +54 -0
- package/dist/docs/api/index/classes/CameraSyncSystem.md +2 -2
- package/dist/docs/api/index/classes/EnvironmentSyncSystem.md +4 -4
- package/dist/docs/api/index/classes/HandPoseTracker.md +6 -6
- package/dist/docs/api/index/classes/IKSystem.md +98 -0
- package/dist/docs/api/index/classes/InputSystem.md +33 -33
- package/dist/docs/api/index/classes/InstancedMeshSystem.md +2 -2
- package/dist/docs/api/index/classes/LightSyncSystem.md +2 -2
- package/dist/docs/api/index/classes/MaterialSyncSystem.md +3 -3
- package/dist/docs/api/index/classes/MeshGeometrySystem.md +2 -2
- package/dist/docs/api/index/classes/ObjectManagementSystem.md +269 -14
- package/dist/docs/api/index/classes/ObjectVisibilitySystem.md +2 -2
- package/dist/docs/api/index/classes/PhysicsSyncSystem.md +4 -4
- package/dist/docs/api/index/classes/PostprocessingSyncSystem.md +4 -4
- package/dist/docs/api/index/classes/RenderSystem.md +3 -3
- package/dist/docs/api/index/classes/ScriptBehaviourSystem.md +4 -4
- package/dist/docs/api/index/classes/ScriptObject.md +10 -10
- package/dist/docs/api/index/classes/ScriptObjectSystem.md +6 -6
- package/dist/docs/api/index/classes/SlotChooser.md +59 -0
- package/dist/docs/api/index/classes/TeleportAimGate.md +4 -4
- package/dist/docs/api/index/classes/ThrowVelocityTracker.md +4 -4
- package/dist/docs/api/index/classes/TransformSyncSystem.md +2 -2
- package/dist/docs/api/index/classes/UIInteractionSystem.md +3 -3
- package/dist/docs/api/index/classes/UIPanelSystem.md +4 -4
- package/dist/docs/api/index/classes/VRTeleportAreaSystem.md +2 -2
- package/dist/docs/api/index/classes/VideoSystem.md +4 -4
- package/dist/docs/api/index/classes/World.md +168 -98
- package/dist/docs/api/index/classes/XRAnchorSystem.md +4 -4
- package/dist/docs/api/index/classes/XRControllerVisualSystem.md +4 -4
- package/dist/docs/api/index/classes/XREnvironmentSystem.md +7 -7
- package/dist/docs/api/index/classes/XRHandPoseSystem.md +5 -5
- package/dist/docs/api/index/classes/XRHitTestSystem.md +4 -4
- package/dist/docs/api/index/classes/XRHoverVisualSystem.md +4 -4
- package/dist/docs/api/index/classes/XRInputSystem.md +9 -9
- package/dist/docs/api/index/classes/XRInteractionSystem.md +18 -18
- package/dist/docs/api/index/classes/XRLocomotionSystem.md +7 -7
- package/dist/docs/api/index/classes/XRSessionSystem.md +6 -6
- package/dist/docs/api/index/classes/XRTeleportVisualSystem.md +4 -4
- package/dist/docs/api/index/functions/angularVelocityFrom.md +1 -1
- package/dist/docs/api/index/functions/applyHandMaterial.md +1 -1
- package/dist/docs/api/index/functions/applyPrefabToSnapshotInstances.md +1 -1
- package/dist/docs/api/index/functions/arcGroundCrossing.md +1 -1
- package/dist/docs/api/index/functions/buildComponentValueMaps.md +1 -1
- package/dist/docs/api/index/functions/buildNodeKeyMapsFromSnapshot.md +1 -1
- package/dist/docs/api/index/functions/buildNodeMapsFromSnapshot.md +1 -1
- package/dist/docs/api/index/functions/canonicalizeComponentValue.md +1 -1
- package/dist/docs/api/index/functions/clearModelCache.md +1 -1
- package/dist/docs/api/index/functions/clearPrefabCache.md +1 -1
- package/dist/docs/api/index/functions/cloneHandPose.md +1 -1
- package/dist/docs/api/index/functions/collectDiffPaths.md +1 -1
- package/dist/docs/api/index/functions/collectDirectPrefabDependencies.md +1 -1
- package/dist/docs/api/index/functions/collectEntitySubtree.md +1 -1
- package/dist/docs/api/index/functions/collectSnapshotSubtreeIds.md +1 -1
- package/dist/docs/api/index/functions/computeFingerCurl.md +1 -1
- package/dist/docs/api/index/functions/computeHandShape.md +1 -1
- package/dist/docs/api/index/functions/computeInstanceOverrides.md +1 -1
- package/dist/docs/api/index/functions/computePalmPose.md +1 -1
- package/dist/docs/api/index/functions/computePalmWidth.md +1 -1
- package/dist/docs/api/index/functions/computePinch.md +1 -1
- package/dist/docs/api/index/functions/computeSpread.md +1 -1
- package/dist/docs/api/index/functions/createAnimationComponent.md +1 -1
- package/dist/docs/api/index/functions/createAudioComponent.md +1 -1
- package/dist/docs/api/index/functions/createBoneAttachmentComponent.md +28 -0
- package/dist/docs/api/index/functions/createCameraComponent.md +1 -1
- package/dist/docs/api/index/functions/createEntityTypeComponent.md +1 -1
- package/dist/docs/api/index/functions/createEnvironmentComponent.md +1 -1
- package/dist/docs/api/index/functions/createGLTFLoader.md +30 -0
- package/dist/docs/api/index/functions/createHandMaterial.md +1 -1
- package/dist/docs/api/index/functions/createIKComponent.md +28 -0
- package/dist/docs/api/index/functions/createImageComponent.md +1 -1
- package/dist/docs/api/index/functions/createImageTargetAnchorComponent.md +1 -1
- package/dist/docs/api/index/functions/createImageTargetComponent.md +1 -1
- package/dist/docs/api/index/functions/createInstanceSlotComponent.md +1 -1
- package/dist/docs/api/index/functions/createInstancedMeshComponent.md +1 -1
- package/dist/docs/api/index/functions/createLightComponent.md +1 -1
- package/dist/docs/api/index/functions/createMaterialComponent.md +1 -1
- package/dist/docs/api/index/functions/createMeshComponent.md +1 -1
- package/dist/docs/api/index/functions/createMeshGeometryComponent.md +1 -1
- package/dist/docs/api/index/functions/createModelComponent.md +1 -1
- package/dist/docs/api/index/functions/createNameComponent.md +1 -1
- package/dist/docs/api/index/functions/createNetworkIdentityComponent.md +24 -0
- package/dist/docs/api/index/functions/createNetworkSpawnerComponent.md +28 -0
- package/dist/docs/api/index/functions/createNetworkTransformComponent.md +28 -0
- package/dist/docs/api/index/functions/createNetworkedPropsComponent.md +28 -0
- package/dist/docs/api/index/functions/createObject3DRefComponent.md +1 -1
- package/dist/docs/api/index/functions/createParentIdComponent.md +1 -1
- package/dist/docs/api/index/functions/createPhysicsComponent.md +1 -1
- package/dist/docs/api/index/functions/createPostprocessingComponent.md +1 -1
- package/dist/docs/api/index/functions/createScriptComponent.md +1 -1
- package/dist/docs/api/index/functions/createScriptObjectComponent.md +1 -1
- package/dist/docs/api/index/functions/createSelectableComponent.md +1 -1
- package/dist/docs/api/index/functions/createSelectionTransformStateComponent.md +1 -1
- package/dist/docs/api/index/functions/createSpriteComponent.md +1 -1
- package/dist/docs/api/index/functions/createTransformComponent.md +1 -1
- package/dist/docs/api/index/functions/createUIButtonComponent.md +1 -1
- package/dist/docs/api/index/functions/createUIPanelComponent.md +1 -1
- package/dist/docs/api/index/functions/createUISliderComponent.md +1 -1
- package/dist/docs/api/index/functions/createUITextComponent.md +1 -1
- package/dist/docs/api/index/functions/createUIToggleComponent.md +1 -1
- package/dist/docs/api/index/functions/createVRTeleportAreaComponent.md +1 -1
- package/dist/docs/api/index/functions/createVideoComponent.md +1 -1
- package/dist/docs/api/index/functions/createXRAnchorComponent.md +1 -1
- package/dist/docs/api/index/functions/createXRHandPoseComponent.md +1 -1
- package/dist/docs/api/index/functions/createXRInteractableComponent.md +1 -1
- package/dist/docs/api/index/functions/createXRInteractorComponent.md +1 -1
- package/dist/docs/api/index/functions/createXRInteractorSideComponent.md +1 -1
- package/dist/docs/api/index/functions/createXRRigComponent.md +1 -1
- package/dist/docs/api/index/functions/decanonicalizeComponentValue.md +1 -1
- package/dist/docs/api/index/functions/despawnPrefab.md +1 -1
- package/dist/docs/api/index/functions/encodeOverride.md +1 -1
- package/dist/docs/api/index/functions/estimateHandScale.md +1 -1
- package/dist/docs/api/index/functions/findModelBone.md +30 -0
- package/dist/docs/api/index/functions/findSnapshotRootEntityIds.md +1 -1
- package/dist/docs/api/index/functions/findTopLevelNestedRegions.md +1 -1
- package/dist/docs/api/index/functions/getHandPosePreset.md +1 -1
- package/dist/docs/api/index/functions/gripQuaternion.md +36 -0
- package/dist/docs/api/index/functions/groupOverridePaths.md +1 -1
- package/dist/docs/api/index/functions/handPoseFromCurls.md +1 -1
- package/dist/docs/api/index/functions/hydrateWorldFromSnapshot.md +1 -1
- package/dist/docs/api/index/functions/hydrateWorldFromSnapshotDetailed.md +1 -1
- package/dist/docs/api/index/functions/indexSnapshotByEntity.md +1 -1
- package/dist/docs/api/index/functions/instantiateSubtree.md +1 -1
- package/dist/docs/api/index/functions/listModelBones.md +25 -0
- package/dist/docs/api/index/functions/loadPrefab.md +1 -1
- package/dist/docs/api/index/functions/loadSharedGltf.md +1 -1
- package/dist/docs/api/index/functions/matchHandPose.md +1 -1
- package/dist/docs/api/index/functions/mergeComponentValue.md +1 -1
- package/dist/docs/api/index/functions/parseOverride.md +1 -1
- package/dist/docs/api/index/functions/parsePrefabAsset.md +1 -1
- package/dist/docs/api/index/functions/prefabFileVersionFor.md +1 -1
- package/dist/docs/api/index/functions/readXrCapabilities.md +1 -1
- package/dist/docs/api/index/functions/registerDefaultComponentFactories.md +1 -1
- package/dist/docs/api/index/functions/registerDefaultFactories.md +1 -1
- package/dist/docs/api/index/functions/remapSnapshotEntityIds.md +3 -3
- package/dist/docs/api/index/functions/resolveDracoDecoderPath.md +1 -1
- package/dist/docs/api/index/functions/restoreComponentState.md +1 -1
- package/dist/docs/api/index/functions/restorePostCreateComponents.md +1 -1
- package/dist/docs/api/index/functions/sampleTeleportArc.md +1 -1
- package/dist/docs/api/index/functions/serializeEntitySubtree.md +1 -1
- package/dist/docs/api/index/functions/setDracoDecoderPath.md +1 -1
- package/dist/docs/api/index/functions/setPrefabAssetUrlResolver.md +1 -1
- package/dist/docs/api/index/functions/setWorldQuaternion.md +26 -0
- package/dist/docs/api/index/functions/soundBankFiles.md +25 -0
- package/dist/docs/api/index/functions/spawnPrefab.md +1 -1
- package/dist/docs/api/index/functions/twoBoneIK.md +41 -0
- package/dist/docs/api/index/index.md +31 -0
- package/dist/docs/api/index/interfaces/ChromaKeyOptions.md +5 -5
- package/dist/docs/api/index/interfaces/EcsSystem.md +3 -3
- package/dist/docs/api/index/interfaces/NetworkHandle.md +180 -0
- package/dist/docs/api/index/interfaces/PostprocessingBuildContext.md +6 -6
- package/dist/docs/api/index/interfaces/PostprocessingPipeline.md +5 -5
- package/dist/docs/api/index/interfaces/RenderBackend.md +8 -8
- package/dist/docs/api/index/interfaces/SoundBankAsset.md +18 -0
- package/dist/docs/api/index/interfaces/SoundSlot.md +31 -0
- package/dist/docs/api/index/interfaces/SoundTake.md +18 -0
- package/dist/docs/api/index/interfaces/StateMachine.md +13 -13
- package/dist/docs/api/index/type-aliases/AnimationStateCallbacks.md +4 -4
- package/dist/docs/api/index/type-aliases/ApplyPrefabToSnapshotResult.md +3 -3
- package/dist/docs/api/index/type-aliases/AudioBus.md +15 -0
- package/dist/docs/api/index/type-aliases/ComponentFactory.md +1 -1
- package/dist/docs/api/index/type-aliases/ComponentValueMaps.md +50 -38
- package/dist/docs/api/index/type-aliases/EcsComponentFactoryKind.md +7 -1
- package/dist/docs/api/index/type-aliases/EcsRenderer.md +1 -1
- package/dist/docs/api/index/type-aliases/EcsWorldComponentSnapshot.md +3 -3
- package/dist/docs/api/index/type-aliases/EcsWorldStateSnapshotLike.md +4 -4
- package/dist/docs/api/index/type-aliases/ExternalRefWarning.md +5 -5
- package/dist/docs/api/index/type-aliases/HandMaterialOptions.md +4 -4
- package/dist/docs/api/index/type-aliases/HandPoseTrackerOptions.md +5 -5
- package/dist/docs/api/index/type-aliases/HydrateOptions.md +3 -3
- package/dist/docs/api/index/type-aliases/HydrateWorldFromSnapshotResult.md +4 -4
- package/dist/docs/api/index/type-aliases/InstantiateSubtreeResult.md +3 -3
- package/dist/docs/api/index/type-aliases/KeyboardKey.md +1 -1
- package/dist/docs/api/index/type-aliases/ModelBoneInfo.md +29 -0
- package/dist/docs/api/index/type-aliases/ModuleLoader.md +1 -1
- package/dist/docs/api/index/type-aliases/MouseButton.md +1 -1
- package/dist/docs/api/index/type-aliases/NestedRegion.md +5 -5
- package/dist/docs/api/index/type-aliases/NetSpawnOptions.md +41 -0
- package/dist/docs/api/index/type-aliases/NodeKeyMaps.md +5 -5
- package/dist/docs/api/index/type-aliases/NodeMaps.md +4 -4
- package/dist/docs/api/index/type-aliases/PlaySlotOptions.md +32 -0
- package/dist/docs/api/index/type-aliases/PrefabAsset.md +5 -5
- package/dist/docs/api/index/type-aliases/RemapSnapshotOptions.md +2 -2
- package/dist/docs/api/index/type-aliases/RendererKind.md +1 -1
- package/dist/docs/api/index/type-aliases/ScriptBehaviourSystemOptions.md +2 -2
- package/dist/docs/api/index/type-aliases/ScriptErrorEvent.md +9 -9
- package/dist/docs/api/index/type-aliases/ScriptErrorListener.md +1 -1
- package/dist/docs/api/index/type-aliases/ScriptErrorPhase.md +1 -1
- package/dist/docs/api/index/type-aliases/ScriptErrorReport.md +6 -6
- package/dist/docs/api/index/type-aliases/ScriptErrorSource.md +1 -1
- package/dist/docs/api/index/type-aliases/SelectionContext.md +4 -4
- package/dist/docs/api/index/type-aliases/SerializeEntitySubtreeResult.md +4 -4
- package/dist/docs/api/index/type-aliases/SpawnPrefabOptions.md +5 -5
- package/dist/docs/api/index/type-aliases/SpawnPrefabSource.md +1 -1
- package/dist/docs/api/index/type-aliases/SubtreeSnapshot.md +4 -3
- package/dist/docs/api/index/type-aliases/UiCanvasLike.md +4 -4
- package/dist/docs/api/index/type-aliases/UiColorStop.md +37 -0
- package/dist/docs/api/index/type-aliases/UiPaint.md +81 -0
- package/dist/docs/api/index/type-aliases/UiShadow.md +27 -0
- package/dist/docs/api/index/type-aliases/UiStyle.md +43 -0
- package/dist/docs/api/index/type-aliases/UiTextStyle.md +33 -0
- package/dist/docs/api/index/type-aliases/UiTokens.md +13 -0
- package/dist/docs/api/index/type-aliases/VelocitySample.md +3 -3
- package/dist/docs/api/index/type-aliases/XrCapabilities.md +9 -9
- package/dist/docs/api/index/type-aliases/XrFinger.md +1 -1
- package/dist/docs/api/index/type-aliases/XrFingerCurl.md +4 -4
- package/dist/docs/api/index/type-aliases/XrFingerTarget.md +6 -6
- package/dist/docs/api/index/type-aliases/XrHandJointName.md +1 -1
- package/dist/docs/api/index/type-aliases/XrHandJoints.md +1 -1
- package/dist/docs/api/index/type-aliases/XrHandPoseAxis.md +1 -1
- package/dist/docs/api/index/type-aliases/XrHandPoseContext.md +2 -2
- package/dist/docs/api/index/type-aliases/XrHandPoseDefinition.md +11 -11
- package/dist/docs/api/index/type-aliases/XrHandPoseDirection.md +1 -1
- package/dist/docs/api/index/type-aliases/XrHandPoseEvent.md +1 -1
- package/dist/docs/api/index/type-aliases/XrHandPoseEventDetail.md +5 -5
- package/dist/docs/api/index/type-aliases/XrHandPoseMatch.md +4 -4
- package/dist/docs/api/index/type-aliases/XrHandPoseOrientation.md +4 -4
- package/dist/docs/api/index/type-aliases/XrHandShape.md +13 -13
- package/dist/docs/api/index/type-aliases/XrHandedness.md +1 -1
- package/dist/docs/api/index/type-aliases/XrHitResult.md +3 -3
- package/dist/docs/api/index/type-aliases/XrInputKind.md +1 -1
- package/dist/docs/api/index/type-aliases/XrInputState.md +18 -18
- package/dist/docs/api/index/type-aliases/XrPalmPose.md +6 -6
- package/dist/docs/api/index/variables/ADDED_NODE_MARKER_COMPONENT.md +1 -1
- package/dist/docs/api/index/variables/ARC_GRAVITY.md +1 -1
- package/dist/docs/api/index/variables/ARC_MAX_TIME.md +1 -1
- package/dist/docs/api/index/variables/ARC_SPEED.md +1 -1
- package/dist/docs/api/index/variables/ARC_STEPS.md +1 -1
- package/dist/docs/api/index/variables/CURLED_COS.md +1 -1
- package/dist/docs/api/index/variables/DEFAULT_DIRECTION_TOLERANCE.md +1 -1
- package/dist/docs/api/index/variables/DEFAULT_ENTER_CONFIDENCE.md +1 -1
- package/dist/docs/api/index/variables/DEFAULT_EXIT_CONFIDENCE.md +1 -1
- package/dist/docs/api/index/variables/DEFAULT_LOST_GRACE_SECONDS.md +1 -1
- package/dist/docs/api/index/variables/DEFAULT_MIN_HOLD_SECONDS.md +1 -1
- package/dist/docs/api/index/variables/DEFAULT_SCRIPT_ERROR_RETRY_DELAY.md +1 -1
- package/dist/docs/api/index/variables/FALLBACK_HAND_SCALE.md +1 -1
- package/dist/docs/api/index/variables/HAND_POSE_PRESETS.md +1 -1
- package/dist/docs/api/index/variables/HAND_POSE_PRESET_IDS.md +1 -1
- package/dist/docs/api/index/variables/HYDRATABLE_ENTITY_KINDS.md +1 -1
- package/dist/docs/api/index/variables/KeyboardKeys.md +89 -89
- package/dist/docs/api/index/variables/MATCH_FALLOFF.md +1 -1
- package/dist/docs/api/index/variables/MAX_PLAUSIBLE_SPEED.md +1 -1
- package/dist/docs/api/index/variables/MAX_SAMPLE_AGE_SECONDS.md +1 -1
- package/dist/docs/api/index/variables/NODE_KEY_SEPARATOR.md +1 -1
- package/dist/docs/api/index/variables/NO_XR_CAPABILITIES.md +1 -1
- package/dist/docs/api/index/variables/OVERRIDE_DIFF_EXCLUDED_COMPONENTS.md +1 -1
- package/dist/docs/api/index/variables/OVERRIDE_ROOT_EXCLUDED_COMPONENTS.md +1 -1
- package/dist/docs/api/index/variables/PINCH_FINGERS.md +1 -1
- package/dist/docs/api/index/variables/PREFAB_FILE_VERSION.md +1 -1
- package/dist/docs/api/index/variables/PREFAB_FILE_VERSION_NESTED.md +1 -1
- package/dist/docs/api/index/variables/SCRIPT_OBJECT_ROOT_FLAG.md +1 -1
- package/dist/docs/api/index/variables/SHARED_MODEL_RESOURCE_FLAG.md +1 -1
- package/dist/docs/api/index/variables/STRAIGHT_COS.md +1 -1
- package/dist/docs/api/index/variables/VELOCITY_SAMPLES.md +1 -1
- package/dist/docs/api/index/variables/XR_FINGERS.md +1 -1
- package/dist/docs/api/index/variables/XR_HOVER_SHELL_FLAG.md +1 -1
- package/dist/docs/api/index/variables/webglBackend.md +1 -1
- package/dist/docs/api/typedoc-sidebar.json +1 -1
- package/dist/docs/api/types/type-aliases/AssetInput.md +3 -3
- package/dist/docs/api/types/type-aliases/CheckboxInput.md +3 -3
- package/dist/docs/api/types/type-aliases/ColorInput.md +1 -1
- package/dist/docs/api/types/type-aliases/ComponentInput.md +4 -4
- package/dist/docs/api/types/type-aliases/ComponentKind.md +1 -1
- package/dist/docs/api/types/type-aliases/DropdownInput.md +3 -3
- package/dist/docs/api/types/type-aliases/DropdownOption.md +3 -3
- package/dist/docs/api/types/type-aliases/EcsEntityEditorKind.md +1 -1
- package/dist/docs/api/types/type-aliases/EcsEntityKind.md +1 -1
- package/dist/docs/api/types/type-aliases/EntityId.md +1 -1
- package/dist/docs/api/types/type-aliases/EntityInput.md +3 -3
- package/dist/docs/api/types/type-aliases/FloatInput.md +1 -1
- package/dist/docs/api/types/type-aliases/IntersectionResult.md +3 -3
- package/dist/docs/api/types/type-aliases/ParentLookup.md +3 -3
- package/dist/docs/api/types/type-aliases/SelectionListener.md +1 -1
- package/dist/docs/api/types/type-aliases/SliderInput.md +5 -5
- package/dist/docs/api/types/type-aliases/TextInput.md +1 -1
- package/dist/docs/api/types/type-aliases/ToggleInput.md +1 -1
- package/dist/docs/api/types/type-aliases/Vec3.md +1 -1
- package/dist/docs/api/types/type-aliases/Vector2Input.md +3 -3
- package/dist/docs/api/types/type-aliases/Vector3Input.md +4 -4
- package/dist/docs/api/types/type-aliases/WorldEntityView.md +1 -1
- package/dist/docs/guide/bone-attachments-and-ik.md +51 -0
- package/dist/docs/guide/components/audio.md +1 -1
- package/dist/factories/index.cjs +29 -1
- package/dist/factories/index.cjs.map +1 -1
- package/dist/factories/index.d.cts +2 -2
- package/dist/factories/index.d.ts +2 -2
- package/dist/factories/index.js +4 -4
- package/dist/{index-BXjwEdNq.d.cts → index-BbrnjNXy.d.ts} +5 -3
- package/dist/{index-CVG-hREM.d.ts → index-DD7aHv0p.d.cts} +5 -3
- package/dist/{index-6pZO_gV7.d.ts → index-OgOoIpEI.d.ts} +14 -2
- package/dist/{index-BdghvXKE.d.cts → index-xyqzT0PQ.d.cts} +14 -2
- package/dist/index.cjs +174 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -9
- package/dist/index.d.ts +10 -9
- package/dist/index.js +13 -11
- package/dist/index.js.map +1 -1
- package/dist/network/index.cjs +70 -38
- package/dist/network/index.cjs.map +1 -1
- package/dist/network/index.d.cts +2 -2
- package/dist/network/index.d.ts +2 -2
- package/dist/network/index.js +4 -4
- package/dist/systems/index.cjs +171 -13
- package/dist/systems/index.cjs.map +1 -1
- package/dist/systems/index.d.cts +2 -2
- package/dist/systems/index.d.ts +2 -2
- package/dist/systems/index.js +5 -5
- package/dist/types.d.cts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/webgpu/index.d.ts +2 -2
- package/dist/worldSnapshotUtils.d.cts +1 -1
- package/dist/worldSnapshotUtils.d.ts +1 -1
- package/package.json +2 -1
- package/dist/chunk-GSWC6LLD.js.map +0 -1
- package/dist/chunk-JEPUCLZX.js.map +0 -1
- package/dist/chunk-JNYPJB55.js.map +0 -1
- package/dist/chunk-TY3XCHOR.js.map +0 -1
- package/dist/chunk-WWP46AEF.js.map +0 -1
|
@@ -43,6 +43,7 @@ function restPositions(root) {
|
|
|
43
43
|
return out;
|
|
44
44
|
}
|
|
45
45
|
__name(restPositions, "restPositions");
|
|
46
|
+
var NUMBERED_NAME = /_\d+$/;
|
|
46
47
|
function splitBoneName(raw) {
|
|
47
48
|
let n = raw.replace(/^.*[:|]/, "").replace(/^(mixamorig\d*|def[-_]|org[-_]|mch[-_]|bip\d*[ _]|b[-_])/i, "").trim();
|
|
48
49
|
let side = null;
|
|
@@ -144,6 +145,37 @@ function findHips(root) {
|
|
|
144
145
|
__name(findHips, "findHips");
|
|
145
146
|
var isSpineLike = /* @__PURE__ */ __name((base) => /^(spine|chest|upperchest|torso|back)\d*$/.test(base), "isSpineLike");
|
|
146
147
|
function detectRig(root) {
|
|
148
|
+
const plain = readRig(root);
|
|
149
|
+
if (plain.missing.length === 0) return plain;
|
|
150
|
+
const stems = /* @__PURE__ */ new Map();
|
|
151
|
+
const count = /* @__PURE__ */ __name((n) => {
|
|
152
|
+
const stem = n.name.replace(NUMBERED_NAME, "");
|
|
153
|
+
stems.set(stem, (stems.get(stem) ?? 0) + 1);
|
|
154
|
+
n.children.forEach(count);
|
|
155
|
+
}, "count");
|
|
156
|
+
count(root);
|
|
157
|
+
const real = /* @__PURE__ */ new Map();
|
|
158
|
+
const strip = /* @__PURE__ */ __name((n) => {
|
|
159
|
+
const stem = n.name.replace(NUMBERED_NAME, "");
|
|
160
|
+
const name = stems.get(stem) === 1 ? stem : n.name;
|
|
161
|
+
real.set(name, n.name);
|
|
162
|
+
return { ...n, name, children: n.children.map(strip) };
|
|
163
|
+
}, "strip");
|
|
164
|
+
const found = readRig(strip(root));
|
|
165
|
+
if (found.missing.length >= plain.missing.length) return plain;
|
|
166
|
+
const realName = /* @__PURE__ */ __name((name) => real.get(name) ?? name, "realName");
|
|
167
|
+
const bones = {};
|
|
168
|
+
for (const [bone, name] of Object.entries(found.bones)) {
|
|
169
|
+
bones[bone] = realName(name);
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
...found,
|
|
173
|
+
bones,
|
|
174
|
+
byName: new Map([...found.byName].map(([name, bone]) => [realName(name), bone]))
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
__name(detectRig, "detectRig");
|
|
178
|
+
function readRig(root) {
|
|
147
179
|
const all = [];
|
|
148
180
|
const collect = /* @__PURE__ */ __name((n) => {
|
|
149
181
|
all.push(n);
|
|
@@ -217,7 +249,7 @@ function detectRig(root) {
|
|
|
217
249
|
missing: REQUIRED_HUMANOID_BONES.filter((b) => !bones[b])
|
|
218
250
|
};
|
|
219
251
|
}
|
|
220
|
-
__name(
|
|
252
|
+
__name(readRig, "readRig");
|
|
221
253
|
function mirrorHumanoidBone(b) {
|
|
222
254
|
if (b.startsWith("left")) return `right${b.slice(4)}`;
|
|
223
255
|
if (b.startsWith("right")) return `left${b.slice(5)}`;
|
|
@@ -237,5 +269,5 @@ function skeletonFromObject3D(object) {
|
|
|
237
269
|
__name(skeletonFromObject3D, "skeletonFromObject3D");
|
|
238
270
|
|
|
239
271
|
export { REQUIRED_HUMANOID_BONES, detectRig, mirrorHumanoidBone, qinv, qmul, qrot, restPositions, skeletonFromObject3D, splitBoneName };
|
|
240
|
-
//# sourceMappingURL=chunk-
|
|
241
|
-
//# sourceMappingURL=chunk-
|
|
272
|
+
//# sourceMappingURL=chunk-GMSFEXUZ.js.map
|
|
273
|
+
//# sourceMappingURL=chunk-GMSFEXUZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../core/animation/humanoid.ts"],"names":[],"mappings":"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","file":"chunk-GMSFEXUZ.js","sourcesContent":["/**\n * One vocabulary for humanoid skeletons.\n *\n * Every source names its bones differently: Mixamo `mixamorig:LeftForeArm`,\n * Meshy `LeftForeArm` with its spine numbered top-down (`Spine02` is the\n * LOWEST), Unreal / Quaternius UAL `lowerarm_l` with `spine_01` lowest,\n * Blender rigify `forearm.L`, VRM `leftLowerArm`. Retargeting, the animation\n * editor and bone sockets all need \"the left forearm\" regardless, so a\n * skeleton is mapped once onto VRM's humanoid bone names (the closest thing\n * to a standard) and everything downstream speaks those.\n *\n * Pure data + math, no three.js: the editor's Node tools (gltf-transform\n * documents) and the runtime (THREE.Bone trees) both build a `SkeletonNode`\n * tree and call `detectRig`.\n */\n\nexport type HumanoidBone =\n | \"hips\"\n | \"spine\"\n | \"chest\"\n | \"upperChest\"\n | \"neck\"\n | \"head\"\n | \"leftShoulder\"\n | \"leftUpperArm\"\n | \"leftLowerArm\"\n | \"leftHand\"\n | \"rightShoulder\"\n | \"rightUpperArm\"\n | \"rightLowerArm\"\n | \"rightHand\"\n | \"leftUpperLeg\"\n | \"leftLowerLeg\"\n | \"leftFoot\"\n | \"leftToes\"\n | \"rightUpperLeg\"\n | \"rightLowerLeg\"\n | \"rightFoot\"\n | \"rightToes\"\n | `${\"left\" | \"right\"}${Finger}${FingerJoint}`;\n\ntype Finger = \"Thumb\" | \"Index\" | \"Middle\" | \"Ring\" | \"Little\";\ntype FingerJoint = \"Metacarpal\" | \"Proximal\" | \"Intermediate\" | \"Distal\";\n\n/** The bones a humanoid must have to retarget a full-body clip. */\nexport const REQUIRED_HUMANOID_BONES: readonly HumanoidBone[] = [\n \"hips\",\n \"spine\",\n \"head\",\n \"leftUpperArm\",\n \"leftLowerArm\",\n \"leftHand\",\n \"rightUpperArm\",\n \"rightLowerArm\",\n \"rightHand\",\n \"leftUpperLeg\",\n \"leftLowerLeg\",\n \"leftFoot\",\n \"rightUpperLeg\",\n \"rightLowerLeg\",\n \"rightFoot\",\n];\n\n/** Vector [x, y, z] and quaternion [x, y, z, w]. */\nexport type Vec3 = [number, number, number];\nexport type Quat = [number, number, number, number];\n\n/** A bone (or any node) with its LOCAL rest transform. */\nexport interface SkeletonNode {\n name: string;\n translation: Vec3;\n rotation: Quat;\n scale?: Vec3;\n children: SkeletonNode[];\n}\n\nexport type RigProfile =\n | \"mixamo\"\n | \"meshy\"\n | \"unreal\"\n | \"rigify\"\n | \"vrm\"\n | \"generic\";\n\nexport interface RigDetection {\n profile: RigProfile;\n /** Humanoid bone → the rig's own bone name. */\n bones: Partial<Record<HumanoidBone, string>>;\n /** Rig bone name → humanoid bone. */\n byName: Map<string, HumanoidBone>;\n /** Arms level (T), angled down (A), or neither. */\n restPose: \"T\" | \"A\" | \"unknown\";\n /** Degrees the left upper arm points below horizontal at rest. */\n armDrop: number | null;\n /** Required bones the rig lacks (empty = can retarget). */\n missing: HumanoidBone[];\n}\n\n// ── quaternion helpers ───────────────────────────────────────────────────────\n\nexport const qmul = (a: Quat, b: Quat): Quat => [\n a[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1],\n a[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0],\n a[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3],\n a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2],\n];\nexport const qinv = (q: Quat): Quat => [-q[0], -q[1], -q[2], q[3]];\nexport const qrot = (q: Quat, v: Vec3): Vec3 => {\n const r = qmul(qmul(q, [v[0], v[1], v[2], 0]), qinv(q));\n return [r[0], r[1], r[2]];\n};\n\n/** World (rig-space) rest position of every node, by name. */\nexport function restPositions(root: SkeletonNode): Map<string, Vec3> {\n const out = new Map<string, Vec3>();\n const walk = (n: SkeletonNode, pq: Quat, pp: Vec3, ps: number) => {\n const t = qrot(pq, [n.translation[0] * ps, n.translation[1] * ps, n.translation[2] * ps]);\n const p: Vec3 = [pp[0] + t[0], pp[1] + t[1], pp[2] + t[2]];\n out.set(n.name, p);\n const q = qmul(pq, n.rotation);\n const s = ps * (n.scale?.[0] ?? 1);\n for (const c of n.children) walk(c, q, p, s);\n };\n walk(root, [0, 0, 0, 1], [0, 0, 0], 1);\n return out;\n}\n\n// ── names ────────────────────────────────────────────────────────────────────\n\n/** The number an exporter puts on the end of a name. */\nconst NUMBERED_NAME = /_\\d+$/;\n\n/**\n * `mixamorig1:LeftForeArm` → { side: \"left\", base: \"forearm\" };\n * `upperarm_l` → { side: \"left\", base: \"upperarm\" }; `forearm.L` → left.\n */\nexport function splitBoneName(raw: string): { side: \"left\" | \"right\" | null; base: string } {\n let n = raw\n .replace(/^.*[:|]/, \"\") // mixamorig:, Armature|, rig:\n .replace(/^(mixamorig\\d*|def[-_]|org[-_]|mch[-_]|bip\\d*[ _]|b[-_])/i, \"\")\n .trim();\n let side: \"left\" | \"right\" | null = null;\n const sided = [\n [/^left[\\s_.-]*/i, \"left\"],\n [/^right[\\s_.-]*/i, \"right\"],\n [/^l[\\s_.-]+/i, \"left\"],\n [/^r[\\s_.-]+/i, \"right\"],\n [/[\\s_.-]+l$/i, \"left\"],\n [/[\\s_.-]+r$/i, \"right\"],\n [/[\\s_.-]*left$/i, \"left\"],\n [/[\\s_.-]*right$/i, \"right\"],\n ] as const;\n for (const [re, s] of sided) {\n if (re.test(n)) {\n side = s;\n n = n.replace(re, \"\");\n break;\n }\n }\n return { side, base: n.toLowerCase().replace(/[^a-z0-9]/g, \"\") };\n}\n\n/** Bases for sided limb bones. Order matters: first match wins. */\nconst LIMB_BASES: Array<[RegExp, string]> = [\n [/^(shoulder|clavicle|collar(bone)?)$/, \"Shoulder\"],\n [/^(upperarm|uparm|arm)$/, \"UpperArm\"],\n [/^(forearm|lowerarm|elbow|loarm)$/, \"LowerArm\"],\n [/^(hand|wrist)$/, \"Hand\"],\n [/^(upleg|upperleg|thigh|hipjoint)$/, \"UpperLeg\"],\n [/^(leg|lowerleg|calf|shin|knee)$/, \"LowerLeg\"],\n [/^(foot|ankle)$/, \"Foot\"],\n [/^(toebase|toe|toes|ball)$/, \"Toes\"],\n];\n\nconst FINGERS: Array<[RegExp, Finger]> = [\n [/^thumb/, \"Thumb\"],\n [/^(index|pointer)/, \"Index\"],\n [/^(middle|fingers)/, \"Middle\"],\n [/^ring/, \"Ring\"],\n [/^(pinky|little|small)/, \"Little\"],\n];\n\nfunction fingerJoint(finger: Finger, digits: string): FingerJoint | null {\n // Mixamo/UE number 1-3 (4 = tip); a bare \"Thumb\"/\"Fingers\" (Meshy after\n // fix-rig) is the first joint.\n const n = digits === \"\" ? 1 : Number(digits);\n const joints: FingerJoint[] =\n finger === \"Thumb\"\n ? [\"Metacarpal\", \"Proximal\", \"Distal\"]\n : [\"Proximal\", \"Intermediate\", \"Distal\"];\n return joints[n - 1] ?? null;\n}\n\n/** A sided bone from its name alone, or null. */\nfunction sidedBone(base: string, side: \"left\" | \"right\"): HumanoidBone | null {\n for (const [re, part] of LIMB_BASES) {\n if (re.test(base)) return `${side}${part}` as HumanoidBone;\n }\n // Mixamo writes fingers as LeftHandIndex1.\n const f = base.replace(/^hand(?=(thumb|index|middle|ring|pinky|little))/, \"\");\n for (const [re, finger] of FINGERS) {\n if (!re.test(f)) continue;\n const digits = /(\\d+)$/.exec(f)?.[1] ?? \"\";\n const joint = fingerJoint(finger, digits.replace(/^0+/, \"\"));\n return joint ? (`${side}${finger}${joint}` as HumanoidBone) : null;\n }\n return null;\n}\n\n// VRM names, recognised directly (leftUpperArm → lowercase \"leftupperarm\").\nconst VRM_LOWER = new Map<string, HumanoidBone>();\n\nconst VRM_FINGER = /^(left|right)(Thumb|Index|Middle|Ring|Little)(Metacarpal|Proximal|Intermediate|Distal)$/;\n\nfunction vrmBone(raw: string): HumanoidBone | null {\n const name = raw.replace(/^.*[:|]/, \"\");\n if (VRM_FINGER.test(name)) return name as HumanoidBone;\n if (VRM_LOWER.size === 0) {\n const sides = [\"left\", \"right\"] as const;\n const parts = [\"Shoulder\", \"UpperArm\", \"LowerArm\", \"Hand\", \"UpperLeg\", \"LowerLeg\", \"Foot\", \"Toes\"];\n for (const s of sides) for (const p of parts) VRM_LOWER.set(`${s}${p}`.toLowerCase(), `${s}${p}` as HumanoidBone);\n for (const b of [\"hips\", \"spine\", \"chest\", \"upperChest\", \"neck\", \"head\"] as const)\n VRM_LOWER.set(b.toLowerCase(), b);\n }\n return VRM_LOWER.get(name.toLowerCase()) ?? null;\n}\n\nfunction profileOf(names: string[]): RigProfile {\n if (names.some((n) => /^mixamorig/i.test(n))) return \"mixamo\";\n if (names.some((n) => /^(upperarm|lowerarm|thigh|calf)_[lr]$/i.test(n))) return \"unreal\";\n if (names.some((n) => /\\.[LR]$/.test(n))) return \"rigify\";\n if (names.some((n) => /^leftUpperArm$/.test(n))) return \"vrm\";\n if (names.some((n) => /^Spine0[12]$/.test(n))) return \"meshy\";\n return \"generic\";\n}\n\nfunction findHips(root: SkeletonNode): SkeletonNode | null {\n let found: SkeletonNode | null = null;\n const walk = (n: SkeletonNode) => {\n if (found) return;\n const { base } = splitBoneName(n.name);\n if (/^(hips|hip|pelvis)$/.test(base)) {\n found = n;\n return;\n }\n for (const c of n.children) walk(c);\n };\n walk(root);\n return found;\n}\n\nconst isSpineLike = (base: string) => /^(spine|chest|upperchest|torso|back)\\d*$/.test(base);\n\n/**\n * Map a skeleton onto humanoid bones. Pass the scene root (the armature's\n * own transform included): the rest-pose check measures \"down\" in that space,\n * and a Mixamo armature is Z-up under a 90° turn.\n *\n * Limbs and fingers come from their names (any of the conventions above, side\n * from prefixes/suffixes, or from which side of the body they sit when the\n * name has none). The spine comes from the CHAIN between the hips and the\n * neck, not from names, because conventions number it in opposite\n * directions: its first bone is `spine`, the second `chest`, a third\n * `upperChest`.\n */\nexport function detectRig(root: SkeletonNode): RigDetection {\n const plain = readRig(root);\n if (plain.missing.length === 0) return plain;\n // Sketchfab's exporter numbers every bone (`mixamorigLeftArm_9`), which hides\n // the rig. Meshes get numbers too (`Object_2`, `Object_3`), so a number only\n // comes off where the name stays unique.\n const stems = new Map<string, number>();\n const count = (n: SkeletonNode) => {\n const stem = n.name.replace(NUMBERED_NAME, \"\");\n stems.set(stem, (stems.get(stem) ?? 0) + 1);\n n.children.forEach(count);\n };\n count(root);\n const real = new Map<string, string>();\n const strip = (n: SkeletonNode): SkeletonNode => {\n const stem = n.name.replace(NUMBERED_NAME, \"\");\n const name = stems.get(stem) === 1 ? stem : n.name;\n real.set(name, n.name);\n return { ...n, name, children: n.children.map(strip) };\n };\n const found = readRig(strip(root));\n if (found.missing.length >= plain.missing.length) return plain;\n const realName = (name: string) => real.get(name) ?? name;\n const bones: RigDetection[\"bones\"] = {};\n for (const [bone, name] of Object.entries(found.bones) as [HumanoidBone, string][]) {\n bones[bone] = realName(name);\n }\n return {\n ...found,\n bones,\n byName: new Map([...found.byName].map(([name, bone]) => [realName(name), bone])),\n };\n}\n\nfunction readRig(root: SkeletonNode): RigDetection {\n const all: SkeletonNode[] = [];\n const collect = (n: SkeletonNode) => {\n all.push(n);\n for (const c of n.children) collect(c);\n };\n collect(root);\n const profile = profileOf(all.map((n) => n.name));\n const bones: Partial<Record<HumanoidBone, string>> = {};\n const set = (b: HumanoidBone, name: string) => {\n if (!bones[b]) bones[b] = name;\n };\n\n const hips = findHips(root);\n const positions = restPositions(root);\n if (hips) {\n set(\"hips\", hips.name);\n // The spine chain: follow spine-like children upward from the hips.\n const chain: SkeletonNode[] = [];\n let cur: SkeletonNode | undefined = hips;\n while (cur) {\n const next: SkeletonNode | undefined = cur.children.find((c) => isSpineLike(splitBoneName(c.name).base));\n if (!next) break;\n chain.push(next);\n cur = next;\n }\n if (chain[0]) set(\"spine\", chain[0].name);\n if (chain[1]) set(\"chest\", chain[1].name);\n if (chain[2]) set(\"upperChest\", chain[chain.length - 1].name);\n }\n\n for (const n of all) {\n const vrm = vrmBone(n.name);\n if (vrm) {\n set(vrm, n.name);\n continue;\n }\n const { side, base } = splitBoneName(n.name);\n if (/^neck\\d*$/.test(base)) {\n set(\"neck\", n.name);\n continue;\n }\n if (/^head$/.test(base)) {\n set(\"head\", n.name);\n continue;\n }\n if (base === \"hips\" || base === \"pelvis\" || isSpineLike(base)) continue;\n // No side in the name: decide by which side of the hips it sits (glTF\n // humanoids face +Z, so their left is +X).\n const s =\n side ??\n (() => {\n const p = positions.get(n.name);\n const h = hips ? positions.get(hips.name) : undefined;\n if (!p || !h || Math.abs(p[0] - h[0]) < 1e-4) return null;\n return p[0] > h[0] ? \"left\" : \"right\";\n })();\n if (!s) continue;\n const b = sidedBone(base, s);\n if (b) set(b, n.name);\n }\n\n const byName = new Map<string, HumanoidBone>();\n for (const [b, name] of Object.entries(bones)) byName.set(name as string, b as HumanoidBone);\n\n // Rest pose from the left upper arm's direction.\n let armDrop: number | null = null;\n const ua = bones.leftUpperArm && positions.get(bones.leftUpperArm);\n const la = bones.leftLowerArm && positions.get(bones.leftLowerArm);\n if (ua && la) {\n const d: Vec3 = [la[0] - ua[0], la[1] - ua[1], la[2] - ua[2]];\n const len = Math.hypot(d[0], d[1], d[2]) || 1;\n armDrop = (Math.asin(Math.max(-1, Math.min(1, -d[1] / len))) * 180) / Math.PI;\n }\n const restPose = armDrop === null ? \"unknown\" : armDrop < 15 ? \"T\" : armDrop <= 65 ? \"A\" : \"unknown\";\n\n return {\n profile,\n bones,\n byName,\n restPose,\n armDrop,\n missing: REQUIRED_HUMANOID_BONES.filter((b) => !bones[b]),\n };\n}\n\n/** The same bone on the other side (`leftHand` ↔ `rightHand`). */\nexport function mirrorHumanoidBone(b: HumanoidBone): HumanoidBone {\n if (b.startsWith(\"left\")) return `right${b.slice(4)}` as HumanoidBone;\n if (b.startsWith(\"right\")) return `left${b.slice(5)}` as HumanoidBone;\n return b;\n}\n\n/**\n * Duck-typed adapter for a three.js Object3D/Bone tree (position: Vector3,\n * quaternion: Quaternion), so the runtime can call `detectRig` without this\n * module importing three.\n */\nexport function skeletonFromObject3D(object: {\n name: string;\n position: { x: number; y: number; z: number };\n quaternion: { x: number; y: number; z: number; w: number };\n scale?: { x: number; y: number; z: number };\n children: unknown[];\n}): SkeletonNode {\n const o = object;\n return {\n name: o.name,\n translation: [o.position.x, o.position.y, o.position.z],\n rotation: [o.quaternion.x, o.quaternion.y, o.quaternion.z, o.quaternion.w],\n scale: o.scale ? [o.scale.x, o.scale.y, o.scale.z] : undefined,\n children: (o.children as (typeof object)[]).map(skeletonFromObject3D),\n };\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AnimationComponent, AudioComponent, Object3DRef, CameraComponent, MeshGeometryComponent, PhysicsComponent, Environment, EntityType, ImageComponent, ImageTargetAnchor, ImageTarget, LightComponent, MaterialComponent, MeshComponent, ModelComponent, Name, ParentId, Postprocessing, ScriptComponent, ScriptObjectComponent, Selectable, SelectionTransformState, SpriteComponent, TransformComponent, InstancedMeshComponent, InstanceSlotComponent, VideoComponent, XRRigComponent, VRTeleportAreaComponent, XRHandPoseComponent, XRAnchorComponent, BoneAttachmentComponent, IKComponent, NetworkIdentityComponent, NetworkTransformComponent, NetworkedPropsComponent, NetworkSpawnerComponent, XRInteractableComponent, XRInteractorComponent, XRInteractorSideComponent, UIButtonComponent, UIPanelComponent, UISliderComponent, UITextComponent, UIToggleComponent, setModelLoadState } from './chunk-
|
|
2
|
-
import { detectRig, skeletonFromObject3D } from './chunk-
|
|
1
|
+
import { AnimationComponent, AudioComponent, Object3DRef, CameraComponent, MeshGeometryComponent, PhysicsComponent, Environment, EntityType, ImageComponent, ImageTargetAnchor, ImageTarget, LightComponent, MaterialComponent, MeshComponent, ModelComponent, Name, ParentId, Postprocessing, ScriptComponent, ScriptObjectComponent, Selectable, SelectionTransformState, SpriteComponent, TransformComponent, InstancedMeshComponent, InstanceSlotComponent, VideoComponent, XRRigComponent, VRTeleportAreaComponent, XRHandPoseComponent, XRAnchorComponent, BoneAttachmentComponent, IKComponent, NetworkIdentityComponent, NetworkTransformComponent, NetworkedPropsComponent, NetworkSpawnerComponent, XRInteractableComponent, XRInteractorComponent, XRInteractorSideComponent, UIButtonComponent, UIPanelComponent, UISliderComponent, UITextComponent, UIToggleComponent, setModelLoadState } from './chunk-T7SRBLPJ.js';
|
|
2
|
+
import { detectRig, skeletonFromObject3D } from './chunk-GMSFEXUZ.js';
|
|
3
3
|
import { __name } from './chunk-XE4OXN2W.js';
|
|
4
|
-
import * as
|
|
4
|
+
import * as THREE6 from 'three';
|
|
5
5
|
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
|
6
6
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
7
7
|
import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
|
|
@@ -23,11 +23,11 @@ function normalizeDistanceModel(distanceModel) {
|
|
|
23
23
|
}
|
|
24
24
|
__name(normalizeDistanceModel, "normalizeDistanceModel");
|
|
25
25
|
function createConfiguredAudio(listener, options) {
|
|
26
|
-
const sound = options.positional ? new
|
|
26
|
+
const sound = options.positional ? new THREE6.PositionalAudio(listener) : new THREE6.Audio(listener);
|
|
27
27
|
sound.setLoop(options.loop);
|
|
28
28
|
sound.setVolume(options.volume);
|
|
29
29
|
sound.setPlaybackRate(options.pitch);
|
|
30
|
-
if (sound instanceof
|
|
30
|
+
if (sound instanceof THREE6.PositionalAudio) {
|
|
31
31
|
sound.setRefDistance(options.refDistance);
|
|
32
32
|
sound.setDistanceModel(normalizeDistanceModel(options.distanceModel));
|
|
33
33
|
sound.setRolloffFactor(options.rolloffFactor);
|
|
@@ -37,16 +37,16 @@ function createConfiguredAudio(listener, options) {
|
|
|
37
37
|
__name(createConfiguredAudio, "createConfiguredAudio");
|
|
38
38
|
function createAudioEditorHelper() {
|
|
39
39
|
if (typeof document === "undefined") {
|
|
40
|
-
const geometry = new
|
|
41
|
-
new
|
|
40
|
+
const geometry = new THREE6.EdgesGeometry(
|
|
41
|
+
new THREE6.OctahedronGeometry(0.22, 0)
|
|
42
42
|
);
|
|
43
|
-
const material2 = new
|
|
43
|
+
const material2 = new THREE6.LineBasicMaterial({
|
|
44
44
|
color: "#8bc8ff",
|
|
45
45
|
transparent: true,
|
|
46
46
|
opacity: 0.95,
|
|
47
47
|
depthTest: false
|
|
48
48
|
});
|
|
49
|
-
const fallback = new
|
|
49
|
+
const fallback = new THREE6.LineSegments(geometry, material2);
|
|
50
50
|
fallback.renderOrder = 10;
|
|
51
51
|
fallback.userData.ecsHelper = true;
|
|
52
52
|
fallback.visible = false;
|
|
@@ -58,7 +58,7 @@ function createAudioEditorHelper() {
|
|
|
58
58
|
canvas.height = size;
|
|
59
59
|
const ctx = canvas.getContext("2d");
|
|
60
60
|
if (!ctx) {
|
|
61
|
-
return new
|
|
61
|
+
return new THREE6.Object3D();
|
|
62
62
|
}
|
|
63
63
|
ctx.clearRect(0, 0, size, size);
|
|
64
64
|
ctx.fillStyle = "rgba(27, 35, 52, 0.9)";
|
|
@@ -89,14 +89,14 @@ function createAudioEditorHelper() {
|
|
|
89
89
|
ctx.beginPath();
|
|
90
90
|
ctx.arc(56, 48, 16, -0.8, 0.8);
|
|
91
91
|
ctx.stroke();
|
|
92
|
-
const texture = new
|
|
92
|
+
const texture = new THREE6.CanvasTexture(canvas);
|
|
93
93
|
texture.needsUpdate = true;
|
|
94
|
-
const material = new
|
|
94
|
+
const material = new THREE6.SpriteMaterial({
|
|
95
95
|
map: texture,
|
|
96
96
|
transparent: true,
|
|
97
97
|
depthTest: false
|
|
98
98
|
});
|
|
99
|
-
const helper = new
|
|
99
|
+
const helper = new THREE6.Sprite(material);
|
|
100
100
|
helper.scale.set(0.68, 0.68, 0.68);
|
|
101
101
|
helper.renderOrder = 10;
|
|
102
102
|
helper.userData.ecsHelper = true;
|
|
@@ -123,7 +123,7 @@ function createAudioComponent(world, entityId, path = "", options = {}, context)
|
|
|
123
123
|
__name(createAudioComponent, "createAudioComponent");
|
|
124
124
|
function createCameraComponent(world, entityId, payload = {}) {
|
|
125
125
|
const object = world.getComponent(entityId, Object3DRef)?.object;
|
|
126
|
-
const objectCamera = object instanceof
|
|
126
|
+
const objectCamera = object instanceof THREE6.Camera ? object : void 0;
|
|
127
127
|
const component = new CameraComponent({
|
|
128
128
|
...payload,
|
|
129
129
|
camera: payload.camera ?? objectCamera
|
|
@@ -569,7 +569,7 @@ function findModelBone(root, ref) {
|
|
|
569
569
|
for (const b of bones) if (!byName.has(b.name)) byName.set(b.name, b);
|
|
570
570
|
const name = ref.bone ?? "";
|
|
571
571
|
if (name) {
|
|
572
|
-
const hit = byName.get(name) ?? byName.get(
|
|
572
|
+
const hit = byName.get(name) ?? byName.get(THREE6.PropertyBinding.sanitizeNodeName(name));
|
|
573
573
|
if (hit) return hit;
|
|
574
574
|
}
|
|
575
575
|
if (ref.humanoid) {
|
|
@@ -628,7 +628,7 @@ var SHARED_MODEL_RESOURCE_FLAG = "spatialEcsSharedModelResource";
|
|
|
628
628
|
var modelCache = /* @__PURE__ */ new Map();
|
|
629
629
|
function markSharedResources(root) {
|
|
630
630
|
root.traverse((child) => {
|
|
631
|
-
if (!(child instanceof
|
|
631
|
+
if (!(child instanceof THREE6.Mesh)) {
|
|
632
632
|
return;
|
|
633
633
|
}
|
|
634
634
|
if (child.geometry) {
|
|
@@ -703,7 +703,7 @@ function createModel({
|
|
|
703
703
|
payload,
|
|
704
704
|
isEditor
|
|
705
705
|
}) {
|
|
706
|
-
const anchor = new
|
|
706
|
+
const anchor = new THREE6.Object3D();
|
|
707
707
|
const modelPath = payload.path ?? "";
|
|
708
708
|
const entityId = createBaseEntity(world, anchor, {
|
|
709
709
|
label: payload.name ?? "Model",
|
|
@@ -808,8 +808,17 @@ __name(reloadModelEntity, "reloadModelEntity");
|
|
|
808
808
|
|
|
809
809
|
// core/systems/ObjectManagementSystem.ts
|
|
810
810
|
var BONE_SOCKET_FLAG = "__reluBoneSocket";
|
|
811
|
-
var _boneScale = new
|
|
812
|
-
var _anchorScale = new
|
|
811
|
+
var _boneScale = new THREE6.Vector3();
|
|
812
|
+
var _anchorScale = new THREE6.Vector3();
|
|
813
|
+
var _holdPosition = new THREE6.Vector3();
|
|
814
|
+
var _holdRotation = new THREE6.Quaternion();
|
|
815
|
+
var _heldPosition = new THREE6.Vector3();
|
|
816
|
+
var _heldRotation = new THREE6.Quaternion();
|
|
817
|
+
var _holdMatrix = new THREE6.Matrix4();
|
|
818
|
+
var _heldMatrix = new THREE6.Matrix4();
|
|
819
|
+
var _holdEuler = new THREE6.Euler();
|
|
820
|
+
var _unitScale = new THREE6.Vector3(1, 1, 1);
|
|
821
|
+
var _ignoredScale = new THREE6.Vector3();
|
|
813
822
|
function createTransform(input) {
|
|
814
823
|
return new TransformComponent(input);
|
|
815
824
|
}
|
|
@@ -836,6 +845,8 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
836
845
|
this.boneSockets = /* @__PURE__ */ new Map();
|
|
837
846
|
/** Attachments whose bone wasn't found in a given model (skip re-searching every frame). */
|
|
838
847
|
this.boneMisses = /* @__PURE__ */ new Map();
|
|
848
|
+
/** Attachments with holds, and which one the current clip calls for (`null`: none). */
|
|
849
|
+
this.boneHolds = /* @__PURE__ */ new Map();
|
|
839
850
|
this.scene = scene;
|
|
840
851
|
this.camera = camera;
|
|
841
852
|
this.isEditor = isEditor;
|
|
@@ -848,10 +859,10 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
848
859
|
}
|
|
849
860
|
getOrCreateAudioListener() {
|
|
850
861
|
const existing = this.camera.userData.ecsAudioListener;
|
|
851
|
-
if (existing instanceof
|
|
862
|
+
if (existing instanceof THREE6.AudioListener) {
|
|
852
863
|
return existing;
|
|
853
864
|
}
|
|
854
|
-
const listener = new
|
|
865
|
+
const listener = new THREE6.AudioListener();
|
|
855
866
|
this.camera.add(listener);
|
|
856
867
|
this.camera.userData.ecsAudioListener = listener;
|
|
857
868
|
return listener;
|
|
@@ -925,7 +936,7 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
925
936
|
}
|
|
926
937
|
if (dispose && object3d) {
|
|
927
938
|
object3d.traverse((child) => {
|
|
928
|
-
if (child instanceof
|
|
939
|
+
if (child instanceof THREE6.Mesh) {
|
|
929
940
|
if (!child.geometry?.userData?.[SHARED_MODEL_RESOURCE_FLAG]) {
|
|
930
941
|
child.geometry?.dispose();
|
|
931
942
|
}
|
|
@@ -1022,6 +1033,9 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
1022
1033
|
for (const entityId of [...this.boneSockets.keys()]) {
|
|
1023
1034
|
if (!world.hasEntity(entityId)) this.dropBoneSocket(entityId);
|
|
1024
1035
|
}
|
|
1036
|
+
for (const entityId of [...this.boneHolds.keys()]) {
|
|
1037
|
+
if (!world.hasEntity(entityId)) this.boneHolds.delete(entityId);
|
|
1038
|
+
}
|
|
1025
1039
|
for (const [entityId, object] of worldObjects.entries()) {
|
|
1026
1040
|
const parentEntityId = world.getComponent(entityId, ParentId)?.value;
|
|
1027
1041
|
const parentObject = typeof parentEntityId === "number" ? worldObjects.get(parentEntityId) : void 0;
|
|
@@ -1055,6 +1069,7 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
1055
1069
|
if (!attachment) {
|
|
1056
1070
|
if (this.boneSockets.has(entityId)) this.dropBoneSocket(entityId);
|
|
1057
1071
|
this.boneMisses.delete(entityId);
|
|
1072
|
+
this.boneHolds.delete(entityId);
|
|
1058
1073
|
return null;
|
|
1059
1074
|
}
|
|
1060
1075
|
const root = attachment.enabled && parentEntityId !== null ? world.getComponent(parentEntityId, ModelComponent)?.object ?? null : null;
|
|
@@ -1062,7 +1077,9 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
1062
1077
|
this.dropBoneSocket(entityId);
|
|
1063
1078
|
return null;
|
|
1064
1079
|
}
|
|
1065
|
-
const
|
|
1080
|
+
const hold = this.boneHolds.get(entityId);
|
|
1081
|
+
const ref = hold?.bone || hold?.humanoid ? hold : attachment;
|
|
1082
|
+
const key = `${ref.bone ?? ""}|${ref.humanoid ?? ""}|${attachment.compensateScale}`;
|
|
1066
1083
|
const current = this.boneSockets.get(entityId);
|
|
1067
1084
|
if (current && current.modelUuid === root.uuid && current.key === key && current.socket.parent === current.bone) {
|
|
1068
1085
|
this.fitSocketScale(world, current, parentEntityId, attachment.compensateScale);
|
|
@@ -1071,13 +1088,13 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
1071
1088
|
this.dropBoneSocket(entityId);
|
|
1072
1089
|
const missKey = `${root.uuid}|${key}`;
|
|
1073
1090
|
if (this.boneMisses.get(entityId) === missKey) return null;
|
|
1074
|
-
const bone = findModelBone(root,
|
|
1091
|
+
const bone = findModelBone(root, ref);
|
|
1075
1092
|
if (!bone) {
|
|
1076
1093
|
this.boneMisses.set(entityId, missKey);
|
|
1077
1094
|
return null;
|
|
1078
1095
|
}
|
|
1079
1096
|
this.boneMisses.delete(entityId);
|
|
1080
|
-
const socket = new
|
|
1097
|
+
const socket = new THREE6.Object3D();
|
|
1081
1098
|
socket.name = `socket:${bone.name}`;
|
|
1082
1099
|
socket.userData[BONE_SOCKET_FLAG] = entityId;
|
|
1083
1100
|
bone.add(socket);
|
|
@@ -1109,6 +1126,50 @@ var _ObjectManagementSystem = class _ObjectManagementSystem {
|
|
|
1109
1126
|
_anchorScale.z / safe(_boneScale.z)
|
|
1110
1127
|
);
|
|
1111
1128
|
}
|
|
1129
|
+
/** Whether {@link applyBoneHold} is managing this attachment. */
|
|
1130
|
+
hasBoneHold(entityId) {
|
|
1131
|
+
return this.boneHolds.has(entityId);
|
|
1132
|
+
}
|
|
1133
|
+
/**
|
|
1134
|
+
* Put an attachment in a hold for the clip now playing (`hold` null: the
|
|
1135
|
+
* attachment's own bone and Transform), moving it to the hold's bone if that
|
|
1136
|
+
* changed. Called each frame, since a socket can be rebuilt under it.
|
|
1137
|
+
*/
|
|
1138
|
+
applyBoneHold(world, entityId, hold, hidden) {
|
|
1139
|
+
const before = this.boneHolds.get(entityId) ?? null;
|
|
1140
|
+
this.boneHolds.set(entityId, hold);
|
|
1141
|
+
if ((before?.bone ?? null) !== (hold?.bone ?? null) || (before?.humanoid ?? null) !== (hold?.humanoid ?? null)) {
|
|
1142
|
+
this.boneMisses.delete(entityId);
|
|
1143
|
+
this.reconcileSceneFromWorld(world);
|
|
1144
|
+
}
|
|
1145
|
+
const socket = this.boneSockets.get(entityId)?.socket;
|
|
1146
|
+
if (!socket) return;
|
|
1147
|
+
socket.visible = !hidden;
|
|
1148
|
+
if (!hold?.position && !hold?.rotation) {
|
|
1149
|
+
socket.position.set(0, 0, 0);
|
|
1150
|
+
socket.quaternion.identity();
|
|
1151
|
+
return;
|
|
1152
|
+
}
|
|
1153
|
+
const held = world.getComponent(entityId, TransformComponent);
|
|
1154
|
+
if (!held) return;
|
|
1155
|
+
const own = held.position;
|
|
1156
|
+
_heldPosition.set(own.x, own.y, own.z);
|
|
1157
|
+
_heldRotation.setFromEuler(_holdEuler.set(held.rotation.x, held.rotation.y, held.rotation.z));
|
|
1158
|
+
if (hold.position) _holdPosition.set(hold.position.x, hold.position.y, hold.position.z);
|
|
1159
|
+
else _holdPosition.copy(_heldPosition);
|
|
1160
|
+
if (hold.rotation) {
|
|
1161
|
+
_holdRotation.setFromEuler(_holdEuler.set(hold.rotation.x, hold.rotation.y, hold.rotation.z));
|
|
1162
|
+
} else {
|
|
1163
|
+
_holdRotation.copy(_heldRotation);
|
|
1164
|
+
}
|
|
1165
|
+
_holdMatrix.compose(_holdPosition, _holdRotation, _unitScale).multiply(_heldMatrix.compose(_heldPosition, _heldRotation, _unitScale).invert()).decompose(socket.position, socket.quaternion, _ignoredScale);
|
|
1166
|
+
socket.position.multiply(socket.scale);
|
|
1167
|
+
}
|
|
1168
|
+
/** Stop managing an attachment that no longer has holds, and put it back. */
|
|
1169
|
+
releaseBoneHold(world, entityId) {
|
|
1170
|
+
this.applyBoneHold(world, entityId, null, false);
|
|
1171
|
+
this.boneHolds.delete(entityId);
|
|
1172
|
+
}
|
|
1112
1173
|
/**
|
|
1113
1174
|
* Load a model entity's file again and swap it in (the file was rewritten);
|
|
1114
1175
|
* the entity, its components and children stay, attachments re-home.
|
|
@@ -1233,5 +1294,5 @@ __name(_ObjectManagementSystem, "ObjectManagementSystem");
|
|
|
1233
1294
|
var ObjectManagementSystem = _ObjectManagementSystem;
|
|
1234
1295
|
|
|
1235
1296
|
export { ObjectManagementSystem, SHARED_MODEL_RESOURCE_FLAG, applyTransform, clearModelCache, createAnimationComponent, createAudioComponent, createBaseEntity, createBoneAttachmentComponent, createCameraComponent, createEntityTypeComponent, createEnvironmentComponent, createGLTFLoader, createIKComponent, createImageComponent, createImageTargetAnchorComponent, createImageTargetComponent, createInstanceSlotComponent, createInstancedMeshComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModel, createModelComponent, createNameComponent, createNetworkIdentityComponent, createNetworkSpawnerComponent, createNetworkTransformComponent, createNetworkedPropsComponent, createObject3DRefComponent, createParentIdComponent, createPhysicsComponent, createPostprocessingComponent, createScriptComponent, createScriptObjectComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransform, createTransformComponent, createUIButtonComponent, createUIPanelComponent, createUISliderComponent, createUITextComponent, createUIToggleComponent, createVRTeleportAreaComponent, createVideoComponent, createXRAnchorComponent, createXRHandPoseComponent, createXRInteractableComponent, createXRInteractorComponent, createXRInteractorSideComponent, createXRRigComponent, findModelBone, listModelBones, loadSharedGltf, resolveDracoDecoderPath, setDracoDecoderPath };
|
|
1236
|
-
//# sourceMappingURL=chunk-
|
|
1237
|
-
//# sourceMappingURL=chunk-
|
|
1297
|
+
//# sourceMappingURL=chunk-QAZCVCMP.js.map
|
|
1298
|
+
//# sourceMappingURL=chunk-QAZCVCMP.js.map
|