mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-08 03:28:03 +03:00
Remove more unused globals, refactor ObjectOnLOS
This commit is contained in:
parent
5d3e58e85e
commit
27a9009f33
7 changed files with 37 additions and 44 deletions
|
@ -57,14 +57,12 @@ CAMERA_INFO Camera;
|
|||
GAME_VECTOR ForcedFixedCamera;
|
||||
int UseForcedFixedCamera;
|
||||
int NumberCameras;
|
||||
int SniperCameraActive;
|
||||
int BinocularRange;
|
||||
int BinocularOn;
|
||||
CAMERA_TYPE BinocularOldCamera;
|
||||
int LaserSight;
|
||||
int PhdPerspective;
|
||||
short CurrentFOV;
|
||||
int GetLaraOnLOS;
|
||||
|
||||
int RumbleTimer = 0;
|
||||
int RumbleCounter = 0;
|
||||
|
|
|
@ -57,14 +57,12 @@ extern CAMERA_INFO Camera;
|
|||
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 PhdPerspective;
|
||||
extern short CurrentFOV;
|
||||
extern int GetLaraOnLOS;
|
||||
|
||||
void LookAt(CAMERA_INFO* cam, short roll);
|
||||
void AlterFOV(int value);
|
||||
|
|
|
@ -212,12 +212,12 @@ GAME_STATUS ControlPhase(int numFrames, int demoMode)
|
|||
// Handle lasersight and binocular
|
||||
if (CurrentLevel != 0)
|
||||
{
|
||||
if (!(TrInput & IN_LOOK) || SniperCameraActive || UseSpotCam || TrackCameraInit ||
|
||||
if (!(TrInput & IN_LOOK) || UseSpotCam || TrackCameraInit ||
|
||||
((LaraItem->currentAnimState != LS_STOP || LaraItem->animNumber != LA_STAND_IDLE) && (!Lara.isDucked || TrInput & IN_DUCK || LaraItem->animNumber != LA_CROUCH_IDLE || LaraItem->goalAnimState != LS_CROUCH_IDLE)))
|
||||
{
|
||||
if (BinocularRange == 0)
|
||||
{
|
||||
if (SniperCameraActive || UseSpotCam || TrackCameraInit)
|
||||
if (UseSpotCam || TrackCameraInit)
|
||||
TrInput &= ~IN_LOOK;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -298,26 +298,19 @@ int GetTargetOnLOS(GAME_VECTOR* src, GAME_VECTOR* dest, int DrawTarget, int firi
|
|||
return hit;
|
||||
}
|
||||
|
||||
int ObjectOnLOS2(GAME_VECTOR* start, GAME_VECTOR* end, PHD_VECTOR* vec, MESH_INFO** mesh)
|
||||
int ObjectOnLOS2(GAME_VECTOR* start, GAME_VECTOR* end, PHD_VECTOR* vec, MESH_INFO** mesh, GAME_OBJECT_ID priorityObject)
|
||||
{
|
||||
int r, m;
|
||||
ROOM_INFO* room;
|
||||
short linknum;
|
||||
ITEM_INFO* item;
|
||||
PHD_3DPOS pos;
|
||||
MESH_INFO* meshp;
|
||||
BOUNDING_BOX* box;
|
||||
|
||||
ClosestItem = NO_LOS_ITEM;
|
||||
ClosestDist = SQUARE(end->x - start->x) + SQUARE(end->y - start->y) + SQUARE(end->z - start->z);
|
||||
|
||||
for (r = 0; r < NumberLosRooms; ++r)
|
||||
for (int r = 0; r < NumberLosRooms; ++r)
|
||||
{
|
||||
room = &g_Level.Rooms[LosRooms[r]];
|
||||
PHD_3DPOS pos;
|
||||
auto room = &g_Level.Rooms[LosRooms[r]];
|
||||
|
||||
for (m = 0; m < room->mesh.size(); m++)
|
||||
for (int m = 0; m < room->mesh.size(); m++)
|
||||
{
|
||||
meshp = &room->mesh[m];
|
||||
auto meshp = &room->mesh[m];
|
||||
|
||||
if (meshp->flags & StaticMeshFlags::SM_VISIBLE)
|
||||
{
|
||||
|
@ -334,17 +327,23 @@ int ObjectOnLOS2(GAME_VECTOR* start, GAME_VECTOR* end, PHD_VECTOR* vec, MESH_INF
|
|||
}
|
||||
}
|
||||
|
||||
for (linknum = room->itemNumber; linknum != NO_ITEM; linknum = g_Level.Items[linknum].nextItem)
|
||||
for (short linknum = room->itemNumber; linknum != NO_ITEM; linknum = g_Level.Items[linknum].nextItem)
|
||||
{
|
||||
item = &g_Level.Items[linknum];
|
||||
auto item = &g_Level.Items[linknum];
|
||||
|
||||
if (item->status != ITEM_DEACTIVATED && item->status != ITEM_INVISIBLE
|
||||
&& (item->objectNumber != ID_LARA
|
||||
&& Objects[item->objectNumber].collision != NULL
|
||||
|| item->objectNumber == ID_LARA
|
||||
&& GetLaraOnLOS))
|
||||
{
|
||||
box = GetBoundsAccurate(item);
|
||||
if ((item->status == ITEM_DEACTIVATED) || (item->status == ITEM_INVISIBLE))
|
||||
continue;
|
||||
|
||||
if ((priorityObject != GAME_OBJECT_ID::ID_NO_OBJECT) && (item->objectNumber != priorityObject))
|
||||
continue;
|
||||
|
||||
if ((item->objectNumber != ID_LARA) && (Objects[item->objectNumber].collision == NULL))
|
||||
continue;
|
||||
|
||||
if ((item->objectNumber == ID_LARA) && (priorityObject != ID_LARA))
|
||||
continue;
|
||||
|
||||
auto box = GetBoundsAccurate(item);
|
||||
|
||||
pos.xPos = item->pos.xPos;
|
||||
pos.yPos = item->pos.yPos;
|
||||
|
@ -357,7 +356,6 @@ int ObjectOnLOS2(GAME_VECTOR* start, GAME_VECTOR* end, PHD_VECTOR* vec, MESH_INF
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vec->x = ClosestCoord.x;
|
||||
vec->y = ClosestCoord.y;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
#include "room.h"
|
||||
#include "Specific\phd_global.h"
|
||||
#include "objectslist.h"
|
||||
#include "Specific/phd_global.h"
|
||||
|
||||
constexpr auto NO_LOS_ITEM = INT_MAX;
|
||||
|
||||
|
@ -9,5 +10,5 @@ int xLOS(GAME_VECTOR* start, GAME_VECTOR* end);
|
|||
int zLOS(GAME_VECTOR* start, GAME_VECTOR* end);
|
||||
int ClipTarget(GAME_VECTOR* start, GAME_VECTOR* target);
|
||||
int GetTargetOnLOS(GAME_VECTOR* src, GAME_VECTOR* dest, int DrawTarget, int firing);
|
||||
int ObjectOnLOS2(GAME_VECTOR* start, GAME_VECTOR* end, PHD_VECTOR* vec, MESH_INFO** mesh);
|
||||
int ObjectOnLOS2(GAME_VECTOR* start, GAME_VECTOR* end, PHD_VECTOR* vec, MESH_INFO** mesh, GAME_OBJECT_ID priorityObject = GAME_OBJECT_ID::ID_NO_OBJECT);
|
||||
int DoRayBox(GAME_VECTOR* start, GAME_VECTOR* end, BOUNDING_BOX* box, PHD_3DPOS* itemOrStaticPos, PHD_VECTOR* hitPos, short closesItemNumber);
|
|
@ -79,13 +79,9 @@ void ControlGunShip(short itemNumber)
|
|||
if (!(GlobalCounter & 1))
|
||||
return AnimateItem(item);
|
||||
|
||||
GetLaraOnLOS = 1;
|
||||
|
||||
PHD_VECTOR hitPos;
|
||||
MESH_INFO* hitMesh = NULL;
|
||||
int objOnLos = ObjectOnLOS2(&start, &end, &hitPos, &hitMesh);
|
||||
|
||||
GetLaraOnLOS = 0;
|
||||
int objOnLos = ObjectOnLOS2(&start, &end, &hitPos, &hitMesh, GAME_OBJECT_ID::ID_LARA);
|
||||
|
||||
if (objOnLos == NO_LOS_ITEM || objOnLos < 0)
|
||||
{
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
enum GAME_OBJECT_ID : short
|
||||
{
|
||||
ID_NO_OBJECT = -1,
|
||||
|
||||
/* Lara Primary Slot */
|
||||
ID_LARA,
|
||||
ID_LARA_EXTRA_ANIMS,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue