This avoids testing the floor height for the on walkable check when the
corresponding sector does not have a trigger. This is equivalent to
not finding a walkable object.
Resolves#1452.
Rather than storing redundant camera data in every command, we now
store a void *, which either has the regular int16_t parameter, or the
full additional camera data.
This eliminates the global floor data array and instead reads it into
the temporary level info; it is released post-parsing.
Injections updated to match, as their total FD injected length is no
longer required.
Floor data injection now uses the common parser in `room.c`. This means
making the sector populator public and passing additional arguments to
allow parsing from index 0.
This creates an is_death_sector property on sectors and updates the
checks for when this is applicable in terms of collision and trigger
checks.
Triggers are also now directly in sectors, and their list of commands.
Most duplicated FD iterations are now removed; injection logic to
follow suit and use the new approach.
This introduces a floor data master parser to allow setting all
relevant properties for sectors once. This is applied initially to
floor and ceiling tilts, and horizontal portals. Related refactors
have been undertaken, such as combining all portal values into a struct
in the sector, and simplifying sector traversal.
This introduces a struct in SECTOR_INFO which currently stores the
click height for the floor and ceiling values.
Height values are now stored as int16_t in the sector to avoid shifting
from clicks to world units throughout the codebase.
Object functions that determine floor and ceiling heights have been
renamed.
Part of #941.
This renames FLOOR_INFO to SECTOR_INFO to help distinguish it in cases
where floor is used in reference to height. The naming is more in line
with Tomb Editor, the TRosettaStone documentation and so forth.
Part of #941.