Fix more hole cutting bugs
This commit is contained in:
parent
e3e4b23654
commit
2b22d12a0e
|
@ -154,6 +154,8 @@ int portalSurfaceAdjustPosition(struct PortalSurface* surface, struct Transform*
|
|||
|
||||
int shouldReverse = vector3Dot(&portalNormal, &surfaceNormal) > 0.0f;
|
||||
|
||||
struct Vector2s16 startingPoint = *output;
|
||||
|
||||
minPortal = *output;
|
||||
maxPortal = *output;
|
||||
|
||||
|
@ -260,6 +262,16 @@ int portalSurfaceAdjustPosition(struct PortalSurface* surface, struct Transform*
|
|||
output->y += minOverlapOffset.y;
|
||||
}
|
||||
|
||||
// if the output position moved then adjust the loop
|
||||
if (startingPoint.equalTest != output->equalTest) {
|
||||
struct Vector2s16 offset;
|
||||
vector2s16Sub(output, &startingPoint, &offset);
|
||||
|
||||
for (int i = 0; i < PORTAL_LOOP_SIZE; ++i) {
|
||||
vector2s16Add(&outlineLoopOutput[i], &offset, &outlineLoopOutput[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// running out of iterations is a sign there isn't enough
|
||||
// room for the portal
|
||||
return iteration != MAX_POS_ADJUST_ITERATIONS;
|
||||
|
|
|
@ -318,7 +318,7 @@ int portalSurfaceNewEdge(struct PortalSurfaceBuilder* surfaceBuilder, int isLoop
|
|||
|
||||
int newEdgeIndex = surfaceBuilder->currentEdge;
|
||||
surfaceBuilder->isLoopEdge[surfaceBuilder->currentEdge] = isLoopEdge;
|
||||
surfaceBuilder->originalEdgeIndex = originalEdge;
|
||||
surfaceBuilder->originalEdgeIndex[newEdgeIndex] = *originalEdge;
|
||||
++surfaceBuilder->currentEdge;
|
||||
return newEdgeIndex;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue