mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-10-29 07:16:05 +03:00
74 lines
2.2 KiB
C++
74 lines
2.2 KiB
C++
#ifndef MODEL_C_M2_SCENE_RENDER_HPP
|
|
#define MODEL_C_M2_SCENE_RENDER_HPP
|
|
|
|
#include "gx/Types.hpp"
|
|
#include "model/CM2Scene.hpp"
|
|
#include "model/M2Types.hpp"
|
|
#include <cstdint>
|
|
|
|
class CM2Cache;
|
|
class CM2Lighting;
|
|
class CM2Model;
|
|
class CM2Shared;
|
|
struct M2Batch;
|
|
struct M2Data;
|
|
struct M2Element;
|
|
struct M2Material;
|
|
struct M2SkinSection;
|
|
|
|
class CM2SceneRender {
|
|
public:
|
|
// Static variables
|
|
static C44Matrix s_identity;
|
|
static int32_t s_fogModeList[M2BLEND_COUNT];
|
|
static EGxBlend s_gxBlend[M2PASS_COUNT][M2BLEND_COUNT];
|
|
static int32_t s_shadedList[M2BLEND_COUNT];
|
|
|
|
// Member variables
|
|
C44Matrix matrix0;
|
|
CM2Scene* m_scene;
|
|
CM2Cache* m_cache;
|
|
M2Data* m_data = nullptr;
|
|
M2PASS m_curPass;
|
|
M2Element* m_curElement = nullptr;
|
|
M2Element* m_prevElement = nullptr;
|
|
uint32_t m_curType = -1u;
|
|
uint32_t m_prevType = -1u;
|
|
CM2Model* m_curModel = nullptr;
|
|
CM2Model* m_prevModel = nullptr;
|
|
CM2Shared* m_curShared = nullptr;
|
|
CM2Shared* m_prevShared = nullptr;
|
|
CM2Lighting* m_curLighting = nullptr;
|
|
CM2Lighting* m_prevLighting = nullptr;
|
|
uint32_t m_curShaded = 0;
|
|
uint32_t m_prevShaded = 0;
|
|
uint32_t m_curFogMode = -1u;
|
|
uint32_t m_prevFogMode = -1u;
|
|
M2Batch* m_curBatch = nullptr;
|
|
M2Batch* m_prevBatch = nullptr;
|
|
M2SkinSection* m_curSkinSection = nullptr;
|
|
M2SkinSection* m_prevSkinSection = nullptr;
|
|
M2Material* m_curMaterial = nullptr;
|
|
M2Material* m_prevMaterial = nullptr;
|
|
|
|
// Member functions
|
|
CM2SceneRender(CM2Scene* scene)
|
|
: m_scene(scene)
|
|
, m_cache(scene->m_cache)
|
|
{};
|
|
void Draw(M2PASS pass, M2Element* elements, uint32_t* a4, uint32_t a5);
|
|
void DrawBatch();
|
|
void DrawBatchDoodad(M2Element* elements, uint32_t* a3);
|
|
void DrawBatchProj();
|
|
void DrawCallback();
|
|
int32_t DrawParticle(uint32_t a2, M2Element* elements, uint32_t* a4, uint32_t a5);
|
|
void DrawRibbon();
|
|
void SetBatchVertices(int32_t a2);
|
|
void SetupBatchVertices();
|
|
void SetupLighting();
|
|
void SetupMaterial();
|
|
void SetupTextures();
|
|
};
|
|
|
|
#endif
|