Just™ Game Engine
components.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2021-2022 Konstanty Misiak
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#pragma once
8#include "jng/core/GUID.hpp"
10#include "jng/scene/camera.hpp"
13
14#include <glm/glm.hpp>
15#include <glm/gtc/matrix_transform.hpp>
16#include <glm/gtx/quaternion.hpp>
17
18class b2Body;
19class b2Fixture;
20
21namespace jng {
22
24 {
25 IDComponent() = default;
26 IDComponent(const IDComponent&) = default;
27 IDComponent(GUID id) : ID{ id } {}
28
30 };
31 static_assert(sizeof(IDComponent) == 8);
32
34 {
35 TagComponent(const std::string& tag) : Tag{ tag } {};
36 TagComponent(const TagComponent&) = default;
37
38 std::string Tag;
39 };
40 static_assert(sizeof(TagComponent) == 40);
41
43 {
44 TransformComponent() = default;
46
47 glm::vec3 translation{ 0.f, 0.f, 0.f };
48 glm::vec3 rotation{ 0.f, 0.f, 0.f };
49 glm::vec3 scale{ 1.f, 1.f, 1.f };
50
51 void reset();
52
53 void setTransform(const glm::mat4& transform);
54 glm::mat4 getTransform() const;
55 };
56 static_assert(sizeof(TransformComponent) == 36);
57
59 {
60 CameraComponent() = default;
62
64
65 void reset();
66 };
67 static_assert(sizeof(CameraComponent) == 96);
68
70 {
73
74 glm::vec4 color{ 1.f, 1.f, 1.f, 1.f };
76 f32 fade = 0.001f;
77
78 void reset();
79 };
80 static_assert(sizeof(CircleRendererComponent) == 24);
81
83 {
86
87 glm::vec4 Color{ 1.f, 1.f, 1.f, 1.f };
89
90 void reset();
91 };
92 static_assert(sizeof(SpriteRendererComponent) == 32);
93
95 {
98
99 b2Fixture* fixtureHandle = nullptr; // NOTE: used in runtime only
100 glm::vec2 size{ 0.5f, 0.5f };
101 glm::vec2 offset{ 0.f, 0.f };
103 f32 friction = 0.5f;
106
107 void reset();
108 };
109 static_assert(sizeof(BoxCollider2DComponent) == 40);
110
112 {
115
116 b2Fixture* fixtureHandle = nullptr; // NOTE: used in runtime only
117 glm::vec2 offset{ 0.f, 0.f };
118 f32 radius = 0.5f;
120 f32 friction = 0.5f;
123 u32 __padding; // NOTE: padding because struct is aligned so that struct size is divisivle by the size of the largest member.
124
125 void reset();
126 };
127 static_assert(sizeof(CircleCollider2DComponent) == 40);
128
130 {
133
134 enum class BodyType { Static = 0, Kinematic = 1, Dynamic = 2 };
135
136 b2Body* bodyHandle = nullptr; // NOTE: used in runtime only
141 bool enabled = true;
142 bool freezeRotation = false;
143
144 void reset();
145 void setLinearVelocity(glm::vec2 velocity);
146 };
147 static_assert(sizeof(Rigidbody2DComponent) == 32);
148
150 {
153
154 std::string name;
156
157 void reset();
158 };
159 static_assert(sizeof(LuaScriptComponent) == 72);
160
161 template<typename... Component>
162 struct ComponentGroup {};
163
164 // All components except ID, Tag
174 >;
175
176} // namespace jng
Definition: camera.hpp:13
Definition: GUID.hpp:13
Definition: base.hpp:11
float f32
Definition: base.hpp:47
uint32_t u32
Definition: base.hpp:41
std::shared_ptr< T > Ref
Definition: base.hpp:32
Definition: components.hpp:95
glm::vec2 offset
Definition: components.hpp:101
f32 friction
Definition: components.hpp:103
f32 density
Definition: components.hpp:102
b2Fixture * fixtureHandle
Definition: components.hpp:99
glm::vec2 size
Definition: components.hpp:100
BoxCollider2DComponent(const BoxCollider2DComponent &)=default
f32 restitution
Definition: components.hpp:104
void reset()
Definition: components.cpp:50
f32 restitutionThreshold
Definition: components.hpp:105
Definition: components.hpp:59
CameraComponent(const CameraComponent &)=default
Camera camera
Definition: components.hpp:63
void reset()
Definition: components.cpp:32
CameraComponent()=default
Definition: components.hpp:112
f32 restitution
Definition: components.hpp:121
u32 __padding
Definition: components.hpp:123
f32 density
Definition: components.hpp:119
f32 friction
Definition: components.hpp:120
void reset()
Definition: components.cpp:60
f32 restitutionThreshold
Definition: components.hpp:122
f32 radius
Definition: components.hpp:118
CircleCollider2DComponent(const CircleCollider2DComponent &)=default
b2Fixture * fixtureHandle
Definition: components.hpp:116
glm::vec2 offset
Definition: components.hpp:117
Definition: components.hpp:70
void reset()
Definition: components.cpp:37
f32 fade
Definition: components.hpp:76
CircleRendererComponent(const CircleRendererComponent &)=default
f32 thickness
Definition: components.hpp:75
glm::vec4 color
Definition: components.hpp:74
Definition: components.hpp:162
Definition: components.hpp:24
IDComponent()=default
IDComponent(const IDComponent &)=default
GUID ID
Definition: components.hpp:29
IDComponent(GUID id)
Definition: components.hpp:27
Definition: lua_engine.hpp:20
Definition: components.hpp:150
LuaScriptComponent(const LuaScriptComponent &)=default
LuaEngine::ScriptData data
Definition: components.hpp:155
std::string name
Definition: components.hpp:154
void reset()
Definition: components.cpp:85
Definition: components.hpp:130
bool freezeRotation
Definition: components.hpp:142
bool enabled
Definition: components.hpp:141
void setLinearVelocity(glm::vec2 velocity)
Definition: components.cpp:80
b2Body * bodyHandle
Definition: components.hpp:136
Rigidbody2DComponent(const Rigidbody2DComponent &)=default
void reset()
Definition: components.cpp:70
BodyType type
Definition: components.hpp:137
BodyType
Definition: components.hpp:134
f32 angularDamping
Definition: components.hpp:139
f32 linearDamping
Definition: components.hpp:138
f32 gravityScale
Definition: components.hpp:140
Definition: components.hpp:83
Ref< Texture > texture
Definition: components.hpp:88
SpriteRendererComponent(const SpriteRendererComponent &)=default
void reset()
Definition: components.cpp:44
glm::vec4 Color
Definition: components.hpp:87
Definition: components.hpp:34
std::string Tag
Definition: components.hpp:38
TagComponent(const std::string &tag)
Definition: components.hpp:35
TagComponent(const TagComponent &)=default
Definition: components.hpp:43
void setTransform(const glm::mat4 &transform)
Definition: components.cpp:21
TransformComponent(const TransformComponent &)=default
glm::vec3 scale
Definition: components.hpp:49
glm::vec3 rotation
Definition: components.hpp:48
glm::vec3 translation
Definition: components.hpp:47
glm::mat4 getTransform() const
Definition: components.cpp:26
void reset()
Definition: components.cpp:14