Files
ss/include/egg/gfx/eggG3DUtility.h
T
2025-03-28 18:42:09 +01:00

64 lines
1.9 KiB
C++

#ifndef EGG_G3D_UTILITY_H
#define EGG_G3D_UTILITY_H
#include "egg/egg_types.h"
#include "nw4r/g3d/g3d_scnmdl.h"
#include "nw4r/g3d/res/g3d_resmat.h"
#include "nw4r/math/math_types.h"
#include "rvl/MEM/mem_allocator.h"
namespace EGG {
class G3DUtility {
public:
static MEMAllocator *getAllocator() {
return sAllocator;
}
struct SetTextureResult {
/* 0x00 */ u8 _0x00[2];
/* 0x02 */ s8 texMapId;
/* 0x03 */ s8 texCoordId;
};
struct SearchResult {
/* 0x00 */ u16 nodeIdx;
/* 0x04 */ const char *name;
};
static u16 SetTexture(
nw4r::g3d::ResMat resMat, nw4r::g3d::ScnMdl::CopiedMatAccess *param_2, const char *name, const GXTexObj *texObj,
bool copy, SetTextureResult *pResult, int maxNumResults, int param_8
);
static int ApplyLightMat(nw4r::g3d::ResMdl mdl, const char *prefix);
static bool setUpLightSet(nw4r::g3d::LightSetting &, nw4r::g3d::ResAnmScn, int);
static void *BumpAlloc(u32 size, u32 align);
static void ResetBumpAlloc() {
sOffset = 0;
}
static void create(u32 size, Heap *pHeap);
static int searchStringResNode(nw4r::g3d::ResMdl mdl, const char * name, bool exactMatch, SearchResult *pResults, int maxNumResults);
static int searchStringResMat(nw4r::g3d::ResMdl mdl, const char * name, bool exactMatch, SearchResult *pResults, int maxNumResults);
static int searchStringResTexPlttInfo(nw4r::g3d::ResMdl mdl, const char * name, bool exactMatch, SearchResult *pResults, int maxNumResults);
typedef int (*MdlSearch)(nw4r::g3d::ResMdl mdl, const char * name, bool exactMatch, SearchResult *pResults, int maxNumResults);
private:
static void defaultTexMtxFunc(nw4r::math::MTX34 *pMtx, s8 camRef, s8 lightRef);
static MEMAllocator *sAllocator;
static void *sBuf;
static u32 sSize;
static u32 sOffset;
static u8 sId;
};
} // namespace EGG
#endif