lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
83 lines • 2.95 kB
JavaScript
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