#include "Graphix\Scene.h"
#include "Graphix\SceneObject.h"
#include "Graphix\Shader.h"
-#include "Graphix\Drawable.h"
#include "Graphix\Graphix.h"
#include "Fps.h"
#include "Events.h"
{
srand((int)time(NULL));
// Hauptfenster
- Scene* tmp_Scene = new Scene(0, 0, Graphix::getWindowWidth(), Graphix::getWindowHeight(), 45, 0.1f, 40, vec3(0.0f, 0.0f, 0.f));
- layer[0] = tmp_Scene;
+ current_world = new Scene(0, 0, Graphix::getWindowWidth(), Graphix::getWindowHeight(), 45, 0.1f, 40, vec3(0.0f, 0.0f, 0.f));
//SKYBOX! ---------------------------
- shader_skybox = new Shader("skybox_VS.hlsl", "skybox_FS.hlsl");
+ shader_skybox = new Shader("skybox_VS.hlsl", "skybox_color_FS.hlsl");
//texture_skybox = new Texture("skybox_CUBE.jpg");
- tmp_Scene->addObject(new SceneObject(shader_skybox, scale(3.f * vec3(1.f, .5f, 1.f)), new SkyBox(), ""));
+ current_world->addObject(new SceneObject(shader_skybox, scale(3.f * vec3(1.f, .5f, 1.f)), new SkyBox(), ""));
//SKYBOX! ----------------------------
//Allg Shader
// Shader* shaderSky = new Shader("skybox_VS.hlsl", "skybox_FS.hlsl");
// load LVL
- tmp_Scene->addObject(new SceneObject(shader1, scale(3.f * vec3(1.f,.3f,1.f)), "level_test.dae", "model_levelTest_2D.png"));
+ current_world->addObject(new SceneObject(shader1, scale(3.f * vec3(1.f,.3f,1.f)), "level_test.dae", "model_levelTest_2D.png"));
- tmp_Scene->addObject(new SceneObject(shader1, translate(vec3(-3.f,1.f,0.f)), new BBox() , ""));
+ current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f,1.f,0.f)), new BBox() , ""));
//Player
SceneObject* tmp_playerObject = new SceneObject(shader1, translate(vec3(1.f, 3.f, 1.f))*rotate((float)M_PI_4,vec3(0.f,1.f,0.f)), "Player.dae", "model_player_2D.png");
tmp_playerObject->yStatic= false;
//tmp_playerObject->setIntelligenz(new PlayerI(tmp_playerObject));
- tmp_Scene->addObject(tmp_playerObject);
- tmp_Scene->setLookAt(tmp_playerObject);
+ current_world->addObject(tmp_playerObject);
+ current_world->setLookAt(tmp_playerObject);
//player1 = Player(tmp_playerObject);
// World
//SceneObject::setTextureDanger("model_cow.jpg");
//SceneObject::setTextureSave("model_cow.jpg");
- //tmp_Scene->addObject(tmp_world);
+ //current_world->addObject(tmp_world);
//int size = 5;
//int steps = 10;
// }
// tmp_enemy = new SceneObject(shader1, translate(pos), "cow/cow.dae", "", (float)(rand() % 10 + 2) / 10.f);
// tmp_enemy->setEnemy(true);
- // tmp_Scene->addObject(tmp_enemy);
+ // current_world->addObject(tmp_enemy);
// //cout << ((float)(rand() % (size*steps * 2)) / steps - size) << ((float)(rand() % (size*steps * 2)) / steps - size) << ((float)(rand() % (size*steps * 2)) / steps - size) << endl;
//}
//ein Gegner
- //tmp_Scene->addObject(new SceneObject(shader1, glm::mat4(1.0f), "Player.dae", "model_player.png"));
- //tmp_Scene->addObject(new SceneObject(shader1, translate(vec3(-3.f, .4f, 0.f))*scale(vec3(3.f)), "cow/cow.dae", "model_cow_2D.jpg"));
- tmp_Scene->addObject(new SceneObject(shader1, translate(vec3(-3.f, .4f, 0.f))*scale(vec3(.4f)), "duck.dae", "model_duck_2D.png"));
+ //current_world->addObject(new SceneObject(shader1, glm::mat4(1.0f), "Player.dae", "model_player.png"));
+ //current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f, .4f, 0.f))*scale(vec3(3.f)), "cow/cow.dae", "model_cow_2D.jpg"));
+ current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f, .4f, 0.f))*scale(vec3(.4f)), "duck.dae", "model_duck_2D.png"));
- //import("level_test.dae", tmp_Scene, shader1);
+ //import("level_test.dae", current_world, shader1);
Game::~Game()
{
- for (auto i = layer.begin(); i != layer.end(); ++i){
- delete i->second;
- }
+ delete current_world;
}
void Game::update(float deltaT)
{
if (playing){
- for (auto i = layer.begin(); i != layer.end(); ++i){
- (*i).second->update(deltaT);
- }
-
+ current_world->update(deltaT);
+
// l_interface->update(deltaT);
- }else
- l_menu->update(deltaT);
+ }
+// else
+// l_menu->update(deltaT);
}
void Game::draw() const
//viewPort->bindView(*i, lookat->getPosition() + vec3(0.0f, 1.0f, 0.0f));
//SkyBox->draw();
- for (auto i = layer.begin(); i != layer.end(); ++i){
- (*i).second->draw();
- }
+ current_world->draw();
+
// l_interface->draw();
}
- else
- l_menu->draw();
+ //else
+ // l_menu->draw();
}
\ No newline at end of file
void ViewPort::bindView(Shader* shader) const{
shader->useShader();
- glUniformMatrix4fv(shader->getUniformLocation("uProjection"), 1, false, value_ptr(projection));
- glUniformMatrix4fv(shader->getUniformLocation("uView"), 1, false, value_ptr(view));
+ int tmp = -1;
+
+ tmp = shader->getUniformLocation("uProjection");
+ if (tmp >= 0)
+ glUniformMatrix4fv(tmp, 1, false, value_ptr(projection));
+ tmp = shader->getUniformLocation("uInvProjection");
+ if (tmp >= 0)
+ glUniformMatrix4fv(tmp, 1, false, value_ptr(glm::inverse(projection)));
+
+ tmp = shader->getUniformLocation("uView");
+ if (tmp >= 0)
+ glUniformMatrix4fv(shader->getUniformLocation("uView"), 1, false, value_ptr(view));
}
void ViewPort::bindView(Shader* shader, vec3 pos) const{
tmp = shader->getUniformLocation("uView");
if (tmp >= 0)
- glUniformMatrix4fv(tmp, 1, false, value_ptr(translate(view,-pos)));
+ glUniformMatrix4fv(tmp, 1, false, value_ptr(translate(view,-pos)));
}
void ViewPort::rotateView(float angle_x, float angle_y){