MCPcopy Create free account
hub / github.com/NazaraEngine/NazaraEngine / Initialize

Method Initialize

src/Nazara/Graphics/ParticleDeclaration.cpp:271–324  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269 */
270
271 bool ParticleDeclaration::Initialize()
272 {
273 if (!ParticleDeclarationLibrary::Initialize())
274 {
275 NazaraError("Failed to initialise library");
276 return false;
277 }
278
279 try
280 {
281 ErrorFlags flags(ErrorFlag_Silent | ErrorFlag_ThrowException);
282
283 // Layout : Type
284 ParticleDeclaration* declaration;
285
286 // ParticleLayout_Billboard : ParticleStruct_Billboard
287 declaration = &s_declarations[ParticleLayout_Billboard];
288 declaration->EnableComponent(ParticleComponent_Color, ComponentType_Color, NazaraOffsetOf(ParticleStruct_Billboard, color));
289 declaration->EnableComponent(ParticleComponent_Life, ComponentType_Float1, NazaraOffsetOf(ParticleStruct_Billboard, life));
290 declaration->EnableComponent(ParticleComponent_Normal, ComponentType_Float3, NazaraOffsetOf(ParticleStruct_Billboard, normal));
291 declaration->EnableComponent(ParticleComponent_Position, ComponentType_Float3, NazaraOffsetOf(ParticleStruct_Billboard, position));
292 declaration->EnableComponent(ParticleComponent_Rotation, ComponentType_Float1, NazaraOffsetOf(ParticleStruct_Billboard, rotation));
293 declaration->EnableComponent(ParticleComponent_Size, ComponentType_Float2, NazaraOffsetOf(ParticleStruct_Billboard, size));
294 declaration->EnableComponent(ParticleComponent_Velocity, ComponentType_Float3, NazaraOffsetOf(ParticleStruct_Billboard, velocity));
295
296 NazaraAssert(declaration->GetStride() == sizeof(ParticleStruct_Billboard), "Invalid stride for declaration ParticleLayout_Billboard");
297
298 // ParticleLayout_Model : ParticleStruct_Model
299 declaration = &s_declarations[ParticleLayout_Model];
300 declaration->EnableComponent(ParticleComponent_Life, ComponentType_Float1, NazaraOffsetOf(ParticleStruct_Model, life));
301 declaration->EnableComponent(ParticleComponent_Position, ComponentType_Float3, NazaraOffsetOf(ParticleStruct_Model, position));
302 declaration->EnableComponent(ParticleComponent_Rotation, ComponentType_Quaternion, NazaraOffsetOf(ParticleStruct_Model, rotation));
303 declaration->EnableComponent(ParticleComponent_Velocity, ComponentType_Float3, NazaraOffsetOf(ParticleStruct_Model, velocity));
304
305 NazaraAssert(declaration->GetStride() == sizeof(ParticleStruct_Model), "Invalid stride for declaration ParticleLayout_Model");
306
307 // ParticleLayout_Sprite : ParticleStruct_Sprite
308 declaration = &s_declarations[ParticleLayout_Sprite];
309 declaration->EnableComponent(ParticleComponent_Color, ComponentType_Color, NazaraOffsetOf(ParticleStruct_Sprite, color));
310 declaration->EnableComponent(ParticleComponent_Life, ComponentType_Float1, NazaraOffsetOf(ParticleStruct_Sprite, life));
311 declaration->EnableComponent(ParticleComponent_Position, ComponentType_Float3, NazaraOffsetOf(ParticleStruct_Sprite, position));
312 declaration->EnableComponent(ParticleComponent_Rotation, ComponentType_Float1, NazaraOffsetOf(ParticleStruct_Sprite, rotation));
313 declaration->EnableComponent(ParticleComponent_Velocity, ComponentType_Float3, NazaraOffsetOf(ParticleStruct_Sprite, velocity));
314
315 NazaraAssert(declaration->GetStride() == sizeof(ParticleStruct_Sprite), "Invalid stride for declaration ParticleLayout_Sprite");
316 }
317 catch (const std::exception& e)
318 {
319 NazaraError("Failed to initialize particle declarations: " + String(e.what()));
320 return false;
321 }
322
323 return true;
324 }
325
326 /*!
327 * \brief Uninitializes the particle declaration librairies

Callers

nothing calls this directly

Calls 3

StringClass · 0.50
EnableComponentMethod · 0.45
GetStrideMethod · 0.45

Tested by

no test coverage detected