TombEngine/TR5Main/Game/camera.h

104 lines
3 KiB
C
Raw Normal View History

2020-12-21 13:16:29 -03:00
#pragma once
2021-12-22 16:23:57 +03:00
#include "Game/items.h"
2021-12-24 03:32:19 +03:00
#include "Specific/phd_global.h"
2020-12-21 13:16:29 -03:00
enum class CameraType
2020-12-21 13:16:29 -03:00
{
Chase,
Fixed,
Look,
Combat,
Heavy
2020-12-21 13:16:29 -03:00
};
struct CAMERA_INFO
2020-12-21 13:16:29 -03:00
{
GAME_VECTOR pos; // size=16, offset=0
GAME_VECTOR target; // size=16, offset=16
CameraType type; // size=4, offset=32
CameraType oldType; // size=4, offset=36
2020-12-21 13:16:29 -03:00
int shift; // size=0, offset=40
int flags; // size=0, offset=44
2021-11-08 19:28:14 +03:00
bool fixedCamera; // size=0, offset=48
bool underwater; // size=0, offset=60
2020-12-21 13:16:29 -03:00
int numberFrames; // size=0, offset=52
int bounce; // size=0, offset=56
int targetDistance; // size=0, offset=64
short targetAngle; // size=0, offset=68
short targetElevation; // size=0, offset=70
short actualElevation; // size=0, offset=72
short actualAngle; // size=0, offset=74
short laraNode; // size=0, offset=76
short box; // size=0, offset=78
short number; // size=0, offset=80
short last; // size=0, offset=82
short timer; // size=0, offset=84
short speed; // size=0, offset=86
short targetspeed; // size=0, offset=88
ITEM_INFO* item; // size=144, offset=92
ITEM_INFO* lastItem; // size=144, offset=96
int mikeAtLara; // size=0, offset=104
PHD_VECTOR mikePos; // size=12, offset=108
};
enum CAMERA_FLAGS
{
CF_FOLLOW_CENTER = 1,
CF_NO_CHUNKY = 2,
CF_CHASE_OBJECT = 3,
};
constexpr auto MAX_CAMERA = 18;
constexpr auto NO_MINY = 0xFFFFFF;
constexpr auto FADE_SCREEN_SPEED = 16.0f / 255.0f;
2020-12-21 13:16:29 -03:00
extern PHD_VECTOR CurrentCameraPosition;
extern CAMERA_INFO Camera;
extern GAME_VECTOR ForcedFixedCamera;
extern int UseForcedFixedCamera;
extern int NumberCameras;
extern int BinocularRange;
extern int BinocularOn;
extern CameraType BinocularOldCamera;
2021-11-08 19:35:17 +03:00
extern bool LaserSight;
2020-12-21 13:16:29 -03:00
extern int PhdPerspective;
extern short CurrentFOV;
extern bool ScreenFadedOut;
extern bool ScreenFading;
extern float ScreenFadeSpeed;
extern float ScreenFadeStart;
extern float ScreenFadeEnd;
extern float ScreenFadeCurrent;
extern float CinematicBarsDestinationHeight;
extern float CinematicBarsHeight;
extern float CinematicBarsSpeed;
2020-12-21 13:16:29 -03:00
void LookAt(CAMERA_INFO* cam, short roll);
void AlterFOV(int value);
void InitialiseCamera();
void MoveCamera(GAME_VECTOR* ideal, int speed);
void ChaseCamera(ITEM_INFO* item);
void UpdateCameraElevation();
void CombatCamera(ITEM_INFO* item);
2021-11-10 11:26:58 +11:00
bool CameraCollisionBounds(GAME_VECTOR* ideal, int push, int yFirst);
2020-12-21 13:16:29 -03:00
void FixedCamera(ITEM_INFO* item);
void LookCamera(ITEM_INFO* item);
void BounceCamera(ITEM_INFO* item, short bounce, short maxDistance);
void BinocularCamera(ITEM_INFO* item);
void ConfirmCameraTargetPos();
void CalculateCamera();
void LookLeftRight(ITEM_INFO* item);
void LookUpDown(ITEM_INFO* item);
void ResetLook(ITEM_INFO* item);
2021-11-10 11:26:58 +11:00
void RumbleScreen();
2021-10-10 03:51:26 +03:00
bool TestBoundsCollideCamera(BOUNDING_BOX* bounds, PHD_3DPOS* pos, short radius);
void ItemPushCamera(BOUNDING_BOX* bounds, PHD_3DPOS* pos, short radius);
void ItemsCollideCamera();
void SetScreenFadeOut(float speed);
void SetScreenFadeIn(float speed);
void SetCinematicBars(float height, float speed);
void UpdateFadeScreenAndCinematicBars();