SceneResolver.h 939 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright (c) 2008-2023 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "../Container/HashMap.h"
  5. #include "../Container/Ptr.h"
  6. namespace Urho3D
  7. {
  8. class Component;
  9. class Node;
  10. using ComponentId = id32;
  11. using NodeId = id32;
  12. /// Utility class that resolves node & component IDs after a scene or partial scene load.
  13. class URHO3D_API SceneResolver
  14. {
  15. public:
  16. /// Construct.
  17. SceneResolver();
  18. /// Destruct.
  19. ~SceneResolver();
  20. /// Reset. Clear all remembered nodes and components.
  21. void Reset();
  22. /// Remember a created node.
  23. void AddNode(NodeId oldID, Node* node);
  24. /// Remember a created component.
  25. void AddComponent(ComponentId oldID, Component* component);
  26. /// Resolve component and node ID attributes and reset.
  27. void Resolve();
  28. private:
  29. /// Nodes.
  30. HashMap<NodeId, WeakPtr<Node>> nodes_;
  31. /// Components.
  32. HashMap<ComponentId, WeakPtr<Component>> components_;
  33. };
  34. }