Elaztek Developer Hub
Blamite Game Engine - Sapien (Library)  00411.04.21.24.0017.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 
18 {
19  Group,
20  Object,
21  Undefined
22 };
23 
28 {
29 private:
31 
32 protected:
33  bool use_custom_name = false;
34 
41  std::string display_name_override = "unspecified";
42 public:
43  BlamScenarioHierarchyNode* parent_node = nullptr;
44 
51 
58  BlamScenarioHierarchyNode(BlamScenarioHierarchyNodeType _node_type, std::string _display_name_override);
59 
61 
68 
74  virtual std::string GetName();
75 };
76 
83 {
84 private:
85  std::vector<BlamScenarioHierarchyNode*> child_nodes = std::vector<BlamScenarioHierarchyNode*>();
86 
87 public:
88  int folder_id = -1;
89 
96  BlamScenarioHierarchyNode_Group(std::string group_name, int _folder_id);
97 
99 
105  void ReleaseData();
106 
112  void AddChild(BlamScenarioHierarchyNode* node);
113 
121  BlamScenarioHierarchyNode* GetChildAt(int index);
122 
128  int GetChildCount();
129 
138  void RemoveNodeAt(int index, bool delete_object = true);
139 
149  void RemoveNode(BlamScenarioHierarchyNode* node, bool delete_object = true);
150 
158  bool HasChild(BlamScenarioHierarchyNode* node);
159 };
160 
167 {
168 public:
169  BlamWorldObject* world_object = nullptr;
170 
175 
181  BlamScenarioHierarchyNode_Object(std::string custom_name);
182 
184 
190  std::string GetName();
191 
197  std::string GetTypeLabel();
198 
204  std::string GetClassLabel();
205 };
206 
215 {
216 public:
217 
225  BlamScenarioHierarchyNode_Group* scenario_root_node = nullptr;
226 
231  std::map<int, BlamScenarioHierarchyNode_Group*> folder_ids = std::map<int, BlamScenarioHierarchyNode_Group*>();
232 
237 
242 
246  void Refresh();
247 
251  void ReleaseData();
252 };
253 
261 {
268 
273 
280 
285 }
BlamScenarioHierarchyNode::parent_node
BlamScenarioHierarchyNode * parent_node
The parent node, if any, of this hierarchy node.
Definition: hierarchy.h:43
BlamScenarioHierarchyNode::~BlamScenarioHierarchyNode
virtual ~BlamScenarioHierarchyNode()
Definition: hierarchy.h:60
BlamScenarioHierarchyNode_Object::world_object
BlamWorldObject * world_object
The world object that this node refers to.
Definition: hierarchy.h:169
Sapien::Scenario::GetActiveScenarioTag
SAPIEN_LIB_API BlamTag * GetActiveScenarioTag()
Retrieves the currently active scenario tag.
Definition: scenario.cpp:26
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:231
BlamScenarioHierarchyNodeType
BlamScenarioHierarchyNodeType
Enumerator listing possible hierarchy node types.
Definition: hierarchy.h:17
BlamScenarioHierarchyNode::GetType
BlamScenarioHierarchyNodeType GetType()
Retrieves the type of this node.
Definition: BlamScenarioHierarchyNode.cpp:20
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:33
BlamScenarioHierarchyNode::display_name_override
std::string display_name_override
The custom display name of this hierarchy node.
Definition: hierarchy.h:41
Sapien::Hierarchy
Namespace containing functions for interacting with the scenario hierarchy.
Definition: hierarchy.h:260
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:85
BlamScenarioHierarchyNode_Group::folder_id
int folder_id
The folder ID of this group. This number should be unique within the hierarchy.
Definition: hierarchy.h:88
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:214
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:27
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:199
BlamScenarioHierarchyNode_Object
Class representing an object hierarchy node.
Definition: hierarchy.h:166
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:82
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:225
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