]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
first cleanup for collides
authorPeter Schaefer <schaeferpm@gmail.com>
Thu, 7 May 2015 10:44:58 +0000 (12:44 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Thu, 7 May 2015 10:44:58 +0000 (12:44 +0200)
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

index de003673f270d59025219f417f0fad99f118dabe..bb20144f92422956dba7d06422496fdd56e1d310 100644 (file)
@@ -139,13 +139,25 @@ bool IMesh::import(const aiMesh* mesh, uint& numvertices, uint& numfaces, float*
        return true;
 }
 
-void IMesh::checkColliding(float& _overlap, float& _inside, const Model* _model, const mat4& _modelMatThis, const mat4& _modelMatOther) const
+Overlap IMesh::checkColS2O(const mat4& _mMat, const Model* _model, const mat4& _modelMat) const
 {
-       Model::checkColliding(_overlap, _inside, _model, _modelMatThis*modelMat, _modelMatOther);
-       /* nicht überschneidend also keine weiteren Tests nötig */
-       if (_overlap < 0)
-               return;
+       //Outer BBox
+       Overlap firstBB = Model::checkColS2O(_mMat, _model, _modelMat);
+       //if (!firstBB)
+               return firstBB;
 
+       //Inner Mesh
+
+}
+
+Overlap IMesh::checkColO2SBox(const mat4& _mMat, const vec3& _pos, const vec3& _size, const mat4& _modelMat) const
+{
+       //Outer Mesh
+       Overlap firstBB = Model::checkColO2SBox(_mMat, _pos, _size, _modelMat);
+       //if (!firstBB)
+               return firstBB;
+
+       //Inner Mesh
 
 }
 
index 43451d448358741d2060f99a56f3370270308490..155b867474643eec99adad96fe1623084f0d9935 100644 (file)
@@ -23,8 +23,8 @@ public:
 
        //void bindShader(Shader* shader);
 
-       /* 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;
+       Overlap checkColS2O(const mat4& mMat, const Model* model, const mat4& modelMat) const override;
+       Overlap checkColO2SBox(const mat4& mMat, const vec3& pos, const vec3& size, const mat4& modelMat) const override;
 
        operator std::string() const override;
 
index 155502a4cc5e5d32fca5b8a3aff995a9ccbb60f5..052b1b438bf3905c5808dcbb1792e54f1c1405bd 100644 (file)
@@ -144,25 +144,6 @@ Overlap IMetaMesh::checkColO2SBox(const mat4& _mMat, const vec3& _pos, const vec
                return secondSubBB;
 }
 
-//void checkColliding(float& _overlap, float& _inside, const Model* _model, const mat4& _modelMatThis, const mat4& _modelMatOther) const
-//{
-//     Model::checkColliding(_overlap, _inside, _model, _modelMatThis, _modelMatOther);
-//
-//     if (min(_overlap, _inside) >= 0)
-//     {
-//             _overlap = -1; _inside = -1;
-//             float subOverlap = -1, subInside = -1;
-//             for (auto i = models.begin(); i != models.end(); ++i)
-//             {
-//                     _model->checkColliding(subOverlap, subInside, *i, _modelMatThis, _modelMatOther);
-//                     if (subOverlap > _overlap)
-//                             _overlap = subOverlap;
-//                     if (subInside > _inside)
-//                             _inside = subInside;
-//             }
-//     }
-//}
-
 IMetaMesh::operator string() const
 {
        return modelpath;
index 60aafa683a1d91b799ce137eb6da9d550b9b6bb4..8cedb2508af0495bfdda917f3fb0e9ddcb6ad8e8 100644 (file)
@@ -25,9 +25,6 @@ public:
        Overlap checkColS2O(const mat4& mMat, const Model* model, const mat4& modelMat) const override;
        Overlap checkColO2SBox(const mat4& mMat, const vec3& pos, const vec3& size, const mat4& modelMat) 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:
index 8f29e3e161387805931412ebb1514dfc538c6610..a47d7dd09d2a09f32f69369b5cd9887e0f5b7523 100644 (file)
@@ -319,43 +319,6 @@ Overlap Model::checkColO2SBox(const mat4& _mMat, const vec3& _posB, const vec3&
        return ret;
 }
 
-void Model::checkColliding(float& _overlap, float& _inside, const Model* _model, const mat4& _modelMatThis, const mat4& _modelMatOther) const
-{
-       vec3 posA, sizeA, posB, sizeB;
-       float overlap, inside;
-
-       getBBsp(sizeA, posA);
-       _model->getBBsp(sizeB, posB);
-
-       mat4 modelAR = glm::inverse(removeScale(_modelMatOther))*_modelMatThis;
-       mat4 modelBR = glm::inverse(removeScale(_modelMatThis))*_modelMatOther;
-
-       vec3 posAR = (vec3)(modelAR*vec4(posA, 1.f));
-       vec3 posBR = (vec3)(modelBR*vec4(posB, 1.f));
-
-       vec3 sizeAR = rotateSize(sizeA, modelAR);
-       vec3 sizeBR = rotateSize(sizeB, modelBR);
-
-       vec3 scaleA = getScale(_modelMatThis);
-       vec3 scaleB = getScale(_modelMatOther);
-
-       scaleVec3(posA, scaleA);
-       scaleVec3(posB, scaleB);
-
-       scaleVec3(sizeA, scaleA);
-       scaleVec3(sizeB, scaleB);
-
-
-       checkCollideByAxis(_overlap, _inside, 3, value_ptr(posAR), value_ptr(posB), value_ptr(sizeAR), value_ptr(sizeB));
-       if (_overlap >= 0)
-       {
-               checkCollideByAxis(overlap, inside, 3, value_ptr(posA), value_ptr(posBR), value_ptr(sizeA), value_ptr(sizeBR));
-               _overlap = min(overlap, _overlap);
-               _inside = min(overlap, _inside);
-       }
-
-}
-
 void Model::checkCollideByAxis(float& _overlap, float& _inside, uint dim, const float* posA, const float* posB, const float* sizeA,const float* sizeB)
 {
        _overlap = INFINITY;
index 3793e0f130a94b4f25089edf38ad830891499ae8..5d9f581cdca9f2b10debef832c21bafc48425291 100644 (file)
@@ -38,7 +38,6 @@ public:
        virtual Overlap checkColS2O(const mat4& mMat, const Model* model, const mat4& modelMat) const;
        virtual Overlap checkColO2SBox(const mat4& mMat, const vec3& pos, const vec3& size, const mat4& modelMat) const;
        //virtual void checkColO2STriangle() const;
-       virtual void checkColliding(float& overlap, float& inside, const Model* model, const mat4& modelMatThis, const mat4& modelMatOther) const;
 
        static Model* getBBoxModel();
        static Model* getSkyBoxModel();