mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 05:07:43 +00:00
Additional work on CMapWorld rendering
This commit is contained in:
@@ -23,7 +23,7 @@ CMappableObject::CMappableObject(const void* buf)
|
||||
{
|
||||
athena::io::MemoryReader r(buf, 64);
|
||||
x0_type = EMappableObjectType(r.readUint32Big());
|
||||
x4_ = r.readUint32Big();
|
||||
x4_visibilityMode = EVisMode(r.readUint32Big());
|
||||
x8_objId = r.readUint32Big();
|
||||
xc_ = r.readUint32Big();
|
||||
x10_transform.read34RowMajor(r);
|
||||
@@ -258,6 +258,26 @@ zeus::CVector3f CMappableObject::BuildSurfaceCenterPoint(int surfIdx) const
|
||||
return {};
|
||||
}
|
||||
|
||||
bool CMappableObject::IsVisibleToAutoMapper(bool worldVis, const CMapWorldInfo& mwInfo) const
|
||||
{
|
||||
bool areaVis = mwInfo.IsAreaVisible(x8_objId.AreaNum());
|
||||
switch (x4_visibilityMode)
|
||||
{
|
||||
case EVisMode::Always:
|
||||
default:
|
||||
return true;
|
||||
case EVisMode::MapStationOrVisit:
|
||||
case EVisMode::MapStationOrVisit2:
|
||||
return worldVis || areaVis;
|
||||
case EVisMode::Visit:
|
||||
if (IsDoorType(x0_type))
|
||||
return mwInfo.IsDoorVisited(x8_objId);
|
||||
return areaVis;
|
||||
case EVisMode::Never:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
boo::GraphicsDataToken CMappableObject::g_gfxToken = {};
|
||||
boo::IGraphicsBufferS* CMappableObject::g_doorVbo;
|
||||
boo::IGraphicsBufferS* CMappableObject::g_doorIbo;
|
||||
|
||||
Reference in New Issue
Block a user