Riyyi
4 years ago
3 changed files with 96 additions and 0 deletions
@ -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
|
Loading…
Reference in new issue