Merge branch 'master' of github.com:sippeangelo/Escape-the-Dawn

This commit is contained in:
Tobias Dahl
2014-03-13 21:51:43 +01:00
5 changed files with 98 additions and 73 deletions
+2 -2
View File
@@ -85,8 +85,8 @@ void Systems::CollisionSystem::Intersects(EntityID aEntity, EntityID bEntity)
if (aMin.x <= bMax.x && bMin.x <= aMax.x) { if (aMin.x <= bMax.x && bMin.x <= aMax.x) {
if (aMin.y <= bMax.y && bMin.y <= aMax.y) { if (aMin.y <= bMax.y && bMin.y <= aMax.y) {
if (aMin.z <= bMax.z && bMin.z <= aMax.z) { if (aMin.z <= bMax.z && bMin.z <= aMax.z) {
aCollisionComponent->CollidingEntities.push_back(aEntity); aCollisionComponent->CollidingEntities.push_back(bEntity);
bCollisionComponent->CollidingEntities.push_back(bEntity); bCollisionComponent->CollidingEntities.push_back(aEntity);
return; return;
} }
} }
@@ -18,11 +18,11 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
ent = m_World->CreateEntity(); ent = m_World->CreateEntity();
obstacles.push_back(ent); obstacles.push_back(ent);
m_World->SetProperty(ent, "Name", std::string("Obstacle"));
transform = m_World->AddComponent<Components::Transform>(ent, "Transform"); auto transform = m_World->AddComponent<Components::Transform>(ent, "Transform");
bounds = m_World->AddComponent<Components::Bounds>(ent, "Bounds"); auto bounds = m_World->AddComponent<Components::Bounds>(ent, "Bounds");
collision = m_World->AddComponent<Components::Collision>(ent, "Collision"); auto collision = m_World->AddComponent<Components::Collision>(ent, "Collision");
model = m_World->AddComponent<Components::Model>(ent, "Model"); auto model = m_World->AddComponent<Components::Model>(ent, "Model");
auto sound = m_World->AddComponent<Components::SoundEmitter>(ent, "SoundEmitter"); auto sound = m_World->AddComponent<Components::SoundEmitter>(ent, "SoundEmitter");
@@ -37,6 +37,7 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
if(typeRandom >= 0 && typeRandom < 2) // Mountain stuff :D if(typeRandom >= 0 && typeRandom < 2) // Mountain stuff :D
{ {
m_World->SetProperty(ent, "Name", std::string("Obstacle"));
float scale = (float)(rand() % 1000) / 250; float scale = (float)(rand() % 1000) / 250;
transform->Scale = glm::vec3(scale); transform->Scale = glm::vec3(scale);
bounds->VolumeVector = glm::vec3(9, 12, 7); bounds->VolumeVector = glm::vec3(9, 12, 7);
@@ -45,6 +46,7 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
} }
else if(typeRandom >= 2 && typeRandom < 5) // Single Mountain :D else if(typeRandom >= 2 && typeRandom < 5) // Single Mountain :D
{ {
m_World->SetProperty(ent, "Name", std::string("Obstacle"));
float scale = (float)(rand() % 1000) / 200; float scale = (float)(rand() % 1000) / 200;
transform->Scale = glm::vec3(scale); transform->Scale = glm::vec3(scale);
bounds->VolumeVector = glm::vec3(3.5f, 7.5f, 3.5f); bounds->VolumeVector = glm::vec3(3.5f, 7.5f, 3.5f);
@@ -53,6 +55,7 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
} }
else if(typeRandom >= 5 && typeRandom < 8) else if(typeRandom >= 5 && typeRandom < 8)
{ {
m_World->SetProperty(ent, "Name", std::string("Obstacle"));
float scale = (float)(rand() % 1000) / 100; float scale = (float)(rand() % 1000) / 100;
transform->Scale = glm::vec3(scale); transform->Scale = glm::vec3(scale);
bounds->VolumeVector = glm::vec3(1, 1, 1); bounds->VolumeVector = glm::vec3(1, 1, 1);
@@ -61,13 +64,14 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
} }
if(typeRandom >= 8 && typeRandom < 10) if(typeRandom >= 8 && typeRandom < 10)
{ {
m_World->SetProperty(ent, "Name", std::string("PowerUp"));
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);
powerUp = m_World->AddComponent<Components::PowerUp>(ent, "PowerUp"); auto powerUp = m_World->AddComponent<Components::PowerUp>(ent, "PowerUp");
powerUp->Speed = 10.f; powerUp->Speed = 200.f;
model->ModelFile = "Models/powerup.obj"; model->ModelFile = "Models/powerup.obj";
} }
@@ -88,12 +92,13 @@ void Systems::LevelGenerationSystem::Update( double dt )
elapsedtime = 0; elapsedtime = 0;
} }
std::list<EntityID> removethis;
for(auto ent : obstacles) for(auto ent : obstacles)
{ {
auto transform = m_World->GetComponent<Components::Transform>(ent, "Transform"); auto transform = m_World->GetComponent<Components::Transform>(ent, "Transform");
if(transform != nullptr)
{
transform->Velocity.z = velocity; transform->Velocity.z = velocity;
transform->Position += transform->Velocity * (float)dt; transform->Position += transform->Velocity * (float)dt;
@@ -108,6 +113,7 @@ void Systems::LevelGenerationSystem::Update( double dt )
removethis.push_back(ent); removethis.push_back(ent);
} }
} }
}
for(auto ent : removethis) for(auto ent : removethis)
{ {
@@ -123,6 +129,7 @@ void Systems::LevelGenerationSystem::UpdateEntity( double dt, EntityID entity, E
if( m_World->GetProperty<std::string>(entity, "Name") == "Player") 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);
startx = transformComponent->Position.x; startx = transformComponent->Position.x;
velocity = transformComponent->Velocity.z; velocity = transformComponent->Velocity.z;
@@ -31,18 +31,11 @@ namespace Systems
int positionRandom; int positionRandom;
glm::vec2 startyz; glm::vec2 startyz;
float startx; float startx;
std::list<EntityID> removethis;
double elapsedtime; double elapsedtime;
std::list<EntityID> obstacles; std::list<EntityID> obstacles;
float velocity; float velocity;
std::shared_ptr<Components::Transform> transform;
std::shared_ptr<Components::Bounds> bounds;
std::shared_ptr<Components::Collision> collision;
std::shared_ptr<Components::Model> model;
std::shared_ptr<Components::PointLight> pointLight;
std::shared_ptr<Components::PowerUp> powerUp;
}; };
} }
+29 -6
View File
@@ -36,7 +36,15 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa
} }
auto name = m_World->GetProperty<std::string>(entity, "Name"); auto name = m_World->GetProperty<std::string>(entity, "Name");
if (name == "Camera" && freecamEnabled) { if (name == "Camera") {
if(input->KeyState[GLFW_KEY_F4] && !input->LastKeyState[GLFW_KEY_F4]) {
if(freecamEnabled)
freecamEnabled = false;
else
freecamEnabled = true;
}
if(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);
@@ -77,6 +85,9 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa
} }
} }
}
if (name == "Player") if (name == "Player")
{ {
auto bounds = m_World->GetComponent<Components::Bounds>(entity, "Bounds"); auto bounds = m_World->GetComponent<Components::Bounds>(entity, "Bounds");
@@ -140,12 +151,24 @@ void Systems::PlayerSystem::UpdateEntity(double dt, EntityID entity, EntityID pa
} }
if(input->KeyState[GLFW_KEY_F4] && !input->LastKeyState[GLFW_KEY_F4]) {
if(freecamEnabled)
freecamEnabled = false; //powerup
else auto collisionComponent = m_World->GetComponent<Components::Collision>(entity, "Collision");
freecamEnabled = true; for(auto ent : collisionComponent->CollidingEntities)
{
std::string name = m_World->GetProperty<std::string>(ent, "Name");
if(name == "PowerUp")
{
auto powerupComp = m_World->GetComponent<Components::PowerUp>(ent, "PowerUp");
if(powerupComp != nullptr)
{
transform->Velocity.z = powerupComp->Speed;
m_World->RemoveEntity(ent);
} }
}
}
// Update camera // Update camera
+2
View File
@@ -9,6 +9,8 @@
#include "Components/Collision.h" #include "Components/Collision.h"
#include "Components/Camera.h" #include "Components/Camera.h"
#include "Components/Bounds.h" #include "Components/Bounds.h"
#include "Components/PowerUp.h"
#include "logging.h" #include "logging.h"