]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
redesigned new/delete for models
authorPeter Schaefer <schaeferpm@gmail.com>
Wed, 6 May 2015 15:31:47 +0000 (17:31 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Wed, 6 May 2015 15:31:47 +0000 (17:31 +0200)
added colors for BBox

19 files changed:
Weave/Graphix/Graphix.cpp
Weave/Graphix/Model.h
Weave/Graphix/Model/BBox.cpp
Weave/Graphix/Model/BBox.h
Weave/Graphix/Model/IMesh.cpp
Weave/Graphix/Model/IMesh.h
Weave/Graphix/Model/IMetaMesh.cpp
Weave/Graphix/Model/IMetaMesh.h
Weave/Graphix/Model/Model.cpp
Weave/Graphix/Model/Model.h
Weave/Graphix/Model/SkyBox.cpp
Weave/Graphix/Model/SkyBox.h
Weave/Scene/EventBox.cpp
Weave/Scene/EventBox.h
Weave/Scene/SceneObject.cpp
Weave/Scene/SceneObject.h
Weave/Scene/Sky.cpp
Weave/Weave.vcxproj
Weave/Weave.vcxproj.filters

index be1e6eecde4a5cc83a176e78d5b9714eb192f45f..f6dfb75d05ed5fd95437abacec76bf4af5e70fbb 100644 (file)
@@ -97,6 +97,7 @@ void Graphix::clear()
 void Graphix::cleanup()
 {
        delete shader_BBox;
+
        SDL_SetWindowGrab(sdl_window, SDL_FALSE);
 
        SDL_GL_DeleteContext(sdl_glcontext);
index 601c46149029c4f4ae44cf6f601e8e66bec8979a..d786d9abbc305626a8b1e783bda3000d57d4ab7e 100644 (file)
@@ -1,7 +1,6 @@
 #pragma once
 
 #include "Model\Model.h"
-#include "Model\IMetaMesh.h"
-#include "Model\SkyBox.h"
-#include "Model\BBox.h"
-
+//#include "Model\IMetaMesh.h"
+//#include "Model\SkyBox.h"
+//#include "Model\BBox.h"
index 796866f96609556d774723005982d0c05a1726e5..70a74781fc88b0140407254f6c607d80891f5fab 100644 (file)
@@ -19,8 +19,13 @@ BBox::BBox()
 
 BBox::~BBox()
 {
+       glDeleteBuffers(1, &vertexBuffer);
+       //glDeleteBuffers(1, &indexBuffer);
+       //glDeleteBuffers(1, &normalBuffer);
+       //glDeleteBuffers(1, &uvBuffer);
 }
 
+
 void BBox::drawModel() const
 {
        uint indexL1[4]{ 0, 1, 2, 3 },
@@ -33,3 +38,9 @@ void BBox::drawModel() const
        glDrawElements(GL_LINES, 8, GL_UNSIGNED_INT, indexS1);
        glBindVertexArray(0);
 }
+
+
+BBox::operator std::string() const
+{
+       return "BBox";
+}
index c56c518c5345f83ffe39f150c9912968f540cce8..35f8d92da8b0d9d1ac4e62174bff771ebe074c95 100644 (file)
@@ -7,7 +7,8 @@ public:
        BBox();
        ~BBox();
 
-       void drawModel() const;
+       void drawModel() const override;
 
+       operator std::string() const override;
 };
 
index 75942ee27765e3efadc627961371327174447428..4a6b3e558e32121ec092e3a6b012485284ba8cdb 100644 (file)
@@ -11,9 +11,9 @@
 
 #include "../Graphix.h"
 
+using std::string;
 
-
-IMesh::IMesh(const string& _modelpath, uint _mindex)
+IMesh::IMesh(const string& _modelpath, uint _mindex) : modelpath(_modelpath)
 {
 
        float *vertex = nullptr, *normals = nullptr, *uvs = nullptr;
@@ -32,7 +32,7 @@ IMesh::IMesh(const string& _modelpath, uint _mindex)
 
 }
 
-IMesh::IMesh(const aiMesh* _mesh, const mat4& _transformation) : modelMat(_transformation)
+IMesh::IMesh(const aiMesh* _mesh, const mat4& _transformation) : modelMat(_transformation), modelpath("IMesh")
 {
 
        float *vertex = nullptr, *normals = nullptr, *uvs = nullptr;
@@ -155,4 +155,9 @@ void IMesh::checkColliding(float& _overlap, float& _inside, const Model* _model,
                return;
 
 
-}
\ No newline at end of file
+}
+
+IMesh::operator string() const
+{
+       return "IMesh";
+}
index c75f7ad9f8302e8ce6378418006feb6ac147ba2f..14e73539dc115c5ffdb961ffdaafbbb1482ce2d3 100644 (file)
@@ -5,8 +5,6 @@
 
 #include "Model.h"
 
-using std::string;
-
 class Shader;
 class Texture;
 struct aiMesh;
@@ -14,12 +12,12 @@ struct aiMesh;
 class IMesh : public Model
 {
 public:
-       IMesh(const string& modelpath, uint index=0);
+       IMesh(const std::string& modelpath, uint index=0);
        IMesh(const aiMesh* mesh, const mat4& transformation);
 
        virtual ~IMesh();
 
-       void useModelMat(const mat4& model, Shader* shader) const;
+       void useModelMat(const mat4& model, Shader* shader) const override;
 
        //void drawModel(Shader* shader, Texture* texture, const mat4& modelMat) const;
 
@@ -28,18 +26,15 @@ public:
        /* calls Colliding to check if self collides with model*/
        virtual void checkColliding(float& overlap, float& inside, const Model* model, const mat4& modelMatThis, const mat4& modelMatOther) const;
 
-protected:
+       operator std::string() const override;
 
+protected:
 
+       std::string modelpath;
        mat4 modelMat;
 
        // Mesh Speichern?
-       bool import(const string& modelpath, uint& numvertices, uint& numfaces, float*& vertex, float*& uvs, float*& normals, uint*& index , uint mindex = 0) const;
+       bool import(const std::string& modelpath, uint& numvertices, uint& numfaces, float*& vertex, float*& uvs, float*& normals, uint*& index , uint mindex = 0) const;
        bool import(const aiMesh* mesh, uint& numvertices, uint& numfaces, float*& vertex, float*& uvs, float*& normals, uint*& index) const;
 
-
-
-       
-
-};
-
+};
\ No newline at end of file
index 9348c879fad4001c2cd4f7bf032b843de27fa896..aadddafb2835feb5008f7609b2026640cea66ae5 100644 (file)
@@ -8,6 +8,7 @@
 #include "../Shader.h"
 #include "../../Message.h"
 
+using std::string;
 
 IMetaMesh::IMetaMesh(const string& _modelpath)
 {
@@ -85,14 +86,14 @@ void IMetaMesh::drawModel(Shader* _shader, Texture* _texture, const mat4& _model
 }
 
 
-void IMetaMesh::drawBBox(Shader* _shader, const mat4& _modelMat) const
+void IMetaMesh::drawBBox(const mat4& _modelMat,const vec4& _color) const
 {
-       Model::drawBBox(_shader, _modelMat);
+       Model::drawBBox(_modelMat, _color);
        if (models.size() > 1)
        {
                for (auto i = models.begin(); i != models.end(); ++i)
                {
-                       (*i)->drawBBox(_shader, _modelMat);
+                       (*i)->drawBBox(_modelMat, _color*0.8f);
                }
        }
 
@@ -117,3 +118,8 @@ void IMetaMesh::checkColliding(float& _overlap, float& _inside, const Model* _mo
                }
        }
 }
+
+IMetaMesh::operator string() const
+{
+       return modelpath;
+}
\ No newline at end of file
index 5d2b3cb16bad8a1c194f113f64d3fbb77d4b547c..13f763fbd82fe8ecadb0ba5dbd2c8a1ecf77fc78 100644 (file)
@@ -6,8 +6,6 @@
 #include <list>
 #include "../GLM.h"
 
-using std::string;
-
 class IMesh;
 class Shader;
 class Texture;
@@ -15,20 +13,23 @@ class Texture;
 class IMetaMesh : public Model
 {
 public:
-       IMetaMesh(const string& modelpath);
+       IMetaMesh(const std::string& modelpath);
        ~IMetaMesh();
 
-       void bindShader(Shader* shader);
+       void bindShader(Shader* shader) override;
 
-       void drawModel(Shader* shader, Texture* texture, const mat4& modelMat) const;
+       void drawModel(Shader* shader, Texture* texture, const mat4& modelMat) const override;
 
-       void drawBBox(Shader* shader, const mat4& modelMat) const;
+       void drawBBox(const mat4& modelMat, const vec4& color = vec4(0.9f, 0.f, 0.f, 1.f)) const override;
 
        /* calls Colliding to check if self collides with model*/
        void checkColliding(float& overlap, float& inside, const Model* model, const mat4& modelMatThis, const mat4& modelMatOther) const;
 
+       operator std::string() const override;
+
 protected:
 
+       std::string modelpath;
        std::list<IMesh*> models;
 };
 
index 6b270a1195a32e0ca704f14a991ff09c1061bf44..88db18aedb74bd33d3777d7b20378d326a1c381a 100644 (file)
@@ -9,6 +9,8 @@
 #include "../Graphix.h"
 
 #include "BBox.h"
+#include "SkyBox.h"
+#include "IMetaMesh.h"
 
 #include "../../Events.h"
 
@@ -100,22 +102,17 @@ void Model::drawModel(Shader* _shader, Texture* _texture, const mat4& _modelMat)
        //system("pause");
 }
 
-void Model::drawBBox(Shader* _shader, const mat4& _modelMat) const
+void Model::drawBBox(const mat4& _modelMat, const vec4& _color) const
 {
-       if (BoundingBox == nullptr)
-       {
-               BoundingBox = new BBox();
-               //BBoxShader = new Shader("basic_FS.hlsl", "basic_VS.hlsl");
-               BoundingBox->bindShader(Graphix::shader_BBox);
-
-               //int tmp = Graphix::shader_BBox->getUniformLocation("uFragmentColor");
-               //if (tmp >= 0)
-               //      glUniform4fv(Graphix::shader_BBox->getHandle(), 1, value_ptr(vec4(.3f, .9f, .9f, 1.f)));
-       }
-       //      BoundingBox->bindShader(_shader);
        vec3 BBsiz, BBpos;
        getBBsp(BBsiz, BBpos);
-       BoundingBox->drawModel(Graphix::shader_BBox, (Texture*)nullptr, _modelMat*translate(BBpos)*glm::scale(BBsiz*2.f));
+       Graphix::getGlError();
+       Graphix::shader_BBox->useShader();
+       int tmp = Graphix::shader_BBox->getUniformLocation("uFragmentColor");
+       if (tmp >= 0)
+               glUniform4fv(tmp, 1, value_ptr(_color));
+       Graphix::getGlError();
+       getBBoxModel()->drawModel(Graphix::shader_BBox, NULL, _modelMat*translate(BBpos)*glm::scale(BBsiz*2.f));
 }
 
 void Model::updateBB(const vec3& _min, const vec3& _max)
@@ -362,6 +359,55 @@ Model* Model::getBBoxModel()
        return BoundingBox;
 }
 
+Model* Model::getSkyBoxModel()
+{
+       if (SkyBoxModel == nullptr)
+       {
+               SkyBoxModel = new SkyBox();
+               //SkyBoxModel->bindShader(Graphix::shader_);
+       }
+       return SkyBoxModel;
+}
+
+Model* Model::newIMetaModel(const string& _modelpath)
+{
+       Model*& ptr = IMetaModel[_modelpath];
+       if (ptr == nullptr)
+       {
+               ptr = new IMetaMesh(_modelpath);
+               //ptr->bindShader(Graphix::shader_BBox);
+       }
+       ++IMetaModel_count[_modelpath];
+       return ptr;
+}
+
+void Model::deleteBBoxModel()
+{
+       delete BoundingBox;
+}
+
+void Model::deleteSkyBoxModel()
+{
+       delete SkyBoxModel;
+}
+
+
+void Model::deleteIMetaModel(const string& _modelpath)
+{
+       if (_modelpath == "SkyBox" || _modelpath == "BBox" || _modelpath == "IMesh")
+       {
+               Message::warning("deleteIMetaModel: dont use deleteIMetaModel with " + _modelpath);
+               return;
+       }
+
+       uint& count = IMetaModel_count[_modelpath];
+       --count;
+
+       if (!count)
+               delete IMetaModel[_modelpath];
+
+}
+
 float Model::getPDistHit(const vec3& _P, const vec3& _direction) const
 {
 
@@ -376,5 +422,6 @@ float Model::getPDistHit(const vec3& _P, const vec3& _direction) const
 }
 
 Model* Model::BoundingBox = nullptr;
-Shader* Model::BBoxShader = nullptr;
-bool Model::exBBox = false;
\ No newline at end of file
+Model* Model::SkyBoxModel = nullptr;
+std::unordered_map<string, Model*> Model::IMetaModel;
+std::unordered_map<string, uint> Model::IMetaModel_count;
\ No newline at end of file
index 283ea1b5b587c10d38d468afe1bf4d444cbcf58b..e18bc9e91b180f9bb5bcb2d92cc952719f7a164b 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "../GLM.h"
 #include <unordered_map>
+#include <string>
 
 class Shader;
 class Texture;
@@ -21,7 +22,7 @@ public:
        virtual void drawModel(Shader* shader, Texture* texture, const mat4& modelMat) const;
 
        /* Draws a BoundingBox around the Model */
-       virtual void drawBBox(Shader* shader, const mat4& modelMat) const;
+       virtual void drawBBox(const mat4& modelMat, const vec4& color = vec4(0.9f, 0.f, 0.f, 1.f)) const;
 
        /* Get min&max from BBox */
        virtual void getBBmm(vec3& min, vec3& max) const;
@@ -33,9 +34,17 @@ public:
        void checkColliding(float& overlap, float& inside, const Model* model, const mat4& modelMatThis, const mat4& modelMatOther) const;
 
        static Model* getBBoxModel();
+       static Model* getSkyBoxModel();
+       static Model* newIMetaModel(const std::string& modelpath);
+
+       static void deleteBBoxModel();
+       static void deleteSkyBoxModel();
+       static void deleteIMetaModel(const std::string& modelpath);
 
        virtual float getPDistHit(const vec3& P, const vec3& direction) const;
 
+       virtual operator std::string() const = 0;
+
 protected:
        uint numvertices, numfaces;
        uint vertexBuffer, indexBuffer, normalBuffer, uvBuffer;
@@ -55,10 +64,9 @@ protected:
        virtual void drawModel() const;
 
        static Model* BoundingBox;
-       static Shader* BBoxShader;
-       static bool exBBox;
-
-
+       static Model* SkyBoxModel;
+       static std::unordered_map<std::string, Model*> IMetaModel;
+       static std::unordered_map<std::string, uint> IMetaModel_count;
 
        static vec3 rotateSize(const vec3& size, const mat4& modelMat);
        static void checkCollideByAxis(float& overlap, float& inside, uint dim, const float* posA, const float* posB, const float* sizeA, const float* sizeB);
index 9c37e0c8861c5c0dd5538ec61a8ba7c625fed0da..c91970ca18ffbc2700cfd72f1cba4abbc394deff 100644 (file)
@@ -40,7 +40,11 @@ void SkyBox::useTexture(Texture* _texture, Shader* _shader) const
 {
 }
 
-void SkyBox::drawBBox(Shader* _shader, const mat4& _modelMat) const
+void SkyBox::drawBBox(const mat4& _modelMat, const vec4& _color) const
 {
 }
 
+SkyBox::operator std::string() const
+{
+       return "SkyBox";
+}
\ No newline at end of file
index 5bf15525a5d63c50ed73324a056a2d5de6ae2264..1b56702e530112f1e242b039c18a8e8620c4b97f 100644 (file)
@@ -9,13 +9,15 @@ public:
        SkyBox();
        ~SkyBox();
 
-       void drawModel(Shader* shader, Texture* texture, const mat4& modelMat) const;
+       void drawModel(Shader* shader, Texture* texture, const mat4& modelMat) const override;
 
        //uncommend following lines to use default Loaders
-       void useModelMat(const mat4& model, Shader* shader) const;
-       void useTexture(Texture* texture, Shader* shader) const;
+       void useModelMat(const mat4& model, Shader* shader) const override;
+       void useTexture(Texture* texture, Shader* shader) const override;
 
-       void drawBBox(Shader* shader, const mat4& modelMat) const;
+       void drawBBox(const mat4& modelMat, const vec4& color = vec4(0.f)) const override;
+
+       operator std::string() const override;
 
 };
 
index 2abe6a84140cd5428fe36b30a26f17e08becd3a5..420d66c35db234fc11ea2cfc8824c7a2c53dc3cd 100644 (file)
@@ -27,7 +27,7 @@ void EventBox::update(float _deltaT)
 void EventBox::draw() const
 {
        if (Events::isKToggleActive(SDLK_F6))
-               model->drawBBox(shader, modelMat);
+               model->drawBBox(modelMat,vec4(.3f,.9f,.9f,1.f));
 }
 
 void EventBox::collides(SceneObject* _other)
@@ -52,4 +52,4 @@ void EventBox::collides(SceneObject* _other)
                        }
 
        }
-}
\ No newline at end of file
+}
index 6be1a340f2e4e6abc7613cf655303c778318560c..d7e5d68874c6f743834369aa9ad7d44687dc95d0 100644 (file)
@@ -22,4 +22,3 @@ protected:
        uint eb_type;
 
 };
-
index d4079488cdb9ba18315498778eaf0e3aef9d94e6..8caf26fbb07c4580f880a4225a5e057f84ef80d9 100644 (file)
@@ -29,7 +29,8 @@ collision_ignore(false),
 texture(nullptr),
 ySpeed(0),
 yStatic(true),
-ignore(false)
+ignore(false),
+newModel(true)
 {
        //Message::info("Error from befor?");
        //Graphix::getGlError();
@@ -39,7 +40,8 @@ ignore(false)
        //modelID = _shader->getUniformLocation("modelMat");
        if (_modelpath != "")
        {
-               model = new IMetaMesh(_modelpath);
+               model = Model::newIMetaModel(_modelpath);
+               model->bindShader(shader);
        }
 
        if (texturepath != "")
@@ -47,7 +49,7 @@ ignore(false)
        //Message::info("Creating SkyBox Shader");
        //Graphix::getGlError();
 
-       model->bindShader(shader);
+       
        //Message::info("Binding Shader");
        //Graphix::getGlError();
        //Message::info("Done");
@@ -63,7 +65,8 @@ collision_ignore(false),
 texture(nullptr),
 ySpeed(0),
 yStatic(true),
-ignore(false)
+ignore(false),
+newModel(false)
 {
        //Message::info("Error from befor?");
        //Graphix::getGlError();
@@ -86,6 +89,8 @@ ignore(false)
 SceneObject::~SceneObject()
 {
                        delete texture;
+                       if (newModel)
+                               Model::deleteIMetaModel(*model);
 }
 
 float SceneObject::getFloor() const
@@ -96,6 +101,7 @@ float SceneObject::getFloor() const
 void SceneObject::update(float deltaT)
 {
 
+       //Fallen
        if (!yStatic)
        {
                vec3 pos = getPosition();
@@ -133,7 +139,7 @@ void SceneObject::draw() const
 
        model->drawModel(shader, texture, modelMat);
        if (Events::isKToggleActive(SDLK_F6))
-               model->drawBBox(shader, modelMat);
+               model->drawBBox(modelMat);
 }
 
 void SceneObject::checkCollision(SceneObject* _first, SceneObject* _second)
index 46a8c2107ee693cd4b9a0901e13b25280f1f8541..f1290770c3f988ca251bb70be7785c1bcb012392 100644 (file)
@@ -74,6 +74,7 @@ protected:
        Shader* shader;
        Texture* texture;
        Model* model;
+       bool newModel;
 
        Scene* mainScene;
 
index cedb4cdea12c71ad2b77503fc9165a3cd23f0b80..b71400c0f3e6b050422d8537e99f1c1320b63258 100644 (file)
@@ -4,9 +4,8 @@
 #include "../Graphix/Model.h"
 
 
-Sky::Sky() : SceneObject(new Shader("skybox_VS.hlsl","skybox_color_FS.hlsl"), mat4(1.f), vec4(1.f), new SkyBox(), "")
-{
-       
+Sky::Sky() : SceneObject(new Shader("skybox_VS.hlsl","skybox_color_FS.hlsl"), mat4(1.f), vec4(1.f), Model::getSkyBoxModel(), "")
+{      
 }
 
 
index 6ca484d76d56abcd4027b0beb615db3fcbc0e98c..968c17cf326785ee3ace1b2324243e0917e60b17 100644 (file)
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClCompile Include="Graphix\Model\BBox.cpp" />
-    <ClCompile Include="Graphix\Model\Model.cpp" />
     <ClCompile Include="Events.cpp" />
     <ClCompile Include="Fps.cpp" />
     <ClCompile Include="Game.cpp" />
     <ClCompile Include="Graphix\GLM.cpp" />
     <ClCompile Include="Graphix\Graphix.cpp" />
+    <ClCompile Include="Graphix\Model\BBox.cpp" />
     <ClCompile Include="Graphix\Model\IMesh.cpp" />
+    <ClCompile Include="Graphix\Model\IMetaMesh.cpp" />
+    <ClCompile Include="Graphix\Model\Model.cpp" />
+    <ClCompile Include="Graphix\Model\SkyBox.cpp" />
     <ClCompile Include="Scene\EventBox.cpp" />
     <ClCompile Include="Scene\Marvin.cpp" />
     <ClCompile Include="Scene\Scene.cpp" />
     <ClCompile Include="Scene\SceneObject.cpp" />
     <ClCompile Include="Graphix\Shader.cpp" />
-    <ClCompile Include="Graphix\Model\SkyBox.cpp" />
     <ClCompile Include="Graphix\Texture.cpp" />
     <ClCompile Include="Graphix\ViewPort.cpp" />
     <ClCompile Include="main.cpp" />
     <ClCompile Include="Message.cpp" />
-    <ClCompile Include="Graphix\Model\IMetaMesh.cpp" />
     <ClCompile Include="Scene\Sky.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Average.h" />
     <ClInclude Include="Graphix\Model.h" />
-    <ClInclude Include="Graphix\Model\BBox.h" />
-    <ClInclude Include="Graphix\Model\Model.h" />
     <ClInclude Include="Events.h" />
     <ClInclude Include="Fps.h" />
     <ClInclude Include="Game.h" />
     <ClInclude Include="Graphix\GLM.h" />
     <ClInclude Include="Graphix\Graphix.h" />
+    <ClInclude Include="Graphix\Model\BBox.h" />
     <ClInclude Include="Graphix\Model\IMesh.h" />
+    <ClInclude Include="Graphix\Model\IMetaMesh.h" />
+    <ClInclude Include="Graphix\Model\Model.h" />
+    <ClInclude Include="Graphix\Model\SkyBox.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" />
     <ClInclude Include="Graphix\Shader.h" />
-    <ClInclude Include="Graphix\Model\SkyBox.h" />
     <ClInclude Include="Graphix\Texture.h" />
     <ClInclude Include="Graphix\ViewPort.h" />
     <ClInclude Include="Message.h" />
-    <ClInclude Include="Graphix\Model\IMetaMesh.h" />
     <ClInclude Include="Scene\Sky.h" />
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
index 10ea3365d29c2e4c9fca1e161f981cd244b3df00..509b1b4d7d707c424da0817f25127c06c2305867 100644 (file)
     <ClCompile Include="Game.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Graphix\Model\IMesh.cpp">
+    <ClCompile Include="Scene\SceneObject.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Graphix\Model\IMetaMesh.cpp">
+    <ClCompile Include="Scene\Scene.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Graphix\Model\BBox.cpp">
+    <ClCompile Include="Scene\Marvin.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Graphix\Model\Model.cpp">
+    <ClCompile Include="Scene\Sky.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Graphix\Model\SkyBox.cpp">
+    <ClCompile Include="Scene\EventBox.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Scene\SceneObject.cpp">
+    <ClCompile Include="Graphix\Model\BBox.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Scene\Scene.cpp">
+    <ClCompile Include="Graphix\Model\IMesh.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Scene\Marvin.cpp">
+    <ClCompile Include="Graphix\Model\IMetaMesh.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Scene\Sky.cpp">
+    <ClCompile Include="Graphix\Model\Model.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Scene\EventBox.cpp">
+    <ClCompile Include="Graphix\Model\SkyBox.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
   </ItemGroup>
     <ClInclude Include="Game.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Graphix\Model\IMesh.h">
+    <ClInclude Include="Graphix\Model.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Graphix\Model\IMetaMesh.h">
+    <ClInclude Include="Scene\SceneObject.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Graphix\Model\BBox.h">
+    <ClInclude Include="Scene\Scene.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Graphix\Model\Model.h">
+    <ClInclude Include="Scene\Marvin.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Graphix\Model\SkyBox.h">
+    <ClInclude Include="Scene\Sky.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Graphix\Model.h">
+    <ClInclude Include="Scene\EventBox.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Scene\SceneObject.h">
+    <ClInclude Include="Scene.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Scene\Scene.h">
+    <ClInclude Include="Graphix\Model\BBox.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Scene\Marvin.h">
+    <ClInclude Include="Graphix\Model\IMesh.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Scene\Sky.h">
+    <ClInclude Include="Graphix\Model\IMetaMesh.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Scene\EventBox.h">
+    <ClInclude Include="Graphix\Model\Model.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Scene.h">
+    <ClInclude Include="Graphix\Model\SkyBox.h">
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>