re3/src/modelinfo/SimpleModelInfo.h

61 lines
1.8 KiB
C
Raw Normal View History

2019-05-15 14:52:37 +00:00
#pragma once
#include "BaseModelInfo.h"
class CSimpleModelInfo : public CBaseModelInfo
{
public:
// atomics[2] is often a pointer to the non-LOD modelinfo
RpAtomic *m_atomics[3];
// m_lodDistances[2] holds the near distance for LODs
float m_lodDistances[3];
uint8 m_numAtomics;
uint8 m_alpha;
2019-06-17 08:30:02 +00:00
uint16 m_firstDamaged : 2; // 0: no damage model
// 1: 1 and 2 are damage models
// 2: 2 is damage model
2020-05-05 21:27:43 +00:00
uint16 m_wetRoadReflection : 1;
2019-05-15 14:52:37 +00:00
uint16 m_isDamaged : 1;
2020-05-05 21:27:43 +00:00
2019-05-15 14:52:37 +00:00
uint16 m_isBigBuilding : 1;
uint16 m_noFade : 1;
uint16 m_drawLast : 1;
uint16 m_additive : 1;
2020-05-05 21:27:43 +00:00
2019-05-15 14:52:37 +00:00
uint16 m_isSubway : 1;
uint16 m_ignoreLight : 1;
uint16 m_noZwrite : 1;
2020-05-05 21:27:43 +00:00
uint16 m_noShadows : 1;
uint16 m_ignoreDrawDist : 1;
uint16 m_isCodeGlass : 1;
uint16 m_isArtistGlass : 1;
2019-05-15 14:52:37 +00:00
CSimpleModelInfo(void) : CBaseModelInfo(MITYPE_SIMPLE) {}
CSimpleModelInfo(ModelInfoType id) : CBaseModelInfo(id) {}
2019-05-15 14:52:37 +00:00
~CSimpleModelInfo() {}
void DeleteRwObject(void);
RwObject *CreateInstance(void);
RwObject *CreateInstance(RwMatrix *);
RwObject *GetRwObject(void) { return (RwObject*)m_atomics[0]; }
void Init(void);
void IncreaseAlpha(void);
void SetAtomic(int n, RpAtomic *atomic);
void SetLodDistances(float *dist);
float GetLodDistance(int i);
2019-05-15 14:52:37 +00:00
float GetNearDistance(void);
float GetLargestLodDistance(void);
RpAtomic *GetAtomicFromDistance(float dist);
2020-05-05 16:06:38 +00:00
RpAtomic *GetFirstAtomicFromDistance(float dist);
2019-05-15 14:52:37 +00:00
void FindRelatedModel(void);
void SetupBigBuilding(void);
void SetNumAtomics(int n) { m_numAtomics = n; }
CSimpleModelInfo *GetRelatedModel(void){
return (CSimpleModelInfo*)m_atomics[2]; }
void SetRelatedModel(CSimpleModelInfo *m){
m_atomics[2] = (RpAtomic*)m; }
};
2020-05-07 19:55:54 +00:00
//static_assert(sizeof(CSimpleModelInfo) == 0x4C, "CSimpleModelInfo: error");