Better maths

This commit is contained in:
Antoine Pilote
2023-07-10 17:36:17 -04:00
parent ea3c7def51
commit 07002f0d4a
5 changed files with 39 additions and 34 deletions

View File

@@ -36,7 +36,7 @@ GizmoDrawer::GizmoDrawer()
_gizmos = std::map<std::string, Ref<Model>>();
_gizmos["cam"] = loader.LoadModel("resources/Models/Camera.gltf");
_gizmos["light"] = loader.LoadModel("resources/Models/Light.gltf");
_gizmos["player"] = loader.LoadModel("resources/Models/Player.gltf");
_gizmos["player"] = loader.LoadModel("resources/Models/Camera.gltf");
}
void GizmoDrawer::GenerateSphereGizmo()

View File

@@ -4,10 +4,10 @@ using namespace Nuake;
Quat Nuake::QuatFromEuler(float x, float y, float z)
{
return Quat(Vector3(Rad(z), Rad(y), Rad(x)));
return Quat(Vector3(Rad(x), Rad(y), Rad(z)));
}
Vector3 Nuake::QuatToDirection(const Quat& quat)
{
return glm::rotate(glm::inverse(quat), glm::vec3(1.0, 0.0, 0.0));
return quat * Vector3(0, 0, -1);
}

View File

@@ -445,29 +445,24 @@ namespace Nuake
SyncCharactersTransforms();
}
void DynamicWorld::Clear()
{
_stepCount = 0;
if (_registeredBodies.empty())
if (!_registeredBodies.empty())
{
return;
_JoltBodyInterface->RemoveBodies(reinterpret_cast<JPH::BodyID*>(_registeredBodies.data()), _registeredBodies.size());
_registeredBodies.clear();
}
_JoltBodyInterface->RemoveBodies(reinterpret_cast<JPH::BodyID*>(_registeredBodies.data()), _registeredBodies.size());
_registeredBodies.clear();
if (_registeredCharacters.empty())
if (!_registeredCharacters.empty())
{
return;
for (auto& character : _registeredCharacters)
{
character.second->RemoveFromPhysicsSystem();
}
_registeredCharacters.clear();
}
for (auto& character : _registeredCharacters)
{
character.second->RemoveFromPhysicsSystem();
}
_registeredCharacters.clear();
}
void DynamicWorld::MoveAndSlideCharacterController(const Entity& entity, const Vector3 velocity)

View File

@@ -142,6 +142,13 @@ namespace Nuake {
{
auto [transform, camera, parent] = view.get<TransformComponent, CameraComponent, ParentComponent>(e);
cam = camera.CameraInstance;
cam->Translation = transform.GetGlobalPosition();
//const Vector3& forward = QuatToDirection(transform.GetGlobalRotation());
//cam->SetDirection(forward);
//camTransform = transform.GetGlobalTransform();
break;
}
}
@@ -151,6 +158,10 @@ namespace Nuake {
return;
}
float x = cam->GetDirection().x;
float y = cam->GetDirection().y;
float z = cam->GetDirection().z;
Logger::Log("DIRECTION: (" + std::to_string(x) + ", " + std::to_string(y) + ", " + std::to_string(z) + ")");
mSceneRenderer->BeginRenderScene(cam->GetPerspective(), cam->GetTransform(), cam->Translation);
mSceneRenderer->RenderScene(*this, framebuffer);
}
@@ -237,7 +248,7 @@ namespace Nuake {
Ref<Camera> Scene::GetCurrentCamera()
{
if (Engine::IsPlayMode)
if (Engine::IsPlayMode())
{
Ref<Camera> cam = nullptr;
{

View File

@@ -2,10 +2,9 @@
#include "src/Core/Maths.h"
#include "src/Scene/Scene.h"
#include "src/Scene/Components/TransformComponent.h"
#include "src/Scene/Components/CameraComponent.h"
#include "src/Scene/Components/ParentComponent.h"
#include <src/Scene/Components/TransformComponent.h>
#include <src/Scene/Components/CameraComponent.h>
#include <src/Scene/Components/ParentComponent.h>
namespace Nuake
{
@@ -37,18 +36,6 @@ namespace Nuake
void TransformSystem::UpdateTransform()
{
auto camView = m_Scene->m_Registry.view<TransformComponent, CameraComponent>();
for (auto e : camView)
{
auto [transform, camera] = camView.get<TransformComponent, CameraComponent>(e);
Matrix4 cameraTransform = camera.CameraInstance->GetTransformRotation();
camera.CameraInstance->Translation = transform.GlobalTranslation;
// We need to invert forward direction since its -1.0f in nuake.
camera.CameraInstance->SetDirection(QuatToDirection(transform.GetGlobalRotation()));
}
// Calculate all local transforms
auto localTransformView = m_Scene->m_Registry.view<TransformComponent>();
for (auto tv : localTransformView)
@@ -114,5 +101,17 @@ namespace Nuake
transform.SetGlobalScale(globalScale);
transform.SetGlobalTransform(globalTransform);
}
auto camView = m_Scene->m_Registry.view<TransformComponent, CameraComponent>();
for (auto& e : camView)
{
auto [transform, camera] = camView.get<TransformComponent, CameraComponent>(e);
Matrix4 cameraTransform = camera.CameraInstance->GetTransformRotation();
camera.CameraInstance->Translation = transform.GlobalTranslation;
const auto& globalRotation = transform.GetGlobalRotation();
const auto& forward = QuatToDirection(globalRotation);
camera.CameraInstance->SetDirection(forward);
}
}
}