UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

83 lines 2.95 kB
import { getEditorBehavior } from "../../states/useEditorBehavior"; import { getEditorHelper } from "../../states/useEditorHelper"; import { flushMultipleSelectionTargets } from "../../states/useMultipleSelectionTargets"; import { getWorldPlayComputed } from "../../states/useWorldPlayComputed"; import HelperSphere from "./utils/HelperSphere"; import { jointSet } from "../../collections/jointSet"; import MeshAppendable from "./MeshAppendable"; import { editorBehaviorPtr } from "../../pointers/editorBehaviorPtr"; import { configJointSystem } from "../../systems/configSystems/configJointSystem"; import { configPhysicsSystem } from "../../systems/configLoadedSystems/configPhysicsSystem"; export default class JointBase extends MeshAppendable { $fromManager; $toManager; $pxJoint; disposeNode() { super.disposeNode(); jointSet.delete(this); } constructor() { super(); jointSet.add(this); this.createEffect(() => { if (!getWorldPlayComputed() || !editorBehaviorPtr[0]) return; flushMultipleSelectionTargets(() => this.savePos()); return () => { flushMultipleSelectionTargets(() => this.restorePos()); }; }, [getWorldPlayComputed, getEditorBehavior]); this.createEffect(() => { if (!getEditorHelper() || this.$disableSceneGraph) return; const helper = new HelperSphere(this); helper.scale = 0.1; helper.depthTest = false; return () => { helper.dispose(); }; }, [getEditorHelper]); } fromPos; toPos; fromQuat; toQuat; savePos() { const { $fromManager: fromManager, $toManager: toManager } = this; if (!fromManager || !toManager) return; this.fromPos = fromManager.position.clone(); this.toPos = toManager.position.clone(); this.fromQuat = fromManager.quaternion.clone(); this.toQuat = toManager.quaternion.clone(); } restorePos() { const { $fromManager: fromManager, $toManager: toManager } = this; if (!fromManager || !toManager) return; this.fromPos && fromManager.position.copy(this.fromPos); this.toPos && toManager.position.copy(this.toPos); this.fromQuat && fromManager.quaternion.copy(this.fromQuat); this.toQuat && toManager.quaternion.copy(this.toQuat); configJointSystem.add(this); configPhysicsSystem.add(fromManager); configPhysicsSystem.add(toManager); } _to; get to() { return this._to; } set to(val) { this._to = val; configJointSystem.add(this); } _from; get from() { return this._from; } set from(val) { this._from = val; configJointSystem.add(this); } } //# sourceMappingURL=JointBase.js.map