Elaztek Developer Hub
Blamite Game Engine - Sapien (Library)  00433.02.16.25.2127.blamite
The level editor application for the Blamite Game Engine.
hierarchy.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 #include <map>
6 #include <blam/api/api.h>
7 
8 #ifdef SAPIEN_LIB_EXPORTS
9 #define SAPIEN_LIB_API __declspec(dllexport)
10 #else
11 #define SAPIEN_LIB_API __declspec(dllimport)
12 #endif
13 
15 
20 {
21  Group,
22  Object,
23  Undefined
24 };
25 
30 {
31 private:
33 
34 protected:
35  bool use_custom_name = false;
36 
43  std::string display_name_override = "unspecified";
44 public:
45  BlamScenarioHierarchyNode* parent_node = nullptr;
46 
53 
60  BlamScenarioHierarchyNode(BlamScenarioHierarchyNodeType _node_type, std::string _display_name_override);
61 
63 
70 
76  virtual std::string GetName();
77 };
78 
85 {
86 private:
87  std::vector<BlamScenarioHierarchyNode*> child_nodes = std::vector<BlamScenarioHierarchyNode*>();
88 
89 public:
90  int folder_id = -1;
91 
98  BlamScenarioHierarchyNode_Group(std::string group_name, int _folder_id);
99 
101 
107  void ReleaseData();
108 
114  void AddChild(BlamScenarioHierarchyNode* node);
115 
123  BlamScenarioHierarchyNode* GetChildAt(int index);
124 
130  int GetChildCount();
131 
140  void RemoveNodeAt(int index, bool delete_object = true);
141 
151  void RemoveNode(BlamScenarioHierarchyNode* node, bool delete_object = true);
152 
160  bool HasChild(BlamScenarioHierarchyNode* node);
161 
167  std::vector<BlamScenarioHierarchyNode_Object*> GetAllObjectNodes();
168 };
169 
176 {
177 public:
178  BlamWorldObject* world_object = nullptr;
179 
184 
190  BlamScenarioHierarchyNode_Object(std::string custom_name);
191 
193 
199  std::string GetName();
200 
206  std::string GetTypeLabel();
207 
213  std::string GetClassLabel();
214 };
215 
224 {
225 public:
226 
234  BlamScenarioHierarchyNode_Group* scenario_root_node = nullptr;
235 
240  std::map<int, BlamScenarioHierarchyNode_Group*> folder_ids = std::map<int, BlamScenarioHierarchyNode_Group*>();
241 
246 
251 
255  void Refresh();
256 
260  void ReleaseData();
261 
267  std::vector<BlamScenarioHierarchyNode_Object*> GetAllObjectNodes();
268 };
269 
277 {
284 
289 
296 
301 
303 }
BlamScenarioHierarchyNode::parent_node
BlamScenarioHierarchyNode * parent_node
The parent node, if any, of this hierarchy node.
Definition: hierarchy.h:45
BlamScenarioHierarchyNode::~BlamScenarioHierarchyNode
virtual ~BlamScenarioHierarchyNode()
Definition: hierarchy.h:62
BlamScenarioHierarchyNode_Object::world_object
BlamWorldObject * world_object
The world object that this node refers to.
Definition: hierarchy.h:178
Sapien::Scenario::GetActiveScenarioTag
SAPIEN_LIB_API BlamTag * GetActiveScenarioTag()
Retrieves the currently active scenario tag.
Definition: scenario.cpp:22
BlamScenarioHierarchyNodeType::Group
@ Group
Indicates the hierarchy node is a BlamScenarioHierarchyNode_Group.
BlamScenarioHierarchy::Refresh
void Refresh()
Rebuilds the entire hierarchy data from world state and active scenario, cleaning up old data in the ...
Definition: BlamScenarioHierarchy.cpp:24
debug_structure_auto
sound_enable debug_objects debug_structure_auto
Definition: editor_init.txt:4
BlamScenarioHierarchy::folder_ids
std::map< int, BlamScenarioHierarchyNode_Group * > folder_ids
A map containing a list of all folder IDs, and their respective node groups.
Definition: hierarchy.h:240
BlamScenarioHierarchyNodeType
BlamScenarioHierarchyNodeType
Enumerator listing possible hierarchy node types.
Definition: hierarchy.h:19
BlamScenarioHierarchyNode::GetType
BlamScenarioHierarchyNodeType GetType()
Retrieves the type of this node.
Definition: BlamScenarioHierarchyNode.cpp:20
BlamScenarioHierarchyNode_Group::GetAllObjectNodes
std::vector< BlamScenarioHierarchyNode_Object * > GetAllObjectNodes()
Generates a list of all object nodes, within any child nodes.
Definition: BlamScenarioHierarchyNode_Group.cpp:121
SAPIEN_LIB_API
#define SAPIEN_LIB_API
Definition: hierarchy.h:11
BlamScenarioHierarchyNode_Group::HasChild
bool HasChild(BlamScenarioHierarchyNode *node)
Checks whether or not a node is a direct child of this node.
Definition: BlamScenarioHierarchyNode_Group.cpp:108
BlamScenarioHierarchyNode::use_custom_name
bool use_custom_name
Whether or not to use a custom display name for the node.
Definition: hierarchy.h:35
BlamScenarioHierarchyNode::display_name_override
std::string display_name_override
The custom display name of this hierarchy node.
Definition: hierarchy.h:43
Sapien::Hierarchy
Namespace containing functions for interacting with the scenario hierarchy.
Definition: hierarchy.h:276
BlamScenarioHierarchyNode_Object::~BlamScenarioHierarchyNode_Object
~BlamScenarioHierarchyNode_Object()
Definition: BlamScenarioHierarchyNode_Object.cpp:16
Sapien::Hierarchy::SaveScenario
SAPIEN_LIB_API void SaveScenario()
Attempts to save the current hierarchy data back to the scenario tag.
Definition: hierarchy.cpp:29
BlamScenarioHierarchyNode_Object::GetName
std::string GetName()
Retrieves the display name of the hierarchy node.
Definition: BlamScenarioHierarchyNode_Object.cpp:42
BlamScenarioHierarchyNode_Object::GetClassLabel
std::string GetClassLabel()
Creates a 'Class' label for the node to be shown to the user.
Definition: BlamScenarioHierarchyNode_Object.cpp:84
BlamScenarioHierarchyNode_Group::folder_id
int folder_id
The folder ID of this group. This number should be unique within the hierarchy.
Definition: hierarchy.h:90
BlamScenarioHierarchyNode_Group::ReleaseData
void ReleaseData()
Releases any data used by this node.
Definition: BlamScenarioHierarchyNode_Group.cpp:31
Sapien::Hierarchy::PrepareHierarchy
SAPIEN_LIB_API void PrepareHierarchy()
Prepares a new scenario hierarchy.
Definition: hierarchy.cpp:7
BlamScenarioHierarchyNode_Group::BlamScenarioHierarchyNode_Group
BlamScenarioHierarchyNode_Group(std::string group_name, int _folder_id)
Constructs a new hierarchy group node.
Definition: BlamScenarioHierarchyNode_Group.cpp:3
BlamScenarioHierarchy
Class representing a scenario hierarchy.
Definition: hierarchy.h:223
BlamScenarioHierarchyNode_Group::AddChild
void AddChild(BlamScenarioHierarchyNode *node)
Adds a new item to this group node.
Definition: BlamScenarioHierarchyNode_Group.cpp:50
BlamScenarioHierarchyNode::GetName
virtual std::string GetName()
Retrieves the display name of the hierarchy node.
Definition: BlamScenarioHierarchyNode.cpp:15
BlamScenarioHierarchyNode_Group::~BlamScenarioHierarchyNode_Group
~BlamScenarioHierarchyNode_Group()
Definition: BlamScenarioHierarchyNode_Group.cpp:9
BlamScenarioHierarchyNode
Base class for hierarchy nodes.
Definition: hierarchy.h:29
BlamScenarioHierarchyNode_Group::GetChildCount
int GetChildCount()
Retrieves the total number of child nodes.
Definition: BlamScenarioHierarchyNode_Group.cpp:69
BlamScenarioHierarchy::ReleaseData
void ReleaseData()
Releases all memory used by the scenario hierarchy.
Definition: BlamScenarioHierarchy.cpp:209
Sapien::Hierarchy::ReserveFolderIndex
SAPIEN_LIB_API int ReserveFolderIndex()
Definition: hierarchy.cpp:37
BlamScenarioHierarchyNode_Object
Class representing an object hierarchy node.
Definition: hierarchy.h:175
BlamScenarioHierarchyNode_Group::GetChildAt
BlamScenarioHierarchyNode * GetChildAt(int index)
Retrieves the child node at the specified index.
Definition: BlamScenarioHierarchyNode_Group.cpp:59
scenario.h
BlamScenarioHierarchyNode_Object::BlamScenarioHierarchyNode_Object
BlamScenarioHierarchyNode_Object()
Constructs a new object hierarchy node.
Definition: BlamScenarioHierarchyNode_Object.cpp:5
BlamScenarioHierarchyNode_Group
Class representing a group hierarchy node.
Definition: hierarchy.h:84
Sapien::Hierarchy::GetHierarchy
SAPIEN_LIB_API BlamScenarioHierarchy * GetHierarchy()
Retrieves the current scenario hierarchy.
Definition: hierarchy.cpp:24
BlamScenarioHierarchy::BlamScenarioHierarchy
BlamScenarioHierarchy()
Constructs a new scenario hierarchy.
Definition: BlamScenarioHierarchy.cpp:14
BlamScenarioHierarchyNode_Object::GetTypeLabel
std::string GetTypeLabel()
Creates a 'Type' label for the node to be shown to the user.
Definition: BlamScenarioHierarchyNode_Object.cpp:54
BlamScenarioHierarchyNode_Group::RemoveNodeAt
void RemoveNodeAt(int index, bool delete_object=true)
Removes the child node at the specified index.
Definition: BlamScenarioHierarchyNode_Group.cpp:74
Sapien::Hierarchy::ReleaseHierarchy
SAPIEN_LIB_API void ReleaseHierarchy()
Releases any data used by the scenario hierarchy.
Definition: hierarchy.cpp:13
BlamScenarioHierarchy::scenario_root_node
BlamScenarioHierarchyNode_Group * scenario_root_node
Pointer to the Scenario/Mission root node.
Definition: hierarchy.h:234
BlamScenarioHierarchy::GetAllObjectNodes
std::vector< BlamScenarioHierarchyNode_Object * > GetAllObjectNodes()
Generates a list of all object nodes, within any child hierarchy nodes.
Definition: BlamScenarioHierarchy.cpp:221
hierarchy.h
BlamScenarioHierarchyNode_Group::RemoveNode
void RemoveNode(BlamScenarioHierarchyNode *node, bool delete_object=true)
Removes a specific child node from this group.
Definition: BlamScenarioHierarchyNode_Group.cpp:89
BlamScenarioHierarchyNodeType::Object
@ Object
Indicates the hierarchy node is a BlamScenarioHierarchyNode_Object.
hierarchy_data
BlamScenarioHierarchy * hierarchy_data
Definition: hierarchy.cpp:5
BlamScenarioHierarchyNode::BlamScenarioHierarchyNode
BlamScenarioHierarchyNode(BlamScenarioHierarchyNodeType _node_type)
Constructs a new scenario hierarchy node.
Definition: BlamScenarioHierarchyNode.cpp:3
BlamScenarioHierarchyNodeType::Undefined
@ Undefined
Indicates the hierarchy node is an undefined type. Any node with this type should be considered inval...
BlamScenarioHierarchy::~BlamScenarioHierarchy
~BlamScenarioHierarchy()
Called when the hierarchy is being destroyed.
Definition: BlamScenarioHierarchy.cpp:19