14 s32
zoneID =
test_ray_zones(x, y, z, 0.0f, -1.0f, 0.0f, &
hitX, &
hitY, &
hitZ, &
hitDepth, &
nx, &
ny, &
nz);
80 switch (curSettings->
type) {
89 if (curSettings->
flag) {
134 }
else if (
t > 1.0f) {
138 if (!curSettings->
flag) {
149 if (curSettings->
flag) {
190 if (curSettings ==
NULL) {
195 switch (curSettings->
type) {
230 if (curSettings->
flag) {
253 if (*interpAlpha != 1.0f) {
258 && prevSettings->
type == curSettings->
type
262 && prevSettings->
flag != curSettings->
flag
297 }
else if (
t > 1.0f) {
301 if (!curSettings->
flag) {
311 if (*interpAlpha != 1.0f) {
316 && (prevSettings->
type == curSettings->
type)
320 && (prevSettings->
flag != curSettings->
flag)
354 if (curSettings->
flag) {
373 if (*interpAlpha != 1.0f) {
378 && (prevSettings->
type == curSettings->
type)
382 && (prevSettings->
flag != curSettings->
flag)
383 && (prevSettings->
points.two.Ax == curSettings->
points.two.Ax)
384 && (prevSettings->
points.two.Az == curSettings->
points.two.Az)
401 if (!curSettings->
flag) {
404 if (Ax == Bx && Az == Bz) {
470 if (!curSettings->
flag) {
550 camera->yinterpAlpha = 0.0f;
551 }
else if (
camera->yinterpGoal != targetY) {
552 camera->yinterpGoal = targetY;
553 camera->yinterpAlpha = 0.0f;
558 camera->yinterpGoal = targetY;
559 camera->yinterpAlpha = 1.0f;
564 if (
camera->yinterpAlpha > 1.0f) {
565 camera->yinterpAlpha = 1.0f;
569 camera->yinterpAlpha += 0.3f;
570 if (
camera->yinterpAlpha >= 1.0f) {
571 camera->yinterpAlpha = 1.0f;
640 camera->targetOffsetY = 0.0f;
704 targetX =
camera->targetPos.x;
705 targetY =
camera->targetPos.y;
706 targetZ =
camera->targetPos.z;
709 if (
camera->needsReinit) {
712 camera->linearInterp = 0.0f;
713 camera->yinterpAlpha = 1.0f;
714 camera->yinterpGoal = 0.0f;
715 camera->yinterpCur = targetY;
717 camera->interpEasingParameter = 0.0f;
718 camera->interpAlpha = 1.0f;
719 camera->linearInterpRate = 1.0f;
721 camera->prevTargetPos.x = 0.0f;
722 camera->prevTargetPos.y = 0.0f;
723 camera->prevTargetPos.z = 0.0f;
734 ||
camera->prevTargetPos.x != targetX
735 ||
camera->prevTargetPos.y != targetY
736 ||
camera->prevTargetPos.z != targetZ
739 if (
camera->useOverrideSettings) {
746 curSettings =
camera->curSettings;
748 && curSettings !=
NULL
797 if (
camera->interpAlpha == 1.0f) {
807 camera->interpAlpha = 0.0f;
808 camera->linearInterp = 0.0f;
824 camera->prevTargetPos.x = targetX;
825 camera->prevTargetPos.y = targetY;
826 camera->prevTargetPos.z = targetZ;
835 if (
camera->prevPrevUseOverride) {
836 posX =
camera->prevPrevMovePos.x;
837 posY =
camera->prevPrevMovePos.y;
838 posZ =
camera->prevPrevMovePos.z;
841 posY =
camera->yinterpCur;
845 if (
camera->prevUseOverride) {
858 posX, posY, posZ,
tX,
tY,
tZ,
861 if (
camera->needsReinit) {
864 camera->interpAlpha = 1.0f;
867 if (
camera->prevRig.boomYaw -
camera->nextRig.boomYaw > 180.0f) {
868 camera->prevRig.boomYaw -= 360.0f;
870 if (
camera->prevRig.boomYaw -
camera->nextRig.boomYaw < -180.0f) {
871 camera->prevRig.boomYaw += 360.0f;
877 if (
camera->linearInterp > 1.0f) {
878 camera->linearInterp = 1.0f;
881 if (
camera->interpAlpha < 1.0f) {
898 if (
camera->interpAlpha >= 1.0f) {
899 camera->interpAlpha = 1.0f;
900 camera->linearInterp = 0.0f;
905 #define CAM_INTERP(field) CurrentCamRig.field = \
906 (camera->prevRig.field * (1.0f - camera->interpAlpha)) + (camera->nextRig.field * camera->interpAlpha)
BSS s32 PopupMenu_SelectedIndex
void interp_camera_y_position(Camera *camera, f32 targetY)
BSS CameraRig CurrentCamRig
void update_camera_zone_interp(Camera *camera)
f32 get_maximum_interp_delta(Camera *camera)
@ CAMERA_SETTINGS_PTR_MINUS_1
@ CAMERA_SETTINGS_PTR_MINUS_2
@ CAMERA_SETTINGS_PTR_NULL
void update_camera_from_controller(Camera *camera, CameraRig *prevRig, CameraControlSettings **prevSettingsPtr, CameraRig *newRig, CameraControlSettings **curSettingsPtr, f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2, f32 *interpAlpha, b32 changingMap, b32 changingZone)
CameraControlSettings * test_ray_zone_aabb(f32 x, f32 y, f32 z)
void set_camera_from_rig(Camera *camera, CameraRig *rig)
void apply_fixed_orientation(CameraControlSettings *controller, CameraRig *configuration, f32 x, f32 y, f32 z)
#define CAM_INTERP(field)
union CameraControlSettings::@14 points
@ CAM_CONTROL_FIXED_ORIENTATION
@ CAM_CONTROL_FIXED_POS_AND_ORIENTATION
@ CAM_CONTROL_CONSTRAIN_TO_LINE
@ CAM_CONTROL_FOLLOW_PLAYER
@ CAM_CONTROL_CONSTAIN_BETWEEN_POINTS
@ CAM_CONTROL_LOOK_AT_POINT
@ CAM_CONTROL_LOOK_AT_POINT_CONSTAIN_TO_LINE
@ CAMERA_MOVE_IGNORE_PLAYER_Y
@ CAMERA_MOVE_ACCEL_INTERP_Y
@ CAMERA_MOVE_NO_INTERP_Y
s32 test_ray_zones(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ, f32 *hitX, f32 *hitY, f32 *hitZ, f32 *hitDepth, f32 *nx, f32 *ny, f32 *nz)
CollisionData gZoneCollisionData