Table of Contents

Class M2ParticleWotlk

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

A particle emitter, WotLK-era layout (476 bytes): FBlock ramps, lifespan/emission variation, four spin fields.

public class M2ParticleWotlk : M2Particle, IDisposable
Inheritance
M2ParticleWotlk
Implements
Inherited Members

Constructors

M2ParticleWotlk()

public M2ParticleWotlk()

M2ParticleWotlk(M2ParticleWotlk)

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

public M2ParticleWotlk(M2ParticleWotlk other)

Parameters

other M2ParticleWotlk

Properties

AlphaTrack

Opacity ramp: 0 transparent .. 0x7FFF opaque.

public FBlockFixed16 AlphaTrack { get; set; }

Property Value

FBlockFixed16

BaseSpin

Initial quad rotation.

public float BaseSpin { get; set; }

Property Value

float

BaseSpinVariation

Random variation of base_spin.

public float BaseSpinVariation { get; set; }

Property Value

float

BlendingType

Blend mode; see wowdev's blending-type table.

public byte BlendingType { get; set; }

Property Value

byte

BoneId

The bone the emitter attaches to.

public ushort BoneId { get; set; }

Property Value

ushort

ColorTrack

Usually 3 keys: start/middle/end.

public FBlockC3Vector ColorTrack { get; set; }

Property Value

FBlockC3Vector

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 M2TrackFloatWotlkPlus EmissionAreaLength { get; set; }

Property Value

M2TrackFloatWotlkPlus

EmissionAreaWidth

Plane: emission area width; sphere: max radius.

public M2TrackFloatWotlkPlus EmissionAreaWidth { get; set; }

Property Value

M2TrackFloatWotlkPlus

EmissionRate

Particles emitted per second.

public M2TrackFloatWotlkPlus EmissionRate { get; set; }

Property Value

M2TrackFloatWotlkPlus

EmissionRateVariation

  • emission_rate_variation * random(-1, 1), rerolled per update.
public float EmissionRateVariation { get; set; }

Property Value

float

EmissionSpeed

Base emission velocity.

public M2TrackFloatWotlkPlus EmissionSpeed { get; set; }

Property Value

M2TrackFloatWotlkPlus

EmitterType

1 plane, 2 sphere, 3 spline, 4 bone.

public byte EmitterType { get; set; }

Property Value

byte

EnabledIn

Bool track: emitter active.

public M2TrackUInt8WotlkPlus EnabledIn { get; set; }

Property Value

M2TrackUInt8WotlkPlus

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 M2TrackFloatWotlkPlus Gravity { get; set; }

Property Value

M2TrackFloatWotlkPlus

HeadOrTail

0 head, 1 tail, 2 both.

public byte HeadOrTail { get; set; }

Property Value

byte

HeadUvAnim

Head flipbook cell ramp.

public FBlockUInt16 HeadUvAnim { get; set; }

Property Value

FBlockUInt16

HorizontalRange

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

public M2TrackFloatWotlkPlus HorizontalRange { get; set; }

Property Value

M2TrackFloatWotlkPlus

InheritVelocityScale

Scales velocity inherited from the parent particle.

public float InheritVelocityScale { get; set; }

Property Value

float

Lifespan

Seconds each particle stays alive.

public M2TrackFloatWotlkPlus Lifespan { get; set; }

Property Value

M2TrackFloatWotlkPlus

LifespanVariation

  • lifespan_variation * random(-1, 1).
public float LifespanVariation { get; set; }

Property Value

float

ParticleColorIndex

ParticleColor.dbc row selector (0/11/12/13).

public ushort ParticleColorIndex { get; set; }

Property Value

ushort

ParticleId

Always -1 in known files.

public uint ParticleId { get; set; }

Property Value

uint

ParticleType

Render type; in practice implied by flags and model.

public byte ParticleType { get; set; }

Property Value

byte

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

ScaleTrack

Particle size ramp.

public FBlockC2Vector ScaleTrack { get; set; }

Property Value

FBlockC2Vector

ScaleVary

Random per-particle scale variation.

public C2Vector ScaleVary { get; set; }

Property Value

C2Vector

SpeedVariation

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

public M2TrackFloatWotlkPlus SpeedVariation { get; set; }

Property Value

M2TrackFloatWotlkPlus

SpinSpeed

Quad rotation per second.

public float SpinSpeed { get; set; }

Property Value

float

SpinSpeedVariation

Random variation of spin_speed.

public float SpinSpeedVariation { get; set; }

Property Value

float

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

TailUvAnim

Tail flipbook cell ramp.

public FBlockUInt16 TailUvAnim { get; set; }

Property Value

FBlockUInt16

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 M2TrackFloatWotlkPlus VerticalRange { get; set; }

Property Value

M2TrackFloatWotlkPlus

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 M2TrackFloatWotlkPlus ZSource { get; set; }

Property Value

M2TrackFloatWotlkPlus

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 override void Dispose()

Operators

operator ==(M2ParticleWotlk?, M2ParticleWotlk?)

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

Parameters

l M2ParticleWotlk
r M2ParticleWotlk

Returns

bool

operator !=(M2ParticleWotlk?, M2ParticleWotlk?)

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

Parameters

l M2ParticleWotlk
r M2ParticleWotlk

Returns

bool