Add components and scene
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
#ifndef COMPONENTS_H
|
||||||
|
#define COMPONENTS_H
|
||||||
|
|
||||||
|
#include <string> // std::string
|
||||||
|
|
||||||
|
#include "glm/ext/vector_float3.hpp" // glm::vec3
|
||||||
|
|
||||||
|
namespace Inferno {
|
||||||
|
|
||||||
|
struct TagComponent {
|
||||||
|
std::string tag;
|
||||||
|
|
||||||
|
TagComponent() = default;
|
||||||
|
TagComponent(const std::string& tag)
|
||||||
|
: tag(tag) {}
|
||||||
|
|
||||||
|
operator const std::string&() const { return tag; }
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TransformComponent {
|
||||||
|
glm::vec3 translate = { 0.0f, 0.0f, 0.0f };
|
||||||
|
glm::vec3 rotate = { 0.0f, 0.0f, 0.0f } ;
|
||||||
|
glm::vec3 scale = { 1.0f, 1.0f, 1.0f };
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // COMPONENTS_H
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
#include "inferno/log.h"
|
||||||
|
#include "inferno/scene/components.h"
|
||||||
|
#include "inferno/scene/entity.h"
|
||||||
|
#include "inferno/scene/scene.h"
|
||||||
|
|
||||||
|
namespace Inferno {
|
||||||
|
|
||||||
|
Scene::Scene()
|
||||||
|
{
|
||||||
|
m_registry = std::make_shared<entt::registry>();
|
||||||
|
|
||||||
|
Entity entity = createEntity("Test Entity");
|
||||||
|
|
||||||
|
dbg() << entity.get<TagComponent>();
|
||||||
|
|
||||||
|
if (entity) {
|
||||||
|
dbg() << "Entity is valid";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity Scene::createEntity(const std::string& name)
|
||||||
|
{
|
||||||
|
Entity entity = Entity(m_registry);
|
||||||
|
entity.add<TagComponent>(name.empty() ? "Unnamed Entity" : name);
|
||||||
|
entity.add<TransformComponent>();
|
||||||
|
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity Scene::createEntity(entt::entity handle)
|
||||||
|
{
|
||||||
|
return Entity(m_registry, handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity Scene::createEntity(uint32_t handle)
|
||||||
|
{
|
||||||
|
return Entity(m_registry, handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#ifndef SCENE_H
|
||||||
|
#define SCENE_H
|
||||||
|
|
||||||
|
#include <cstdint> // uint32_t
|
||||||
|
#include <memory> // std::shared_ptr
|
||||||
|
|
||||||
|
#include "entt/entity/registry.hpp" // entt::entity, entt::registry
|
||||||
|
|
||||||
|
namespace Inferno {
|
||||||
|
|
||||||
|
class Entity;
|
||||||
|
|
||||||
|
class Scene {
|
||||||
|
public:
|
||||||
|
Scene();
|
||||||
|
virtual ~Scene() = default;
|
||||||
|
|
||||||
|
Entity createEntity(const std::string& name = "");
|
||||||
|
Entity createEntity(entt::entity handle);
|
||||||
|
Entity createEntity(uint32_t handle);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::shared_ptr<entt::registry> m_registry;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // SCENE_H
|
||||||
Reference in New Issue
Block a user