wonder.js
Version:
88 lines (82 loc) • 4.69 kB
JavaScript
'use strict';
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var Matrix4Service$Wonderjs = require("../../../../atom/Matrix4Service.js");
var Vector3Service$Wonderjs = require("../../../../atom/Vector3Service.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.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");
function _computeTarget(cameraController, param, state) {
var dy = param[1];
var dx = param[0];
var gameObjectRecord = state[/* gameObjectRecord */10];
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var target = OperateArcballCameraControllerService$Wonderjs.unsafeGetTarget(cameraController, arcballCameraControllerRecord);
var transform = GetComponentGameObjectService$Wonderjs.unsafeGetTransformComponent(GameObjectArcballCameraControllerService$Wonderjs.unsafeGetGameObject(cameraController, arcballCameraControllerRecord), gameObjectRecord);
var match = RecordTransformMainService$Wonderjs.getRecord(state);
var localToWorldMatrices = match[/* localToWorldMatrices */2];
var localToWorldMatrixCacheMap = match[/* localToWorldMatrixCacheMap */19];
var localToWorldMatrixTypeArray = ModelMatrixTransformService$Wonderjs.getLocalToWorldMatrixTypeArray(transform, localToWorldMatrices, localToWorldMatrixCacheMap);
var match$1 = Vector3Service$Wonderjs.normalize(Matrix4Service$Wonderjs.getX(localToWorldMatrixTypeArray));
var match$2 = Vector3Service$Wonderjs.normalize(Matrix4Service$Wonderjs.getY(localToWorldMatrixTypeArray));
var __x = Vector3Service$Wonderjs.add(/* Float */0, target, /* tuple */[
match$1[0] * dx,
0,
match$1[2] * dx
]);
return Vector3Service$Wonderjs.add(/* Float */0, __x, /* tuple */[
match$2[0] * dy,
match$2[1] * dy,
0
]);
}
function setAndGetTranslationTarget(cameraController, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var moveSpeedX = OperateArcballCameraControllerService$Wonderjs.unsafeGetMoveSpeedX(cameraController, arcballCameraControllerRecord);
var moveSpeedY = OperateArcballCameraControllerService$Wonderjs.unsafeGetMoveSpeedY(cameraController, arcballCameraControllerRecord);
var initPosition = /* tuple */[
0,
0
];
var match = OperateArcballCameraControllerService$Wonderjs.hasDirection(cameraController, arcballCameraControllerRecord);
var match$1 = match ? ArrayService$WonderCommonlib.reduceOneParam((function (param, direction) {
var dy = param[1];
var dx = param[0];
switch (direction) {
case 0 :
return /* tuple */[
-moveSpeedX,
dy
];
case 1 :
return /* tuple */[
moveSpeedX,
dy
];
case 2 :
return /* tuple */[
dx,
moveSpeedY
];
case 3 :
return /* tuple */[
dx,
-moveSpeedY
];
}
}), initPosition, OperateArcballCameraControllerService$Wonderjs.unsafeGetDirectionArray(cameraController, arcballCameraControllerRecord)) : initPosition;
var newTargetValue = _computeTarget(cameraController, /* tuple */[
match$1[0],
match$1[1]
], state);
var newrecord = Caml_array.caml_array_dup(state);
return /* tuple */[
newTargetValue,
(newrecord[/* arcballCameraControllerRecord */25] = OperateArcballCameraControllerService$Wonderjs.setTarget(cameraController, newTargetValue, arcballCameraControllerRecord), newrecord)
];
}
exports._computeTarget = _computeTarget;
exports.setAndGetTranslationTarget = setAndGetTranslationTarget;
/* Matrix4Service-Wonderjs Not a pure module */