TombEngine/TR5Main/Objects/Generic/Object/generic_bridge.h

37 lines
1,023 B
C
Raw Normal View History

2020-12-21 13:16:29 -03:00
#pragma once
#include "phd_global.h"
2021-01-06 17:53:13 -03:00
void InitialiseBridge(short itemNumber);
2020-12-21 13:16:29 -03:00
int GetOffset(short angle, int x, int z);
template <int tilt>
2021-01-06 17:53:13 -03:00
std::optional<int> BridgeFloor(short itemNumber, int x, int y, int z)
2020-12-21 13:16:29 -03:00
{
const auto& item = g_Level.Items[itemNumber];
2021-01-06 17:53:13 -03:00
const auto height = item.pos.yPos + tilt * (GetOffset(item.pos.yRot, x, z) / 4 + SECTOR(1) / 8);
return std::optional{height};
2020-12-21 13:16:29 -03:00
}
template <int tilt>
2021-01-06 17:53:13 -03:00
std::optional<int> BridgeCeiling(short itemNumber, int x, int y, int z)
2020-12-21 13:16:29 -03:00
{
const auto& item = g_Level.Items[itemNumber];
2021-01-06 17:53:13 -03:00
const auto height = item.pos.yPos + tilt * (GetOffset(item.pos.yRot, x, z) / 4 + SECTOR(1) / 8);
return std::optional{height + SECTOR(1) / 16};
2020-12-21 13:16:29 -03:00
}
template <int tilt>
int BridgeFloorBorder(short itemNumber)
{
const auto& item = g_Level.Items[itemNumber];
return item.pos.yPos;
}
template <int tilt>
int BridgeCeilingBorder(short itemNumber)
{
const auto& item = g_Level.Items[itemNumber];
const auto height = item.pos.yPos + tilt * SECTOR(1) / 4;
return height + SECTOR(1) / 16;
}