]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
new function removeNormalize
authorPeter Schaefer <schaeferpm@gmail.com>
Sun, 3 May 2015 19:47:35 +0000 (21:47 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Sun, 3 May 2015 19:47:35 +0000 (21:47 +0200)
new Scene HEADER
new EventBox

14 files changed:
Weave/Game.cpp
Weave/Graphix/GLM.cpp
Weave/Graphix/GLM.h
Weave/Graphix/Model/BBox.cpp
Weave/Graphix/Model/Model.cpp
Weave/Graphix/Model/Model.h
Weave/Scene.h [new file with mode: 0644]
Weave/Scene/EventBox.cpp [new file with mode: 0644]
Weave/Scene/EventBox.h [new file with mode: 0644]
Weave/Scene/SceneObject.cpp
Weave/Scene/SceneObject.h
Weave/Weave.vcxproj
Weave/Weave.vcxproj.filters
Weave/main.cpp

index 7cc14374fbfc6a94f2e34eac792a8b8a8c5e4aa4..b899a6a0226979dda2a90f3acaa325cc762eeddd 100644 (file)
 #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"
@@ -69,6 +67,8 @@ Game::Game() : playing(true)
        //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)));
+
 }
 
 
index 801f0aa95cf754e7c26940c46e33bac09a081059..59c1c851d145c0e91bc9649bd6a3537c4bbed1c9 100644 (file)
@@ -5,8 +5,14 @@ float VektorAbs(const vec3& vek)
        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);
+}
index 2f3e4702585deda0b80ec3f7eb7f52439598eb86..35c208aeaee1c0dcd459d99e88426a8000d72d9c 100644 (file)
@@ -14,6 +14,7 @@ using glm::vec4;
 using glm::translate;
 using glm::rotate;
 //using glm::scale;
+using glm::determinant;
 using glm::perspective;
 using glm::normalize;
 using glm::inverse;
@@ -39,6 +40,5 @@ using glm::max;
 __declspec(deprecated)
 float VektorAbs(const vec3& vek);
 
-mat4 removeScale(const mat4& mat);
+mat4 removeScale(const mat4& matrix);
 
-//#include "matM.h"
index 99dba6deb0d2a77f63e387eef07b899571c38c20..796866f96609556d774723005982d0c05a1726e5 100644 (file)
@@ -17,7 +17,6 @@ BBox::BBox()
 
 }
 
-
 BBox::~BBox()
 {
 }
@@ -33,4 +32,4 @@ void BBox::drawModel() const
        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
+}
index 5973b83ce56959f780577cd30a9e16356688b560..8e9fd77da8572b652119f2e486e3a6edccb8cc47 100644 (file)
@@ -325,6 +325,16 @@ void Model::scaleVec3(vec3& _vec, const vec3& _scale)
                _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
index fec1a11133c80d4cbffbb445f4be9a8b75177e85..be8a3029699aff1fe5b40dab59d9e45b70d47953 100644 (file)
@@ -34,6 +34,8 @@ public:
        virtual void scale(const vec3& scale);
        virtual void unScale();
 
+       static Model* getBBoxModel();
+
 protected:
        uint numvertices, numfaces;
        uint vertexBuffer, indexBuffer, normalBuffer, uvBuffer;
diff --git a/Weave/Scene.h b/Weave/Scene.h
new file mode 100644 (file)
index 0000000..5405d0b
--- /dev/null
@@ -0,0 +1,8 @@
+#pragma once
+
+#include "Scene/Scene.h"
+#include "Scene/SceneObject.h"
+#include "Scene/EventBox.h"
+#include "Scene/Marvin.h"
+#include "Scene/Sky.h"
+
diff --git a/Weave/Scene/EventBox.cpp b/Weave/Scene/EventBox.cpp
new file mode 100644 (file)
index 0000000..71ed690
--- /dev/null
@@ -0,0 +1,27 @@
+#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
diff --git a/Weave/Scene/EventBox.h b/Weave/Scene/EventBox.h
new file mode 100644 (file)
index 0000000..ced8388
--- /dev/null
@@ -0,0 +1,18 @@
+#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;
+};
+
index 3cfd3f8dd6f4feafe7ffdc5120ab6b5ad33bac10..4e84a88fa0b1065d35f69025076fa15cc116722b 100644 (file)
@@ -29,7 +29,8 @@ collision_ignore(false),
 texture(nullptr),
 ySpeed(0),
 yStatic(true),
-ignore(false)
+ignore(false),
+modelScale(_scale)
 {
        //Message::info("Error from befor?");
        //Graphix::getGlError();
@@ -55,7 +56,7 @@ ignore(false)
 
 }
 
-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),
@@ -64,7 +65,8 @@ collision_ignore(false),
 texture(nullptr),
 ySpeed(0),
 yStatic(true),
-ignore(false)
+ignore(false),
+modelScale(_scale)
 {
        //Message::info("Error from befor?");
        //Graphix::getGlError();
@@ -84,22 +86,6 @@ ignore(false)
 
 }
 
-//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;
index 4fb127c6c7fc6881d71503f96139c1c74ab9abbb..f3dde275096210a17d9c34f6f87ad832a8a1cb2e 100644 (file)
@@ -18,8 +18,8 @@ class SceneObject
 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();
 
@@ -63,9 +63,9 @@ public:
 
 protected:
 
-       
-
        mat4 modelMat;
+       vec3 modelScale;
+
        Shader* shader;
        Texture* texture;
        Model* model;
@@ -74,9 +74,5 @@ protected:
 
        bool collision_ignore;
 
-       
-       Shader* shader_BBox;
-       
-
 };
 
index 1e07713cddbde15d9d1a724933c28a426d67ae11..6ca484d76d56abcd4027b0beb615db3fcbc0e98c 100644 (file)
     <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" />
index 606740adb864c9c36b8f7e25d7fe5d1860c2419e..10ea3365d29c2e4c9fca1e161f981cd244b3df00 100644 (file)
@@ -72,6 +72,9 @@
     <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
index da015423650fa0f00bd12919f8c716b1a7c86452..4f84b32e342675a7e51a4e5b8aa61003cb9175ec 100644 (file)
@@ -2,7 +2,7 @@
 #include <iostream>
 #include <fstream>
 
-//#include "Graphix\GLM.h"
+#include "Graphix\GLM.h"
 
 //#include <GL\glew.h>         //glew32.dll
 
@@ -41,6 +41,7 @@ void logSDLerror(ostream &os, const char *msg)
 
 int main(int argc, char *argv[])
 {      
+
        Graphix::init();
 
        Game spiel1;