Elaztek Developer Hub
Blamite Game Engine - Sapien (Library)  00382.05.09.23.1235.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::~BlamScenarioHierarchyNode
virtual ~BlamScenarioHierarchyNode()
Definition: hierarchy.h:50
BlamScenarioHierarchyNodeType::Group
@ Group
Indicates the hierarchy node is a BlamScenarioHierarchyNode_Group.
BlamScenarioHierarchyNodeType
BlamScenarioHierarchyNodeType
Enumerator listing possible hierarchy node types.
Definition: hierarchy.h:18
SAPIEN_LIB_API
#define SAPIEN_LIB_API
Definition: hierarchy.h:12
Sapien::Hierarchy
Definition: hierarchy.h:178
Sapien::Hierarchy::SaveScenario
SAPIEN_LIB_API void SaveScenario()
Definition: hierarchy.cpp:29
Sapien::Hierarchy::PrepareHierarchy
SAPIEN_LIB_API void PrepareHierarchy()
Definition: hierarchy.cpp:7
BlamScenarioHierarchy
Class representing a scenario hierarchy.
Definition: hierarchy.h:138
BlamScenarioHierarchyNode::GetName
virtual std::string GetName()
Retrieves the display name of the hierarchy node.
Definition: BlamScenarioHierarchyNode.cpp:15
BlamScenarioHierarchyNode
Base class for hierarchy nodes.
Definition: hierarchy.h:28
BlamScenarioHierarchyNode_Object
Class representing an object hierarchy node.
Definition: hierarchy.h:98
BlamScenarioHierarchyNode_Group
Class representing a group hierarchy node.
Definition: hierarchy.h:67
Sapien::Hierarchy::GetHierarchy
SAPIEN_LIB_API BlamScenarioHierarchy * GetHierarchy()
Definition: hierarchy.cpp:24
Sapien::Hierarchy::ReleaseHierarchy
SAPIEN_LIB_API void ReleaseHierarchy()
Definition: hierarchy.cpp:13
BlamScenarioHierarchyNodeType::Object
@ Object
Indicates the hierarchy node is a BlamScenarioHierarchyNode_Object.
BlamScenarioHierarchyNodeType::Undefined
@ Undefined
Indicates the hierarchy node is an undefined type. Any node with this type should be considered inval...