ROM-based object dimension lookup table. More...
#include <object_dimensions.h>
Classes | |
| struct | DimensionEntry |
| struct | SelectionBounds |
Public Member Functions | |
| absl::Status | LoadFromRom (Rom *rom) |
| std::pair< int, int > | GetBaseDimensions (int object_id) const |
| std::pair< int, int > | GetDimensions (int object_id, int size) const |
| std::pair< int, int > | GetSelectionDimensions (int object_id, int size) const |
| SelectionBounds | GetSelectionBounds (int object_id, int size) const |
| std::tuple< int, int, int, int > | GetHitTestBounds (const RoomObject &obj) const |
| bool | IsLoaded () const |
| void | Reset () |
Static Public Member Functions | |
| static ObjectDimensionTable & | Get () |
Private Member Functions | |
| ObjectDimensionTable ()=default | |
| int | ResolveEffectiveSize (const DimensionEntry &entry, int size) const |
| void | InitializeDefaults () |
| void | ParseSubtype1Tables (Rom *rom) |
| void | ParseSubtype2Tables (Rom *rom) |
| void | ParseSubtype3Tables (Rom *rom) |
Private Attributes | |
| std::unordered_map< int, DimensionEntry > | dimensions_ |
| bool | loaded_ = false |
ROM-based object dimension lookup table.
Provides accurate object dimensions for hit-testing and selection. Loads dimension data from ROM tables at:
Usage: auto& table = ObjectDimensionTable::Get(); table.LoadFromRom(rom); auto [w, h] = table.GetDimensions(object_id, size);
Definition at line 29 of file object_dimensions.h.
|
privatedefault |
|
static |
Definition at line 96 of file object_dimensions.cc.
Referenced by yaze::zelda3::DimensionService::GetDimensions(), and yaze::editor::DungeonEditorV2::Load().
| absl::Status yaze::zelda3::ObjectDimensionTable::LoadFromRom | ( | Rom * | rom | ) |
Definition at line 101 of file object_dimensions.cc.
References dimensions_, InitializeDefaults(), yaze::Rom::is_loaded(), loaded_, ParseSubtype1Tables(), ParseSubtype2Tables(), and ParseSubtype3Tables().
| std::pair< int, int > yaze::zelda3::ObjectDimensionTable::GetBaseDimensions | ( | int | object_id | ) | const |
Definition at line 118 of file object_dimensions.cc.
References dimensions_.
| std::pair< int, int > yaze::zelda3::ObjectDimensionTable::GetDimensions | ( | int | object_id, |
| int | size ) const |
Definition at line 141 of file object_dimensions.cc.
References yaze::zelda3::ObjectDimensionTable::DimensionEntry::Both, yaze::zelda3::ObjectDimensionTable::DimensionEntry::Diagonal, dimensions_, yaze::zelda3::ObjectDimensionTable::DimensionEntry::Horizontal, yaze::zelda3::ObjectDimensionTable::DimensionEntry::None, ResolveEffectiveSize(), yaze::zelda3::ObjectDimensionTable::DimensionEntry::SuperSquare, and yaze::zelda3::ObjectDimensionTable::DimensionEntry::Vertical.

| std::pair< int, int > yaze::zelda3::ObjectDimensionTable::GetSelectionDimensions | ( | int | object_id, |
| int | size ) const |
Definition at line 225 of file object_dimensions.cc.
References yaze::zelda3::ObjectDimensionTable::DimensionEntry::Both, yaze::zelda3::ObjectDimensionTable::DimensionEntry::Diagonal, dimensions_, yaze::zelda3::ObjectDimensionTable::DimensionEntry::Horizontal, yaze::zelda3::ObjectDimensionTable::DimensionEntry::None, ResolveEffectiveSize(), yaze::zelda3::ObjectDimensionTable::DimensionEntry::SuperSquare, and yaze::zelda3::ObjectDimensionTable::DimensionEntry::Vertical.
Referenced by GetSelectionBounds().

| ObjectDimensionTable::SelectionBounds yaze::zelda3::ObjectDimensionTable::GetSelectionBounds | ( | int | object_id, |
| int | size ) const |
Definition at line 307 of file object_dimensions.cc.
References yaze::core::FeatureFlags::get(), yaze::zelda3::CustomObjectManager::Get(), yaze::zelda3::CustomObjectManager::GetObjectInternal(), GetSelectionDimensions(), yaze::zelda3::ObjectDimensionTable::SelectionBounds::height, yaze::zelda3::ObjectDimensionTable::SelectionBounds::offset_x, yaze::zelda3::ObjectDimensionTable::SelectionBounds::offset_y, and yaze::zelda3::ObjectDimensionTable::SelectionBounds::width.
Referenced by GetHitTestBounds().

| std::tuple< int, int, int, int > yaze::zelda3::ObjectDimensionTable::GetHitTestBounds | ( | const RoomObject & | obj | ) | const |
Definition at line 412 of file object_dimensions.cc.
References GetSelectionBounds(), yaze::zelda3::RoomObject::id_, yaze::zelda3::RoomObject::size_, yaze::zelda3::RoomObject::x_, and yaze::zelda3::RoomObject::y_.

|
inline |
Definition at line 60 of file object_dimensions.h.
References loaded_.
|
inline |
Definition at line 63 of file object_dimensions.h.
References dimensions_, and loaded_.
|
private |
Definition at line 127 of file object_dimensions.cc.
References yaze::zelda3::ObjectDimensionTable::DimensionEntry::use_32_when_zero, and yaze::zelda3::ObjectDimensionTable::DimensionEntry::zero_size_override.
Referenced by GetDimensions(), and GetSelectionDimensions().
|
private |
Definition at line 419 of file object_dimensions.cc.
References dimensions_.
Referenced by LoadFromRom().
|
private |
Definition at line 1026 of file object_dimensions.cc.
References yaze::Rom::ReadWord().
Referenced by LoadFromRom().

|
private |
Definition at line 1047 of file object_dimensions.cc.
Referenced by LoadFromRom().
|
private |
Definition at line 1056 of file object_dimensions.cc.
Referenced by LoadFromRom().
|
private |
Definition at line 84 of file object_dimensions.h.
Referenced by GetBaseDimensions(), GetDimensions(), GetSelectionDimensions(), InitializeDefaults(), LoadFromRom(), and Reset().
|
private |
Definition at line 85 of file object_dimensions.h.
Referenced by IsLoaded(), LoadFromRom(), and Reset().