wonder.js
Version:
595 lines (566 loc) • 37.3 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 OperateArcballCameraControllerService$Wonderjs = require("../../../../record/main/camera_controller/arcball/OperateArcballCameraControllerService.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],
/* distanceMap */record[/* distanceMap */7],
/* minDistanceMap */record[/* minDistanceMap */8],
/* phiMap */record[/* phiMap */9],
/* thetaMap */record[/* thetaMap */10],
/* thetaMarginMap */record[/* thetaMarginMap */11],
/* targetMap */record[/* targetMap */12],
/* moveSpeedXMap */record[/* moveSpeedXMap */13],
/* moveSpeedYMap */record[/* moveSpeedYMap */14],
/* rotateSpeedMap */record[/* rotateSpeedMap */15],
/* wheelSpeedMap */record[/* wheelSpeedMap */16],
/* directionArrayMap */record[/* directionArrayMap */17],
/* gameObjectMap */record[/* gameObjectMap */18],
/* disposedIndexArray */record[/* disposedIndexArray */19]
];
}
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],
/* distanceMap */record[/* distanceMap */7],
/* minDistanceMap */record[/* minDistanceMap */8],
/* phiMap */record[/* phiMap */9],
/* thetaMap */record[/* thetaMap */10],
/* thetaMarginMap */record[/* thetaMarginMap */11],
/* targetMap */record[/* targetMap */12],
/* moveSpeedXMap */record[/* moveSpeedXMap */13],
/* moveSpeedYMap */record[/* moveSpeedYMap */14],
/* rotateSpeedMap */record[/* rotateSpeedMap */15],
/* wheelSpeedMap */record[/* wheelSpeedMap */16],
/* directionArrayMap */record[/* directionArrayMap */17],
/* gameObjectMap */record[/* gameObjectMap */18],
/* disposedIndexArray */record[/* disposedIndexArray */19]
];
}
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],
/* distanceMap */record[/* distanceMap */7],
/* minDistanceMap */record[/* minDistanceMap */8],
/* phiMap */record[/* phiMap */9],
/* thetaMap */record[/* thetaMap */10],
/* thetaMarginMap */record[/* thetaMarginMap */11],
/* targetMap */record[/* targetMap */12],
/* moveSpeedXMap */record[/* moveSpeedXMap */13],
/* moveSpeedYMap */record[/* moveSpeedYMap */14],
/* rotateSpeedMap */record[/* rotateSpeedMap */15],
/* wheelSpeedMap */record[/* wheelSpeedMap */16],
/* directionArrayMap */record[/* directionArrayMap */17],
/* gameObjectMap */record[/* gameObjectMap */18],
/* disposedIndexArray */record[/* disposedIndexArray */19]
];
}
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],
/* distanceMap */record[/* distanceMap */7],
/* minDistanceMap */record[/* minDistanceMap */8],
/* phiMap */record[/* phiMap */9],
/* thetaMap */record[/* thetaMap */10],
/* thetaMarginMap */record[/* thetaMarginMap */11],
/* targetMap */record[/* targetMap */12],
/* moveSpeedXMap */record[/* moveSpeedXMap */13],
/* moveSpeedYMap */record[/* moveSpeedYMap */14],
/* rotateSpeedMap */record[/* rotateSpeedMap */15],
/* wheelSpeedMap */record[/* wheelSpeedMap */16],
/* directionArrayMap */record[/* directionArrayMap */17],
/* gameObjectMap */record[/* gameObjectMap */18],
/* disposedIndexArray */record[/* disposedIndexArray */19]
];
}
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],
/* distanceMap */record[/* distanceMap */7],
/* minDistanceMap */record[/* minDistanceMap */8],
/* phiMap */record[/* phiMap */9],
/* thetaMap */record[/* thetaMap */10],
/* thetaMarginMap */record[/* thetaMarginMap */11],
/* targetMap */record[/* targetMap */12],
/* moveSpeedXMap */record[/* moveSpeedXMap */13],
/* moveSpeedYMap */record[/* moveSpeedYMap */14],
/* rotateSpeedMap */record[/* rotateSpeedMap */15],
/* wheelSpeedMap */record[/* wheelSpeedMap */16],
/* directionArrayMap */record[/* directionArrayMap */17],
/* gameObjectMap */record[/* gameObjectMap */18],
/* disposedIndexArray */record[/* disposedIndexArray */19]
];
}
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]),
/* distanceMap */record[/* distanceMap */7],
/* minDistanceMap */record[/* minDistanceMap */8],
/* phiMap */record[/* phiMap */9],
/* thetaMap */record[/* thetaMap */10],
/* thetaMarginMap */record[/* thetaMarginMap */11],
/* targetMap */record[/* targetMap */12],
/* moveSpeedXMap */record[/* moveSpeedXMap */13],
/* moveSpeedYMap */record[/* moveSpeedYMap */14],
/* rotateSpeedMap */record[/* rotateSpeedMap */15],
/* wheelSpeedMap */record[/* wheelSpeedMap */16],
/* directionArrayMap */record[/* directionArrayMap */17],
/* gameObjectMap */record[/* gameObjectMap */18],
/* disposedIndexArray */record[/* disposedIndexArray */19]
];
}
function _changeOrbit(cameraController, param, arcballCameraControllerRecord) {
var movementDelta = param[/* movementDelta */5];
var rotateSpeed = OperateArcballCameraControllerService$Wonderjs.unsafeGetRotateSpeed(cameraController, arcballCameraControllerRecord);
return OperateArcballCameraControllerService$Wonderjs.setTheta(cameraController, OperateArcballCameraControllerService$Wonderjs.unsafeGetTheta(cameraController, arcballCameraControllerRecord) - movementDelta[1] / (100 / rotateSpeed), OperateArcballCameraControllerService$Wonderjs.setPhi(cameraController, OperateArcballCameraControllerService$Wonderjs.unsafeGetPhi(cameraController, arcballCameraControllerRecord) + movementDelta[0] / (100 / rotateSpeed), arcballCameraControllerRecord));
}
function _handleDirectionArray(key, handleFunc, directionArray) {
switch (key) {
case "a" :
case "left" :
return Curry._2(handleFunc, /* Left */0, directionArray);
case "d" :
case "right" :
return Curry._2(handleFunc, /* Right */1, directionArray);
case "down" :
case "s" :
return Curry._2(handleFunc, /* Down */3, directionArray);
case "up" :
case "w" :
return Curry._2(handleFunc, /* Up */2, directionArray);
default:
return directionArray;
}
}
function _moveSpecificDirection(cameraController, keyboardEvent, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var directionArray = _handleDirectionArray(keyboardEvent[/* key */6], ArrayService$Wonderjs.addUniqueItem, OperateArcballCameraControllerService$Wonderjs.unsafeGetDirectionArray(cameraController, arcballCameraControllerRecord));
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* arcballCameraControllerRecord */25] = OperateArcballCameraControllerService$Wonderjs.setDirectionArray(cameraController, directionArray, arcballCameraControllerRecord);
return newrecord;
}
function _staticSpecificDirection(cameraController, keyboardEvent, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var directionArray = _handleDirectionArray(keyboardEvent[/* key */6], ArrayService$Wonderjs.removeSpecificItem, OperateArcballCameraControllerService$Wonderjs.unsafeGetDirectionArray(cameraController, arcballCameraControllerRecord));
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* arcballCameraControllerRecord */25] = OperateArcballCameraControllerService$Wonderjs.setDirectionArray(cameraController, directionArray, arcballCameraControllerRecord);
return newrecord;
}
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 arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var newrecord = Caml_array.caml_array_dup(state);
return /* tuple */[
(newrecord[/* arcballCameraControllerRecord */25] = _changeOrbit(cameraController, OptionService$Wonderjs.unsafeGet($$event[/* userData */4]), arcballCameraControllerRecord), newrecord),
$$event
];
};
var pointScaleHandleFunc = function ($$event, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
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[/* arcballCameraControllerRecord */25] = OperateArcballCameraControllerService$Wonderjs.setDistanceByEvent(cameraController, pointEvent, arcballCameraControllerRecord), 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[/* arcballCameraControllerRecord */25] = _addKeyupEventHandleFunc(cameraController, keyupHandleFunc, _addKeydownEventHandleFunc(cameraController, keydownHandleFunc, _addPointScaleEventHandleFunc(cameraController, pointScaleHandleFunc, _addPointDragOverEventHandleFunc(cameraController, pointDragOverHandleFunc, _addPointDragDropEventHandleFunc(cameraController, pointDragDropHandleFunc, _addPointDragStartEventHandleFunc(cameraController, pointDragStartHandleFunc, state[/* arcballCameraControllerRecord */25]))))));
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 arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var pointDragStartEventHandleFuncListMap = arcballCameraControllerRecord[/* 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[/* arcballCameraControllerRecord */25] = /* record */[
/* index */arcballCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointDragStartEventHandleFuncListMap),
/* pointDragDropEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */arcballCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */arcballCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */arcballCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* distanceMap */arcballCameraControllerRecord[/* distanceMap */7],
/* minDistanceMap */arcballCameraControllerRecord[/* minDistanceMap */8],
/* phiMap */arcballCameraControllerRecord[/* phiMap */9],
/* thetaMap */arcballCameraControllerRecord[/* thetaMap */10],
/* thetaMarginMap */arcballCameraControllerRecord[/* thetaMarginMap */11],
/* targetMap */arcballCameraControllerRecord[/* targetMap */12],
/* moveSpeedXMap */arcballCameraControllerRecord[/* moveSpeedXMap */13],
/* moveSpeedYMap */arcballCameraControllerRecord[/* moveSpeedYMap */14],
/* rotateSpeedMap */arcballCameraControllerRecord[/* rotateSpeedMap */15],
/* wheelSpeedMap */arcballCameraControllerRecord[/* wheelSpeedMap */16],
/* directionArrayMap */arcballCameraControllerRecord[/* directionArrayMap */17],
/* gameObjectMap */arcballCameraControllerRecord[/* gameObjectMap */18],
/* disposedIndexArray */arcballCameraControllerRecord[/* disposedIndexArray */19]
];
return newrecord;
} else {
return state;
}
}
function _disposePointDragDropEventHandleFuncListMap(cameraController, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var pointDragDropEventHandleFuncListMap = arcballCameraControllerRecord[/* 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[/* arcballCameraControllerRecord */25] = /* record */[
/* index */arcballCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointDragDropEventHandleFuncListMap),
/* pointDragOverEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */arcballCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */arcballCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */arcballCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* distanceMap */arcballCameraControllerRecord[/* distanceMap */7],
/* minDistanceMap */arcballCameraControllerRecord[/* minDistanceMap */8],
/* phiMap */arcballCameraControllerRecord[/* phiMap */9],
/* thetaMap */arcballCameraControllerRecord[/* thetaMap */10],
/* thetaMarginMap */arcballCameraControllerRecord[/* thetaMarginMap */11],
/* targetMap */arcballCameraControllerRecord[/* targetMap */12],
/* moveSpeedXMap */arcballCameraControllerRecord[/* moveSpeedXMap */13],
/* moveSpeedYMap */arcballCameraControllerRecord[/* moveSpeedYMap */14],
/* rotateSpeedMap */arcballCameraControllerRecord[/* rotateSpeedMap */15],
/* wheelSpeedMap */arcballCameraControllerRecord[/* wheelSpeedMap */16],
/* directionArrayMap */arcballCameraControllerRecord[/* directionArrayMap */17],
/* gameObjectMap */arcballCameraControllerRecord[/* gameObjectMap */18],
/* disposedIndexArray */arcballCameraControllerRecord[/* disposedIndexArray */19]
];
return newrecord;
} else {
return state;
}
}
function _disposePointDragOverEventHandleFuncListMap(cameraController, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var pointDragOverEventHandleFuncListMap = arcballCameraControllerRecord[/* 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[/* arcballCameraControllerRecord */25] = /* record */[
/* index */arcballCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointDragOverEventHandleFuncListMap),
/* pointScaleEventHandleFuncListMap */arcballCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */arcballCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */arcballCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* distanceMap */arcballCameraControllerRecord[/* distanceMap */7],
/* minDistanceMap */arcballCameraControllerRecord[/* minDistanceMap */8],
/* phiMap */arcballCameraControllerRecord[/* phiMap */9],
/* thetaMap */arcballCameraControllerRecord[/* thetaMap */10],
/* thetaMarginMap */arcballCameraControllerRecord[/* thetaMarginMap */11],
/* targetMap */arcballCameraControllerRecord[/* targetMap */12],
/* moveSpeedXMap */arcballCameraControllerRecord[/* moveSpeedXMap */13],
/* moveSpeedYMap */arcballCameraControllerRecord[/* moveSpeedYMap */14],
/* rotateSpeedMap */arcballCameraControllerRecord[/* rotateSpeedMap */15],
/* wheelSpeedMap */arcballCameraControllerRecord[/* wheelSpeedMap */16],
/* directionArrayMap */arcballCameraControllerRecord[/* directionArrayMap */17],
/* gameObjectMap */arcballCameraControllerRecord[/* gameObjectMap */18],
/* disposedIndexArray */arcballCameraControllerRecord[/* disposedIndexArray */19]
];
return newrecord;
} else {
return state;
}
}
function _disposePointScaleEventHandleFuncListMap(cameraController, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var pointScaleEventHandleFuncListMap = arcballCameraControllerRecord[/* 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[/* arcballCameraControllerRecord */25] = /* record */[
/* index */arcballCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, pointScaleEventHandleFuncListMap),
/* keydownEventHandleFuncListMap */arcballCameraControllerRecord[/* keydownEventHandleFuncListMap */5],
/* keyupEventHandleFuncListMap */arcballCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* distanceMap */arcballCameraControllerRecord[/* distanceMap */7],
/* minDistanceMap */arcballCameraControllerRecord[/* minDistanceMap */8],
/* phiMap */arcballCameraControllerRecord[/* phiMap */9],
/* thetaMap */arcballCameraControllerRecord[/* thetaMap */10],
/* thetaMarginMap */arcballCameraControllerRecord[/* thetaMarginMap */11],
/* targetMap */arcballCameraControllerRecord[/* targetMap */12],
/* moveSpeedXMap */arcballCameraControllerRecord[/* moveSpeedXMap */13],
/* moveSpeedYMap */arcballCameraControllerRecord[/* moveSpeedYMap */14],
/* rotateSpeedMap */arcballCameraControllerRecord[/* rotateSpeedMap */15],
/* wheelSpeedMap */arcballCameraControllerRecord[/* wheelSpeedMap */16],
/* directionArrayMap */arcballCameraControllerRecord[/* directionArrayMap */17],
/* gameObjectMap */arcballCameraControllerRecord[/* gameObjectMap */18],
/* disposedIndexArray */arcballCameraControllerRecord[/* disposedIndexArray */19]
];
return newrecord;
} else {
return state;
}
}
function _disposeKeyDownEventHandleFuncListMap(cameraController, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var keydownEventHandleFuncListMap = arcballCameraControllerRecord[/* 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[/* arcballCameraControllerRecord */25] = /* record */[
/* index */arcballCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */arcballCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, keydownEventHandleFuncListMap),
/* keyupEventHandleFuncListMap */arcballCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* distanceMap */arcballCameraControllerRecord[/* distanceMap */7],
/* minDistanceMap */arcballCameraControllerRecord[/* minDistanceMap */8],
/* phiMap */arcballCameraControllerRecord[/* phiMap */9],
/* thetaMap */arcballCameraControllerRecord[/* thetaMap */10],
/* thetaMarginMap */arcballCameraControllerRecord[/* thetaMarginMap */11],
/* targetMap */arcballCameraControllerRecord[/* targetMap */12],
/* moveSpeedXMap */arcballCameraControllerRecord[/* moveSpeedXMap */13],
/* moveSpeedYMap */arcballCameraControllerRecord[/* moveSpeedYMap */14],
/* rotateSpeedMap */arcballCameraControllerRecord[/* rotateSpeedMap */15],
/* wheelSpeedMap */arcballCameraControllerRecord[/* wheelSpeedMap */16],
/* directionArrayMap */arcballCameraControllerRecord[/* directionArrayMap */17],
/* gameObjectMap */arcballCameraControllerRecord[/* gameObjectMap */18],
/* disposedIndexArray */arcballCameraControllerRecord[/* disposedIndexArray */19]
];
return newrecord;
} else {
return state;
}
}
function _disposeKeyUpEventHandleFuncListMap(cameraController, state) {
var arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
var keyupEventHandleFuncListMap = arcballCameraControllerRecord[/* 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[/* arcballCameraControllerRecord */25] = /* record */[
/* index */arcballCameraControllerRecord[/* index */0],
/* pointDragStartEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragStartEventHandleFuncListMap */1],
/* pointDragDropEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragDropEventHandleFuncListMap */2],
/* pointDragOverEventHandleFuncListMap */arcballCameraControllerRecord[/* pointDragOverEventHandleFuncListMap */3],
/* pointScaleEventHandleFuncListMap */arcballCameraControllerRecord[/* pointScaleEventHandleFuncListMap */4],
/* keydownEventHandleFuncListMap */DisposeComponentService$Wonderjs.disposeSparseMapData(cameraController, keyupEventHandleFuncListMap),
/* keyupEventHandleFuncListMap */arcballCameraControllerRecord[/* keyupEventHandleFuncListMap */6],
/* distanceMap */arcballCameraControllerRecord[/* distanceMap */7],
/* minDistanceMap */arcballCameraControllerRecord[/* minDistanceMap */8],
/* phiMap */arcballCameraControllerRecord[/* phiMap */9],
/* thetaMap */arcballCameraControllerRecord[/* thetaMap */10],
/* thetaMarginMap */arcballCameraControllerRecord[/* thetaMarginMap */11],
/* targetMap */arcballCameraControllerRecord[/* targetMap */12],
/* moveSpeedXMap */arcballCameraControllerRecord[/* moveSpeedXMap */13],
/* moveSpeedYMap */arcballCameraControllerRecord[/* moveSpeedYMap */14],
/* rotateSpeedMap */arcballCameraControllerRecord[/* rotateSpeedMap */15],
/* wheelSpeedMap */arcballCameraControllerRecord[/* wheelSpeedMap */16],
/* directionArrayMap */arcballCameraControllerRecord[/* directionArrayMap */17],
/* gameObjectMap */arcballCameraControllerRecord[/* gameObjectMap */18],
/* disposedIndexArray */arcballCameraControllerRecord[/* disposedIndexArray */19]
];
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 arcballCameraControllerRecord = state[/* arcballCameraControllerRecord */25];
return MutableSparseMapService$WonderCommonlib.has(cameraController, arcballCameraControllerRecord[/* 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._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 */