mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-11 13:47:42 +00:00
70
include/MetroidPrime/CMapArea.hpp
Normal file
70
include/MetroidPrime/CMapArea.hpp
Normal file
@@ -0,0 +1,70 @@
|
||||
#ifndef _CMAPAREA
|
||||
#define _CMAPAREA
|
||||
|
||||
#include "MetroidPrime/CMappableObject.hpp"
|
||||
|
||||
#include "Kyoto/CFactoryMgr.hpp"
|
||||
#include "Kyoto/Graphics/CColor.hpp"
|
||||
#include "Kyoto/Math/CAABox.hpp"
|
||||
#include "Kyoto/Math/CVector3f.hpp"
|
||||
|
||||
#include "rstl/single_ptr.hpp"
|
||||
#include "rstl/vector.hpp"
|
||||
|
||||
class IWorld;
|
||||
class CWorld;
|
||||
|
||||
class CMapArea {
|
||||
public:
|
||||
class CMapAreaSurface {
|
||||
friend class CMapArea;
|
||||
CVector3f x0_normal;
|
||||
CVector3f xc_centroid;
|
||||
const int* x18_surfOffset;
|
||||
const int* x1c_outlineOffset;
|
||||
|
||||
public:
|
||||
explicit CMapAreaSurface(const void* surfBuf);
|
||||
|
||||
void PostConstruct(const void* buf);
|
||||
void Draw(const CVector3f* verts, const CColor& surfColor, const CColor& lineColor,
|
||||
float lineWidth) const;
|
||||
|
||||
void SetupGXMaterial();
|
||||
|
||||
const CVector3f& GetNormal() const { return x0_normal; }
|
||||
const CVector3f& GetCenterPosition() const { return xc_centroid; }
|
||||
};
|
||||
enum EVisMode { kVM_Always, kVM_MapStationOrVisit, kVM_Visit, kVM_Never };
|
||||
|
||||
CMapArea(CInputStream& in, uint size);
|
||||
~CMapArea();
|
||||
|
||||
void PostConstruct();
|
||||
bool GetIsVisibleToAutoMapper(bool worldVis, bool areaVis) const;
|
||||
CVector3f GetAreaCenterPoint() const;
|
||||
CTransform4f GetAreaPostTransform(const CWorld&, TAreaId);
|
||||
const CVector3f& GetAreaPostTranslate(const IWorld&, TAreaId);
|
||||
|
||||
private:
|
||||
uint x0_magic;
|
||||
uint x4_version;
|
||||
uint x8_;
|
||||
EVisMode xc_visibilityMode;
|
||||
CAABox x10_box;
|
||||
int x28_mappableObjCount;
|
||||
int x2c_vertexCount;
|
||||
int x30_surfaceCount;
|
||||
uint x34_size;
|
||||
CMappableObject* x38_moStart;
|
||||
CVector3f* x3c_vertexStart;
|
||||
CMapAreaSurface* x40_surfaceStart;
|
||||
rstl::single_ptr< u8 > x44_buf;
|
||||
|
||||
static int gUsedMemory;
|
||||
};
|
||||
|
||||
CFactoryFnReturn FMapAreaFactory(const SObjectTag& objTag, CInputStream& in,
|
||||
const CVParamTransfer&);
|
||||
|
||||
#endif // _CMAPAREA
|
||||
Reference in New Issue
Block a user