yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::zelda3::ObjectDimensionTable Class Reference

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 ObjectDimensionTableGet ()
 

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, DimensionEntrydimensions_
 
bool loaded_ = false
 

Detailed Description

ROM-based object dimension lookup table.

Provides accurate object dimensions for hit-testing and selection. Loads dimension data from ROM tables at:

  • Bank $01: Subtype 1/2/3 tile pointers and routine pointers

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.

Constructor & Destructor Documentation

◆ ObjectDimensionTable()

yaze::zelda3::ObjectDimensionTable::ObjectDimensionTable ( )
privatedefault

Member Function Documentation

◆ Get()

◆ LoadFromRom()

absl::Status yaze::zelda3::ObjectDimensionTable::LoadFromRom ( Rom * rom)

◆ GetBaseDimensions()

std::pair< int, int > yaze::zelda3::ObjectDimensionTable::GetBaseDimensions ( int object_id) const

Definition at line 30 of file object_dimensions.cc.

References dimensions_.

◆ GetDimensions()

◆ GetSelectionDimensions()

◆ GetHitTestBounds()

std::tuple< int, int, int, int > yaze::zelda3::ObjectDimensionTable::GetHitTestBounds ( const RoomObject & obj) const

◆ IsLoaded()

bool yaze::zelda3::ObjectDimensionTable::IsLoaded ( ) const
inline

Definition at line 50 of file object_dimensions.h.

References loaded_.

◆ Reset()

void yaze::zelda3::ObjectDimensionTable::Reset ( )
inline

Definition at line 53 of file object_dimensions.h.

References dimensions_, and loaded_.

◆ InitializeDefaults()

void yaze::zelda3::ObjectDimensionTable::InitializeDefaults ( )
private

Definition at line 135 of file object_dimensions.cc.

References dimensions_.

Referenced by LoadFromRom().

◆ ParseSubtype1Tables()

void yaze::zelda3::ObjectDimensionTable::ParseSubtype1Tables ( Rom * rom)
private

Definition at line 529 of file object_dimensions.cc.

References yaze::Rom::ReadWord().

Referenced by LoadFromRom().

Here is the call graph for this function:

◆ ParseSubtype2Tables()

void yaze::zelda3::ObjectDimensionTable::ParseSubtype2Tables ( Rom * rom)
private

Definition at line 549 of file object_dimensions.cc.

Referenced by LoadFromRom().

◆ ParseSubtype3Tables()

void yaze::zelda3::ObjectDimensionTable::ParseSubtype3Tables ( Rom * rom)
private

Definition at line 558 of file object_dimensions.cc.

Referenced by LoadFromRom().

Member Data Documentation

◆ dimensions_

std::unordered_map<int, DimensionEntry> yaze::zelda3::ObjectDimensionTable::dimensions_
private

◆ loaded_

bool yaze::zelda3::ObjectDimensionTable::loaded_ = false
private

Definition at line 72 of file object_dimensions.h.

Referenced by IsLoaded(), LoadFromRom(), and Reset().


The documentation for this class was generated from the following files: