Merge pull request #303 from westonCoder/portal-cover-height-fix
Fixes Portal Height
This commit is contained in:
commit
8ecb60dadc
|
@ -186,8 +186,8 @@ int collisionSceneIsTouchingSinglePortal(struct Vector3* contactPoint, struct Ve
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
localPoint.x *= (2.0f / PORTAL_COVER_WIDTH);
|
localPoint.x *= (1.0f / PORTAL_COVER_WIDTH_RADIUS);
|
||||||
localPoint.y *= (2.0f / PORTAL_COVER_HEIGHT);
|
localPoint.y *= (1.0f / PORTAL_COVER_HEIGHT_RADIUS);
|
||||||
localPoint.z = 0.0f;
|
localPoint.z = 0.0f;
|
||||||
|
|
||||||
if (vector3MagSqrd(&localPoint) >= 1.0f) {
|
if (vector3MagSqrd(&localPoint) >= 1.0f) {
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
#include "point_constraint.h"
|
#include "point_constraint.h"
|
||||||
|
|
||||||
#define PORTAL_COVER_HEIGHT 0.708084f
|
#define PORTAL_COVER_HEIGHT_RADIUS 0.708084f
|
||||||
#define PORTAL_COVER_WIDTH 0.84085f
|
#define PORTAL_COVER_WIDTH_RADIUS 0.420425f
|
||||||
|
|
||||||
#define PORTAL_THICKNESS 0.11f
|
#define PORTAL_THICKNESS 0.11f
|
||||||
|
|
||||||
|
|
|
@ -30,14 +30,14 @@ struct ColliderTypeData gPortalColliderType = {
|
||||||
#define CALC_SCREEN_SPACE(clip_space, screen_size) ((clip_space + 1.0f) * ((screen_size) / 2))
|
#define CALC_SCREEN_SPACE(clip_space, screen_size) ((clip_space + 1.0f) * ((screen_size) / 2))
|
||||||
|
|
||||||
struct Vector3 gPortalOutline[PORTAL_LOOP_SIZE] = {
|
struct Vector3 gPortalOutline[PORTAL_LOOP_SIZE] = {
|
||||||
{0.0f, 1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
|
{0.0f, 1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
|
||||||
{0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
|
{0.707107f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
|
||||||
{0.5f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.0f, 0},
|
{1.0f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, 0.0f, 0},
|
||||||
{0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, -0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 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, 0},
|
{0.0f, -1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
|
||||||
{-0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, -0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 0},
|
{-0.707107f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, -1.0f * SCENE_SCALE * PORTAL_COVER_HEIGHT_RADIUS, 0},
|
||||||
{-0.5f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.0f, 0},
|
{-1.0f * SCENE_SCALE * PORTAL_COVER_WIDTH_RADIUS, 0.0f, 0},
|
||||||
{-0.353553f * SCENE_SCALE * PORTAL_COVER_WIDTH, 0.707107f * SCENE_SCALE * PORTAL_COVER_HEIGHT, 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)
|
#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;
|
bb->min = bb->max = portalTransform->position;
|
||||||
|
|
||||||
struct Vector3 nextDir;
|
struct Vector3 nextDir;
|
||||||
vector3Scale(&portalUp, &nextDir, PORTAL_COVER_HEIGHT * 0.5f);
|
vector3Scale(&portalUp, &nextDir, PORTAL_COVER_HEIGHT_RADIUS);
|
||||||
box3DExtendDirection(bb, &nextDir, bb);
|
box3DExtendDirection(bb, &nextDir, bb);
|
||||||
vector3Negate(&nextDir, &nextDir);
|
vector3Negate(&nextDir, &nextDir);
|
||||||
box3DExtendDirection(bb, &nextDir, bb);
|
box3DExtendDirection(bb, &nextDir, bb);
|
||||||
|
|
||||||
vector3Scale(&portalRight, &nextDir, PORTAL_COVER_WIDTH * 0.5f);
|
vector3Scale(&portalRight, &nextDir, PORTAL_COVER_WIDTH_RADIUS);
|
||||||
box3DExtendDirection(bb, &nextDir, bb);
|
box3DExtendDirection(bb, &nextDir, bb);
|
||||||
vector3Negate(&nextDir, &nextDir);
|
vector3Negate(&nextDir, &nextDir);
|
||||||
box3DExtendDirection(bb, &nextDir, bb);
|
box3DExtendDirection(bb, &nextDir, bb);
|
||||||
|
|
|
@ -266,7 +266,7 @@ int renderPlanPortal(struct RenderPlan* renderPlan, struct Scene* scene, struct
|
||||||
struct Vector3 cameraForward;
|
struct Vector3 cameraForward;
|
||||||
quatMultVector(&next->camera.transform.rotation, &gForward, &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) {
|
if (next->camera.nearPlane < current->camera.nearPlane) {
|
||||||
next->camera.nearPlane = current->camera.nearPlane;
|
next->camera.nearPlane = current->camera.nearPlane;
|
||||||
|
|
Loading…
Reference in a new issue