Merge pull request #303 from westonCoder/portal-cover-height-fix

Fixes Portal Height
This commit is contained in:
lambertjamesd 2023-10-16 14:54:07 -06:00 committed by GitHub
commit 8ecb60dadc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 15 deletions

View file

@ -186,8 +186,8 @@ int collisionSceneIsTouchingSinglePortal(struct Vector3* contactPoint, struct Ve
return 0;
}
localPoint.x *= (2.0f / PORTAL_COVER_WIDTH);
localPoint.y *= (2.0f / PORTAL_COVER_HEIGHT);
localPoint.x *= (1.0f / PORTAL_COVER_WIDTH_RADIUS);
localPoint.y *= (1.0f / PORTAL_COVER_HEIGHT_RADIUS);
localPoint.z = 0.0f;
if (vector3MagSqrd(&localPoint) >= 1.0f) {

View file

@ -8,8 +8,8 @@
#include "defs.h"
#include "point_constraint.h"
#define PORTAL_COVER_HEIGHT 0.708084f
#define PORTAL_COVER_WIDTH 0.84085f
#define PORTAL_COVER_HEIGHT_RADIUS 0.708084f
#define PORTAL_COVER_WIDTH_RADIUS 0.420425f
#define PORTAL_THICKNESS 0.11f

View file

@ -30,14 +30,14 @@ struct ColliderTypeData gPortalColliderType = {
#define CALC_SCREEN_SPACE(clip_space, screen_size) ((clip_space + 1.0f) * ((screen_size) / 2))
struct Vector3 gPortalOutline[PORTAL_LOOP_SIZE] = {
{0.0f, 1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
{0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
{0.5f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.0f, 0},
{0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, -0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
{0.0f, -1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
{-0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, -0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
{-0.5f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.0f, 0},
{-0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
{0.0f, 1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
{0.707107f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
{1.0f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, 0.0f, 0},
{0.707107f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, -1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
{0.0f, -1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
{-0.707107f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, -1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
{-1.0f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, 0.0f, 0},
{-0.707107f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
};
#define PORTAL_CLIPPING_PLANE_BIAS (SCENE_SCALE * 0.25f)
@ -86,12 +86,12 @@ void portalCalculateBB(struct Transform* portalTransform, struct Box3D* bb) {
bb->min = bb->max = portalTransform->position;
struct Vector3 nextDir;
vector3Scale(&portalUp, &nextDir, PORTAL_COVER_HEIGHT * 0.5f);
vector3Scale(&portalUp, &nextDir, PORTAL_COVER_HEIGHT_RADIUS);
box3DExtendDirection(bb, &nextDir, bb);
vector3Negate(&nextDir, &nextDir);
box3DExtendDirection(bb, &nextDir, bb);
vector3Scale(&portalRight, &nextDir, PORTAL_COVER_WIDTH * 0.5f);
vector3Scale(&portalRight, &nextDir, PORTAL_COVER_WIDTH_RADIUS);
box3DExtendDirection(bb, &nextDir, bb);
vector3Negate(&nextDir, &nextDir);
box3DExtendDirection(bb, &nextDir, bb);

View file

@ -266,7 +266,7 @@ int renderPlanPortal(struct RenderPlan* renderPlan, struct Scene* scene, struct
struct Vector3 cameraForward;
quatMultVector(&next->camera.transform.rotation, &gForward, &cameraForward);
next->camera.nearPlane = (-vector3Dot(&portalOffset, &cameraForward)) * SCENE_SCALE - SCENE_SCALE * PORTAL_COVER_HEIGHT * 0.5f;
next->camera.nearPlane = (-vector3Dot(&portalOffset, &cameraForward)) * SCENE_SCALE - SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS;
if (next->camera.nearPlane < current->camera.nearPlane) {
next->camera.nearPlane = current->camera.nearPlane;