TombEngine/TR5Main/Game/camera.h

89 lines
2.7 KiB
C
Raw Normal View History

2018-08-19 09:46:58 +02:00
#pragma once
#include "phd_global.h"
#include "items.h"
2018-08-19 09:46:58 +02:00
typedef enum CAMERA_TYPE
{
CHASE_CAMERA,
FIXED_CAMERA,
LOOK_CAMERA,
COMBAT_CAMERA,
CINEMATIC_CAMERA,
HEAVY_CAMERA
};
typedef struct CAMERA_INFO
{
GAME_VECTOR pos; // size=16, offset=0
GAME_VECTOR target; // size=16, offset=16
CAMERA_TYPE type; // size=4, offset=32
CAMERA_TYPE oldType; // size=4, offset=36
int shift; // size=0, offset=40
int flags; // size=0, offset=44
int fixedCamera; // size=0, offset=48
int numberFrames; // size=0, offset=52
int bounce; // size=0, offset=56
int underwater; // size=0, offset=60
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
OBJECT_VECTOR* fixed; // size=16, offset=100
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;
2018-08-19 09:46:58 +02:00
extern PHD_VECTOR CurrentCameraPosition;
extern CAMERA_INFO Camera;
2020-04-12 07:08:22 +02:00
extern GAME_VECTOR ForcedFixedCamera;
extern int UseForcedFixedCamera;
extern int NumberCameras;
extern int SniperCameraActive;
extern int BinocularRange;
extern int BinocularOn;
extern CAMERA_TYPE BinocularOldCamera;
extern int LaserSight;
extern int SniperCount;
extern int ExitingBinocular;
2020-04-23 19:22:01 +02:00
extern int PhdPerspective;
2020-04-24 19:15:05 +02:00
extern short CurrentFOV;
extern int GetLaraOnLOS;
extern int SniperOverlay;
2019-12-15 16:19:01 +01:00
void ActivateCamera();
void LookAt(int posX, int posY, int posZ, int targetX, int targetY, int targetZ, short roll);
void AlterFOV(int value);
2019-12-28 15:19:33 -03:00
int mgLOS(GAME_VECTOR* start, GAME_VECTOR* target, int push);
2020-04-08 09:06:33 +02:00
void InitialiseCamera();
2020-04-08 13:18:31 +02:00
void MoveCamera(GAME_VECTOR* ideal, int speed);
2020-04-08 13:28:26 +02:00
void ChaseCamera(ITEM_INFO* item);
void UpdateCameraElevation();
2020-04-09 06:51:52 +02:00
void CombatCamera(ITEM_INFO* item);
int CameraCollisionBounds(GAME_VECTOR* ideal, int push, int yFirst);
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 LaraTorch(PHD_VECTOR* src, PHD_VECTOR* target, int rot, int color);
void ConfirmCameraTargetPos();
2020-04-24 19:15:05 +02:00
void CalculateCamera();