mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-10 12:36:45 +03:00
Added bridge collision to FALLING_BLOCK
This commit is contained in:
parent
b87c296986
commit
d878cd1c9e
3 changed files with 64 additions and 24 deletions
|
@ -307,6 +307,7 @@ void LavaBurn(ITEM_INFO* item)
|
|||
void InitialiseFallingBlock(short itemNumber)
|
||||
{
|
||||
g_Level.Items[itemNumber].meshBits = 1;
|
||||
T5M::Floordata::AddBridge(itemNumber);
|
||||
}
|
||||
|
||||
void FallingBlockCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
|
||||
|
@ -367,28 +368,61 @@ void FallingBlockControl(short itemNumber)
|
|||
}
|
||||
}
|
||||
|
||||
void FallingBlockFloor(ITEM_INFO* item, int x, int y, int z, int* height)
|
||||
//void FallingBlockFloor(ITEM_INFO* item, int x, int y, int z, int* height)
|
||||
//{
|
||||
// if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
||||
// {
|
||||
// if (y <= item->pos.yPos)
|
||||
// {
|
||||
// *height = item->pos.yPos;
|
||||
// HeightType = WALL;
|
||||
// OnFloor = 1;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//void FallingBlockCeiling(ITEM_INFO* item, int x, int y, int z, int* height)
|
||||
//{
|
||||
// if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
||||
// {
|
||||
// if (y > item->pos.yPos)
|
||||
// {
|
||||
// *height = item->pos.yPos + 256;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
std::optional<int> FallingBlockFloor(short itemNumber, int x, int y, int z)
|
||||
{
|
||||
if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
||||
{
|
||||
if (y <= item->pos.yPos)
|
||||
{
|
||||
*height = item->pos.yPos;
|
||||
HeightType = WALL;
|
||||
OnFloor = 1;
|
||||
}
|
||||
}
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
if (!item->meshBits || item->itemFlags[0] >= 52)
|
||||
return std::nullopt;
|
||||
|
||||
int height = item->pos.yPos;
|
||||
return std::optional{ height };
|
||||
}
|
||||
|
||||
void FallingBlockCeiling(ITEM_INFO* item, int x, int y, int z, int* height)
|
||||
std::optional<int> FallingBlockCeiling(short itemNumber, int x, int y, int z)
|
||||
{
|
||||
if (!((x ^ item->pos.xPos) & 0xFFFFFC00) && !((z ^ item->pos.zPos) & 0xFFFFFC00))
|
||||
{
|
||||
if (y > item->pos.yPos)
|
||||
{
|
||||
*height = item->pos.yPos + 256;
|
||||
}
|
||||
}
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
|
||||
if (!item->meshBits || item->itemFlags[0] >= 52)
|
||||
return std::nullopt;
|
||||
|
||||
int height = item->pos.yPos + 256;
|
||||
return std::optional{ height };
|
||||
}
|
||||
|
||||
int FallingBlockFloorBorder(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
return item->pos.yPos;
|
||||
}
|
||||
|
||||
int FallingBlockCeilingBorder(short itemNumber)
|
||||
{
|
||||
ITEM_INFO* item = &g_Level.Items[itemNumber];
|
||||
return (item->pos.yPos + 256);
|
||||
}
|
||||
|
||||
void InitialiseWreckingBall(short itemNumber)
|
||||
|
|
|
@ -13,8 +13,10 @@ void FlameEmitterControl(short itemNumber);
|
|||
void InitialiseFallingBlock(short itemNumber);
|
||||
void FallingBlockCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll);
|
||||
void FallingBlockControl(short itemNumber);
|
||||
void FallingBlockFloor(ITEM_INFO* item, int x, int y, int z, int* height);
|
||||
void FallingBlockCeiling(ITEM_INFO* item, int x, int y, int z, int* height);
|
||||
std::optional<int> FallingBlockFloor(short itemNumber, int x, int y, int z);
|
||||
std::optional<int> FallingBlockCeiling(short itemNumber, int x, int y, int z);
|
||||
int FallingBlockFloorBorder(short itemNumber);
|
||||
int FallingBlockCeilingBorder(short itemNumber);
|
||||
void InitialiseWreckingBall(short itemNumber);
|
||||
void WreckingBallCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll);
|
||||
void WreckingBallControl(short itemNumber);
|
||||
|
|
|
@ -492,8 +492,10 @@ void TrapObjects()
|
|||
obj->initialise = InitialiseFallingBlock;
|
||||
obj->collision = FallingBlockCollision;
|
||||
obj->control = FallingBlockControl;
|
||||
//obj->floor = FallingBlockFloor;
|
||||
//obj->ceiling = FallingBlockCeiling;
|
||||
obj->floor = FallingBlockFloor;
|
||||
obj->ceiling = FallingBlockCeiling;
|
||||
obj->floorBorder = FallingBlockFloorBorder;
|
||||
obj->ceilingBorder = FallingBlockCeilingBorder;
|
||||
obj->saveFlags = true;
|
||||
obj->savePosition = true;
|
||||
}
|
||||
|
@ -504,8 +506,10 @@ void TrapObjects()
|
|||
obj->initialise = InitialiseFallingBlock;
|
||||
obj->collision = FallingBlockCollision;
|
||||
obj->control = FallingBlockControl;
|
||||
//obj->floor = FallingBlockFloor;
|
||||
//obj->ceiling = FallingBlockCeiling;
|
||||
obj->floor = FallingBlockFloor;
|
||||
obj->ceiling = FallingBlockCeiling;
|
||||
obj->floorBorder = FallingBlockFloorBorder;
|
||||
obj->ceilingBorder = FallingBlockCeilingBorder;
|
||||
obj->saveFlags = true;
|
||||
obj->savePosition = true;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue