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