wonder.js
Version:
48 lines (42 loc) • 3.41 kB
JavaScript
;
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var GetAllComponentService$Wonderjs = require("../../../../primitive/component/GetAllComponentService.js");
var LookAtTransfromMainService$Wonderjs = require("../../transform/LookAtTransfromMainService.js");
var RecordTransformMainService$Wonderjs = require("../../transform/RecordTransformMainService.js");
var ModelMatrixTransformService$Wonderjs = require("../../../../record/main/transform/ModelMatrixTransformService.js");
var GetComponentGameObjectService$Wonderjs = require("../../../../record/main/gameObject/GetComponentGameObjectService.js");
var OperateArcballCameraControllerService$Wonderjs = require("../../../../record/main/camera_controller/arcball/OperateArcballCameraControllerService.js");
var GameObjectArcballCameraControllerService$Wonderjs = require("../../../../record/main/camera_controller/arcball/GameObjectArcballCameraControllerService.js");
var TargetArcballCameraControllerMainService$Wonderjs = require("./TargetArcballCameraControllerMainService.js");
function _updateTransform(cameraController, state) {
var gameObjectRecord = state[/* gameObjectRecord */10];
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var transformRecord = RecordTransformMainService$Wonderjs.getRecord(state);
var transform = GetComponentGameObjectService$Wonderjs.unsafeGetTransformComponent(GameObjectArcballCameraControllerService$Wonderjs.unsafeGetGameObject(cameraController, arcballCameraControllerRecord), gameObjectRecord);
var distance = OperateArcballCameraControllerService$Wonderjs.unsafeGetDistance(cameraController, arcballCameraControllerRecord);
var phi = OperateArcballCameraControllerService$Wonderjs.unsafeGetPhi(cameraController, arcballCameraControllerRecord);
var theta = OperateArcballCameraControllerService$Wonderjs.unsafeGetTheta(cameraController, arcballCameraControllerRecord);
var match = TargetArcballCameraControllerMainService$Wonderjs.setAndGetTranslationTarget(cameraController, state);
var target = match[0];
var newrecord = Caml_array.caml_array_dup(match[1]);
newrecord[/* transformRecord */11] = ModelMatrixTransformService$Wonderjs.setLocalPositionByTuple(transform, /* tuple */[
distance * Math.cos(phi) * Math.sin(theta) + target[0],
distance * Math.cos(theta) + target[1],
distance * Math.sin(phi) * Math.sin(theta) + target[2]
], transformRecord);
return LookAtTransfromMainService$Wonderjs.lookAt(transform, target, newrecord, undefined, /* () */0);
}
function _getAllArcballCameraControllers(state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
return GetAllComponentService$Wonderjs.getAllComponents(arcballCameraControllerRecord[/* index */0], arcballCameraControllerRecord[/* disposedIndexArray */19]);
}
function update(state) {
return ArrayService$WonderCommonlib.reduceOneParam((function (state, cameraController) {
return _updateTransform(cameraController, state);
}), state, _getAllArcballCameraControllers(state));
}
exports._updateTransform = _updateTransform;
exports._getAllArcballCameraControllers = _getAllArcballCameraControllers;
exports.update = update;
/* GetAllComponentService-Wonderjs Not a pure module */