case SDL_KEYDOWN:
if (sdl_event.key.keysym.sym == SDLK_ESCAPE)
{
- quit = true; //TODO nicht gleich alles beenden bei Escape
+ //quit = true; //TODO nicht gleich alles beenden bei Escape
halt = true;
}
if (!isKHeld(sdl_event.key.keysym.sym))
// current_world->addObject(new SceneObject(shader1, translate(vec3(-3.f, 1.f, 0.f)), vec4(1.0f, 1.0f, 1.0f, 3.0f), new BBox(), ""));
//Player
- SceneObject* tmp_playerObject = new Marvin(shader1, translate(vec3(1.f, 3.f, 1.f))*rotate((float)M_PI_4,vec3(0.f,1.f,0.f))*scale(vec3(.2f)));
+ SceneObject* tmp_playerObject = new Marvin(shader1, translate(vec3(1.f, 3.f, 1.f))*rotate((float)M_PI_4,vec3(0.f,1.f,0.f)));
tmp_playerObject->yStatic= false;
Game::~Game()
{
delete current_world;
-
}
{
Fps fps(0.3f);
int sleep_time=0;
- while (!Events::quit){
+ while (!Events::halt){
fps.step();
sleep_time += (int)(1000./ FRAMERATE_FIX - fps.getTicks());
void update(float);
void draw() const;
-
- Shader* shader_skybox;
- Texture* texture_skybox;
- Model* model_skybox;
-
};
scalingV[i] = sqrt(scalingM[i][i]);
return scalingV;
+}
+
+vec3 orthoVec(const vec3& _direction, const vec3& _vec)
+{
+ return normalize(_vec + _direction * dot(_direction, _vec));
}
\ No newline at end of file
mat4 removeScale(const mat4& matrix);
vec3 getScale(const mat4& matrix);
+vec3 orthoVec(const vec3& direction, const vec3& vec);
+
float Model::getPDistHit(const vec3& _P, const vec3& _direction) const
{
- vec3 n2 = cross(_direction, vec3(1.f, 0.f, 0.f));
- if (n2.length()<=0.01f)
- n2 = cross(_direction, vec3(0.f, 1.f, 0.f));
- vec3 n3 = cross(_direction, n2);
vec3 posA, sizeA;
getBBsp(sizeA, posA);
Texture::~Texture()
{
- //glDeleteTextures(1, &handle);
+ glDeleteTextures(1, &handle);
}
void Texture::bind(int unit)
{
if ((texture != nullptr && texture->operator std::string() == "model_player_2D.png") || _other->getTexture() != nullptr && (_other->getTexture()->operator std::string() == "model_player_2D.png"))
{
- if (!ignore && !_other->ignore)
- Message::info("EB Kollision!" + eb_type);
+ //if (!ignore && !_other->ignore)
+
+ switch (eb_type)
+ {
+ default:
+ Message::info("EB Kollision: " + std::to_string(eb_type) + " !");
+ break;
+ case EB_LOSTZONE:
+ Message::info("Spiel Verloren!");
+ Events::halt = true;
+ break;
+ case EB_WINZONE:
+ Message::info("Spiel Gewonnen!");
+ Events::halt = true;
+ break;
+ }
+
}
}
\ No newline at end of file
#define TIME_TILL_DIRECTION_ROTATE 1
#define SPEED_MOVE_NORMAL 1.5f
-#define MOVE_FASTER 2.f
+#define MOVE_FASTER 2.5f
Scene::Scene(unsigned int x, unsigned int y, unsigned int width, unsigned int height, float fovy, float zNear, float zFar, vec3 pos, SceneObject* _lookat) :
#include <iostream>
#include <fstream>
-#include "Graphix\GLM.h"
+//#include "Graphix\GLM.h"
//#include <GL\glew.h> //glew32.dll
//#include "Graphix\SceneObject.h"
//#include "Graphix\Shader.h"
-//#include "Message.h"
+#include "Message.h"
#include "Graphix\Graphix.h"
//#include "Graphix\Scene.h"
-//#include "Events.h"
+#include "Events.h"
//#include "Average.h"
Graphix::init();
- Game spiel1;
+ bool play(true);
+
+ while (!Events::quit)
+ {
+ if (play)
+ {
+ play = false;
+ Game spiel1;
+
+ spiel1.play();
+
+ Events::halt = false;
+ Message::info("Press ESC to quit or R for a new Game.");
+
+ }
+ Events::processEvents();
+ if (Events::halt)
+ break;
+ if (Events::isKHeld(SDLK_r))
+ play = true;
+
+ }
- spiel1.play();
Graphix::cleanup();