#include <assimp/postprocess.h>
#include <GL\glew.h>
-#include "Scene\Scene.h"
-#include "Scene\SceneObject.h"
-#include "Scene\Marvin.h"
+#include "Scene.h"
#include "Graphix\Shader.h"
#include "Graphix\Graphix.h"
//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)), vec4(3.0f, 0.5f, 0.4f, 1.5f), "duck.dae", "model_duck_2D.png", vec3(.3f)));
+ current_world->addObject(new EventBox(translate(vec3(3.f, .4f, 0.f)), vec3(1.f)));
+
}
return sqrt(vek.x*vek.x + vek.y*vek.y + vek.z*vek.z);
}
-mat4 removeScale(const mat4& _mat)
+
+mat4 removeScale(const mat4& matrix)
{
- return _mat*(mat4)inverse(transpose((mat3)_mat)*(mat3)_mat);
-}
+ mat3 scalingM = transpose((mat3)matrix) * (mat3)matrix;
+ vec3 scalingV;
+ for (int i = 0; i < 3; ++i)
+ scalingV[i] = 1.f / sqrt(scalingM[i][i]);
+
+ return matrix * scale(scalingV);
+}
using glm::translate;
using glm::rotate;
//using glm::scale;
+using glm::determinant;
using glm::perspective;
using glm::normalize;
using glm::inverse;
__declspec(deprecated)
float VektorAbs(const vec3& vek);
-mat4 removeScale(const mat4& mat);
+mat4 removeScale(const mat4& matrix);
-//#include "matM.h"
}
-
BBox::~BBox()
{
}
glDrawElements(GL_LINE_LOOP, 4, GL_UNSIGNED_INT, indexL2);
glDrawElements(GL_LINES, 8, GL_UNSIGNED_INT, indexS1);
glBindVertexArray(0);
-}
\ No newline at end of file
+}
_vec[i] *= _scale[i];
}
+Model* Model::getBBoxModel()
+{
+ if (BoundingBox == nullptr)
+ {
+ BoundingBox = new BBox();
+ BoundingBox->bindShader(Graphix::shader_BBox);
+ }
+ return BoundingBox;
+}
+
Model* Model::BoundingBox = nullptr;
Shader* Model::BBoxShader = nullptr;
bool Model::exBBox = false;
\ No newline at end of file
virtual void scale(const vec3& scale);
virtual void unScale();
+ static Model* getBBoxModel();
+
protected:
uint numvertices, numfaces;
uint vertexBuffer, indexBuffer, normalBuffer, uvBuffer;
--- /dev/null
+#pragma once
+
+#include "Scene/Scene.h"
+#include "Scene/SceneObject.h"
+#include "Scene/EventBox.h"
+#include "Scene/Marvin.h"
+#include "Scene/Sky.h"
+
--- /dev/null
+#include "EventBox.h"
+
+#include "../Graphix/Graphix.h"
+#include "../Graphix/Model.h"
+
+#include "../Events.h"
+
+
+EventBox::EventBox(const mat4& _modelMat, const vec3& _size) : SceneObject(Graphix::shader_BBox,_modelMat,vec4(0.f),Model::getBBoxModel(),"",_size)
+{
+
+}
+
+
+EventBox::~EventBox()
+{
+}
+
+void EventBox::update(float _deltaT)
+{
+}
+
+void EventBox::draw() const
+{
+ if (Events::isKToggleActive(SDLK_F6))
+ model->drawBBox(shader, modelMat);
+}
\ No newline at end of file
--- /dev/null
+#pragma once
+#include "SceneObject.h"
+
+
+#define EB_WINZONE 1;
+#define EB_LOSTZONE 0;
+
+class EventBox :
+ public SceneObject
+{
+public:
+ EventBox(const mat4& modelMat, const vec3& size);
+ ~EventBox();
+
+ virtual void update(float);
+ virtual void draw() const;
+};
+
texture(nullptr),
ySpeed(0),
yStatic(true),
-ignore(false)
+ignore(false),
+modelScale(_scale)
{
//Message::info("Error from befor?");
//Graphix::getGlError();
}
-SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, const vec4& _material, Model* _model, string texturepath) :
+SceneObject::SceneObject(Shader* _shader, const mat4& _modelMat, const vec4& _material, Model* _model, string texturepath, const vec3& _scale) :
model(_model),
modelMat(_modelMat),
shader(_shader),
texture(nullptr),
ySpeed(0),
yStatic(true),
-ignore(false)
+ignore(false),
+modelScale(_scale)
{
//Message::info("Error from befor?");
//Graphix::getGlError();
}
-//SceneObject::SceneObject(Shader* _shader, mat4& _modelMat, IMesh* model_obj, string texturepath) :
-//IMesh(*model_obj),
-//modelMat(_modelMat),
-//shader(_shader),
-//mainScene(NULL),
-//collision_ignore(false),
-//texture(nullptr)
-//{
-// modelID = _shader->getUniformLocation("modelMat");
-// if (texturepath != "")
-// texture = new Texture(texturepath);
-//
-// bindShader(shader);
-//}
-
-
SceneObject::~SceneObject()
{
// delete texture;
public:
//SceneObject(Shader* _shader, mat4& model);
- SceneObject(Shader* _shader, const mat4& model, const vec4& material, string modelpath, string texturepath, const vec3& scale=vec3(1.f));
- SceneObject(Shader* _shader, const mat4& modelMat, const vec4& material, Model* model, string texturepath);
+ SceneObject(Shader* _shader, const mat4& modelMat, const vec4& material, string modelpath, string texturepath, const vec3& scale=vec3(1.f));
+ SceneObject(Shader* _shader, const mat4& modelMat, const vec4& material, Model* model, string texturepath, const vec3& scale = vec3(1.f));
virtual ~SceneObject();
protected:
-
-
mat4 modelMat;
+ vec3 modelScale;
+
Shader* shader;
Texture* texture;
Model* model;
bool collision_ignore;
-
- Shader* shader_BBox;
-
-
};
<ClCompile Include="Graphix\GLM.cpp" />
<ClCompile Include="Graphix\Graphix.cpp" />
<ClCompile Include="Graphix\Model\IMesh.cpp" />
+ <ClCompile Include="Scene\EventBox.cpp" />
<ClCompile Include="Scene\Marvin.cpp" />
<ClCompile Include="Scene\Scene.cpp" />
<ClCompile Include="Scene\SceneObject.cpp" />
<ClInclude Include="Graphix\GLM.h" />
<ClInclude Include="Graphix\Graphix.h" />
<ClInclude Include="Graphix\Model\IMesh.h" />
+ <ClInclude Include="Scene.h" />
+ <ClInclude Include="Scene\EventBox.h" />
<ClInclude Include="Scene\Marvin.h" />
<ClInclude Include="Scene\Scene.h" />
<ClInclude Include="Scene\SceneObject.h" />
<ClCompile Include="Scene\Sky.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="Scene\EventBox.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Fps.h">
<ClInclude Include="Scene\Sky.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="Scene\EventBox.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="Scene.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
#include <iostream>
#include <fstream>
-//#include "Graphix\GLM.h"
+#include "Graphix\GLM.h"
//#include <GL\glew.h> //glew32.dll
int main(int argc, char *argv[])
{
+
Graphix::init();
Game spiel1;