| 4414 | } |
| 4415 | |
| 4416 | void MoveNodeAbove(HScene scene, HNode node, HNode reference) |
| 4417 | { |
| 4418 | if (node != INVALID_HANDLE && node != reference) |
| 4419 | { |
| 4420 | InternalNode* n = GetNode(scene, node); |
| 4421 | RemoveFromNodeList(scene, n); |
| 4422 | InternalNode* parent = 0x0; |
| 4423 | InternalNode* prev = 0x0; |
| 4424 | if (reference != INVALID_HANDLE) |
| 4425 | { |
| 4426 | uint16_t ref_index = reference & 0xffff; |
| 4427 | prev = &scene->m_Nodes[ref_index]; |
| 4428 | if (prev->m_ParentIndex != INVALID_INDEX) |
| 4429 | { |
| 4430 | parent = &scene->m_Nodes[prev->m_ParentIndex]; |
| 4431 | } |
| 4432 | } |
| 4433 | else |
| 4434 | { |
| 4435 | // Find the previous node of the root list |
| 4436 | uint16_t prev_index = scene->m_RenderTail; |
| 4437 | if (prev_index != INVALID_INDEX) |
| 4438 | { |
| 4439 | prev = &scene->m_Nodes[prev_index]; |
| 4440 | } |
| 4441 | } |
| 4442 | AddToNodeList(scene, n, parent, prev); |
| 4443 | } |
| 4444 | } |
| 4445 | |
| 4446 | HNode GetNodeParent(HScene scene, HNode node) |
| 4447 | { |