Support Forum G3D Web Page |
Shared state for quickly instantiating particular types of ParticleSystems.
More...
Inherits G3D::Model.
Classes | |
class | Emitter |
All properties are in object space. More... | |
class | Specification |
A single ParticleSystemModel::Emitter::Specification will cast directly to a ParticleSystemModel::Specification at Any parsing time. More... | |
Public Member Functions | |
ParticleSystemModel () | |
We should support multiple materials per model. More... | |
virtual const String & | className () const override |
Name of the G3D::Model subclass. More... | |
const std::pair< float, float > & | coverageFadeTime (int e) const |
Fade in and fade out time for emitter e. More... | |
const Array< shared_ptr< Emitter > > & | emitterArray () const |
bool | hasCoverageFadeTime () const |
True if any fadeTime is non-zero. More... | |
bool | hasExpireTime () const |
True if any emitter's mean expiration time is finite. More... | |
bool | hasPhysics () const |
virtual bool | intersect (const Ray &ray, const CoordinateFrame &cframe, float &maxDistance, Model::HitInfo &info=Model::HitInfo::ignore, const Entity *entity=nullptr, const Model::Pose *pose=nullptr) const |
Determines if the ray intersects the heightfield and fills the info with the proper information. More... | |
virtual const String & | name () const override |
Name of the instance (usually based on the filename it is loaded from) More... | |
virtual void | pose (Array< shared_ptr< Surface > > &surfaceArray, const CFrame &rootFrame, const CFrame &prevFrame, const shared_ptr< Entity > &entity, const Model::Pose *pose, const Model::Pose *prevPose, const Surface::ExpressiveLightScatteringProperties &expressiveLightScatteringProperties) override |
This will be replaced soon with a version that takes a shared_ptr<Pose>. More... | |
Static Public Member Functions | |
static shared_ptr< ParticleSystemModel > | create (const Specification &specification, const String &name="") |
static lazy_ptr< Model > | lazyCreate (const Specification &s, const String &name="") |
static lazy_ptr< Model > | lazyCreate (const String &name, const Any &any) |
static void | setUseOptimizedIntersect (bool b) |
If true, complex models should use TriTree to accelerate intersect() calls where possible. More... | |
static bool | useOptimizedIntersect () |
Protected Member Functions | |
ParticleSystemModel (const Specification &spec, const String &name) | |
void | init () |
Static Protected Member Functions | |
template<class T , class ... ArgTypes> | |
static shared_ptr< T > | createShared (ArgTypes &&... args) |
Like std::make_shared, but works for protected constructors. More... | |
Protected Attributes | |
Array< std::pair< float, float > > | m_coverageFadeTime |
These are stored explicitly to avoid chasing shared pointers during simulation. More... | |
Array< shared_ptr< Emitter > > | m_emitterArray |
bool | m_hasCoverageFadeTime |
bool | m_hasExpireTime |
bool | m_hasPhysics |
String | m_name |
Friends | |
class | ParticleSystem |
Shared state for quickly instantiating particular types of ParticleSystems.
|
protected |
|
inline |
We should support multiple materials per model.
|
inlineoverridevirtual |
Name of the G3D::Model subclass.
Implements G3D::Model.
|
inline |
Fade in and fade out time for emitter e.
Used during ParticleSystem::onSimulation
|
static |
Referenced by lazyCreate().
|
inlinestaticprotectedinherited |
Like std::make_shared, but works for protected constructors.
Call as createShared<myclass>.
|
inline |
True if any fadeTime is non-zero.
|
inline |
True if any emitter's mean expiration time is finite.
|
inline |
|
protected |
|
inlinevirtualinherited |
Determines if the ray intersects the heightfield and fills the info with the proper information.
maxDistance | Max distance to trace to on input, hit distance written on output if hit |
Reimplemented in G3D::ArticulatedModel, G3D::MD2Model, G3D::MD3Model, G3D::HeightfieldModel, G3D::PointModel, G3D::VoxelModel, and G3D::FontModel.
|
inlinestatic |
Referenced by lazyCreate().
|
inlineoverridevirtual |
Name of the instance (usually based on the filename it is loaded from)
Implements G3D::Model.
Referenced by lazyCreate().
|
inlineoverridevirtual |
This will be replaced soon with a version that takes a shared_ptr<Pose>.
pose | Must have the subclass of Model::Pose appropriate to the Model subclass. |
Implements G3D::Model.
|
inlinestaticinherited |
If true, complex models should use TriTree to accelerate intersect() calls where possible.
This can make the first intersect() call very slow for the tree build and can make loading slow. It may not affect performance of skinned or articulated models that animate.
This value should be set before the models are loaded. If it is changed after a model is loaded, the Model is not required to respond to it.
Default: false
|
inlinestaticinherited |
|
friend |
|
protected |
These are stored explicitly to avoid chasing shared pointers during simulation.
Referenced by coverageFadeTime().
Referenced by emitterArray().
|
protected |
Referenced by hasCoverageFadeTime().
|
protected |
Referenced by hasExpireTime().
|
protected |
Referenced by hasPhysics().