Remove broken CollideStaticObjects function

# Conflicts:
#	TR5Main/Game/collide.cpp
This commit is contained in:
Lwmte 2021-09-02 11:20:41 +03:00 committed by Nils
parent cccd7a048b
commit fb65e68191
5 changed files with 13 additions and 93 deletions

View file

@ -911,7 +911,7 @@ void LaraAboveWater(ITEM_INFO* item, COLL_INFO* coll) //hmmmm
if (Lara.ExtraAnim == -1)
{
// Check for collision with items
LaraBaddieCollision(item, coll);
DoObjectCollision(item, coll);
// Handle Lara collision
if (Lara.Vehicle == NO_ITEM)
@ -1029,7 +1029,7 @@ void LaraUnderWater(ITEM_INFO* item, COLL_INFO* coll)
item->pos.yPos -= item->fallspeed * phd_sin(item->pos.xRot) / 4;
item->pos.zPos += phd_cos(item->pos.xRot) * item->fallspeed * phd_cos(item->pos.yRot) / 4;
LaraBaddieCollision(item, coll);
DoObjectCollision(item, coll);
if (/*Lara.ExtraAnim == -1 &&*/ Lara.Vehicle == NO_ITEM)
lara_collision_routines[item->currentAnimState](item, coll);
@ -1087,7 +1087,7 @@ void LaraSurface(ITEM_INFO* item, COLL_INFO* coll)
item->pos.xPos += item->fallspeed * phd_sin(Lara.moveAngle) / 4;
item->pos.zPos += item->fallspeed * phd_cos(Lara.moveAngle) / 4;
LaraBaddieCollision(item, coll);
DoObjectCollision(item, coll);
if (Lara.Vehicle == NO_ITEM)
lara_collision_routines[item->currentAnimState](item, coll);

View file

@ -20,87 +20,6 @@ BOUNDING_BOX GlobalCollisionBounds;
ITEM_INFO* CollidedItems[MAX_COLLIDED_OBJECTS];
MESH_INFO* CollidedMeshes[MAX_COLLIDED_OBJECTS];
int CollideStaticObjects(COLL_INFO* coll, int x, int y, int z, short roomNumber, int hite)
{
ROOM_INFO* room;
MESH_INFO* mesh;
short roomList[255];
short numRooms = 0;
int xMin = 0, xMax = 0, zMin = 0, zMax = 0;
int inXmin, inXmax, inZmin, inZmax, inYmin;
coll->hitStatic = false;
inXmin = x - coll->radius;
inXmax = x + coll->radius;
inZmin = z - coll->radius;
inZmax = z + coll->radius;
inYmin = y - hite;
// Collect all the rooms where to check
GetRoomList(roomNumber, roomList, &numRooms);
for (int i = 0; i < numRooms; i++)
{
room = &g_Level.Rooms[roomList[i]];
for (int j = 0; j < room->mesh.size(); j++, mesh++)
{
mesh = &room->mesh[j];
STATIC_INFO* sInfo = &StaticObjects[mesh->staticNumber];
if ((sInfo->flags & 1)) // No collision
continue;
int yMin = mesh->y + sInfo->collisionBox.Y1;
int yMax = mesh->y + sInfo->collisionBox.Y2;
short yRot = mesh->yRot;
if (yRot == ANGLE(180))
{
xMin = mesh->x - sInfo->collisionBox.X2;
xMax = mesh->x - sInfo->collisionBox.X1;
zMin = mesh->z - sInfo->collisionBox.Z2;
zMax = mesh->z - sInfo->collisionBox.Z1;
}
else if (yRot == -ANGLE(90))
{
xMin = mesh->x - sInfo->collisionBox.Z2;
xMax = mesh->x - sInfo->collisionBox.Z1;
zMin = mesh->z + sInfo->collisionBox.X1;
zMax = mesh->z + sInfo->collisionBox.X2;
}
else if (yRot == ANGLE(90))
{
xMin = mesh->x + sInfo->collisionBox.Z1;
xMax = mesh->x + sInfo->collisionBox.Z2;
zMin = mesh->z - sInfo->collisionBox.X2;
zMax = mesh->z - sInfo->collisionBox.X1;
}
else
{
xMin = mesh->x + sInfo->collisionBox.X1;
xMax = mesh->x + sInfo->collisionBox.X2;
zMin = mesh->z + sInfo->collisionBox.Z1;
zMax = mesh->z + sInfo->collisionBox.Z2;
}
if (inXmax <= xMin
|| inXmin >= xMax
|| y <= yMin
|| inYmin >= yMax
|| inZmax <= zMin
|| inZmin >= zMax)
continue;
coll->hitStatic = true;
return 1;
}
}
return 0;
}
int GetCollidedObjects(ITEM_INFO* collidingItem, int radius, int onlyVisible, ITEM_INFO** collidedItems, MESH_INFO** collidedMeshes, int ignoreLara)
{
ROOM_INFO* room;
@ -414,6 +333,8 @@ int ItemPushStatic(ITEM_INFO* l, BOUNDING_BOX* bounds, PHD_3DPOS* pos, COLL_INFO
|| rz >= maxZ)
return false;
coll->hitStatic = true;
left = rx - minX;
top = maxZ - rz;
bottom = rz - minZ;
@ -1413,8 +1334,6 @@ void GetCollisionInfo(COLL_INFO* coll, int xPos, int yPos, int zPos, int roomNum
else if (coll->lavaIsPit && coll->frontRight.Floor > 0 && collResult.BottomBlock->Flags.Death)
coll->frontRight.Floor = STOP_SIZE;
CollideStaticObjects(coll, xPos, yPos, zPos, topRoomNumber, objectHeight);
if (coll->middle.Floor == NO_HEIGHT)
{
coll->shift.x = coll->old.x - xPos;
@ -1853,8 +1772,6 @@ void GetObjectCollisionInfo(COLL_INFO* coll, int xPos, int yPos, int zPos, int r
coll->frontRight.Floor = STOP_SIZE;
else if (coll->lavaIsPit && coll->frontRight.Floor > 0 && collResult.BottomBlock->Flags.Death)
coll->frontRight.Floor = STOP_SIZE;
CollideStaticObjects(coll, xPos, yPos, zPos, topRoomNumber, objectHeight);
if (coll->middle.Floor == NO_HEIGHT)
{
@ -2521,7 +2438,7 @@ void DoProjectileDynamics(short itemNumber, int x, int y, int z, int xv, int yv,
ItemNewRoom(itemNumber, collResult.RoomNumber);
}
void LaraBaddieCollision(ITEM_INFO* l, COLL_INFO* coll)
void DoObjectCollision(ITEM_INFO* l, COLL_INFO* coll)
{
ITEM_INFO* item;
OBJECT_INFO* obj;
@ -2564,6 +2481,8 @@ void LaraBaddieCollision(ITEM_INFO* l, COLL_INFO* coll)
itemNumber = item->nextItem;
}
coll->hitStatic = false;
if (coll->enableBaddiePush)
{
for (int j = 0; j < g_Level.Rooms[roomsToCheck[i]].mesh.size(); j++)

View file

@ -86,7 +86,6 @@ extern ITEM_INFO* CollidedItems[MAX_ITEMS];
extern MESH_INFO* CollidedMeshes[MAX_ITEMS];
void GenericSphereBoxCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll);
int CollideStaticObjects(COLL_INFO* coll, int x, int y, int z, short roomNumber, int hite);
int GetCollidedObjects(ITEM_INFO* collidingItem, int radius, int flag1, ITEM_INFO** collidedItems, MESH_INFO** collidedMeshes, int flag2);
int TestWithGlobalCollisionBounds(ITEM_INFO* item, ITEM_INFO* lara, COLL_INFO* coll);
void TrapCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* c);
@ -111,7 +110,7 @@ void CreatureCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll);
void GetCollisionInfo(COLL_INFO* coll, int xPos, int yPos, int zPos, int roomNumber, int objectHeight);
void GetObjectCollisionInfo(COLL_INFO* coll, int xPos, int yPos, int zPos, int roomNumber, int objectHeight);
void DoProjectileDynamics(short itemNumber, int x, int y, int z, int xv, int yv, int zv);
void LaraBaddieCollision(ITEM_INFO* item, COLL_INFO* coll);
void DoObjectCollision(ITEM_INFO* item, COLL_INFO* coll);
bool ItemNearLara(PHD_3DPOS* pos, int radius);
bool ItemNearTarget(PHD_3DPOS* src, ITEM_INFO* target, int radius);
bool SnapToQuadrant(short& angle, int interval);

View file

@ -302,7 +302,7 @@ int BigGunControl(COLL_INFO *coll)
coll->enableSpaz = false;
coll->enableBaddiePush = false;
LaraBaddieCollision(lara, coll);
DoObjectCollision(lara, coll);
Camera.targetElevation = -ANGLE(15);
return 1;

View file

@ -733,7 +733,9 @@ static void DoUserInput(ITEM_INFO* v, ITEM_INFO* l, CART_INFO* cart)
coll.quadrant = short((v->pos.yRot + 0x2000) / 0x4000);
coll.radius = CART_RADIUS;
if (CollideStaticObjects(&coll, v->pos.xPos, v->pos.yPos, v->pos.zPos, v->roomNumber, CART_HEIGHT))
DoObjectCollision(v, &coll);
if (coll.hitStatic)
{
int hits;