Riyyi
4 years ago
20 changed files with 181 additions and 120 deletions
@ -0,0 +1,32 @@
|
||||
#ifndef CAMERA_COMPONENT_H |
||||
#define CAMERA_COMPONENT_H |
||||
|
||||
#include "glm/ext/matrix_float4x4.hpp" // glm::mat4 |
||||
#include "glm/ext/vector_float3.hpp" // glm::vec3 |
||||
|
||||
namespace Inferno { |
||||
|
||||
enum CameraType { |
||||
Orthographic, |
||||
Perspective, |
||||
}; |
||||
|
||||
struct CameraComponent { |
||||
CameraType type = CameraType::Perspective; |
||||
|
||||
// Orthographic
|
||||
float zoomLevel = 1.0f; |
||||
glm::vec3 rotateAxis { 0.0f, 0.0f, 1.0f }; |
||||
|
||||
// Perspective
|
||||
float fov = 90.0f; |
||||
float pitch = 0.0f; |
||||
float yaw = -90.0f; |
||||
glm::vec3 up { 0.0f, 1.0f, 0.0f }; |
||||
|
||||
glm::mat4 projection { 1.0f }; // Identity matrix
|
||||
}; |
||||
|
||||
} |
||||
|
||||
#endif // CAMERA_COMPONENT_H
|
@ -0,0 +1,21 @@
|
||||
#ifndef LUA_SCRIPT_COMPONENT_H |
||||
#define LUA_SCRIPT_COMPONENT_H |
||||
|
||||
#include <string> // std::string |
||||
|
||||
namespace Inferno { |
||||
|
||||
class LuaScript; |
||||
|
||||
struct LuaScriptComponent { |
||||
LuaScript* instance = nullptr; |
||||
std::string path; |
||||
|
||||
// Dont allow manually setting instance during construction
|
||||
LuaScriptComponent() {} |
||||
LuaScriptComponent(const std::string& path) |
||||
: path(path) {} |
||||
}; |
||||
} |
||||
|
||||
#endif // LUA_SCRIPT_COMPONENT_H
|
@ -0,0 +1,33 @@
|
||||
#ifndef NATIVE_SCRIPT_COMPONENT_H |
||||
#define NATIVE_SCRIPT_COMPONENT_H |
||||
|
||||
#include "inferno/assert.h" |
||||
#include "inferno/script/nativescript.h" |
||||
|
||||
namespace Inferno { |
||||
|
||||
struct NativeScriptComponent { |
||||
NativeScript* instance = nullptr; |
||||
|
||||
NativeScript* (*initialize)(); |
||||
|
||||
// Dont allow manually setting instance during construction
|
||||
NativeScriptComponent() {} |
||||
|
||||
template<typename T> |
||||
void bind() |
||||
{ |
||||
ASSERT(instance == nullptr, "NativeScript already bound"); |
||||
initialize = []() { return static_cast<NativeScript*>(new T()); }; |
||||
} |
||||
|
||||
void destroy() { |
||||
ASSERT(instance, "Attempting to destroy an uninitialized NativeScript"); |
||||
delete instance; |
||||
instance = nullptr; |
||||
} |
||||
}; |
||||
|
||||
} |
||||
|
||||
#endif // NATIVE_SCRIPT_COMPONENT_H
|
@ -0,0 +1,19 @@
|
||||
#ifndef SPRITE_COMPONENT_H |
||||
#define SPRITE_COMPONENT_H |
||||
|
||||
#include <memory> // std::shared_ptr |
||||
|
||||
#include "glm/ext/vector_float4.hpp" // glm::vec4 |
||||
|
||||
#include "inferno/render/texture.h" |
||||
|
||||
namespace Inferno { |
||||
|
||||
struct SpriteComponent { |
||||
glm::vec4 color { 1.0f }; |
||||
std::shared_ptr<Texture> texture; |
||||
}; |
||||
|
||||
} |
||||
|
||||
#endif // SPRITE_COMPONENT_H
|
@ -0,0 +1,20 @@
|
||||
#ifndef TAG_COMPONENT_H |
||||
#define TAG_COMPONENT_H |
||||
|
||||
#include <string> // std::string |
||||
|
||||
namespace Inferno { |
||||
|
||||
struct TagComponent { |
||||
std::string tag; |
||||
|
||||
TagComponent() = default; |
||||
TagComponent(const std::string& tag) |
||||
: tag(tag) {} |
||||
|
||||
operator const std::string&() const { return tag; } |
||||
}; |
||||
|
||||
} |
||||
|
||||
#endif // TAG_COMPONENT_H
|
@ -1,4 +1,4 @@
|
||||
#include "inferno/scene/components.h" |
||||
#include "inferno/components/transformcomponent.h" |
||||
|
||||
namespace Inferno { |
||||
|
@ -0,0 +1,26 @@
|
||||
#ifndef TRANSFORM_COMPONENT_H |
||||
#define TRANSFORM_COMPONENT_H |
||||
|
||||
#include "glm/ext/matrix_float4x4.hpp" // glm::mat4 |
||||
#include "glm/ext/vector_float3.hpp" // glm::vec3 |
||||
|
||||
#include "inferno/io/log.h" |
||||
|
||||
namespace Inferno { |
||||
|
||||
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 }; |
||||
glm::mat4 transform { 1.0f }; // Identity matrix
|
||||
}; |
||||
|
||||
// ----------------------------------------
|
||||
|
||||
const LogStream& operator<<(const LogStream& stream, const glm::vec3& value); |
||||
const LogStream& operator<<(const LogStream& stream, const glm::vec4& value); |
||||
const LogStream& operator<<(const LogStream& stream, const glm::mat4& value); |
||||
const LogStream& operator<<(const LogStream& stream, const TransformComponent& value); |
||||
} |
||||
|
||||
#endif // TRANSFORM_COMPONENT_H
|
@ -1,104 +0,0 @@
|
||||
#ifndef COMPONENTS_H |
||||
#define COMPONENTS_H |
||||
|
||||
#include <memory> // std::shared_ptr |
||||
#include <string> // std::string |
||||
#include <functional> // std::function |
||||
|
||||
#include "glm/ext/matrix_float4x4.hpp" // glm::mat4 |
||||
#include "glm/ext/vector_float3.hpp" // glm::vec3 |
||||
|
||||
#include "inferno/assert.h" |
||||
#include "inferno/io/log.h" |
||||
#include "inferno/render/texture.h" |
||||
#include "inferno/script/nativescript.h" |
||||
|
||||
namespace Inferno { |
||||
|
||||
class LuaScript; |
||||
|
||||
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 }; |
||||
glm::mat4 transform { 1.0f }; // Identity matrix
|
||||
}; |
||||
|
||||
enum CameraType { |
||||
Orthographic, |
||||
Perspective, |
||||
}; |
||||
|
||||
struct CameraComponent { |
||||
CameraType type = CameraType::Perspective; |
||||
|
||||
// Orthographic
|
||||
float zoomLevel = 1.0f; |
||||
glm::vec3 rotateAxis { 0.0f, 0.0f, 1.0f }; |
||||
|
||||
// Perspective
|
||||
float fov = 90.0f; |
||||
float pitch = 0.0f; |
||||
float yaw = -90.0f; |
||||
glm::vec3 up { 0.0f, 1.0f, 0.0f }; |
||||
|
||||
glm::mat4 projection { 1.0f }; // Identity matrix
|
||||
}; |
||||
|
||||
struct SpriteComponent { |
||||
glm::vec4 color { 1.0f }; |
||||
std::shared_ptr<Texture> texture; |
||||
}; |
||||
|
||||
struct NativeScriptComponent { |
||||
NativeScript* instance = nullptr; |
||||
|
||||
NativeScript* (*initialize)(); |
||||
|
||||
// Dont allow manually setting instance during construction
|
||||
NativeScriptComponent() {} |
||||
|
||||
template<typename T> |
||||
void bind() |
||||
{ |
||||
ASSERT(instance == nullptr, "NativeScript already bound"); |
||||
initialize = []() { return static_cast<NativeScript*>(new T()); }; |
||||
} |
||||
|
||||
void destroy() { |
||||
ASSERT(instance, "Attempting to destroy an uninitialized NativeScript"); |
||||
delete instance; |
||||
instance = nullptr; |
||||
} |
||||
}; |
||||
|
||||
struct LuaScriptComponent { |
||||
LuaScript* instance = nullptr; |
||||
std::string path; |
||||
|
||||
// Dont allow manually setting instance during construction
|
||||
LuaScriptComponent() {} |
||||
LuaScriptComponent(const std::string& path) |
||||
: path(path) {} |
||||
}; |
||||
|
||||
// ----------------------------------------
|
||||
|
||||
const LogStream& operator<<(const LogStream& stream, const TransformComponent& value); |
||||
const LogStream& operator<<(const LogStream& stream, const glm::vec3& value); |
||||
const LogStream& operator<<(const LogStream& stream, const glm::vec4& value); |
||||
const LogStream& operator<<(const LogStream& stream, const glm::mat4& value); |
||||
|
||||
} |
||||
|
||||
#endif // COMPONENTS_H
|
Loading…
Reference in new issue