Table of Contents

Class M2Particle

Namespace
WoWLib.Formats.M2.Root.Record
Assembly
WoWLib.dll

One particle emitter. Abstract over the client version; construct a concrete version with M2Particle.ForVersion / for_version.

public class M2Particle : IDisposable
Inheritance
M2Particle
Implements
Derived
Inherited Members

Constructors

M2Particle()

public M2Particle()

M2Particle(M2Particle)

Copy-construct: a deep copy of other (the C++ copy constructor).

public M2Particle(M2Particle other)

Parameters

other M2Particle

Properties

BoneId

The bone the emitter attaches to.

public ushort BoneId { get; set; }

Property Value

ushort

Columns

Flipbook tiling.

public ushort Columns { get; set; }

Property Value

ushort

Drag

Speed is multiplied by exp(-drag * t).

public float Drag { get; set; }

Property Value

float

EmissionAreaLength

Plane: emission area length; sphere: min radius.

public M2TrackFloat EmissionAreaLength { get; set; }

Property Value

M2TrackFloat

EmissionAreaWidth

Plane: emission area width; sphere: max radius.

public M2TrackFloat EmissionAreaWidth { get; set; }

Property Value

M2TrackFloat

EmissionRate

Particles emitted per second.

public M2TrackFloat EmissionRate { get; set; }

Property Value

M2TrackFloat

EmissionSpeed

Base emission velocity.

public M2TrackFloat EmissionSpeed { get; set; }

Property Value

M2TrackFloat

EnabledIn

Bool track: emitter active.

public M2TrackUInt8 EnabledIn { get; set; }

Property Value

M2TrackUInt8

Flags

See wowdev's particle flag table.

public uint Flags { get; set; }

Property Value

uint

FollowScale1

Fraction of emitter motion applied at follow_speed1.

public float FollowScale1 { get; set; }

Property Value

float

FollowScale2

Fraction of emitter motion applied at follow_speed2.

public float FollowScale2 { get; set; }

Property Value

float

FollowSpeed1

Emitter-follow ramp: at this emitter speed particles follow by follow_scale1.

public float FollowSpeed1 { get; set; }

Property Value

float

FollowSpeed2

Second point of the emitter-follow ramp.

public float FollowSpeed2 { get; set; }

Property Value

float

GeometryModelFilename

Spawns model particles when set.

public string GeometryModelFilename { get; set; }

Property Value

string

Gravity

Gravity; a compressed direction vector under the CompressedGravity flag.

public M2TrackFloat Gravity { get; set; }

Property Value

M2TrackFloat

HorizontalRange

Max azimuth angle (0..2*pi): of the initial velocity for plane, of the position for sphere emitters.

public M2TrackFloat HorizontalRange { get; set; }

Property Value

M2TrackFloat

InheritVelocityScale

Scales velocity inherited from the parent particle.

public float InheritVelocityScale { get; set; }

Property Value

float

Lifespan

Seconds each particle stays alive.

public M2TrackFloat Lifespan { get; set; }

Property Value

M2TrackFloat

ParticleId

Always -1 in known files.

public uint ParticleId { get; set; }

Property Value

uint

Position

Relative to the bone.

public C3Vector Position { get; set; }

Property Value

C3Vector

PriorityPlane

Render priority plane.

public short PriorityPlane { get; set; }

Property Value

short

RecursionModelFilename

Child emitters come from this model.

public string RecursionModelFilename { get; set; }

Property Value

string

Rows

Flipbook tiling.

public ushort Rows { get; set; }

Property Value

ushort

SpeedVariation

Random emission-speed variation (0..1).

public M2TrackFloat SpeedVariation { get; set; }

Property Value

M2TrackFloat

SplinePoints

Spline emitter path.

public Vector<C3Vector> SplinePoints { get; set; }

Property Value

Vector<C3Vector>

TailLength

Multiplier to the computed tail length.

public float TailLength { get; set; }

Property Value

float

TextureId

Into the model's textures.

public ushort TextureId { get; set; }

Property Value

ushort

Tumble

Angular velocity bounds (model particles).

public M2Box Tumble { get; set; }

Property Value

M2Box

TwinklePercent

Fraction of the time visible (1.0 = always).

public float TwinklePercent { get; set; }

Property Value

float

TwinkleScale

Min/max random scale variation.

public CRange TwinkleScale { get; set; }

Property Value

CRange

TwinkleSpeed

Blinking speed.

public float TwinkleSpeed { get; set; }

Property Value

float

VerticalRange

Max polar angle (0..pi): of the initial velocity for plane, of the position for sphere emitters.

public M2TrackFloat VerticalRange { get; set; }

Property Value

M2TrackFloat

WindTime

Undocumented; paired with the static wind vector.

public float WindTime { get; set; }

Property Value

float

WindVector

Static wind, unless DynamicWind flag.

public C3Vector WindVector { get; set; }

Property Value

C3Vector

ZSource

If > 0, initial velocity points from (0, 0, z_source) to the spawn point.

public M2TrackFloat ZSource { get; set; }

Property Value

M2TrackFloat

Methods

Dispose()

Release the native object now. Optional: the finalizer releases it on collection anyway - dispose (or using) when you want native memory back promptly.

public virtual void Dispose()

Equals(object?)

Determines whether the specified object is equal to the current object.

public override bool Equals(object? obj)

Parameters

obj object

The object to compare with the current object.

Returns

bool

true if the specified object is equal to the current object; otherwise, false.

ForVersion(ClientVersion)

A fresh M2Particle for an exact client version — the only axis that can name a Classic client, whose files follow the engine its build was cut on rather than its 1.15 / 4.4 version number.

public static M2Particle ForVersion(ClientVersion version)

Parameters

version ClientVersion

Returns

M2Particle

ForVersion(Expansion)

A fresh M2Particle for the given era, as the family base — the dynamic twin of the typed Era factories.

public static M2Particle ForVersion(Expansion era)

Parameters

era Expansion

Returns

M2Particle

GetHashCode()

Reference-identity hash (the C++ type has no hash to mirror).

public override int GetHashCode()

Returns

int

Operators

operator ==(M2Particle?, M2Particle?)

public static bool operator ==(M2Particle? l, M2Particle? r)

Parameters

l M2Particle
r M2Particle

Returns

bool

operator !=(M2Particle?, M2Particle?)

public static bool operator !=(M2Particle? l, M2Particle? r)

Parameters

l M2Particle
r M2Particle

Returns

bool