2#include "editor/Application.h"
3#include "imgui/imgui/imgui.h"
6#include "core/ecs/ECS.h"
7#include "core/ecs/ComponentFactory.h"
9#define MAX_COMPONENTS 10
11Vivid::Entity::Entity(
int id, String name)
16 m_Components.reserve(MAX_COMPONENTS);
19void Vivid::Entity::ImguiRender()
21 String name =
"Entity: " + m_Name;
22 ImGui::Text(name.c_str());
24 for (
auto& componentID : m_Components)
26 ComponentType ct = ECS::g_Components[componentID]->GetComponentType();
27 if (ImGui::TreeNode(g_AllComponentStrings.at(ct).c_str()))
29 ECS::g_Components[componentID]->ImGuiRender();
36void Vivid::Entity::Draw(
Camera* camera)
38 for (
auto& component : m_Components)
40 ECS::g_Components[component]->Draw(camera);
44void Vivid::Entity::DrawGizmo(
Camera* camera)
46 int transformID = HasComponent(ComponentType::TransformComponent);
47 auto transform =
static_cast<TransformComponent*
>(ECS::g_Components[transformID].get());
50 transform->DrawGizmo(camera);
56 for (
int i : m_Components)
58 if (ct == ECS::g_Components[i]->GetComponentType())
67void Vivid::Entity::RemoveComponent(
const int& componentID)
69 for (
int i = 0; i < m_Components.size(); i++)
71 int id = m_Components[i];
72 if (ECS::g_Components[
id]->GetComponentType() == ECS::g_Components[componentID]->GetComponentType())
74 m_Components.erase(m_Components.begin() + i);
75 std::cout <<
"Component Removed\n";
78 std::cout <<
"Component Not found\n";
81void Vivid::Entity::AddComponent(
const int& componentID)
83 m_Components.push_back(componentID);
A class that represents the camera.
int HasComponent(ComponentType ct)
Checks if the Entity has a component.