From 928c6be1fe2ed14e8deea40067a5d7f7d1fc0d9c Mon Sep 17 00:00:00 2001 From: ViktorLjung Date: Mon, 10 Mar 2014 00:48:48 +0100 Subject: [PATCH] =?UTF-8?q?R=C3=B6r=20p=C3=A5=20kameran!!!=20:D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Escape-the-Dawn/Camera.h | 10 ++++++++++ Escape-the-Dawn/Components/Camera.h | 6 +++--- Escape-the-Dawn/GameWorld.h | 21 ++++++++++++++++++--- Escape-the-Dawn/Renderer.cpp | 1 + Escape-the-Dawn/Systems/RenderSystem.cpp | 4 ++++ 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Escape-the-Dawn/Camera.h b/Escape-the-Dawn/Camera.h index caf217c..baea8a5 100644 --- a/Escape-the-Dawn/Camera.h +++ b/Escape-the-Dawn/Camera.h @@ -37,6 +37,15 @@ public: glm::mat4 ViewMatrix() const { return m_ViewMatrix; } void ViewMatrix(glm::mat4 val) { m_ViewMatrix = val; } + + float FOV() const { return m_FOV; } + void FOV(float val) { m_FOV = val; } + + float NearClip() const { return m_NearClip; } + void NearClip(float val) { m_NearClip = val; } + + float FarClip() const { return m_FarClip; } + void FarClip(float val) { m_FarClip = val; } private: void UpdateProjectionMatrix(); @@ -46,6 +55,7 @@ private: float m_AspectRatio; float m_NearClip; float m_FarClip; + glm::vec3 m_Position; glm::quat m_Orientation; diff --git a/Escape-the-Dawn/Components/Camera.h b/Escape-the-Dawn/Components/Camera.h index c836df4..62d6905 100644 --- a/Escape-the-Dawn/Components/Camera.h +++ b/Escape-the-Dawn/Components/Camera.h @@ -8,9 +8,9 @@ namespace Components struct Camera : Component { - int FOV; - int NearClip; - int FarClip; + float FOV; + float NearClip; + float FarClip; }; } diff --git a/Escape-the-Dawn/GameWorld.h b/Escape-the-Dawn/GameWorld.h index 43d871b..8c10dcb 100644 --- a/Escape-the-Dawn/GameWorld.h +++ b/Escape-the-Dawn/GameWorld.h @@ -60,11 +60,26 @@ void GameWorld::Initialize() //AddSystem("SoundSystem"); AddSystem("RenderSystem"); - EntityID ent = CreateEntity(); - auto transform = AddComponent(ent, "Transform"); + std::shared_ptr transform; + std::shared_ptr model; + std::shared_ptr camera; + EntityID ent; + + ent = CreateEntity(); + transform = AddComponent(ent, "Transform"); transform->Position = glm::vec3(0.f, 0.f, 0.f); - auto model = AddComponent(ent, "Model"); + model = AddComponent(ent, "Model"); model->ModelFile = "ship.obj"; + + ent = CreateEntity(); + SetProperty(ent, "Name", "Camera"); + transform = AddComponent(ent, "Transform"); + transform->Position = glm::vec3(0.f, 0.f, 10.f); + camera = AddComponent(ent, "Camera"); + camera->FOV = 45.f; + camera->FarClip = 1000.f; + camera->NearClip = 0.01f; + } void GameWorld::RegisterSystems() diff --git a/Escape-the-Dawn/Renderer.cpp b/Escape-the-Dawn/Renderer.cpp index 4ed238f..c7cdbf0 100644 --- a/Escape-the-Dawn/Renderer.cpp +++ b/Escape-the-Dawn/Renderer.cpp @@ -42,6 +42,7 @@ void Renderer::Initialize() glEnable(GL_DEPTH_TEST); // Create Camera + m_Camera = std::make_shared(45.f, (float)WIDTH / HEIGHT, 0.01f, 1000.f); m_Camera->Position(glm::vec3(0.0f, 0.0f, 2.f)); diff --git a/Escape-the-Dawn/Systems/RenderSystem.cpp b/Escape-the-Dawn/Systems/RenderSystem.cpp index 7c1b2b9..1db226c 100644 --- a/Escape-the-Dawn/Systems/RenderSystem.cpp +++ b/Escape-the-Dawn/Systems/RenderSystem.cpp @@ -30,6 +30,10 @@ void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID p { m_Renderer->GetCamera()->Position(transformComponent->Position); m_Renderer->GetCamera()->Orientation(transformComponent->Orientation); + + m_Renderer->GetCamera()->FOV(cameraComponent->FOV); + m_Renderer->GetCamera()->NearClip(cameraComponent->NearClip); + m_Renderer->GetCamera()->FarClip(cameraComponent->FarClip); }