Skip to content

Commit 72382d0

Browse files
committed
feat(api): sceneAPI,script api add findGameObjectsByName
1 parent a66f6ef commit 72382d0

File tree

4 files changed

+33
-5
lines changed

4 files changed

+33
-5
lines changed

src/api/SceneAPI.re

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,11 @@ let setSceneGameObject = GameObjectSceneMainService.setSceneGameObject;
1212

1313
let addSceneChild = GameObjectSceneMainService.addChild;
1414

15-
let addSceneChildren = GameObjectSceneMainService.addChildren;
15+
let addSceneChildren = GameObjectSceneMainService.addChildren;
16+
17+
let findGameObjectsByName = (name, state) =>
18+
state
19+
|> AllGameObjectMainService.getAllGameObjects(getSceneGameObject(state))
20+
|> Js.Array.filter(gameObject =>
21+
NameGameObjectMainService.getName(gameObject, state) === Some(name)
22+
);

src/service/state/main/api/script/RecordScriptAPIMainService.re

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@ let create = () => {
3333
"disposeGameObject":
3434
(. gameObject, state) =>
3535
GameObjectAPI.disposeGameObject(gameObject, state),
36+
"findGameObjectsByName":
37+
(. name, state) => SceneAPI.findGameObjectsByName(name, state),
3638
};

src/service/state/main/data/StateDataMainType.re

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,7 @@ and scriptAPIJsObj = {
198198
"unsafeGetScriptGameObject": (. int, state) => int,
199199
"setScriptAttributeFieldValue":
200200
(
201-
.
202-
int,
201+
. int,
203202
(string, string, ScriptAttributeType.scriptAttributeValue),
204203
state
205204
) =>
@@ -212,8 +211,8 @@ and scriptAPIJsObj = {
212211
Js.Typed_array.Float32Array.elt,
213212
),
214213
"setTransformLocalPosition":
215-
(.
216-
transform,
214+
(
215+
. transform,
217216
(
218217
Js.Typed_array.Float32Array.elt,
219218
Js.Typed_array.Float32Array.elt,
@@ -225,6 +224,8 @@ and scriptAPIJsObj = {
225224
"unsafeGetGameObjectTransformComponent":
226225
(. GameObjectPrimitiveType.gameObject, state) => int,
227226
"disposeGameObject": (. GameObjectPrimitiveType.gameObject, state) => state,
227+
"findGameObjectsByName":
228+
(. string, state) => array(GameObjectPrimitiveType.gameObject),
228229
}
229230
and apiRecord = {
230231
scriptAPIJsObj,

test/unit/api/SceneAPI_test.re

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,22 @@ let _ =
6262
SceneAPI.getSceneGameObject(state) |> expect == gameObject2;
6363
})
6464
);
65+
66+
describe("findGameObjectsByName", () =>
67+
test("find gameObjects by name in scene", () => {
68+
let (state, gameObject1) = GameObjectAPI.createGameObject(state^);
69+
let (state, gameObject2) = GameObjectAPI.createGameObject(state);
70+
let name1 = "aaa";
71+
let name2 = "bbb";
72+
let state =
73+
state
74+
|> GameObjectAPI.setGameObjectName(gameObject1, name1)
75+
|> GameObjectAPI.setGameObjectName(gameObject2, name2);
76+
let state =
77+
SceneAPI.addSceneChildren([|gameObject1, gameObject2|], state);
78+
79+
SceneAPI.findGameObjectsByName(name2, state)
80+
|> expect == [|gameObject2|];
81+
})
82+
);
6583
});

0 commit comments

Comments
 (0)