NW4F G3d
Loading...
Searching...
No Matches
g3d_ResModel.h
Go to the documentation of this file.
1#ifndef NW_G3D_RES_RESMODEL_H_
2#define NW_G3D_RES_RESMODEL_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_ResSkeleton.h>
8#include <nw/g3d/res/g3d_ResShape.h>
9#include <nw/g3d/res/g3d_ResMaterial.h>
10#include <nw/g3d/res/g3d_ResUserData.h>
11
12namespace nw { namespace g3d { namespace res {
13
14class BindCallback;
15class ResFile;
16
36
37class ResModel : private ResModelData
38{
40
41public:
42 enum Signature { SIGNATURE = NW_G3D_MAKE_U8X4_AS_U32('F', 'M', 'D', 'L') };
43
44 void Setup();
45 void Cleanup();
46 void Reset();
47
48 BindResult Bind(const ResFile* pFile);
49 BindResult Bind(const ResFile* pFile, BindCallback* pCallback);
50 bool ForceBind(const ResTexture* pTexture, const char* name);
51
52 void Release();
53
56
57 void SetUserPtr(void* pUserPtr) { ref().pUserPtr.set_ptr(pUserPtr); }
58
59 void* GetUserPtr() { return ref().pUserPtr.to_ptr(); }
60
61 const void* GetUserPtr() const { return ref().pUserPtr.to_ptr(); }
62
63 template <typename T>
64 T* GetUserPtr() { return ref().pUserPtr.to_ptr<T>(); }
65
66 template <typename T>
67 const T* GetUserPtr() const { return ref().pUserPtr.to_ptr<T>(); }
68
69 NW_G3D_RES_FIELD_CLASS_DECL(ResSkeleton, Skeleton)
70
71 NW_G3D_RES_FIELD_CLASS_ARRAY_DECL(ResVertex, Vertex)
72
73 NW_G3D_RES_FIELD_DIC_DECL(ResShape, Shape)
74
75 NW_G3D_RES_FIELD_DIC_DECL(ResMaterial, Material)
76
77 NW_G3D_RES_FIELD_DIC_DECL(ResUserData, UserData)
78};
79
80} } } // namespace nw::g3d::res
81
82#endif // NW_G3D_RES_RESMODEL_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
Definition g3d_Binding.h:16
Definition g3d_ResCommon.h:62
Definition g3d_ResFile.h:62
Definition g3d_ResModel.h:38
void Setup()
Definition g3d_ResModel.cpp:21
bool ForceBind(const ResTexture *pTexture, const char *name)
void * GetUserPtr()
Definition g3d_ResModel.h:59
const void * GetUserPtr() const
Definition g3d_ResModel.h:61
T * GetUserPtr()
Definition g3d_ResModel.h:64
Signature
Definition g3d_ResModel.h:42
@ SIGNATURE
Definition g3d_ResModel.h:42
const T * GetUserPtr() const
Definition g3d_ResModel.h:67
BindResult Bind(const ResFile *pFile)
Definition g3d_ResModel.cpp:6
void SetUserPtr(void *pUserPtr)
Definition g3d_ResModel.h:57
BindResult Bind(const ResFile *pFile, BindCallback *pCallback)
void Cleanup()
Definition g3d_ResModel.cpp:42
Definition g3d_ResTexture.h:32
#define NW_G3D_RES_COMMON(class_name)
Definition g3d_ResCommon.h:30
#define NW_G3D_RES_FIELD_CLASS_ARRAY_DECL(type, name)
Definition g3d_ResDefs.h:92
#define NW_G3D_RES_FIELD_CLASS_DECL(type, name)
Definition g3d_ResDefs.h:124
#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_MAKE_U8X4_AS_U32(a, b, c, d)
Definition g3d_defs.h:90
Definition g3d_defs.h:122
Definition g3d_GfxManage.cpp:10
Definition g3d_ResCommon.h:179
Definition g3d_ResModel.h:18
Offset ofsVertexArray
Definition g3d_ResModel.h:24
Offset ofsSkeleton
Definition g3d_ResModel.h:23
u16 numShape
Definition g3d_ResModel.h:30
Offset ofsShapeDic
Definition g3d_ResModel.h:25
Offset ofsUserDataDic
Definition g3d_ResModel.h:27
Offset ofsMaterialDic
Definition g3d_ResModel.h:26
BinaryBlockHeader blockHeader
Definition g3d_ResModel.h:19
BinString ofsName
Definition g3d_ResModel.h:20
BinString ofsPath
Definition g3d_ResModel.h:21
u16 numMaterial
Definition g3d_ResModel.h:31
u16 numVertex
Definition g3d_ResModel.h:29
BinPtr pUserPtr
Definition g3d_ResModel.h:34
u16 numUserData
Definition g3d_ResModel.h:32