ROM-based object dimension lookup table. More...
#include <object_dimensions.h>
Classes | |
| struct | DimensionEntry |
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 |
| 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 | |
| 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 8 of file object_dimensions.cc.
Referenced by yaze::editor::DungeonObjectInteraction::CalculateObjectBounds(), yaze::editor::DungeonObjectInteraction::DrawHoverHighlight(), yaze::editor::DungeonCanvasViewer::DrawMaskHighlights(), yaze::editor::DungeonCanvasViewer::DrawObjectPositionOutlines(), yaze::editor::DungeonObjectInteraction::DrawSelectionHighlights(), yaze::editor::ObjectSelection::GetObjectBounds(), and yaze::editor::DungeonEditorV2::Load().
| absl::Status yaze::zelda3::ObjectDimensionTable::LoadFromRom | ( | Rom * | rom | ) |
Definition at line 13 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 30 of file object_dimensions.cc.
References dimensions_.
| std::pair< int, int > yaze::zelda3::ObjectDimensionTable::GetDimensions | ( | int | object_id, |
| int | size ) const |
Definition at line 38 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, and yaze::zelda3::ObjectDimensionTable::DimensionEntry::Vertical.
Referenced by GetHitTestBounds().
| std::pair< int, int > yaze::zelda3::ObjectDimensionTable::GetSelectionDimensions | ( | int | object_id, |
| int | size ) const |
Definition at line 85 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, and yaze::zelda3::ObjectDimensionTable::DimensionEntry::Vertical.
| std::tuple< int, int, int, int > yaze::zelda3::ObjectDimensionTable::GetHitTestBounds | ( | const RoomObject & | obj | ) | const |
Definition at line 129 of file object_dimensions.cc.
References GetDimensions(), yaze::zelda3::RoomObject::id_, yaze::zelda3::RoomObject::size_, yaze::zelda3::RoomObject::x_, and yaze::zelda3::RoomObject::y_.

|
inline |
Definition at line 50 of file object_dimensions.h.
References loaded_.
|
inline |
Definition at line 53 of file object_dimensions.h.
References dimensions_, and loaded_.
|
private |
Definition at line 135 of file object_dimensions.cc.
References dimensions_.
Referenced by LoadFromRom().
|
private |
Definition at line 529 of file object_dimensions.cc.
References yaze::Rom::ReadWord().
Referenced by LoadFromRom().

|
private |
Definition at line 549 of file object_dimensions.cc.
Referenced by LoadFromRom().
|
private |
Definition at line 558 of file object_dimensions.cc.
Referenced by LoadFromRom().
|
private |
Definition at line 71 of file object_dimensions.h.
Referenced by GetBaseDimensions(), GetDimensions(), GetSelectionDimensions(), InitializeDefaults(), LoadFromRom(), and Reset().
|
private |
Definition at line 72 of file object_dimensions.h.
Referenced by IsLoaded(), LoadFromRom(), and Reset().