Elaztek Developer Hub
Blamite Game Engine - Sapien (Library)  00361.08.25.22.0004.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 
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 
46 
47  BlamScenarioHierarchyNode(BlamScenarioHierarchyNodeType _node_type, std::string _display_name_override);
48 
50 
52 
58  virtual std::string GetName();
59 };
60 
67 {
68 private:
69  std::vector<BlamScenarioHierarchyNode*> child_nodes = std::vector<BlamScenarioHierarchyNode*>();
70 
71 public:
72  int folder_id = -1;
73 
74  BlamScenarioHierarchyNode_Group(std::string group_name, int _folder_id);
75 
77 
78  void ReleaseData();
79 
80  void AddChild(BlamScenarioHierarchyNode* node);
81 
82  BlamScenarioHierarchyNode* GetChildAt(int index);
83 
84  int GetChildCount();
85 
86  void RemoveNodeAt(int index, bool delete_object = true);
87  void RemoveNode(BlamScenarioHierarchyNode* node, bool delete_object = true);
88 
89  bool HasChild(BlamScenarioHierarchyNode* node);
90 };
91 
98 {
99 public:
100  BlamWorldObject* world_object = nullptr;
101 
103 
104  BlamScenarioHierarchyNode_Object(std::string custom_name);
105 
107 
113  std::string GetName();
114 
120  std::string GetTypeLabel();
121 
127  std::string GetClassLabel();
128 };
129 
138 {
139 public:
140 
148  BlamScenarioHierarchyNode_Group* scenario_root_node = nullptr;
149 
154  std::map<int, BlamScenarioHierarchyNode_Group*> folder_ids = std::map<int, BlamScenarioHierarchyNode_Group*>();
155 
160 
165 
169  void Refresh();
170 
174  void ReleaseData();
175 };
176 
178 {
180 
182 
184 
186 }
BlamScenarioHierarchyNode::~BlamScenarioHierarchyNode
virtual ~BlamScenarioHierarchyNode()
Definition: hierarchy.h:49
BlamScenarioHierarchyNodeType::Group
@ Group
Indicates the hierarchy node is a BlamScenarioHierarchyNode_Group.
BlamScenarioHierarchyNodeType
BlamScenarioHierarchyNodeType
Enumerator listing possible hierarchy node types.
Definition: hierarchy.h:17
SAPIEN_LIB_API
#define SAPIEN_LIB_API
Definition: hierarchy.h:11
Sapien::Hierarchy
Definition: hierarchy.h:177
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:137
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:27
BlamScenarioHierarchyNode_Object
Class representing an object hierarchy node.
Definition: hierarchy.h:97
BlamScenarioHierarchyNode_Group
Class representing a group hierarchy node.
Definition: hierarchy.h:66
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...