Slightly better stand-in code
This commit is contained in:
@@ -106,16 +106,28 @@ bool Collision::axisAlignedBoundingBoxCollides(const Collider &boundingBox, cons
|
||||
return true; //AABBs Collide.
|
||||
}
|
||||
|
||||
//TODO there is several scenarios where this won't work. SAT is really complicated.
|
||||
//This is stand-in code until I can figure out SAT.
|
||||
//TODO this isn't very accurate. This is stand in code until SAT can be figured out.
|
||||
bool Collision::triangleVSAxisAlignedBoundingBoxCollides(const Triangle &triangle, const Collider &boundingBox) {
|
||||
if (vertexInsideAxisAlignedBoundingBox(triangle.v0, boundingBox) ||
|
||||
vertexInsideAxisAlignedBoundingBox(triangle.v1, boundingBox) ||
|
||||
vertexInsideAxisAlignedBoundingBox(triangle.v2, boundingBox))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
Vertex vert;
|
||||
VertexArray vArray;
|
||||
vert.x = triangle.v0.x;
|
||||
vert.y = triangle.v0.y;
|
||||
vert.z = triangle.v0.z;
|
||||
vArray.vertices.push_back(vert);
|
||||
|
||||
vert.x = triangle.v1.x;
|
||||
vert.y = triangle.v1.y;
|
||||
vert.z = triangle.v1.z;
|
||||
vArray.vertices.push_back(vert);
|
||||
|
||||
vert.x = triangle.v2.x;
|
||||
vert.y = triangle.v2.y;
|
||||
vert.z = triangle.v2.z;
|
||||
vArray.vertices.push_back(vert);
|
||||
Collider boundingBox2 = calculateAxisAlignedBoundingBox(vArray);
|
||||
return axisAlignedBoundingBoxCollides(boundingBox, boundingBox2);
|
||||
|
||||
}
|
||||
bool Collision::collisionMapVSAxisAlignedBoundingBoxCollides(const Collider &boundingBox, Collider* collisionMap) {
|
||||
|
||||
if (!axisAlignedBoundingBoxCollides(boundingBox, Collision::calculateAxisAlignedBoundingBox((VertexArray) *collisionMap)))
|
||||
|
@@ -11,7 +11,7 @@ int main(int argc, char** argv)
|
||||
engine->init();
|
||||
auto* cube1 = new(Cube);
|
||||
cube1->name = "cube1";
|
||||
cube1->SetPos({-5, -0.5, 0});
|
||||
cube1->SetPos({-5, 0, 0});
|
||||
cube1->velAngle = cube1->lAngle();
|
||||
cube1->SetParent(engine->world);
|
||||
|
||||
|
Reference in New Issue
Block a user