NW4F Eft
Loading...
Searching...
No Matches
eft_Resource.h
Go to the documentation of this file.
1#ifndef EFT_RESOURCE_H_
2#define EFT_RESOURCE_H_
3
4#include <nw/eft/eft_typeDef.h>
5#include <nw/eft/eft_Data.h>
6#include <nw/eft/eft_System.h>
7#include <nw/eft/eft_Primitive.h>
8
9namespace nw { namespace eft {
10
11class Heap;
12class ParticleShader;
13class Primitive;
14class System;
15
34
56static_assert(sizeof(ResourceEmitterSet) == 0x38, "nw::eft::ResourceEmitterSet size mismatch");
57
59{
60public:
61 enum
62 {
64 };
65
66public:
68 Resource(Heap* heap, void* bin, s32 resourceID, System* eftSys);
69 virtual ~Resource(); // deleted
70
71 const char* GetProjectName() const
72 {
73 return &mNameTbl[mHeader->namePos];
74 }
75
76 Heap* GetHeap() const
77 {
78 return mHeap;
79 }
80
82 {
83 return mHeader->numEmitterSet;
84 }
85
86 s32 GetNumEmitter(s32 emitterSetID) const
87 {
88 return mResEmitterSet[emitterSetID].numEmitter;
89 }
90
91 const CommonEmitterData* GetEmitterData(s32 emitterSetID, s32 emitterID) const
92 {
93 return mResEmitterSet[emitterSetID].tblData[emitterID].emitter;
94 }
95
96 const EmitterSetData* GetEmitterSetData(s32 emitterSetID) const
97 {
98 return mResEmitterSet[emitterSetID].setData;
99 }
100
101 u32 GetUserData(s32 emitterSetID) const
102 {
103 return mResEmitterSet[emitterSetID].userData;
104 }
105
106 u8 GetUserDataNum1(s32 emitterSetID) const
107 {
108 return mResEmitterSet[emitterSetID].userData & 0xff;
109 }
110
111 u8 GetUserDataNum2(s32 emitterSetID) const
112 {
113 return mResEmitterSet[emitterSetID].userData >> 8 & 0xff;
114 }
115
116 u16 GetUserDataBit(s32 emitterSetID) const
117 {
118 return mResEmitterSet[emitterSetID].userData >> 16;
119 }
120
121 const char* GetEmitterName(s32 emitterSetID, s32 emitterID) const
122 {
123 return mResEmitterSet[emitterSetID].tblData[emitterID].emitter->name;
124 }
125
127 {
128 return &mResEmitterSet[emitterSetID];
129 }
130
132 {
133 return mNameTbl;
134 }
135
136 s32 GetNumEmitterROM(s32 emitterSetID) const
137 {
138 return mResEmitterSet[emitterSetID].numEmitterROM;
139 }
140
141 const CommonEmitterData* GetEmitterDataROM(s32 emitterSetID, s32 emitterID) const
142 {
143 return mResEmitterSet[emitterSetID].tblDataROM[emitterID].emitter;
144 }
145
146 const EmitterSetData* GetEmitterSetDataROM(s32 emitterSetID) const
147 {
148 return mResEmitterSet[emitterSetID].setDataROM;
149 }
150
151 u32 GetUserDataROM(s32 emitterSetID) const
152 {
153 return mResEmitterSet[emitterSetID].userDataROM;
154 }
155
156 const char* GetEmitterNameROM(s32 emitterSetID, s32 emitterID) const
157 {
158 return mResEmitterSet[emitterSetID].tblDataROM[emitterID].emitter->name;
159 }
160
161 const char* GetEmitterSetName(s32 emitterSetID) const
162 {
163 return mResEmitterSet[emitterSetID].setName;
164 }
165
166 s32 SearchEmitterSetID(const char* name) const;
167 s32 SearchEmitterID(const char *setName, const char *emitterName) const;
168 s32 SearchEmitterID(s32 emitterSetID, const char *emitterName) const;
169 s32 SearchEmitterID(s32 emitterSetID, const char *emitterName, u32 emitterIdx) const;
170
171 void Initialize(Heap* heap, void* bin, s32 resourceID, System* eftSys);
172 void Finalize(Heap* heap);
173
174private:
175 static void CreateFtexbTextureHandle(Heap* heap, void* texture_data, TextureRes& texRes);
176 static void CreateOriginalTextureHandle(Heap* heap, void* texture_data, TextureRes& texRes);
177 static void DeleteTextureHandle(Heap* heap, TextureRes& texRes, bool isOriginalTexture);
178
179public:
180 bool BindResource(s32 targetSetID, ResourceBind* bind, EmitterTblData* newTbl, s32 newNumEmitter, const char* newSetName, u32 newUserData, u32 newShaderNum, ParticleShader** newShaderArray, u32 newPrimitiveNum, Primitive** newPrimitiveArray);
181 bool UnbindResource(ResourceBind* bind, bool isReBind, bool isKill);
182
184 ParticleShader* GetShader(s32 emitterSetID, u32 index);
185 ParticleShader* GetShader(const VertexShaderKey* vertexKey, const FragmentShaderKey* fragmentKey);
186 ParticleShader* GetShader(s32 emitterSetID, const VertexShaderKey* vertexKey, const FragmentShaderKey* fragmentKey);
187
189 {
190 return mShaderNum;
191 }
192
194 {
195 return mShader;
196 }
197
199 {
200 return mPrimitiveNum;
201 }
202
204 {
205 return mPrimitive;
206 }
207
208 Primitive* GetPrimitive(s32 emitterSetID, u32 index)
209 {
210 u32 primitiveNum = mResEmitterSet[emitterSetID].primitiveNum;
211 Primitive** primitiveArray = mResEmitterSet[emitterSetID].primitiveArray;
212
213 for (u32 i = 0; i < primitiveNum; i++)
214 if (primitiveArray[i] && index == i)
215 return primitiveArray[i];
216
217 return NULL;
218 }
219
220private:
224 char* mNameTbl;
225 const void* mTextureTbl;
232};
233static_assert(sizeof(Resource) == 0x30, "nw::eft::Resource size mismatch");
234
235} } // namespace nw::eft
236
237#endif // EFT_RESOURCE_H_
Definition eft_Heap.h:9
Definition eft_Shader.h:410
Definition eft_Primitive.h:10
Definition eft_Resource.h:59
System * mSystem
Definition eft_Resource.h:221
Primitive ** mPrimitive
Definition eft_Resource.h:230
ResourceEmitterSet * mResEmitterSet
Definition eft_Resource.h:226
u32 GetShaderNum() const
Definition eft_Resource.h:188
ParticleShader * GetShader(u32 index)
u8 GetUserDataNum1(s32 emitterSetID) const
Definition eft_Resource.h:106
s32 GetNumEmitter(s32 emitterSetID) const
Definition eft_Resource.h:86
char * mNameTbl
Definition eft_Resource.h:224
s32 mResourceID
Definition eft_Resource.h:222
Primitive * GetPrimitive(s32 emitterSetID, u32 index)
Definition eft_Resource.h:208
const char * GetEmitterNameROM(s32 emitterSetID, s32 emitterID) const
Definition eft_Resource.h:156
@ cInvalidID
Definition eft_Resource.h:63
s32 SearchEmitterSetID(const char *name) const
Definition eft_Resource.cpp:369
static void DeleteTextureHandle(Heap *heap, TextureRes &texRes, bool isOriginalTexture)
Definition eft_Resource.cpp:292
Primitive ** GetPrimitiveArray() const
Definition eft_Resource.h:203
static void CreateFtexbTextureHandle(Heap *heap, void *texture_data, TextureRes &texRes)
Definition eft_Resource.cpp:18
s32 SearchEmitterID(const char *setName, const char *emitterName) const
ResourceEmitterSet * GetEmitterSetResource(s32 emitterSetID) const
Definition eft_Resource.h:126
s32 SearchEmitterID(s32 emitterSetID, const char *emitterName) const
Definition eft_Resource.cpp:381
bool UnbindResource(ResourceBind *bind, bool isReBind, bool isKill)
Definition eft_Resource.cpp:439
const char * GetEmitterName(s32 emitterSetID, s32 emitterID) const
Definition eft_Resource.h:121
bool BindResource(s32 targetSetID, ResourceBind *bind, EmitterTblData *newTbl, s32 newNumEmitter, const char *newSetName, u32 newUserData, u32 newShaderNum, ParticleShader **newShaderArray, u32 newPrimitiveNum, Primitive **newPrimitiveArray)
Definition eft_Resource.cpp:400
void Finalize(Heap *heap)
Definition eft_Resource.cpp:300
ParticleShader ** mShader
Definition eft_Resource.h:228
const CommonEmitterData * GetEmitterDataROM(s32 emitterSetID, s32 emitterID) const
Definition eft_Resource.h:141
static void CreateOriginalTextureHandle(Heap *heap, void *texture_data, TextureRes &texRes)
Definition eft_Resource.cpp:61
const CommonEmitterData * GetEmitterData(s32 emitterSetID, s32 emitterID) const
Definition eft_Resource.h:91
ParticleShader * GetShader(s32 emitterSetID, const VertexShaderKey *vertexKey, const FragmentShaderKey *fragmentKey)
Definition eft_Resource.cpp:470
Resource(Heap *heap, void *bin, s32 resourceID, System *eftSys)
Definition eft_Resource.cpp:8
ParticleShader * GetShader(const VertexShaderKey *vertexKey, const FragmentShaderKey *fragmentKey)
u16 GetUserDataBit(s32 emitterSetID) const
Definition eft_Resource.h:116
ParticleShader * GetShader(s32 emitterSetID, u32 index)
HeaderData * mHeader
Definition eft_Resource.h:223
const EmitterSetData * GetEmitterSetData(s32 emitterSetID) const
Definition eft_Resource.h:96
Heap * mHeap
Definition eft_Resource.h:227
Heap * GetHeap() const
Definition eft_Resource.h:76
u32 mPrimitiveNum
Definition eft_Resource.h:231
const char * GetEmitterSetName(s32 emitterSetID) const
Definition eft_Resource.h:161
const void * mTextureTbl
Definition eft_Resource.h:225
s32 GetNumEmitterROM(s32 emitterSetID) const
Definition eft_Resource.h:136
u32 GetUserData(s32 emitterSetID) const
Definition eft_Resource.h:101
const char * GetProjectName() const
Definition eft_Resource.h:71
virtual ~Resource()
Definition eft_Resource.cpp:13
ParticleShader ** GetShaderArray() const
Definition eft_Resource.h:193
char * GetEmitterSetNameTable() const
Definition eft_Resource.h:131
u8 GetUserDataNum2(s32 emitterSetID) const
Definition eft_Resource.h:111
void Initialize(Heap *heap, void *bin, s32 resourceID, System *eftSys)
Definition eft_Resource.cpp:120
s32 SearchEmitterID(s32 emitterSetID, const char *emitterName, u32 emitterIdx) const
Definition eft_Resource.cpp:390
const EmitterSetData * GetEmitterSetDataROM(s32 emitterSetID) const
Definition eft_Resource.h:146
Resource()
Definition eft_Resource.h:67
u32 mShaderNum
Definition eft_Resource.h:229
s32 GetNumEmitterSet() const
Definition eft_Resource.h:81
u32 GetUserDataROM(s32 emitterSetID) const
Definition eft_Resource.h:151
u32 GetPrimitiveNum() const
Definition eft_Resource.h:198
Definition eft_System.h:24
Definition eft_CafeWrapper.cpp:117
Definition eft_Data.h:786
Definition eft_Data.h:718
Definition eft_Data.h:730
Definition eft_Shader.h:170
Definition eft_Data.h:697
Definition eft_Resource.h:17
ResourceBind()
Definition eft_Resource.h:18
s32 saveNumEmitter
Definition eft_Resource.h:24
u32 saveUserData
Definition eft_Resource.h:26
const char * saveName
Definition eft_Resource.h:23
Primitive ** primitiveArray
Definition eft_Resource.h:31
u32 primitiveNum
Definition eft_Resource.h:32
s32 emitterSetID
Definition eft_Resource.h:22
ParticleShader ** shaderArray
Definition eft_Resource.h:28
u32 shaderNum
Definition eft_Resource.h:29
s32 resourceID
Definition eft_Resource.h:21
EmitterTblData * saveTbl
Definition eft_Resource.h:25
EmitterSetData * source
Definition eft_Resource.h:20
Definition eft_Resource.h:36
s32 numEmitter
Definition eft_Resource.h:39
EmitterSetData * setDataROM
Definition eft_Resource.h:42
EmitterSetData * setData
Definition eft_Resource.h:37
const char * setName
Definition eft_Resource.h:47
s32 numEmitterROM
Definition eft_Resource.h:44
ParticleShader ** shaderArray
Definition eft_Resource.h:50
EmitterTblData * tblDataROM
Definition eft_Resource.h:43
u32 shaderNum
Definition eft_Resource.h:51
bool isShowDetail
Definition eft_Resource.h:48
Primitive ** primitiveArray
Definition eft_Resource.h:53
u32 userDataROM
Definition eft_Resource.h:45
u32 userData
Definition eft_Resource.h:40
u32 primitiveNum
Definition eft_Resource.h:54
EmitterTblData * tblData
Definition eft_Resource.h:38
Definition eft_Data.h:743
Definition eft_Shader.h:65