UNPKG

wonder.js

Version:
130 lines (120 loc) 7.55 kB
'use strict'; var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Log$WonderLog = require("wonder-log/lib/js/src/Log.js"); var Contract$WonderLog = require("wonder-log/lib/js/src/Contract.js"); var ArrayService$Wonderjs = require("../../../atom/ArrayService.js"); var OptionService$Wonderjs = require("../../../atom/OptionService.js"); var StateDataMain$Wonderjs = require("../data/StateDataMain.js"); var IsDebugMainService$Wonderjs = require("../state/IsDebugMainService.js"); var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js"); var ReduceStateMainService$Wonderjs = require("../array/ReduceStateMainService.js"); var HierachyTransformService$Wonderjs = require("../../../record/main/transform/HierachyTransformService.js"); var NameGameObjectMainService$Wonderjs = require("./NameGameObjectMainService.js"); var GameObjectTransformService$Wonderjs = require("../../../record/main/transform/GameObjectTransformService.js"); var RecordTransformMainService$Wonderjs = require("../transform/RecordTransformMainService.js"); var IsRootGameObjectMainService$Wonderjs = require("./IsRootGameObjectMainService.js"); var GetComponentGameObjectService$Wonderjs = require("../../../record/main/gameObject/GetComponentGameObjectService.js"); var HasComponentGameObjectService$Wonderjs = require("../../../record/main/gameObject/HasComponentGameObjectService.js"); var GetIsActiveGameObjectMainService$Wonderjs = require("./GetIsActiveGameObjectMainService.js"); var SetIsActiveGameObjectMainService$Wonderjs = require("./SetIsActiveGameObjectMainService.js"); var CreateGameObjectGameObjectService$Wonderjs = require("../../../record/main/gameObject/CreateGameObjectGameObjectService.js"); var CloneGameObjectComponentMainService$Wonderjs = require("./CloneGameObjectComponentMainService.js"); function _createGameObjectArr(countRangeArr, gameObjectRecord) { return ArrayService$WonderCommonlib.reduceOneParam((function (param, param$1) { var match = CreateGameObjectGameObjectService$Wonderjs.create(param[0]); return /* tuple */[ match[0], ArrayService$Wonderjs.push(match[1], param[1]) ]; }), /* tuple */[ gameObjectRecord, /* array */[] ], countRangeArr); } function _setParent(clonedParentTransformArr, clonedTransformArr, transformRecord) { return ArrayService$WonderCommonlib.reduceOneParami((function (transformRecord, clonedParentTransform, i) { return HierachyTransformService$Wonderjs.setParentNotMarkDirty(clonedParentTransform, Caml_array.caml_array_get(clonedTransformArr, i), transformRecord); }), transformRecord, clonedParentTransformArr); } function _setGameObjectName(sourceGameObject, clonedGameObjectArr, state) { var match = NameGameObjectMainService$Wonderjs.getName(sourceGameObject, state); if (match !== undefined) { var name = match; return ArrayService$WonderCommonlib.reduceOneParam((function (state, clonedGameObject) { return NameGameObjectMainService$Wonderjs.setName(clonedGameObject, name, state); }), state, clonedGameObjectArr); } else { return state; } } function _setGameObjectIsRoot(sourceGameObject, clonedGameObjectArr, state) { var isRoot = IsRootGameObjectMainService$Wonderjs.unsafeGetIsRoot(sourceGameObject, state); return ArrayService$WonderCommonlib.reduceOneParam((function (state, clonedGameObject) { return IsRootGameObjectMainService$Wonderjs.setIsRoot(clonedGameObject, isRoot, state); }), state, clonedGameObjectArr); } function _setGameObjectIsActive(sourceGameObject, clonedGameObjectArr, state) { var isActive = GetIsActiveGameObjectMainService$Wonderjs.unsafeGetIsActive(sourceGameObject, state); return ArrayService$WonderCommonlib.reduceOneParam((function (state, clonedGameObject) { return SetIsActiveGameObjectMainService$Wonderjs.setIsActive(clonedGameObject, isActive, state); }), state, clonedGameObjectArr); } function _clone(param, isShareMaterial, state) { var countRangeArr = param[2]; var transform = param[1]; var uid = param[0]; var match = _createGameObjectArr(countRangeArr, state[/* gameObjectRecord */10]); var clonedGameObjectArr = match[1]; var state$1 = _setGameObjectIsRoot(uid, clonedGameObjectArr, _setGameObjectIsActive(uid, clonedGameObjectArr, _setGameObjectName(uid, clonedGameObjectArr, state))); var totalClonedGameObjectArr = ArrayService$Wonderjs.push(clonedGameObjectArr, param[4]); var newrecord = Caml_array.caml_array_dup(state$1); newrecord[/* gameObjectRecord */10] = match[0]; var match$1 = CloneGameObjectComponentMainService$Wonderjs.clone(/* tuple */[ uid, transform, countRangeArr, clonedGameObjectArr ], isShareMaterial, newrecord); var clonedTransformArr = match$1[1]; var state$2 = match$1[0]; var transformRecord = _setParent(param[3], clonedTransformArr, RecordTransformMainService$Wonderjs.getRecord(state$2)); state$2[/* transformRecord */11] = transformRecord; return ReduceStateMainService$Wonderjs.reduceState((function (state, childTransform) { return _clone(/* tuple */[ GameObjectTransformService$Wonderjs.unsafeGetGameObject(childTransform, RecordTransformMainService$Wonderjs.getRecord(state)), childTransform, countRangeArr, clonedTransformArr, totalClonedGameObjectArr ], isShareMaterial, state); }), state$2, HierachyTransformService$Wonderjs.unsafeGetChildren(transform, RecordTransformMainService$Wonderjs.getRecord(state$2))); } function clone(uid, count, isShareMaterial, state) { Contract$WonderLog.requireCheck((function (param) { Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("not clone sourceInstance gameObject", "do"), (function (param) { return Contract$WonderLog.assertFalse(HasComponentGameObjectService$Wonderjs.hasSourceInstanceComponent(uid, state[/* gameObjectRecord */10])); })); return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("not clone objectInstance gameObject", "do"), (function (param) { return Contract$WonderLog.assertFalse(HasComponentGameObjectService$Wonderjs.hasObjectInstanceComponent(uid, state[/* gameObjectRecord */10])); })); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); var totalClonedGameObjectArr = /* array */[]; return /* tuple */[ _clone(/* tuple */[ uid, OptionService$Wonderjs.unsafeGet(GetComponentGameObjectService$Wonderjs.getTransformComponent(uid, state[/* gameObjectRecord */10])), ArrayService$Wonderjs.range(0, count - 1 | 0), /* array */[], totalClonedGameObjectArr ], isShareMaterial, state), totalClonedGameObjectArr ]; } exports._createGameObjectArr = _createGameObjectArr; exports._setParent = _setParent; exports._setGameObjectName = _setGameObjectName; exports._setGameObjectIsRoot = _setGameObjectIsRoot; exports._setGameObjectIsActive = _setGameObjectIsActive; exports._clone = _clone; exports.clone = clone; /* Log-WonderLog Not a pure module */