Skip to content

Commit ecae5e7

Browse files
committed
feat(dispose): fix "dispose script component": now clear script component disposed data
1 parent bd4215e commit ecae5e7

File tree

2 files changed

+20
-41
lines changed

2 files changed

+20
-41
lines changed

src/service/state/main/gameObject/DisposeGameObjectMainService.re

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ let clearDeferDisposeData = state => {
9292
disposedPointLightArray: WonderCommonlib.ArrayService.createEmpty(),
9393
disposedMeshRendererComponentArray:
9494
WonderCommonlib.ArrayService.createEmpty(),
95+
disposedScriptArray: WonderCommonlib.ArrayService.createEmpty(),
9596
},
9697
};
9798

test/integration/no_worker/job/loop/disposeJob_test.re

Lines changed: 19 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -838,11 +838,9 @@ let _ =
838838
describe("clear all defer disposed data", () =>
839839
describe(
840840
"not dispose the same one again in the second job execution", () => {
841-
let _testDisposeGameObject = disposeGameObjectFunc => {
841+
test("test dispose gameObject", () => {
842842
open GameObjectType;
843-
844843
TestTool.closeContractCheck();
845-
846844
let (state, gameObject1, geometry1) =
847845
BoxGeometryTool.createGameObject(state^);
848846
let (state, gameObject2, geometry2) =
@@ -854,11 +852,6 @@ let _ =
854852

855853
let state = state |> GameObjectAPI.disposeGameObject(gameObject1);
856854
let state = state |> DisposeJob.execJob(None);
857-
/* let (state, gameObject3, geometry3) =
858-
BoxGeometryTool.createGameObject(state);
859-
let state = state |> DisposeJob.execJob(None);
860-
861-
geometry3 |> expect == geometry1; */
862855

863856
let {
864857
disposedUidArrayForKeepOrder,
@@ -867,49 +860,34 @@ let _ =
867860
disposedUidArrayForDisposeGeometryRemoveMaterial,
868861
} =
869862
GameObjectTool.getGameObjectRecord(state);
870-
871863
(
872864
disposedUidArrayForKeepOrder,
873865
disposedUidArrayForKeepOrderRemoveGeometry,
874866
disposedUidArrayForKeepOrderRemoveGeometryRemoveMaterial,
875867
disposedUidArrayForDisposeGeometryRemoveMaterial,
876868
)
877869
|> expect == ([||], [||], [||], [||]);
878-
};
879-
880-
test("test dispose gameObject", () => {
881-
open GameObjectType;
882-
883-
TestTool.closeContractCheck();
884-
885-
let (state, gameObject1, geometry1) =
886-
BoxGeometryTool.createGameObject(state^);
887-
let (state, gameObject2, geometry2) =
888-
BoxGeometryTool.createGameObject(state);
889-
let (state, gameObject3, _) =
890-
BoxGeometryTool.createGameObject(state);
891-
let (state, gameObject4, _) =
892-
BoxGeometryTool.createGameObject(state);
870+
});
893871

894-
let state = state |> GameObjectAPI.disposeGameObject(gameObject1);
895-
let state = state |> DisposeJob.execJob(None);
872+
describe("test dispose component", () =>
873+
test("test dispose script component", () => {
874+
open GameObjectType;
875+
let (state, gameObject1, script1) =
876+
ScriptTool.createGameObject(state^);
896877

897-
let {
898-
disposedUidArrayForKeepOrder,
899-
disposedUidArrayForKeepOrderRemoveGeometry,
900-
disposedUidArrayForKeepOrderRemoveGeometryRemoveMaterial,
901-
disposedUidArrayForDisposeGeometryRemoveMaterial,
902-
} =
903-
GameObjectTool.getGameObjectRecord(state);
878+
let state =
879+
state
880+
|> GameObjectAPI.disposeGameObjectScriptComponent(
881+
gameObject1,
882+
script1,
883+
);
884+
let state = state |> DisposeJob.execJob(None);
904885

905-
(
906-
disposedUidArrayForKeepOrder,
907-
disposedUidArrayForKeepOrderRemoveGeometry,
908-
disposedUidArrayForKeepOrderRemoveGeometryRemoveMaterial,
909-
disposedUidArrayForDisposeGeometryRemoveMaterial,
910-
)
911-
|> expect == ([||], [||], [||], [||]);
912-
});
886+
let {disposedScriptArray} =
887+
GameObjectTool.getGameObjectRecord(state);
888+
disposedScriptArray |> expect == [||];
889+
})
890+
);
913891
})
914892
);
915893
});

0 commit comments

Comments
 (0)