MCPcopy Create free account
hub / github.com/defold/defold / SetNodeParent

Function SetNodeParent

engine/gui/src/gui.cpp:4565–4611  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4563 }
4564
4565 Result SetNodeParent(HScene scene, HNode node, HNode parent, bool keep_scene_transform)
4566 {
4567 if (node == parent)
4568 return RESULT_INF_RECURSION;
4569 InternalNode* n = GetNode(scene, node);
4570 uint16_t parent_index = INVALID_INDEX;
4571 InternalNode* parent_node = 0x0;
4572 if (parent != INVALID_HANDLE)
4573 {
4574 parent_node = GetNode(scene, parent);
4575 // Check for infinite recursion
4576 uint16_t ancestor_index = parent_node->m_ParentIndex;
4577 while (ancestor_index != INVALID_INDEX)
4578 {
4579 if (n->m_Index == ancestor_index)
4580 return RESULT_INF_RECURSION;
4581 ancestor_index = scene->m_Nodes[ancestor_index].m_ParentIndex;
4582 }
4583 parent_index = parent_node->m_Index;
4584 }
4585 if (parent_index != n->m_ParentIndex)
4586 {
4587 if (keep_scene_transform) {
4588
4589 Matrix4 node_m;
4590 // Calculate the nodes current scene transform
4591 CalculateNodeTransform(scene, n, CalculateNodeTransformFlags(), node_m);
4592 Vector3 node_pos = node_m.getCol3().getXYZ();
4593
4594 SetScreenPosition(scene, n, parent_node, node_pos);
4595 }
4596
4597 RemoveFromNodeList(scene, n);
4598 InternalNode* prev = 0x0;
4599 uint16_t prev_index = scene->m_RenderTail;
4600 if (parent_index != INVALID_INDEX)
4601 {
4602 prev_index = parent_node->m_ChildTail;
4603 }
4604 if (prev_index != INVALID_INDEX)
4605 {
4606 prev = &scene->m_Nodes[prev_index];
4607 }
4608 AddToNodeList(scene, n, parent_node, prev);
4609 }
4610 return RESULT_OK;
4611 }
4612
4613 Result CloneNode(HScene scene, HNode node, HNode* out_node)
4614 {

Callers 6

LuaSetParentFunction · 0.70
CloneNodeListToTableFunction · 0.70
LuaCloneTreeFunction · 0.70
AddBoxMethod · 0.50
TEST_FFunction · 0.50
SetupGuiSceneFunction · 0.50

Calls 8

RemoveFromNodeListFunction · 0.85
AddToNodeListFunction · 0.85
GetNodeFunction · 0.70
CalculateNodeTransformFunction · 0.70
SetScreenPositionFunction · 0.70
getXYZMethod · 0.45
getCol3Method · 0.45

Tested by 2

AddBoxMethod · 0.40
TEST_FFunction · 0.40