lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
30 lines • 1.52 kB
JavaScript
import { deg2Rad, endPoint } from "@lincode/math";
import fpsAlpha from "../display/utils/fpsAlpha";
import { euler } from "../display/utils/reusables";
import createInternalSystem from "./utils/createInternalSystem";
export const dummySystem = createInternalSystem("dummySystem", {
data: {},
update: (self, { poseService, backwards, strideMode, spine, spineQuaternion, loadedItemQuaternion, strideMove, angle, strideForward, strideRight }) => {
poseService.send(backwards ? "RUN_BACKWARDS_START" : "RUN_START");
const loadedObject3d = self.$loadedObject3d;
const quaternionOld = loadedObject3d.quaternion.clone();
let spinePoint;
if (strideMode === "aim" && spine && spineQuaternion) {
loadedObject3d.quaternion.copy(loadedItemQuaternion);
spine.quaternion.copy(spineQuaternion);
spinePoint = spine.pointAt(1000);
}
loadedObject3d.quaternion.setFromEuler(euler.set(0, angle * deg2Rad, 0));
const quaternionNew = loadedObject3d.quaternion.clone();
loadedObject3d.quaternion
.copy(quaternionOld)
.slerp(quaternionNew, fpsAlpha(0.2));
spinePoint && spine?.lookAt(spinePoint);
if (!strideMove)
return;
const { x, y } = endPoint(0, 0, angle + 90, Math.max(Math.abs(strideForward), Math.abs(strideRight)));
self.moveForward(backwards ? y : -y);
self.moveRight(backwards ? x : -x);
}
});
//# sourceMappingURL=dummySystem.js.map