mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-02 17:57:59 +03:00
Add GetWaterSurface(), GetWaterDepth() and GetWaterHeight() overrides; cleanup
This commit is contained in:
parent
dc080b8298
commit
9c6003cd39
10 changed files with 70 additions and 63 deletions
|
@ -450,8 +450,8 @@ void LaraControl(ITEM_INFO* item, COLL_INFO* coll)
|
|||
bool isWater = TestEnvironment(ENV_FLAG_WATER, item);
|
||||
bool isSwamp = TestEnvironment(ENV_FLAG_SWAMP, item);
|
||||
|
||||
int waterDepth = GetWaterDepth(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
|
||||
int waterHeight = GetWaterHeight(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
|
||||
int waterDepth = GetWaterDepth(item);
|
||||
int waterHeight = GetWaterHeight(item);
|
||||
|
||||
int heightFromWater;
|
||||
if (waterHeight != NO_HEIGHT)
|
||||
|
@ -520,7 +520,7 @@ void LaraControl(ITEM_INFO* item, COLL_INFO* coll)
|
|||
info->waterStatus = LW_WADE;
|
||||
|
||||
// Make splash ONLY within this particular threshold before swim depth while airborne (WadeSplash() above interferes otherwise).
|
||||
if (waterDepth > (SWIM_DEPTH - STEP_SIZE) &&
|
||||
if (waterDepth > (SWIM_DEPTH - CLICK(1)) &&
|
||||
!isSwamp &&
|
||||
item->airborne)
|
||||
{
|
||||
|
@ -547,13 +547,13 @@ void LaraControl(ITEM_INFO* item, COLL_INFO* coll)
|
|||
case LW_UNDERWATER:
|
||||
if (isWater ||
|
||||
waterDepth == DEEP_WATER ||
|
||||
abs(heightFromWater) >= STEP_SIZE ||
|
||||
abs(heightFromWater) >= CLICK(1) ||
|
||||
item->animNumber == LA_UNDERWATER_RESURFACE ||
|
||||
item->animNumber == LA_ONWATER_DIVE)
|
||||
{
|
||||
if (!isWater)
|
||||
{
|
||||
if (waterDepth == DEEP_WATER || abs(heightFromWater) >= STEP_SIZE)
|
||||
if (waterDepth == DEEP_WATER || abs(heightFromWater) >= CLICK(1))
|
||||
{
|
||||
SetAnimation(item, LA_FALL_START);
|
||||
item->speed = item->fallspeed / 4;
|
||||
|
@ -948,7 +948,7 @@ void LaraUnderWater(ITEM_INFO* item, COLL_INFO* coll)
|
|||
coll->Setup.LowerFloorBound = NO_LOWER_BOUND;
|
||||
coll->Setup.UpperFloorBound = -(LARA_RAD_UNDERWATER + (LARA_RAD_UNDERWATER / 3));
|
||||
coll->Setup.LowerCeilingBound = LARA_RAD_UNDERWATER + (LARA_RAD_UNDERWATER / 3);
|
||||
coll->Setup.UpperCeilingBound = MAX_HEIGHT;
|
||||
coll->Setup.UpperCeilingBound = NO_UPPER_BOUND;
|
||||
|
||||
coll->Setup.OldPosition.x = item->pos.xPos;
|
||||
coll->Setup.OldPosition.y = item->pos.yPos;
|
||||
|
@ -1057,7 +1057,7 @@ void LaraSurface(ITEM_INFO* item, COLL_INFO* coll)
|
|||
coll->Setup.LowerFloorBound = NO_LOWER_BOUND;
|
||||
coll->Setup.UpperFloorBound = -CLICK(0.5f);
|
||||
coll->Setup.LowerCeilingBound = LARA_RAD;
|
||||
coll->Setup.UpperCeilingBound = MAX_HEIGHT;
|
||||
coll->Setup.UpperCeilingBound = NO_UPPER_BOUND;
|
||||
|
||||
coll->Setup.OldPosition.x = item->pos.xPos;
|
||||
coll->Setup.OldPosition.y = item->pos.yPos;
|
||||
|
|
|
@ -108,8 +108,8 @@ void lara_col_crouch_idle(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->fallspeed = 0;
|
||||
coll->Setup.Height = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.ForwardAngle = item->pos.yRot;
|
||||
coll->Setup.LowerFloorBound = STEP_SIZE - 1;
|
||||
coll->Setup.UpperFloorBound = -(STEP_SIZE - 1);
|
||||
coll->Setup.LowerFloorBound = CLICK(1) - 1;
|
||||
coll->Setup.UpperFloorBound = -(CLICK(1) - 1);
|
||||
coll->Setup.LowerCeilingBound = 0;
|
||||
coll->Setup.FloorSlopeIsWall = true;
|
||||
coll->Setup.FloorSlopeIsPit = true;
|
||||
|
@ -180,8 +180,8 @@ void lara_col_crouch_roll(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->airborne = 0;
|
||||
item->fallspeed = 0;
|
||||
coll->Setup.Height = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.LowerFloorBound = STEP_SIZE - 1;
|
||||
coll->Setup.UpperFloorBound = -(STEP_SIZE - 1);
|
||||
coll->Setup.LowerFloorBound = CLICK(1) - 1;
|
||||
coll->Setup.UpperFloorBound = -(CLICK(1) - 1);
|
||||
coll->Setup.ForwardAngle = item->pos.yRot;
|
||||
coll->Setup.LowerCeilingBound = 0;
|
||||
coll->Setup.FloorSlopeIsWall = true;
|
||||
|
@ -448,8 +448,8 @@ void lara_col_crawl_idle(ITEM_INFO* item, COLL_INFO* coll)
|
|||
coll->Setup.ForwardAngle = info->moveAngle;
|
||||
coll->Setup.Radius = LARA_RAD_CRAWL;
|
||||
coll->Setup.Height = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.LowerFloorBound = STEP_SIZE - 1;
|
||||
coll->Setup.UpperFloorBound = -(STEP_SIZE - 1);
|
||||
coll->Setup.LowerFloorBound = CLICK(1) - 1;
|
||||
coll->Setup.UpperFloorBound = -(CLICK(1) - 1);
|
||||
coll->Setup.LowerCeilingBound = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.FloorSlopeIsWall = true;
|
||||
coll->Setup.FloorSlopeIsPit = true;
|
||||
|
@ -547,8 +547,8 @@ void lara_col_crawl_forward(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->fallspeed = 0;
|
||||
coll->Setup.Radius = LARA_RAD_CRAWL;
|
||||
coll->Setup.Height = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.LowerFloorBound = STEP_SIZE - 1; // Offset of 1 is required or Lara will crawl up/down steps.
|
||||
coll->Setup.UpperFloorBound = -(STEP_SIZE - 1); // TODO: Stepping approach is different from walk/run because crawl step anims do not submerge Lara. Resolve this someday. @Sezz 2021.10.31
|
||||
coll->Setup.LowerFloorBound = CLICK(1) - 1; // Offset of 1 is required or Lara will crawl up/down steps.
|
||||
coll->Setup.UpperFloorBound = -(CLICK(1) - 1); // TODO: Stepping approach is different from walk/run because crawl step anims do not submerge Lara. Resolve this someday. @Sezz 2021.10.31
|
||||
coll->Setup.LowerCeilingBound = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.FloorSlopeIsPit = true;
|
||||
coll->Setup.FloorSlopeIsWall = true;
|
||||
|
@ -644,8 +644,8 @@ void lara_col_crawl_back(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->fallspeed = 0;
|
||||
coll->Setup.Radius = LARA_RAD_CRAWL;
|
||||
coll->Setup.Height = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.LowerFloorBound = STEP_SIZE - 1; // Offset of 1 is required or Lara will crawl up/down steps.
|
||||
coll->Setup.UpperFloorBound = -(STEP_SIZE - 1);
|
||||
coll->Setup.LowerFloorBound = CLICK(1) - 1; // Offset of 1 is required or Lara will crawl up/down steps.
|
||||
coll->Setup.UpperFloorBound = -(CLICK(1) - 1);
|
||||
coll->Setup.LowerCeilingBound = LARA_HEIGHT_CRAWL;
|
||||
coll->Setup.FloorSlopeIsPit = true;
|
||||
coll->Setup.FloorSlopeIsWall = true;
|
||||
|
@ -815,7 +815,7 @@ void lara_col_crawl_to_hang(ITEM_INFO* item, COLL_INFO* coll)
|
|||
coll->Setup.LowerCeilingBound = BAD_JUMP_CEILING;
|
||||
coll->Setup.ForwardAngle = info->moveAngle;
|
||||
|
||||
MoveItem(item, item->pos.yRot, -STEP_SIZE);
|
||||
MoveItem(item, item->pos.yRot, -CLICK(1));
|
||||
GetCollisionInfo(coll, item);
|
||||
SnapItemToLedge(item, coll);
|
||||
SetAnimation(item, LA_REACH_TO_HANG, 12);
|
||||
|
|
|
@ -804,10 +804,10 @@ void lara_col_swan_dive(ITEM_INFO* item, COLL_INFO* coll)
|
|||
SetAnimation(item, LA_SPRINT_TO_CROUCH_LEFT, 10);
|
||||
|
||||
if (!info->keepLow) // HACK: If Lara landed on the edge, shift forward to avoid standing up or falling out.
|
||||
MoveItem(item, coll->Setup.ForwardAngle, STEP_SIZE / 2);
|
||||
MoveItem(item, coll->Setup.ForwardAngle, CLICK(0.5f));
|
||||
}
|
||||
else [[likely]]
|
||||
SetAnimation(item, LA_SWANDIVE_ROLL, 0);
|
||||
SetAnimation(item, LA_SWANDIVE_ROLL);
|
||||
|
||||
item->fallspeed = 0;
|
||||
item->airborne = false;
|
||||
|
|
|
@ -2142,7 +2142,7 @@ bool TestLaraJumpTolerance(ITEM_INFO* item, COLL_INFO* coll, JumpTestSetup testS
|
|||
|
||||
if (((probe.Position.Floor - y) >= -STEPUP_HEIGHT || // Within highest floor bound...
|
||||
probe.Position.FloorSlope) && // OR surface is a slope. TODO: May fail when coming to a slope from the side.
|
||||
((probe.Position.Ceiling - y) < -(coll->Setup.Height + (LARA_HEADROOM * 0.7f)) || // Ceiling height is permissive...
|
||||
((probe.Position.Ceiling - y) < -(coll->Setup.Height + (LARA_HEADROOM * 0.8f)) || // Ceiling height is permissive...
|
||||
((probe.Position.Ceiling - y) < -coll->Setup.Height && // OR ceiling is level with Lara's head
|
||||
(probe.Position.Floor - y) >= CLICK(0.5f))) && // AND there is a drop below.
|
||||
!isWading && // Not wading in water (if applicable).
|
||||
|
|
|
@ -310,7 +310,7 @@ void CreatureUnderwater(ITEM_INFO* item, int depth)
|
|||
}
|
||||
else
|
||||
{
|
||||
wh = GetWaterHeight(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
|
||||
wh = GetWaterHeight(item);
|
||||
}
|
||||
|
||||
int y = wh + waterLevel;
|
||||
|
@ -344,7 +344,7 @@ void CreatureFloat(short itemNumber)
|
|||
item->hitPoints = NOT_TARGETABLE;
|
||||
item->pos.xRot = 0;
|
||||
|
||||
waterLevel = GetWaterHeight(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
|
||||
waterLevel = GetWaterHeight(item);
|
||||
|
||||
y = item->pos.yPos;
|
||||
if (y > waterLevel)
|
||||
|
|
|
@ -675,6 +675,11 @@ GAME_STATUS DoLevel(int index, std::string ambient, bool loadFromSavegame)
|
|||
}
|
||||
}
|
||||
|
||||
int GetWaterSurface(ITEM_INFO* item)
|
||||
{
|
||||
return GetWaterSurface(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
|
||||
}
|
||||
|
||||
int GetWaterSurface(int x, int y, int z, short roomNumber)
|
||||
{
|
||||
ROOM_INFO *room = &g_Level.Rooms[roomNumber];
|
||||
|
@ -856,6 +861,11 @@ int ExplodeItemNode(ITEM_INFO *item, int Node, int NoXZVel, int bits)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int GetWaterDepth(ITEM_INFO* item)
|
||||
{
|
||||
return GetWaterDepth(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
|
||||
}
|
||||
|
||||
int GetWaterDepth(int x, int y, int z, short roomNumber)
|
||||
{
|
||||
FLOOR_INFO* floor;
|
||||
|
@ -931,6 +941,11 @@ int GetWaterDepth(int x, int y, int z, short roomNumber)
|
|||
}
|
||||
}
|
||||
|
||||
int GetWaterHeight(ITEM_INFO* item)
|
||||
{
|
||||
return GetWaterHeight(item->pos.xPos, item->pos.yPos, item->pos.zPos, item->roomNumber);
|
||||
}
|
||||
|
||||
int GetWaterHeight(int x, int y, int z, short roomNumber)
|
||||
{
|
||||
ROOM_INFO *r = &g_Level.Rooms[roomNumber];
|
||||
|
|
|
@ -85,8 +85,11 @@ void AlterFloorHeight(ITEM_INFO* item, int height);
|
|||
int GetFloorHeight(FLOOR_INFO* floor, int x, int y, int z);
|
||||
FLOOR_INFO* GetFloor(int x, int y, int z, short* roomNumber);
|
||||
int GetCeiling(FLOOR_INFO* floor, int x, int y, int z);
|
||||
int GetWaterSurface(ITEM_INFO* item);
|
||||
int GetWaterSurface(int x, int y, int z, short roomNumber);
|
||||
int GetWaterDepth(ITEM_INFO* item);
|
||||
int GetWaterDepth(int x, int y, int z, short roomNumber);
|
||||
int GetWaterHeight(ITEM_INFO* item);
|
||||
int GetWaterHeight(int x, int y, int z, short roomNumber);
|
||||
int GetDistanceToFloor(int itemNumber, bool precise = true);
|
||||
|
||||
|
|
|
@ -930,10 +930,7 @@ void SpeedBoatControl(short itemNum)
|
|||
int heightFrontLeft = SpeedBoatTestWaterHeight(sBoatItem, BOAT_FRONT, -BOAT_SIDE, &frontLeft);
|
||||
int heightFrontRight = SpeedBoatTestWaterHeight(sBoatItem, BOAT_FRONT, BOAT_SIDE, &frontRight);
|
||||
|
||||
auto roomNum = sBoatItem->roomNumber;
|
||||
auto floor = GetFloor(sBoatItem->pos.xPos, sBoatItem->pos.yPos, sBoatItem->pos.zPos, &roomNum);
|
||||
auto height = GetFloorHeight(floor, sBoatItem->pos.xPos, sBoatItem->pos.yPos, sBoatItem->pos.zPos);
|
||||
auto ceiling = GetCeiling(floor, sBoatItem->pos.xPos, sBoatItem->pos.yPos, sBoatItem->pos.zPos);
|
||||
auto probe = GetCollisionResult(sBoatItem);
|
||||
|
||||
if (laraInfo->Vehicle == itemNum)
|
||||
{
|
||||
|
@ -941,7 +938,7 @@ void SpeedBoatControl(short itemNum)
|
|||
TestTriggers(sBoatItem, false);
|
||||
}
|
||||
|
||||
auto water = GetWaterHeight(sBoatItem->pos.xPos, sBoatItem->pos.yPos, sBoatItem->pos.zPos, roomNum);
|
||||
auto water = GetWaterHeight(sBoatItem->pos.xPos, sBoatItem->pos.yPos, sBoatItem->pos.zPos, probe.RoomNumber);
|
||||
sBoatInfo->water = water;
|
||||
|
||||
if (laraInfo->Vehicle == itemNum && laraItem->hitPoints > 0)
|
||||
|
@ -977,9 +974,9 @@ void SpeedBoatControl(short itemNum)
|
|||
sBoatInfo->boatTurn = 0;
|
||||
}
|
||||
|
||||
sBoatItem->floor = height - 5;
|
||||
sBoatItem->floor = probe.Position.Floor - 5;
|
||||
if (sBoatInfo->water == NO_HEIGHT)
|
||||
sBoatInfo->water = height;
|
||||
sBoatInfo->water = probe.Position.Floor;
|
||||
else
|
||||
sBoatInfo->water -= 5;
|
||||
|
||||
|
@ -990,14 +987,14 @@ void SpeedBoatControl(short itemNum)
|
|||
if (ofs - sBoatItem->fallspeed > 32 && sBoatItem->fallspeed == 0 && water != NO_HEIGHT)
|
||||
SpeedBoatSplash(sBoatItem, ofs - sBoatItem->fallspeed, water);
|
||||
|
||||
height = (frontLeft.y + frontRight.y);
|
||||
if (height < 0)
|
||||
height = -(abs(height) / 2);
|
||||
probe.Position.Floor = (frontLeft.y + frontRight.y);
|
||||
if (probe.Position.Floor < 0)
|
||||
probe.Position.Floor = -(abs(probe.Position.Floor) / 2);
|
||||
else
|
||||
height /= 2;
|
||||
probe.Position.Floor /= 2;
|
||||
|
||||
short xRot = phd_atan(BOAT_FRONT, sBoatItem->pos.yPos - height);
|
||||
short zRot = phd_atan(BOAT_SIDE, height - frontLeft.y);
|
||||
short xRot = phd_atan(BOAT_FRONT, sBoatItem->pos.yPos - probe.Position.Floor);
|
||||
short zRot = phd_atan(BOAT_SIDE, probe.Position.Floor - frontLeft.y);
|
||||
|
||||
sBoatItem->pos.xRot += ((xRot - sBoatItem->pos.xRot) / 2);
|
||||
sBoatItem->pos.zRot += ((zRot - sBoatItem->pos.zRot) / 2);
|
||||
|
@ -1011,10 +1008,10 @@ void SpeedBoatControl(short itemNum)
|
|||
{
|
||||
SpeedBoatAnimation(laraItem, sBoatItem, collide);
|
||||
|
||||
if (roomNum != sBoatItem->roomNumber)
|
||||
if (probe.RoomNumber != sBoatItem->roomNumber)
|
||||
{
|
||||
ItemNewRoom(laraInfo->Vehicle, roomNum);
|
||||
ItemNewRoom(laraInfo->itemNumber, roomNum);
|
||||
ItemNewRoom(laraInfo->Vehicle, probe.RoomNumber);
|
||||
ItemNewRoom(laraInfo->itemNumber, probe.RoomNumber);
|
||||
}
|
||||
|
||||
sBoatItem->pos.zRot += sBoatInfo->tiltAngle;
|
||||
|
@ -1038,8 +1035,8 @@ void SpeedBoatControl(short itemNum)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (roomNum != sBoatItem->roomNumber)
|
||||
ItemNewRoom(itemNum, roomNum);
|
||||
if (probe.RoomNumber != sBoatItem->roomNumber)
|
||||
ItemNewRoom(itemNum, probe.RoomNumber);
|
||||
|
||||
sBoatItem->pos.zRot += sBoatInfo->tiltAngle;
|
||||
}
|
||||
|
|
|
@ -1306,10 +1306,7 @@ int QuadBikeControl(ITEM_INFO* lara, COLL_INFO* coll)
|
|||
|
||||
bool collide = QuadDynamics(lara, quad);
|
||||
|
||||
short roomNumber = quad->roomNumber;
|
||||
FLOOR_INFO* floor = GetFloor(quad->pos.xPos, quad->pos.yPos, quad->pos.zPos, &roomNumber);
|
||||
auto height = GetFloorHeight(floor, quad->pos.xPos, quad->pos.yPos, quad->pos.zPos);
|
||||
auto ceiling = GetCeiling(floor, quad->pos.xPos, quad->pos.yPos, quad->pos.zPos);
|
||||
auto probe = GetCollisionResult(quad);
|
||||
|
||||
PHD_VECTOR frontLeft;
|
||||
PHD_VECTOR frontRight;
|
||||
|
@ -1342,7 +1339,7 @@ int QuadBikeControl(ITEM_INFO* lara, COLL_INFO* coll)
|
|||
break;
|
||||
|
||||
default:
|
||||
drive = QuadUserControl(quad, height, &pitch);
|
||||
drive = QuadUserControl(quad, probe.Position.Floor, &pitch);
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -1367,7 +1364,7 @@ int QuadBikeControl(ITEM_INFO* lara, COLL_INFO* coll)
|
|||
quadInfo->pitch = 0;
|
||||
}
|
||||
|
||||
quad->floor = height;
|
||||
quad->floor = probe.Position.Floor;
|
||||
|
||||
rotadd = quadInfo->velocity / 4;
|
||||
quadInfo->rearRot -= rotadd;
|
||||
|
@ -1376,29 +1373,24 @@ int QuadBikeControl(ITEM_INFO* lara, COLL_INFO* coll)
|
|||
|
||||
quadInfo->leftFallspeed = DoQuadDynamics(floorHeightLeft, quadInfo->leftFallspeed, (int*)&frontLeft.y);
|
||||
quadInfo->rightFallspeed = DoQuadDynamics(floorHeightRight, quadInfo->rightFallspeed, (int*)&frontRight.y);
|
||||
quad->fallspeed = DoQuadDynamics(height, quad->fallspeed, (int*)&quad->pos.yPos);
|
||||
quad->fallspeed = DoQuadDynamics(probe.Position.Floor, quad->fallspeed, (int*)&quad->pos.yPos);
|
||||
|
||||
height = (frontLeft.y + frontRight.y) / 2;
|
||||
xRot = phd_atan(QUAD_FRONT, quad->pos.yPos - height);
|
||||
zRot = phd_atan(QUAD_SIDE, height - frontLeft.y);
|
||||
probe.Position.Floor = (frontLeft.y + frontRight.y) / 2;
|
||||
xRot = phd_atan(QUAD_FRONT, quad->pos.yPos - probe.Position.Floor);
|
||||
zRot = phd_atan(QUAD_SIDE, probe.Position.Floor - frontLeft.y);
|
||||
|
||||
quad->pos.xRot += ((xRot - quad->pos.xRot) / 2);
|
||||
quad->pos.zRot += ((zRot - quad->pos.zRot) / 2);
|
||||
|
||||
if (!(quadInfo->flags & QUAD_FLAG_DEAD))
|
||||
{
|
||||
if (roomNumber != quad->roomNumber)
|
||||
if (probe.RoomNumber != quad->roomNumber)
|
||||
{
|
||||
ItemNewRoom(laraInfo->Vehicle, roomNumber);
|
||||
ItemNewRoom(laraInfo->itemNumber, roomNumber);
|
||||
ItemNewRoom(laraInfo->Vehicle, probe.RoomNumber);
|
||||
ItemNewRoom(laraInfo->itemNumber, probe.RoomNumber);
|
||||
}
|
||||
|
||||
lara->pos.xPos = quad->pos.xPos;
|
||||
lara->pos.yPos = quad->pos.yPos;
|
||||
lara->pos.zPos = quad->pos.zPos;
|
||||
lara->pos.xRot = quad->pos.xRot;
|
||||
lara->pos.yRot = quad->pos.yRot;
|
||||
lara->pos.zRot = quad->pos.zRot;
|
||||
lara->pos = quad->pos;
|
||||
|
||||
AnimateQuadBike(lara, quad, collide, dead);
|
||||
AnimateItem(lara);
|
||||
|
|
|
@ -710,8 +710,8 @@ static void UserInput(ITEM_INFO* laraItem, ITEM_INFO* UPVItem)
|
|||
int waterDepth, waterHeight, heightFromWater;
|
||||
PHD_VECTOR vec = { 0, 0, 0 };
|
||||
|
||||
waterDepth = GetWaterSurface(laraItem->pos.xPos, laraItem->pos.yPos, laraItem->pos.zPos, laraItem->roomNumber);
|
||||
waterHeight = GetWaterHeight(laraItem->pos.xPos, laraItem->pos.yPos, laraItem->pos.zPos, laraItem->roomNumber);
|
||||
waterDepth = GetWaterSurface(laraItem);
|
||||
waterHeight = GetWaterHeight(laraItem);
|
||||
|
||||
if (waterHeight != NO_HEIGHT)
|
||||
heightFromWater = laraItem->pos.yPos - waterHeight;
|
||||
|
@ -936,7 +936,7 @@ bool SubControl(ITEM_INFO* laraItem, COLL_INFO* coll)
|
|||
}
|
||||
|
||||
int newHeight = GetCollisionResult(UPVItem).Position.Floor;
|
||||
int waterHeight = GetWaterHeight(UPVItem->pos.xPos, UPVItem->pos.yPos, UPVItem->pos.zPos, UPVItem->roomNumber);
|
||||
int waterHeight = GetWaterHeight(UPVItem);
|
||||
|
||||
if ((newHeight - waterHeight) < SUB_HEIGHT || (newHeight < UPVItem->pos.yPos - SUB_HEIGHT / 2))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue