mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-10 20:46:47 +03:00
Remove broken CollideStaticObjects function
# Conflicts: # TR5Main/Game/collide.cpp
This commit is contained in:
parent
cccd7a048b
commit
fb65e68191
5 changed files with 13 additions and 93 deletions
|
@ -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);
|
||||
|
|
|
@ -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++)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue