Skip to content

Commit

Permalink
Fix MapGen may generate collision plane having (NaN, NaN, NaN, NaN)
Browse files Browse the repository at this point in the history
  • Loading branch information
kenjiuno committed Sep 29, 2024
1 parent 923c0e6 commit 6338521
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
13 changes: 11 additions & 2 deletions OpenKh.Command.MapGen/Utils/FlattenCollisionBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Func<MaterialDef, int> getAttributeFrom
var v3 = face.positionList[2];
var v4 = quad ? face.positionList[3] : Vector3.Zero;

collisionMesh.Collisions.Add(coct.Complete(
var collision = coct.Complete(
new Collision
{
Vertex1 = helper.AllocateVertex(v1.X, -v1.Y, -v1.Z), // why -Y and -Z ?
Expand All @@ -68,7 +68,16 @@ Func<MaterialDef, int> getAttributeFrom
FloorLevel = face.matDef.floorLevel,
},
inflate: 1
));
);

if (float.IsNaN(collision.Plane.D))
{
// 3 points are on the same line (not a plane)
}
else
{
collisionMesh.Collisions.Add(collision);
}
}

if (collisionMesh.Collisions.Any())
Expand Down
13 changes: 11 additions & 2 deletions OpenKh.Command.MapGen/Utils/HierarchicalCollisionBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ private WalkResult WalkTree(Node walkNode, BuildHelper helper)
var v3 = face.positionList[2];
var v4 = quad ? face.positionList[3] : Vector3.Zero;

collisionMesh.Collisions.Add(coct.Complete(
var collision = coct.Complete(
new Collision
{
Vertex1 = helper.AllocateVertex(v1.X, -v1.Y, -v1.Z), // why -Y and -Z ?
Expand All @@ -82,7 +82,16 @@ private WalkResult WalkTree(Node walkNode, BuildHelper helper)
FloorLevel = face.matDef.floorLevel,
},
inflate: 1
));
);

if (float.IsNaN(collision.Plane.D))
{
// 3 points are on the same line (not a plane)
}
else
{
collisionMesh.Collisions.Add(collision);
}
}

coct.Complete(collisionMesh);
Expand Down

0 comments on commit 6338521

Please sign in to comment.