Merge branch 'master' of github.com:sippeangelo/Escape-the-Dawn
This commit is contained in:
@@ -70,11 +70,25 @@ void GameWorld::Initialize()
|
|||||||
model = AddComponent<Components::Model>(ent, "Model");
|
model = AddComponent<Components::Model>(ent, "Model");
|
||||||
model->ModelFile = "Models/plane.obj";
|
model->ModelFile = "Models/plane.obj";
|
||||||
|
|
||||||
|
// Camera
|
||||||
|
entcamera = CreateEntity();
|
||||||
|
SetProperty(entcamera, "Name", std::string("Camera"));
|
||||||
|
transform = AddComponent<Components::Transform>(entcamera, "Transform");
|
||||||
|
AddComponent<Components::Input>(entcamera, "Input");
|
||||||
|
transform->Position = glm::vec3(0.f, 10.f, 14.f);
|
||||||
|
camera = AddComponent<Components::Camera>(entcamera, "Camera");
|
||||||
|
camera->FOV = 45.f;
|
||||||
|
camera->FarClip = 1000.f;
|
||||||
|
camera->NearClip = 0.01f;
|
||||||
|
transform->Orientation = glm::angleAxis<float>(glm::radians(15.0f),glm::vec3(1,0,0));
|
||||||
|
|
||||||
// Player
|
// Player
|
||||||
m_Player = CreateEntity();
|
m_Player = CreateEntity();
|
||||||
SetProperty(m_Player, "Name", std::string("PlayerShip"));
|
SetProperty(m_Player, "Name", std::string("Player"));
|
||||||
|
SetProperty(m_Player, "Camera", entcamera);
|
||||||
transform = AddComponent<Components::Transform>(m_Player, "Transform");
|
transform = AddComponent<Components::Transform>(m_Player, "Transform");
|
||||||
transform->Position = glm::vec3(0.f, 2.f, -5.f);
|
transform->Position = glm::vec3(0.f, 2.f, -5.f);
|
||||||
|
transform->Velocity = glm::vec3(10.f, 0.f, 100.f);
|
||||||
transform->Scale = glm::vec3(1.0f);
|
transform->Scale = glm::vec3(1.0f);
|
||||||
model = AddComponent<Components::Model>(m_Player, "Model");
|
model = AddComponent<Components::Model>(m_Player, "Model");
|
||||||
model->ModelFile = "Models/ship.obj";
|
model->ModelFile = "Models/ship.obj";
|
||||||
@@ -102,17 +116,7 @@ void GameWorld::Initialize()
|
|||||||
GetSystem<Systems::SoundSystem>("SoundSystem")->PlaySound(soundEmitter);
|
GetSystem<Systems::SoundSystem>("SoundSystem")->PlaySound(soundEmitter);
|
||||||
|
|
||||||
|
|
||||||
// Camera
|
|
||||||
entcamera = CreateEntity(m_Player);
|
|
||||||
SetProperty(entcamera, "Name", std::string("Camera"));
|
|
||||||
transform = AddComponent<Components::Transform>(entcamera, "Transform");
|
|
||||||
AddComponent<Components::Input>(entcamera, "Input");
|
|
||||||
transform->Position = glm::vec3(0.f, 10.f, 14.f);
|
|
||||||
camera = AddComponent<Components::Camera>(entcamera, "Camera");
|
|
||||||
camera->FOV = 45.f;
|
|
||||||
camera->FarClip = 1000.f;
|
|
||||||
camera->NearClip = 0.01f;
|
|
||||||
transform->Orientation = glm::angleAxis<float>(glm::radians(15.0f),glm::vec3(1,0,0));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.6 KiB |
@@ -64,13 +64,7 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
|
|||||||
float scale = (float)(rand() % 1000) / 100;
|
float scale = (float)(rand() % 1000) / 100;
|
||||||
bounds->VolumeVector = glm::vec3(4, 4, 4);
|
bounds->VolumeVector = glm::vec3(4, 4, 4);
|
||||||
bounds->Origin = glm::vec3(0,4,0);
|
bounds->Origin = glm::vec3(0,4,0);
|
||||||
pointLight = m_World->AddComponent<Components::PointLight>(ent, "PointLight");
|
|
||||||
pointLight->Specular = glm::vec3(1.0, 1.0, 1.0);
|
|
||||||
pointLight->Diffuse = glm::vec3(0.3, 1.0, 0.3);
|
|
||||||
pointLight->constantAttenuation = 0.f;
|
|
||||||
pointLight->linearAttenuation = 1.f;
|
|
||||||
pointLight->quadraticAttenuation = 0.f;
|
|
||||||
pointLight->spotExponent = 0.0f;
|
|
||||||
|
|
||||||
powerUp = m_World->AddComponent<Components::PowerUp>(ent, "PowerUp");
|
powerUp = m_World->AddComponent<Components::PowerUp>(ent, "PowerUp");
|
||||||
powerUp->Speed = 10.f;
|
powerUp->Speed = 10.f;
|
||||||
@@ -80,7 +74,7 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
|
|||||||
|
|
||||||
|
|
||||||
// Put it below ground level
|
// Put it below ground level
|
||||||
transform->Position.y -= bounds->VolumeVector.y * 2.f;
|
//transform->Position.y -= bounds->VolumeVector.y * 2.f;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +94,7 @@ void Systems::LevelGenerationSystem::Update( double dt )
|
|||||||
{
|
{
|
||||||
auto transform = m_World->GetComponent<Components::Transform>(ent, "Transform");
|
auto transform = m_World->GetComponent<Components::Transform>(ent, "Transform");
|
||||||
|
|
||||||
transform->Velocity.z = -velocity;
|
transform->Velocity.z = velocity;
|
||||||
transform->Position += transform->Velocity * (float)dt;
|
transform->Position += transform->Velocity * (float)dt;
|
||||||
|
|
||||||
// Stop raising obstacles when they reach ground level
|
// Stop raising obstacles when they reach ground level
|
||||||
@@ -126,7 +120,7 @@ void Systems::LevelGenerationSystem::Update( double dt )
|
|||||||
|
|
||||||
void Systems::LevelGenerationSystem::UpdateEntity( double dt, EntityID entity, EntityID parent )
|
void Systems::LevelGenerationSystem::UpdateEntity( double dt, EntityID entity, EntityID parent )
|
||||||
{
|
{
|
||||||
if( m_World->GetProperty<std::string>(entity, "Name") == "PlayerShip")
|
if( m_World->GetProperty<std::string>(entity, "Name") == "Player")
|
||||||
{
|
{
|
||||||
auto transformComponent = m_World->GetComponent<Components::Transform>(entity, "Transform");
|
auto transformComponent = m_World->GetComponent<Components::Transform>(entity, "Transform");
|
||||||
startyz = glm::vec2(0, transformComponent->Position.z - 1000);
|
startyz = glm::vec2(0, transformComponent->Position.z - 1000);
|
||||||
|
|||||||
@@ -5,6 +5,12 @@ Systems::PlayerSystem::PlayerSystem( World* world ) : System(world)
|
|||||||
{
|
{
|
||||||
m_PlayerSpeed = 20;
|
m_PlayerSpeed = 20;
|
||||||
m_PlayerOriginalBounds = glm::vec3(0);
|
m_PlayerOriginalBounds = glm::vec3(0);
|
||||||
|
|
||||||
|
m_CameraOffset = glm::vec3(0.f, 5.f, 14.f);
|
||||||
|
m_CameraOrientation = glm::angleAxis<float>(glm::radians(15.0f),glm::vec3(1,0,0));
|
||||||
|
|
||||||
|
freecamEnabled = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Systems::PlayerSystem::Update(double dt)
|
void Systems::PlayerSystem::Update(double dt)
|
||||||
@@ -21,35 +27,36 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
auto name = m_World->GetProperty<std::string>(entity, "Name");
|
auto name = m_World->GetProperty<std::string>(entity, "Name");
|
||||||
if (name == "Camera") {
|
if (name == "Camera" && freecamEnabled) {
|
||||||
glm::vec3 Camera_Right = glm::vec3(glm::vec4(1, 0, 0, 0) * transform->Orientation);
|
glm::vec3 Camera_Right = glm::vec3(glm::vec4(1, 0, 0, 0) * transform->Orientation);
|
||||||
glm::vec3 Camera_Forward = glm::vec3(glm::vec4(0, 0, 1, 0) * transform->Orientation);
|
glm::vec3 Camera_Forward = glm::vec3(glm::vec4(0, 0, 1, 0) * transform->Orientation);
|
||||||
|
|
||||||
|
float speed = m_PlayerSpeed;
|
||||||
|
if(input->KeyState[GLFW_KEY_LEFT_SHIFT]) {
|
||||||
|
speed *= 4.0f;
|
||||||
|
}
|
||||||
|
if(input->KeyState[GLFW_KEY_LEFT_ALT]) {
|
||||||
|
speed /= 4.0f;
|
||||||
|
}
|
||||||
|
if(input->KeyState[GLFW_KEY_A]) {
|
||||||
|
transform->Position -= Camera_Right * (float)dt * speed;
|
||||||
|
}
|
||||||
|
else if(input->KeyState[GLFW_KEY_D]) {
|
||||||
|
transform->Position += Camera_Right * (float)dt * speed;
|
||||||
|
}
|
||||||
|
if(input->KeyState[GLFW_KEY_W]) {
|
||||||
|
transform->Position -= Camera_Forward * (float)dt * speed;
|
||||||
|
}
|
||||||
|
if(input->KeyState[GLFW_KEY_S]) {
|
||||||
|
transform->Position += Camera_Forward * (float)dt * speed;
|
||||||
|
}
|
||||||
|
if(input->KeyState[GLFW_KEY_SPACE]) {
|
||||||
|
transform->Position += glm::vec3(0, 1, 0) * (float)dt * speed;
|
||||||
|
}
|
||||||
|
if(input->KeyState[GLFW_KEY_LEFT_CONTROL]) {
|
||||||
|
transform->Position -= glm::vec3(0, 1, 0) * (float)dt * speed;
|
||||||
|
}
|
||||||
|
|
||||||
float speed = m_PlayerSpeed;
|
|
||||||
if(input->KeyState[GLFW_KEY_LEFT_SHIFT]) {
|
|
||||||
speed *= 4.0f;
|
|
||||||
}
|
|
||||||
if(input->KeyState[GLFW_KEY_LEFT_ALT]) {
|
|
||||||
speed /= 4.0f;
|
|
||||||
}
|
|
||||||
if(input->KeyState[GLFW_KEY_A] || input->KeyState[GLFW_KEY_LEFT]) {
|
|
||||||
transform->Position -= Camera_Right * (float)dt * speed;
|
|
||||||
}
|
|
||||||
else if(input->KeyState[GLFW_KEY_D] || input->KeyState[GLFW_KEY_RIGHT]) {
|
|
||||||
transform->Position += Camera_Right * (float)dt * speed;
|
|
||||||
}
|
|
||||||
if(input->KeyState[GLFW_KEY_W]) {
|
|
||||||
transform->Position -= Camera_Forward * (float)dt * speed;
|
|
||||||
}
|
|
||||||
if(input->KeyState[GLFW_KEY_S]) {
|
|
||||||
transform->Position += Camera_Forward * (float)dt * speed;
|
|
||||||
}
|
|
||||||
if(input->KeyState[GLFW_KEY_SPACE]) {
|
|
||||||
transform->Position += glm::vec3(0, 1, 0) * (float)dt * speed;
|
|
||||||
}
|
|
||||||
if(input->KeyState[GLFW_KEY_LEFT_CONTROL]) {
|
|
||||||
transform->Position -= glm::vec3(0, 1, 0) * (float)dt * speed;
|
|
||||||
}
|
|
||||||
if (input->MouseState[GLFW_MOUSE_BUTTON_LEFT]) {
|
if (input->MouseState[GLFW_MOUSE_BUTTON_LEFT]) {
|
||||||
// TOUCHING THIS CODE MIGHT COUSE THE UNIVERSE TO IMPLODE, ALSO DRAGONS
|
// TOUCHING THIS CODE MIGHT COUSE THE UNIVERSE TO IMPLODE, ALSO DRAGONS
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
@@ -61,7 +68,7 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name == "PlayerShip")
|
if (name == "Player")
|
||||||
{
|
{
|
||||||
auto bounds = m_World->GetComponent<Components::Bounds>(entity, "Bounds");
|
auto bounds = m_World->GetComponent<Components::Bounds>(entity, "Bounds");
|
||||||
if (bounds && m_PlayerOriginalBounds == glm::vec3(0)) {
|
if (bounds && m_PlayerOriginalBounds == glm::vec3(0)) {
|
||||||
@@ -121,6 +128,26 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa
|
|||||||
Euler = glm::eulerAngles(transform->Orientation);
|
Euler = glm::eulerAngles(transform->Orientation);
|
||||||
bounds->VolumeVector.x = m_PlayerOriginalBounds.x * glm::cos(glm::radians(Euler.z));
|
bounds->VolumeVector.x = m_PlayerOriginalBounds.x * glm::cos(glm::radians(Euler.z));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(input->KeyState[GLFW_KEY_F4] && !input->LastKeyState[GLFW_KEY_F4]) {
|
||||||
|
if(freecamEnabled)
|
||||||
|
freecamEnabled = false;
|
||||||
|
else
|
||||||
|
freecamEnabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Update camera
|
||||||
|
if(! freecamEnabled)
|
||||||
|
{
|
||||||
|
auto cameraEntity = m_World->GetProperty<EntityID>(entity, "Camera");
|
||||||
|
auto cameraTransform = m_World->GetComponent<Components::Transform>(cameraEntity, "Transform");
|
||||||
|
if (cameraTransform) {
|
||||||
|
cameraTransform->Position = transform->Position + m_CameraOffset;
|
||||||
|
cameraTransform->Orientation = m_CameraOrientation;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "Components/Transform.h"
|
#include "Components/Transform.h"
|
||||||
#include "Components/Input.h"
|
#include "Components/Input.h"
|
||||||
#include "Components/Collision.h"
|
#include "Components/Collision.h"
|
||||||
|
#include "Components/Camera.h"
|
||||||
#include "Components/Bounds.h"
|
#include "Components/Bounds.h"
|
||||||
#include "logging.h"
|
#include "logging.h"
|
||||||
|
|
||||||
@@ -26,6 +27,11 @@ namespace Systems
|
|||||||
private:
|
private:
|
||||||
float m_PlayerSpeed;
|
float m_PlayerSpeed;
|
||||||
glm::vec3 m_PlayerOriginalBounds;
|
glm::vec3 m_PlayerOriginalBounds;
|
||||||
|
|
||||||
|
glm::vec3 m_CameraOffset;
|
||||||
|
glm::quat m_CameraOrientation;
|
||||||
|
|
||||||
|
bool freecamEnabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user