Some more portal polish

This commit is contained in:
James Lambert 2022-07-07 22:43:56 -06:00
parent 421c943132
commit 1e2e20d828
6 changed files with 21 additions and 11 deletions

View file

@ -291,6 +291,14 @@ void portalRender(struct Portal* portal, struct Portal* otherPortal, struct Rend
}
struct RenderProps nextProps;
int portalIndex = portal < otherPortal ? 0 : 1;
if (props->clippingPortalIndex == portalIndex) {
nextProps.minX = 0;
nextProps.maxX = SCREEN_WD;
nextProps.minY = 0;
nextProps.maxY = SCREEN_HT;
} else {
screenClipperInitWithCamera(&clipper, &props->camera, (float)SCREEN_WD / (float)SCREEN_HT, portalTransform);
@ -307,6 +315,7 @@ void portalRender(struct Portal* portal, struct Portal* otherPortal, struct Rend
nextProps.maxX = MIN(nextProps.maxX, props->maxX);
nextProps.minY = MAX(nextProps.minY, props->minY);
nextProps.maxY = MIN(nextProps.maxY, props->maxY);
}
if (nextProps.minX < nextProps.maxX && nextProps.minY < nextProps.maxY) {
renderPropsNext(props, &nextProps, &portal->transform, &otherPortal->transform, renderState);
@ -323,6 +332,7 @@ void portalRender(struct Portal* portal, struct Portal* otherPortal, struct Rend
guMtxF2L(portalTransform, matrix);
gSPMatrix(renderState->dl++, matrix, G_MTX_MODELVIEW | G_MTX_PUSH | G_MTX_MUL);
gSPDisplayList(renderState->dl++, portal_portal_face_model_gfx);
gDPPipeSync(renderState->dl++);
if (portal->flags & PortalFlagsOddParity) {