NW4F G3d
Loading...
Searching...
No Matches
g3d_ResFile.h
Go to the documentation of this file.
1#ifndef NW_G3D_RES_RESFILE_H_
2#define NW_G3D_RES_RESFILE_H_
3
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/res/g3d_ResCommon.h>
6#include <nw/g3d/res/g3d_ResDictionary.h>
7#include <nw/g3d/res/g3d_Binding.h>
8#include <nw/g3d/res/g3d_ResModel.h>
9#include <nw/g3d/res/g3d_ResSkeleton.h>
10#include <nw/g3d/res/g3d_ResShape.h>
11#include <nw/g3d/res/g3d_ResMaterial.h>
12#include <nw/g3d/res/g3d_ResTexture.h>
13#include <nw/g3d/res/g3d_ResSkeletalAnim.h>
14#include <nw/g3d/res/g3d_ResTexPatternAnim.h>
15#include <nw/g3d/res/g3d_ResShaderParamAnim.h>
16#include <nw/g3d/res/g3d_ResVisibilityAnim.h>
17#include <nw/g3d/res/g3d_ResShapeAnim.h>
18#include <nw/g3d/res/g3d_ResSceneAnim.h>
19
20namespace nw { namespace g3d { namespace res {
21
22class BindCallback;
23
60
61class ResFile : private ResFileData
62{
63public:
65
66 enum Signature { SIGNATURE = NW_G3D_MAKE_U8X4_AS_U32('F', 'R', 'E', 'S') };
67
68 static ResFile* ResCast(void* ptr);
69
70 void Setup();
71 void Cleanup();
72 void Reset();
73
74 BindResult Bind(const ResFile* pFile, bit32 typeMask);
75 BindResult Bind(const ResFile* pFile, bit32 typeMask, BindCallback* pCallback);
76 BindResult Bind(const BindFuncTable& funcTable);
77
78 void Release(bit32 typeMask);
79
80 static const char* GetClassName() { return "ResFile"; }
81
83 const DataType& ref() const { NW_G3D_VALIDITY_ASSERT; return *ptr(); }
84
85 DataType* ptr() { return this; }
86 const DataType* ptr() const { return this; }
87
88 static bool IsValid(const void* ptr);
89
90 const BinaryFileHeader* GetFileHeader() const { return &ref().fileHeader; }
91
93
94 void SetUserPtr(void* pUserPtr) { ref().pUserPtr.set_ptr(pUserPtr); }
95
97 const void* GetUserPtr() const { return ref().pUserPtr.to_ptr(); }
98
99 template <typename T>
100 T* GetUserPtr() { return ref().pUserPtr.to_ptr<T>(); }
101
102 template <typename T>
103 const T* GetUserPtr() const { return ref().pUserPtr.to_ptr<T>(); }
104
105 NW_G3D_RES_FIELD_DIC_DECL(ResModel, Model)
106
107 NW_G3D_RES_FIELD_DIC_DECL(ResTexture, Texture)
108
109 NW_G3D_RES_FIELD_DIC_DECL(ResSkeletalAnim, SkeletalAnim)
110
111 NW_G3D_RES_FIELD_DIC_DECL(ResShaderParamAnim, ShaderParamAnim)
112 NW_G3D_RES_FIELD_DIC_DECL(ResShaderParamAnim, ColorAnim)
113 NW_G3D_RES_FIELD_DIC_DECL(ResShaderParamAnim, TexSrtAnim)
114
115 NW_G3D_RES_FIELD_DIC_DECL(ResTexPatternAnim, TexPatternAnim)
116
117 NW_G3D_RES_FIELD_DIC_DECL(ResVisibilityAnim, BoneVisAnim)
118 NW_G3D_RES_FIELD_DIC_DECL(ResVisibilityAnim, MatVisAnim)
119
120 NW_G3D_RES_FIELD_DIC_DECL(ResShapeAnim, ShapeAnim)
121
122 NW_G3D_RES_FIELD_DIC_DECL(ResSceneAnim, SceneAnim)
123
124 NW_G3D_RES_FIELD_DIC_DECL(ResExternalFile, ExternalFile)
125
126private:
128};
129
131{
132public:
134
135 virtual ~BindCallback() {}
136
138 {
139 (void)textureRef;
141 }
142
144 {
145 (void)textureRef;
147 }
148
149 ResFile* GetFile() { return m_pFile; }
150
152
154
156
157private:
162
163 friend class ResFile;
164 friend class ResModel;
165};
166
167} } } // namespace nw::g3d
168
169#endif // NW_G3D_RES_RESFILE_H_
Definition g3d_ResCommon.h:109
BinPtr & set_ptr(void *ptr)
Definition g3d_ResCommon.h:143
const void * to_ptr() const
Definition g3d_ResCommon.h:121
void * to_ptr()
Definition g3d_ResCommon.h:119
Definition g3d_ResCommon.h:93
Definition g3d_ResFile.h:131
ResTexPatternAnim * m_pTexPatternAnim
Definition g3d_ResFile.h:161
BindCallback()
Definition g3d_ResFile.h:133
ResModel * GetModel()
Definition g3d_ResFile.h:151
ResModel * m_pModel
Definition g3d_ResFile.h:159
virtual BindResult ModelTexNotBound(ResTextureRef *textureRef)
Definition g3d_ResFile.h:137
ResTexPatternAnim * GetTexPatternAnim()
Definition g3d_ResFile.h:155
ResFile * GetFile()
Definition g3d_ResFile.h:149
virtual ~BindCallback()
Definition g3d_ResFile.h:135
ResMaterial * GetMaterial()
Definition g3d_ResFile.h:153
virtual BindResult AnimTexNotBound(ResTextureRef *textureRef)
Definition g3d_ResFile.h:143
ResFile * m_pFile
Definition g3d_ResFile.h:158
ResMaterial * m_pMaterial
Definition g3d_ResFile.h:160
Definition g3d_ResSceneAnim.h:179
Definition g3d_Binding.h:16
static BindResult NotBound(bit32 mask=MASK_ALL)
Definition g3d_Binding.h:26
Definition g3d_ResCommon.h:62
Definition g3d_ResFile.h:62
void SetUserPtr(void *pUserPtr)
Definition g3d_ResFile.h:94
void * GetUserPtr()
Definition g3d_ResFile.h:96
Signature
Definition g3d_ResFile.h:66
@ SIGNATURE
Definition g3d_ResFile.h:66
static const char * GetClassName()
Definition g3d_ResFile.h:80
static bool IsValid(const void *ptr)
void Release(bit32 typeMask)
BindResult Bind(const ResFile *pFile, bit32 typeMask)
Definition g3d_ResFile.cpp:14
const T * GetUserPtr() const
Definition g3d_ResFile.h:103
BindResult Bind(const BindFuncTable &funcTable)
const DataType * ptr() const
Definition g3d_ResFile.h:86
T * GetUserPtr()
Definition g3d_ResFile.h:100
static ResFile * ResCast(void *ptr)
Definition g3d_ResFile.cpp:5
const void * GetUserPtr() const
Definition g3d_ResFile.h:97
DataType * ptr()
Definition g3d_ResFile.h:85
void Setup()
Definition g3d_ResFile.cpp:39
ResFileData DataType
Definition g3d_ResFile.h:64
const BinaryFileHeader * GetFileHeader() const
Definition g3d_ResFile.h:90
void Cleanup()
Definition g3d_ResFile.cpp:54
DataType & ref()
Definition g3d_ResFile.h:82
const DataType & ref() const
Definition g3d_ResFile.h:83
BindResult Bind(const ResFile *pFile, bit32 typeMask, BindCallback *pCallback)
Definition g3d_ResMaterial.h:375
Definition g3d_ResModel.h:38
Definition g3d_ResTexPatternAnim.h:83
Definition g3d_ResTexture.h:70
#define NW_G3D_VALIDITY_ASSERT
Definition g3d_ResCommon.h:11
#define NW_G3D_RES_FIELD_STRING_DECL(name)
Definition g3d_ResDefs.h:137
#define NW_G3D_RES_FIELD_DIC_DECL(type, name)
Definition g3d_ResDefs.h:51
#define NW_G3D_DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition g3d_defs.h:81
u32 bit32
Definition g3d_defs.h:131
#define NW_G3D_MAKE_U8X4_AS_U32(a, b, c, d)
Definition g3d_defs.h:90
Definition g3d_defs.h:122
@ BIND_TEXTURE
Definition g3d_Binding.h:10
Definition g3d_GfxManage.cpp:10
Definition g3d_ResCommon.h:157
Definition g3d_ResFile.h:25
Offset ofsSceneAnimDic
Definition g3d_ResFile.h:42
u32 sizeStringPool
Definition g3d_ResFile.h:29
u32 alignment
Definition g3d_ResFile.h:27
u16 numSkeletalAnim
Definition g3d_ResFile.h:47
Offset ofsStringPool
Definition g3d_ResFile.h:30
BinaryFileHeader fileHeader
Definition g3d_ResFile.h:26
Offset ofsSkeletalAnimDic
Definition g3d_ResFile.h:34
Offset ofsShapeAnimDic
Definition g3d_ResFile.h:41
Offset ofsTexPatternAnimDic
Definition g3d_ResFile.h:38
Offset ofsTextureDic
Definition g3d_ResFile.h:33
u16 numSceneAnim
Definition g3d_ResFile.h:55
Offset ofsShaderParamAnimDic
Definition g3d_ResFile.h:35
u16 numTexSrtAnim
Definition g3d_ResFile.h:50
Offset ofsTexSrtAnimDic
Definition g3d_ResFile.h:37
BinString ofsName
Definition g3d_ResFile.h:28
u16 numMatVisAnim
Definition g3d_ResFile.h:53
BinPtr pUserPtr
Definition g3d_ResFile.h:58
u16 numExternalFile
Definition g3d_ResFile.h:56
u16 numTexPatternAnim
Definition g3d_ResFile.h:51
u16 numShaderParamAnim
Definition g3d_ResFile.h:48
u16 numTexture
Definition g3d_ResFile.h:46
Offset ofsExternalFileDic
Definition g3d_ResFile.h:43
Offset ofsModelDic
Definition g3d_ResFile.h:32
Offset ofsBoneVisAnimDic
Definition g3d_ResFile.h:39
u16 numModel
Definition g3d_ResFile.h:45
Offset ofsMatVisAnimDic
Definition g3d_ResFile.h:40
u16 numShapeAnim
Definition g3d_ResFile.h:54
u16 numBoneVisAnim
Definition g3d_ResFile.h:52
Offset ofsColorAnimDic
Definition g3d_ResFile.h:36
u16 numColorAnim
Definition g3d_ResFile.h:49