| 452 | } |
| 453 | |
| 454 | void IntrinsicEdNodeViewTreeWidget::onDeleteNode() |
| 455 | { |
| 456 | QTreeWidgetItem* currIt = currentItem(); |
| 457 | Components::NodeRef currentNode = _itemToNodeMap[currIt]; |
| 458 | |
| 459 | // Update the currently selected entity |
| 460 | if (Components::NodeManager::_entity(currentNode) == |
| 461 | GameStates::Editing::_currentlySelectedEntity) |
| 462 | { |
| 463 | GameStates::Editing::_currentlySelectedEntity = Dod::Ref(); |
| 464 | } |
| 465 | |
| 466 | Components::NodeRefArray nodes; |
| 467 | Components::NodeManager::collectNodes(currentNode, nodes); |
| 468 | |
| 469 | // Cleanup cached nodes and all attached children |
| 470 | for (uint32_t i = 0u; i < nodes.size(); ++i) |
| 471 | { |
| 472 | Components::NodeRef nodeRef = nodes[i]; |
| 473 | QTreeWidgetItem* item = _nodeToItemMap[nodeRef]; |
| 474 | |
| 475 | _nodeToItemMap[nodeRef]; |
| 476 | _itemToNodeMap.erase(item); |
| 477 | } |
| 478 | |
| 479 | onItemSelected(nullptr, currIt); |
| 480 | delete currIt; |
| 481 | |
| 482 | // Delete node from world |
| 483 | World::destroyNodeFull(currentNode); |
| 484 | } |
| 485 | |
| 486 | void IntrinsicEdNodeViewTreeWidget::onSaveNodeAsPrefab() |
| 487 | { |