mirror of
https://github.com/antopilo/Nuake.git
synced 2026-09-21 20:08:40 +03:00
Better maths
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user