wonder.js
Version:
573 lines (543 loc) • 34.7 kB
JavaScript
'use strict';
var List = require("bs-platform/lib/js/list.js");
var Curry = require("bs-platform/lib/js/curry.js");
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var DomExtend$Wonderjs = require("../../../../../external/DomExtend.js");
var ViewService$Wonderjs = require("../../../../record/main/device/ViewService.js");
var ArrayService$Wonderjs = require("../../../../atom/ArrayService.js");
var OptionService$Wonderjs = require("../../../../atom/OptionService.js");
var NameEventService$Wonderjs = require("../../../../record/main/event/NameEventService.js");
var ManageEventMainService$Wonderjs = require("../../event/ManageEventMainService.js");
var DisposeComponentService$Wonderjs = require("../../../../primitive/component/DisposeComponentService.js");
var BrowserDetectMainService$Wonderjs = require("../../browserDetect/BrowserDetectMainService.js");
var HandlePointDomEventMainService$Wonderjs = require("../../event/handle/HandlePointDomEventMainService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
var OperateFlyCameraControllerService$Wonderjs = require("../../../../record/main/camera_controller/fly/OperateFlyCameraControllerService.js");
function _addEventHandleFunc(cameraController, handleFunc, eventHandleFuncListMap) {
var match = MutableSparseMapService$WonderCommonlib.get(cameraController, eventHandleFuncListMap);
if (match !== undefined) {
return MutableSparseMapService$WonderCommonlib.set(cameraController, /* :: */[
handleFunc,
match
], eventHandleFuncListMap);
} else {
return MutableSparseMapService$WonderCommonlib.set(cameraController, /* :: */[
handleFunc,
/* [] */0
], eventHandleFuncListMap);
}
}
function _addPointDragStartEventHandleFunc(cameraController, handleFunc, record) {
return /* record */[
/* index */record[/* index */0],
/* pointDragStartEventHandleFuncListMap */_addEventHandleFunc(cameraController, handleFunc, record[/* pointDragStartEventHandleFuncListMap */1]),
/* pointDragDropEventHandleFuncListMap */record[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */record[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */record[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */record[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */record[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */record[/* moveSpeedMap */7],
/* wheelSpeedMap */record[/* wheelSpeedMap */8],
/* rotateSpeedMap */record[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */record[/* eulerAngleDiffMap */10],
/* translationDiffMap */record[/* translationDiffMap */11],
/* gameObjectMap */record[/* gameObjectMap */12],
/* disposedIndexArray */record[/* disposedIndexArray */13],
/* directionArrayMap */record[/* directionArrayMap */14],
/* localEulerAngleMap */record[/* localEulerAngleMap */15]
];
}
function _addPointDragDropEventHandleFunc(cameraController, handleFunc, record) {
return /* record */[
/* index */record[/* index */0],
/* pointDragStartEventHandleFuncListMap */record[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */_addEventHandleFunc(cameraController, handleFunc, record[/* pointDragDropEventHandleFuncListMap */2]),
/* pointDragOverEventHandleFuncListMap */record[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */record[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */record[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */record[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */record[/* moveSpeedMap */7],
/* wheelSpeedMap */record[/* wheelSpeedMap */8],
/* rotateSpeedMap */record[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */record[/* eulerAngleDiffMap */10],
/* translationDiffMap */record[/* translationDiffMap */11],
/* gameObjectMap */record[/* gameObjectMap */12],
/* disposedIndexArray */record[/* disposedIndexArray */13],
/* directionArrayMap */record[/* directionArrayMap */14],
/* localEulerAngleMap */record[/* localEulerAngleMap */15]
];
}
function _addPointDragOverEventHandleFunc(cameraController, handleFunc, record) {
return /* record */[
/* index */record[/* index */0],
/* pointDragStartEventHandleFuncListMap */record[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */record[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */_addEventHandleFunc(cameraController, handleFunc, record[/* pointDragOverEventHandleFuncListMap */3]),
/* pointScaleEventHandleFuncListMap */record[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */record[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */record[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */record[/* moveSpeedMap */7],
/* wheelSpeedMap */record[/* wheelSpeedMap */8],
/* rotateSpeedMap */record[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */record[/* eulerAngleDiffMap */10],
/* translationDiffMap */record[/* translationDiffMap */11],
/* gameObjectMap */record[/* gameObjectMap */12],
/* disposedIndexArray */record[/* disposedIndexArray */13],
/* directionArrayMap */record[/* directionArrayMap */14],
/* localEulerAngleMap */record[/* localEulerAngleMap */15]
];
}
function _addPointScaleEventHandleFunc(cameraController, handleFunc, record) {
return /* record */[
/* index */record[/* index */0],
/* pointDragStartEventHandleFuncListMap */record[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */record[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */record[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */_addEventHandleFunc(cameraController, handleFunc, record[/* pointScaleEventHandleFuncListMap */4]),
/* keydownEventHandleFuncListMap */record[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */record[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */record[/* moveSpeedMap */7],
/* wheelSpeedMap */record[/* wheelSpeedMap */8],
/* rotateSpeedMap */record[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */record[/* eulerAngleDiffMap */10],
/* translationDiffMap */record[/* translationDiffMap */11],
/* gameObjectMap */record[/* gameObjectMap */12],
/* disposedIndexArray */record[/* disposedIndexArray */13],
/* directionArrayMap */record[/* directionArrayMap */14],
/* localEulerAngleMap */record[/* localEulerAngleMap */15]
];
}
function _addKeydownEventHandleFunc(cameraController, handleFunc, record) {
return /* record */[
/* index */record[/* index */0],
/* pointDragStartEventHandleFuncListMap */record[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */record[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */record[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */record[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */_addEventHandleFunc(cameraController, handleFunc, record[/* keydownEventHandleFuncListMap */5]),
/* keyupEventHandleFuncListMap */record[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */record[/* moveSpeedMap */7],
/* wheelSpeedMap */record[/* wheelSpeedMap */8],
/* rotateSpeedMap */record[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */record[/* eulerAngleDiffMap */10],
/* translationDiffMap */record[/* translationDiffMap */11],
/* gameObjectMap */record[/* gameObjectMap */12],
/* disposedIndexArray */record[/* disposedIndexArray */13],
/* directionArrayMap */record[/* directionArrayMap */14],
/* localEulerAngleMap */record[/* localEulerAngleMap */15]
];
}
function _addKeyupEventHandleFunc(cameraController, handleFunc, record) {
return /* record */[
/* index */record[/* index */0],
/* pointDragStartEventHandleFuncListMap */record[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */record[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */record[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */record[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */record[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */_addEventHandleFunc(cameraController, handleFunc, record[/* keyupEventHandleFuncListMap */6]),
/* moveSpeedMap */record[/* moveSpeedMap */7],
/* wheelSpeedMap */record[/* wheelSpeedMap */8],
/* rotateSpeedMap */record[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */record[/* eulerAngleDiffMap */10],
/* translationDiffMap */record[/* translationDiffMap */11],
/* gameObjectMap */record[/* gameObjectMap */12],
/* disposedIndexArray */record[/* disposedIndexArray */13],
/* directionArrayMap */record[/* directionArrayMap */14],
/* localEulerAngleMap */record[/* localEulerAngleMap */15]
];
}
function _changeOrbit(cameraController, param, state) {
var movementDelta = param[/* movementDelta */5];
var viewRecord = state[/* viewRecord */8];
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var rotateSpeed = OperateFlyCameraControllerService$Wonderjs.unsafeGetRotateSpeed(cameraController, flyCameraControllerRecord);
var canvasHeight = ViewService$Wonderjs.unsafeGetCanvas(viewRecord).height;
var match = canvasHeight === 0;
var factor = match ? 0 : rotateSpeed / canvasHeight;
return OperateFlyCameraControllerService$Wonderjs.setEulerAngleDiff(cameraController, /* record */[
/* diffX */factor * movementDelta[1],
/* diffY */factor * movementDelta[0]
], flyCameraControllerRecord);
}
function _handleDirectionArray(key, handleFunc, directionArray) {
switch (key) {
case "e" :
return Curry._2(handleFunc, /* Down */3, directionArray);
case "a" :
case "left" :
return Curry._2(handleFunc, /* Left */0, directionArray);
case "q" :
return Curry._2(handleFunc, /* Up */2, directionArray);
case "d" :
case "right" :
return Curry._2(handleFunc, /* Right */1, directionArray);
case "down" :
case "s" :
return Curry._2(handleFunc, /* Back */5, directionArray);
case "up" :
case "w" :
return Curry._2(handleFunc, /* Front */4, directionArray);
default:
return directionArray;
}
}
function _moveSpecificDirection(cameraController, keyboardEvent, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var directionArray = _handleDirectionArray(keyboardEvent[/* key */6], ArrayService$Wonderjs.addUniqueItem, OperateFlyCameraControllerService$Wonderjs.unsafeGetDirectionArray(cameraController, flyCameraControllerRecord));
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* flyCameraControllerRecord */26] = OperateFlyCameraControllerService$Wonderjs.setDirectionArray(cameraController, directionArray, flyCameraControllerRecord);
return newrecord;
}
function _staticSpecificDirection(cameraController, keyboardEvent, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var directionArray = _handleDirectionArray(keyboardEvent[/* key */6], ArrayService$Wonderjs.removeSpecificItem, OperateFlyCameraControllerService$Wonderjs.unsafeGetDirectionArray(cameraController, flyCameraControllerRecord));
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* flyCameraControllerRecord */26] = OperateFlyCameraControllerService$Wonderjs.setDirectionArray(cameraController, directionArray, flyCameraControllerRecord);
return newrecord;
}
function _translationByPointScale(cameraController, pointEvent, flyCameraControllerRecord) {
var wheelSpeed = OperateFlyCameraControllerService$Wonderjs.unsafeGetWheelSpeed(cameraController, flyCameraControllerRecord);
var match = pointEvent[/* wheel */4];
if (match !== undefined) {
return OperateFlyCameraControllerService$Wonderjs.setTranslationDiff(cameraController, /* tuple */[
0,
0,
-wheelSpeed * match
], flyCameraControllerRecord);
} else {
return flyCameraControllerRecord;
}
}
function _isCombinedKey(param) {
if (param[/* ctrlKey */2] || param[/* altKey */3] || param[/* shiftKey */4]) {
return true;
} else {
return param[/* metaKey */5];
}
}
function isTriggerKeydownEventHandler($$event) {
return !_isCombinedKey($$event);
}
function prepareBindEvent(cameraController, state) {
var pointDragStartHandleFunc = function ($$event, state) {
var viewRecord = state[/* viewRecord */8];
var match = BrowserDetectMainService$Wonderjs.isMobile(state);
if (match) {
return /* tuple */[
state,
$$event
];
} else {
var canvas = ViewService$Wonderjs.unsafeGetCanvas(viewRecord);
DomExtend$Wonderjs.requestPointerLock(canvas);
return /* tuple */[
state,
$$event
];
}
};
var pointDragDropHandleFunc = function ($$event, state) {
var viewRecord = state[/* viewRecord */8];
var match = BrowserDetectMainService$Wonderjs.isMobile(state);
if (match) {
return /* tuple */[
state,
$$event
];
} else {
var canvas = ViewService$Wonderjs.unsafeGetCanvas(viewRecord);
var $$document$1 = document;
var match$1 = $$document$1.pointerLockElement === canvas;
if (match$1) {
DomExtend$Wonderjs.exitPointerLock(/* () */0);
}
return /* tuple */[
state,
$$event
];
}
};
var pointDragOverHandleFunc = function ($$event, state) {
var newrecord = Caml_array.caml_array_dup(state);
return /* tuple */[
(newrecord[/* flyCameraControllerRecord */26] = _changeOrbit(cameraController, OptionService$Wonderjs.unsafeGet($$event[/* userData */4]), state), newrecord),
$$event
];
};
var pointScaleHandleFunc = function ($$event, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var pointEvent = OptionService$Wonderjs.unsafeGet($$event[/* userData */4]);
HandlePointDomEventMainService$Wonderjs.preventDefault(pointEvent[/* event */6]);
var newrecord = Caml_array.caml_array_dup(state);
return /* tuple */[
(newrecord[/* flyCameraControllerRecord */26] = _translationByPointScale(cameraController, pointEvent, flyCameraControllerRecord), newrecord),
$$event
];
};
var keydownHandleFunc = function ($$event, state) {
var match = !_isCombinedKey($$event);
if (match) {
return _moveSpecificDirection(cameraController, $$event, state);
} else {
return state;
}
};
var keyupHandleFunc = function ($$event, state) {
return _staticSpecificDirection(cameraController, $$event, state);
};
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* flyCameraControllerRecord */26] = _addKeyupEventHandleFunc(cameraController, keyupHandleFunc, _addKeydownEventHandleFunc(cameraController, keydownHandleFunc, _addPointScaleEventHandleFunc(cameraController, pointScaleHandleFunc, _addPointDragOverEventHandleFunc(cameraController, pointDragOverHandleFunc, _addPointDragDropEventHandleFunc(cameraController, pointDragDropHandleFunc, _addPointDragStartEventHandleFunc(cameraController, pointDragStartHandleFunc, state[/* flyCameraControllerRecord */26]))))));
return /* tuple */[
newrecord,
pointDragStartHandleFunc,
pointDragDropHandleFunc,
pointDragOverHandleFunc,
pointScaleHandleFunc,
keydownHandleFunc,
keyupHandleFunc
];
}
function bindEvent(cameraController, state) {
var match = prepareBindEvent(cameraController, state);
var state$1 = ManageEventMainService$Wonderjs.onCustomGlobalEvent(NameEventService$Wonderjs.getPointDragStartEventName(/* () */0), match[1], match[0], undefined, /* () */0);
var state$2 = ManageEventMainService$Wonderjs.onCustomGlobalEvent(NameEventService$Wonderjs.getPointDragDropEventName(/* () */0), match[2], state$1, undefined, /* () */0);
var state$3 = ManageEventMainService$Wonderjs.onCustomGlobalEvent(NameEventService$Wonderjs.getPointDragOverEventName(/* () */0), match[3], state$2, undefined, /* () */0);
var state$4 = ManageEventMainService$Wonderjs.onCustomGlobalEvent(NameEventService$Wonderjs.getPointScaleEventName(/* () */0), match[4], state$3, undefined, /* () */0);
var state$5 = ManageEventMainService$Wonderjs.onKeyboardEvent(/* KeyDown */10, match[5], state$4, undefined, /* () */0);
return ManageEventMainService$Wonderjs.onKeyboardEvent(/* KeyUp */9, match[6], state$5, undefined, /* () */0);
}
var _unbindPointEvent = ManageEventMainService$Wonderjs.offCustomGlobalEventByHandleFunc;
var _unbindKeyboardEvent = ManageEventMainService$Wonderjs.offKeyboardEventByHandleFunc;
function _disposePointDragStartEventHandleFuncListMap(cameraController, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var pointDragStartEventHandleFuncListMap = flyCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1];
var match = MutableSparseMapService$WonderCommonlib.get(cameraController, pointDragStartEventHandleFuncListMap);
if (match !== undefined) {
var state$1 = List.fold_left((function (state, func) {
var eventName = NameEventService$Wonderjs.getPointDragStartEventName(/* () */0);
return ManageEventMainService$Wonderjs.offCustomGlobalEventByHandleFunc(eventName, func, state);
}), state, match);
var newrecord = Caml_array.caml_array_dup(state$1);
newrecord[/* flyCameraControllerRecord */26] = /* record */[
/* index */flyCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointDragStartEventHandleFuncListMap),
/* pointDragDropEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */flyCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */flyCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */flyCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */flyCameraControllerRecord[/* moveSpeedMap */7],
/* wheelSpeedMap */flyCameraControllerRecord[/* wheelSpeedMap */8],
/* rotateSpeedMap */flyCameraControllerRecord[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */flyCameraControllerRecord[/* eulerAngleDiffMap */10],
/* translationDiffMap */flyCameraControllerRecord[/* translationDiffMap */11],
/* gameObjectMap */flyCameraControllerRecord[/* gameObjectMap */12],
/* disposedIndexArray */flyCameraControllerRecord[/* disposedIndexArray */13],
/* directionArrayMap */flyCameraControllerRecord[/* directionArrayMap */14],
/* localEulerAngleMap */flyCameraControllerRecord[/* localEulerAngleMap */15]
];
return newrecord;
} else {
return state;
}
}
function _disposePointDragDropEventHandleFuncListMap(cameraController, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var pointDragDropEventHandleFuncListMap = flyCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2];
var match = MutableSparseMapService$WonderCommonlib.get(cameraController, pointDragDropEventHandleFuncListMap);
if (match !== undefined) {
var state$1 = List.fold_left((function (state, func) {
var eventName = NameEventService$Wonderjs.getPointDragDropEventName(/* () */0);
return ManageEventMainService$Wonderjs.offCustomGlobalEventByHandleFunc(eventName, func, state);
}), state, match);
var newrecord = Caml_array.caml_array_dup(state$1);
newrecord[/* flyCameraControllerRecord */26] = /* record */[
/* index */flyCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointDragDropEventHandleFuncListMap),
/* pointDragOverEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */flyCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */flyCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */flyCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */flyCameraControllerRecord[/* moveSpeedMap */7],
/* wheelSpeedMap */flyCameraControllerRecord[/* wheelSpeedMap */8],
/* rotateSpeedMap */flyCameraControllerRecord[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */flyCameraControllerRecord[/* eulerAngleDiffMap */10],
/* translationDiffMap */flyCameraControllerRecord[/* translationDiffMap */11],
/* gameObjectMap */flyCameraControllerRecord[/* gameObjectMap */12],
/* disposedIndexArray */flyCameraControllerRecord[/* disposedIndexArray */13],
/* directionArrayMap */flyCameraControllerRecord[/* directionArrayMap */14],
/* localEulerAngleMap */flyCameraControllerRecord[/* localEulerAngleMap */15]
];
return newrecord;
} else {
return state;
}
}
function _disposePointDragOverEventHandleFuncListMap(cameraController, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var pointDragOverEventHandleFuncListMap = flyCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3];
var match = MutableSparseMapService$WonderCommonlib.get(cameraController, pointDragOverEventHandleFuncListMap);
if (match !== undefined) {
var state$1 = List.fold_left((function (state, func) {
var eventName = NameEventService$Wonderjs.getPointDragOverEventName(/* () */0);
return ManageEventMainService$Wonderjs.offCustomGlobalEventByHandleFunc(eventName, func, state);
}), state, match);
var newrecord = Caml_array.caml_array_dup(state$1);
newrecord[/* flyCameraControllerRecord */26] = /* record */[
/* index */flyCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointDragOverEventHandleFuncListMap),
/* pointScaleEventHandleFuncListMap */flyCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */flyCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */flyCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */flyCameraControllerRecord[/* moveSpeedMap */7],
/* wheelSpeedMap */flyCameraControllerRecord[/* wheelSpeedMap */8],
/* rotateSpeedMap */flyCameraControllerRecord[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */flyCameraControllerRecord[/* eulerAngleDiffMap */10],
/* translationDiffMap */flyCameraControllerRecord[/* translationDiffMap */11],
/* gameObjectMap */flyCameraControllerRecord[/* gameObjectMap */12],
/* disposedIndexArray */flyCameraControllerRecord[/* disposedIndexArray */13],
/* directionArrayMap */flyCameraControllerRecord[/* directionArrayMap */14],
/* localEulerAngleMap */flyCameraControllerRecord[/* localEulerAngleMap */15]
];
return newrecord;
} else {
return state;
}
}
function _disposePointScaleEventHandleFuncListMap(cameraController, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var pointScaleEventHandleFuncListMap = flyCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4];
var match = MutableSparseMapService$WonderCommonlib.get(cameraController, pointScaleEventHandleFuncListMap);
if (match !== undefined) {
var state$1 = List.fold_left((function (state, func) {
var eventName = NameEventService$Wonderjs.getPointScaleEventName(/* () */0);
return ManageEventMainService$Wonderjs.offCustomGlobalEventByHandleFunc(eventName, func, state);
}), state, match);
var newrecord = Caml_array.caml_array_dup(state$1);
newrecord[/* flyCameraControllerRecord */26] = /* record */[
/* index */flyCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointScaleEventHandleFuncListMap),
/* keydownEventHandleFuncListMap */flyCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */flyCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */flyCameraControllerRecord[/* moveSpeedMap */7],
/* wheelSpeedMap */flyCameraControllerRecord[/* wheelSpeedMap */8],
/* rotateSpeedMap */flyCameraControllerRecord[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */flyCameraControllerRecord[/* eulerAngleDiffMap */10],
/* translationDiffMap */flyCameraControllerRecord[/* translationDiffMap */11],
/* gameObjectMap */flyCameraControllerRecord[/* gameObjectMap */12],
/* disposedIndexArray */flyCameraControllerRecord[/* disposedIndexArray */13],
/* directionArrayMap */flyCameraControllerRecord[/* directionArrayMap */14],
/* localEulerAngleMap */flyCameraControllerRecord[/* localEulerAngleMap */15]
];
return newrecord;
} else {
return state;
}
}
function _disposeKeyDownEventHandleFuncListMap(cameraController, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var keydownEventHandleFuncListMap = flyCameraControllerRecord[/* keydownEventHandleFuncListMap */5];
var match = MutableSparseMapService$WonderCommonlib.get(cameraController, keydownEventHandleFuncListMap);
if (match !== undefined) {
var state$1 = List.fold_left((function (state, func) {
return ManageEventMainService$Wonderjs.offKeyboardEventByHandleFunc(/* KeyDown */10, func, state);
}), state, match);
var newrecord = Caml_array.caml_array_dup(state$1);
newrecord[/* flyCameraControllerRecord */26] = /* record */[
/* index */flyCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */flyCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, keydownEventHandleFuncListMap),
/* keyupEventHandleFuncListMap */flyCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* moveSpeedMap */flyCameraControllerRecord[/* moveSpeedMap */7],
/* wheelSpeedMap */flyCameraControllerRecord[/* wheelSpeedMap */8],
/* rotateSpeedMap */flyCameraControllerRecord[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */flyCameraControllerRecord[/* eulerAngleDiffMap */10],
/* translationDiffMap */flyCameraControllerRecord[/* translationDiffMap */11],
/* gameObjectMap */flyCameraControllerRecord[/* gameObjectMap */12],
/* disposedIndexArray */flyCameraControllerRecord[/* disposedIndexArray */13],
/* directionArrayMap */flyCameraControllerRecord[/* directionArrayMap */14],
/* localEulerAngleMap */flyCameraControllerRecord[/* localEulerAngleMap */15]
];
return newrecord;
} else {
return state;
}
}
function _disposeKeyUpEventHandleFuncListMap(cameraController, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
var keyupEventHandleFuncListMap = flyCameraControllerRecord[/* keyupEventHandleFuncListMap */6];
var match = MutableSparseMapService$WonderCommonlib.get(cameraController, keyupEventHandleFuncListMap);
if (match !== undefined) {
var state$1 = List.fold_left((function (state, func) {
return ManageEventMainService$Wonderjs.offKeyboardEventByHandleFunc(/* KeyUp */9, func, state);
}), state, match);
var newrecord = Caml_array.caml_array_dup(state$1);
newrecord[/* flyCameraControllerRecord */26] = /* record */[
/* index */flyCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */flyCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */flyCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */flyCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, keyupEventHandleFuncListMap),
/* moveSpeedMap */flyCameraControllerRecord[/* moveSpeedMap */7],
/* wheelSpeedMap */flyCameraControllerRecord[/* wheelSpeedMap */8],
/* rotateSpeedMap */flyCameraControllerRecord[/* rotateSpeedMap */9],
/* eulerAngleDiffMap */flyCameraControllerRecord[/* eulerAngleDiffMap */10],
/* translationDiffMap */flyCameraControllerRecord[/* translationDiffMap */11],
/* gameObjectMap */flyCameraControllerRecord[/* gameObjectMap */12],
/* disposedIndexArray */flyCameraControllerRecord[/* disposedIndexArray */13],
/* directionArrayMap */flyCameraControllerRecord[/* directionArrayMap */14],
/* localEulerAngleMap */flyCameraControllerRecord[/* localEulerAngleMap */15]
];
return newrecord;
} else {
return state;
}
}
function unbindEvent(cameraController, state) {
return _disposeKeyUpEventHandleFuncListMap(cameraController, _disposeKeyDownEventHandleFuncListMap(cameraController, _disposePointScaleEventHandleFuncListMap(cameraController, _disposePointDragOverEventHandleFuncListMap(cameraController, _disposePointDragDropEventHandleFuncListMap(cameraController, _disposePointDragStartEventHandleFuncListMap(cameraController, state))))));
}
var unbindPointScaleEvent = _disposePointScaleEventHandleFuncListMap;
function isBindEvent(cameraController, state) {
var flyCameraControllerRecord = state[/* flyCameraControllerRecord */26];
return MutableSparseMapService$WonderCommonlib.has(cameraController, flyCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1]);
}
exports._addEventHandleFunc = _addEventHandleFunc;
exports._addPointDragStartEventHandleFunc = _addPointDragStartEventHandleFunc;
exports._addPointDragDropEventHandleFunc = _addPointDragDropEventHandleFunc;
exports._addPointDragOverEventHandleFunc = _addPointDragOverEventHandleFunc;
exports._addPointScaleEventHandleFunc = _addPointScaleEventHandleFunc;
exports._addKeydownEventHandleFunc = _addKeydownEventHandleFunc;
exports._addKeyupEventHandleFunc = _addKeyupEventHandleFunc;
exports._changeOrbit = _changeOrbit;
exports._handleDirectionArray = _handleDirectionArray;
exports._moveSpecificDirection = _moveSpecificDirection;
exports._staticSpecificDirection = _staticSpecificDirection;
exports._translationByPointScale = _translationByPointScale;
exports._isCombinedKey = _isCombinedKey;
exports.isTriggerKeydownEventHandler = isTriggerKeydownEventHandler;
exports.prepareBindEvent = prepareBindEvent;
exports.bindEvent = bindEvent;
exports._unbindPointEvent = _unbindPointEvent;
exports._unbindKeyboardEvent = _unbindKeyboardEvent;
exports._disposePointDragStartEventHandleFuncListMap = _disposePointDragStartEventHandleFuncListMap;
exports._disposePointDragDropEventHandleFuncListMap = _disposePointDragDropEventHandleFuncListMap;
exports._disposePointDragOverEventHandleFuncListMap = _disposePointDragOverEventHandleFuncListMap;
exports._disposePointScaleEventHandleFuncListMap = _disposePointScaleEventHandleFuncListMap;
exports._disposeKeyDownEventHandleFuncListMap = _disposeKeyDownEventHandleFuncListMap;
exports._disposeKeyUpEventHandleFuncListMap = _disposeKeyUpEventHandleFuncListMap;
exports.unbindEvent = unbindEvent;
exports.unbindPointScaleEvent = unbindPointScaleEvent;
exports.isBindEvent = isBindEvent;
/* ViewService-Wonderjs Not a pure module */