Slightly better stand-in code

This commit is contained in:
2024-03-15 14:46:06 -04:00
parent 3c598e0937
commit 0380010262
2 changed files with 21 additions and 9 deletions

View File

@@ -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)))

View File

@@ -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);