Skip to content

Commit febeb83

Browse files
committed
feat(DefaultHierarchy): Update ModelHierarchy behavior
1 parent 4d24c7f commit febeb83

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

src/Editor/UI/DefaultHierarchy.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,28 @@ namespace sh::editor
1818
{
1919
render::Model& model = static_cast<render::Model&>(payload);
2020

21-
auto obj = world.AddGameObject(model.GetName().ToString());
21+
const auto& nodes = model.GetNodes();
22+
const auto& skeletons = model.GetSkeletons();
2223

23-
auto rootNode = model.GetRootNode();
24-
std::queue<std::pair<const render::Model::Node*, game::GameObject*>> nodeQ;
25-
for (auto& child : rootNode->children)
26-
nodeQ.push({ child.get(), obj });
24+
if (nodes.empty())
25+
return;
26+
27+
auto rootObj = world.AddGameObject(model.GetName().ToString());
28+
29+
// node index -> 생성된 GameObject 매핑 (bone 연결 시 사용)
30+
std::vector<game::GameObject*> nodeMap(nodes.size(), nullptr);
31+
nodeMap[0] = rootObj;
32+
33+
struct SkinnedSetup
34+
{
35+
game::SkinnedMeshRenderer* renderer;
36+
int skeletonIdx;
37+
};
38+
std::vector<SkinnedSetup> skinnedSetups;
39+
40+
std::queue<std::pair<int, game::GameObject*>> nodeQ; // nodeIdx, parentObj
41+
for (int childIdx : nodes[0].childrenIdx)
42+
nodeQ.push({ childIdx, rootObj });
2743

2844
while (!nodeQ.empty())
2945
{

0 commit comments

Comments
 (0)