Elaztek Developer Hub
Blamite Game Engine - blam!  00388.06.24.23.2301.blamite
The core library for the Blamite Game Engine.
world_objects.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 
6 #include <Strings/components/classes/events/events.h>
7 #include <Strings/components/classes/vector/vector.h>
9 
10 #ifdef BLAM_EXPORTS
11 #define BLAM_EXT_API __declspec(dllexport)
12 #else
13 #define BLAM_EXT_API __declspec(dllimport)
14 #endif
15 
16 class BlamWorldState;
17 class BlamTagData;
18 class TickEvent;
19 
21 {
22  Tag,
23  Primitive,
25 };
26 
28 {
29  Cuboid,
30  Cylinder
31 };
32 
40 {
41 public:
42  std::string name = "unnamed";
43  std::string description = "";
44  int editor_folder_id = 0;
45  uint64_t id = 0;
46 
47  BlamWorldState* world = nullptr;
48  BlamVector3 position = { 0, 0, 0 };
49  BlamVector3 rotation = { 0, 0, 0 };
50  BlamVector3 scale = { 1, 1, 1 };
51 
53 
61 
65  virtual void Render();
66 };
67 
75 {
76 public:
77  BlamTagData* tag_data = nullptr;
78 
85  BlamWorldObject_Tag(BlamTagData* _tag_data, BlamWorldState* _world);
86 
87  void Render();
88 };
89 
100 {
101 public:
103 
104  float radius_0 = 1.0f;
105  float radius_1 = 1.0f;
106  int resolution = 5;
107 
115 
116  void Render();
117 };
118 
125 class BLAM_EXT_API BlamWorldState : public BlamEventListener
126 {
127 private:
128  std::vector<BlamWorldObject*> objects = std::vector<BlamWorldObject*>();
129 
130 public:
134  BlamWorldState();
135 
139  ~BlamWorldState();
140 
141  void AddObject(BlamWorldObject* object);
142 
143  void RemoveObject(uint64_t object_id);
144 
145  int GetObjectCount();
146 
147  bool HasObject(uint64_t object_id);
148 
149  BlamWorldObject* GetObjectAtIndex(int index);
150 
151  BlamWorldObject* GetObjectById(uint64_t object_id);
152 
163  bool Drop(BlamTagData* tag_data, BlamVector3 position);
164 
165  void OnTickEvent(TickEvent* event);
166 };
BLAM_EXT_API
#define BLAM_EXT_API
Definition: world_objects.h:13
BlamWorldState::AddObject
void AddObject(BlamWorldObject *object)
Definition: BlamWorldState.cpp:70
BlamWorldObject::position
BlamVector3 position
The position of this object in world space.
Definition: world_objects.h:48
Blam::Logger::LogEvent
BLAM void LogEvent(std::string message)
Logs a message to the log and/or console.
Definition: aliases.cpp:142
BlamWorldObject_Primitive::primitive_type
Blam3DPrimitiveType primitive_type
The type of primitive this object represents.
Definition: world_objects.h:102
logger.h
BlamWorldState::Drop
bool Drop(BlamTagData *tag_data, BlamVector3 position)
Drops a tag into the world at the specified coordinates.
Definition: BlamWorldState.cpp:32
Blam::API::v1::HS::Drop
void Drop(std::string tag_name)
Definition: hs.cpp:44
BlamWorldObjectType
BlamWorldObjectType
Definition: world_objects.h:20
primitives.h
BlamTagData::path
char path[256]
The tag's path.
Definition: tags.h:46
BlamWorldObject::rotation
BlamVector3 rotation
The rotation of this object in world space.
Definition: world_objects.h:49
BlamWorldState::GetObjectCount
int GetObjectCount()
Definition: BlamWorldState.cpp:101
BlamTagData::BlamTagData
BlamTagData()
Definition: BlamTagData.cpp:5
BlamWorldObject_Tag::tag_data
BlamTagData * tag_data
Pointer to the tag data associated with this object.
Definition: world_objects.h:77
BlamRendering::BGFX::Primitives::DrawCuboid
BLAM void DrawCuboid(BlamVector3 position, BlamVector3 rotation, BlamVector3 scale)
Renders a cuboid to the screen.
Definition: cuboid.cpp:12
BlamWorldObjectType::Unspecified
@ Unspecified
BlamWorldObject_Tag
Class representing a tag-based world object.
Definition: world_objects.h:74
ImGui::Render
IMGUI_API void Render()
Definition: imgui.cpp:4248
BlamTagData::SetTagPath
bool SetTagPath(std::string new_path)
Updates the tag path.
Definition: BlamTagData.cpp:12
BlamRendering::BGFX::Primitives::DrawCylinder
BLAM void DrawCylinder(BlamVector3 position, BlamVector3 rotation, BlamVector3 scale, int resolution, int radius_top, int radius_bottom)
Renders a cylinder to the screen.
Definition: cylinder.cpp:28
Blam3DPrimitiveType::Cuboid
@ Cuboid
BlamWorldState::GetObjectAtIndex
BlamWorldObject * GetObjectAtIndex(int index)
Definition: BlamWorldState.cpp:122
BlamWorldObject_Tag::Render
void Render()
Renders the object to the screen.
Definition: BlamWorldObject_Tag.cpp:8
BlamWorldState::GetObjectById
BlamWorldObject * GetObjectById(uint64_t object_id)
Definition: BlamWorldState.cpp:130
uint64_t
unsigned __int64 uint64_t
Definition: stdint.h:136
BlamWorldObject::id
uint64_t id
A unique identifier for this object. Used to identify objects during runtime.
Definition: world_objects.h:45
BlamPluginFieldType::Unspecified
@ Unspecified
BlamWorldObject::Render
virtual void Render()
Renders the object to the screen.
Definition: BlamWorldObject.cpp:9
BlamWorldObject::scale
BlamVector3 scale
The scale/size of the object.
Definition: world_objects.h:50
BlamWorldState::HasObject
bool HasObject(uint64_t object_id)
Definition: BlamWorldState.cpp:106
BlamWorldObject::type
BlamWorldObjectType type
The type of this world object.
Definition: world_objects.h:52
BlamWorldState::OnTickEvent
void OnTickEvent(TickEvent *event)
Definition: BlamWorldState.cpp:146
BlamWorldObject_Primitive
Class representing a primitive-based world object.
Definition: world_objects.h:99
BlamWorldObject
Class representing a world object.
Definition: world_objects.h:39
Blam3DPrimitiveType::Cylinder
@ Cylinder
BlamWorldObject::BlamWorldObject
BlamWorldObject(BlamWorldState *_world, BlamWorldObjectType _type)
Creates a new world object.
Definition: BlamWorldObject.cpp:3
BlamWorldObject_Primitive::radius_1
float radius_1
A secondary radius of the primitive. Only used in cylinders.
Definition: world_objects.h:105
BlamWorldObject_Tag::BlamWorldObject_Tag
BlamWorldObject_Tag(BlamTagData *_tag_data, BlamWorldState *_world)
Creates a new tag-based world object.
Definition: BlamWorldObject_Tag.cpp:3
BlamWorldState::~BlamWorldState
~BlamWorldState()
Destroys the world state.
Definition: BlamWorldState.cpp:16
BlamWorldObjectType::Primitive
@ Primitive
BlamWorldObject_Primitive::radius_0
float radius_0
The radius of the primitive. Only used in cylinders.
Definition: world_objects.h:104
BlamWorldObject_Primitive::resolution
int resolution
The level of detail to use for the primitive. Only used in cylinders.
Definition: world_objects.h:106
tags.h
tags.h
BlamTagData
Class used to contain and access tag data.
Definition: tags.h:30
BlamWorldState::RemoveObject
void RemoveObject(uint64_t object_id)
Definition: BlamWorldState.cpp:85
Blam3DPrimitiveType
Blam3DPrimitiveType
Definition: world_objects.h:27
BlamWorldObject::world
BlamWorldState * world
The world state this object belongs to.
Definition: world_objects.h:47
BlamWorldObject_Primitive::Render
void Render()
Renders the object to the screen.
Definition: BlamWorldObject_Primitive.cpp:10
BlamWorldState
Class representing a world state.
Definition: world_objects.h:125
BlamWorldObjectType::Tag
@ Tag
BlamWorldObject_Primitive::BlamWorldObject_Primitive
BlamWorldObject_Primitive(Blam3DPrimitiveType _primitive_type, BlamWorldState *_world)
Creates a new primitive world object.
Definition: BlamWorldObject_Primitive.cpp:5
BlamWorldState::BlamWorldState
BlamWorldState()
Initializes a new world state.
Definition: BlamWorldState.cpp:8
BlamTagData::tag_class
std::string tag_class
The tag's short class name.
Definition: tags.h:47