Particle Description: Difference between revisions
Added 64-bit info and conformed to format documentation guidelines.
(Created page with "=== ParticleDescription === {| class="wikitable" ! Offset !! Size !! Type !! Name !! Description !! More Information !! Comments |- | 0x0 || 0x4 || uint32_t || muHashedGDBURI || Resource ID || || |- | 0x4 || 0x4 || cLionEffectDefinition * || mpLionEffectDefinition || Effect pointer || cLionEffectDefinition format || |} === cLionEffectDefinition === {| class="wikitable" ! Offset !! Size !! Type !! Name !! Description !! More Information !! Comments |- | 0x0 || 0x4 || U...") |
(Added 64-bit info and conformed to format documentation guidelines.) |
||
Line 1:
Particle description resources are the primary assets used for Lion particle effects.
= Structures =
'''Note: Particle descriptions makes use of nonstandard type names''' such as U32. These are not linked to within each table; instead, see [[#typedefs | typedefs]] directly for details on these types.
<br/>
'''Note: All pointers are relative to the start of the lowest-level structure they reside in.'''
=== BrnParticle::ParticleDescription ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || uint32_t || muHashedGDBURI || Resource ID
|-
| 0x4 || 0x4 || [[#cLionEffectDefinition | cLionEffectDefinition]]* || mpLionEffectDefinition || Effect
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || uint32_t || muHashedGDBURI || Resource ID ||
|-
| 0x4 || 0x4 || || || padding ||
|-
| 0x8 || 0x8 || [[#cLionEffectDefinition | cLionEffectDefinition]]* || mpLionEffectDefinition || Effect ||
|}
=== cLionEffectDefinition ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || U32 || mVersion || || Always
|-
| 0x4 || 0x4 || [[#LionHash
|-
| 0x8 || 0x40 || [[#LionChar | LionChar]][32] || m_name
|-
| 0x48 || 0x4 || [[#cLionParticleEffect | cLionParticleEffect]]* || mpParticles ||
|-
| 0x4C || 0x4 || [[#cLionBindings | cLionBindings]]* || mpBindings ||
|-
| 0x50 || 0x4 || cLionEffectDefinition
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || U32 || mVersion || || Always 0x10003
|-
| 0x4 || 0x4 || [[#LionHash | LionHash]] || m_key || || Not actually a hash
|-
| 0x8 || 0x40 || [[#LionChar | LionChar]][32] || m_name || ||
|-
| 0x48 || 0x8 || [[#cLionParticleEffect | cLionParticleEffect]]* || mpParticles || ||
|-
| 0x50 || 0x8 || [[#cLionBindings | cLionBindings]]* || mpBindings || ||
|-
| 0x58 || 0x8 || cLionEffectDefinition* || mpNext || ||
|}
=== cLionParticleEffect ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || U32 || mHash || ||
|-
| 0x4 || 0x4 || [[#cParticleDescriptor | cParticleDescriptor]]* || mpDescriptors || ||
|-
| 0x8 || 0x4 || cLionParticleEffect* || mpNext || ||
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || U32 || mHash || ||
|-
|
|-
|
|-
|
|}
=== cParticleDescriptor ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || U32 || mID
|-
| 0x4 || 0x4 || FP32 || mPauseTime
|-
| 0x8 || 0x4 || FP32 || mPauseTimeVariance
|-
| 0xC || 0x4 || FP32 || mRepeatTime
|-
| 0x10 || 0x4 || FP32 || mRepeatTimeVariance
|-
| 0x14 || 0x4 || FP32 || mEmitterLifeBase
|-
| 0x18 || 0x4 || FP32 || mEmitterLifeVariance
|-
| 0x1C || 0x4 || U32 || mEmitterLifeInfiniteFlag
|-
| 0x20 || 0x4 || U32 || mFlags || ||
|-
| 0x24 || 0x4 || U32 || mLodGroup ||
|-
| 0x28 || 0x4 || U32 || mRenderGroup ||
|-
| 0x2C || 0x4 || U32 || mShape ||
|-
| 0x30 || 0x4 || U32 || mCollisionType ||
|-
| 0x34 || 0x4 || FP32 || mBlendLast ||
|-
| 0x38 || 0x4 || [[#LionChar
|-
| 0x3C || 0x4 || S32 || mBehaviourCount ||
|-
| 0x40 || 0x4 || [[#cParticleBehaviour
|-
| 0x44 || 0x4 || [[#cParticleBehaviour
|-
| 0x48 || 0x4 || [[#cParticleBehaviour
|-
| 0x4C || 0x4 || [[#cParticleMaterial
|-
| 0x50 || 0x4 || [[#cLionEffectDefinition
|-
| 0x54 || 0x4 || cParticleDescriptor* || mpNext ||
|-
| 0x58 || 0x4 || cParticleDescriptor* || mpParent ||
|-
| 0x5C || 0x4 || cParticleDescriptor* || mpChild ||
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || U32 || mID || ||
|-
| 0x4 || 0x4 || FP32 || mPauseTime || ||
|-
| 0x8 || 0x4 || FP32 || mPauseTimeVariance || ||
|-
| 0xC || 0x4 || FP32 || mRepeatTime || ||
|-
| 0x10 || 0x4 || FP32 || mRepeatTimeVariance || ||
|-
| 0x14 || 0x4 || FP32 || mEmitterLifeBase || ||
|-
| 0x18 || 0x4 || FP32 || mEmitterLifeVariance || ||
|-
| 0x1C || 0x4 || U32 || mEmitterLifeInfiniteFlag || ||
|-
| 0x20 || 0x4 || U32 || mFlags || || See [[#cParticleDescriptor::eParticleDescriptorFlags | eParticleDescriptorFlags]]
|-
| 0x24 || 0x4 || U32 || mLodGroup ||
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|}
=== cParticleBehaviour ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x10 || [[#cVector
|-
| 0x10 || 0x10 || [[#cVector
|-
| 0x20 || 0x10 || [[#cVector
|-
| 0x30 || 0x10 || [[#cVector
|-
| 0x40 || 0x10 || [[#cVector
|-
| 0x50 || 0x10 || [[#cVector
|-
| 0x60 || 0x10 || [[#cVector
|-
| 0x70 || 0x10 || [[#cVector
|-
| 0x80 || 0x10 || [[#cVector
|-
| 0x90 || 0x10 || [[#cVector
|-
| 0xA0 || 0x10 || [[#cVector
|-
| 0xB0 || 0x10 || [[#cVector
|-
| 0xC0 || 0x10 || [[#cVector
|-
| 0xD0 || 0x10 || [[#cVector
|-
| 0xE0 || 0x10 || [[#cVector
|-
| 0xF0 || 0x10 || [[#cVector
|-
| 0x100 || 0x10 || [[#cVector
|-
| 0x110 || 0x10 || [[#cVector
|-
| 0x120 || 0x10 || [[#cVector
|-
| 0x130 || 0x10 || [[#cVector
|-
| 0x140 || 0x10 || [[#cVector
|-
| 0x150 || 0x10 || [[#cVector
|-
| 0x160 || 0x10 || [[#cVector
|-
| 0x170 || 0x10 || [[#cVector
|-
| 0x180 || 0x10 || [[#cVector
|-
| 0x190 || 0x10 || [[#cVector
|-
| 0x1A0 || 0x10 || [[#cVector
|-
| 0x1B0 || 0x10 || [[#cVector
|-
| 0x1C0 || 0x40 || [[#cVector | cVector]][4] || mColourStepsRGBAv
|-
| 0x200 || 0x10 || FP32[4] || mDivisors
|-
| 0x210 || 0x4 || [[#cColour8
|-
| 0x214 || 0x4 || [[#cColour8
|-
| 0x218 || 0x4 || [[#cColour8
|-
| 0x21C || 0x4 || [[#cColour8
|-
| 0x220 || 0x10 || [[#cColour8 | cColour8]][4] || mColour
|-
| 0x230 || 0x10 || FP32[4] || mColourTime
|-
| 0x240 || 0x10 || [[#cColour8 | cColour8]][4] || mColourStepRGBA
|-
| 0x250 || 0x10 || FP32[4] || mRGBATime
|-
| 0x260 || 0x4 || U32 || mColourSteps
|-
| 0x264 || 0x4 || U32 || mRGBAVarianceMode
|-
| 0x268 || 0x4 || FP32 || mZero
|-
| 0x26C || 0x4 || FP32 || mAlphaFadeOutPlusInvOneMinusAlphaFadeOut
|-
| 0x270 || 0x4 || FP32 || mAlphaFadeInInv
|-
| 0x274 || 0x4 || FP32 || mNegInvOneMinusAlphaFadeOut
|-
| 0x278 || 0x4 || FP32 || mAlphaFadeIn
|-
| 0x27C || 0x4 || FP32 || mAlphaFadeOut
|-
| 0x280 || 0x4 || FP32 || mCellSize
|-
| 0x284 || 0x4 || FP32 || mCloneScaleInTime
|-
| 0x288 || 0x4 || FP32 || mDragFactor
|-
| 0x28C || 0x4 || FP32 || mMass
|-
| 0x290 || 0x4 || FP32 || mSizeBase
|-
| 0x294 || 0x4 || FP32 || mSizeVariance
|-
| 0x298 || 0x4 || FP32 || mSizeVelBase
|-
| 0x29C || 0x4 || FP32 || mSizeVelVariance
|-
| 0x2A0 || 0x4 || FP32 || mSizeAccBase
|-
| 0x2A4 || 0x4 || FP32 || mSizeAccVariance
|-
| 0x2A8 || 0x4 || FP32 || mEmissionRateBase
|-
| 0x2AC || 0x4 || FP32 || mEmissionRateVariance
|-
| 0x2B0 || 0x4 || FP32 || mLifeBase
|-
| 0x2B4 || 0x4 || FP32 || mLifeVariance
|-
| 0x2B8 || 0x4 || FP32 || mRadius
|-
| 0x2BC || 0x4 || FP32 || mScale
|-
| 0x2C0 || 0x4 || U32 || mEmissionCountClamp
|-
| 0x2C4 || 0x4 || U32 || mFlags
|-
| 0x2C8 || 0x4 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormX ||
|-
| 0x2CC || 0x4 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormY
|-
| 0x2D0 || 0x4 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormZ
|-
| 0x2D4 || 0x4 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormAlpha
|-
| 0x2D8 || 0x4 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormRGB
|-
| 0x2DC || 0x4 || cParticleBehaviour
|-
| 0x2E0 || 0x180 || [[#cParticleBehaviourBaseVarianceCompiled
|-
| 0x460 || 0x1 || bool || mEmissionRateHasBeenScaled
|-
| 0x461 || 0x3 || || || padding
|-
| 0x464 || U32 || U32 || mEmissionCountClampVariance
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#cVector | cVector]] || mAccBase || ||
|-
| 0x10 || 0x10 || [[#cVector | cVector]] || mAccVariance || ||
|-
| 0x20 || 0x10 || [[#cVector | cVector]] || mAxisBase || ||
|-
| 0x30 || 0x10 || [[#cVector | cVector]] || mOffsetRotXYZBase || ||
|-
| 0x40 || 0x10 || [[#cVector | cVector]] || mOffsetRotXYZVariance || ||
|-
| 0x50 || 0x10 || [[#cVector | cVector]] || mOffsetRotXYZVelBase || ||
|-
| 0x60 || 0x10 || [[#cVector | cVector]] || mOffsetRotXYZVelVariance || ||
|-
| 0x70 || 0x10 || [[#cVector | cVector]] || mOffsetRotXYZAccBase || ||
|-
| 0x80 || 0x10 || [[#cVector | cVector]] || mOffsetRotXYZAccVariance || ||
|-
| 0x90 || 0x10 || [[#cVector | cVector]] || mRotXYZBase || ||
|-
| 0xA0 || 0x10 || [[#cVector | cVector]] || mRotXYZVariance || ||
|-
| 0xB0 || 0x10 || [[#cVector | cVector]] || mRotXYZVelBase || ||
|-
| 0xC0 || 0x10 || [[#cVector | cVector]] || mRotXYZVelVariance || ||
|-
| 0xD0 || 0x10 || [[#cVector | cVector]] || mRotXYZAccBase || ||
|-
| 0xE0 || 0x10 || [[#cVector | cVector]] || mRotXYZAccVariance || ||
|-
| 0xF0 || 0x10 || [[#cVector | cVector]] || mPivotPoint || ||
|-
| 0x100 || 0x10 || [[#cVector | cVector]] || mPosBase || ||
|-
| 0x110 || 0x10 || [[#cVector | cVector]] || mPosVariance || ||
|-
| 0x120 || 0x10 || [[#cVector | cVector]] || mRingRadius || ||
|-
| 0x130 || 0x10 || [[#cVector | cVector]] || mSizeXYZBase || ||
|-
| 0x140 || 0x10 || [[#cVector | cVector]] || mSizeXYZVariance || ||
|-
| 0x150 || 0x10 || [[#cVector | cVector]] || mSizeXYZVelBase || ||
|-
| 0x160 || 0x10 || [[#cVector | cVector]] || mSizeXYZVelVariance || ||
|-
| 0x170 || 0x10 || [[#cVector | cVector]] || mSizeXYZAccBase || ||
|-
| 0x180 || 0x10 || [[#cVector | cVector]] || mSizeXYZAccVariance || ||
|-
| 0x190 || 0x10 || [[#cVector | cVector]] || mVelBase || ||
|-
| 0x1A0 || 0x10 || [[#cVector | cVector]] || mVelVariance || ||
|-
| 0x1B0 || 0x10 || [[#cVector | cVector]] || mRGBADiff || ||
|-
| 0x1C0 || 0x40 || [[#cVector | cVector]][4] || mColourStepsRGBAv || ||
|-
| 0x200 || 0x10 || FP32[4] || mDivisors || ||
|-
| 0x210 || 0x4 || [[#cColour8 | cColour8]] || mRGBA0 || ||
|-
| 0x214 || 0x4 || [[#cColour8 | cColour8]] || mRGBA1 || ||
|-
| 0x218 || 0x4 || [[#cColour8 | cColour8]] || mRGBABase || ||
|-
| 0x21C || 0x4 || [[#cColour8 | cColour8]] || mRGBAVar || ||
|-
| 0x220 || 0x10 || [[#cColour8 | cColour8]][4] || mColour || ||
|-
| 0x230 || 0x10 || FP32[4] || mColourTime || ||
|-
| 0x240 || 0x10 || [[#cColour8 | cColour8]][4] || mColourStepRGBA || ||
|-
| 0x250 || 0x10 || FP32[4] || mRGBATime || ||
|-
| 0x260 || 0x4 || U32 || mColourSteps || ||
|-
| 0x264 || 0x4 || U32 || mRGBAVarianceMode || ||
|-
| 0x268 || 0x4 || FP32 || mZero || ||
|-
| 0x26C || 0x4 || FP32 || mAlphaFadeOutPlusInvOneMinusAlphaFadeOut || ||
|-
| 0x270 || 0x4 || FP32 || mAlphaFadeInInv || ||
|-
| 0x274 || 0x4 || FP32 || mNegInvOneMinusAlphaFadeOut || ||
|-
| 0x278 || 0x4 || FP32 || mAlphaFadeIn || ||
|-
| 0x27C || 0x4 || FP32 || mAlphaFadeOut || ||
|-
| 0x280 || 0x4 || FP32 || mCellSize || ||
|-
| 0x284 || 0x4 || FP32 || mCloneScaleInTime || ||
|-
| 0x288 || 0x4 || FP32 || mDragFactor || ||
|-
| 0x28C || 0x4 || FP32 || mMass || ||
|-
| 0x290 || 0x4 || FP32 || mSizeBase || ||
|-
| 0x294 || 0x4 || FP32 || mSizeVariance || ||
|-
| 0x298 || 0x4 || FP32 || mSizeVelBase || ||
|-
| 0x29C || 0x4 || FP32 || mSizeVelVariance || ||
|-
| 0x2A0 || 0x4 || FP32 || mSizeAccBase || ||
|-
| 0x2A4 || 0x4 || FP32 || mSizeAccVariance || ||
|-
| 0x2A8 || 0x4 || FP32 || mEmissionRateBase || ||
|-
| 0x2AC || 0x4 || FP32 || mEmissionRateVariance || ||
|-
| 0x2B0 || 0x4 || FP32 || mLifeBase || ||
|-
| 0x2B4 || 0x4 || FP32 || mLifeVariance || ||
|-
| 0x2B8 || 0x4 || FP32 || mRadius || ||
|-
| 0x2BC || 0x4 || FP32 || mScale || ||
|-
| 0x2C0 || 0x4 || U32 || mEmissionCountClamp || ||
|-
| 0x2C4 || 0x4 || U32 || mFlags || ||
|-
| 0x2C8 || 0x8 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormX || ||
|-
| 0x2D0 || 0x8 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormY || ||
|-
| 0x2D8 || 0x8 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormZ || ||
|-
| 0x2E0 || 0x8 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormAlpha || ||
|-
| 0x2E8 || 0x8 || [[#cParticleWaveForm | cParticleWaveForm]]* || mpWaveFormRGB || ||
|-
| 0x2F0 || 0x8 || cParticleBehaviour* || mpNext || ||
|-
| 0x2F8 || 0x180 || [[#cParticleBehaviourBaseVarianceCompiled | cParticleBehaviourBaseVarianceCompiled]] || mBVCompiled || ||
|-
| 0x478 || 0x1 || bool || mEmissionRateHasBeenScaled || ||
|-
| 0x479 || 0x3 || || || padding ||
|-
| 0x47C || U32 || U32 || mEmissionCountClampVariance || ||
|-
| 0x480 || FP32 || FP32 || mEndOnAlphaFade || ||
|-
| 0x484 || FP32 || FP32 || mEndOnScale || ||
|-
| 0x488 || FP32 || FP32 || mEndOnStartAngle || ||
|-
| 0x48C || FP32 || FP32 || mEndOnEndAngle || ||
|-
| 0x490 || FP32 || FP32 || mTimeScale || ||
|-
| 0x494 || FP32 || FP32 || mTimeScaleVariance || ||
|-
| 0x498 || U32 || U32 || mRibbonParticleCount || ||
|-
| 0x49C || FP32 || FP32 || mDragFactorVel || ||
|-
| 0x4A0 || FP32 || FP32 || mDragFactorRot || ||
|-
| 0x4A4 || FP32 || FP32 || mDragFactorScale || ||
|-
| 0x4A8 || FP32 || FP32 || mEmitterStartWeight || ||
|-
| 0x4AC || FP32 || FP32 || mEmitterEndWeight || ||
|-
| 0x4B0 || FP32 || FP32 || mEmitterVelWeight || ||
|-
| 0x4B4 || 0xC || || || padding ||
|-
| 0x4C0 || 0x10 || [[#cVector | cVector]] || mAABBMin || ||
|-
| 0x4D0 || 0x10 || [[#cVector | cVector]] || mAABBMax || ||
|}
=== cVector ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || float[4] || q || ||
|}
=== cColour8 ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || U32 || m_RGBA || ||
|}
=== cParticleWaveform ===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || U32 || mID
|-
| 0x4 || 0x4 || U32 || mType
|-
| 0x8 || 0x4 || FP32 || mBase
|-
| 0xC || 0x4 || FP32 || mPhase
|-
| 0x10 || 0x4 || FP32 || mFreq
|-
| 0x14 || 0x4 || FP32 || mAmp
|-
| 0x18 || 0x4 || FP32 || mClampMin
|-
| 0x1C || 0x4 || FP32 || mClampMax
|-
| 0x20 || 0x4 || FP32 || mBaseVariance
|-
| 0x24 || 0x4 || FP32 || mPhaseVariance
|-
| 0x28 || 0x4 || FP32 || mFreqVariance
|-
| 0x2C || 0x4 || FP32 || mAmpVariance
|-
| 0x30 || 0x4 || FP32 || mClampMinVariance
|-
| 0x34 || 0x4 || FP32 || mClampMaxVariance
|}
=== cParticleBehaviourBaseVarianceCompiled ===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x178 || [[#sParticleBehaviourBaseVariancePack | sParticleBehaviourBaseVariancePack]][47] || aData ||
|-
| 0x178 || 0x4 || uint || size
|-
| 0x17C || 0x4 || uint || dummy
|}
=== cParticleBehaviourBaseVariancePack===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || float || base
|-
| 0x4 || 0x4 || float || variance
|}
=== cParticleMaterial ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || U32 || mID
|-
| 0x4 || 0x4 || U32 || mMaterialHandle
|-
| 0x8 || 0x4 || U32 || mMeshHandle
|-
| 0xC || 0x4 || U32 || mTextureHandle
|-
| 0x10 || 0x4 || char
|-
| 0x14 || 0x4 || U32 || mNormalMapHandle
|-
| 0x18 || 0x4 || char
|-
| 0x1C || 0x4 || char
|-
| 0x20 || 0x4 || char
|-
| 0x24 || 0x4 || U32 || mFlags
|-
| 0x28 || 0x4 || U32 || mFrameMask
|-
| 0x2C || 0x4 || S32 || mFrameBase
|-
| 0x30 || 0x4 || S32 || mFrameVariance
|-
| 0x34 || 0x4 || S32 || mFrameCount
|-
| 0x38 || 0x1 || U8 || mXFrames
|-
| 0x39 || 0x1 || U8 || mYFrames
|-
| 0x3A || 0x1 || U8 || mBlendMode
|-
| 0x3B || 0x1 || U8 || mAlphaTestMode
|-
| 0x3C || 0x1 || U8 || mAlphaTestValue
|-
| 0x3D || 0x1 || U8 || mZTestMode
|-
| 0x3E || 0x1 || U8 || mPad
|-
| 0x3F || 0x1 || U8 || mUCoordOption
|-
| 0x40 || 0x1 || U8 || mVCoordOption
|-
| 0x41 || 0x1 || U8 || mAnimTexOptions
|-
| 0x42 || 0x1 || U8 || mShader
|-
| 0x43 || 0x1 || U8 || mNormalOption
|-
| 0x44 || 0x4 || U32 || mLayer
|-
| 0x48 || 0x4 || FP32 || mRibbonStretch
|-
| 0x4C || 0x14 || U32[5] || mMeshHandles
|-
| 0x60 || 0x14 || char
|-
| 0x74 || 0x14 || U32[5] || mPercentages
|-
| 0x88 || 0x4 || U32 || mNumMeshes
|-
| 0x8C || 0x4 || FP32 || mNormalBlend
|-
| 0x90 || 0x4 || FP32 || mKeyLightAmount
|-
| 0x94 || 0x4 || FP32 || mIBLAmount
|-
| 0x98 || 0x4 || FP32 || mZBlendDistance
|-
| 0x9C || 0x4 || FP32 || mFPS
|-
| 0xA0 || 0x4 || FP32 || mFPSVariance
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || U32 || mID || ||
|-
| 0x4 || 0x4 || U32 || mMaterialHandle || ||
|-
| 0x8 || 0x4 || U32 || mMeshHandle || ||
|-
| 0xC || 0x4 || U32 || mTextureHandle || ||
|-
| 0x10 || 0x8 || char* || mpTextureName || ||
|-
| 0x18 || 0x4 || U32 || mNormalMapHandle || ||
|-
| 0x1C || 0x4 || || || padding ||
|-
| 0x20 || 0x8 || char* || mpNormalMapName || ||
|-
| 0x28 || 0x8 || char* || mpMeshName || ||
|-
| 0x30 || 0x8 || char* || mpLayerGroupName || ||
|-
| 0x38 || 0x4 || U32 || mFlags || ||
|-
| 0x3C || 0x4 || U32 || mFrameMask || ||
|-
| 0x40 || 0x4 || S32 || mFrameBase || ||
|-
| 0x44 || 0x4 || S32 || mFrameVariance || ||
|-
| 0x48 || 0x4 || S32 || mFrameCount || ||
|-
| 0x4C || 0x1 || U8 || mXFrames || ||
|-
| 0x4D || 0x1 || U8 || mYFrames || ||
|-
| 0x4E || 0x1 || U8 || mBlendMode || ||
|-
| 0x4F || 0x1 || U8 || mAlphaTestMode || ||
|-
| 0x50 || 0x1 || U8 || mAlphaTestValue || ||
|-
| 0x51 || 0x1 || U8 || mZTestMode || ||
|-
| 0x52 || 0x1 || U8 || mPad || ||
|-
| 0x53 || 0x1 || U8 || mUCoordOption || ||
|-
| 0x54 || 0x1 || U8 || mVCoordOption || ||
|-
| 0x55 || 0x1 || U8 || mAnimTexOptions || ||
|-
| 0x56 || 0x1 || U8 || mShader || ||
|-
| 0x57 || 0x1 || U8 || mNormalOption || ||
|-
| 0x58 || 0x4 || U32 || mLayer || ||
|-
| 0x5C || 0x4 || FP32 || mRibbonStretch || ||
|-
| 0x60 || 0x14 || U32[5] || mMeshHandles || ||
|-
| 0x74 || 0x4 || || || padding ||
|-
| 0x78 || 0x28 || char*[5] || mpMeshNames || ||
|-
| 0xA0 || 0x14 || U32[5] || mPercentages || ||
|-
| 0xB4 || 0x4 || U32 || mNumMeshes || ||
|-
| 0xB8 || 0x4 || FP32 || mNormalBlend || ||
|-
| 0xBC || 0x4 || FP32 || mKeyLightAmount || ||
|-
| 0xC0 || 0x4 || FP32 || mIBLAmount || ||
|-
| 0xC4 || 0x4 || FP32 || mZBlendDistance || ||
|-
| 0xC8 || 0x4 || FP32 || mFPS || ||
|-
| 0xCC || 0x4 || FP32 || mFPSVariance || ||
|}
=== cLionBindings ===
As this is not present in any available resources, 64-bit is based on the alignment behaviour of other structures. The same is true of all substructures.
==== 32-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || U32 || mLocatorCount || ||
|-
| 0x4 || 0x4 || U32 || mWorldIndex || ||
|-
| 0x8 || 0x4 || cParticleLocator** || mppLocators || ||
|-
| 0xC || 0x4 || cParticleLocator* || mpLocator || ||
|-
| 0x10 || 0x4 || cParticleScaler* || mpScaler || ||
|-
| 0x14 || 0x4 || cParticleTrigger* || mpTrigger || ||
|-
| 0x18 || 0x8 || || || padding ||
|-
| 0x20 || 0x40 || cParticleRandomSeed || mSeed || ||
|-
| 0x60 || 0x4 || cLionBindings* || mpNext || ||
|-
| 0x64 || 0x4 || cParticleEmitter* || m_p_emitter || ||
|-
| 0x68 || 0x8 || || || padding ||
|}
==== 64-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || U32 || mLocatorCount
|-
| 0x4 || 0x4 || U32 || mWorldIndex
|-
| 0x8 || 0x8 || cParticleLocator
|-
| 0x10 ||
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|}
=== cParticleLocator ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x40 || [[#cMatrix
|-
| 0x40 || 0x10 || [[#cVector
|-
| 0x50 || 0x20 || [[#cQuat | cQuat]][2] || mCacheQuat
|-
| 0x70 || 0x20 || [[#cVector | cVector]][2] || mCachePos
|-
| 0x90 || 0x8 || [[#cTime | cTime]][2] || mCacheTime
|-
| 0x98 || 0x4 || [[#cTime
|-
| 0x9C || 0x4 || U32 || mIndex
|-
| 0xA0 || 0x4 || U32 || mFlags
|-
| 0xA4 || 0x4 || [[#iLionPosEvaluator | iLionPosEvaluator]]* || mpPosEvaluator || ||
|-
| 0xA8 || 0x8 || || || padding
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x40 || [[#cMatrix | cMatrix]] || mMat || ||
|-
| 0x40 || 0x10 || [[#cVector | cVector]] || mVel || ||
|-
| 0x50 || 0x20 || [[#cQuat | cQuat]][2] || mCacheQuat || ||
|-
| 0x70 || 0x20 || [[#cVector | cVector]][2] || mCachePos || ||
|-
| 0x90 || 0x8 || [[#cTime | cTime]][2] || mCacheTime || ||
|-
| 0x98 || 0x4 || [[#cTime | cTime]] || mTime || ||
|-
| 0x9C || 0x4 || U32 || mIndex || ||
|-
| 0xA0 || 0x4 || U32 || mFlags || ||
|-
| 0xA4 || 0x4 || || padding || ||
|-
| 0xA8 || 0x8 || [[#iLionPosEvaluator | iLionPosEvaluator]]* || mpPosEvaluator || ||
|}
=== cMatrix ===
{| class="wikitable"
|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#cVector | cVector]] || xa || ||
|-
| 0x10 || 0x10 || [[#cVector | cVector]] || ya || ||
|-
| 0x20 || 0x10 || [[#cVector | cVector]] || za || ||
|-
| 0x30 || 0x10 || [[#cVector | cVector]] || wa || ||
|}
=== cQuat ===
{| class="wikitable"
|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[#U128 | U128]] || q || ||
|}
=== U128 ===
{| class="wikitable"
|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || uint32_t[4] || v || ||
|}
=== cTime ===
{| class="wikitable"
|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x4 || S32 || mTicks || ||
|}
=== iLionPosEvaluator ===
No structure in debug data; however, likely a 32-bit integer.
=== cParticleScaler ===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || FP32 || mScale
|}
=== cParticleTrigger ===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || [[#cTime
|-
| 0x4 || 0x4 || [[#cTime
|-
| 0x8 || 0x4 || [[#cTime
|-
| 0xC || 0x1 || bool || mbEnabled
|-
| 0xD || 0x3 || || || padding
|}
=== cParticleRandomSeed ===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x30 || [[#CgsNumeric::Random | Random]] || mCgsRandom || ||
|-
| 0x30 || 0x4 || U32 || mSeed || ||
|-
| 0x34 || 0xC || || || padding ||
|}
=== CgsNumeric::Random ===
{| class="wikitable"
|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x20 || [[#CgsNumeric::Random::anon_union_0 | anon_union_0]] || field_0 || ||
|-
|
|-
|
|-
|
|}
=== cParticleEmitter ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || U32 || mBucketsUsed
|-
| 0x4 || 0xC || || || padding
|-
| 0x10 || 0x40 || [[#cMatrix
|-
| 0x50 || 0x10 || [[#cVector
|-
| 0x60 || 0x10 || [[#cVector
|-
| 0x70 || 0xE0 || [[#sParticleNucleus
|-
| 0x150 || 0x40 || [[#cParticleRandomSeed
|-
| 0x190 || 0x4 || U32 || mParentIndex
|-
| 0x194 || 0x4 || cParticleEmitter
|-
| 0x198 || 0x4 || [[#cTime
|-
| 0x19C || 0x4 || [[#cTime
|-
| 0x1A0 || 0x4 || [[#cTime
|-
| 0x1A4 || 0x4 || S32 || mNextEmissionTime
|-
| 0x1A8 || 0x4 || FP32 || m_age
|-
| 0x1AC || 0x4 || FP32 || mDt
|-
| 0x1B0 || 0x40 || [[#cParticleRandomSeed
|-
| 0x1F0 || 0x4 || U32 || mFlags
|-
| 0x1F4 || 0x4 || U32 || mEmissionCount
|-
| 0x1F8 || 0x4 || [[#cParticleDescriptor | cParticleDescriptor]]* || mpDescriptor ||
|-
| 0x1FC || 0x4 || [[#cLionBindings | cLionBindings]]* || mpBindings ||
|-
| 0x200 || 0x4 || [[#cParticleBucket | cParticleBucket]]* || mpBucket ||
|-
| 0x204 || 0x4 || cParticleEmitter
|-
| 0x208 || 0x4 || U32 || mPhysicsHandle
|-
| 0x20C || 0x4 || [[#cParticleBehaviour | cParticleBehaviour]]* || mpCurrentBehaviour ||
|-
| 0x210 || 0x4 || [[#cParticleBehaviour | cParticleBehaviour]]* || mpTempBehaviour
|-
| 0x214 || 0x4 || FP32 || mBlendLast
|-
| 0x218 || 0x8 || || || padding
|-
| 0x220 || 0xB0 || [[#ParticleBuildData
|}
==== 64-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 ||
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
|
|-
| 0x1B0 || 0x4 || FP32 || m_age || ||
|-
| 0x1B4 || 0x4 || FP32 || mDt || ||
|-
| 0x1B8 || 0x8 || || || padding ||
|-
| 0x1C0 || 0x40 || [[#cParticleRandomSeed | cParticleRandomSeed]] || mEmitterSeed || ||
|-
| 0x200 || 0x4 || U32 || mFlags || ||
|-
| 0x1F4 || 0x4 || U32 || mEmissionCount || ||
|-
| 0x1F8 || 0x8 || [[#cParticleDescriptor | cParticleDescriptor]]* || mpDescriptor || ||
|-
| 0x200 || 0x8 || [[#cLionBindings | cLionBindings]]* || mpBindings || ||
|-
| 0x208 || 0x8 || [[#cParticleBucket | cParticleBucket]]* || mpBucket || ||
|-
| 0x210 || 0x8 || cParticleEmitter* || mpNext || ||
|-
| 0x218 || 0x4 || U32 || mPhysicsHandle || ||
|-
| 0x21C || 0x4 || || || padding ||
|-
| 0x220 || 0x8 || [[#cParticleBehaviour | cParticleBehaviour]]* || mpCurrentBehaviour || ||
|-
| 0x228 || 0x8 || [[#cParticleBehaviour | cParticleBehaviour]]* || mpTempBehaviour || ||
|-
| 0x230 || 0x4 || FP32 || mBlendLast || ||
|-
| 0x234 || 0xC || || || padding ||
|-
| 0x240 || 0xB0 || [[#ParticleBuildData | ParticleBuildData]] || mPrecalculatedParticleBuildData || ||
|}
=== sParticleNucleus ===
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mPos || ||
|-
| 0x10 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mVel || ||
|-
| 0x20 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mAcc || ||
|-
| 0x30 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mRot || ||
|-
| 0x40 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mRotVel || ||
|-
| 0x50 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mRotAcc || ||
|-
| 0x60 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mOffsetRot || ||
|-
| 0x70 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mOffsetRotVel || ||
|-
| 0x80 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mOffsetRotAcc || ||
|-
| 0x90 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mSize || ||
|-
| 0xA0 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mSizeVel || ||
|-
| 0xB0 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mSizeAcc || ||
|-
| 0xC0 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mLocatorVel || ||
|-
| 0xD0 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector4]] || mvLifeTimeAndFrameTimeAndFPSAndBirthTime || ||
|}
=== cParticleBucket ===
==== 32-bit ====
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x4 || cParticleBucket
|-
| 0x4 || 0x4 || [[#cParticleEmitter | cParticleEmitter]]* || mpEmitter ||
|-
| 0x8 || 0x4 || cParticleBucket
|-
| 0xC || 0x4 || [[#cTime
|-
| 0x10 || 0x40 || [[#cParticleRandomSeed
|-
| 0x50 || 0x4 || U32 || mnNextParticlePositionToFill
|-
| 0x54 || 0x4 || U32 || mActiveBits
|-
| 0x58 || 0x8 || || || padding
|-
| 0x60 || 0xE00 || [[#sParticleNucleus | sParticleNucleus]][16] || mParticles ||
|-
| 0xE60 || 0x4 || [[#cMatrix | cMatrix]]* || mpMatrices
|-
| 0xE64 || 0x4 || [[#cVector | cVector]]* || mpVectors
|-
| 0xE68 || 0x8 || || || padding
|}
==== 64-bit ====
{| class="wikitable"
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x8 || cParticleBucket* || mpManagerNext || ||
|-
| 0x8 || 0x8 || [[#cParticleEmitter | cParticleEmitter]]* || mpEmitter || ||
|-
| 0x10 || 0x8 || cParticleBucket* || mpEmitterNext || ||
|-
| 0x18 || 0x4 || [[#cTime | cTime]] || mLatestBirthTime || ||
|-
| 0x1C || 0x4 || || || padding ||
|-
| 0x20 || 0x40 || [[#cParticleRandomSeed | cParticleRandomSeed]] || mRandomSeed || ||
|-
| 0x60 || 0x4 || U32 || mnNextParticlePositionToFill || ||
|-
| 0x64 || 0x4 || U32 || mActiveBits || ||
|-
| 0x68 || 0x8 || || || padding ||
|-
| 0x70 || 0xE00 || [[#sParticleNucleus | sParticleNucleus]][16] || mParticles || ||
|-
| 0xE70 || 0x8 || [[#cMatrix | cMatrix]]* || mpMatrices || ||
|-
| 0xE78 || 0x8 || [[#cVector | cVector]]* || mpVectors || ||
|}
=== cParticleBuildData ===
{| class="wikitable"
! Offset !!
|-
| 0x0 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector4]] || mvDeltaTimeAndCurrentTime || ||
|-
| 0x10 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector2 | Vector2]] || mvAlphaFadeInAndFadeOut || ||
|-
| 0x20 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector3 | Vector3]] || mvScaleAndProportionalScaleYXAndZX || ||
|-
| 0x30 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector2 | Vector2]] || mvOrientStepAndDragFrameRateConstants || ||
|-
| 0x40 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector3 | Vector3]] || mvDragFactorsVelRotScale || ||
|-
| 0x50 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mvRGBADiff || ||
|-
| 0x60 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mvRGBA0 || ||
|-
| 0x70 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mvRGBAVar || ||
|-
| 0x80 || 0x10 || [[Common Data Types (Burnout Paradise)#Vector3Plus/Vector4 | Vector3Plus]] || mvRGBABase || ||
|-
| 0x90 || 0x10 || [[#rw::math::vpu::VecFloat | VecFloat]] || mvfFrameCount || ||
|-
| 0xA0 || 0x10 || [[#rw::math::vpu::VecFloat | VecFloat]] || mvfOneOverFrameCount || ||
|}
=== rw::math::vpu::VecFloat ===
{| class="wikitable"
|-
! Offset !! Length !! Type !! Name !! Description !! Comments
|-
| 0x0 || 0x10 || [[Common Data Types (Burnout Paradise)#VectorIntrinsic | VectorIntrinsic]] || mV || ||
|}
= Unions =
=== CgsNumeric::Random::anon_union_0 ===
{| class="wikitable"
|-
! Length !! Type !! Name !! Description !! Comments
|-
| 0x20 || float32_t[8] || mafFloatBuffer || ||
|-
| 0x20 || uint32_t[8] || mauIntegerBuffer || ||
|-
| 0x20 || [[Common Data Types (Burnout Paradise)#VectorIntrinsic | VectorIntrinsic]][2] || mvVector || ||
|}
= Typedefs =
=== LionHash ===
{| class="wikitable"
|-
! Name !! Type !! Length !! Comments
|-
| LionHash || uint32_t || 0x4 ||
|}
=== LionChar ===
{| class="wikitable"
|-
! Name !! Type !! Length !! Comments
|-
| LionChar || wchar_t || 0x2 ||
|}
=== U32 ===
{| class="wikitable"
|-
! Name !! Type !! Length !! Comments
|-
| U32 || uint32_t || 0x4 ||
|}
=== S32 ===
{| class="wikitable"
|-
! Name !! Type !! Length !! Comments
|-
| S32 || int32_t || 0x4 ||
|}
=== FP32 ===
{| class="wikitable"
|-
! Name !! Type !! Length !! Comments
|-
| FP32 || float_t || 0x4 ||
|}
=== U8 ===
{| class="wikitable"
|-
! Name !! Type !! Length !! Comments
|-
| U8 || uint8_t || 0x1 ||
|}
= Enumerations =
=== cParticleDescriptor::eParticleDescriptorFlags ===
{| class="wikitable"
|-
! Name !! Value !! Comments
|-
| eDO_LIGHTING || 0x1 ||
|-
| eDO_INTENSITY || 0x2 ||
|-
| eDO_REPEAT || 0x4 ||
|-
| eDO_CELLRENDER || 0x8 ||
|-
| eDO_DYNAMICPLACE || 0x10 ||
|-
| eDO_USE_MATRICES || 0x20 ||
|-
| eDO_FACECAMERA || 0x40 ||
|-
| eDO_WORLD_ACC || 0x80 ||
|-
| eDO_IGNOREROT || 0x100 ||
|-
| eDO_PHYSICS || 0x200 ||
|-
| eDO_RGBA_INTERPOLANT || 0x400 ||
|-
| eDO_RGBA_VARIANCE || 0x800 ||
|-
| eDO_LOCATOR_INSTANCING || 0x1000 ||
|-
| eDO_TRIGGER_INSTANCING || 0x2000 ||
|-
| eDO_PREFORM || 0x4000 ||
|-
| eDO_DISABLED || 0x8000 ||
|-
| eDO_RIBBON || 0x10000 ||
|}
|