Files
ss/include/nw4r/g3d/g3d_draw.h
T
Elijah Thomas 9c3c480b24 g3d source (#123)
* g3d_calcvtx

GetData seems to have changed -> dwarf says r is a local and using ofs_to_ptr didnt work

* g3d_light and g3d_fog

sdata2 splits and func ordering

* g3d_scnproc

* g3d_init

* g3d_scnmdl

* g3d_scnmdlsmpl

* g3d_scnroot

* g3d_scnobj

* g3d_res* progress

* g3d_resmdl OK

* g3d_restev OK

* g3d_resmat OK

* g3d_resvtx and g3d_restex OK

* g3d_resnode OK

* g3d_resanm OK

* g3d_resanmchr Progress

* the rest of g3d_res* OK

* g3d_anmvis OK

* g3d_anmclr OK

* Some Splitting

* more OK, Inline Issue in g3d_anmtexsrt

* g3d_obj, g3d_anmobj, g3d_gpu, g3d_tmem, g3d_cpu OK

* g3d_state OK

* g3d/dcc OK

* Include fixup

* More Fixups

* g3d_camera OK

* g3d_draw OK

* g3d_calcworld OK

* g3d_calcworld actually OK

* g3d_workmem, g3d_dcc OK

* g3d_calcview OK

* g3d_anmtexsrt OK with DONT_INLINE

* g3d_transform OK (Feels Cheaty)

* g3d_resanmchr OK

* g3d_draw1mat1shp Close

* g3d_draw1mat1shp OK (Thanks Lago!). Ran symbol applying script
2025-03-16 11:26:15 -04:00

55 lines
1.7 KiB
C++

#ifndef NW4R_G3D_DRAW_H
#define NW4R_G3D_DRAW_H
#include <nw4r/types_nw4r.h>
#include "nw4r/g3d/res/g3d_resmat.h"
#include "nw4r/g3d/res/g3d_resmdl.h"
#include "nw4r/g3d/res/g3d_resnode.h"
#include "nw4r/g3d/res/g3d_resshp.h"
#include "nw4r/math.h" // IWYU pragma: export
namespace nw4r {
namespace g3d {
// Forward declarations
namespace G3DState {
class IndMtxOp;
}
namespace detail {
G3DState::IndMtxOp *GetIndMtxOp(ResMat mat, ResNode node, ResShp shp);
} // namespace detail
struct DrawResMdlReplacement {
u32 flag; // at 0x0
u8 *visArray; // at 0x4
ResTexObjData *texObjDataArray; // at 0x8
ResTlutObjData *tlutObjDataArray; // at 0xC
ResTexSrtData *texSrtDataArray; // at 0x10
ResChanData *chanDataArray; // at 0x14
ResGenModeData *genModeDataArray; // at 0x18
ResMatMiscData *matMiscDataArray; // at 0x1C
ResPixDL *pixDLArray; // at 0x20
ResTevColorDL *tevColorDLArray; // at 0x24
ResIndMtxAndScaleDL *indMtxAndScaleDLArray; // at 0x28
ResTexCoordGenDL *texCoordGenDLArray; // at 0x2C
ResTevData *tevDataArray; // at 0x30
ResVtxPosData **vtxPosTable; // at 0x34
ResVtxNrmData **vtxNrmTable; // at 0x38
ResVtxClrData **vtxClrTable; // at 0x3C
};
void DrawResMdlDirectly(
const ResMdl mdl, const math::MTX34 *pViewPosMtxArray, const math::MTX33 *pViewNrmMtxArray,
const math::MTX34 *pViewEnvMtxArray, const u8 *pByteCodeOpa, const u8 *pByteCodeXlu,
DrawResMdlReplacement *pReplacement, u32 drawMode
);
} // namespace g3d
} // namespace nw4r
#endif