Elaztek Developer Hub
Blamite Game Engine - Sapien (Library)  00385.05.12.23.0209.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/blam_api.h>
7 #include <blam/api/api.h>
8 
9 #ifdef SAPIEN_LIB_EXPORTS
10 #define SAPIEN_LIB_API __declspec(dllexport)
11 #else
12 #define SAPIEN_LIB_API __declspec(dllimport)
13 #endif
14 
19 {
20  Group,
21  Object,
22  Undefined
23 };
24 
29 {
30 private:
32 
33 protected:
34  bool use_custom_name = false;
35 
42  std::string display_name_override = "unspecified";
43 public:
44  BlamScenarioHierarchyNode* parent_node = nullptr;
45 
47 
48  BlamScenarioHierarchyNode(BlamScenarioHierarchyNodeType _node_type, std::string _display_name_override);
49 
51 
53 
59  virtual std::string GetName();
60 };
61 
68 {
69 private:
70  std::vector<BlamScenarioHierarchyNode*> child_nodes = std::vector<BlamScenarioHierarchyNode*>();
71 
72 public:
73  int folder_id = -1;
74 
75  BlamScenarioHierarchyNode_Group(std::string group_name, int _folder_id);
76 
78 
79  void ReleaseData();
80 
81  void AddChild(BlamScenarioHierarchyNode* node);
82 
83  BlamScenarioHierarchyNode* GetChildAt(int index);
84 
85  int GetChildCount();
86 
87  void RemoveNodeAt(int index, bool delete_object = true);
88  void RemoveNode(BlamScenarioHierarchyNode* node, bool delete_object = true);
89 
90  bool HasChild(BlamScenarioHierarchyNode* node);
91 };
92 
99 {
100 public:
101  BlamWorldObject* world_object = nullptr;
102 
104 
105  BlamScenarioHierarchyNode_Object(std::string custom_name);
106 
108 
114  std::string GetName();
115 
121  std::string GetTypeLabel();
122 
128  std::string GetClassLabel();
129 };
130 
139 {
140 public:
141 
149  BlamScenarioHierarchyNode_Group* scenario_root_node = nullptr;
150 
155  std::map<int, BlamScenarioHierarchyNode_Group*> folder_ids = std::map<int, BlamScenarioHierarchyNode_Group*>();
156 
161 
166 
170  void Refresh();
171 
175  void ReleaseData();
176 };
177 
179 {
181 
183 
185 
187 }
BlamScenarioHierarchyNode::parent_node
BlamScenarioHierarchyNode * parent_node
The parent node, if any, of this hierarchy node.
Definition: hierarchy.h:44
BlamScenarioHierarchyNode::~BlamScenarioHierarchyNode
virtual ~BlamScenarioHierarchyNode()
Definition: hierarchy.h:50
BlamScenarioHierarchyNode_Object::world_object
BlamWorldObject * world_object
The world object that this node refers to.
Definition: hierarchy.h:101
Sapien::Scenario::GetActiveScenarioTag
SAPIEN_LIB_API BlamTag * GetActiveScenarioTag()
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:155
BlamScenarioHierarchyNodeType
BlamScenarioHierarchyNodeType
Enumerator listing possible hierarchy node types.
Definition: hierarchy.h:18
BlamScenarioHierarchyNode::GetType
BlamScenarioHierarchyNodeType GetType()
Definition: BlamScenarioHierarchyNode.cpp:20
SAPIEN_LIB_API
#define SAPIEN_LIB_API
Definition: hierarchy.h:12
BlamScenarioHierarchyNode_Group::HasChild
bool HasChild(BlamScenarioHierarchyNode *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:34
BlamScenarioHierarchyNode::display_name_override
std::string display_name_override
The custom display name of this hierarchy node.
Definition: hierarchy.h:42
Sapien::Hierarchy
Definition: hierarchy.h:178
BlamScenarioHierarchyNode_Object::~BlamScenarioHierarchyNode_Object
~BlamScenarioHierarchyNode_Object()
Definition: BlamScenarioHierarchyNode_Object.cpp:16
Sapien::Hierarchy::SaveScenario
SAPIEN_LIB_API void SaveScenario()
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
Definition: hierarchy.h:73
BlamScenarioHierarchyNode_Group::ReleaseData
void ReleaseData()
Definition: BlamScenarioHierarchyNode_Group.cpp:31
Sapien::Hierarchy::PrepareHierarchy
SAPIEN_LIB_API void PrepareHierarchy()
Definition: hierarchy.cpp:7
BlamScenarioHierarchyNode_Group::BlamScenarioHierarchyNode_Group
BlamScenarioHierarchyNode_Group(std::string group_name, int _folder_id)
Definition: BlamScenarioHierarchyNode_Group.cpp:3
BlamScenarioHierarchy
Class representing a scenario hierarchy.
Definition: hierarchy.h:138
BlamScenarioHierarchyNode_Group::AddChild
void AddChild(BlamScenarioHierarchyNode *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:28
BlamScenarioHierarchyNode_Group::GetChildCount
int GetChildCount()
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:98
BlamScenarioHierarchyNode_Group::GetChildAt
BlamScenarioHierarchyNode * GetChildAt(int index)
Definition: BlamScenarioHierarchyNode_Group.cpp:59
scenario.h
BlamScenarioHierarchyNode_Object::BlamScenarioHierarchyNode_Object
BlamScenarioHierarchyNode_Object()
Definition: BlamScenarioHierarchyNode_Object.cpp:5
BlamScenarioHierarchyNode_Group
Class representing a group hierarchy node.
Definition: hierarchy.h:67
Sapien::Hierarchy::GetHierarchy
SAPIEN_LIB_API BlamScenarioHierarchy * GetHierarchy()
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)
Definition: BlamScenarioHierarchyNode_Group.cpp:74
Sapien::Hierarchy::ReleaseHierarchy
SAPIEN_LIB_API void ReleaseHierarchy()
Definition: hierarchy.cpp:13
BlamScenarioHierarchy::scenario_root_node
BlamScenarioHierarchyNode_Group * scenario_root_node
Pointer to the Scenario/Mission root node.
Definition: hierarchy.h:149
hierarchy.h
BlamScenarioHierarchyNode_Group::RemoveNode
void RemoveNode(BlamScenarioHierarchyNode *node, bool delete_object=true)
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)
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