1/**
2 * @file ResFile.h
3 * @brief Resource file for models.
4 */
5
6#pragma once
7
8#include <nn/gfx/gfx_Types.h>
9#include <nn/types.h>
10#include <nn/util.h>
11#include <nn/util/util_BinaryFormat.h>
12
13namespace nn {
14
15namespace gfx {
16template <typename T>
17class TDevice;
18}
19
20namespace g3d {
21class ResModel;
22class ResMaterialAnim;
23class ResShapeAnim;
24class ResSceneAnim;
25typedef void* TextureRef;
26
27class ResFile : public nn::util::BinaryFileHeader {
28public:
29 static bool IsValid(void const* modelSrc);
30 void Relocate();
31 void Unrelocate();
32 static nn::g3d::ResFile* ResCast(void*);
33 s32 BindTexture(nn::g3d::TextureRef (*ref)(char const*, void*), void*);
34 void ReleaseTexture();
35 void Setup(gfx::Device*);
36 void Setup(gfx::Device*, gfx::MemoryPool*, s64, u64);
37 void Cleanup(gfx::Device*);
38 void Reset();
39
40 u64 mFileNameLength; // _20
41 nn::g3d::ResModel* mModels; // _28
42 u64 mModelDictOffset; // _30
43 u64 mSkeleAnimOffset; // _38
44 u64 mSkeleAnimDictOffset; // _40
45 nn::g3d::ResMaterialAnim* mMatAnims; // _48
46 u64 mMatAnimsDictOffset; // _50
47 u64 mBoneVisiOffset; // _58
48 u64 mBoneVisiDictOffset; // _60
49 nn::g3d::ResShapeAnim* mShapeAnims; // _68
50 u64 mShapeAnimDictOffset; // _70
51 nn::g3d::ResSceneAnim* mSceneAnims; // _78
52 u64 mSceneAnimDictOffset; // _80
53 u64 mMemoryPool; // _88
54 u64 mBufferSection; // _90
55 u64 mEmbeddedFilesOffset; // _98
56 u64 mEmbeddedFilesDictOffset; // _A0
57 u64 mPadding; // _A8
58 u64 mStrTableOffset; // _B0
59 u32 mStrTableSize; // _B8
60 u16 mModelCount; // _BC
61 u16 mSkeleAnimCount; // _BE
62 u16 mMatAnimCount; // _C0
63 u16 mBoneAnimCount; // _C2
64 u16 mShapeAnimCount; // _C4
65 u16 mSceneAnimCount; // _C6
66 u16 mExternalFileCount; // _C8
67 u8 mPad[0x6]; // _CA
68};
69} // namespace g3d
70} // namespace nn
71