TombEngine/TR5Main/Game/camera.cpp

37 lines
914 B
C++
Raw Normal View History

#include "camera.h"
2018-08-19 09:46:58 +02:00
#include <d3d9.h>
#include <d3dx9.h>
#include <stdio.h>
#include "draw.h"
2019-12-15 16:19:01 +01:00
extern int KeyTriggerActive;
void ActivateCamera()
{
KeyTriggerActive = 2;
}
void LookAt(int posX, int posY, int posZ, int targetX, int targetY, int targetZ, short roll)
2018-08-19 09:46:58 +02:00
{
2019-01-13 21:57:16 +01:00
Vector3 position = Vector3(posX, posY, posZ);
Vector3 target = Vector3(targetX, targetY, targetZ);
Vector3 up = Vector3(0.0f, -1.0f, 0.0f);
float fov = TR_ANGLE_TO_RAD(CurrentFOV / 1.333333f);
float r = TR_ANGLE_TO_RAD(roll);
2018-08-19 09:46:58 +02:00
g_Renderer->UpdateCameraMatrices(posX, posY, posZ, targetX, targetY, targetZ, r, fov);
2018-08-19 09:46:58 +02:00
}
void AlterFOV(int value)
2019-01-13 21:57:16 +01:00
{
2019-12-18 00:25:19 -03:00
if (SIN(value / 2) == 0) return; /* @FIXME Integer division by zero */
2018-08-19 09:46:58 +02:00
CurrentFOV = value;
PhdPerspective = PhdWidth / 2 * COS(CurrentFOV / 2) / SIN(CurrentFOV / 2);
2018-08-19 09:46:58 +02:00
}
void Inject_Camera()
{
INJECT(0x0048EDC0, AlterFOV);
INJECT(0x0048F760, LookAt);
2018-08-19 09:46:58 +02:00
}