@vladkrutenyuk/three-kvy-core
Version:
Everything you need to create any-complexity 3D apps with Three.js. Empower Three.js with a modular, lifecycle-managed context that seamlessly propagates through objects via reusable features providing structured logic.
3 lines (2 loc) • 1.22 kB
JavaScript
import{utils as t,Object3DFeature as o}from"@vladkrutenyuk/three-kvy-core";import*as e from"three";const{defineProps:n,readOnly:r}=t.props;class i extends o{get rb(){return t.assertDefined(this._rb,"rb")}constructor(t){super(t),this.isRigidbody=!0,n(this,{isRigidbody:r(!0)})}getObjWorldPos(){return this.object.getWorldPosition(s),s}getObjWorldQuat(){return this.object.getWorldQuaternion(c),c}syncObjectToBody(){const t=this._rb;if(!t||t.isSleeping())return;const o=this.object,e=o.parent;if(!e)return;s.copy(t.translation()),e.worldToLocal(s),o.position.copy(s);const n=c;n.copy(t.rotation());const r=a;e.getWorldQuaternion(r),d.copy(r).invert().multiply(n),o.setRotationFromQuaternion(d)}syncBodyToObjectKinematically(){const t=this._rb;if(!t)return;const o=this.object;o.getWorldPosition(s),o.getWorldQuaternion(c),t.setNextKinematicTranslation(s),t.setNextKinematicRotation(c)}setBodyToObject(){const t=this._rb;if(!t)return;const o=this.object,n=new e.Vector3,r=new e.Quaternion;o.getWorldPosition(n),o.getWorldQuaternion(r),t.setTranslation(n,!0),t.setRotation(r,!0)}}const s=new e.Vector3,c=new e.Quaternion,a=new e.Quaternion,d=new e.Quaternion;export{i as Rigidbody};
//# sourceMappingURL=Rigidbody.js.map