Vivid
Loading...
Searching...
No Matches
Entity.cpp
1#include "Entity.h"
2#include "editor/Application.h"
3#include "imgui/imgui/imgui.h"
4
5#include "Component.h"
6#include "core/ecs/ECS.h"
7#include "core/ecs/ComponentFactory.h"
8
9#define MAX_COMPONENTS 10
10
11Vivid::Entity::Entity(int id, String name)
12 : m_ID(id)
13 , m_Name(name)
14{
15 ECS::s_EntityID++;
16 m_Components.reserve(MAX_COMPONENTS);
17}
18
19void Vivid::Entity::ImguiRender()
20{
21 String name = "Entity: " + m_Name;
22 ImGui::Text(name.c_str());
23
24 for (auto& componentID : m_Components)
25 {
26 ComponentType ct = ECS::g_Components[componentID]->GetComponentType();
27 if (ImGui::TreeNode(g_AllComponentStrings.at(ct).c_str()))
28 {
29 ECS::g_Components[componentID]->ImGuiRender();
30
31 ImGui::TreePop();
32 }
33 }
34}
35
36void Vivid::Entity::Draw(Camera* camera)
37{
38 for (auto& component : m_Components)
39 {
40 ECS::g_Components[component]->Draw(camera);
41 }
42}
43
44void Vivid::Entity::DrawGizmo(Camera* camera)
45{
46 int transformID = HasComponent(ComponentType::TransformComponent);
47 auto transform = static_cast<TransformComponent*>(ECS::g_Components[transformID].get());
48 if (transform)
49 {
50 transform->DrawGizmo(camera);
51 }
52}
53
54int Vivid::Entity::HasComponent(ComponentType ct)
55{
56 for (int i : m_Components)
57 {
58 if (ct == ECS::g_Components[i]->GetComponentType())
59 {
60 return i;
61 }
62 }
63
64 return -1;
65}
66
67void Vivid::Entity::RemoveComponent(const int& componentID)
68{
69 for (int i = 0; i < m_Components.size(); i++)
70 {
71 int id = m_Components[i];
72 if (ECS::g_Components[id]->GetComponentType() == ECS::g_Components[componentID]->GetComponentType())
73 {
74 m_Components.erase(m_Components.begin() + i);
75 std::cout << "Component Removed\n";
76 }
77 }
78 std::cout << "Component Not found\n";
79}
80
81void Vivid::Entity::AddComponent(const int& componentID)
82{
83 m_Components.push_back(componentID);
84}
A class that represents the camera.
Definition: Camera.h:25
int HasComponent(ComponentType ct)
Checks if the Entity has a component.
Definition: Entity.cpp:54