Stride

OPEN / CLOSE
  • Features
  • Blog
  • Documentation
  • Community
(icon) Download

  • Discord
  • Facebook
  • Twitter
  • YouTube

LANGUAGE

OPEN / CLOSE
  • English
  • 日本語
    Show / Hide Table of Contents

    ParticleEmitter Class

    Namespace: Stride.Particles
    Assembly: Stride.Particles.dll

    The ParticleEmitter is the base manager for any given pool of particles, holding all particles and initializers, updaters, spawners, materials and shape builders associated with the particles.

    System.Object → ParticleEmitter
    Derived from ParticleEmitter:

    [DataContract("ParticleEmitter")]
    public class ParticleEmitter : IDisposable
    Name Description
    Constructors
    ParticleEmitter()

    Default constructor. Initializes the pool and all collections contained in the ParticleEmitter

    Fields
    Initializers

    List of ParticleInitializer within thie ParticleEmitter. Adjust Stride.Particles.ParticleEmitter.requiredFields automatically

    Spawners

    List of ParticleSpawner to spawn particles in this ParticleEmitter

    Updaters

    List of ParticleUpdater within thie ParticleEmitter. Adjust Stride.Particles.ParticleEmitter.requiredFields automatically

    Properties
    CanEmitParticles

    Indicates if the emitter is allowed to emit new particles or not.

    DelayParticleDeath

    If positive, forces particles to stay one frame more when they are about ot expire

    DrawPriority

    DrawPriority is used to sort emitters at the same position based on a user defined key and determine the order in which they will be drawn

    EmitterName

    The emitter name is used to uniquely identify this emitter within the same particle system

    Enabled

    Gets or sets a value indicating whether this ParticleEmitter is enabled.

    LivingParticles

    Gets the current living particles from this emitter's pool

    Material

    The ParticleMaterial may update the vertex buffer, and it also applies the Effect required for rendering

    MaxParticles

    Maximum number of particles this ParticleEmitter can have at any given time

    MaxParticlesOverride

    Maximum particles (if positive) overrides the maximum particle count limitation

    ParticleLifetime
    RandomSeedMethod

    Random numbers in the ParticleSystem are generated based on a seed, which in turn can be generated using several methods.

    ShapeBuilder

    The ShapeBuilder expands all living particles to vertex buffers for rendering

    SimulationSpace

    Simulation space defines if the particles should be born in world space, or local to the emitter

    SortingPolicy

    How and if particles are sorted, and how they are access during rendering

    Methods
    BuildVertexBuffer(IntPtr, ref Matrix, ref Matrix)

    Build the vertex buffer from particle data

    DelayedInitialization(ParticleSystem)

    Some parameters should be initialized when the emitter first runs, rather than in the constructor

    Dispose()
    EmitParticles(Int32)

    Requests the emitter to spawn several new particles. The particles are buffered and will be spawned during the Update(Single, ParticleSystem) step

    InvalidateRelations()

    Invalidates relation of this emitter to any other emitters that might be referenced

    PrepareForDraw(out Boolean, out Int32, out Int32)

    PrepareForDraw(out Boolean, out Int32, out Int32) prepares and updates the Material, ShapeBuilder and VertexBuilder if necessary

    PreUpdate()

    Updates all data changes before the emitter is updated this frame. This method is not thread-safe!

    ResetSimulation()

    Resets the simulation, deleting all particles and starting from Time = 0

    Update(Single, ParticleSystem)

    Updates the emitter and all its particles, and applies all updaters and spawners.

    UpdatePaused(ParticleSystem)

    Call this update when the ParticleSystem is paused to only update the renreding information

    | Improve this Doc View Source

    Constructors


    ParticleEmitter()

    Default constructor. Initializes the pool and all collections contained in the ParticleEmitter

    public ParticleEmitter()
    | Improve this Doc View Source

    Fields


    Initializers

    List of ParticleInitializer within thie ParticleEmitter. Adjust Stride.Particles.ParticleEmitter.requiredFields automatically

    [DataMember(200)]
    [Display("Initializers", null)]
    public readonly FastTrackingCollection<ParticleInitializer> Initializers
    Field Value
    Type Description
    FastTrackingCollection<ParticleInitializer>

    Spawners

    List of ParticleSpawner to spawn particles in this ParticleEmitter

    [DataMember(55)]
    [Display("Spawners", null)]
    public readonly FastTrackingCollection<ParticleSpawner> Spawners
    Field Value
    Type Description
    FastTrackingCollection<ParticleSpawner>

    Updaters

    List of ParticleUpdater within thie ParticleEmitter. Adjust Stride.Particles.ParticleEmitter.requiredFields automatically

    [DataMember(300)]
    [Display("Updaters", null)]
    public readonly FastTrackingCollection<ParticleUpdater> Updaters
    Field Value
    Type Description
    FastTrackingCollection<ParticleUpdater>
    | Improve this Doc View Source

    Properties


    CanEmitParticles

    Indicates if the emitter is allowed to emit new particles or not.

    public bool CanEmitParticles { get; set; }
    Property Value
    Type Description
    System.Boolean

    DelayParticleDeath

    If positive, forces particles to stay one frame more when they are about ot expire

    public int DelayParticleDeath { get; set; }
    Property Value
    Type Description
    System.Int32

    DrawPriority

    DrawPriority is used to sort emitters at the same position based on a user defined key and determine the order in which they will be drawn

    [DataMember(33)]
    [Display("Draw Priority", null)]
    public byte DrawPriority { get; set; }
    Property Value
    Type Description
    System.Byte

    EmitterName

    The emitter name is used to uniquely identify this emitter within the same particle system

    [DataMember(1)]
    [Display("Emitter Name", null)]
    public string EmitterName { get; set; }
    Property Value
    Type Description
    System.String

    Enabled

    Gets or sets a value indicating whether this ParticleEmitter is enabled.

    [DataMember(-10)]
    public bool Enabled { get; set; }
    Property Value
    Type Description
    System.Boolean

    true if enabled; otherwise, false.


    LivingParticles

    Gets the current living particles from this emitter's pool

    public int LivingParticles { get; }
    Property Value
    Type Description
    System.Int32

    Material

    The ParticleMaterial may update the vertex buffer, and it also applies the Effect required for rendering

    [DataMember(50)]
    [Display("Material", null)]
    public ParticleMaterial Material { get; set; }
    Property Value
    Type Description
    ParticleMaterial

    MaxParticles

    Maximum number of particles this ParticleEmitter can have at any given time

    public int MaxParticles { get; }
    Property Value
    Type Description
    System.Int32

    MaxParticlesOverride

    Maximum particles (if positive) overrides the maximum particle count limitation

    [DataMember(5)]
    [Display("Max particles", null)]
    public int MaxParticlesOverride { get; set; }
    Property Value
    Type Description
    System.Int32

    ParticleLifetime

    [DataMember(7)]
    [Display("Lifespan", null)]
    public Vector2 ParticleLifetime { get; set; }
    Property Value
    Type Description
    Vector2

    RandomSeedMethod

    Random numbers in the ParticleSystem are generated based on a seed, which in turn can be generated using several methods.

    [DataMember(12)]
    [Display("Randomize", null)]
    public EmitterRandomSeedMethod RandomSeedMethod { get; set; }
    Property Value
    Type Description
    EmitterRandomSeedMethod

    ShapeBuilder

    The ShapeBuilder expands all living particles to vertex buffers for rendering

    [DataMember(40)]
    [Display("Shape", null)]
    public ShapeBuilder ShapeBuilder { get; set; }
    Property Value
    Type Description
    ShapeBuilder

    SimulationSpace

    Simulation space defines if the particles should be born in world space, or local to the emitter

    [DataMember(11)]
    [Display("Space", null)]
    public EmitterSimulationSpace SimulationSpace { get; set; }
    Property Value
    Type Description
    EmitterSimulationSpace

    SortingPolicy

    How and if particles are sorted, and how they are access during rendering

    [DataMember(35)]
    [Display("Sorting", null)]
    public EmitterSortingPolicy SortingPolicy { get; set; }
    Property Value
    Type Description
    EmitterSortingPolicy
    | Improve this Doc View Source

    Methods


    BuildVertexBuffer(IntPtr, ref Matrix, ref Matrix)

    Build the vertex buffer from particle data

    public void BuildVertexBuffer(IntPtr sharedBufferPtr, ref Matrix invViewMatrix, ref Matrix viewProj)
    Parameters
    Type Name Description
    System.IntPtr sharedBufferPtr

    The shared vertex buffer position where the particle data should be output

    Matrix invViewMatrix

    The current camera's inverse view matrix

    Matrix viewProj

    DelayedInitialization(ParticleSystem)

    Some parameters should be initialized when the emitter first runs, rather than in the constructor

    protected void DelayedInitialization(ParticleSystem parentSystem)
    Parameters
    Type Name Description
    ParticleSystem parentSystem

    Dispose()

    public void Dispose()

    EmitParticles(Int32)

    Requests the emitter to spawn several new particles. The particles are buffered and will be spawned during the Update(Single, ParticleSystem) step

    public void EmitParticles(int count)
    Parameters
    Type Name Description
    System.Int32 count

    InvalidateRelations()

    Invalidates relation of this emitter to any other emitters that might be referenced

    public void InvalidateRelations()

    PrepareForDraw(out Boolean, out Int32, out Int32)

    PrepareForDraw(out Boolean, out Int32, out Int32) prepares and updates the Material, ShapeBuilder and VertexBuilder if necessary

    public void PrepareForDraw(out bool vertexBufferHasChanged, out int vertexSize, out int vertexCount)
    Parameters
    Type Name Description
    System.Boolean vertexBufferHasChanged
    System.Int32 vertexSize
    System.Int32 vertexCount

    PreUpdate()

    Updates all data changes before the emitter is updated this frame. This method is not thread-safe!

    public void PreUpdate()

    ResetSimulation()

    Resets the simulation, deleting all particles and starting from Time = 0

    public void ResetSimulation()

    Update(Single, ParticleSystem)

    Updates the emitter and all its particles, and applies all updaters and spawners.

    public void Update(float dt, ParticleSystem parentSystem)
    Parameters
    Type Name Description
    System.Single dt

    Delta time, elapsed time since the last call, in seconds

    ParticleSystem parentSystem

    The parent ParticleSystem containing this emitter


    UpdatePaused(ParticleSystem)

    Call this update when the ParticleSystem is paused to only update the renreding information

    public void UpdatePaused(ParticleSystem parentSystem)
    Parameters
    Type Name Description
    ParticleSystem parentSystem

    The parent ParticleSystem containing this emitter


    Extension Methods

    ComponentBaseExtensions.DisposeBy<T>(T, ICollectorHolder)
    ComponentBaseExtensions.RemoveDisposeBy<T>(T, ICollectorHolder)
    • Improve this Doc
    • View Source
    In This Article

    Back to top

    Copyright © 2019-2021 .NET Foundation and Contributors
    Supported by the .NET Foundation