Former-commit-id: 63e1cac538c577a1f1aafa71fa7eef69a6d4daab [formerly b2d8769fd02a0e7d9c476d4ad7be1988a1fd6789] [formerly 636b5cb79bcb8da44d9aa45ba1023565bcf29f0d [formerly a2361ec2b8679d4d4ba096e543b5d4b91825dd62]] Former-commit-id: d402d35477f9db0135c553d55c401939426bf62d [formerly 607336ea0f42731e4604f3a8c2df06f3aecfc401] Former-commit-id: 69e23cd6c06723486de5e4641ce810012dac66da
78 lines
2.6 KiB
C++
78 lines
2.6 KiB
C++
// Copyright (C) 2015 Jérôme Leclercq
|
|
// This file is part of the "Nazara Development Kit"
|
|
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp
|
|
|
|
#include <NDK/Components/ParticleGroupComponent.hpp>
|
|
#include <NDK/Components/ParticleEmitterComponent.hpp>
|
|
#include <Nazara/Core/Error.hpp>
|
|
|
|
namespace Ndk
|
|
{
|
|
/*!
|
|
* \ingroup NDK
|
|
* \class Ndk::ParticleGroupComponent
|
|
* \brief NDK class that represents the component for a group of particles
|
|
*/
|
|
|
|
/*!
|
|
* \brief Constructs a ParticleGroupComponent object with a maximal number of particles and a layout
|
|
*
|
|
* \param maxParticleCount Maximum number of particles to generate
|
|
* \param layout Enumeration for the layout of data information for the particles
|
|
*/
|
|
|
|
inline ParticleGroupComponent::ParticleGroupComponent(unsigned int maxParticleCount, Nz::ParticleLayout layout) :
|
|
ParticleGroup(maxParticleCount, layout)
|
|
{
|
|
}
|
|
|
|
/*!
|
|
* \brief Constructs a ParticleGroupComponent object with a maximal number of particles and a particle declaration
|
|
*
|
|
* \param maxParticleCount Maximum number of particles to generate
|
|
* \param declaration Data information for the particles
|
|
*/
|
|
|
|
inline ParticleGroupComponent::ParticleGroupComponent(unsigned int maxParticleCount, Nz::ParticleDeclarationConstRef declaration) :
|
|
ParticleGroup(maxParticleCount, std::move(declaration))
|
|
{
|
|
}
|
|
|
|
/*!
|
|
* \brief Adds an emitter to the particles
|
|
*
|
|
* \param emitter Emitter for the particles
|
|
*
|
|
* \remark Produces a NazaraAssert if emitter is invalid
|
|
* \remark Produces a NazaraAssert if entity has no component of type ParticleEmitterComponent
|
|
*/
|
|
|
|
inline void ParticleGroupComponent::AddEmitter(Entity* emitter)
|
|
{
|
|
NazaraAssert(emitter && emitter->IsValid(), "Invalid entity");
|
|
NazaraAssert(emitter->HasComponent<ParticleEmitterComponent>(), "Entity must have a NodeComponent");
|
|
|
|
auto& emitterComponent = emitter->GetComponent<ParticleEmitterComponent>();
|
|
ParticleGroup::AddEmitter(&emitterComponent);
|
|
}
|
|
|
|
|
|
/*!
|
|
* \brief Removes an emitter to the particles
|
|
*
|
|
* \param emitter Emitter for the particles to remove
|
|
*
|
|
* \remark Produces a NazaraAssert if emitter is invalid
|
|
* \remark Produces a NazaraAssert if entity has no component of type ParticleEmitterComponent
|
|
*/
|
|
|
|
inline void ParticleGroupComponent::RemoveEmitter(Entity* emitter)
|
|
{
|
|
NazaraAssert(emitter && emitter->IsValid(), "Invalid entity");
|
|
NazaraAssert(emitter->HasComponent<ParticleEmitterComponent>(), "Entity must have a NodeComponent");
|
|
|
|
auto& emitterComponent = emitter->GetComponent<ParticleEmitterComponent>();
|
|
ParticleGroup::RemoveEmitter(&emitterComponent);
|
|
}
|
|
}
|