diff --git a/package.json b/package.json index bfcd97af62..b508e24af3 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wonder.js", - "version": "1.1.0", + "version": "1.2.0-alpha.1", "authors": "Wonder", "description": "3d webgl engine", "homepage": "https://github.com/Wonder-Technology/Wonder.js", diff --git a/src/Index.re b/src/Index.re index ab407f77b1..5a31f95f40 100755 --- a/src/Index.re +++ b/src/Index.re @@ -102,6 +102,12 @@ let unbindFlyCameraControllerEvent = FlyCameraControllerAPI.unbindFlyCameraContr let bindFlyCameraControllerEvent = FlyCameraControllerAPI.bindFlyCameraControllerEvent; +let setFlyCameraControllerDirectionArray = FlyCameraControllerAPI.setFlyCameraControllerDirectionArray; + +let hasFlyCameraControllerDirection = FlyCameraControllerAPI.hasFlyCameraControllerDirection; + +let unsafeGetFlyCameraControllerDirectionArray = FlyCameraControllerAPI.unsafeGetFlyCameraControllerDirectionArray; + let setFlyCameraControllerRotateSpeed = FlyCameraControllerAPI.setFlyCameraControllerRotateSpeed; let unsafeGetFlyCameraControllerRotateSpeed = FlyCameraControllerAPI.unsafeGetFlyCameraControllerRotateSpeed; diff --git a/src/api/camera_controller/FlyCameraControllerAPI.re b/src/api/camera_controller/FlyCameraControllerAPI.re old mode 100644 new mode 100755 index 4e62adf908..5c1e500a4f --- a/src/api/camera_controller/FlyCameraControllerAPI.re +++ b/src/api/camera_controller/FlyCameraControllerAPI.re @@ -57,6 +57,23 @@ let setFlyCameraControllerRotateSpeed = setRotateSpeed(cameraController, value, state.flyCameraControllerRecord), }; +let unsafeGetFlyCameraControllerDirectionArray = (cameraController, state) => + state.flyCameraControllerRecord |> unsafeGetDirectionArray(cameraController); + +let hasFlyCameraControllerDirection = (cameraController, state) => + state.flyCameraControllerRecord |> hasDirection(cameraController); + +let setFlyCameraControllerDirectionArray = + (cameraController, directionArray, state) => { + ...state, + flyCameraControllerRecord: + setDirectionArray( + cameraController, + directionArray, + state.flyCameraControllerRecord, + ), +}; + let bindFlyCameraControllerEvent = (cameraController, state) => EventFlyCameraControllerMainService.bindEvent(cameraController, state); diff --git a/src/service/record/main/camera_controller/fly/CreateFlyCameraControllerService.re b/src/service/record/main/camera_controller/fly/CreateFlyCameraControllerService.re index 84e99ced9d..caecf05bab 100755 --- a/src/service/record/main/camera_controller/fly/CreateFlyCameraControllerService.re +++ b/src/service/record/main/camera_controller/fly/CreateFlyCameraControllerService.re @@ -13,6 +13,7 @@ let _setDefaultValue = rotateSpeedMap, eulerAngleDiffMap, translationDiffMap, + directionArrayMap, } as record: flyCameraControllerRecord, ) => { ...record, @@ -31,6 +32,9 @@ let _setDefaultValue = translationDiffMap: translationDiffMap |> WonderCommonlib.MutableSparseMapService.set(index, (0., 0., 0.)), + directionArrayMap: + directionArrayMap + |> WonderCommonlib.MutableSparseMapService.set(index, [||]), }; let create = diff --git a/src/service/record/main/camera_controller/fly/OperateFlyCameraControllerService.re b/src/service/record/main/camera_controller/fly/OperateFlyCameraControllerService.re index 7ba560506d..d84162498b 100755 --- a/src/service/record/main/camera_controller/fly/OperateFlyCameraControllerService.re +++ b/src/service/record/main/camera_controller/fly/OperateFlyCameraControllerService.re @@ -116,13 +116,29 @@ let setTranslationDiff = ), }; -let getDirectionArray = (record: flyCameraControllerRecord) => - record.directionArray; +let unsafeGetDirectionArray = + (cameraController, record: flyCameraControllerRecord) => + WonderCommonlib.MutableSparseMapService.get( + cameraController, + record.directionArrayMap, + ) + |> OptionService.unsafeGet; -let hasDirection = (record: flyCameraControllerRecord) => - record.directionArray |> ArrayService.hasItem; +let hasDirection = (cameraController, record: flyCameraControllerRecord) => + WonderCommonlib.MutableSparseMapService.get( + cameraController, + record.directionArrayMap, + ) + |> OptionService.unsafeGet + |> ArrayService.hasItem; -let setDirectionArray = (directionArray, record: flyCameraControllerRecord) => { +let setDirectionArray = + (cameraController, directionArray, record: flyCameraControllerRecord) => { ...record, - directionArray, + directionArrayMap: + WonderCommonlib.MutableSparseMapService.set( + cameraController, + directionArray, + record.directionArrayMap, + ), }; \ No newline at end of file diff --git a/src/service/record/main/camera_controller/fly/RecordFlyCameraControllerService.re b/src/service/record/main/camera_controller/fly/RecordFlyCameraControllerService.re index 98c6db7ec2..76f72474b8 100755 --- a/src/service/record/main/camera_controller/fly/RecordFlyCameraControllerService.re +++ b/src/service/record/main/camera_controller/fly/RecordFlyCameraControllerService.re @@ -19,9 +19,9 @@ let create = () => { rotateSpeedMap: WonderCommonlib.MutableSparseMapService.createEmpty(), eulerAngleDiffMap: WonderCommonlib.MutableSparseMapService.createEmpty(), translationDiffMap: WonderCommonlib.MutableSparseMapService.createEmpty(), + directionArrayMap: WonderCommonlib.MutableSparseMapService.createEmpty(), gameObjectMap: WonderCommonlib.MutableSparseMapService.createEmpty(), disposedIndexArray: WonderCommonlib.ArrayService.createEmpty(), - directionArray: WonderCommonlib.ArrayService.createEmpty(), }; let deepCopyForRestore = @@ -41,7 +41,7 @@ let deepCopyForRestore = translationDiffMap, gameObjectMap, disposedIndexArray, - directionArray, + directionArrayMap, }: flyCameraControllerRecord, ) => { index, @@ -70,7 +70,8 @@ let deepCopyForRestore = eulerAngleDiffMap |> WonderCommonlib.MutableSparseMapService.copy, translationDiffMap: translationDiffMap |> WonderCommonlib.MutableSparseMapService.copy, + directionArrayMap: + directionArrayMap |> WonderCommonlib.MutableSparseMapService.copy, gameObjectMap: gameObjectMap |> WonderCommonlib.MutableSparseMapService.copy, disposedIndexArray: disposedIndexArray |> Js.Array.copy, - directionArray: directionArray |> Js.Array.copy, }; \ No newline at end of file diff --git a/src/service/state/main/camera_controller/fly/EventFlyCameraControllerMainService.re b/src/service/state/main/camera_controller/fly/EventFlyCameraControllerMainService.re index b9821ab81a..9ed2f4fa87 100755 --- a/src/service/state/main/camera_controller/fly/EventFlyCameraControllerMainService.re +++ b/src/service/state/main/camera_controller/fly/EventFlyCameraControllerMainService.re @@ -159,7 +159,8 @@ let _moveSpecificDirection = {flyCameraControllerRecord, gameObjectRecord} as state, ) => { let directionArray = - OperateFlyCameraControllerService.getDirectionArray( + OperateFlyCameraControllerService.unsafeGetDirectionArray( + cameraController, flyCameraControllerRecord, ); @@ -182,7 +183,10 @@ let _moveSpecificDirection = ...state, flyCameraControllerRecord: flyCameraControllerRecord - |> OperateFlyCameraControllerService.setDirectionArray(directionArray), + |> OperateFlyCameraControllerService.setDirectionArray( + cameraController, + directionArray, + ), }; }; @@ -196,7 +200,8 @@ let _staticSpecificDirection = {flyCameraControllerRecord, gameObjectRecord} as state, ) => { let directionArray = - OperateFlyCameraControllerService.getDirectionArray( + OperateFlyCameraControllerService.unsafeGetDirectionArray( + cameraController, flyCameraControllerRecord, ); @@ -219,7 +224,10 @@ let _staticSpecificDirection = ...state, flyCameraControllerRecord: flyCameraControllerRecord - |> OperateFlyCameraControllerService.setDirectionArray(directionArray), + |> OperateFlyCameraControllerService.setDirectionArray( + cameraController, + directionArray, + ), }; }; diff --git a/src/service/state/main/camera_controller/fly/UpdateFlyCameraControllerMainService.re b/src/service/state/main/camera_controller/fly/UpdateFlyCameraControllerMainService.re index f00d937ead..853a6e0743 100755 --- a/src/service/state/main/camera_controller/fly/UpdateFlyCameraControllerMainService.re +++ b/src/service/state/main/camera_controller/fly/UpdateFlyCameraControllerMainService.re @@ -11,8 +11,12 @@ let _getTranslationPosition = (cameraController, flyCameraControllerRecord) => { ); let positionTuple = - OperateFlyCameraControllerService.hasDirection(flyCameraControllerRecord) ? - OperateFlyCameraControllerService.getDirectionArray( + OperateFlyCameraControllerService.hasDirection( + cameraController, + flyCameraControllerRecord, + ) ? + OperateFlyCameraControllerService.unsafeGetDirectionArray( + cameraController, flyCameraControllerRecord, ) |> WonderCommonlib.ArrayService.reduceOneParam( diff --git a/src/service/state/main/data/StateDataMainType.re b/src/service/state/main/data/StateDataMainType.re index c074c15c3e..9871745a04 100755 --- a/src/service/state/main/data/StateDataMainType.re +++ b/src/service/state/main/data/StateDataMainType.re @@ -190,7 +190,10 @@ and flyCameraControllerRecord = { WonderCommonlib.MutableSparseMapService.t(PositionType.position), gameObjectMap, disposedIndexArray: array(component), - directionArray: array(FlyCameraControllerType.direction), + directionArrayMap: + WonderCommonlib.MutableSparseMapService.t( + array(FlyCameraControllerType.direction), + ), } and arcballCameraControllerRecord = { index: int, diff --git a/test/integration/no_worker/job/loop/updateCameraJob_test.re b/test/integration/no_worker/job/loop/updateCameraJob_test.re index 0defadf6f8..139879c6e2 100755 --- a/test/integration/no_worker/job/loop/updateCameraJob_test.re +++ b/test/integration/no_worker/job/loop/updateCameraJob_test.re @@ -337,7 +337,10 @@ let _ = cameraController, 2.5, ) - |> FlyCameraControllerTool.setDirectionArray(directionArray) + |> FlyCameraControllerAPI.setFlyCameraControllerDirectionArray( + cameraController, + directionArray, + ) |> FlyCameraControllerTool.setEulerAngleDiff( cameraController, eulerAngleDiff, diff --git a/test/tool/service/camera_controller/FlyCameraControllerTool.re b/test/tool/service/camera_controller/FlyCameraControllerTool.re index 44366a6290..ddf6290e37 100755 --- a/test/tool/service/camera_controller/FlyCameraControllerTool.re +++ b/test/tool/service/camera_controller/FlyCameraControllerTool.re @@ -77,17 +77,6 @@ let setFlyCameraControllerData = (cameraController, state) => { (state, (moveSpeed, rotateSpeed, wheelSpeed)); }; -let getDirectionArray = state => - state.flyCameraControllerRecord.directionArray; - -let setDirectionArray = (array, {flyCameraControllerRecord} as state) => { - ...state, - flyCameraControllerRecord: { - ...flyCameraControllerRecord, - directionArray: array, - }, -}; - let addPointDragStartEventHandleFunc = (cameraController, handleFunc, {flyCameraControllerRecord} as state) => { ...state, diff --git a/test/unit/ecs/component/cameraController/fly/EventFlyCameraController_test.re b/test/unit/ecs/component/cameraController/fly/EventFlyCameraController_test.re index 36b10dfb08..8d4189e209 100755 --- a/test/unit/ecs/component/cameraController/fly/EventFlyCameraController_test.re +++ b/test/unit/ecs/component/cameraController/fly/EventFlyCameraController_test.re @@ -350,7 +350,12 @@ let _ = ); let state = EventTool.restore(state); - state |> getDirectionArray |> Js.Array.length |> expect == 0; + state + |> FlyCameraControllerAPI.unsafeGetFlyCameraControllerDirectionArray( + cameraController, + ) + |> Js.Array.length + |> expect == 0; }); describe("else, add direction into directionArray", () => { @@ -368,7 +373,11 @@ let _ = let state = MainStateTool.unsafeGetState() |> EventTool.restore; - state |> getDirectionArray |> expect == [|direction|]; + state + |> FlyCameraControllerAPI.unsafeGetFlyCameraControllerDirectionArray( + cameraController, + ) + |> expect == [|direction|]; }; test("test move left", () => @@ -413,9 +422,12 @@ let _ = ); let state = MainStateTool.unsafeGetState() |> EventTool.restore; - let directionArray = state |> getDirectionArray; - directionArray |> expect == [|direction|]; + state + |> FlyCameraControllerAPI.unsafeGetFlyCameraControllerDirectionArray( + cameraController, + ) + |> expect == [|direction|]; }) ); @@ -444,9 +456,11 @@ let _ = let state = MainStateTool.unsafeGetState() |> EventTool.restore; - let directionArray = state |> getDirectionArray; - - directionArray |> expect == [|direction1, direction2|]; + state + |> FlyCameraControllerAPI.unsafeGetFlyCameraControllerDirectionArray( + cameraController, + ) + |> expect == [|direction1, direction2|]; }; test("test move left and up", () => @@ -515,7 +529,11 @@ let _ = let state = MainStateTool.unsafeGetState() |> EventTool.restore; - state |> getDirectionArray |> expect == [|direction|]; + state + |> FlyCameraControllerAPI.unsafeGetFlyCameraControllerDirectionArray( + cameraController, + ) + |> expect == [|direction|]; }; test("test keydown left and up, then keyup left", () => diff --git a/webpack.config.js b/webpack.config.js old mode 100644 new mode 100755 diff --git a/yarn.lock b/yarn.lock old mode 100644 new mode 100755