Add GLM
This commit is contained in:
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -11,3 +11,6 @@
|
||||
path = Dependencies/IACore
|
||||
url = https://git.iasoft.dev/dev0/IACore
|
||||
branch = main
|
||||
[submodule "Vendor/glm"]
|
||||
path = Vendor/glm
|
||||
url = https://github.com/g-truc/glm
|
||||
|
||||
@ -27,8 +27,8 @@ namespace ia::iae::game
|
||||
m_spriteRenderer->AddAnimation({.ShouldLoop = true, .Keys = {keyFrame}});
|
||||
m_spriteRenderer->BakeAnimations();
|
||||
|
||||
m_id2 = Physics::CreateStaticBody({GetPosition().X + 300, GetPosition().Y + 25});
|
||||
Physics::AddBoxCollider(m_id2, {600.0f, 50.0f});
|
||||
//m_id2 = Physics::CreateStaticBody({GetPosition().X + 300, GetPosition().Y + 25});
|
||||
//Physics::AddBoxCollider(m_id2, {600.0f, 50.0f});
|
||||
}
|
||||
|
||||
VOID Ground::OnRemoved()
|
||||
|
||||
@ -28,8 +28,8 @@ namespace ia::iae::game
|
||||
m_spriteRenderer->AddAnimation({.ShouldLoop = true, .Keys = {keyFrame}});
|
||||
m_spriteRenderer->BakeAnimations();
|
||||
|
||||
m_id = Physics::CreateDynamicBody({GetPosition().X + 20, GetPosition().Y + 20});
|
||||
Physics::AddBoxCollider(m_id, {40.0f, 40.0f});
|
||||
//m_id = Physics::CreateDynamicBody({GetPosition().X + 20, GetPosition().Y + 20});
|
||||
//Physics::AddBoxCollider(m_id, {40.0f, 40.0f});
|
||||
}
|
||||
|
||||
VOID Player::OnRemoved()
|
||||
@ -46,6 +46,6 @@ namespace ia::iae::game
|
||||
VOID Player::Update()
|
||||
{
|
||||
Node::Update();
|
||||
SetLocalPosition(Physics::GetBodyPosition(m_id) - iam::Vec3f{20.0f, 20.0f, 0.0f});
|
||||
SetLocalPosition(Physics::GetBodyPosition(m_id) - glm::vec3{20.0f, 20.0f, 0.0f});
|
||||
}
|
||||
} // namespace ia::iae::game
|
||||
@ -40,5 +40,5 @@ add_library(IAEngine STATIC ${IAEngine_Sources})
|
||||
target_include_directories(IAEngine PUBLIC inc/)
|
||||
target_include_directories(IAEngine PRIVATE imp/hpp)
|
||||
|
||||
target_link_libraries(IAEngine PUBLIC IACore ImGui)
|
||||
target_link_libraries(IAEngine PUBLIC IACore ImGui glm::glm)
|
||||
target_link_libraries(IAEngine PRIVATE SDL3::SDL3 SDL3_mixer::SDL3_mixer)
|
||||
|
||||
@ -49,7 +49,7 @@ namespace ia::iae
|
||||
|
||||
VOID AtlasRendererComponent::Draw()
|
||||
{
|
||||
iam::Vec3f p{m_node->GetPosition().X, m_node->GetPosition().Y, m_node->GetPosition().Z};
|
||||
glm::vec3 p{m_node->GetPosition().x, m_node->GetPosition().y, m_node->GetPosition().z};
|
||||
for (INT32 y = 0; y < m_tileGrid.TileCountY; y++)
|
||||
{
|
||||
for (INT32 x = 0; x < m_tileGrid.TileCountX; x++)
|
||||
@ -57,10 +57,10 @@ namespace ia::iae
|
||||
const auto t = m_tileGrid.m_tileTextures[x + (y * m_tileGrid.TileCountX)];
|
||||
if (t != INVALID_HANDLE)
|
||||
m_textures[t]->Draw(p + m_tileGrid.Position, {1.0f, 1.0f, 1.0f}, 0.0f, false, false, {1.0f, 1.0f, 1.0f, 1.0f});
|
||||
p.X += m_tileGrid.TileWidth;
|
||||
p.x += m_tileGrid.TileWidth;
|
||||
}
|
||||
p.X = m_node->GetPosition().X;
|
||||
p.Y += m_tileGrid.TileHeight;
|
||||
p.x = m_node->GetPosition().x;
|
||||
p.y += m_tileGrid.TileHeight;
|
||||
}
|
||||
}
|
||||
} // namespace ia::iae
|
||||
@ -20,8 +20,6 @@
|
||||
|
||||
#include <IAEngine/Time.hpp>
|
||||
|
||||
#include <IAMath/Lerp.hpp>
|
||||
|
||||
namespace ia::iae
|
||||
{
|
||||
SpriteRendererComponent::SpriteRendererComponent(IN Node *node) : IComponent(node)
|
||||
@ -71,7 +69,7 @@ namespace ia::iae
|
||||
if(!animFrame.Texture) return;
|
||||
animFrame.Texture->Draw(
|
||||
m_node->GetPosition() + animFrame.Position, m_node->GetScale() * animFrame.Scale,
|
||||
m_node->GetRotation().Z + animFrame.Rotation.Z, m_isFlippedH, m_isFlippedV, animFrame.ColorOverlay);
|
||||
m_node->GetRotation().z + animFrame.Rotation.z, m_isFlippedH, m_isFlippedV, animFrame.ColorOverlay);
|
||||
}
|
||||
|
||||
VOID SpriteRendererComponent::UpdateAnimation()
|
||||
@ -86,10 +84,10 @@ namespace ia::iae
|
||||
#define INTERP_PROPERTY(name) \
|
||||
m_currentAnimationState.name = iam::Lerp(m_prevAnimationKeyFrame.name, m_nextAnimationKeyFrame.name, t);
|
||||
|
||||
INTERP_PROPERTY(Position);
|
||||
INTERP_PROPERTY(Rotation);
|
||||
INTERP_PROPERTY(Scale);
|
||||
INTERP_PROPERTY(ColorOverlay);
|
||||
//INTERP_PROPERTY(Position); [IATODO]
|
||||
//INTERP_PROPERTY(Rotation);
|
||||
//INTERP_PROPERTY(Scale);
|
||||
//INTERP_PROPERTY(ColorOverlay);
|
||||
|
||||
#undef INTERP_PROPERTY
|
||||
}
|
||||
|
||||
@ -33,6 +33,6 @@ namespace ia::iae
|
||||
{
|
||||
m_texture->Draw(
|
||||
m_node->GetPosition() + m_position, m_node->GetScale(),
|
||||
m_node->GetRotation().Z, false, false, iam::Vec4f{1.0f, 1.0f, 1.0f, 1.0f});
|
||||
m_node->GetRotation().z, false, false, glm::vec4{1.0f, 1.0f, 1.0f, 1.0f});
|
||||
}
|
||||
} // namespace ia::iae
|
||||
@ -22,27 +22,27 @@ namespace ia::iae
|
||||
{
|
||||
struct InputDirection
|
||||
{
|
||||
iam::Vec2f Velocity{};
|
||||
glm::vec2 Velocity{};
|
||||
Input::DirectionalInput Direction{Input::DirectionalInput::NONE};
|
||||
};
|
||||
|
||||
STATIC CONSTEXPR InputDirection INPUT_TO_DIRECTION_MAP[] = {
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* 0 */
|
||||
{iam::Vec2f{1.0f, 0.0f}, Input::DirectionalInput::RIGHT}, /* D */
|
||||
{iam::Vec2f{-1.0f, 0.0f}, Input::DirectionalInput::LEFT}, /* A */
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* A, D */
|
||||
{iam::Vec2f{0.0f, 1.0f}, Input::DirectionalInput::DOWN}, /* S */
|
||||
{iam::Vec2f{1.0f, 1.0f}, Input::DirectionalInput::DOWN_RIGHT}, /* S, D */
|
||||
{iam::Vec2f{-1.0f, 1.0f}, Input::DirectionalInput::DOWN_LEFT}, /* S, A */
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* S, A, D */
|
||||
{iam::Vec2f{0.0f, -1.0f}, Input::DirectionalInput::UP}, /* W */
|
||||
{iam::Vec2f{1.0f, -1.0f}, Input::DirectionalInput::UP_RIGHT}, /* W, D */
|
||||
{iam::Vec2f{-1.0f, -1.0f}, Input::DirectionalInput::UP_LEFT}, /* W, A */
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, A, D */
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S */
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, D */
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A */
|
||||
{iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A, D */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* 0 */
|
||||
{glm::vec2{1.0f, 0.0f}, Input::DirectionalInput::RIGHT}, /* D */
|
||||
{glm::vec2{-1.0f, 0.0f}, Input::DirectionalInput::LEFT}, /* A */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* A, D */
|
||||
{glm::vec2{0.0f, 1.0f}, Input::DirectionalInput::DOWN}, /* S */
|
||||
{glm::vec2{1.0f, 1.0f}, Input::DirectionalInput::DOWN_RIGHT}, /* S, D */
|
||||
{glm::vec2{-1.0f, 1.0f}, Input::DirectionalInput::DOWN_LEFT}, /* S, A */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* S, A, D */
|
||||
{glm::vec2{0.0f, -1.0f}, Input::DirectionalInput::UP}, /* W */
|
||||
{glm::vec2{1.0f, -1.0f}, Input::DirectionalInput::UP_RIGHT}, /* W, D */
|
||||
{glm::vec2{-1.0f, -1.0f}, Input::DirectionalInput::UP_LEFT}, /* W, A */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, A, D */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, D */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A */
|
||||
{glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A, D */
|
||||
};
|
||||
|
||||
BOOL Input::s_keys[256];
|
||||
@ -68,14 +68,14 @@ namespace ia::iae
|
||||
memcpy(s_prevKeys, s_keys, sizeof(s_prevKeys));
|
||||
}
|
||||
|
||||
iam::Vec2f Input::GetDirectionalInput()
|
||||
glm::vec2 Input::GetDirectionalInput()
|
||||
{
|
||||
return INPUT_TO_DIRECTION_MAP[(IsKeyDown(Input::KEY_W) << 3) | (IsKeyDown(Input::KEY_S) << 2) |
|
||||
(IsKeyDown(Input::KEY_A) << 1) | (IsKeyDown(Input::KEY_D) << 0)]
|
||||
.Velocity;
|
||||
}
|
||||
|
||||
iam::Vec2f Input::GetDirectionalInput(OUT DirectionalInput &direction)
|
||||
glm::vec2 Input::GetDirectionalInput(OUT DirectionalInput &direction)
|
||||
{
|
||||
const auto dir = INPUT_TO_DIRECTION_MAP[(IsKeyDown(Input::KEY_W) << 3) | (IsKeyDown(Input::KEY_S) << 2) |
|
||||
(IsKeyDown(Input::KEY_A) << 1) | (IsKeyDown(Input::KEY_D) << 0)];
|
||||
|
||||
@ -39,12 +39,12 @@ namespace ia::iae
|
||||
BOOL drew = false;
|
||||
for (auto &n : m_children)
|
||||
{
|
||||
if (((INT32) n->GetPosition().Z) >= 0)
|
||||
if (((INT32) n->GetPosition().z) >= 0)
|
||||
continue;
|
||||
n->Draw();
|
||||
}
|
||||
|
||||
if(((INT32) GetPosition().Z) < 0)
|
||||
if(((INT32) GetPosition().z) < 0)
|
||||
{
|
||||
for (auto &c : m_components)
|
||||
c->Draw();
|
||||
@ -54,11 +54,11 @@ namespace ia::iae
|
||||
{
|
||||
for (auto &n : m_children)
|
||||
{
|
||||
if (((INT32) n->GetPosition().Z) != i)
|
||||
if (((INT32) n->GetPosition().z) != i)
|
||||
continue;
|
||||
n->Draw();
|
||||
}
|
||||
if (((INT32) GetPosition().Z) == i)
|
||||
if (((INT32) GetPosition().z) == i)
|
||||
{
|
||||
for (auto &c : m_components)
|
||||
c->Draw();
|
||||
@ -67,12 +67,12 @@ namespace ia::iae
|
||||
|
||||
for (auto &n : m_children)
|
||||
{
|
||||
if (((INT32) n->GetPosition().Z) < 8)
|
||||
if (((INT32) n->GetPosition().z) < 8)
|
||||
continue;
|
||||
n->Draw();
|
||||
}
|
||||
|
||||
if(((INT32) GetPosition().Z) > 8)
|
||||
if(((INT32) GetPosition().z) > 8)
|
||||
{
|
||||
for (auto &c : m_components)
|
||||
c->Draw();
|
||||
|
||||
@ -32,21 +32,21 @@ namespace ia::iae
|
||||
{
|
||||
}
|
||||
|
||||
Handle Physics::CreateStaticBody(IN iam::Vec3f position)
|
||||
Handle Physics::CreateStaticBody(IN glm::vec3 position)
|
||||
{
|
||||
return INVALID_HANDLE;
|
||||
}
|
||||
|
||||
Handle Physics::CreateDynamicBody(IN iam::Vec3f position)
|
||||
Handle Physics::CreateDynamicBody(IN glm::vec3 position)
|
||||
{
|
||||
return INVALID_HANDLE;
|
||||
}
|
||||
|
||||
VOID Physics::AddBoxCollider(IN Handle body, IN iam::Vec3f size)
|
||||
VOID Physics::AddBoxCollider(IN Handle body, IN glm::vec3 size)
|
||||
{
|
||||
}
|
||||
|
||||
iam::Vec3f Physics::GetBodyPosition(IN Handle body)
|
||||
glm::vec3 Physics::GetBodyPosition(IN Handle body)
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
@ -25,9 +25,9 @@ namespace ia::iae
|
||||
|
||||
VOID QuadMesh::Initialize()
|
||||
{
|
||||
Vertex_Mesh vertices[6] = {{iam::Vec3f{-1, 1, 0}, iam::Vec2f{0, 0}}, {iam::Vec3f{1, 1, 0}, iam::Vec2f{1, 0}},
|
||||
{iam::Vec3f{1, -1, 0}, iam::Vec2f{1, 1}}, {iam::Vec3f{-1, 1, 0}, iam::Vec2f{0, 0}},
|
||||
{iam::Vec3f{1, -1, 0}, iam::Vec2f{1, 1}}, {iam::Vec3f{-1, -1, 0}, iam::Vec2f{0, 1}}};
|
||||
Vertex_Mesh vertices[6] = {{glm::vec3{-1, 1, 0}, glm::vec2{0, 0}}, {glm::vec3{1, 1, 0}, glm::vec2{1, 0}},
|
||||
{glm::vec3{1, -1, 0}, glm::vec2{1, 1}}, {glm::vec3{-1, 1, 0}, glm::vec2{0, 0}},
|
||||
{glm::vec3{1, -1, 0}, glm::vec2{1, 1}}, {glm::vec3{-1, -1, 0}, glm::vec2{0, 1}}};
|
||||
g_quadMeshVertexBuffer = GPUBuffer::Create(GPUBuffer::Usage::VERTEX, &vertices, sizeof(vertices));
|
||||
}
|
||||
|
||||
@ -37,8 +37,8 @@ namespace ia::iae
|
||||
g_quadMeshVertexBuffer.reset();
|
||||
}
|
||||
|
||||
VOID QuadMesh::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation)
|
||||
VOID QuadMesh::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation)
|
||||
{
|
||||
Renderer::Draw(g_quadMeshVertexBuffer->GetHandle(), 6);
|
||||
Renderer::Draw(position, scale, rotation, g_quadMeshVertexBuffer->GetHandle(), 6);
|
||||
}
|
||||
} // namespace ia::iae
|
||||
@ -51,7 +51,7 @@ namespace ia::iae
|
||||
{.location = 1,
|
||||
.buffer_slot = 0,
|
||||
.format = SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2,
|
||||
.offset = sizeof(iam::Vec3f)}};
|
||||
.offset = sizeof(glm::vec3)}};
|
||||
SDL_GPUGraphicsPipelineCreateInfo createInfo = {
|
||||
.vertex_shader = (SDL_GPUShader *) vertexShader,
|
||||
.fragment_shader = (SDL_GPUShader *) pixelShader,
|
||||
|
||||
@ -117,7 +117,7 @@ namespace ia::iae
|
||||
SDL_DestroyGPUDevice(g_gpuDevice);
|
||||
}
|
||||
|
||||
VOID Renderer::AddDebugUIWindow(IN PCCHAR title, IN CONST iam::Vec2f &position, IN CONST iam::Vec2f &size,
|
||||
VOID Renderer::AddDebugUIWindow(IN PCCHAR title, IN CONST glm::vec2 &position, IN CONST glm::vec2 &size,
|
||||
IN std::function<VOID()> contentDrawCallback)
|
||||
{
|
||||
s_debugUIWindows.pushBack(DebugUIWindow{title, position, size, contentDrawCallback});
|
||||
@ -131,8 +131,8 @@ namespace ia::iae
|
||||
for (const auto &w : s_debugUIWindows)
|
||||
{
|
||||
ImGui::Begin(w.Title);
|
||||
ImGui::SetWindowPos({w.Position.X, w.Position.Y});
|
||||
ImGui::SetWindowSize({w.Size.X, w.Size.Y});
|
||||
ImGui::SetWindowPos({w.Position.x, w.Position.y});
|
||||
ImGui::SetWindowSize({w.Size.x, w.Size.y});
|
||||
w.ContentDrawCallback();
|
||||
ImGui::End();
|
||||
}
|
||||
@ -179,11 +179,11 @@ namespace ia::iae
|
||||
SDL_SubmitGPUCommandBuffer(g_cmdBuffer);
|
||||
}
|
||||
|
||||
VOID Renderer::BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST iam::Vec4f &colorOverlay)
|
||||
VOID Renderer::BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST glm::vec4 &colorOverlay)
|
||||
{
|
||||
STATIC struct
|
||||
{
|
||||
iam::Vec4f colorOverlay;
|
||||
glm::vec4 colorOverlay;
|
||||
UINT32 flipV;
|
||||
UINT32 flipH;
|
||||
} textureState;
|
||||
@ -195,14 +195,14 @@ namespace ia::iae
|
||||
SDL_PushGPUFragmentUniformData(g_cmdBuffer, 0, &textureState, sizeof(textureState));
|
||||
}
|
||||
|
||||
VOID Renderer::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount)
|
||||
VOID Renderer::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount)
|
||||
{
|
||||
SDL_GPUBufferBinding bindings[] = {{.buffer = (SDL_GPUBuffer *) vertexBufferHandle, .offset = 0}};
|
||||
SDL_BindGPUVertexBuffers(g_renderPass, 0, bindings, 1);
|
||||
SDL_DrawGPUPrimitives(g_renderPass, vertexCount, 1, 0, 0);
|
||||
}
|
||||
|
||||
VOID Renderer::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount)
|
||||
VOID Renderer::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount)
|
||||
{
|
||||
SDL_GPUBufferBinding bindings[] = {{.buffer = (SDL_GPUBuffer *) vertexBufferHandle, .offset = 0},
|
||||
{.buffer = (SDL_GPUBuffer *) indexBufferHandle, .offset = 0}};
|
||||
|
||||
@ -30,7 +30,7 @@ namespace ia::iae
|
||||
{
|
||||
for (auto &n : m_nodes)
|
||||
{
|
||||
if (((INT32) n->GetPosition().Z) >= 0)
|
||||
if (((INT32) n->GetPosition().z) >= 0)
|
||||
continue;
|
||||
n->Draw();
|
||||
}
|
||||
@ -39,7 +39,7 @@ namespace ia::iae
|
||||
{
|
||||
for (auto &n : m_nodes)
|
||||
{
|
||||
if (((INT32) n->GetPosition().Z) != i)
|
||||
if (((INT32) n->GetPosition().z) != i)
|
||||
continue;
|
||||
n->Draw();
|
||||
}
|
||||
@ -47,7 +47,7 @@ namespace ia::iae
|
||||
|
||||
for (auto &n : m_nodes)
|
||||
{
|
||||
if (((INT32) n->GetPosition().Z) < 8)
|
||||
if (((INT32) n->GetPosition().z) < 8)
|
||||
continue;
|
||||
n->Draw();
|
||||
}
|
||||
|
||||
@ -31,8 +31,8 @@ namespace ia::iae
|
||||
{
|
||||
}
|
||||
|
||||
VOID Texture::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN BOOL flipH,
|
||||
IN BOOL flipV, IN CONST iam::Vec4f &colorOverlay) CONST
|
||||
VOID Texture::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN BOOL flipH,
|
||||
IN BOOL flipV, IN CONST glm::vec4 &colorOverlay) CONST
|
||||
{
|
||||
Renderer::BindTexture(m_handle, flipV, flipH, colorOverlay);
|
||||
QuadMesh::Draw(position, m_size * scale, rotation);
|
||||
|
||||
@ -22,7 +22,13 @@
|
||||
#include <IACore/String.hpp>
|
||||
#include <IACore/Exception.hpp>
|
||||
|
||||
#include <IAMath/Vec.hpp>
|
||||
#include <glm/vec2.hpp>
|
||||
#include <glm/vec3.hpp>
|
||||
#include <glm/vec4.hpp>
|
||||
#include <glm/mat4x4.hpp>
|
||||
#include <glm/ext/matrix_transform.hpp> // glm::translate, glm::rotate, glm::scale
|
||||
#include <glm/ext/matrix_clip_space.hpp> // glm::perspective
|
||||
#include <glm/ext/scalar_constants.hpp> // glm::pi
|
||||
|
||||
#define IAE_LOG_TAG "IAE"
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ namespace ia::iae
|
||||
public:
|
||||
struct TileGrid
|
||||
{
|
||||
iam::Vec3f Position{};
|
||||
glm::vec3 Position{};
|
||||
|
||||
INT32 TileWidth{};
|
||||
INT32 TileHeight{};
|
||||
|
||||
@ -27,10 +27,10 @@ namespace ia::iae
|
||||
struct AnimationKeyFrame
|
||||
{
|
||||
INT32 Duration{100};
|
||||
iam::Vec3f Position{};
|
||||
iam::Vec3f Rotation{};
|
||||
iam::Vec3f Scale{1.0f, 1.0f, 1.0f};
|
||||
iam::Vec4f ColorOverlay{1.0f, 1.0f, 1.0f, 1.0f};
|
||||
glm::vec3 Position{};
|
||||
glm::vec3 Rotation{};
|
||||
glm::vec3 Scale{1.0f, 1.0f, 1.0f};
|
||||
glm::vec4 ColorOverlay{1.0f, 1.0f, 1.0f, 1.0f};
|
||||
BOOL ShouldInterpolate{};
|
||||
RefPtr<Texture> Texture;
|
||||
};
|
||||
|
||||
@ -31,7 +31,7 @@ namespace ia::iae
|
||||
return m_texture;
|
||||
}
|
||||
|
||||
iam::Vec3f &Position()
|
||||
glm::vec3 &Position()
|
||||
{
|
||||
return m_position;
|
||||
}
|
||||
@ -41,7 +41,7 @@ namespace ia::iae
|
||||
VOID Update();
|
||||
|
||||
private:
|
||||
iam::Vec3f m_position;
|
||||
glm::vec3 m_position;
|
||||
RefPtr<iae::Texture> m_texture;
|
||||
};
|
||||
} // namespace ia::iae
|
||||
@ -285,8 +285,8 @@ namespace ia::iae
|
||||
return s_prevKeys[key] && !s_keys[key];
|
||||
}
|
||||
|
||||
STATIC iam::Vec2f GetDirectionalInput();
|
||||
STATIC iam::Vec2f GetDirectionalInput(OUT DirectionalInput& direction);
|
||||
STATIC glm::vec2 GetDirectionalInput();
|
||||
STATIC glm::vec2 GetDirectionalInput(OUT DirectionalInput& direction);
|
||||
|
||||
private:
|
||||
STATIC BOOL s_keys[256];
|
||||
|
||||
@ -24,51 +24,51 @@ namespace ia::iae
|
||||
class Transform
|
||||
{
|
||||
public:
|
||||
VOID SetLocalPosition(IN CONST iam::Vec3f &v)
|
||||
VOID SetLocalPosition(IN CONST glm::vec3 &v)
|
||||
{
|
||||
m_local.Position = v;
|
||||
RecalculatePosition();
|
||||
}
|
||||
|
||||
VOID SetLocalScale(IN CONST iam::Vec3f &v)
|
||||
VOID SetLocalScale(IN CONST glm::vec3 &v)
|
||||
{
|
||||
m_local.Scale = v;
|
||||
RecalculateScale();
|
||||
}
|
||||
|
||||
VOID SetLocalRotation(IN CONST iam::Vec3f &v)
|
||||
VOID SetLocalRotation(IN CONST glm::vec3 &v)
|
||||
{
|
||||
m_local.Rotation = v;
|
||||
RecalculateRotation();
|
||||
}
|
||||
|
||||
public:
|
||||
CONST iam::Vec3f &GetPosition() CONST
|
||||
CONST glm::vec3 &GetPosition() CONST
|
||||
{
|
||||
return m_global.Position;
|
||||
}
|
||||
|
||||
CONST iam::Vec3f &GetScale() CONST
|
||||
CONST glm::vec3 &GetScale() CONST
|
||||
{
|
||||
return m_global.Scale;
|
||||
}
|
||||
|
||||
CONST iam::Vec3f &GetRotation() CONST
|
||||
CONST glm::vec3 &GetRotation() CONST
|
||||
{
|
||||
return m_global.Rotation;
|
||||
}
|
||||
|
||||
CONST iam::Vec3f &GetLocalPosition() CONST
|
||||
CONST glm::vec3 &GetLocalPosition() CONST
|
||||
{
|
||||
return m_local.Position;
|
||||
}
|
||||
|
||||
CONST iam::Vec3f &GetLocalScale() CONST
|
||||
CONST glm::vec3 &GetLocalScale() CONST
|
||||
{
|
||||
return m_local.Scale;
|
||||
}
|
||||
|
||||
CONST iam::Vec3f &GetLocalRotation() CONST
|
||||
CONST glm::vec3 &GetLocalRotation() CONST
|
||||
{
|
||||
return m_local.Rotation;
|
||||
}
|
||||
@ -80,21 +80,21 @@ namespace ia::iae
|
||||
protected:
|
||||
VOID RecalculatePosition()
|
||||
{
|
||||
m_global.Position = (m_parent ? m_parent->GetPosition() : iam::Vec3f{}) + m_local.Position;
|
||||
m_global.Position = (m_parent ? m_parent->GetPosition() : glm::vec3{}) + m_local.Position;
|
||||
for (auto &c : m_children)
|
||||
c->RecalculatePosition();
|
||||
}
|
||||
|
||||
VOID RecalculateRotation()
|
||||
{
|
||||
m_global.Rotation = (m_parent ? m_parent->GetRotation() : iam::Vec3f{}) + m_local.Rotation;
|
||||
m_global.Rotation = (m_parent ? m_parent->GetRotation() : glm::vec3{}) + m_local.Rotation;
|
||||
for (auto &c : m_children)
|
||||
c->RecalculateRotation();
|
||||
}
|
||||
|
||||
VOID RecalculateScale()
|
||||
{
|
||||
m_global.Scale = (m_parent ? m_parent->GetScale() : iam::Vec3f{}) + m_local.Scale;
|
||||
m_global.Scale = (m_parent ? m_parent->GetScale() : glm::vec3{}) + m_local.Scale;
|
||||
for (auto &c : m_children)
|
||||
c->RecalculateScale();
|
||||
}
|
||||
@ -102,9 +102,9 @@ namespace ia::iae
|
||||
private:
|
||||
struct
|
||||
{
|
||||
iam::Vec3f Position{0.0f, 0.0f, 0.0f};
|
||||
iam::Vec3f Rotation{0.0f, 0.0f, 0.0f};
|
||||
iam::Vec3f Scale{1.0f, 1.0f, 1.0f};
|
||||
glm::vec3 Position{0.0f, 0.0f, 0.0f};
|
||||
glm::vec3 Rotation{0.0f, 0.0f, 0.0f};
|
||||
glm::vec3 Scale{1.0f, 1.0f, 1.0f};
|
||||
} m_local{}, m_global{};
|
||||
};
|
||||
} // namespace ia::iae
|
||||
@ -28,10 +28,10 @@ namespace ia::iae
|
||||
|
||||
STATIC VOID Update();
|
||||
|
||||
STATIC Handle CreateStaticBody(IN iam::Vec3f position);
|
||||
STATIC Handle CreateDynamicBody(IN iam::Vec3f position);
|
||||
STATIC VOID AddBoxCollider(IN Handle body, IN iam::Vec3f size);
|
||||
STATIC Handle CreateStaticBody(IN glm::vec3 position);
|
||||
STATIC Handle CreateDynamicBody(IN glm::vec3 position);
|
||||
STATIC VOID AddBoxCollider(IN Handle body, IN glm::vec3 size);
|
||||
|
||||
STATIC iam::Vec3f GetBodyPosition(IN Handle body);
|
||||
STATIC glm::vec3 GetBodyPosition(IN Handle body);
|
||||
};
|
||||
}
|
||||
@ -26,6 +26,6 @@ namespace ia::iae
|
||||
STATIC VOID Initialize();
|
||||
STATIC VOID Terminate();
|
||||
|
||||
STATIC VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation);
|
||||
STATIC VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation);
|
||||
};
|
||||
} // namespace ia::iae
|
||||
@ -27,8 +27,8 @@ namespace ia::iae
|
||||
struct DebugUIWindow
|
||||
{
|
||||
PCCHAR Title{""};
|
||||
iam::Vec2f Position{};
|
||||
iam::Vec2f Size{};
|
||||
glm::vec2 Position{};
|
||||
glm::vec2 Size{};
|
||||
std::function<VOID()> ContentDrawCallback{};
|
||||
};
|
||||
|
||||
@ -37,17 +37,17 @@ namespace ia::iae
|
||||
STATIC VOID Terminate();
|
||||
|
||||
public:
|
||||
STATIC VOID AddDebugUIWindow(IN PCCHAR title, IN CONST iam::Vec2f &position, IN CONST iam::Vec2f &size,
|
||||
STATIC VOID AddDebugUIWindow(IN PCCHAR title, IN CONST glm::vec2 &position, IN CONST glm::vec2 &size,
|
||||
IN std::function<VOID()> contentDrawCallback);
|
||||
|
||||
public:
|
||||
STATIC VOID BeginFrame();
|
||||
STATIC VOID EndFrame();
|
||||
|
||||
STATIC VOID BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST iam::Vec4f& colorOverlay);
|
||||
STATIC VOID BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST glm::vec4& colorOverlay);
|
||||
|
||||
STATIC VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount);
|
||||
STATIC VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount);
|
||||
STATIC VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount);
|
||||
STATIC VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount);
|
||||
|
||||
public:
|
||||
STATIC INT32 Width()
|
||||
|
||||
@ -22,8 +22,8 @@ namespace ia::iae
|
||||
{
|
||||
struct Vertex_Mesh
|
||||
{
|
||||
iam::Vec3f Position{};
|
||||
iam::Vec2f UV{};
|
||||
glm::vec3 Position{};
|
||||
glm::vec2 UV{};
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -27,22 +27,22 @@ namespace ia::iae
|
||||
~Texture();
|
||||
|
||||
public:
|
||||
VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN BOOL flipH,
|
||||
IN BOOL flipV, IN CONST iam::Vec4f &colorOverlay) CONST;
|
||||
VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN BOOL flipH,
|
||||
IN BOOL flipV, IN CONST glm::vec4 &colorOverlay) CONST;
|
||||
|
||||
public:
|
||||
INT32 GetWidth() CONST
|
||||
{
|
||||
return (INT32)m_size.X;
|
||||
return (INT32)m_size.x;
|
||||
}
|
||||
|
||||
INT32 GetHeight() CONST
|
||||
{
|
||||
return (INT32)m_size.Y;
|
||||
return (INT32)m_size.y;
|
||||
}
|
||||
|
||||
private:
|
||||
CONST Handle m_handle{};
|
||||
CONST iam::Vec3f m_size;
|
||||
CONST glm::vec3 m_size;
|
||||
};
|
||||
} // namespace ia::iae
|
||||
4
Vendor/CMakeLists.txt
vendored
4
Vendor/CMakeLists.txt
vendored
@ -37,3 +37,7 @@ target_include_directories(
|
||||
"imgui/backends"
|
||||
)
|
||||
|
||||
# -----------------------------------------------
|
||||
# GLM
|
||||
# -----------------------------------------------
|
||||
add_subdirectory(glm/)
|
||||
|
||||
1
Vendor/glm
vendored
Submodule
1
Vendor/glm
vendored
Submodule
Submodule Vendor/glm added at 2d4c4b4dd3
Reference in New Issue
Block a user