2018-08-19 09:46:58 +02:00
|
|
|
#pragma once
|
2020-05-30 15:55:23 +02:00
|
|
|
#include "phd_global.h"
|
|
|
|
#include "items.h"
|
2020-07-11 21:16:04 +02:00
|
|
|
#include <Specific\setup.h>
|
2018-08-19 09:46:58 +02:00
|
|
|
|
2020-05-30 15:55:23 +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
|
|
|
|
int mikeAtLara; // size=0, offset=104
|
|
|
|
PHD_VECTOR mikePos; // size=12, offset=108
|
|
|
|
};
|
|
|
|
|
2020-05-30 17:58:09 +02:00
|
|
|
enum CAMERA_FLAGS
|
|
|
|
{
|
|
|
|
CF_FOLLOW_CENTER = 1,
|
|
|
|
CF_NO_CHUNKY = 2,
|
|
|
|
CF_CHASE_OBJECT = 3,
|
|
|
|
};
|
|
|
|
|
2020-05-30 15:55:23 +02:00
|
|
|
constexpr auto MAX_CAMERA = 18;
|
|
|
|
constexpr auto NO_MINY = 0xFFFFFF;
|
2018-08-19 09:46:58 +02:00
|
|
|
|
2020-01-18 20:52:57 +01:00
|
|
|
extern PHD_VECTOR CurrentCameraPosition;
|
2020-04-12 06:50:43 +02:00
|
|
|
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;
|
2020-07-11 21:16:04 +02:00
|
|
|
extern std::vector<OBJECT_VECTOR> FixedCameras;
|
2020-01-18 20:52:57 +01:00
|
|
|
|
2020-07-01 08:46:07 +02:00
|
|
|
void LookAt(CAMERA_INFO* cam, short roll);
|
2019-12-02 14:49:19 +01:00
|
|
|
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);
|
2020-04-09 14:19:18 +02:00
|
|
|
int CameraCollisionBounds(GAME_VECTOR* ideal, int push, int yFirst);
|
2020-04-11 18:32:57 +02:00
|
|
|
void FixedCamera(ITEM_INFO* item);
|
2020-04-10 07:20:14 +02:00
|
|
|
void LookCamera(ITEM_INFO* item);
|
2020-04-09 11:17:26 -03:00
|
|
|
void BounceCamera(ITEM_INFO* item, short bounce, short maxDistance);
|
2020-04-11 18:32:57 +02:00
|
|
|
void BinocularCamera(ITEM_INFO* item);
|
|
|
|
void LaraTorch(PHD_VECTOR* src, PHD_VECTOR* target, int rot, int color);
|
|
|
|
void ConfirmCameraTargetPos();
|
2020-08-09 00:54:57 -05:00
|
|
|
void CalculateCamera();
|
|
|
|
void LookLeftRight();
|
|
|
|
void LookUpDown();
|
|
|
|
void ResetLook();
|