diff --git a/Editor/src/Misc/GizmoDrawer.cpp b/Editor/src/Misc/GizmoDrawer.cpp index a33cbcc9..3a9524ee 100644 --- a/Editor/src/Misc/GizmoDrawer.cpp +++ b/Editor/src/Misc/GizmoDrawer.cpp @@ -36,7 +36,7 @@ GizmoDrawer::GizmoDrawer() _gizmos = std::map>(); _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() diff --git a/Nuake/src/Core/Maths.cpp b/Nuake/src/Core/Maths.cpp index e0889bce..d8e19a87 100644 --- a/Nuake/src/Core/Maths.cpp +++ b/Nuake/src/Core/Maths.cpp @@ -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); } \ No newline at end of file diff --git a/Nuake/src/Core/Physics/DynamicWorld.cpp b/Nuake/src/Core/Physics/DynamicWorld.cpp index e6804e18..a5b18354 100644 --- a/Nuake/src/Core/Physics/DynamicWorld.cpp +++ b/Nuake/src/Core/Physics/DynamicWorld.cpp @@ -445,29 +445,24 @@ namespace Nuake SyncCharactersTransforms(); } - void DynamicWorld::Clear() { _stepCount = 0; - if (_registeredBodies.empty()) + if (!_registeredBodies.empty()) { - return; + _JoltBodyInterface->RemoveBodies(reinterpret_cast(_registeredBodies.data()), _registeredBodies.size()); + _registeredBodies.clear(); } - _JoltBodyInterface->RemoveBodies(reinterpret_cast(_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) diff --git a/Nuake/src/Scene/Scene.cpp b/Nuake/src/Scene/Scene.cpp index 3f0bc5d6..83105bbb 100644 --- a/Nuake/src/Scene/Scene.cpp +++ b/Nuake/src/Scene/Scene.cpp @@ -142,6 +142,13 @@ namespace Nuake { { auto [transform, camera, parent] = view.get(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 Scene::GetCurrentCamera() { - if (Engine::IsPlayMode) + if (Engine::IsPlayMode()) { Ref cam = nullptr; { diff --git a/Nuake/src/Scene/Systems/TransformSystem.cpp b/Nuake/src/Scene/Systems/TransformSystem.cpp index 3747f533..6ddb3740 100644 --- a/Nuake/src/Scene/Systems/TransformSystem.cpp +++ b/Nuake/src/Scene/Systems/TransformSystem.cpp @@ -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 +#include +#include namespace Nuake { @@ -37,18 +36,6 @@ namespace Nuake void TransformSystem::UpdateTransform() { - auto camView = m_Scene->m_Registry.view(); - for (auto e : camView) - { - auto [transform, camera] = camView.get(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(); for (auto tv : localTransformView) @@ -114,5 +101,17 @@ namespace Nuake transform.SetGlobalScale(globalScale); transform.SetGlobalTransform(globalTransform); } + + auto camView = m_Scene->m_Registry.view(); + for (auto& e : camView) + { + auto [transform, camera] = camView.get(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); + } } }