*`Ju |):8+u)'Fv,#`Od "TO&F!Ђa2ذ O~ϬJ6 ?tπDCs %hB 1AF.&zBvPX橹2-=4Noneg!7D7A17C9492535157B5DB5B1FDD82159_;mO FF3p<*\_]Lgcg++UE4+Release-4.25A++UE4+Release-4.254t42/Engine/EngineSounds/Submixes/MasterSubmixDefaultZ7`?8/Game/NiagaraAudioVisualization/Effects/NS_Rings+SphereV4H-/Niagara/DefaultAssets/DefaultSpriteMaterialR-,/Niagara/Enums/ENiagara_EmitterStateOptions -/Niagara/Enums/ENiagara_InfiniteLoopDurationE'/Niagara/Enums/ENiagaraCoordinateSpace(/Niagara/Enums/ENiagaraCurlNoiseQualitya,/Niagara/Enums/ENiagaraEmitterLifeCycleModeo6/Niagara/Enums/ENiagaraEmitterScalabilityMode_Limitedy)/Niagara/Enums/ENiagaraGridPlacementTypeX$/Niagara/Enums/ENiagaraInactiveMode&/Niagara/Enums/ENiagaraRandomnessModeen*/Niagara/Enums/ENiagaraSystemInactiveMode/b-/Niagara/Enums/ENiagaraTorusDistributionModeh!/Niagara/Enums/ENiagaraTorusModec0{1/Niagara/Functions/Localspace/SimulationPositionx&/Niagara/Modules/Emitter/EmitterStateka#/Niagara/Modules/Emitter/SpawnRatelb0/Niagara/Modules/Solvers/SolveForcesAndVelocitydet9/Niagara/Modules/Spawn/Initialization/InitializeParticle"o5/Niagara/Modules/Spawn/Location/SpawnParticlesInGridq5AQ./Niagara/Modules/Spawn/Location/TorusLocationv^֥0/Niagara/Modules/Spawn/Location/V2/GridLocation{$/Niagara/Modules/System/SystemStateH!./Niagara/Modules/Update/Forces/CurlNoiseForce!L$/Niagara/Modules/Update/Forces/Drag|U`4/Niagara/Modules/Update/Forces/PointAttractionForce)U+/Niagara/Modules/Update/Forces/VortexForceUi;//Niagara/Modules/Update/Lifetime/ParticleStateɾ&*/Niagara/VectorFields/Assets/TilingCurl32Ȅr/Script/CoreUObjectI->/Script/Engine@I/Script/NiagaraGZ`/Script/NiagaraEditorpo!13AC77C34727F845C44459BE0C190F5Aҳ!4C54C0CD475F2745CD6CB7A441CB2485!g>AmD!A297671C487D13B3EA20AAB3076CA4A9'xAcceleration LimitnBLAdd(AdditionalDefinesAdvancedPinDisplay~AgecAgeAdvancement?Align To Grid CellAlign Torus With AxisA/9Alive- AlphaCurve#d AmplitudeArrayPropertyIiAssetImportDataQTAssignmentDefaultValuesmhAssignmentTargets#Attraction Radius 'AttractionStrengthF7zPAttractorPosition:<3 AttributesAudioSpectrumqImBKOBaseIdKBaseScriptCompileHash) bCanAutoBind bCompleteOnInactiveuBegin DefaultsDQbExperimentalu bExposed,nbExposeToLibrary3 bFixedBounds RjobHidden~I bInterpolatedSpawn厵bInterpolatedSpawningp bIsEnabledgeUbIsPlaceholderp bIsValidA bLocalSpaceͳ BlueCurveXW4bMemberFunction BoolPropertyBox^7dbPNGCompressed75 bRequired#@/bRequiresContext?"bRequiresPersistentIDsd bSupportsCPU { bSupportsGPU@bTileXbTileY5­bTileZCbUseLegacyNameStringbUserSetEnabledStateHbWriteFunctionSZ ByteCodew BytePropertyN-CachedChangeIdeoCachedDefaultDataInterfaces`_#/ CachedNamespacelessVariableNamevCachedScriptVM':CachedScriptVMId&CachedUsageInfo*ث!CalledVMExternalFunctionsbޠCallSortPriorityԥ Category~ ChangeId7T ChannelIndex[^Clamp VelocityV/"ClasstwxClassStructOrEnum3gColoreg ColorCurves?X CompileHashdCompileHashFromGraphvjCompilerVersionID]CompressionNoAlpha'Constants.RIng.EmitterState.Loop Delayǰ*Constants.RIng.EmitterState.Loop Durationtxj!(Constants.RIng.EmitterState.MaxDistancek:M(Constants.RIng.EmitterState.MinDistanceKieY(Constants.RIng.InitializeParticle.Colors+Constants.RIng.InitializeParticle.LifetimeYK'Constants.RIng.InitializeParticle.Mass]-Constants.RIng.InitializeParticle.Mesh Scalex:2Constants.RIng.InitializeParticle.Sprite RotationO.Constants.RIng.InitializeParticle.Sprite Size.ݒ74Constants.RIng.ScratchModule_01.NormalaizedPositionR'Constants.RIng.ScratchModule_01.Radius9)9Constants.RIng.SolveForcesAndVelocity.Acceleration LimitY2Constants.RIng.SolveForcesAndVelocity.Speed Limit!s+Constants.RIng.SpawnRate.Spawn Probability`$Constants.RIng.SpawnRate.SpawnGroup!1#Constants.RIng.SpawnRate.SpawnRateųn+Constants.RIng.TorusLocation.Handle Radius&r(.Constants.RIng.TorusLocation.Knot Helix LoopsX-Constants.RIng.TorusLocation.Knot Ring Loops|*Constants.RIng.TorusLocation.Large RadiusfC/Constants.RIng.TorusLocation.Non Uniform Scale~@Constants.RIng.TorusLocation.Normalized Angle Around Torus AxistB$Constants.RIng.TorusLocation.Offseti.-Constants.RIng.TorusLocation.Radius Positionk)Constants.RIng.TorusLocation.Random Seed.Constants.RIng.TorusLocation.Spawn Group MaskV.Constants.RIng.TorusLocation.Surface Position0jc(Constants.RIng.TorusLocation.Torus AxisW4Constants.RIng.TorusLocation.Torus Knot Tube Radius`,Constants.RIng.TorusLocation.U Distribution8(Constants.RIng.TorusLocation.U PositionW!,Constants.RIng.TorusLocation.V DistributionŠ(Constants.RIng.TorusLocation.V Position<;Constants.Sphere.CurlNoiseForce.Curl Noise Cone Mask AngleCConstants.Sphere.CurlNoiseForce.Curl Noise Cone Mask Falloff AngleLj0Constants.Sphere.CurlNoiseForce.Noise Frequency */Constants.Sphere.CurlNoiseForce.Noise Strength`0Constants.Sphere.CurlNoiseForce.Pan Noise FieldE,Constants.Sphere.CurlNoiseForce.Random Seed9>Constants.Sphere.CurlNoiseForce001.Curl Noise Cone Mask Angle;FConstants.Sphere.CurlNoiseForce001.Curl Noise Cone Mask Falloff Angle 'p3Constants.Sphere.CurlNoiseForce001.Noise Frequency#2Constants.Sphere.CurlNoiseForce001.Noise Strength>3Constants.Sphere.CurlNoiseForce001.Pan Noise Fieldօ/Constants.Sphere.CurlNoiseForce001.Random SeedJConstants.Sphere.Drag.Dragi&Constants.Sphere.Drag.Rotational Drag)Constants.Sphere.EmitterState.Loop Delay^,Constants.Sphere.EmitterState.Loop Duratione(*Constants.Sphere.EmitterState.MaxDistance푌*Constants.Sphere.EmitterState.MinDistance6%Constants.Sphere.GridLocation.OffsetDɹ>Constants.Sphere.GridLocation.Randomize Placement Within Cell -Constants.Sphere.GridLocation.XYZ Dimensions*Constants.Sphere.InitializeParticle.Color^\-Constants.Sphere.InitializeParticle.LifetimeŤ)Constants.Sphere.InitializeParticle.Mass[$z/Constants.Sphere.InitializeParticle.Mesh Scale S4Constants.Sphere.InitializeParticle.Sprite Rotation<0Constants.Sphere.InitializeParticle.Sprite Size4\o8Constants.Sphere.PointAttractionForce.Attraction RadiusӶ9Constants.Sphere.PointAttractionForce.AttractionStrength4ހ7Constants.Sphere.PointAttractionForce.Falloff Exponent2Constants.Sphere.PointAttractionForce.Kill Radius6Constants.Sphere.ScratchModule_02.NormalaizedPosition% )Constants.Sphere.ScratchModule_02.Radius~t9;Constants.Sphere.SolveForcesAndVelocity.Acceleration Limit~4Constants.Sphere.SolveForcesAndVelocity.Speed LimitW1Constants.Sphere.SpawnParticlesInGrid.Spawn Timel.Constants.Sphere.SpawnParticlesInGrid.X Count .Constants.Sphere.SpawnParticlesInGrid.Y Countr.Constants.Sphere.SpawnParticlesInGrid.Z Count*1u-Constants.Sphere.SpawnRate.Spawn ProbabilityC/&Constants.Sphere.SpawnRate.SpawnGroupa:!%Constants.Sphere.SpawnRate.SpawnRate 0-Constants.Sphere.TorusLocation.Handle Radius2g0Constants.Sphere.TorusLocation.Knot Helix LoopsD8G/Constants.Sphere.TorusLocation.Knot Ring Loopsr,Constants.Sphere.TorusLocation.Large RadiusJ1Constants.Sphere.TorusLocation.Non Uniform Scalef8WBConstants.Sphere.TorusLocation.Normalized Angle Around Torus AxisD<&Constants.Sphere.TorusLocation.OffsetMWb/Constants.Sphere.TorusLocation.Radius Position˃+Constants.Sphere.TorusLocation.Random Seed&0Constants.Sphere.TorusLocation.Spawn Group MaskQH0Constants.Sphere.TorusLocation.Surface Position;*Constants.Sphere.TorusLocation.Torus Axisb6Constants.Sphere.TorusLocation.Torus Knot Tube RadiusˏL.Constants.Sphere.TorusLocation.U Distribution/*Constants.Sphere.TorusLocation.U PositionE.Constants.Sphere.TorusLocation.V DistributionV*Constants.Sphere.TorusLocation.V PositionPc8Constants.Sphere.VortexForce.Influence Falloff Exponent͌j6Constants.Sphere.VortexForce.Influence Falloff Radiustx0Constants.Sphere.VortexForce.Origin Pull Amount2~)Constants.Sphere.VortexForce.Vortex Axis~:l1Constants.Sphere.VortexForce.Vortex Force Amountc!Constants.SystemState.Loop DelayD)t$Constants.SystemState.Loop DurationP:Constants.Torus.CurlNoiseForce.Curl Noise Cone Mask AngledBConstants.Torus.CurlNoiseForce.Curl Noise Cone Mask Falloff Angle2%/Constants.Torus.CurlNoiseForce.Noise Frequencyche.Constants.Torus.CurlNoiseForce.Noise StrengthoTR/Constants.Torus.CurlNoiseForce.Pan Noise Fieldw +Constants.Torus.CurlNoiseForce.Random SeedR(Constants.Torus.EmitterState.Loop Delay+Constants.Torus.EmitterState.Loop Duration]h)Constants.Torus.EmitterState.MaxDistance|h)Constants.Torus.EmitterState.MinDistance\9|)Constants.Torus.InitializeParticle.Colorψ,Constants.Torus.InitializeParticle.Lifetime(Constants.Torus.InitializeParticle.Massjw.Constants.Torus.InitializeParticle.Mesh Scale3Constants.Torus.InitializeParticle.Sprite Rotation/Constants.Torus.InitializeParticle.Sprite Size 2Constants.Torus.ScratchModule.NormalaizedPosition񅠸%Constants.Torus.ScratchModule.Radiusŭ::Constants.Torus.SolveForcesAndVelocity.Acceleration Limit/3+F3Constants.Torus.SolveForcesAndVelocity.Speed Limit,Constants.Torus.SpawnRate.Spawn ProbabilityL%Constants.Torus.SpawnRate.SpawnGroupk9$Constants.Torus.SpawnRate.SpawnRate#?Nr,Constants.Torus.TorusLocation.Handle Radius}/Constants.Torus.TorusLocation.Knot Helix Loops+.Constants.Torus.TorusLocation.Knot Ring Loopsh+Constants.Torus.TorusLocation.Large RadiusFd0Constants.Torus.TorusLocation.Non Uniform Scale\GAConstants.Torus.TorusLocation.Normalized Angle Around Torus Axis%Constants.Torus.TorusLocation.Offset3.Constants.Torus.TorusLocation.Radius Position9p *Constants.Torus.TorusLocation.Random Seedr/Constants.Torus.TorusLocation.Spawn Group Mask> A/Constants.Torus.TorusLocation.Surface Positiont)Constants.Torus.TorusLocation.Torus Axis5Constants.Torus.TorusLocation.Torus Knot Tube Radius)-Constants.Torus.TorusLocation.U Distributionfи)Constants.Torus.TorusLocation.U Position@J-Constants.Torus.TorusLocation.V Distribution(!)Constants.Torus.TorusLocation.V Positionl;Coordinate SpaceseCurl Noise Cone Mask AngleCurl Noise Cone Mask Axis#Curl Noise Cone Mask Falloff AngletoTCurlNoiseForce60CurlNoiseForce001_EmitterX CurlNoiseForce001_Emitter_Func_RCurlNoiseForce_Emitter-CurlNoiseForce_Emitter_Func_?CurrentLoopDuration@-Custom\~32 DataHash}FeDataInstance.Alive͌DataInterface\DataInterfaceInfoDataSetCompiledDataDataSetComponentOffsetoDataSetToParameters DebugNameL"Default__NiagaraEmitterEditorDatai!Default__NiagaraSystemEditorDataCDefaultSpriteMaterialۉH DeltaTime2 Description* DestgKDeterministicOffsetpx_Dimensions Definition DIParamInfoy+#} DirectionEr. DisplayNamezBDistanceFraction9Drag܁ Drag_EmitterxDrag_Emitter_Func_aLDynamicAddPin`eEEdGrapho]$EdGraphSchema_NiagaraSystemOverview EditorDataHEmitterAd Emitter.Agee)Emitter.Colorep@Emitter.CurrentLoopDurationEmitter.ExecutionStateRcEmitter.ExecutionStateSource3$#dEmitter.LocalSpaceEmitter.LoopCount d Emitter.LoopedAgeb )Emitter.Module.Grid Location Spawn CountI%Emitter.Module.Grid Location X Countm%Emitter.Module.Grid Location Y CountN%Emitter.Module.Grid Location Z CountPIEmitter.Module.SpawnBurstzGEmitter.Module.SpawnOutputInfo@Emitter.Module.SpawnRemainderEmitter.New Audio SpectrumQEmitter.NormalizedLoopAge$D~0Emitter.RandomSeedB%Emitter.Scalability.DistanceFractione3/3Emitter.SpawnParticlesInGrid.Grid Location X Count>3Emitter.SpawnParticlesInGrid.Grid Location Y Count#3Emitter.SpawnParticlesInGrid.Grid Location Z CountEmitter.VectorField32%uAEmitterAgeVarNo?EmitterHandleGuidEmitterHandleId EmitterHandlesEmitterInterpSpawnStartDTVarN,TEmitterRandomSeedVar09EmitterSpawnGroupVarUpEmitterSpawnIntervalVarl EmitterSpawnScript5EmitterSpawnScriptPropsG EmitterStateZTgEmitterState_RIng)ݦEmitterState_RIng_Func_tݲEmitterState_SphereEmitterState_Sphere_Func_7EmitterState_TorusEmitterState_Torus_Func_$ EmitterTotalSpawnedParticlesVarHhEmitterUpdateScript]'[EmitterUpdateScriptProps⯘Enable Distance CullingЕnEnable Torus Knot RadiusLEnable Visibility Culling EnableScaleRpEngineDEngine.DeltaTimer?Engine.Emitter.NumParticlesN{{Engine.Emitter.SpawnCountScale7nX%Engine.Emitter.TotalSpawnedParticlesǪZEngine.ExecutionCountxIEngine.Owner.ExecutionState!Engine.Owner.LODDistanceFractionEngine.Owner.PositionU Engine.Owner.SystemLocalToWorldWg'Engine.Owner.SystemLocalToWorldNoScaleۍ\u Engine.Owner.SystemWorldToLocal]|z'Engine.Owner.SystemWorldToLocalNoScale Engine.RIng.NumParticlesbEngine.RIng.SpawnCountScale{"Engine.RIng.TotalSpawnedParticlescEngine.Sphere.NumParticlesR?Engine.Sphere.SpawnCountScalek\$Engine.Sphere.TotalSpawnedParticlesai Engine.TimenEngine.Torus.NumParticles MEngine.Torus.SpawnCountScale0/n#Engine.Torus.TotalSpawnedParticles{SEngineEmitter  EngineOwner(NNENiagara_EmitterStateOptionsWS8ENiagara_InfiniteLoopDuration<-ENiagaraCoordinateSpaceENiagaraCurlNoiseQualityDENiagaraDataSetTypea\"ENiagaraDataSetType::ParticleData7ENiagaraEmitterLifeCycleModeƉ'ENiagaraEmitterScalabilityMode_LimitedxqENiagaraExecutionStateLsENiagaraExecutionStateSource$ ENiagaraGridPlacementTypeqENiagaraInactiveModeJ ENiagaraInputNodeUsageh+ENiagaraInputNodeUsage::TranslatorConstantsu+ENiagaraRandomnessMode hlENiagaraScriptCompileStatus;I*ENiagaraScriptCompileStatus::NCS_UpToDate0<ENiagaraScriptParameterUsage'n$ENiagaraScriptParameterUsage::Input$X$ENiagaraScriptParameterUsage::Local):%ENiagaraScriptParameterUsage::OutputByENiagaraScriptUsage m(ENiagaraScriptUsage::EmitterSpawnScriptVz)ENiagaraScriptUsage::EmitterUpdateScriptϵXENiagaraScriptUsage::Module:vj.ENiagaraScriptUsage::ParticleGPUComputeScript_Z)ENiagaraScriptUsage::ParticleSpawnScript5ENiagaraScriptUsage::ParticleSpawnScriptInterpolated*ENiagaraScriptUsage::ParticleUpdateScript l'ENiagaraScriptUsage::SystemSpawnScriptX6(ENiagaraScriptUsage::SystemUpdateScriptqENiagaraSimTargetAENiagaraSimTarget::CPUSim&u!ENiagaraSimTarget::GPUComputeSimV.ENiagaraSystemInactiveModeyl~CENiagaraTorusDistributionModeJ4+ENiagaraTorusMode}ENodeAdvancedPinse !ENodeAdvancedPins::Hidden״gEnumVÅo EnumPropertyQם@ ErrorTypet0ETextureSourceFormatw- Exec IndextXExecutionStatePx?ExecutionStateSourceצExperimentalMessageU`ExposedParametersu ExposureOptionsvH}Falloffb,>Falloff Exponent^Field FirstFrame%ޖFixed Random Seed FixedBoundsFloatComponentByteOffsets8+FloatComponentRegisterOffsetsFloatComponentStart: FloatOffsetsC;GFloatPropertyForce ForceAmountVtAFormat9 FriendlyName FullName{*<FunctionDisplayName?EFunctionScript݄FunctionSpecifiers_FunctionVersionQkGPU Capture DatasetDGPUCaptureDataSetCompiledDataoGPUComputeScript! GraphGuidv GraphSource,VR9 GreenCurve` Grid Origin]0 Grid X Count Grid Y Count 0 Grid Z Count"7 GridLocationɘsGridLocation_Emitter4^GridLocation_Emitter_Func_ԭ GridSpacing8$GridUVWHGuidCPhHandle Radius,4IdtfIDtIdName% ImportedSize] TInactive Response;CIncomingPhysicsDragsIncomingPhysicsForce29Influence Falloff Radius!InitializeParticle_Emitter_Func_ ɠInput| InputMap~]dInputParamLocationsU"? InputPinVInputs InstanceGicInt32ComponentByteOffsetstInt32ComponentRegisterOffsetsKInt32ComponentStarta΋' Int32OffsetsInternalConstantInternalParameters7InterpStartDT"1 IntervalDT IntPoint~uI IntProperty6JInverse Normalized Range=Jitter Inside Grid CellsQ,KeysA=)Kill Particles When Lifetime Has ElapsedWkM Kill RadiusCCKill Within RadiusVJ Large RadiuscLastAssemblyTranslation$ LastBuiltTraversalDataChangeIdRLastCompileStatusLastGeneratedVMIdyLastHlslTranslation5n[LastHlslTranslationGPU7 LastOpCountљ LayerFormat_ LayoutInfoLife Cycle ModeM Lifetime\ LightingGuidELimit Accelerationh# LinearColorCsFLocalq諺Local Space Positionc !Local.CurlNoiseForce.VectorFieldOW$Local.CurlNoiseForce001.VectorField\Local.Module.AgeAdvancement.Local.Module.DeltaTimeF~!Local.Module.DeterministicOffsetiȚLocal.Module.Fallofffb(Local.Module.ForceAmountFLocal.Module.Grid X CountQ^Local.Module.Grid Y CountCѣLocal.Module.Grid Z Countl"Local.Module.Initial Grid Spacing)"Local.Module.InterpStartDTsLocal.Module.IntervalDTԹ$@&Local.Module.Inverse Normalized Range"Local.Module.Local Space Position-K Local.Module.LoopCountIncreasedpg9Local.Module.LoopDuration ̓Local.Module.Mass\:g&Local.Module.NoActiveEmitterParticles^)Local.Module.NormalizedRangeSBLocal.Module.OriginVectorJunLocal.Module.ParticlesPositionI&Local.Module.PhysicsForceELocal.Module.PointOriginVecQ;z"Local.Module.PointOriginVecLengthP"Local.Module.PreviousEmitterStatea7{+Local.Module.RandomRadiusJ2Local.Module.RandomU IVQLocal.Module.RandomVoLocal.Module.Sampled NoiseYLocal.Module.SamplePositionM*OLocal.Module.SpawnCountlLocal.Module.SpawnRate}5CLocal.Module.TorusBitangentaLocal.Module.TorusNormalcLocal.Module.TorusTangent,Local.Module.TorusVector`Local.Module.VectorFieldꈔLocal.Module.VortexOriginiPLocal.Module.VortexVector;Local.Module.XYZCountAsVector0* LocalSpaceS Locationq|LODDistanceFractionG-Loop Behavior[C} Loop Delay->Loop Duration!dLoop Duration Mode{#K\ LoopCount@GnLoopCountIncreased_y LoopDuration2 LoopedAgeLUTInvTimeRangel}o LUTMaxTime0r LUTMinTimexLUTNumSamplesMinusOneCYMainL`1 MapProperty5Mask Curl Noiseņ֝MaskSpawnGroupshMass^FMasterSubmixDefault5 Material1Material Randomj#MaterialRandom]MergeId'S Mesh Scaleٺ Metadata MetaData䀴Misc gModule.Acceleration LimitsmG Module.AgeModule.Attraction Radius:S7Module.AttractionStrength6*U[Module.AttractorPosition!H Module.ColorGModule.Coordinate Spacey"Module.Curl Noise Cone Mask Angle9!Module.Curl Noise Cone Mask Axis#*Module.Curl Noise Cone Mask Falloff AngleϞModule.DeltaTimed Module.DragkModule.EnableScale Module.Exec Index2Module.Falloff ExponenttnModule.Fixed Random Seed^ Module.ForcevModule.Grid OriginwfModule.Grid X CountModule.Grid Y CountModule.Grid Z CountModule.Handle Radius3| Module.Influence Falloff Radiusi Module.Jitter Inside Grid CellsModule.Kill RadiusyModule.Kill Within Radius̟yAModule.Large Radius%CModule.LifetimeModule.Loop Delayp*Module.Loop Duration> Module.Mass">',Module.Material Random_nMModule.Mesh Scale8GModule.New Audio SpectrumشModule.Noise Frequency"$jModule.Noise Strength[YX Module.Non Uniform ScaleLlWModule.NormalaizedPosition *Module.Normalized Angle Around Torus AxisөModule.Offset6+Module.Origin Pull Amount(UModule.Override RandomnessOModule.Override Seed lModule.Pan Noise Field;Module.Particles.DirectionՉkModule.Position5`Module.PreviousVelocityiModule.Radius1/Module.Random Seed[:'Module.Randomize Placement Within CellGGMModule.Randomness Mode)@&Module.Recalculate Duration Each Loop.;Module.Rotational DragModule.Sample PositiongModule.Spawn GroupTH~Module.Spawn Group MaskModule.Spawn ProbabilityB$JModule.Spawn TimeĒ,Module.SpawnBurst_Instantaneous.Spawn Count+fa+Module.SpawnBurst_Instantaneous.Spawn TimeZModule.SpawnGroup@Module.SpawnRateModule.Speed Limit0CModule.Sprite Rotation+6:fModule.Sprite SizeModule.Surface Position:5Module.Torus AxismModule.Torus OriginfModule.U Distribution`Module.Use FalloffModule.V Distribution Module.Velocity̦Module.Vortex Axis @Module.Vortex Force AmountTModule.Vortex Originx2Module.Write Lifetime0EModule.Write Mass1Module.Write Material RandomƆModule.Write Scale3pModule.Write SpriteRotationv%Module.Write to Intrinsic PropertiesI (Module.X CountNModule.XYZ DimensionsAVModule.Y Count\Module.Z Counts/ModuleUsageBitmaskl4]?Name98 NamePropertyJNew Audio SpectrumNew_Audio_Spectrum)C NiagaraBool֛DNiagaraCompileHash~o"NiagaraDataInterfaceAudioSpectrum:?laNiagaraDataInterfaceColorCurve]NiagaraDataInterfaceCurveu:!NiagaraDataInterfaceGPUParamInfo'x NiagaraDataInterfaceVectorFieldWZNiagaraDataSetCompiledData+.9NiagaraDataSetIDsNiagaraEmitterNiagaraEmitterEditorData%0NiagaraEmitterHandleNiagaraEmitterScriptPropertiesb NiagaraFloat5YNiagaraFunctionSignature) NiagaraGraphy7NiagaraGraphScriptUsageInfoy9NiagaraGraphViewSettingsNiagaraInputExposureOptions( NiagaraInt32Ĺ"NiagaraMatrixƌ}NiagaraNodeAssignment6NiagaraNodeEmitter)fNiagaraNodeFunctionCallJNiagaraNodeInputNiagaraNodeOpLjFNiagaraNodeOutput'NiagaraNodeParameterMapGetFNiagaraNodeParameterMapSetTmNiagaraNodeReroute٩NiagaraNumeric3=ӈNiagaraOverviewf^NiagaraOverviewNode0NiagaraParameterDataSetBinding/ˢ)NiagaraParameterDataSetBindingCollection\NiagaraParameterMap(NiagaraParametersNiagaraParameterStoreQNiagaraPlatformSetʟo NiagaraScript@NiagaraScript /Game/Audio11.Audio11:Empty001_1.GPUComputeScriptbj;NiagaraScript /Game/Audio11.Audio11:Empty001_1.SpawnScriptO<NiagaraScript /Game/Audio11.Audio11:Empty001_1.UpdateScript.+*@NiagaraScript /Game/Audio11.Audio11:Empty002_2.GPUComputeScript;NiagaraScript /Game/Audio11.Audio11:Empty002_2.SpawnScript*s<NiagaraScript /Game/Audio11.Audio11:Empty002_2.UpdateScriptn9NiagaraScript /Game/Audio5.Audio5:Empty.GPUComputeScriptx4NiagaraScript /Game/Audio5.Audio5:Empty.SpawnScript0(5NiagaraScript /Game/Audio5.Audio5:Empty.UpdateScript#JhNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:SystemSpawnScript7iNiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:SystemUpdateScript/\&NiagaraScriptDataInterfaceCompileInfoƐNiagaraScriptDataInterfaceInfo@NiagaraScriptSourceP[-NiagaraScriptVariableTNiagaraSpawnInfoQ NiagaraSpriteRendererPropertiessNiagaraStackEditorData_GNiagaraStatScopeNiagaraSystemRN^NiagaraSystemCompiledData4BNiagaraSystemEditorData+NiagaraSystemEditorFolderzNiagaraTypeDefinition8NiagaraTypeLayoutInfo˦r%NiagaraUserRedirectionParameterStore{NiagaraVariablej'NiagaraVariableLayoutInfoNiagaraVariableMetaData9cNiagaraVariableWithOffsetqNiagaraVMExecutableDataNiagaraVMExecutableDataIdŹNoActiveEmitterParticlesIѤ NodeGraphT NodeGuidѬ NodePosX[ NodePosYrFeNodeslNoise Frequency Noise Quality / Cost Noise Strength*Non Uniform ScaleqNone NormalaizedPositionH-Normalize OffsetsM#Normalized Angle Around Torus Axis"0Normalized Array location/NormalizedAgefoNormalizedLoopAge>NormalizedPositionInSpectrumZENormalizedRangePGedNS_Rings+Sphereq)e0 Numeric::MuljNumeric::NormalizeS֦NumMips* NumOutputs2& NumParticlesY NumSlices0.NumTempRegistersUObjectPropertyA۳Offset1xOpName Origin Pull Amount^ OriginVector0OutF OutPosition Output.Module.FirstFrameOutput.Module.GridSpacingï=Output.Module.GridUVW#LNp"Output.Module.IncomingPhysicsDragK9._#Output.Module.IncomingPhysicsForceɫ(Output.Module.Normalized Array locationOutput.Module.PositionFOutput.Module.TorusBitangentqOutput.Module.TorusNormalhoOutput.Module.TorusTangentyXOutput.Module.TorusVector?UOutput.Module.VelocitycK OutputMap9 OutputModulem OutputPin OutputsOverride Randomness@:iOverride Seed'TOverviewGraphViewSettingsK OwnerNameLB OwnerSystem|:+ OwningSystem?gPackagesGPackageLocalizationNamespacetyPackageMetaData,e Pan Noise Pan Noise Fieldw?kParameterData|p ParameterOffset ؍ ParameterPinOK Parameters/, ParticlesٸParticles.AgePParticles.Color2zcParticles.Direction/Particles.LifetimePnwParticles.MassIbParticles.MaterialRandomrParticles.NormalizedAgeΑParticles.Position8|Particles.PreviousVelocity^Particles.ScalerParticles.SpriteRotationeParticles.SpriteSizeT[Particles.Velocity^ParticlesPositionU!ParticleStateParticleState_EmitteruParticleState_Emitter_Func_/'5 PhysicsForceh"PinOutputToPinDefaultPersistentId1 PlatformsXJ%PointAttractionForce*PointAttractionForce_Emitter?#PointAttractionForce_Emitter_Func_ PointOriginVec)PointOriginVecLength Position3+PreviousEmitterState6mPreviousVelocityCiQualityLevelMaskRadiusO Random Seedl Randomize Placement Within Cell7 Randomness ModeD RandomRadius;lRandomU$RRandomVRapidIterationParameters~G1[Recalculate Duration Each LoopS RedCurve*rReferencedCompileHashesJbRegisteredFunctionsҡRegisteredParameterMapRead RegisteredParameterMapWritel:RendererProperties Results RichCurveu RichCurveKeyRIngrV RIng.Age~5; RIng.ColoraRIng.CurrentLoopDurationÐRIng.ExecutionStaterRIng.ExecutionStateSource9@RIng.InterpSpawnStartDtz-RIng.LocalSpaceGqRIng.LoopCount ~bRIng.LoopedAgebūRIng.New Audio Spectrum RIng.NormalizedLoopAge@i RIng.RandomSeedX|"RIng.Scalability.DistanceFraction> ~RIng.SpawnGroup0 RIng.SpawnInterval`m)RIng.SpawnRatefRIng.SpawnRate.SpawnOutputInfoUi RIng.SpawnRate.SpawnRemainder; RootFolderylRotational Drag ̩ Sample PointHBSample Position; SampleColorCurve[Sampled NoiseSampled ValueMj SampleFieldHMSamplePositionScalability Mode!/ScaleNvScale Spawn Count!BScaleSpawnCountCurve W Schemaw ScopeName,vScratchModuleՎuScratchModule.Color i!!ScratchModule.New Audio SpectrumDScratchModule_01ds^ScratchModule_01.ColorI^$ScratchModule_01.New Audio Spectrum0IScratchModule_01_Emitteruw^ScratchModule_01_Emitter_Func_@wScratchModule_02UScratchModule_02.Color!fy$ScratchModule_02.New Audio SpectrumAvYScratchModule_02_EmitterMScratchModule_02_Emitter_Func_<}ScratchModule_Emitterׁ:ScratchModule_Emitter_Func_\ScratchPadScriptsScript= ScriptStructK ScriptTypec'ScriptUsageType<.SetVariables_329408A848D6370CD518C495994F1D42\DBSetVariables_329408A848D6370CD518C495994F1D42.Particles.DirectionF6SetVariables_329408A848D6370CD518C495994F1D42_Emitter q<SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_H.SetVariables_619FBC7841F4E96144B94D92F32F22FEbBSetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction6SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitterr8V$<SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_{ ShaderLUTG SignaturefbW SimTarget &SimulationPositionPA3SizeXȑ*SizeYOSolveForcesAndVelocity 3SolveForcesAndVelocity_Emitter0F%SolveForcesAndVelocity_Emitter_Func_ӍSortedParameterOffsetsl SoundSubmixJ@SourceV9 Spawn Group(Spawn Group Mask+Spawn Probabilitym Spawn Time^WSpawnAttributesH= SpawnCount3SpawnCountScale; SpawnGroup֟;SpawnInstanceEmitterBindingsj'SpawnInstanceParamsDataSetCompiledData{h/SpawnParticlesInGrid%%o5SpawnParticlesInGrid_SpawnBurst_Instantaneous_Sphere3;SpawnParticlesInGrid_SpawnBurst_Instantaneous_Sphere_Func_)XSpawnParticlesInGrid_Sphere ""SpawnParticlesInGrid_Sphere_Func_06^ SpawnRate*#SpawnRate_RIng4SpawnRate_RIng_Func_gSpawnRate_SphereSpawnRate_Sphere_Func_kNSpawnRate_Torus vSpawnRate_Torus_Func_O SpawnScript$sSpawnScript_MainjsSpawnScriptProps`W Spectrum;Я Speed LimitXf?SphereF% Sphere.AgedX Sphere.Color$Sphere.CurrentLoopDurationASphere.ExecutionStateļSphere.ExecutionStateSourceqSphere.InterpSpawnStartDt)Sphere.LocalSpace lSphere.LoopCountOSphere.LoopedAge/_Sphere.New Audio SpectrumNc9Sphere.NormalizedLoopAgeSphere.RandomSeedh$Sphere.Scalability.DistanceFraction~>Sphere.SpawnGroupSphere.SpawnIntervalD6Sphere.SpawnParticlesInGrid.Grid Location Spawn Countփ2Sphere.SpawnParticlesInGrid.Grid Location X Count"2Sphere.SpawnParticlesInGrid.Grid Location Y Count8z2Sphere.SpawnParticlesInGrid.Grid Location Z Count}@Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurstnSphere.SpawnRate{+l!Sphere.SpawnRate.SpawnOutputInfoE Sphere.SpawnRate.SpawnRemainderoSphere.VectorField32qSprite Rotation2H Sprite SizeugDSpriteRotationJ_ SpriteSizer9StackEditorDatavStackEntryKeyToDisplayNamep:' StatScopesDv StrProperty;r$StructProperty0SubmixVFSurface Position0:GSystem B-l System.Age>|System.bCompleteOnInactiveJOSystem.CurrentLoopDurationimSystem.ExecutionState`System.ExecutionStateSourceLSystem.LoopCount^ǒJSystem.LoopedAge0|[System.NormalizedLoopAgeԛSystemCompiledData_)SystemLocalToWorldSystemLocalToWorldNoScale;z{SystemOverviewGraphtK9rSystemScriptGraphQg2SystemScriptSource.SystemSpawnScript1SystemSpawnScript_Main? SystemStateSystemState_Func_ٖSystemUpdateScript$SystemUpdateScript_MainvSystemWorldToLocalWOSystemWorldToLocalNoScale TextProperty:t Texture2D@TextureSourceH'ThumbnailImageY̛*ThumbnailTexture TilingCurl32PTimet+Torus  Torus AxisA'4Torus Distribution Mode Torus Mode/ Torus OriginF Torus.Age Torus.Colorvc^Torus.CurrentLoopDurationTorus.ExecutionStateM-[Torus.ExecutionStateSource^ATorus.InterpSpawnStartDt=Torus.LocalSpace3Torus.LoopCountkvpTorus.LoopedAgeMTorus.New Audio SpectrumhulRTorus.NormalizedLoopAge-PTorus.RandomSeed#Torus.Scalability.DistanceFractionZ Torus.SpawnGroupO2sTorus.SpawnIntervalfQTorus.SpawnRate Torus.SpawnRate.SpawnOutputInfoAx\Torus.SpawnRate.SpawnRemainders6Torus.VectorField326TorusBitangentB2TorusLocation0TorusLocation_EmitterRJTorusLocation_Emitter_Func_ TorusNormal5G TorusTangentFEW TorusVectorKETotalFloatComponents[TotalInt32ComponentsԴTransient.PhysicsDeltaTimem)?Transient.PhysicsDragޜ Transient.PhysicsForceGS Transient.PhysicsRotationalDrag+Transient.ScalabilityEmitterExecutionState-loR,Transient.ScalabilityEmitterSpawnCountScale3$Transient.ScalabilityExecutionStatel Transient.SpawningbCanEverSpawnReP Traversal5 TSF_BGRA8TypeFrTypeDef^#@U DistributionUInt16PropertyO`0UInt32Property,8JUnderlyingType UniqueEmitterName-ڠ UniqueIDkUpdateInstanceEmitterBindingsЕc(UpdateInstanceParamsDataSetCompiledData^UpdateInstanceSystemBindingK UpdateScript-XUpdateScript_MainMUpdateScriptProps9iUsageUsageId& UsageTypes`9z Use Falloff>Use Influence Falloff~Use Linear Dragf;Use Rotational Drags}Use Spawn ProbabilitynFW UseLoopDelayUserDefinedEnum*N UserPtrIdx8 V Distribution|U(Value01VarData(}6 VariablerxVariableLayoutsM VariablesVariableToScriptVariableD`Vectord Vector FieldW_, Vector2DU0l VectorField\&VectorField162&MVectorField32HVectorField64g1VectorFieldStaticuTQ VelocityCVMExternalFunctionBindingInfoVMFunctionSpecifierCEĪ Vortex Axis؃rVortex Force AmounttcdVortex Origing VortexForcenVortexForce_EmitterfVortexForce_Emitter_Func_̈́ VortexOriginL VortexVectorz Write Color97Write Lifetimeg Write Mass0pWrite Material RandomO Write Position Write ScaleWrite SpriteRotationÜWrite SpriteSizeķWrite to Intrinsic PropertiesCXFQX Count,XYZ DimensionsJXYZCountAsVectorxZY Count1~Z CountyZoom=WDefault!9EFEC2754688770EFEEE238A26C4F1C4_/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:ScratchModule.Category!9EFEC2754688770EFEEE238A26C4F1C4b/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:ScratchModule_01.Category!9EFEC2754688770EFEEE238A26C4F1C4b/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:ScratchModule_02.CategoryNiagaraNodeAssigment)Sets one or more variables in the stack.AssignmentNodeDesc/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:Torus_0.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_0.SetVariables_619FBC7841F4E96144B94D92F32F22FE.DescriptionAssignmentNodeDesc/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:RIng_2.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_0.SetVariables_619FBC7841F4E96144B94D92F32F22FE.DescriptionAssignmentNodeDesc/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:Sphere_1.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_1.SetVariables_329408A848D6370CD518C495994F1D42.DescriptionSizeAndCololrBySpectrum!4F2F28E24ED2DDD20EF60192DBEEDCBC/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:Torus_0.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName!4F2F28E24ED2DDD20EF60192DBEEDCBC/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:Torus_0.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName!99912FFB4F7A97C170826F94E5866920/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:RIng_2.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName!99912FFB4F7A97C170826F94E5866920/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:RIng_2.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName!6481884B4C33A6EDEE0EC6B29354E44C/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:Sphere_1.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayName!6481884B4C33A6EDEE0EC6B29354E44C/Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:Sphere_1.NiagaraEmitterEditorData_0.StackEditorData.StackEntryKeyToDisplayName(0 - Value).StackEntryKeyToDisplayNamei=i2i iiiiiiiiii!iiiiiiiiiiiiiiiiitu7!  E          7 R 1!!!!e      !DF6;l;m;n;o;r;s;v;w;z;;;K242424244Ax5 j5i j#6 j6 M6t MD7 M7 j7~ jH8 j8 9hk = B Gsk P vY \b}k If 6j M#n pn M(o Muo Mo Mp \p Mq Maq q Mfr Mr sRsMwz&)z~')~()~g~:ݤ©rIi,SN1S4S3G3I3h3"m33",,e,,, ,,, z..S //S09%0S,1S4181 ;1 >C1 g:F1J1RN1NNQ1V1q]1k`1 hc1n1 zq1 u3?}4U4444 4]424'4 z-**-T,0,ѷ,Ur,rǼ,d9,L./072*2111U&1r{1L1L93/3r5*&5P4,44Un4r4d54L.0.0.:E/0/0/:C 00 000:A-,,, ,#.W&/O)0G,2?/11141<7193<3W?5B4D4TG4J4L-iO-S,V.V Z/V h0V Vu2i21/5iʍ534M-,,Q,Q.8/021Q>1Q1544Q4.l.l.lo/l/lG/l0l0l0lc&C&M &b]6(n &o &/İ tֿ w |D 'C 'M '< 7J '8("'/`Yu.(C+(M F(7$81(l(/Np&)~)~))9)b')))())/-X-`,`B,`, `,e`b,f`ˆ,g`",h`,i{,j`],k`,l`,m`},n`ݓ, Y=,o`,p`,q`V,r`,s`,t`v,uY֞,v`/, `,y`,z`O,|t,~t#,Y,`,`P,`,`,`p,`а,{0,Y,{,`,`߷,?,z,`;,`,`,`[,,`X, ,![,",#`,$`,%za,&`,'`;,(`,Y,)`T,*`,+`,,`t,-`,.`4,/`,0`,1`T,2`,Y,3`m,4`,5`-,6`,7`,8M,9`,:`>,;`,<`,`^,=`,>`,?`~,@`,A`>,B`,C`,D`^,E{,F`9,`,G`,H`Y,I`,J`,K`y,L`,M`9 ,N` ,O` ,P`Y , `,Q`,R`y,S`,T`9,U`,V`,WzY,X`,Y`3,Z`, Y,[`L,\{ ,]{'",^`#,_{%,``}&,a`',b`=),c`*,d`+.{]-.`.. {80.`1.3.p4.  6/{7/`9/ {p:/`;/K=/p>/ D@0{A0`HC0 {D0`#F0G0p I0 |J2L2`M1`N1`OP1 `Q1i{S1j`T1m`U1n`JW1 YX1o`Z1p`c[1v`\1 `#^1y`_1z``1{`Cb1|`c1}`e1~`cf1`g1{#i1`j1`k1Y^m1`n1p1`q1`s1``t1`u1` w1`x1`y1`@{1`|1`~1``1`1` 1`1`1`@1Y1`1`Y1`1`1`y1`ُ1`91`1`1`Y1`1`1`y1`ٚ1`91`1`1YY1Y1Y 1Yd1`111`!1`1`1YA1Y1Y1YL1`1`1`e1`ŷ1`%1`1`1`E1`1`1`e1`1`%1`1`1`E1`1`1`e1Y1`1`~1{1YY1`1`1`r1`1`21`1`1`R1`1{1`1`1`M1`1` 1`m1`1`-1`1`1`M1t1t!1`11zw1`1`Q1`11`1 1!1"T1#`1$`W1%z1&`1 1'` 1(` 1YQ 1)`1*` 1+`j1,`1-`*1.`1/`10`J11`12` 1Yj13`14`#15` 16`!17`C#18$19`4&1:`'1;`(1`T*1=`+1>`-1?`t.1@`/1A`411B`21C`31D`T51E{61F`/81`91G`:1H`O<1I`=1J`?1K`o@1L`A1N`/C1O`D1P`E1 `OG1Q`H1R`J1S`oK1T`L1U`/N1V`O1WzP1 YiR1[`S1\{"U1]{V1_{X1a`Y3{Z3{n\3 `]3e`I_3fY`3g`b3h`bc3i`d3j`"f3k`g3l`h3m`Bj3nYk3 `l3o`[n3p`o3q`q3r`{r3s`s3t`;u3u`v3v`w3wt[y3xtz3 `C|3y`}3z`3{`c3|`Á3}`#3~`3`3tC33{@3`3`3`{3`ۏ3`;3`3{3`v3`֖3`633Y3`x3`؝3`83`3`3`X3`3`3`x3`ب383`ի3`53`3`3`U3Y3`3`n3`ζ3`.3`3`3`N3`3`3`n3`3`.3`3`3`N3`3`3Yn3Y3Y 3Yy3`323{3/3`3`3Yq3`3`*3`3`3`J3`3{ 3`3`3`E3`3`3`e3`3`%3`3`3`E3{3` 3Y3t3tM3t3t53`3Y 3`b3Y3`3`{3`3`;3`3` 3`[ 3 Y 3!3"3#3$3%`3&`|3'Y3(`53`3)`3*`U3+`3,`3-`u 3.`!3/`5#30`$31`%32`U'3`(33`*34`u+35`,36`5.37`/38`039`U23:`33;`53<`u63`73=`593>`:3?`;3@{U=3A`>3B`0@3C`A3D`B3E`PD3F`E3`G3G`pH3H`I3I`0K3J`L3K`M3L`PO3M`P3N`R3O`pS3P`T3 `0V3Q{W3R` Y3S`kZ3T`[3U`+]3V`^3W`_3X`Ka3Y`b3Z` d3 `ke3[`f3\`+h3]Yi3^`j3_`Dl3``m3aYo3b`]p3c`q3dYs5vt5`v4``w4`x4 ` z4e`{4f`|4g`@~4h`4i{4j`{4k`ۃ4l`;4m`4n`4 Y[4o`4p`4q`t4r`Ԏ4s`44t`4uY4v`M4wt4xt!4 `4y`4z`U4{`4|`4}`u4~`ՠ4`54{4`4`p4YЧ4`)44`4`r4`Ү4`24`4`4`R4`4`4`r4{ҹ4YM4{4`!4`44zc4`4`=4`4`4]4`4 Z4!4"4#`C4$`4%z4&`}4'`4(`=4Y4)`4*`V4+`4,`4-`v4.`4/`640`41`42`V4Y43`44`o45`46`/47`4849`4:`4;`@4<`4`4=``4>`4?` 4@`4A`4B`@4C`4D`4E{`4F`4`;4G`4H` 4I`[ 4J` 4K`4L`{4M`4N`;4O`4P`4 `[4Q`4R`4S`{4T`4U`;4V`4Wz4X`u!4Y`"4Z`5$4 Y%4[`&4\{N(4]{)4^`D+4_{,4``.4a`/4b`04c`?24d`3&j4'ji5(j5 =6)I6*6+7 2Y8 ke #l& /l' 9n7Cp( zr ) * +jkC?lBAD6m@FhiE;976,& !"$%'()*+-/01234VU:T=?@ACEHIJLMNPQRS5\]_a #.DOZ    8<>BFGKWXY[^`bcdfgnHGefhijkgoJIlmopqrnpLKstvwxyuuvXSMwTWVU7xN[OPQRZstY     654 !"$&)*+,-.01239:;<}%/7~|(#'8qz{ry=;9z\><:=>?JU`kv@ABCDEFGHIKLMNOPQRSTVWXYZ[\]^_abcdefghijlmnopqrstuwxyz{|}~a]`_b8^de}~chfdcYSFDBA@>=<GHIJKLMNOQRTUVWXZ\]^_`agjlmnpruvwyz{}~b :EP[q|  "-456789;?Ceikostx  !#$%&'()*+,./0123{ |6789;:<;=9<>:=y;>\<?C@mFADBl Ck?DAEF@GHHGIJJIKLLKMSNx[O[PPOQQPRRQZSXMTwWUVVUWT XvSYZR[NO\z>]a^d_b` a]b_cd^eedfghijkClBm@nopqrs tuvXwTxNy=z\{|}~a`^HJLj?6EuM7Y9:]8cfgDnHoJpLqrU{|bfD6lBAFhiEnGoIpKqTWVZstYU7{b8`_e}~cGIK      !" #%$%,-./012345 (&';PNG  IHDR\rf IDATx{$9ؗ]y1x'Qd&O&3Fhw$ofgvz=]U-9Cx #jnBY$;ȬݙnotzreN$​lVxldrۜʮpipЩ-inI]c:YW!]s۷]ʩ# nhmЧn6^apjLOf[hʻ;о2[۝n%W:ˠ_vJ M!AlkUZO^򑜌+ lTmnQ>ڎYz )gxPkN,w+럒WYm-•sJ#2//$=>/ef?[+ xM/o#B30ۄʮ|g8-޳lbp"Yb¥ZgYo%MhϹW2lioWry>zIy;gS2:m:Wc:8ˡE KP-vyz[P>kҭ`vp٠ͬ2ݖ|yg6"x0չ4w„ێ}4敶 q'C'J-9TC4+3:َ'k9I;éGlmxrֺ8l7oWMsO/ͱ>\^쵙Z\m/kNͼY!x۹vmC^#R<3SfN%"Ue^Xz 43&\2QoKfc\>-F1ʆO-sb :hYn}cb9ڵ]ʤZ>YStސwڏct9>7tW;!P*…):43uh @ 4? x*_=x{*4m\g^U92-=9xru\qKyAяTP F8x8en[evџkoUeC'.ͺ ;˘ieKm6o%vK7a3<]iVɬ*2t346||,[OD|Tx-?sJ!my\'E}_{H w.ȳG/evU%t+ e>ӭQ17}h*(S/4>c/px_$Mooqƹ#Ne(E6Jٺ#Բ8`Ă'ԕ%^PɘZ~gU;Lxu{9tic5{ #_0tB_K.VricNr3Ψ#яc`(SGڷm.-sm::\۟6Uo%X(<~NWہzkE7t(Wl*Tf9d!qeY}:8÷Тz@3ׁs>#zðH,KU'q,lN^9+ tZіU8Csɿi+Nzsla[<Cv]I^p+uuiY*Vk^*1eRen)icoۏXN4E;Ô J2ЪScY<-~]߼:JSsdmBeȺg:]ҫC\Jcu-KOnY+Lyw/ 0s)fC}>4"甄 .Lq֑:jx.,ގ)6AB^}ù?Sq.]uxa3uPGE[yI}t 땖2k[3!\v?O;tw\:GzyR?C1xQt#,Ɣnaa؁U -!}VS>oL2lӒV3Ӌ̷̴ؒ5d-[>eQ)Osfۙ؎(Xj#i due6 K6;PEٺk{:mɨQ} v[ Pgst:ԗǖ^[:vg-9T` pvWCfze9;9}-٧چiڦZC/Ga|QdۏGzMERNm8굿ʅVx rov}uؖeʭe_!ʗv c+J_9s.ʻUnVtL qeP)rڙEWn|P?+N[0dvgZ)+Ɖs(i 1̫/G2}<-(e:̉?bWsv 4ˡ~W[؏~B[R[pwWaesq#"E'NB DptǺOs'[^i=lx; ]:^ۨuT+m%?tuTJnl҈s>#WykyЖ>r<'!W 877ovgaʑ޾]~"elXP-{g kEp<wF뙾76A*(NJw/͡5oX^ m]ml'vV;"E0;C|ݢ  TC:SW}j_X|SCt\vU-(4ƧèJWs*օIViێWBuriG;Ӽyl[1!o1F~ ltwn /u[ K2tQanǘ&?qx nm ~ygyWq3-tuLxAqu ]Ջpv*U??urRp)S9gx2uYmTff%ZϼޗPuYN۽mDRX'Q4/i  |ә;_fy!lW<7 w3\e:g`XmAӂ&]Š3g{mJFxfO^~+gnIr^ז߈igF22.وhCzf^e:# ̏iBYNP'q`X9r%OC~000D+-ghZ,-Mβq>׶x)/eqq $pX5n:=g9mT'Rf^ P{ޫ`<1G6ԡޭ{̫~5jMnقٗ+saCٙߢj6q8:#l:r2bBjZ XELe;lhij|ȑ2E@ʦ^W^7IG>Rf،ߪW}2^[c[9|^ʳ]sg?W<fSk8ÓWz:fҒw;4Uںn=[W7¤_yuhJUgl՘wHYe>k]= %OIyKWs'HZn>ek< eWxmrK' 9(Wu`ҌEAxc9m +_~k.ʨK:e }icuW}`TI/]h2`zU_̺u`T1  <:VzҠ:Ue 'W6mQLl@2!К&~5y,ʕU7mZn/|:ecmm91U^m x#>]uP6bn|C_iե,۞76л84ʷn;"*#e'T4tXAsCvBSh2Qe#7l$0.}NF.l>\ڢ:־"ʛ?ɶ)Wpxe9 lW\Ow׷ :K^'cm3 u}_J+\]ĘD깟~<=W-cF14ura?t6 omW)C+̷.@U2Dh4F#*R^)xTۮ3oC̛ ݡ\~d]zu3o1eϴs}=V+ T Mc_3Ǭ}ړΧ_xm:QI^qN&>@ NPJЖ ے,q"KOMp>kCKG5 gyO~Ar|hR~H%cg\brJ;0kN[pyGkuƬV˕n.W}eUlR7ldȫl*2 R_p5:UWRgxV1[ 2I{a&/?9ʞ[r)g yp z \exVzlnyUyn2Au5Cpvmo^̛m/yQ>4yʬ[zI{n)Ǥr/ܤw!Go:AGڄ=Nѐ+3ic5q{-cgM3rA[W}z Z+jj۶qmvYmOO|l|eoNL|4m~pNyo?X &-J?hc@"Ti*Nc3}NWed=nQ<7$./CI</zG嫹ߠ4ɥWwar3uh;ʖV&۱N a[4W<5 Is,_],OW7dW qRq#LEut-#(}t6p|U:N④^σI~5ǘI4.ڙ>ʇ[~WF;]-~`r="H/P2 f;*1c*]-+{wiGU&uʵ.͜m϶ ?W] N?7dʪ ;]azCWi9 љ4]-%j[F&A.Zu=\H{,O7h֡QB]2m.sZے+򌣎|i8mW]|A}C4SNV8o46+.a6Tjw{HQּ ?uaق cYϗȨ8V,ϰHIp&[XT>k~rߏ?Tڶ:2mеV}Y_1(UᔷB0yz^~udֱN}uYTî?ѧH&'`{na2W[l*m$&ayCr0W! FAq`lAF.LrUCljk?,5[Nyܕ2m>2f+n '0#]i-9r+wnoKG.q}|3?uW|v:G`s tL}N[-|g[ re 'XWePeo*uSN:۬Fđ CvmUZV7e'lq^I^ۨ< iðHh:uzC2KbWeR&gLomV86i=ڙSm[GK'l%k ?Wӆ5uoEӰlWZ32I?ٮWZU/i[*kV]> |hkl8ƾ7I \xKC}[+ߜ;OKLO}noF~eZڽ0reC%GIp`\Z*LNN Qyʳ|3{pL?0@qzr ^ȑ <ԏkΆ`>p|{WOA!k8W{2 ]%<zT^|0lrˣ:ؒ… ro+Lۢ^w=2 *O9$je# g<7%95,(ck2Y߳  vUږ|L.D?fLY8'LG>ҠԽ;)Q>:F /z ϭ7}o[IybxYQ*2U渘C#.u^ya⏴5O>k έc}F~ *&4ak3s V?'1|dh>]t9nΡGA0:~HpOxO[q;̘81w"ei 8p(TW#>5x1h/: NMtLI?(NȶCN-m; IDAT#OuVdni3'e?bL([G(ƌ2@^a7v~s[w歶#߬]=`97_F}<4Wm%g=[r6w4S&$xV]xv(JF UH|`V }Ӱ_o)LhNZxǹ#:fS&tNCʆ+/Xuҡ#|5V-Ǟ An0 '1֤^71_SGsǜFگUSڞ(d{#X]?q^ʨyATt_R#֥NRzSD|0,88$b63<s mˣ>L r ca b\ॉH䗶$U> #W2o:ď ȥ,ҽD;\C$,@m$]<֝#g:GiձUqC˥[6e}NT}^TR"nAlv8QY.)#$*O&#iliâSY@!JR Qwé2} c_eA>3rWe*^6íjS&RuBk]CȝT\ѡ:g;+ed?|kg Os(}6% }lm^n0p_[>=$] _ igSrƭz@?PIU 0xMpE'l~O0p(2p`:yWG iӶ2A4Id$SZ'H ._ϲ}d6;g9 pL^֞k&}f ]#Ȗ?c$|58e;CqF+:= pQY[?i̥)"L #g+0O'$\cC@)Ca2W\Bq-u\y'ꄟt cm`wvcpV%; ln:zXՇ>bC o9xwǴ \j̀>۴U](Vt;7HAN^i.9< wWɶm4Y F*]8t,< Y7|͏L*|A>ui0N^<0,=8e:GCw 4LpހuXt^N2-a`:XN96FX ˺A 12VM!8瀼uoKK>9c_lU2v^co==@c;zU FCD+>c 3Lwֱg:_\ i8x0pq FG#3kL uhQFw SQsu~::`0:Nn VxLsdT:ʦM}}*x_BAh9,y`^jYX؆ڹv#\^ջ˾_TYe>J>g2&a Z+\F QfAG*-&D*ksŐOD2u34Vq3!7wokC4b됰ZNX"(Ty[?וe[ upF^T0 X: 0Q Le@ bOi'qSl3tXn.u>-AA$Z'G=*Q [{gG zM191ϊkf,0I0tOQQxﯫlʃ)R)!Nn?9}7ȕ>4=xjo(l(s0x-<`QԽOQO.|"zNx ?. 9БPKU-:?W.~}w`{86t#|2t)e8^U~'{U {_\[zӈ9p \I0u|WFݸ͹ q3OCS9}2$,߃ ߲wa0dCIU6Nd23P@w(2WC|uh:99IOj/ҎGDHYgbc_ %5Iscb1c=)dXO>4J?˨|,?0G4~#pqę:ouƐCoO+>q趟Mº# QfVY})+21 A4b>^P =8;]Fbp̑[ sX7)z@}vA`B5k11=xD]Qۊ4ƭBs7͛<ɌyӜڜБՍCG+Ǽ8!8HA *Z(8f[J&^֥~(X#iW!)@;ߵ"gۙci.DשF<{+I84+}+-Ues۩8X6tMˋ*se줙4U:0ii$F| ;4]Rr 3Ǭa:=dnJꧾ- ^eeT^{S溴W d#guh# z >pbӠI(A/uz.z]1ԣp*d)ЫOXɁiث2wNƸO\e+Js  ඒN€ n+pG=` ^8QUtm%K< i>a5* "nU[9h8} Ɂ'd17Ą%gp>4&j88(FIY%j?đWuV  S9q|<9yG\OWs"\y'H@MgJj{6*PxeXWlX9ى 8D>c|T)::EqcQ#[)%p|G=XJr\QىKC(|L}S<;O Gu FdW@ouhBc1fpHcl{]x"G\ś8ƑOҺ +sl[+zWa-AW+T(s9WwfCf -n'h$"6-0Q܊s'HTDT/OOlƉNÑ4:ߍF.u/Iq%r5T&˺tc,+}URRG|K'¨;:9:PgһI_-rՅo9wuxu'چ,s.9Hiy쭻Kx8s_>/ALw9N(D> \0)8VaR'uJ%4&܊JS?*0P}B}u@'pRxe5cd"ёH-! n^dTI,l{Eu/@$\`HX_)9Ńqx).uڑwGu\9䰳[NngY5Q? H'E_YGʈp6:ϟ;$_@0lȅ0Luj"c3g}&:w`]Q'9%nyfjEBiRv$:sd(vr22 }0r$.#M}jXd4wB Cz<:dĵ}Fi7hd g] P:2Gy $9v/O5TJ\1A[+ ee E9m)x7Y`,c%0peز#Hf;\PRغ!c]q﬙9TƗ*[aPgmQtp3~'A Ձ-b2%'h[M&I7Jo^_nVEȸ;e|59ɺ[#8w. GXR&uil fܖU@͐[(Ǎ~3^0l*q߱`Y/#96iU#WjE: Q$iSٯDU7qq&y?7NZ9^^`9 nlC9J[Ѿ>P7I?g|A݀ :O$ j$.44+UbIJg8tuC.=Vp[2sqmP@QPƛ=P6S؞C;Ga=8_ v(}w{ˮ3H&$>[qiv"[ak1>ӱI*C-3(PTDGu1 4l͓`CG&:ӹ1jHXMS|$˼;l@A/^Ts]xuC3|#}ݾ z[gos|b۴j^&9Ao驏OeNwvuΝk^akٗ 0u ~e<)6Eo9rZKǣ|9 sGҎ![c|Ԉx-J\)չ7C'A[> !G:udj]QR0xS QVw6)lh8 ua8eVkdIWatW/*OFY](mQ-z㑺m64><9O} ;/er怀=j0@ Vsa d/U_wֵG1`vYlEZ-D q:kuDX:79zОm fr'Dy>FN\~%CAOcmuЫ,fzu%VQ8Ձtҙ8e@3Um~)7"jV貛6v?يXG'/ǮŌfxq{r A{xUvAՠq4vG<:v#gPA:>(wi RN[c<GZ>A^gǒ 0i~%B)eihZ9TSо0Rf~"ysQwknn $m՚M,9b7p n*1&k+a. 0^#ǤŎtsn2$`褝9Vǽ~WJ ;՝<]A[u$S|Qf?Ʋ+AG9rBlڈ#0x椭V8L8=ѡW6s~:zdbv4AV/yvvX 'dTnt "*zkPF0L xDվT+9;?.z-0:D"ZQ cQPf^:8}mzDGO\A } ("Qz u pZcQA Tڪ'[‰gY{Bj7v*8ȫ:<&TuڋJam懛PBFa9ub xͥ(J:;lb"NNWG|4&~85kg#{&kcȣS``D~~zFIYE=oa< azw𲭀bA7QT.m\"wQvd: |sջBin|(נzꋽE2`Xߺ#AЏ'&B+AմwD满v[xb:r(iSo೯ѷ} EFJ` Opz:я:i1Qg2C_}]Wu̹H__\vw,?8~Q\Nj:=B _o/ƹiq@`[[OHJa.&ǯpv.LMvxۿ }hk 8ί|sGҿ&r~T\c=mgC3r÷%]m'oؼ`4' L{{k[N^;DtTV;RuЃ5Hl99PY(@&bdn7}ɴ5n 15FhG$ͫV'SC6iY~@G_&C$ƚnwQ 8f|Tu[/UGȵ*~~1:B:p\a_B^!=9,̉unQq"Y[CFqr(r`COxd KL);r5wRm97Ƅh(C*  H}O{2f^wlŮ@C+?0mTi Gr̆ۻoqQB_J=МK&!n% `7o:|` 6cJ+?hCn.: adɵ?`ҷ|a@9&⨶#pb&HAiuNS ܥZo39kT;6\ IDATF } 4Ӑrٙ!m8W1w9 _wa$$Bm׫rU|N)z4/}X~\Ӯ$²;]oF]O~sSc٢3Δs'IQ{C]jg݂< dmnP[~6I}Ov^쏀@ \-u*Yd6z^m[ H')FT\ȅC'QfINGV7@KCpN4^h:`^ǯ+xrˆyWc&t+idӻO:=y.Qd<W;XN`81&ܯ t:qd> |^U@Ylr)vzD{( >Ձ  "k9qu'0 qS (_;lP@׬L"?=t\AҪ D:bptzު2cP;:ɹT. @Yё>  ~Ky׾ #ncND?G +q~^?~Q5`!q4%;vnhkK1a=Y˕dPGa:BݫoրИ_, 3.Ob '17W+٪6^2tr(|$v;AmLS{ ɹ4a~kJǟ`uCtvۭI:j}.WsP\(RKo00>Ƀ}뫙)g&3hu3[L1(蹏gl`M$v%*8IA7?f~n_5'ǫGcQ{x$urW?&=`{no=_i 397?}OUw]Ї$xI~u*st,?w*AЅ/m&ȴo.lȸys! G>|`eFb11 er=Cݹo8d0N4 =ސδq1;@G4"QǯQUWX%`q{W+}P_hNg /?y4y{wϖ2i}Aq 'ݑ\ D lxw 4>E qI~,~ulG~b[\V[3WF~W>Ed|j!} ծlg$f\Gw Te''UV '}S7I hi6 g@2!5h4}T뇂Lzn̓ .y>ֲy>>. c^Xڊɇ\=f'Հsbߍ[Yr nE?\GUƺ l_3P'uFS7ϖR{绗W8PxX^ow?]vُ5\^n^c(ڟ"?=e'!W?7h17@D r{ ^M}kG W>7* Se=R[I` á*>:z𞻰?j3xiQN9OQs ]6+]F|ߙu;&[nށ>?f8w:N7#9;c⼝ᯚvz_-u"vU:\_Z8/=}z| nzdP‘pzw mq?`.~՛o8C`[u R&p~S\z @4Ǐ6m0x]uOиX ~><RI:s5Tr( nˢh/[g~ Q؆xb P#)4^w_c`}_\?^߄xc׏&xie_@HkNz/v?}Ջe R  m2 \;g k 8Ga!` |QQfhD(*QDz2ufJ}LJ[e&˾`Cw睄443xTJ:~,\ПD@ usi/| gY=?Rf~zw}Vk;&nx_7pU wW}юvŀ^iA@pG" } &w v/nt|ɼ)hPIq$*Z s'@EEU9_v3@h9="0813tF#Jྰ;$OP"h[ܣ鍼E,@Z[USTwg+QHzs[6mc2D;?/ĝӛ7o{o-͵weޅH7q-sޟq^77ɯoGD|WpCiY -7Uw/?m)BYa'?ƮP_ P @ݻ\>?=|.2\7މ%io=Paw7ֵ%-404//PC (|C_UO?s;g1`!/`` 9{f8(V&u๳?L S8c9Nοu<‚>柽u36#N7um:N9qիݷ_g_}"nƝm?OdûN?#%e_c̫7__i?~Gw~w?A\>ŋ;WqӃ@+62]mI̱MM 1  6~+rWJWDĬ'I=2{98 Υv?髁w hPk4󟟼@;?\9?pZ|!?zoXX:z+zΏӓ;ޟ:vaG|!gjf v-<ڽ9(R ǎ ov#w)݃GN?4m/qs7Er 9>ءv秪G}:K_$S$lNJC6dzLN ME#p[-F `Oǯ?SH8}Ʒ{>//(˼ v_z2-:aG#@q ۚLG> h>a82Xǖ84?}xosϛ7# j+$_"xmQt~W)$o سĥ, +CR_pτ]W}eĐ uL(lh(CHWƦ|SBli;B@_22!>M>{ mI72Gs'*>ubYGqQ@5Z =<~Y:_^?w]Ƿ'iyIҧ/~JQ?=ybx*޼g1GfBX[ZB9=vBf|$$]0$- QNKtP3WxAm*]j?'q<1 }hÔ6/eb}ʪ{G޴%~Q{cwSK^ W_8E8lCj8-/92LN_S1nSz|N'4WL w(bWQo>q_`o}4-^{@qOv91+t [i*^eHͮ*8fkؓ #@u~`cZjң1'Hm`R ^NRM xww Y0x:aM~mۙc]UqpWhyj#`ؔ U=a+62`vİNLF GjYQE]3 V3cHA u8&)& :wwm' _bWf:_zב_odo[yXub0GKĽ x☛$_7zx~{ݏ^O@̧57/woSzCE p_GWWqn__6 g';tMJ礽NpWe_vעAuJ3-{7D$a,yG* ">KpG}_+g3GW{vW?E(~%J@=`3OvY_]n^k88+EMtwݻׯ gnȅs^ys2s|o+~W\[p.[ X`pq}F j[;}Ϳ/=ݽ}kߑ@o}\Ɉt{/NvW3?'I9|E0]rz`jÍ}SqV {N= \sa] psz#p^UHQYk]ɭY]~^Bh 7o0 (_w/_.SՁsnqf]߼+Y>eH?vnH)Φ3U<yG{G; vDHή pwtq~|ͳ?߽|Σ ~;<>~]߶oZv;sOrܸcƫ8<OqC cA& R{?~|{(Y@2 " Q8mNsb7uvoX|m@0:*[,C0m\֣HZ~ # `5dnmVFYLJDu  ж/D@pK~[g~e _$ pLLALɳ0< ?y7mKe O ;=ry?prMWpr$2W-,+A /?{u՞>( GIh O%>AF. Ka..;ҧ`ԟ杷 mGs1@QnUQ xS:TTg! Nǯq}gY@ՠ:>6wr*걠SZ{}> y};7Wvʋ-.Y?_7էcT iw+q׷xE_O%L첽d'+9='sWE7ͷh07H.!黸iÏEr7o*zLxojA`]|{Gqy{x#p6pzNwbr?BoRO~ @1as.miM)wQJ{.v[SHπVN#g_F~JtύM`.L1n#pjx8R?RwZ25>u +emv|{j,mEşvҽKz_M|w.4Cg;=u{>l^x$'ojqAXRCn_ Nw?{ %7 o/ڽyVӛxI{szm|fLӫdE|:Bϛ 0|'r6p%jnހGznTPŎiOA}uaܸ qx/36N.P0Xg8tAoTUe68 _,7[@`Tfr6Yw)H9dΏp~}f /-#)=ygT {vl-Z[pu՜?1^W}Yv/b:"8>o=7"]v1nŞ~{ob<}?A;8(5@T}0E @ HȰ#$Q#P Se9Tl IDAT8YX|#Hqd@_p#B$+ i«`b_wFú_9>pz"ۦb:m8F~iq~_/aq Wm_P wnyK,7*n3qӋ(׫Ow8eI&tF D?:&)q6"(u[MW/m,,@Џ8;qI5VY~ѿ) P_~ρ />N,uQ'$x_ }Dh9? w7Pj[9@ÿJ7Ҙ8.#@ն-YJ(FYބygʳb+V+Ml<7(bo;i8gDxrMy/c%8k{vl_Jq'p}ŗ?ly~^{gm97Bi?l՗xxw6~ҿR车'xϢz|6'~镏 {%U8M:t>[5^G: 8YNn2%{&8GNzP]|yA❂(ߺ;mYf/Ƴq}ˇ qS駿븩*]MY'E9o*o8Msk$E=j_˴$`*̝tB >JœG,#;i]c2%;n49qt!v27x?ߛHxq SWmE;|}w@?3řǿy}:8?m k{}Oe:m6d;^7|")vqo}|@sԏQy]_4FbAڛv_Pm1.ɇ,*^cn!rLA_@f :~8v5;W?Bͽo_6_{5n$>f/NK 7G0 -)H>o O~_=8A {iPrvHߴOKnⅫ#ڳNφYS7Shu׆o>-""v{f [gh[Q]`qO#o sRVCw0 㿽#"|gzy V~HS$w' @B 4}]ꋯ~/g18c>y/"N9*M_`Ǽ z eQB֓o]ǧ.C9 +~%Bǥs1-e,q@tps7J/,u샰rx[{Ferzdf`x D?v| (ؾ[mWb5{q gt_m.c\ʶ}$Vq{{[kvqsяn>7MNN.=?%FŴxyEg`-gOv'w_*˻m ~!w)_ .?_v{o }֟"kggtڿ70SSyg#]o>n~;뿊Ae{Y@e{xrz/oi~e2Fj}G9r?,͗pnk`¦x}q \-_ٟ|Jʗh_3QO㫬g ljm46SZ<,&Ų_PսĞuoߊNj/MX{ߕIDW%7v7U< UQ? v/nv3?t zv1?E oؓ n ǫ^oڎO2:\L2;G)Io@p)!i_5~-}& w_q .d\\aT`XAр VXhGz qx`!G5Ny$3GDeg`>8n\}I@)c4HΪO"0ί`1bT`7:A]}{EP}<0?m:̦\ _pyY^z}CwģG s-{F~+#ؕ:GSVct߂2wLkm>pP ƏW뚜OGc_=i D+e>m@krm=!#[]Grqn &9f[Vh0"??!iL1qGLd eW+W[rTUVf-3j(Kx>;cFgcc^,dX_Ro #r»oUՀTUKh4k͟qk>cN!>4 iϻf(m( suq`ԗ0O{}Kx\XOW@U~gU# C0(n9xl9@P5;0>􏤈'GA^E%W'P CeWߤ!5o/!ѭw3tqfFYϩć|P) )q |\0Wu 7P<1u<`>LD>,b{=䣸{bחWJsPz/<"ǏC U?~;|f)(RY*YJCvg;BT":_ exY3_^UQjB6 ѵ֔?>h҇;gwc&t/-i`q$ o8^zs.?Q-). At};fT-i8dMDl}/Νyx4WN3~_٬)n3\YW?>"r3/zN! _Q*n kI˙ ,^56Fr放oP"a\)k`@}֖#9 ~acP_j=Ϩ3?J7iytg/ց81mgYFJ_g/vǏSDP:W\ꇑiLw@T/{.ƫxJF1ϛ_0ryV2Uˀ8x3-fMG- 7ǁ1n_̈p't#Jf ^F*=S;>ZJ)f$Lâ#\#9RX_s7±=#8|/~X61I7c8tuGg{]e;!>bp@\c<.=vAA̳x|;fI;ĴJ#|{2v)O#bh4p$3~?!vyq%7 <{ˆpXҥ˜0NB0NS8WpAiԟ3Έm;@qmz/.ӀOr 3P::ǼY}YS1D.l3pfDix;uvcN1q, ;q肮.0|6/i;gs0j6Pԥe8JUcJR%f S dU: Ο9&]KxQ\԰O-OofOvwd{$n,< iUJ:8fj3ϗw3 W)3k>UinlףmNڦ~(GB^V#4&ى|#0yw>ac03WPPmꄺWd[yf'E:sCL!zH-iƫnvV4|Q:gkof Gwiaq,[r\er}D!0  0p |0N>.haz`H#rDҫР侀|2 {?_fqװ$霞ĭdY#r&?=D 3;0C'qUo=T-lb!@:C|HeoAU Wuh<~'N,i[qϼO9x)>cMi[7>;qW!134`8F"{ݜ:W݉5D/u͑Pe|_ kX_nĽ Ĺ3B;IX(>"a~'fx2ӵjcϺC,89~s.j#kfFE;NI0g 9D@Yn?c'pÝQ6Pf*iDVe`09* |O_#pYOc6=C}Fŋg @YØl {NwSׯob\;m,1c!Ϋ?F"v&,a։ \Z\+.1?gBU sEGZ|b,/\|ʔi۠;8q ?[INobŌg4_>oϗ+iL#N7*eVg(CPr3~\QX/ĬBw}ZR5V`|[$wP~@<Kt yt`D-Nˁx/dC\We}'9 !j!ȜWqSxxD>=N)F@Y UPziZ7uLݘdwkh+],<؈WwٍFw6fM7ՏJ(d϶׺(#>S: ?ʏaZ^-cZ.ߢL};K ;'1..$8?"wNc:jK负T$@*g S1 J-e@@q;TޭM+XF:p5 ȫ8t-HfCD:;{gx"c4(bF L%GݍЌ}7xu.`G3nǝ~~gCqV=z>o~6(~8Cx8+y|«`nn-UG:r8'>{Ʌr *@ǦxUɳH#;#ޑye2n5o7~nqOF7^}ۍX*пi+8g_(6!O߰S4qғ# H5k[]ƖvtGs{{Ox?=K`7r*oqi*>'XB7dgt@kWt>4, ^1/ Q̏,hE\oصQm(xxvsdWZ96燔 -~N,[?/ W߄B~3.&q\rՍI/iŜx)4}Pzqc,2-ZMBfV3dŢWv2xO㝅qa$\]>(xOʁ81xRI{X&69Uk@\Dy6sāY!@gEءQ?g_^nqkPf(ssPǂ AS蛢3_,ճ1Wwv~e+gw?r*<&r/7.HOǴ?&Kd04(,eSU@Н +d#}Ǩ?Ah s9oD9ؖ@@C`EtU5 >u"Jik<F^,~4JV|Ӛqީ plohJzI8ފFa[+>YK勀l9 5/F@CpXGkxf3 B˙bqIbb_ݬ50鿣?7ϣx[njEQ/j g_jx=P:,uYvv˟y/0@,"ПECVǪ%\V|iM8 ^qj@5c xxm5[S]\SB5-Y@7a[bo~|wwyvQױh3 E|7l1izG8_iiyˍXs rq IDAT|D!g| wqK˖'{;2{; /㬺̋k]ŔUl w./g̦h\+4g w @Ybd,b{GDzS̤^}y;Q(ʨe}ë9 7!m8/o}c\ ǞG~p ̝F a*I˟\OwQBup0@[7x:M \+1eY 0Q(6}UթBDA3?Qj+NJ:"K; Kˍ1_{vRcfe 4H ԻMϻs'`~ I..Sbn{{3~DCS#e_.{;/~_o% ;CSBݢ:#Wo8>E{cK CqN(f&16T/I{189e>g 73P@S)"ʏW\5gqUx438eZOQLyk#nN v~͔07zt#PPvP7 DZ^8Fŷ3^Ehģs7v 2[1Fq.cz] zs>]^3#G~kk d'{IB|; m-ǼLa^D5%o)BTq9zӧ7 D&ğo=w6a_<#wEUd(49'է"F<ԧHC飌cuZ>GvX7cP7 zIUZ8p([5Tކz5 }fѢLëSノkSwk=A{tI[>8 +Y OF%3cY9/3|wB o\uίcuO}{2FWy~ 8''ZW 9*K F~g:~zݏϏ ;aL>cѣl1y\6kt#P~]O3Z@BlޙOC_p# z+?2G $S>{$O9.-NT *!F`4t$L@ & T(Ļ1Uz#<ƺYOvΚBn޻_6AW,;xpZ5hF۲c(ӭR]qu^ {w{%Xw{Fq>l^}vE*˫feT;'~֋xAPswY ܻ۞ßmğ$ 1|(N\p 6J K/=8&hm3 *߅f9u_:~gqA̔lO:}Sa1pK/y*u{I0ν[ |= 8)8:]#`Je^r },#-]X- 0XMKG#PasxT<43XDI2:^r&=FI>TV#P5B"x#c*z±j0 ]n$3gx$qX67WˁH?.=Ռ:>nӱ1Pg)ї`*U in4` nL]Mw;u5uʏAM}䂶 5 @%J0UM}G ଁ g *?̌#STfZ K 7 JȑG>h~C6N#b㯳}A@.3OťY?U{:=94"fJ}!q̭@Lr'c^ ;v9+܇m!ǝilĔq*1f5աy\{|O:1at)V3>}K\˯zτ_S`eF̲N0 ~)=9(3 i:cFO>iz:qlE 舯ˁ2?U7zq WK 6,b_s:?n/0ȏz;1 ˄!1Y@|4 ᅘ H#1 E{YxvfAn>z'E!`[|yYG?h{}F*wNS7_Cl~UNG?i Jrzog.OE6 ƶT}l&sq=pHg9IYT @gNAQL,Vv/f9)iife,#laBM)fo4+NЇXp;*)add, W&xI,W32?`<EC;22;Mw}}w1bcC{g~a/{bEg?3w~ Su5v&cW'l^#& n w4\&?>k˳t_\ð{}Ĉn|mtפ24 [&F\M~+>ۻ+qO ?ˆ̆@ ꠔx YEF.Da# 9: ]IXd;\xyŁ;<8x9z4􄻞hj0AS\pq]^7(M3n$.ШxXo&>ռn(M7Ӹ4TZ]@Lf6pO2+ pw? Y>2tyRz'zz@kO-;N,..6PgΏo3i;6GQ<4ŋW^mgW‘߲'>Ϊ%=!8T_aPz ~IĕnUަ^Ao ~f`۪#i B۟ `]]t|g*J1ꏵp_anbj92L>n5xe``{L?n8>woBg»xm #([ݝaFTλqU#pGQw*/٤18p $0g봄q-y+FTye?v!|K+ vPFre^xC||mAݰG5B~m᪫u4 L*~kZIZxpvåy8 -قi(4 ma YF slda@y~,j7q!‡F@(ԦeJ }@3CFnxJx QԍeS.kSWŢqxv(k73zͺCrH_ O/E/S>62PϒSJ̙@ZgPi~'oG3f.O)o7s ^!28ۀ7_ɻco=3&"?ƭ7{|hOw 5N⬾8 b#WƛO84c<`ɀ;V8JԨbc0إJ̰NլQg(cެA%1l^S pUS@*E[Fh3pҵR3^/£{IsPF\0XH;7i4h.=d,t$m- צp+~u`EQ>1a.v+ !MB`abi_`" qߎ rcNOOn 8r܌-I:nWi;GNxG_|o\lMwǸ~D*d.#CWKIq)?d`UX,Kg(\՟݃mI5 xYJRjpK'_}^'[?؀`oLA ǧ+yprC eԧe9_~I"E;~vUny5LQCNƮ*t߉+1y<|UyN}U~9EgF v$T#7Um B%O!6 FB ˁbV!ncS0YSO|?{֘"N_YBCns{)>yYǩQvE+a6T*sa)nw)?un6Ox4+sE_*4XC`E}DUPFjzh߃8ix$;qWKo7mO0*ߡ1¬Ƒ_u/kht4NA)>Yūt_+YPRFٻз[JϦֹT0ïZA(M !P(n dRDC sa&?% _]>^@4dQS~qk'z;ɣqj9:64w}0wƻ {p͍6;j8K{yxy0A=fRC^ik^ve2mf!Y*wu9YBpWk |7fCA99Z"&J K`&GQP /}F˘* ]DfyLG3]#>];ҬUbk8  _Ɖm:SUzayb#4 N#_g^HkxaA]JE>AJ1qIFYeӁK@{~ #nG ;2ӌ?=f΋07}s?{CǍ@Յ޶_=_4{(Wۖaw} VpoAqݧ}>PWr?~ycl }OxLyW\r;ά^rf!l)7j}D,@9Wa|ū1q_~oIP~fgQǻG}!oHoQ ̎>xGb8Qfvqg?Ǭ/f;z$+ZA?ݏ=٧qKq 9խ'O'~DN(\_KW&K4̝lf6 Ak6C%{x2E]rH^ CDc1H  @dKLuj*NngT#HeM!Y.k\klX5_~{00YMQ~2KCݏ ?> | By58;i#K` ;=iK]:gMo0ۅUřfwIc^G u}+|Eݏ!1;c2 }YRtZ]C ==|Fa?wN F3}a+k晒iuف"ǫE#KkR ]}y~ķ`-!p^oOvmܙcSD āS6][Cu*?quUU4-gcմj%D9ZUU8i:tGAH]#glz2d6v_|ow8Sr/ʯp|36B~E4ĩ‡?z2Vy #Qo!iYn`{bVpq~)DZsxӸ|`~͵a{|Qs{lvn~#Н IDAT6Z g7B9KFE逪}lgQ4jo^CR]DS|)' H}Pt[\3x0PnVx}zpM{Gx[t$FARK^FnCpԟ`}x#X@-;F;MPo9Owp;aJ5*;u}@9XoSJ1|(:NX/C*O 7hd*# I`2{\s:2F@gcK9D'.mСK5 4#G%Yq泖܋>~_>u Pax81xPtyy5<ӯ_yq~x z/>gw}3~ e9ߌ9KwPo%90`uAh^K\coht^mT=4k M"ѿ>Y`O'n!;7BN-NQJ 86 V`-WAeqL S4 1{ى%ڟi1[tu647gu<-8 #p |MWz MG\Q. ]om˒>ӊO>8 q'0tsHX귙J#Mu<}|4‹?.QN]nVֈ?vC~(ǙY?J ({d:zHaW}Aa]_zH+QSQM(:JKwUUg, i7:NtGW!gL(W!edhŒ7M~@{pWo;Cv_=V| b*CI~;ԛ</G>(1WtS=ҟ ?KFY^)ki|`3X8 H EK6f#0􀣾3i@Mp['dͫʫB`0b2ᰲqGkk \MsnCy\֥ae@{7(v:x.3 -J.?:+T#pէg'm^([|_}pPǟ57qSnq5Ĺxپ}ޒ4`5І YựO]UOxWᄏ}=+h[ T]ӫx$}wŘc7TqC {d1=jVW-K^w1,KUx%%"2J,=(O /l}Y$N"L:i"T5_ERE]r&N}<|(Ы3:`%YMgp<%⸍[ `pgC0W- qtc#qƷ >6pɣwoqg?>mK2g}/a5x/^tonq|:  4g[ٷힼx{wr2τXt7U:ҮcAl,<.pk\*]Tl,p%:KSDNނYj`V(ʟ$I81IP L0|E%{A2E?I|P1q/OQH#! (}*~NF@ JxXF~y"? )&빶\Xv;GPc'FGw?oog.Nw1J/oa0М_Ќ;5?ţ/ח@_??_%VU{zX;yP|G灮>T>I 3"=TsMYI֊a^9 ͘M|WI*6nv | PW pjQ)zݏ]`p9+tu#'N/38;=_Xigg@.hr {==p~ſ57=f~u4xx ^.΋23vIsMX@X(!NCNjnCL/~YrT7袦0T|Q 08-}30 @$O2BWfRY8B'uq~Ja!,nE%цe )J2*(_o9x4*Ρ FXAUPY9FN'߭J9K&@H9j!l9`j{]'16^w?f{﷽wi7;u  hq<Ҟ*N572úIw?Uʋ$J!Z>R_:$fਯ\|w̱MjtPe@Oœ^̒bD|`Ch10ty̾?VY2صdjɈW1rcX_@LD5~3 #۫hX6P^ u V,42}AK||'^NZÑ ѻ$^Fqr:GqBzY@_&]C׎M/Ml 8,EZ?΂ȄX!hGel&çf!MCx+O*ZEz=2m#ҕRS_=V&j,^) @Qr&c L D6imQL+(BKy%2_f FgDqt{rJA%a~* #b] 8ӓqGOkwQS;58,V*&]3W\^el{A>GobHGZn6ʇ [prkE%'K^h(+"YSZ]*eu}F@q" /HϑÕ@ >q 2> @X@[5doj C{L1hL@tTWc[tH$wϑ\0Z,Qh*L|1lz.QsRk4`XYָ /7q?h/ޔ(ǣ!hŧE^6P|IsċjDC}+Z-@i 8֬m17>f'8 !ϳxM81ʚz'qG0$+צeStl7NH;/-o'cW(AFtG~!9wYoɓdzV T2ё 2)=˦ʵz8Qs,Hhp`p:CGgŗo(Tpkf9ق9C4 .ܔτMdqMIጷXu)UpYpU㱗 SlM8kcOm_(.F ˏ|묤ݙ@;A5da_P?(}|WKdc\0UVWiyRx1N k)$4nL 3B+qK} a|nl(ʄⷌp܀ gB&ЕcކY%0 .Q?.k"(R Dsco4rsMzWs?vs]NgGC 7*;ea8  R'. < HϦG򃦍.K|wRJ,ɰ5(ewZMLG#o9R**xQi#pI͒Qj#3ڙz`d9 Y ?YZ"Ļ-V G咬W<#参i&2n=@S˿)b_7Bp8<K2 Q~/ipc& ktNCPu] kER"P U Z/osOt *?~)Dk|({^>3̓tAf: P;Ќ Q_[:xCX+oP}TR<D#<:ӖRtےO`UTik,C&>i| ?ԅ_Q]W,7T=e)UzWL9ԠSM4;$5ܠb+R. _7*"qW#`ZɧtYyl 4VU10778N:Rlhze9{0zrJߠ:~Rƫ),!_$ h`CT;,Iel=巍u ', 3nDVe0kܴ-Wv liLFq0 !M^h<8^qrȋ@ށ6:XCQ Q 7Y+\TlqݟJOŮkuyg>DX(}PyF' ;hmi)&)d@u^]8]UJL 8Έ[&'[TƗh6qQ8#*q:V(qP|EsHc,p5E4 L|9 &u-vԵ4nPyF5Y_~e7kXU!9`#POϗ3,'NǞIq\J 3Q;DGL_Aoβ{I7똊wׄ7NRnC({/C.-(àL(5)?_DVmD{yZ v+٤߀w\6*g-+—kV uVq4 H,Fcik킷n)'M(eY:'ʼ(o#5>W^kVf3Dx*hO9lgd9KS v$O9j.*97 ,-! r'`C=N~q&t#~T,eLOچÐU9QRԫ,o#\ݦafrh+Ӫj`Ώ7bn<cn-eOaU]}*LhZfVIJӡ*{ i l @_"/h~UƧ?~zOc&:e` "R`b;I_m){ b> tQ@+ w0LhDi]r,'1Hi>`1X>"@]miMQyNKF: G)/aY1AK2zJV.'߭FjWi5>/ aSpA;-#]|GyPC[4#b 4{x.g_){bygP>xߨcjAi:QzTۻ\~b Wy]*}:k+?fte^PG*;lZΝR5+5U(-qW(ٴ D+f ѐ/`48l qp&ܫVɑ)4[ֳS0;`)ɧzM)v@{pi5;mwhGx"2F ʈ[ѻԍzv,{ۓE~>/z~ y~[t>Zl>qGllh3GRF;.y#x!ziq?!cz^rC$XBv0h; g;Q%k Mo Fz@(Zn|ۡO v۶0pG:Q|gw?z"v.|+:e|[Y J^uP}f&PӀ?g(HK"H9ӭXV3^!lnT(QM%,0,*CAæ%#a|\MFz"mO~ Q Bʒ IfcU<\YO%|(D{u`[Gw.Em IDAT|Ka86(. umA]Xmj۲`'Nΰ.sT|f+5 g;,! M "P$ٙa-\ q3^aRķF qh77?1Ezktp[ J s[ ܆ } (M1A |'|V~ k.IC>l҆OI.n3 t/b28i3S vzXqCVn"$ D4^ӄUP!FoVCR+ UQcֳJu'U3յ5_iRu"<9(i(Y WIX{wrV|Ltsn9C\q xO[H[(K]VݧoҡcoK`WXuhm4?' aFXZ<h$C04QLff\7*aiaGjqrӍu+,s&3SpAHa +a#]?* r*VZΙUGO W<3TȼǼ0f8xFmNE“ oڦc=#E<+ޔJnz״Ѯ1tUtcsN؞>ٽ^,`838exxmß>sH+3O P7XT|7&14NiQw|}3Z诣 =@0 \mϐue q"mzyGtbc[kF7`ৰw6xdU(ʨКơXM/ ɾ8,7r~,x~mza"x"ZMW'jVYn0{X J"I@:2Y(sVd ~ZR>4':&O2ztO62P 7-4ᭊ^ǪHU̚ 超'/T#E[˾O )#7}K/S^((ꅸMUng:T|q3 I;2,CfحJZab82?pť,CegANg/s2@5Ʃs f28#k̦īׁŭ>࠙G}l#aӫo{#_ Bl)P{Լpms'e㐁Xa.8ă_ ڜ0];;U=0|U@H$87 :xij|i ]ᅣ r!H9# Wa@p02Źd4u¯QXJ|󽁫)nܸal5M]Uj U.*YmEy Ԟm ʝtO+^dªJ b_#HPԺ׸Y]A /:%V{G%Ci5?:+{uڀh kUXGѩszf\lU$PfN`ʆB<)a%* {9"S$8>{4lh\»` jL )Iކ[;_[`bQ z<[$Uo/Jϧ 9}G=.Uue&0YG9"_il@kakCCYЙZNVKWDhhKA蕮y~t p`^0+laH|R8S銀W%WUf>*lM܂-~{0yna٭[[[6f]-'mKrNpo1ijOkqwUWEx,]Va?i[*y? +H ej,hM ,8Ҩ8FkgKAB̎tSQ`2e$,O%S4Uzy-]hG`ͼ|@=#\ƐhhpXZ=}MvӤ-AQdӉg?<[цoCšWA{ȰΦVa`(-~f(Oz-r37]eAԟ.|WS0-C ($SFH*"qJ#lK3̼gyCWyۑ8}`GdęBgiQΕrt-*oM0`(cr)W|q`!n g5kAl;GNZ3b RVabLtVkNy~Pvl9C{Yg6Hқ)>BXŞ_P]S9((,a[K$ I>J"}GG-/]&u>JHENѦyuɇ~RGiԳ~Ba#%M9 W[:'C84*JnK' `̿U*?%YYEo+^aUqH s3P-7W :`NmeءΫ1'iWq3~NBhU$ԩt8h*]1VE0]bf(FgA*٩AyTJn9yV.;$:Ͳu"9Ai:ΜצpD"m5(qSЋBKJ5utZ'329 43]FPzQQa5p>ۼՠ17yq${.%AəzR0xθtk]RBT2ffUWC/y#WMV_`)UT#e88̳wȑ8БQAa@sdw4vR:ifLO5UghֶMg{/aklɊEGRT 3%3pn<OK]-xU~3\~IѼ#.AKxG Ba]om p\HCg=-mͫSʹ046X>Jg"qa]q{Ģ(<{RIH) |Fض TO½aȷ(Ĉ:iЊO #L:s:9"*f*~W~KHzp_{3( #p߂tyWkVhF rJSton 3 P!x(0PA'kv|~vo(«i2.=ˎApJ㊿[ێmOӤk8GTM+W`0"F- be)4s:<,/96Ή߅IO,$(7¦ 9ޕ;۷m)%݊Ilؠ,Wvp ef)qg\<[>|k?ӛyALh'<*ڭɡ\PC4Yf/7:W<8>eό[qp͗i{9kG*׭Ub%.VjYLj7Lutv Uk,ӆ~-K$|m[N%,;il4?T>k Fy%Tf '6I]hk6t_F]%C?gW|i_:V?y {f~"[W(8qZlN8<;ЯV )\[a5KW?[fg9{<NJQ^GF_ Co`.-|G3_2(() ;݌ӂc&¿Ѯ@Zc.1Jk7,?yʹ}+͒R;YJg#r?{ooֹDJQ/F]xǀ,odwap*oۀq"1I-OXK~at|x#C2 ^[&RN|V]qN- H >?RO›?]K_@7UQonye9 `nVcSg&inN3HC؉ߪʫķʘxܡ= ˴)/!Xҷ[l[Ǥ/&?·|DUʯA>H7C8:[_>WVN=TQ, m8و3F UGơҚ?05`^܂t6ǽ }݆FӚ'; gwpyW-bĎ/`ضAYx$omWyoqll(e5yֽ ÓQ= 4ʉIK_|k?,Oo_}h0c*`f@ƙV7g#I HtK;Y 'ύNγw.9÷h~ ;r>u,jjރo1֫c}n?ox[Sz[NHZyү*(3jHNܙ~NOR '-VgB%oso;0 eMLOn^EZrܔ{8 L򨰭Vc`:i[<<;$o3.|+8L\Ze?Sixi +;c^S'.uF'>m4`&/&y ǧ#a]ϼ6eWz*SM7<Em3 D{n9C,^[nWi ۢ&+QFR^aM.urK]S&fp&T|J a~v3.HaDNc3ONG}X#_aO@ޤδw9ߢ6s.:X.W9?q?:m7ylis=tbD#@{63Wn( &Ϛ-a(D* Y['*-qX'`Ձo}}@VN-qio׺Cc=mҋ_'w⊣ï  epy^u8AGWʾsVa~kk7x/?;p'yRعoO^k~ZnZO:ӷFzȫl;gY9yfsY3hw+V+C>s٤N8t7 3O`ʣAn߾ ^ԉGjK^t%)ӘsmzS̋z/bԋM<69s=@Zjq*)ҍ#NP" K7|_.ްioR>xqԕcE>q|R=ܿ=)rtO.ns6lPSG6 ??:8)z=U58dcLP1{LϏFb5;CSѦq̋6d_o1s?9o%GV >Ԉ2ZW<# i`'',8K︴9П:sLMȉ-u3qO.~1̇MQ|Czx<0ez~6qiKN u7e^29bݚIEڋM$i`rySfЎI-u@W`SSNڍ:&LJdz7{PstOmb&~bO]{>G߲K[!T~\/ *P?tNO؈4+ѣOuhTB'HiqOzӯۗ~nn)?NN[`Yp9efqAɩz1zl96rDW1*'nI^y3L=S泳VuaI[8 s`8^XN*[qwzF' IDAT1qz*qߕ|X9mͭ> K?r׫qW˱~!:T\\Z'1ڍ-V|=%qN}E t_~y?A8lqf>R\ka^o].RdNmecm ܷ?'F|ZP;KGCE1@k@}6\O}ֵ+Ƥ B%yn^1Ĝjsėor 1RXc,ӯ㻍|O\k7Nڍ|Lx$zuO_񎱡Vo=bìvl=ծܭ/mH/tKC rQb:6\9y^-cqx|ºb;?t wF,|鴧zqƫD|Ob3];8eSqRsOmO6OXMaK{ͳv}iC`N O`;ùH_ɫnO\&F. Sq#3sw$]<Ǔupʫk\Oد%n ovyDڭ1sM?bp^h#sW69 :щ8}c=^'g_isy E'lS/ 67[TnscAȣ-)n&OڨgNޓM̎5 >G|ɫ<> 7}1lu|z׌_/ u}:0pʛb=코 yoMU_02EGd@:B`˲J?$''1{aBe=cbw״gO18iw|Tԥt^59~-s 8)ĎdOU6ڧhNr&>;NŸgۥ9yw?Sꫮu8M<8Xl#ktS<ŜJ|2zyCU_[)Q.퉥|C@|O,G$Wbk'}!I}~9'%m7UGXxꕉNNNvr?X64ݡPعɿ^O{,8L +|2A ß~Fq]x+&Q{!g72mT\勞{f3:''^9RcSX3niޗfͥ)m.!ywo /Ř{dȠ/>/䵏x|6|as1-&_yR- Yӷ۵u}bc6y!N[W.N[p),l1OWYɓu)o_Om_c^Ͼ>ě|nIf>;_7?W>q+=IKX{ܵۓU z#z3Ƨpp^ԩ4I>z]Ѻr7^M;VncpMd?!OqvXyœ,;.cW9i{iv>t5FcwǾ!֞.oc=J{>$߲>Pvh7o 6|c}m#$.w}" \I}ExcgsZkҜȘ-]_=s,NOct$.Ws|ȟ9Y6o>{odP~sgQ-3W-n@&$ŎVc<צhkgeN{d~exY7ߥwpGlvG.b6'{s&,b+&}zKUny&B}f u`+zw._gXb ~}kgq:}0Z#QG/ Z\Wһl߳N8JU`0IHtVi=塝uUԌ1ø:\ЦD$}_vޗka>qM|=wW'ǡvv|l`;#8)O=[_Tld?ʤ8`I_ebzn@IؓeMIvotQ/3A243Wr^r_^)š˸t,>Nx'Yqrz_ S.0?zvgIe[$2}1bYO^JmT4ֹlYhW (i(NƲUL)N[zh -T h1.FAn[\7nω~vz}vp'._ c-R.봳u4jΙͺ\GK:%;0ۻzdiGm07xxkb^y3^1ՙS–|vn7}uk'HO]?u~M2{}3VKr-.UڑEݢ~ǫN_d'.Zs&b .i'YOn~#j7NNgd7&Ge=?3Ge֌|bq>&.m?΋ ~[Ӷny55LIENDB`NiagaraSystemNS_Rings+SphereFNS_Rings+SphereNiagaraSystembExposeToLibraryFalsebIsTemplateAssetFalseTemplateAssetDescription[][][][]r1?*M8S!!7D7A17C9492535157B5DB5B1FDD82159:alOҀB-O`$:t69?NbW2:F!vHNS:9{E&CXj% :t69?NbW2:*yn:CyVZ":PgKKǶ":t69?NbW2:ِZB@;lIP1k6Q~;*?P1k6Q~;Ef>*?8j>KP1k6Q~;?*??/P1k6Q~;?*??18Ef>??!r>??R}>??B>??Z>??sy>??W>??5>??>??>??ϭ>??>?? >??8j>??/~;.*?-lw?0PA:o@pA+tIP1k6Q~;*?P1k6Q~;Ef>*?8j>KP1k6Q~;?*??/P1k6Q~;?*??18Ef>??!r>??R}>??B>??Z>??sy>??W>??5>??>??>??ϭ>??>?? >??8j>??/~;.*?-lw?0PA:*?8j>KP1k6Q~;?*??/P1k6Q~;?*??18Ef>??!r>??R}>??B>??Z>??sy>??W>??5>??>??>??ϭ>??>?? >??8j>??/~;.*?-lw?0PA:AZD|}L]|vIP1QQ~;(!%?X?*?P1QQ~;X??*?8>KP1QQ~;?X? >*??/P1QQ~;?X??*??1 (!%???J ?}<ܭy??zt?{o=[s??#?= m???|=qf??u ?>Ne`???3>*Z??D?LQ>S??>{o>nM??20>U>G??>>@??>>xx:??'*>>T&4??x}>>0-??>M> '??$>>/!??nw>|>??ʥ>>??>U?9??eq>!|?\??Ĉ>?8??0~>{?(>?j>$?>?X}W>Q{,?=>?#D>3?R>?0>z;? >?Bq>B?P>? >zJ?z>?}=MQ?4>?`=zY?c>?=`?>?r=yh?6p>?`d%=|o?,V>??);~?]$>?{?5>?B!w?L>?m^r?nc>?m?TY{>?h?a>?d?>?S_?ˠ>?CZ?w>?nU?j5>? Q?]>?GL?P>?G?DT>?B?7 >?D=?*>?n<9?s>?y4???Ŷ/? ??*???1&?u??Dn!?}??n?hX"???2(??%?Z .??b?3?? ?N9??D?Ȝ???p?AwE??8>QK??)>3,Q??>W??4>(\??>b??>h??8>pn??> Kt??恪>%z??8>??/~;.*?-lw?0B:f Z_G\XKIP1QQ~;(!%?X?*?P1QQ~;X??*?8>KP1QQ~;?X? >*??/P1QQ~;?X??*??1 (!%???J ?}<ܭy??zt?{o=[s??#?= m???|=qf??u ?>Ne`???3>*Z??D?LQ>S??>{o>nM??20>U>G??>>@??>>xx:??'*>>T&4??x}>>0-??>M> '??$>>/!??nw>|>??ʥ>>??>U?9??eq>!|?\??Ĉ>?8??0~>{?(>?j>$?>?X}W>Q{,?=>?#D>3?R>?0>z;? >?Bq>B?P>? >zJ?z>?}=MQ?4>?`=zY?c>?=`?>?r=yh?6p>?`d%=|o?,V>??);~?]$>?{?5>?B!w?L>?m^r?nc>?m?TY{>?h?a>?d?>?S_?ˠ>?CZ?w>?nU?j5>? Q?]>?GL?P>?G?DT>?B?7 >?D=?*>?n<9?s>?y4???Ŷ/? ??*???1&?u??Dn!?}??n?hX"???2(??%?Z .??b?3?? ?N9??D?Ȝ???p?AwE??8>QK??)>3,Q??>W??4>(\??>b??>h??8>pn??> Kt??恪>%z??8>??/~;.*?-lw?0B:KP1QQ~;?X? >*??/P1QQ~;?X??*??1 (!%???J ?}<ܭy??zt?{o=[s??#?= m???|=qf??u ?>Ne`???3>*Z??D?LQ>S??>{o>nM??20>U>G??>>@??>>xx:??'*>>T&4??x}>>0-??>M> '??$>>/!??nw>|>??ʥ>>??>U?9??eq>!|?\??Ĉ>?8??0~>{?(>?j>$?>?X}W>Q{,?=>?#D>3?R>?0>z;? >?Bq>B?P>? >zJ?z>?}=MQ?4>?`=zY?c>?=`?>?r=yh?6p>?`d%=|o?,V>??);~?]$>?{?5>?B!w?L>?m^r?nc>?m?TY{>?h?a>?d?>?S_?ˠ>?CZ?w>?nU?j5>? Q?]>?GL?P>?G?DT>?B?7 >?D=?*>?n<9?s>?y4???Ŷ/? ??*???1&?u??Dn!?}??n?hX"???2(??%?Z .??b?3?? ?N9??D?Ȝ???p?AwE??8>QK??)>3,Q??>W??4>(\??>b??>h??8>pn??> Kt??恪>%z??8>??/~;.*?-lw?0B:tKFK;k ԿIP1k6Q~;?*??P1k6Q~;*?KP1k6Q~;M=*?M=/P1k6Q~;?*??1?M=?/~;.*?-lw?: &AikIP1k6Q~;?*??P1k6Q~;*?KP1k6Q~;M=*?M=/P1k6Q~;?*??1?M=?/~;.*?-lw?:^tEI2s-=S:(RaM~Gy~UMVMWM: y(]/B!gF:K}BZMܺu{:ݷSMGMPUMVMWM:+ج؈M75? :sBj#:?G6iM\uN\uUMVMWM:YjJ+ n˙JM1%%D%N%NzzzzDzDzD6%?FMCMBMf5##N)")* RIngN1JM1%%D%N%NzzzzDzDzD6%?FMCMBMf4+ Ldτ}"** SphereN1JM1%%D%N%NzzzzDzDzD6%?FMCMBMfLbO4@{X1,"+* TorusN1fjD }åVjjD }åVjb1= b ;'^(E} ޼lS43mA1\vp,Eўj nA1\xSu_{i֊vl@;:E"1 j;ze_J'sӓ43mA1\,V͵ tynA1\āMnM[_+rb7"1kC?;9SDKT,y<43mA1\RGo͔%nA1\|tSJiAj́cS"1( lBAD6;BK\8VM#k'w43mA1\s3GB3 ތn?nA1\?1\q%@j)'B?1\i%@j)'F?1\o%@j)'G?1\N%@j)'K?1\%@j)'W?1\%@j)'X?1\%@j)'Y?1\T%@j)'[?1\Y%@j)'^?1\%@j)'`?1\%@j)'b?1\%@j)'c?1\%@j)'d?1\K%@j)'?1\c%@j)'?1\%@j)'?1\e%@j)'?1\E%@j)'?1\f%@j)'?1\%@j)'?1\v%@j)'?1\\%@j)'?1\^%@j)'?1\]%@j)'?1\_%@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'?1\%@j)'?1\%%@j)'?1\d%@j)'?1\n%@j)'?1\x%@j)'?1\y%@j)'1`jklmFAB@C?DE6hisIAf2$ǥ.F T 3>F T b1!b;"L?ZS43mA1\荮pvoL5Y .nA1\55bnN R֛H$ss"14 nHGC2i?1\`%@j)'e?1\*%@j)'f?1\$%@j)'h?1\d%@j)'i?1\ %%@j)'j?1\n%@j)'k?1\D%@j)'g14 nHGPx3Mf3>F T 3>F T b1!b;"L?ZS43mA1\荮pvoL5Y .nA1\55bnN R֛H$ss"14 oJIC2i?1\`%@j)'l?1\*%@j)'m?1\$%@j)'o?1\d%@j)'p?1\ %%@j)'q?1\n%@j)'r?1\D%@j)'n14 oJIPx3Mf3>F T 3>F T b1!b;"L?ZS43mA1\荮pvoL5Y .nA1\55bnN R֛H$ss"14 pLKC2i?1\`%@j)'s?1\*%@j)'t?1\$%@j)'v?1\d%@j)'w?1\ %%@j)'x?1\n%@j)'y?1\D%@j)'u14 pLKPx3MfSJ4m=@%oSJ4m=@%ob1Y b$ ;'^(E} ޼lS43mA1\vp,Eўj nA1\xSu_{i֊vl@;:E"1 u;ze_J'sӓ43mA1\(ElynQq)l;0nA1\&]j1h?ґZ``k"1vXSM;9SDKT,y<43mA1\/t"IP.nA1\OĞ'1u"1, wTWVU7;BK\8VM#k'w43mA1\Yr9=R0}nA1\Qx2:y8FXy"18 xN[OPQRZstY;W0~nIV#Q43mA1\/t"IP.nA1\OĞ'1u"1C2+?1\\%@j)'?1\T%@j)'?1\[%@j)'?1\r%@j)'?1\$%@j)'?1\+%@j)'?1\4%@j)'?1\*%@j)'?1\&%@j)'?1\Z%@j)'?1\6%@j)'?1\U%@j)'?1\ %@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\)%@j)'?1\[%@j)'?1\%@j)'?1\%@j)'?1\Z%@j)'?1\&%@j)'?1\D%@j)'?1\$%@j)'?1\%@j)' ?1\]%@j)' ?1\'%@j)' ?1\%@j)' ?1\.%@j)' ?1\%@j)'?1\~%@j)'?1\-%@j)'?1\%@j)'?1\_%@j)'?1\,%@j)'?1\*%@j)'?1\ %@j)'6?1\#%@j)'5?1\I%@j)'?1\)%@j)'4?1\%@j)'?1\/%@j)' ?1\O%@j)'!?1\%@j)'"?1\%@j)'$?1\ %@j)'&?1\+%@j)')?1\m%@j)'*?1\?%@j)'+?1\}%@j)',?1\l%@j)'-?1\ %@j)'.?1\%@j)'0?1\%@j)'1?1\^%@j)'2?1\(%@j)'3?1\%@j)'?1\%@j)'9?1\'%@j)':?1\(%@j)';?1\%@j)'<?1\ %@j)'}?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'%?1\%@j)'/?1\%@j)'7?1\%@j)'~?1\|%@j)'|?1\%@j)'?1\V%@j)'?1\2%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\{%@j)'?1\w%@j)'?1\1%@j)'?1\!%@j)'?1\o%@j)'(?1\E%@j)'?1\f%@j)'?1\\%@j)'?1\^%@j)'?1\]%@j)'?1\_%@j)'?1\%%@j)'?1\d%@j)'?1\n%@j)'?1\f%@j)'?1\%@j)'?1\%@j)'?1\t%@j)'?1\%@j)'?1\%@j)'?1\a%@j)'?1\j%@j)'?1\%@j)'?1\?%@j)'?1\F%@j)'?1\H%@j)'?1\G%@j)'?1\b%@j)'?1\C%@j)'?1\%@j)'?1\%@j)'?1\A%@j)'?1\B%@j)'?1\%@j)'?1\M%@j)'?1\X%@j)'?1\W%@j)'?1\J%@j)'?1\s%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\U%@j)'?1\%@j)'?1\ %@j)'?1\%@j)'?1\ %@j)'?1\ %@j)'?1\%@j)'?1\%@j)'?1\g%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\,%@j)'?1\-%@j)'?1\.%@j)'?1\/%@j)'?1\x%@j)'?1\2y%@j)'?1\z%@j)'?1\@%@j)'?1\u%@j)'?1\0%@j)'?1\7%@j)'?1\8%@j)'?1\9%@j)'?1\Q%@j)'?1\R%@j)'?1\S%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\!%@j)'?1\L%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\p%@j)'?1\V%@j)'?1\%@j)'?1\%@j)'?1\P%@j)'?1\%@j)'?1\i%@j)'?1\h%@j)'?1\q%@j)'#?1\N%@j)''?1\%@j)'8?1\c%@j)'?1\v%@j)'?1\~%@j)'?1\}%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\T%@j)'?1\Y%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\K%@j)'?1\%@j)'?1\e%@j)'?1\%@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'1|uvwxZVWNXMYst[OPQRS7TUsIAf"FWL$<4""FWL$<4"b1b;XI~IW{¬p¦43mA1\VY`VnA1\Eq,\Co*|"1qC2?1\k%@j)'z?1\%%@j)'{1qr?5pMfY)O@!RgiY)O@!Rgib1b;y-1F2U}943mA1\+W1[{HnA1\P$0vJn^VL"1y=;9;ertFJr&n)43mA1\⟏jj/1?Pgε/RnA1\Sa[5bP~"1z\><:C2͚?1\'%@j)'=?1\%@j)'>?1\\%@j)'?1\ %@j)'?1\$%@j)'?1\&%@j)'?1\[%@j)'?1\T%@j)'?1\+%@j)'?1\*%@j)'?1\%@j)'??1\r%@j)'J?1\4%@j)'U?1\Z%@j)'`?1\6%@j)'k?1\%@j)'v?1\U%@j)'?1\ %@j)'?1\%@j)'?1\%@j)'?1\(%@j)'?1\|%@j)'?1\%@j)'?1\V%@j)'?1\2%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\{%@j)'?1\w%@j)'?1\1%@j)'?1\!%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\)%@j)'?1\[%@j)'?1\%@j)'?1\%@j)'?1\Z%@j)'?1\&%@j)'?1\D%@j)'?1\$%@j)'?1\%@j)'?1\]%@j)'?1\'%@j)'?1\%@j)'?1\.%@j)'?1\%@j)'?1\~%@j)'?1\-%@j)'?1\%@j)'?1\_%@j)'?1\,%@j)'?1\*%@j)'?1\%@j)'?1\^%@j)'?1\(%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\h%@j)'?1\q%@j)'?1\i%@j)'?1\o%@j)'?1\N%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\T%@j)'?1\Y%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\K%@j)'?1\c%@j)'?1\%@j)'?1\e%@j)'?1\E%@j)'?1\f%@j)'?1\%@j)'?1\v%@j)'?1\\%@j)'?1\^%@j)'?1\]%@j)'?1\_%@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'?1\%@j)'?1\%%@j)'?1\#%@j)'?1\%@j)'?1\ %@j)'?1\I%@j)'?1\)%@j)'?1\%@j)'?1\%@j)'@?1\%@j)'A?1\/%@j)'B?1\O%@j)'C?1\%@j)'D?1\%@j)'E?1\%@j)'F?1\%@j)'G?1\ %@j)'H?1\%@j)'I?1\%@j)'K?1\}%@j)'L?1\+%@j)'M?1\m%@j)'N?1\?%@j)'O?1\l%@j)'P?1\ %@j)'Q?1\%@j)'R?1\u%@j)'S?1\v%@j)'T?1\d%@j)'V?1\n%@j)'W?1\%@j)'X?1\%@j)'Y?1\%@j)'Z?1\%@j)'[?1\%@j)'\?1\ %@j)']?1\%@j)'^?1\Y%@j)'_?1\f%@j)'a?1\%@j)'b?1\%@j)'c?1\t%@j)'d?1\%@j)'e?1\%@j)'f?1\a%@j)'g?1\j%@j)'h?1\%@j)'i?1\?%@j)'j?1\F%@j)'l?1\H%@j)'m?1\G%@j)'n?1\b%@j)'o?1\C%@j)'p?1\%@j)'q?1\%@j)'r?1\A%@j)'s?1\B%@j)'t?1\%@j)'u?1\M%@j)'w?1\X%@j)'x?1\W%@j)'y?1\J%@j)'z?1\s%@j)'{?1\%@j)'|?1\%@j)'}?1\%@j)'~?1\%@j)'?1\U%@j)'?1\%@j)'?1\ %@j)'?1\%@j)'?1\ %@j)'?1\ %@j)'?1\%@j)'?1\%@j)'?1\g%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\,%@j)'?1\-%@j)'?1\.%@j)'?1\/%@j)'?1\x%@j)'?1\2y%@j)'?1\z%@j)'?1\@%@j)'?1\u%@j)'?1\0%@j)'?1\Q%@j)'?1\R%@j)'?1\S%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\!%@j)'?1\L%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\p%@j)'?1\V%@j)'?1\%@j)'?1\%@j)'?1\P%@j)'?1\%@j)'?1\}%@j)'?1\~%@j)'?1\x%@j)'?1\y%@j)'10 yz\9:;<=>WPtl AN^5f=1j<I>a썞xL=1j<I>a썞xLb1A b ;'^(E} ޼lS43mA1\vp,Eўj nA1\xSu_{i֊vl@;:E"1 ;ze_J'sӓ43mA1\,V͵ tynA1\āMnM[_+rb7"1a];9SDKT,y<43mA1\RGo͔%nA1\|tSJiAj́cS"1( `_b8;BK\8VM#k'w43mA1\<9d67, nA1\:) $%R'ɈW=6E"1( ^de}~c;W0~nIV#Q43mA1\RGo͔%nA1\|tSJiAj́cS"1C2g?1\\%@j)'h?1\T%@j)'f?1\[%@j)'d?1\r%@j)'c?1\$%@j)'Y?1\+%@j)'S?1\4%@j)'F?1\*%@j)'D?1\&%@j)'B?1\Z%@j)'A?1\6%@j)'@?1\U%@j)'>?1\ %@j)'=?1\%@j)'<?1\%@j)'G?1\%@j)'H?1\%@j)'I?1\)%@j)'J?1\[%@j)'K?1\%@j)'L?1\%@j)'M?1\Z%@j)'N?1\&%@j)'O?1\D%@j)'Q?1\$%@j)'R?1\%@j)'T?1\]%@j)'U?1\'%@j)'V?1\%@j)'W?1\.%@j)'X?1\%@j)'Z?1\~%@j)'\?1\-%@j)']?1\%@j)'^?1\_%@j)'_?1\,%@j)'`?1\*%@j)'a?1\ %@j)'?1\#%@j)'?1\I%@j)'g?1\)%@j)'?1\%@j)'j?1\/%@j)'l?1\O%@j)'m?1\%@j)'n?1\%@j)'p?1\ %@j)'r?1\+%@j)'u?1\m%@j)'v?1\?%@j)'w?1\}%@j)'y?1\l%@j)'z?1\ %@j)'{?1\%@j)'}?1\%@j)'~?1\^%@j)'?1\(%@j)'?1\%@j)'b?1\%@j)'?1\'%@j)'?1\(%@j)'?1\%@j)'?1\ %@j)' ?1\%@j)':?1\%@j)'E?1\%@j)'P?1\%@j)'[?1\%@j)'q?1\%@j)'|?1\%@j)'?1\%@j)' ?1\|%@j)' ?1\%@j)'?1\V%@j)'"?1\2%@j)'-?1\%@j)'4?1\%@j)'5?1\%@j)'6?1\%@j)'7?1\{%@j)'8?1\w%@j)'9?1\1%@j)';?1\!%@j)'??1\%@j)'C?1\%@j)'e?1\%@j)'i?1\h%@j)'k?1\q%@j)'o?1\i%@j)'s?1\o%@j)'t?1\N%@j)'x?1\%@j)'?1\%@j)'?1\%@j)'?1\T%@j)'?1\Y%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\K%@j)' ?1\c%@j)'?1\%@j)'?1\e%@j)'?1\E%@j)'?1\f%@j)'?1\%@j)'?1\v%@j)'?1\\%@j)'?1\^%@j)'?1\]%@j)'?1\_%@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'?1\ %@j)'?1\%@j)'?1\%%@j)'?1\u%@j)' ?1\v%@j)'!?1\d%@j)'#?1\n%@j)'$?1\f%@j)'%?1\%@j)'&?1\%@j)''?1\t%@j)'(?1\%@j)')?1\%@j)'*?1\a%@j)'+?1\j%@j)',?1\%@j)'.?1\?%@j)'/?1\F%@j)'0?1\H%@j)'1?1\G%@j)'2?1\b%@j)'31de_`^a]bc8}~dsIAf2$ǥ.Bij<,Q]CB4 <,Q]CB4 $:YB}Ep4=g}H ꩤl Empty002fjjAO}kP^ӌIDt=0W[HUW3=0W[HUW3$yS*ĞB?\}=0TMH0ޯ%=0TMH0ޯ%$;(UF`4:=g}H ꩤl Empty002f$$TIDq.XypP~aZI a>o>DC ~>o>DC ~$\ڷ!Hctذ>Bij>Bij$<DK.=<=]MDNc SpawnRatefi&FE ֢! p]wTFBY?ʓ>-OOLjT?ʓ>-OOLjT$C;ΕGbT8?o w TM*AT?o w TM*AT9$false?w$C~Nvێ?w$C~Nvێ$HPKt~]^)+N:<_߱eParticleStatef_DY~AD&MHFx%HzD'>!ٳy@7!D J(@7!D J($mC7yHLw-#Z@(IeAmo^@(IeAmo^$true@lꭇWB5$0@lꭇWB5$0$FOHMu5L]ۻB˭InitializeParticlef-sLl  #"G_!AyA)MBqAyA)MBq$ \O!vA=>A؝f>zA=>A؝f>z$Dm"h~MiF]5wO ParticleOwnerPositionf!?A(`]j#wF7ABvH0BvH0$l.hH=bBpvb vF Bpvb vF $WnHrv@dE2]y\@8Sf r? EmitterStatef'qv^!B?I)\4oNhB C{ɾ&+Ab"C{ɾ&+Ab"$k9KH 9CgqO;[6CgqO;[6qiC39G6pSC39G6pSO$falseCPG)CPӟCPG)CPӟQ$falseC*@IǗC*@IǗNewEnumerator0C 0-/Q\KGC 0-/Q\KGNewEnumerator1C  AEa"EC  AEa"E%NewEnumerator0CF[k>Dy:nCF[k>Dy:n(NewEnumerator0C2?ͧ$)KYC2?ͧ$)KYnNewEnumerator0C @dL"dC @dL"dp$falseCo|ʰ-[E3Q& Co|ʰ-[E3Q& :$falseC;ΕGbT8C;ΕGbT8$?ʓ>-OOLjT]L2~N,XJVTorusLocationfmGGb=f>/P t]'D^6,Dm"h~MiFDm"h~MiF$A=>A؝f>zDAޕ*47DAޕ*47-$falseDqެ-F T ScratchModule_01f&?@fa[-pFp~ωG5.:EWO,VjEWO,Vj$K&vN|5zXEi1p@e"AEi1p@e"A$y}7B.ތF}];0yM0\/SolveForcesAndVelocityfG֨ yIB)|}*PFgRA7<)pFOHMu5LFOHMu5L$@lꭇWB5$0F%qAmF%qAmh$falseF3M94VF3M94V$falseF "JR 'F "JR '$ _J8Bl8پYn,i1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'LMSampleColorCurvef%N>3JHa>c%O1,G|{IMeJG|{IMeJli=E?Lˀ(<GH 3N̐!GH 3N̐!`$HZԓF9+Ge~$MNgnGe~$MNgn>$L $@%@j)'LMSampleColorCurvef%N>3JHa>c%O1,I|{IMeJI|{IMeJli=E?Lˀ(<IH 3N̐!IH 3N̐!`$JZԓF9+Ie~$MNgnIe~$MNgn>$L $@%@j)'LMSampleColorCurvef%N>3JHa>c%O1,K|{IMeJK|{IMeJli=E?Lˀ(<KH 3N̐!KH 3N̐!`$LZԓF9+Ke~$MNgnKe~$MNgn>$L $@-OOLjTMʓ>-OOLjT$SM~ sH*Mo w TM*ATMo w TM*AT9$falseMw$C~NvێMw$C~Nvێ$HPKt~]^)+N:<_߱eParticleStatef_nELk+I\!)Fx%HzD'>!ٳyN7!D J(N7!D J($xC7yHLw-#ZN(IeAmo^N(IeAmo^$trueNlꭇWB5$0NlꭇWB5$0$[\$I+>RM]~0$AG7'wXZCurlNoiseForcefuH`x LrqdF)\35A hOo3C-<@Oo3C-<@$[! _mEv<)O!KO-)LrO!KO-)LrJiOעBռ> 1OעBռ> 1IiOp.' @-OOLjT] P:pAuQ׻ GridLocationfX?jG1҃ L#R!NkWbeT!J}y%T!J}y%$w.hH=bTI(1-LbH/TI(1-LbH/,$falseT;ȋHBD;X(T;ȋHBD;X(NewEnumerator0T #MIFmT #MIFm$trueTY u3XNA~TY u3XNA~$j+McvWvH0]L2~N,XJVTorusLocationf_*Z:O, LkvP 8,ydE*FxU\a@KJF_U\a@KJF_$V=>A؝f>zUfD9H %-UfD9H %--$falseUxG*UxG*P$falseU6ڧ)K JU6ڧ)K J4$falseUO?EUtGE.|UO?EUtGE.|NewEnumerator0U KCgyU KCgyNewEnumerator0UNNr*MeFW#!UNNr*MeFW#!$U_(ID8?M6]y]ۻB˭InitializeParticlef%4VzHPi- #"G_!VyA)MBqVyA)MBq$ \O!vV=>A؝f>zV=>A؝f>z$U\a@KJF_]5wO ParticleOwnerPositionfED a#wF7AWvH0WvH0$TY u3XNA~Wpvb vF Wpvb vF $WnHrv@dE2]y\@8Sf r? EmitterStatefE6WK8׭P)\4oNhB X{ɾ&+Ab"X{ɾ&+Ab"$v9KH 9XgqO;[6XgqO;[6qiX39G6pSX39G6pSO$falseXPG)CPӟXPG)CPӟQ$falseX*@IǗX*@IǗNewEnumerator0X 0-/Q\KGX 0-/Q\KGNewEnumerator1X  AEa"EX  AEa"E%NewEnumerator0XF[k>Dy:nXF[k>Dy:n(NewEnumerator0X2?ͧ$)KYX2?ͧ$)KYnNewEnumerator0X @dL"dX @dL"dp$falseXo|ʰ-[E3Q& Xo|ʰ-[E3Q& :$falseX;ΕGbT8X;ΕGbT8$SLlh"M]3>F T ScratchModule_02fb=EM;pFp~ωG5.:YWO,VjYWO,Vj$K&vN|5zXYi1p@e"AYi1p@e"A$y}7B.ތF}];0yM0\/SolveForcesAndVelocityfaDoI"O>PFgRA7<)pZOHMu5LZOHMu5L$R;,/$O٩-Z%qAmZ%qAmh$falseZ3M94VZ3M94V$falseZ "JR 'Z "JR '$ _J8Bl8پYn]~0$AG7'wXZCurlNoiseForce001fRcM/F)\RM[\$I+>RM$NlꭇWB5$0[w`L?FKbNǃ5[w`L?FKbNǃ5Ji[b}La:)p[b}La:)pIi[y$GSmA[y$GSmAHi[p'glL4fM[p'glL4fM3$false[7eo>DC ~]MDNc SpawnRatefi&FE ֢! p]wTFBY]ʓ>-OOLjT]ʓ>-OOLjT$a;ΕGbT8]o w TM*AT]o w TM*AT9$false]w$C~Nvێ]w$C~Nvێ$HPKt~]^)+N:<_߱eParticleStatef nXKCRqn0Fx%HzD'>!ٳy^7!D J(^7!D J($C7yHLw-#Z^(IeAmo^^(IeAmo^$true^lꭇWB5$0^lꭇWB5$0$dtTXL+"]ۻB˭InitializeParticlef-sLl  #"G_!_yA)MBq_yA)MBq$ \O!v_=>A؝f>z_=>A؝f>z$bm"h~MiF]5wO ParticleOwnerPositionf!?A(`]j#wF7A`vH0`vH0$.hH=b`pvb vF `pvb vF $WnHrv@dE2]y\@8Sf r? EmitterStatef'qv^!B?I)\4oNhB a{ɾ&+Ab"a{ɾ&+Ab"$9KH 9agqO;[6agqO;[6qia39G6pSa39G6pSO$falseaPG)CPӟaPG)CPӟQ$falsea*@IǗa*@IǗNewEnumerator0a 0-/Q\KGa 0-/Q\KGNewEnumerator1a  AEa"Ea  AEa"E%NewEnumerator0aF[k>Dy:naF[k>Dy:n(NewEnumerator0a2?ͧ$)KYa2?ͧ$)KYnNewEnumerator0a @dL"da @dL"dp$falseao|ʰ-[E3Q& ao|ʰ-[E3Q& :$falsea;ΕGbT8a;ΕGbT8$]ʓ>-OOLjT]L2~N,XJVTorusLocationfmGGb=f>/P t]'D^6,bm"h~MiFbm"h~MiF$_=>A؝f>zbAޕ*47bAޕ*47-$falsebqެ-F T ScratchModulefr5No@LpFp~ωG5.:cWO,VjcWO,Vj$K&vN|5zXci1p@e"Aci1p@e"A$y}7B.ތF}]~0$AG7'wXZCurlNoiseForcef54t?Lf7F)\ В>iJcA띝dtTXL+"dtTXL+"$^lꭇWB5$0dR,JfP}ÒdR,JfP}ÒJid: w򆙕LC%ad: w򆙕LC%aIid +ED@ʆd +ED@ʆHidU~BIE{\,dU~BIE{\,3$falsed*5vMd*[< d*5vMd*[< NewEnumerator1dE!AE4.dE!AE4.$trued'8xRHVZd'8xRHVZ$eOHMu5L];0yM0\/SolveForcesAndVelocityf4?HI9}SƆPFgRA7<)peOHMu5LeOHMu5L$d'8xRHVZe%qAme%qAmh$falsee3M94Ve3M94V$falsee "JR 'e "JR '$ _J8Bl8پYn%%jfMКBK,Y5ahIOox&fWM_fWM_$i~Fe ]b1}BkWB?%%j2xypAMPM=MDMf`ғ)oAq}xm?3!NFwrg9OAo+g9OAo+$m>H@*k%@j)'d fORd_mPw!ޢBjtbMhLlR`K1@ hLlR`K1@ i_|d}JZ|ii%@j)'d feh͌7$4BØOPrpwBDO$'SFi-JIQj ,ni-JIQj ,niN? Ũ@9?1\%%jf!;LxhpXFu))|jqAU }jqAU }$I0%Jp?1\%%jf?:&LOP2\GN۱ k9KH 9k9KH 9$C{ɾ&+Ab"%%jf  UC~ZJM8yS*ĞB?\}yS*ĞB?\}$=0W[HUW3?1\%%jfh]Kp*Dw0J9LBA 17ez/tOOER(z/tOOER($\t\LuR%%jfMКBK,Y5ahIOox&{WM_{WM_$i~Fe ]b1}BkWB?%%j2xypAMPM=MDMf`ғ)oAq}xm?3!NFwr|9OAo+|9OAo+$m>H@*k%@j)'d fORd_mPw!ޢBjtbM}LlR`K1@ }LlR`K1@ i_|d}JZ|ii%@j)'d feh͌7$4BØOPrpwBDO$'SF~-JIQj ,n~-JIQj ,niN? Ũ@9?1\%%jf!;LxhpXFu))|qAU }qAU }$I0%Jp?1\%%jf?:&LOP2\GN۱ 9KH 99KH 9$a{ɾ&+Ab"%%jf  UCfD5I>pI7B R{u-NS&Zc{u-NS&Zc$A$1.01.0HZԓF9+[F1IJڠ`F[F1IJڠ`F:B$1.01.0 Ů'\O Ů'\O Ů'\OOResult$$FcLEbfA]-mpF0]-mpF0'>fj+B4s&)'` DH.>u; cKЀܲ ; cKЀܲ $A$1.01.0GLM=^in_C點^in_C點OResult${u-NS&ZcfjuE唕f 6F|`{u-NS&Zc{u-NS&Zc$A$1.01.0^in_C點[F1IJڠ`F[F1IJڠ`F:B$1.01.01<.&;K[OI\/ Ů'\O Ů'\OOResult$[F1IJڠ`F]-mpF0]-mpF0'>fD5I>pI7B R{u-NS&Zc{u-NS&Zc$A$1.01.0JZԓF9+[F1IJڠ`F[F1IJڠ`F:B$1.01.0 Ů'\O Ů'\O Ů'\OOResult$$FcLEbfA]-mpF0]-mpF0'>fj+B4s&)'` DH.>u; cKЀܲ ; cKЀܲ $A$1.01.0GLM=^in_C點^in_C點OResult${u-NS&ZcfjuE唕f 6F|`{u-NS&Zc{u-NS&Zc$A$1.01.0^in_C點[F1IJڠ`F[F1IJڠ`F:B$1.01.01<.&;K[OI\/ Ů'\O Ů'\OOResult$[F1IJڠ`F]-mpF0]-mpF0'>fD5I>pI7B R{u-NS&Zc{u-NS&Zc$A$1.01.0LZԓF9+[F1IJڠ`F[F1IJڠ`F:B$1.01.0 Ů'\O Ů'\O Ů'\OOResult$$FcLEbfA]-mpF0]-mpF0'>fj+B4s&)'` DH.>u; cKЀܲ ; cKЀܲ $A$1.01.0GLM=^in_C點^in_C點OResult${u-NS&Zc1?1\%@j)'f@E|dnz@oM9fjD\5qZf F!nqZf F!n$u2B Jgvw1?1\%@j)'ff>XbI1ZzЮ !CGsI0%JpI0%Jp$jqAU }1?1\%@j)'fP첒Ciw=и;7 J)TW&HPKt~̎HPKt~$?w$C~Nvێ1?1\%@j)'f9LGᢖ 4i HclepD5qrUm!I(P!I(P$6տHsH1?1\%@j)'fPHh7F'X6dO, y}7B.ތF}y}7B.ތF}$Ei1p@e"A1?1\%@j)'fԬ|kVB,Җ@`ʮ^Gcr=/`S V~lArExS V~lArEx$vX+JG˭~1?1\%@j)'fԬ|kVB,Җ@`ʮ^Gcr=/`S V~lArExS V~lArEx$vX+JG˭~1?1\%@j)'fԬ|kVB,Җ@`ʮ^Gcr=/`S V~lArExS V~lArEx$vX+JG˭~1?1\%@j)'f}DO{|ɢ1PGxT ZbfMm xiZbfMm xi$ڡFI=bѶ 1?1\%@j)'ff>XbI1ZzЮ !CGsI0%JpI0%Jp$uqAU }1?1\%@j)'fP첒Ciw=и;7 J)TW&HPKt~̖HPKt~$Mw$C~Nvێ1?1\%@j)'fw0~6FO HclepD5qrUm!I(P!I(P$7p;q"PON1?1\%@j)'f_jAAVd1}F'X6dO, y}7B.ތF}y}7B.ތF}$Yi1p@e"A1?1\%@j)'fyO?B->NS;3BaC~S;3BaC~$95#~d9dMhZ1?1\%@j)'fB|EDVL'*(Ay?XbI1ZzЮ !CGsI0%JpI0%Jp$qAU }1?1\%@j)'fP첒Ciw=и;7 J)TW&HPKt~̝HPKt~$]w$C~Nvێ1?1\%@j)'f9LGᢖ 4i HclepD5qrUm!I(P!I(P$8տHsH1?1\%@j)'ff IoyLF'X6dO, y}7B.ތF}y}7B.ތF}$ci1p@e"A52(z_CNdcp*G̮lfDv-KO uJEC; db1}BkWBb1}BkWB$fWM_|5@7E6#^rP|5@7E6#^rPk$ E`AS5z_CNd\$FKX\$FKX'>j;уNQL/,j;уNQL/,dDefault value for Module.Particles.Direction if no other module has set it previously in the stack.$0.000,0.000,0.000cp*G̮lfč&'ИLp\ʲQF"DVcm>H@*m>H@*$g9OAo+ڛ(sB5W֡ڛ(sB5W'>52(:}OebR|oDw]MUjf$AMj5P~2NOBJ"%6^%$DF!)]%$DF!)]$DKpqC_m]IMRlؗIMRlؗ*$ ,(J7޿r:}Oe ^@HM]8[d ^@HM]8[d'>ˏce1CeU:pҢˏce1CeU:p\Default value for Particles.Position if no other module has set it previously in the stack.$0.000,0.000,0.000bR|oDw]MUj52dFɓv_a_ hvF81SCcTv=Oy/ ۯ78AL#Oo MPLܗ{>30,M!x2*֙L3n(mifotAE;㉇I}3 }cf_EY|Cv$6ܻ@u~ *Dj*3~ ?DC3By  HVy$>3By  HVcDefault value for Module.New Audio Spectrum if no other module has set it previously in the stack.i_ hvF81GLM=GLM=%$ ; cKЀܲ  ۯ78AL#OzwGMrzwGMrdDefault value for Module.NormalaizedPosition if no other module has set it previously in the stack.$ 0.000000Tv=Oy/-PGU{Dg-PGU{Dgn!9373EC004ED3200C31A775A89110CF78Module.Radius$ *OB hV >30,M!x29aAMJDp 9aAMJDp ]Default value for Particles.Direction if no other module has set it previously in the stack.$0.000,0.000,0.000o MPLܗ{ý`MJʣý`MJD!0D8CB9E649A8E1D8960013A5BB451347 Module.Colori C?Dgv<fotAE;/rO^/rO^WDefault value for Module.Radius if no other module has set it previously in the stack.$ 0.000000*֙L3n(miMF$9W{MF$9W{'>aRM”jWs2aRM”jWs2VDefault value for Module.Color if no other module has set it previously in the stack.i㉇I}3 }c52dFɓv_a_ hvF81SCcTv=Oy/ ۯ78AL#Oo MPLܗ{>30,M!x2*֙L3n(mifotAE;㉇I}3 }cf_EY|Cv$6ܻ@u~ *Dj*3~ ?DC3By  HVy$>3By  HVcDefault value for Module.New Audio Spectrum if no other module has set it previously in the stack.i_ hvF81GLM=GLM=%$ ; cKЀܲ  ۯ78AL#OzwGMrzwGMrdDefault value for Module.NormalaizedPosition if no other module has set it previously in the stack.$ 0.000000Tv=Oy/-PGU{Dg-PGU{Dgn!9373EC004ED3200C31A775A89110CF78Module.Radius$ *OB hV >30,M!x29aAMJDp 9aAMJDp ]Default value for Particles.Direction if no other module has set it previously in the stack.$0.000,0.000,0.000o MPLܗ{ý`MJʤý`MJD!0D8CB9E649A8E1D8960013A5BB451347 Module.Colori C?Dgv<fotAE;/rO^/rO^WDefault value for Module.Radius if no other module has set it previously in the stack.$ 0.000000*֙L3n(miMF$9W{MF$9W{'>aRM”jWs2aRM”jWs2VDefault value for Module.Color if no other module has set it previously in the stack.i㉇I}3 }c52dFɓv_a_ hvF81SCcTv=Oy/ ۯ78AL#Oo MPLܗ{>30,M!x2*֙L3n(mifotAE;㉇I}3 }cf_EY|Cv$6ܻ@u~ *Dj*3~ ?DC3By  HVy$>3By  HVcDefault value for Module.New Audio Spectrum if no other module has set it previously in the stack.i_ hvF81GLM=GLM=%$ ; cKЀܲ  ۯ78AL#OzwGMrzwGMrdDefault value for Module.NormalaizedPosition if no other module has set it previously in the stack.$ 0.000000Tv=Oy/-PGU{Dg-PGU{Dgn!9373EC004ED3200C31A775A89110CF78Module.Radius$ *OB hV >30,M!x29aAMJDp 9aAMJDp ]Default value for Particles.Direction if no other module has set it previously in the stack.$0.000,0.000,0.000o MPLܗ{ý`MJʥý`MJD!0D8CB9E649A8E1D8960013A5BB451347 Module.Colori C?Dgv<fotAE;/rO^/rO^WDefault value for Module.Radius if no other module has set it previously in the stack.$ 0.000000*֙L3n(miMF$9W{MF$9W{'>aRM”jWs2aRM”jWs2VDefault value for Module.Color if no other module has set it previously in the stack.i㉇I}3 }c52(<\@Xk+˄t,IC$f %6OE[ճ_cIޟd.}PqjCr[e}PqjCr[e$q;Aj.^?Έ[JֻB`?Έ[JֻB`k$ 1G~_ 4<\@Xk+#uJ糸#uJ糸'>jHVhjHVhdDefault value for Module.Particles.Direction if no other module has set it previously in the stack.$0.000,0.000,0.000˄t,IC$fڪxs_G)Ǿu*fLB=QAF9,4CfL9,4CfL$rFkG AmJ:H6e縧J:H6e'>52(KHVGatڰJiKf%!BqlCP~ߘ8KeuH?M6]y?M6]y$UNNr*MeFW#!]AlGa]AlGa*$ Zx_=Bq<)KHVGb8{_L)a&b8{_L)a&'>zwGK%-,zwGK%-,\Default value for Particles.Position if no other module has set it previously in the stack.$0.000,0.000,0.000atڰJiK52(z_CNdcp*G̮lfDv-KO uJEC; db1}BkWBb1}BkWB${WM_|5@7E6#^rP|5@7E6#^rPk$ E`AS5z_CNd\$FKX\$FKX'>j;уNQL/,j;уNQL/,dDefault value for Module.Particles.Direction if no other module has set it previously in the stack.$0.000,0.000,0.000cp*G̮lfč&'ИLp\ʲQF"DVcm>H@*m>H@*$|9OAo+ڛ(sB5W֪ڛ(sB5W'>52(:}OebR|oDw]MUjf$AMj5P~2NOBJ"%6^%$DF!)]%$DF!)]$bKpqC_m]IMRlؗIMRlؗ*$ ,(J7޿r:}Oe ^@HM]8[d ^@HM]8[d'>ˏce1CeU:pҫˏce1CeU:p\Default value for Particles.Position if no other module has set it previously in the stack.$0.000,0.000,0.000bR|oDw]MUjf MID q<ɩr@Qqai~Fe ]i~Fe ]$fWM_uTޞ Adkqmu2B Jgvwu2B Jgvw$qZf F!n㡥Kf-c?yE`AS5E`AS5%$ |5@7E6#^rPyBJ-J^ !uZLJi/uZLJi/'>|sDXhnu9f- ,K.)W f:IqAoCNR0y[oCNR0y[$DKpqC_m]D_Q5CF0OJ,(J7޿r,(J7޿r$ IMRlؗ-OJ¬*5o-|N{4Oo-|N{4O$6^5L i,V|FvK&DtIG~WCqf8.IG~WCqf8.'>BA+sgfI:'0 aHvC<=xj+Mcvj+Mcv$l.hH=bKw5KkVѼD]F/ VѼD]F/ !410DF1C24DBAD57EE4B2C99C05C900CA$InitializeParticle.Write SpriteSize$ true"r9C+ϾDMJcR4DMJcR4!9B92FCA541F2CF41DBE346BF63F0C1A3InitializeParticle.Write Color$ trueIB+KOC~A1')FwfZA1')FwfZ!C3B110E7431866D7EB6CF88CCEFC13FB"InitializeParticle.Write Position$ falseIb섍EkhtWnHrv@dE2WnHrv@dE2!D9CA4424477BB10DD0B899BA8A45F563InitializeParticle.Position$ Bpvb vF uCLiD@RC)" \O!v \O!v$AyA)MBq8+$@2@WdKL=ڮ@WdKL='>=FJF4)f&(I$ۘF΅'E:W 6) _J8Bl8پYn _J8Bl8پYn$F "JR '\̘IX7)_|d}JZ|ii_|d}JZ|iix!6EF707A04131B6F52191548A61D8FF83ScratchModule_01.Colori hLlR`K1@ $״rځMյF(N? Ũ@9N? Ũ@9y!F7035FC14C45EC3342A2F59BDB408956$ScratchModule_01.New Audio Spectrumi i-JIQj ,nC7G/𵅫K&vN|5zXK&vN|5zX$EWO,Vj9{5G?NhMu=fhAJ` u=fhAJ` '>:B V f"ᯖ}wFܰ@prLe#bzDJ]~]zDJ]~]$n[4P@E)h#7E꜉NvX+JG˭~vX+JG˭~$S V~lArEx6!EG7 $FcLEbfA$FcLEbfA*$  Ů'\OƐMD(n:[L $@q*9K$Vf"ᯖ}wFܰ@prLe#bzDJ]~]zDJ]~]$o[4P@E)h#7E꜉NvX+JG˭~vX+JG˭~$S V~lArEx6!EG7 $FcLEbfA$FcLEbfA*$  Ů'\OƐMD(n:[L $@q*9K$Vf"ᯖ}wFܰ@prLe#bzDJ]~]zDJ]~]$p[4P@E)h#7E꜉NvX+JG˭~vX+JG˭~$S V~lArEx6!EG7 $FcLEbfA$FcLEbfA*$  Ů'\OƐMD(n:[L $@q*9K$VfBc-CY<#s,D[JCwɊI:\$+`CwɊI:\$+`$q;Aj.^Q%5AHVڡFI=bѶ ڡFI=bѶ $ZbfMm xic@*grxG1G~_ 41G~_ 4%$ ?Έ[JֻB``tD~l+L~;GA3ҳL~;GA3'>?6/.jKReft*A? B0 aHvC<=xj+Mcvj+Mcv$TY u3XNA~Kw5KkVѼD]F/ VѼD]F/ !410DF1C24DBAD57EE4B2C99C05C900CA$InitializeParticle.Write SpriteSize$ true"r9C+ϾDMJcR4DMJcR4!9B92FCA541F2CF41DBE346BF63F0C1A3InitializeParticle.Write Color$ trueIB+KOC~A1')FwfZA1')FwfZ!C3B110E7431866D7EB6CF88CCEFC13FB"InitializeParticle.Write Position$ falseIb섍EkhtWnHrv@dE2WnHrv@dE2!D9CA4424477BB10DD0B899BA8A45F563InitializeParticle.Position$ Wpvb vF uCLiD@RC)" \O!v \O!v$VyA)MBq8+$@2@WdKL=ڴ@WdKL='>=FJF4)fB>'N$@F΅'E:W 6) _J8Bl8پYn _J8Bl8پYn$Z "JR 'VQOV&U0HV_|d}JZ|ii_|d}JZ|ii}!DBF60EF54DE287DCF17C0A95DD87B10FScratchModule_02.Colori sLlR`K1@ mWLx`G N? Ũ@9N? Ũ@9~!A1FD559B49EBC67192B86B82728913C5$ScratchModule_02.New Audio Spectrumi t-JIQj ,n>4iXBsPK&vN|5zXK&vN|5zX$YWO,Vjb} LFu=fhAJ` u=fhAJ` '>VRgEM_1ɼfGkZE g TiAz U_(ID8U_(ID8$UNNr*MeFW#!w |A%aFZx_=Bq<)Zx_=Bq<)$ ]AlGaoE*Y*GWG-=3GWG-=3$7%O_v`tNpGHe~wA_3pf MID q<ɩr@Qqai~Fe ]i~Fe ]${WM_uTޞ Adkqmu2B Jgvwu2B Jgvw$qZf F!n㡥Kf-c?yE`AS5E`AS5%$ |5@7E6#^rPyBJ-J^ !uZLJi/uZLJi/'>|sDXhnu9f- ,K.)W f:IqAoCNR0y[oCNR0y[$bKpqC_m]D_Q5CF0OJ,(J7޿r,(J7޿r$ IMRlؗ-OJ¬*5o-|N{4Oo-|N{4O$8^5L i,V|FvK&DtIG~WCqf8.IG~WCqf8.'>BA+sgfI:'0 aHvC<=xj+Mcvj+Mcv$.hH=bKw5KkVѼD]F/ VѼD]F/ !410DF1C24DBAD57EE4B2C99C05C900CA$InitializeParticle.Write SpriteSize$ true"r9C+ϾDMJcR4DMJcR4!9B92FCA541F2CF41DBE346BF63F0C1A3InitializeParticle.Write Color$ trueIB+KOC~A1')FwfZA1')FwfZ!C3B110E7431866D7EB6CF88CCEFC13FB"InitializeParticle.Write Position$ falseIb섍EkhtWnHrv@dE2WnHrv@dE2!D9CA4424477BB10DD0B899BA8A45F563InitializeParticle.Position$ `pvb vF uCLiD@RC)" \O!v \O!v$_yA)MBq8+$@2@WdKL=ڹ@WdKL='>=FJF4)fA,:HkF΅'E:W 6) _J8Bl8پYn _J8Bl8پYn$e "JR '\̘IX7)_|d}JZ|ii_|d}JZ|iiui }LlR`K1@ $״rځMյF(N? Ũ@9N? Ũ@9vi ~-JIQj ,nC7G/𵅫K&vN|5zXK&vN|5zX$cWO,Vj9{5G?NhMu=fhAJ` u=fhAJ` '>:B V f 4UF{RP|Jx+x*OB hV *OB hV $ -PGU{Dg1<.&;K[OI\/1<.&;K[OI\/$ [F1IJڠ`Ff] .{E}=P~u>C!*GC?Dgv<C?Dgv<i ý`MJp@kG/ p@kG/ i Qb9=B>7W"fvMONJ 2 mtC}&EvQb9=B>7W"ĽQb9=B>7W"i p@kG/ =E?Lˀ(<=E?Lˀ(<i G|{IMeJf 4UF{RP|Jx+x*OB hV *OB hV $ -PGU{Dg1<.&;K[OI\/1<.&;K[OI\/$ [F1IJڠ`Ff] .{E}=P~u>C!*GC?Dgv<C?Dgv<i ý`MJp@kG/ p@kG/ i Qb9=B>7W"fvMONJ 2 mtC}&EvQb9=B>7W"Qb9=B>7W"i p@kG/ =E?Lˀ(<=E?Lˀ(<i I|{IMeJf 4UF{RP|Jx+x*OB hV *OB hV $ -PGU{Dg1<.&;K[OI\/1<.&;K[OI\/$ [F1IJڠ`Ff] .{E}=P~u>C!*GC?Dgv<C?Dgv<i ý`MJp@kG/ p@kG/ i Qb9=B>7W"fvMONJ 2 mtC}&EvQb9=B>7W"Qb9=B>7W"i p@kG/ =E?Lˀ(<=E?Lˀ(<i K|{IMeJ1V SG<TLE'_Glͅ$AYMAJS4p<wE'GYDZ YMˋ+JXՁv<g}H ꩤlYM ! F>$5>2BMG{ZVNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterSpawnScripto M-RعeQ+(1&Emitter.LocalspaceCPUSim<A1\xSu_{i֊vl@;:EJ1JQ1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2BMG16q%@j)'r%@j)'s%@j)' t%@j)'%@j)'%@j)'%@j)'1 \?@E?PCG[WNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterUpdateScripto M-RعeQ+(1&Emitter.LocalspaceCPUSim<A1\āMnM[_+rb7J1JQ1\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2BMG1Mu%@j)'v%@j)'w%@j)'x%@j)'$y%@j)'(z%@j)'0{%@j)'4|%@j)'8}%@j)'<~%@j)'@%@j)'D%@j)'H%@j)'L%@j)'P%@j)'\%@j)'`%@j)'l%@j)'p%@j)'t%@j)'x%@j)'|%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'1\????@????@@zC<FzD@pB????? AXTNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:GPUComputeScripta! o M-RعeQ+(1CInterpolatedSpawnEmitter.LocalspaceGPUComputeSimEM<A1\|tSJiAj́cSJ1 )Ji 1\|tSJiAj́cS1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1  S %<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHM1;32{z// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float4 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float4 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float4 Constants_Emitter_TorusLocation_NonUniformScale; float4 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_01_NormalaizedPosition; float Constants_Emitter_ScratchModule_01_Radius; float Emitter_SpawnRate; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; int PREV_Engine_Emitter_PaddingInt32_2; } cbuffer PREV_FNiagaraExternalParameters { float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float4 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float4 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float4 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float4 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_ScratchModule_01_NormalaizedPosition; float PREV_Constants_Emitter_ScratchModule_01_Radius; float PREV_Emitter_SpawnRate; } struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles { float3 Direction; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE { FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles Particles; }; struct FParamMap0_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local { FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; bool LocalSpace; int RandomSeed; float SpawnRate; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_ScratchModule_01 ScratchModule_01; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_ScratchModule_01 ScratchModule_01; FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE SetVariables_619FBC7841F4E96144B94D92F32F22FE; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_01_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant15 = true; float3 Constant16 = float3(0,0,0); float3 Vector_IfResult; if(Constant15) { Vector_IfResult = Constant16; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant21 = true; float3 Constant22 = float3(0,0,0); float3 Vector_IfResult1; if(Constant21) { Vector_IfResult1 = Constant22; } else { Vector_IfResult1 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult1; } void GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant34 = false; int Constant35 = 0; bool Result = NiagaraAll(In_RandomnessMode == Constant35); bool Result1 = Constant34 && Result; int Constant36 = 1; bool Result2 = NiagaraAll(In_RandomnessMode == Constant36); bool Result3 = Result1 || Result2; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant37 = 0; int Constant38 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant37; Seed3_IfResult = Constant38; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant39 = -1; int Constant40 = -1; int Constant41 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result3) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant39; Seed2_IfResult1 = Constant40; Seed3_IfResult1 = Constant41; } NiagaraRandInfo Output1; Output1.Seed1 = Seed1_IfResult1; Output1.Seed2 = Seed2_IfResult1; Output1.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output1; Out_UseDeterministicRandoms = Result3; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant29 = (0); bool Constant30 = false; int Constant31 = 0; int Constant32 = (0); bool Constant33 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(In_Seed, Constant29, In_OverrideSeed, Constant31, Constant32, Constant33, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms, Context); float Result4 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed3; float Result5 = rand_float(Result4, Seed1, Seed2, Seed3); float Result6 = rand_float(Result4); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result5; } else { Random_IfResult = Result6; } float Result7 = In_Min + Random_IfResult; Out_Result = Result7; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant59 = (0); bool Constant60 = false; int Constant61 = 0; int Constant62 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(In_Seed, Constant59, In_OverrideSeed, Constant61, Constant62, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1, Context); float Result9 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed3; float Result10 = rand(Result9, Seed11, Seed21, Seed31); float Result11 = rand(Result9); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result10; } else { Random_IfResult1 = Result11; } float Result12 = In_Min + Random_IfResult1; Out_Result = Result12; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant69 = 1; float Result17 = cos(In_U*(TWO_PI/Constant69)); float Constant70 = 1; float Result18 = sin(In_U*(TWO_PI/Constant70)); float Constant71 = 1; float Result19 = cos(In_V*(TWO_PI/Constant71)); float Constant72 = 1; float Result20 = sin(In_V*(TWO_PI/Constant72)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result17, Result18, Result19, Result20, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context) { int Constant76 = 0; bool Result26 = NiagaraAll(In_SourceSpace == Constant76); int Constant77 = 0; bool Result27 = NiagaraAll(In_DestinationSpace == Constant77); bool Result28 = Result26 && Result27; int Constant78 = 1; bool Result29 = NiagaraAll(In_SourceSpace == Constant78); int Constant79 = 1; bool Result30 = NiagaraAll(In_DestinationSpace == Constant79); bool Result31 = Result29 && Result30; bool Result32 = Result28 || Result31; int Constant80 = 2; bool Result33 = NiagaraAll(In_SourceSpace == Constant80); int Constant81 = 2; bool Result34 = NiagaraAll(In_DestinationSpace == Constant81); bool Result35 = Result33 && Result34; bool Result36 = Result32 || Result35; bool Result37 = Result26 && Result34; bool Result38 = Result33 && Result27; bool Result39 = Result37 || Result38; bool Result40 = In_bLocalSpace && Result39; bool Result41 = Result36 || Result40; bool Result42 = !In_bLocalSpace; bool Result43 = Result26 && Result30; bool Result44 = Result29 && Result27; bool Result45 = Result43 || Result44; bool Result46 = Result42 && Result45; bool Result47 = Result41 || Result46; bool Result48 = In_bLocalSpace && Result43; bool Result49 = Result33 && Result30; bool Result50 = Result48 || Result49; bool Result51 = Result42 && Result38; bool Result52 = Result50 || Result51; float4x4 Matrix_IfResult1; if(Result52) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result47; Out_OutTransform = Matrix_IfResult1; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant75 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant75, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, Context); float3 Result53 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result53; } Out_OutVector = Vector_IfResult2; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant54 = 0; float Constant55 = 999; float Result8 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant54,Constant55); float Constant56 = 1; int Constant57 = 0; bool Constant58 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant57; Override_IfResult = Constant58; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result8, Constant56, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant63 = 0; float Constant64 = 1; float Result13 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant63,Constant64); float Constant65 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result13, Constant65, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant66 = 0; float Constant67 = 1; float Result14 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant66,Constant67); float Constant68 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result14, Constant68, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result15 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result16 = Result15 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result16, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result21 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result22 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result23 = normalize(Result22); float3 Result24 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result25 = normalize(Result24); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result21; Tangent_IfResult = Result23; Normal_IfResult = Result25; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant73 = 0; bool Constant74 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant73, Constant74, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result54 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result55 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result54; int Constant82 = 0; bool Constant83 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant82, Constant83, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant84 = 0; bool Constant85 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant84, Constant85, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result56 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result55; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result56; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context) { Context.MapSpawn.Particles.Direction = Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result57 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result57; float Result58 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant87 = 1e-05; float Result59 = max(Context.MapUpdate.ParticleState.Lifetime, Constant87); float Constant88 = 0.0001; float Result60 = Result59 - Constant88; bool Result61 = NiagaraAll(Result58 < Result60); bool Constant89 = false; bool bool_IfResult; if(Result61) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant89; } float Result62 = Result58 / Result59; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result58; Context.MapUpdate.Particles.NormalizedAge = Result62; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; float Constant99 = 0.0001; float Result63 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant99); float Result64 = Reciprocal(Result63); float3 Result65 = Result64 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result65; float3 Result66 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant100 = 0; float Result67 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant100); float Result68 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result67; float Constant101 = 1; float Result69 = Result68 + Constant101; float3 Result70 = Result66 / Result69; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result70; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result71 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result71; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; Context.MapUpdate.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant102 = float3(0,0,0); float Constant103 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant102; Drag_IfResult = Constant103; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_01_Emitter_Func_(inout FSimulationContext Context) { int Constant104 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.MapUpdate.Constants.Emitter.ScratchModule_01.NormalaizedPosition, Constant104, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result72 = normalize(Context.MapUpdate.Particles.Direction); float3 Result73 = Result72 * Context.MapUpdate.Constants.Emitter.ScratchModule_01.Radius; float3 Result74 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result73; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.MapUpdate.Particles.Position = Result74; Context.MapUpdate.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapSpawn.Engine.DeltaTime = 0.0f; Context.MapSpawn.Engine.InverseDeltaTime = 0.0f; Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 1; Context.MapSpawn.Particles.Lifetime = Constant; float4 Constant1 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant1; float Constant2 = 1; Context.MapSpawn.Particles.Mass = Constant2; float2 Constant3 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant3; float Constant4 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant4; float3 Constant5 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant5; float Constant6 = 0; Context.MapSpawn.Particles.MaterialRandom = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; //End Initialize Parameter Map Defaults bool Constant11 = true; bool Constant12 = true; bool Constant13 = false; bool Constant14 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant11; Context.MapSpawn.InitializeParticle.WriteColor = Constant12; Context.MapSpawn.InitializeParticle.WritePosition = Constant13; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant17 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant17; bool Constant18 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant18; bool Constant19 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant19; bool Constant20 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant20; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; bool Constant23 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant23; float Constant24 = 0; float Constant25 = 1; int Constant26 = -1; int Constant27 = 0; bool Constant28 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant24, Constant25, Constant26, Constant27, Constant28, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant42 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant42; int Constant43 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant43; bool Constant44 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant44; bool Constant45 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant45; float Constant46 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant46; float Constant47 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant47; float Constant48 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant48; float3 Constant49 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant49; float3 Constant50 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant50; float3 Constant51 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant51; bool Constant52 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant52; int Constant53 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant53; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(Context); ExitStatScope(/**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues Context.MapSpawn.Particles.PreviousVelocity = Context.MapSpawn.Particles.Velocity; // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! bool Constant86 = true; Context.MapUpdate.DataInstance.Alive = Constant86; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(4 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant90 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant90; float3 Constant91 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant91; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; float3 Constant92 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant92; float3 Constant93 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant93; float Constant94 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant94; float Constant95 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant95; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.PreviousVelocity; bool Constant96 = true; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant97 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant97; bool Constant98 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant98; EnterStatScope(5 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(6 /**ScratchModule_01_Emitter_Func_*/); ScratchModule_01_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_01_Emitter_Func_*/); //End Update Script! } Buffer CurveLUT_Emitter_Color; float MinTime_Emitter_Color; float MaxTime_Emitter_Color; float InvTimeRange_Emitter_Color; float CurveLUTNumMinusOne_Emitter_Color; float TimeToLUTFraction_Emitter_Color(float T) { return saturate((T - MinTime_Emitter_Color) * InvTimeRange_Emitter_Color); } float SampleCurve_Emitter_Color(float T) { return CurveLUT_Emitter_Color[(uint)T]; } Buffer SpectrumBuffer_Emitter_NewAudioSpectrum; int NumChannels_Emitter_NewAudioSpectrum; int Resolution_Emitter_NewAudioSpectrum; void SampleColorCurve_EmitterColor(in float In_X, out float4 Out_Value) { float RemappedX = TimeToLUTFraction_Emitter_Color(In_X) * CurveLUTNumMinusOne_Emitter_Color; float Prev = floor(RemappedX); float Next = Prev < CurveLUTNumMinusOne_Emitter_Color ? Prev + 1.0 : Prev; float Interp = RemappedX - Prev; Prev *= 4; Next *= 4; float4 A = float4(SampleCurve_Emitter_Color(Prev), SampleCurve_Emitter_Color(Prev + 1), SampleCurve_Emitter_Color(Prev + 2), SampleCurve_Emitter_Color(Prev + 3)); float4 B = float4(SampleCurve_Emitter_Color(Next), SampleCurve_Emitter_Color(Next + 1), SampleCurve_Emitter_Color(Next + 2), SampleCurve_Emitter_Color(Next + 3)); Out_Value = lerp(A, B, Interp); } void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * Resolution_Emitter_NewAudioSpectrum; int MaxIndex = Resolution_Emitter_NewAudioSpectrum - 1; int LowerIndex = floor(FrameIndex); LowerIndex = LowerIndex < Resolution_Emitter_NewAudioSpectrum ? LowerIndex : MaxIndex; LowerIndex = LowerIndex >= 0 ? LowerIndex : 0; int UpperIndex = LowerIndex < MaxIndex ? LowerIndex + 1 : LowerIndex; float Fraction = FrameIndex - LowerIndex; Fraction = Fraction > 1.0 ? 1.0 : Fraction; Fraction = Fraction < 0.0 ? 0.0 : Fraction; float LowerValue = SpectrumBuffer_Emitter_NewAudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_NewAudioSpectrum + LowerIndex); float UpperValue = SpectrumBuffer_Emitter_NewAudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_NewAudioSpectrum + UpperIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void InitConstants(inout FSimulationContext Context) { Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize.xy; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale.xyz; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.ScratchModule_01.NormalaizedPosition = Constants_Emitter_ScratchModule_01_NormalaizedPosition; Context.MapUpdate.Constants.Emitter.ScratchModule_01.Radius = Constants_Emitter_ScratchModule_01_Radius; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; } void InitSpawnVariables(inout FSimulationContext Context) { Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.x = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.y = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.DataInstance.Alive=true; } void LoadUpdateVariables(inout FSimulationContext Context, int InstanceIdx) { Context.MapUpdate.Particles.Age = InputDataFloat(0, 0, InstanceIdx); Context.MapUpdate.Particles.Color.r = InputDataFloat(0, 1, InstanceIdx); Context.MapUpdate.Particles.Color.g = InputDataFloat(0, 2, InstanceIdx); Context.MapUpdate.Particles.Color.b = InputDataFloat(0, 3, InstanceIdx); Context.MapUpdate.Particles.Color.a = InputDataFloat(0, 4, InstanceIdx); Context.MapUpdate.Particles.Direction.x = InputDataFloat(0, 5, InstanceIdx); Context.MapUpdate.Particles.Direction.y = InputDataFloat(0, 6, InstanceIdx); Context.MapUpdate.Particles.Direction.z = InputDataFloat(0, 7, InstanceIdx); Context.MapUpdate.Particles.Lifetime = InputDataFloat(0, 8, InstanceIdx); Context.MapUpdate.Particles.Mass = InputDataFloat(0, 9, InstanceIdx); Context.MapUpdate.Particles.MaterialRandom = InputDataFloat(0, 10, InstanceIdx); Context.MapUpdate.Particles.NormalizedAge = InputDataFloat(0, 11, InstanceIdx); Context.MapUpdate.Particles.Position.x = InputDataFloat(0, 12, InstanceIdx); Context.MapUpdate.Particles.Position.y = InputDataFloat(0, 13, InstanceIdx); Context.MapUpdate.Particles.Position.z = InputDataFloat(0, 14, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.x = InputDataFloat(0, 15, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.y = InputDataFloat(0, 16, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.z = InputDataFloat(0, 17, InstanceIdx); Context.MapUpdate.Particles.Scale.x = InputDataFloat(0, 18, InstanceIdx); Context.MapUpdate.Particles.Scale.y = InputDataFloat(0, 19, InstanceIdx); Context.MapUpdate.Particles.Scale.z = InputDataFloat(0, 20, InstanceIdx); Context.MapUpdate.Particles.SpriteRotation = InputDataFloat(0, 21, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.x = InputDataFloat(0, 22, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.y = InputDataFloat(0, 23, InstanceIdx); Context.MapUpdate.Particles.UniqueID = InputDataInt(0, 0, InstanceIdx); Context.MapUpdate.Particles.Velocity.x = InputDataFloat(0, 24, InstanceIdx); Context.MapUpdate.Particles.Velocity.y = InputDataFloat(0, 25, InstanceIdx); Context.MapUpdate.Particles.Velocity.z = InputDataFloat(0, 26, InstanceIdx); Context.MapUpdate.DataInstance.Alive=true; } void ConditionalInterpolateParameters(inout FSimulationContext Context) { InterpolateParameters(Context); } void TransferAttributes(inout FSimulationContext Context) { Context.MapUpdate.Particles = Context.MapSpawn.Particles; } void StoreUpdateVariables(in FSimulationContext Context) { GStageWritesAlive = true; const bool bValid = Context.MapUpdate.DataInstance.Alive; const int WriteIndex = OutputIndex(0, true, bValid); if (bValid) { OutputDataFloat(0, 0, WriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, WriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, WriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, WriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, WriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, WriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, WriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, WriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, WriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, WriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, WriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, WriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, WriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, WriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, WriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, WriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 19, WriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 20, WriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 21, WriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 22, WriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 23, WriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 0, WriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 24, WriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 25, WriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 26, WriteIndex, Context.MapUpdate.Particles.Velocity.z); } } void CopyInstance(in int InstanceIdx) { // TODO! } /* * CS wrapper for our generated code; calls spawn and update functions on the corresponding instances in the buffer */ [numthreads(THREADGROUP_SIZE, 1, 1)] void SimulateMainComputeCS( uint3 GroupId : SV_GroupID, uint3 DispatchThreadId : SV_DispatchThreadID, uint3 GroupThreadId : SV_GroupThreadID) { GDispatchThreadId = DispatchThreadId; GGroupThreadId = GroupThreadId; GCurrentPhase = -1; GEmitterTickCounter = EmitterTickCounter; GSimStart = SimStart; GRandomSeedOffset = 0; /* if(CopyInstancesBeforeStart == 1) { UpdateStartInstance = 0; } */ // The CPU code will set UpdateStartInstance to 0 and ReadInstanceCountOffset to -1 for stages. const uint InstanceID = UpdateStartInstance + DispatchThreadId.x; if (ReadInstanceCountOffset == 0xFFFFFFFF) { GSpawnStartInstance = 0; } else { GSpawnStartInstance = RWInstanceCounts[ReadInstanceCountOffset]; // needed by ExecIndex() } bool bRunUpdateLogic, bRunSpawnLogic; #if USE_SIMULATION_STAGES if (IterationInterfaceCount > 0) { bRunUpdateLogic = InstanceID < IterationInterfaceCount && GSimStart != 1; bRunSpawnLogic = InstanceID < IterationInterfaceCount && GSimStart == 1; } else #endif // USE_SIMULATION_STAGES { const int MaxInstances = GSpawnStartInstance + SpawnedInstances; bRunUpdateLogic = InstanceID < GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; bRunSpawnLogic = InstanceID >= GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; } const float RandomSeedInitialisation = NiagaraInternalNoise(InstanceID * 16384, 0 * 8196, (bRunUpdateLogic ? 4096 : 0) + EmitterTickCounter); // initialise the random state seed FSimulationContext Context = (FSimulationContext)0; BRANCH if (bRunUpdateLogic) { GCurrentPhase = GUpdatePhase; SetupExecIndexForGPU(); InitConstants(Context); LoadUpdateVariables(Context, InstanceID); ReadDataSets(Context); SimulateMapUpdate(Context); //SimulateDoWork(Context); //SimulateMapUpdate(Context); WriteDataSets(Context); } else if (bRunSpawnLogic) { GCurrentPhase = GSpawnPhase; #if USE_SIMULATION_STAGES // Only process the spawn info for particle-based stages. Stages with an iteration interface expect the exec index to simply be the thread index. if (IterationInterfaceCount > 0) { SetupExecIndexForGPU(); } else #endif { SetupExecIndexAndSpawnInfoForGPU(); } InitConstants(Context); InitSpawnVariables(Context); ReadDataSets(Context); Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); ConditionalInterpolateParameters(Context); SimulateMapSpawn(Context); GCurrentPhase = GUpdatePhase; TransferAttributes(Context); //SimulateDoWork(Context); //SimulateMapUpdate(Context); SimulateMapUpdate(Context); WriteDataSets(Context); } StoreUpdateVariables(Context); } 1Emitter_ColorNiagaraDataInterfaceColorCurveiSampleColorCurve_EmitterColorEmitter_NewAudioSpectrum"NiagaraDataInterfaceAudioSpectrum9&AudioSpectrum_EmitterNewAudioSpectrum{|^1a^, T<$@j)'LM \<$@j)'LM2GNiagaraScript /Game/Audio4.Audio4:Empty.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_0.SetVariables_619FBC7841F4E96144B94D92F32F22FEbNiagaraNodeAssigmentAssignmentNodeDesc)Sets one or more variables in the stack.2BMG1qu%@j)'v%@j)'w%@j)'x%@j)'$y%@j)'(z%@j)'0%@j)'4%@j)'8%@j)'<%@j)'@%@j)'L%@j)'P%@j)'\%@j)'`%@j)'d%@j)'h%@j)'l%@j)'x%@j)'|%@j)'%@j)'%@j)'%@j)'1\????@????@@@pB????? ASONiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:SpawnScripta o M-RعeQ+(1CInterpolatedSpawnEmitter.LocalspaceGPUComputeSimEM<A1\|tSJiAj́cSJ1] (J( 1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1  S %<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHMc1cM931M15Ni%1M15N1P32{z1// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float2 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float3 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float3 Constants_Emitter_TorusLocation_NonUniformScale; float3 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_01_NormalaizedPosition; float Constants_Emitter_ScratchModule_01_Radius; int Engine_ExecutionCount; float Emitter_SpawnRate; float Emitter_SpawnInterval; float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; int PREV_Engine_Emitter_PaddingInt32_2; } cbuffer PREV_FNiagaraExternalParameters { float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float2 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float3 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float3 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float3 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_ScratchModule_01_NormalaizedPosition; float PREV_Constants_Emitter_ScratchModule_01_Radius; int PREV_Engine_ExecutionCount; float PREV_Emitter_SpawnRate; float PREV_Emitter_SpawnInterval; float PREV_Emitter_InterpSpawnStartDt; int PREV_Emitter_SpawnGroup; } struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles { float3 Direction; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE { FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles Particles; }; struct FParamMap0_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local { FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; float InterpSpawnStartDt; bool LocalSpace; int RandomSeed; int SpawnGroup; float SpawnInterval; float SpawnRate; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_ScratchModule_01 ScratchModule_01; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_ScratchModule_01 ScratchModule_01; FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE SetVariables_619FBC7841F4E96144B94D92F32F22FE; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_01_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant15 = true; float3 Constant16 = float3(0,0,0); float3 Vector_IfResult; if(Constant15) { Vector_IfResult = Constant16; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant21 = true; float3 Constant22 = float3(0,0,0); float3 Vector_IfResult1; if(Constant21) { Vector_IfResult1 = Constant22; } else { Vector_IfResult1 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult1; } void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant34 = false; int Constant35 = 0; bool Result = NiagaraAll(In_RandomnessMode == Constant35); bool Result1 = Constant34 && Result; int Constant36 = 1; bool Result2 = NiagaraAll(In_RandomnessMode == Constant36); bool Result3 = Result1 || Result2; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant37 = 0; int Constant38 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant37; Seed3_IfResult = Constant38; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant39 = -1; int Constant40 = -1; int Constant41 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result3) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant39; Seed2_IfResult1 = Constant40; Seed3_IfResult1 = Constant41; } NiagaraRandInfo Output1; Output1.Seed1 = Seed1_IfResult1; Output1.Seed2 = Seed2_IfResult1; Output1.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output1; Out_UseDeterministicRandoms = Result3; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant29 = (0); bool Constant30 = false; int Constant31 = 0; int Constant32 = (0); bool Constant33 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant29, In_OverrideSeed, Constant31, Constant32, Constant33, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms, Context); float Result4 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed3; float Result5 = rand_float(Result4, Seed1, Seed2, Seed3); float Result6 = rand_float(Result4); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result5; } else { Random_IfResult = Result6; } float Result7 = In_Min + Random_IfResult; Out_Result = Result7; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant59 = (0); bool Constant60 = false; int Constant61 = 0; int Constant62 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant59, In_OverrideSeed, Constant61, Constant62, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1, Context); float Result9 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed3; float Result10 = rand(Result9, Seed11, Seed21, Seed31); float Result11 = rand(Result9); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result10; } else { Random_IfResult1 = Result11; } float Result12 = In_Min + Random_IfResult1; Out_Result = Result12; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant69 = 1; float Result17 = cos(In_U*(TWO_PI/Constant69)); float Constant70 = 1; float Result18 = sin(In_U*(TWO_PI/Constant70)); float Constant71 = 1; float Result19 = cos(In_V*(TWO_PI/Constant71)); float Constant72 = 1; float Result20 = sin(In_V*(TWO_PI/Constant72)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result17, Result18, Result19, Result20, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context) { int Constant76 = 0; bool Result26 = NiagaraAll(In_SourceSpace == Constant76); int Constant77 = 0; bool Result27 = NiagaraAll(In_DestinationSpace == Constant77); bool Result28 = Result26 && Result27; int Constant78 = 1; bool Result29 = NiagaraAll(In_SourceSpace == Constant78); int Constant79 = 1; bool Result30 = NiagaraAll(In_DestinationSpace == Constant79); bool Result31 = Result29 && Result30; bool Result32 = Result28 || Result31; int Constant80 = 2; bool Result33 = NiagaraAll(In_SourceSpace == Constant80); int Constant81 = 2; bool Result34 = NiagaraAll(In_DestinationSpace == Constant81); bool Result35 = Result33 && Result34; bool Result36 = Result32 || Result35; bool Result37 = Result26 && Result34; bool Result38 = Result33 && Result27; bool Result39 = Result37 || Result38; bool Result40 = In_bLocalSpace && Result39; bool Result41 = Result36 || Result40; bool Result42 = !In_bLocalSpace; bool Result43 = Result26 && Result30; bool Result44 = Result29 && Result27; bool Result45 = Result43 || Result44; bool Result46 = Result42 && Result45; bool Result47 = Result41 || Result46; bool Result48 = In_bLocalSpace && Result43; bool Result49 = Result33 && Result30; bool Result50 = Result48 || Result49; bool Result51 = Result42 && Result38; bool Result52 = Result50 || Result51; float4x4 Matrix_IfResult1; if(Result52) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result47; Out_OutTransform = Matrix_IfResult1; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant75 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant75, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, Context); float3 Result53 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result53; } Out_OutVector = Vector_IfResult2; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant54 = 0; float Constant55 = 999; float Result8 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant54,Constant55); float Constant56 = 1; int Constant57 = 0; bool Constant58 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant57; Override_IfResult = Constant58; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result8, Constant56, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant63 = 0; float Constant64 = 1; float Result13 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant63,Constant64); float Constant65 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result13, Constant65, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant66 = 0; float Constant67 = 1; float Result14 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant66,Constant67); float Constant68 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result14, Constant68, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result15 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result16 = Result15 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result16, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result21 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result22 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result23 = normalize(Result22); float3 Result24 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result25 = normalize(Result24); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result21; Tangent_IfResult = Result23; Normal_IfResult = Result25; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant73 = 0; bool Constant74 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant73, Constant74, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result54 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result55 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result54; int Constant82 = 0; bool Constant83 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant82, Constant83, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant84 = 0; bool Constant85 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant84, Constant85, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result56 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result55; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result56; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context) { Context.MapSpawn.Particles.Direction = Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result57 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result57; float Result58 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant87 = 1e-05; float Result59 = max(Context.MapUpdate.ParticleState.Lifetime, Constant87); float Constant88 = 0.0001; float Result60 = Result59 - Constant88; bool Result61 = NiagaraAll(Result58 < Result60); bool Constant89 = false; bool bool_IfResult; if(Result61) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant89; } float Result62 = Result58 / Result59; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result58; Context.MapUpdate.Particles.NormalizedAge = Result62; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; float Constant99 = 0.0001; float Result63 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant99); float Result64 = Reciprocal(Result63); float3 Result65 = Result64 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result65; float3 Result66 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant100 = 0; float Result67 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant100); float Result68 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result67; float Constant101 = 1; float Result69 = Result68 + Constant101; float3 Result70 = Result66 / Result69; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result70; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result71 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result71; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; Context.MapUpdate.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant102 = float3(0,0,0); float Constant103 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant102; Drag_IfResult = Constant103; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_01_Emitter_Func_(inout FSimulationContext Context) { int Constant104 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.MapUpdate.Constants.Emitter.ScratchModule_01.NormalaizedPosition, Constant104, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result72 = normalize(Context.MapUpdate.Particles.Direction); float3 Result73 = Result72 * Context.MapUpdate.Constants.Emitter.ScratchModule_01.Radius; float3 Result74 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result73; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.MapUpdate.Particles.Position = Result74; Context.MapUpdate.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapSpawn.Engine.DeltaTime = 0.0f; Context.MapSpawn.Engine.InverseDeltaTime = 0.0f; Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 1; Context.MapSpawn.Particles.Lifetime = Constant; float4 Constant1 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant1; float Constant2 = 1; Context.MapSpawn.Particles.Mass = Constant2; float2 Constant3 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant3; float Constant4 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant4; float3 Constant5 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant5; float Constant6 = 0; Context.MapSpawn.Particles.MaterialRandom = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; //End Initialize Parameter Map Defaults bool Constant11 = true; bool Constant12 = true; bool Constant13 = false; bool Constant14 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant11; Context.MapSpawn.InitializeParticle.WriteColor = Constant12; Context.MapSpawn.InitializeParticle.WritePosition = Constant13; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant17 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant17; bool Constant18 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant18; bool Constant19 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant19; bool Constant20 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant20; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; bool Constant23 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant23; float Constant24 = 0; float Constant25 = 1; int Constant26 = -1; int Constant27 = 0; bool Constant28 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant24, Constant25, Constant26, Constant27, Constant28, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant42 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant42; int Constant43 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant43; bool Constant44 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant44; bool Constant45 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant45; float Constant46 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant46; float Constant47 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant47; float Constant48 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant48; float3 Constant49 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant49; float3 Constant50 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant50; float3 Constant51 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant51; bool Constant52 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant52; int Constant53 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant53; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(Context); ExitStatScope(/**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues Context.MapSpawn.Particles.PreviousVelocity = Context.MapSpawn.Particles.Velocity; // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! bool Constant86 = true; Context.MapUpdate.DataInstance.Alive = Constant86; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(4 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant90 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant90; float3 Constant91 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant91; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; float3 Constant92 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant92; float3 Constant93 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant93; float Constant94 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant94; float Constant95 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant95; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.PreviousVelocity; bool Constant96 = true; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant97 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant97; bool Constant98 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant98; EnterStatScope(5 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(6 /**ScratchModule_01_Emitter_Func_*/); ScratchModule_01_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_01_Emitter_Func_*/); //End Update Script! } void SimulateMain() { EnterStatScope(7 /**SpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.x = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.y = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.ScratchModule_01.NormalaizedPosition = Constants_Emitter_ScratchModule_01_NormalaizedPosition; Context.MapUpdate.Constants.Emitter.ScratchModule_01.Radius = Constants_Emitter_ScratchModule_01_Radius; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Emitter.SpawnInterval = Emitter_SpawnInterval; Context.MapUpdate.Emitter.InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapUpdate.Emitter.SpawnGroup = Emitter_SpawnGroup; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); InterpolateParameters(Context); SimulateMapSpawn(Context); //Begin Transfer of Attributes! Context.MapUpdate.Particles = Context.MapSpawn.Particles; //End Transfer of Attributes! SimulateMapUpdate(Context); WriteDataSets(Context); { bool bValid = Context.MapUpdate.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 22, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 24, TmpWriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 25, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.z); } ExitStatScope(/**SpawnScript_Main*/); } PP ------------------------------- Summary ------------------------------- Num Byte Code Ops: 93 Num Constants: 377 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_Owner_TimeSinceRendered 20 | Engine_Owner_LODDistance 24 | Engine_Owner_LODDistanceFraction 28 | Engine_System_Age 32 | Engine_Owner_ExecutionState 36 | Engine_System_TickCount 40 | Engine_System_NumEmitters 44 | Engine_System_NumEmittersAlive 48 | Engine_Owner_SystemLocalToWorldRow0x 52 | Engine_Owner_SystemLocalToWorldRow0y 56 | Engine_Owner_SystemLocalToWorldRow0z 60 | Engine_Owner_SystemLocalToWorldRow0w 64 | Engine_Owner_SystemLocalToWorldRow1x 68 | Engine_Owner_SystemLocalToWorldRow1y 72 | Engine_Owner_SystemLocalToWorldRow1z 76 | Engine_Owner_SystemLocalToWorldRow1w 80 | Engine_Owner_SystemLocalToWorldRow2x 84 | Engine_Owner_SystemLocalToWorldRow2y 88 | Engine_Owner_SystemLocalToWorldRow2z 92 | Engine_Owner_SystemLocalToWorldRow2w 96 | Engine_Owner_SystemLocalToWorldRow3x 100 | Engine_Owner_SystemLocalToWorldRow3y 104 | Engine_Owner_SystemLocalToWorldRow3z 108 | Engine_Owner_SystemLocalToWorldRow3w 112 | Engine_Owner_SystemWorldToLocalRow0x 116 | Engine_Owner_SystemWorldToLocalRow0y 120 | Engine_Owner_SystemWorldToLocalRow0z 124 | Engine_Owner_SystemWorldToLocalRow0w 128 | Engine_Owner_SystemWorldToLocalRow1x 132 | Engine_Owner_SystemWorldToLocalRow1y 136 | Engine_Owner_SystemWorldToLocalRow1z 140 | Engine_Owner_SystemWorldToLocalRow1w 144 | Engine_Owner_SystemWorldToLocalRow2x 148 | Engine_Owner_SystemWorldToLocalRow2y 152 | Engine_Owner_SystemWorldToLocalRow2z 156 | Engine_Owner_SystemWorldToLocalRow2w 160 | Engine_Owner_SystemWorldToLocalRow3x 164 | Engine_Owner_SystemWorldToLocalRow3y 168 | Engine_Owner_SystemWorldToLocalRow3z 172 | Engine_Owner_SystemWorldToLocalRow3w 176 | Engine_Owner_SystemLocalToWorldTransposedRow0x 180 | Engine_Owner_SystemLocalToWorldTransposedRow0y 184 | Engine_Owner_SystemLocalToWorldTransposedRow0z 188 | Engine_Owner_SystemLocalToWorldTransposedRow0w 192 | Engine_Owner_SystemLocalToWorldTransposedRow1x 196 | Engine_Owner_SystemLocalToWorldTransposedRow1y 200 | Engine_Owner_SystemLocalToWorldTransposedRow1z 204 | Engine_Owner_SystemLocalToWorldTransposedRow1w 208 | Engine_Owner_SystemLocalToWorldTransposedRow2x 212 | Engine_Owner_SystemLocalToWorldTransposedRow2y 216 | Engine_Owner_SystemLocalToWorldTransposedRow2z 220 | Engine_Owner_SystemLocalToWorldTransposedRow2w 224 | Engine_Owner_SystemLocalToWorldTransposedRow3x 228 | Engine_Owner_SystemLocalToWorldTransposedRow3y 232 | Engine_Owner_SystemLocalToWorldTransposedRow3z 236 | Engine_Owner_SystemLocalToWorldTransposedRow3w 240 | Engine_Owner_SystemWorldToLocalTransposedRow0x 244 | Engine_Owner_SystemWorldToLocalTransposedRow0y 248 | Engine_Owner_SystemWorldToLocalTransposedRow0z 252 | Engine_Owner_SystemWorldToLocalTransposedRow0w 256 | Engine_Owner_SystemWorldToLocalTransposedRow1x 260 | Engine_Owner_SystemWorldToLocalTransposedRow1y 264 | Engine_Owner_SystemWorldToLocalTransposedRow1z 268 | Engine_Owner_SystemWorldToLocalTransposedRow1w 272 | Engine_Owner_SystemWorldToLocalTransposedRow2x 276 | Engine_Owner_SystemWorldToLocalTransposedRow2y 280 | Engine_Owner_SystemWorldToLocalTransposedRow2z 284 | Engine_Owner_SystemWorldToLocalTransposedRow2w 288 | Engine_Owner_SystemWorldToLocalTransposedRow3x 292 | Engine_Owner_SystemWorldToLocalTransposedRow3y 296 | Engine_Owner_SystemWorldToLocalTransposedRow3z 300 | Engine_Owner_SystemWorldToLocalTransposedRow3w 304 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 308 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 312 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 316 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 320 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 324 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 328 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 332 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 368 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 372 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 376 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 380 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 384 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 388 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 392 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 396 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 432 | Engine_Owner_Rotationx 436 | Engine_Owner_Rotationy 440 | Engine_Owner_Rotationz 444 | Engine_Owner_Rotationw 448 | Engine_Owner_Positionx 452 | Engine_Owner_Positiony 456 | Engine_Owner_Positionz 460 | Engine_Owner_Positionw 464 | Engine_Owner_Velocityx 468 | Engine_Owner_Velocityy 472 | Engine_Owner_Velocityz 476 | Engine_Owner_Velocityw 480 | Engine_Owner_SystemXAxisx 484 | Engine_Owner_SystemXAxisy 488 | Engine_Owner_SystemXAxisz 492 | Engine_Owner_SystemXAxisw 496 | Engine_Owner_SystemYAxisx 500 | Engine_Owner_SystemYAxisy 504 | Engine_Owner_SystemYAxisz 508 | Engine_Owner_SystemYAxisw 512 | Engine_Owner_SystemZAxisx 516 | Engine_Owner_SystemZAxisy 520 | Engine_Owner_SystemZAxisz 524 | Engine_Owner_SystemZAxisw 528 | Engine_Owner_Scalex 532 | Engine_Owner_Scaley 536 | Engine_Owner_Scalez 540 | Engine_Owner_Scalew 544 | Engine_Emitter_NumParticles 548 | Engine_Emitter_TotalSpawnedParticles 552 | Engine_Emitter_SpawnCountScale 556 | Emitter_Age 560 | Emitter_RandomSeed 564 | Engine_Emitter_PaddingInt32_0 568 | Engine_Emitter_PaddingInt32_1 572 | Engine_Emitter_PaddingInt32_2 576 | Constants_Emitter_InitializeParticle_Lifetime 580 | Constants_Emitter_InitializeParticle_Colorx 584 | Constants_Emitter_InitializeParticle_Colory 588 | Constants_Emitter_InitializeParticle_Colorz 592 | Constants_Emitter_InitializeParticle_Colorw 596 | Constants_Emitter_InitializeParticle_Mass 600 | Constants_Emitter_InitializeParticle_SpriteSizex 604 | Constants_Emitter_InitializeParticle_SpriteSizey 608 | Constants_Emitter_InitializeParticle_SpriteRotation 612 | Constants_Emitter_InitializeParticle_MeshScalex 616 | Constants_Emitter_InitializeParticle_MeshScaley 620 | Constants_Emitter_InitializeParticle_MeshScalez 624 | Constants_Emitter_TorusLocation_SurfacePosition 628 | Constants_Emitter_TorusLocation_UDistribution 632 | Constants_Emitter_TorusLocation_VDistribution 636 | Constants_Emitter_TorusLocation_RandomSeed 640 | Constants_Emitter_TorusLocation_HandleRadius 644 | Constants_Emitter_TorusLocation_LargeRadius 648 | Constants_Emitter_TorusLocation_NonUniformScalex 652 | Constants_Emitter_TorusLocation_NonUniformScaley 656 | Constants_Emitter_TorusLocation_NonUniformScalez 660 | Constants_Emitter_TorusLocation_TorusAxisx 664 | Constants_Emitter_TorusLocation_TorusAxisy 668 | Constants_Emitter_TorusLocation_TorusAxisz 672 | Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 676 | Constants_Emitter_TorusLocation_Offsetx 680 | Constants_Emitter_TorusLocation_Offsety 684 | Constants_Emitter_TorusLocation_Offsetz 688 | Constants_Emitter_TorusLocation_SpawnGroupMask 692 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 696 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 700 | Constants_Emitter_ScratchModule_01_NormalaizedPosition 704 | Constants_Emitter_ScratchModule_01_Radius 708 | Engine_ExecutionCount 712 | Emitter_SpawnRate 716 | Emitter_SpawnInterval 720 | Emitter_InterpSpawnStartDt 724 | Emitter_SpawnGroup 728 | PREV_Engine_DeltaTime 732 | PREV_Engine_InverseDeltaTime 736 | PREV_Engine_Time 740 | PREV_Engine_RealTime 744 | PREV_Engine_Owner_TimeSinceRendered 748 | PREV_Engine_Owner_LODDistance 752 | PREV_Engine_Owner_LODDistanceFraction 756 | PREV_Engine_System_Age 760 | PREV_Engine_Owner_ExecutionState 764 | PREV_Engine_System_TickCount 768 | PREV_Engine_System_NumEmitters 772 | PREV_Engine_System_NumEmittersAlive 776 | PREV_Engine_Owner_SystemLocalToWorldRow0x 780 | PREV_Engine_Owner_SystemLocalToWorldRow0y 784 | PREV_Engine_Owner_SystemLocalToWorldRow0z 788 | PREV_Engine_Owner_SystemLocalToWorldRow0w 792 | PREV_Engine_Owner_SystemLocalToWorldRow1x 796 | PREV_Engine_Owner_SystemLocalToWorldRow1y 800 | PREV_Engine_Owner_SystemLocalToWorldRow1z 804 | PREV_Engine_Owner_SystemLocalToWorldRow1w 808 | PREV_Engine_Owner_SystemLocalToWorldRow2x 812 | PREV_Engine_Owner_SystemLocalToWorldRow2y 816 | PREV_Engine_Owner_SystemLocalToWorldRow2z 820 | PREV_Engine_Owner_SystemLocalToWorldRow2w 824 | PREV_Engine_Owner_SystemLocalToWorldRow3x 828 | PREV_Engine_Owner_SystemLocalToWorldRow3y 832 | PREV_Engine_Owner_SystemLocalToWorldRow3z 836 | PREV_Engine_Owner_SystemLocalToWorldRow3w 840 | PREV_Engine_Owner_SystemWorldToLocalRow0x 844 | PREV_Engine_Owner_SystemWorldToLocalRow0y 848 | PREV_Engine_Owner_SystemWorldToLocalRow0z 852 | PREV_Engine_Owner_SystemWorldToLocalRow0w 856 | PREV_Engine_Owner_SystemWorldToLocalRow1x 860 | PREV_Engine_Owner_SystemWorldToLocalRow1y 864 | PREV_Engine_Owner_SystemWorldToLocalRow1z 868 | PREV_Engine_Owner_SystemWorldToLocalRow1w 872 | PREV_Engine_Owner_SystemWorldToLocalRow2x 876 | PREV_Engine_Owner_SystemWorldToLocalRow2y 880 | PREV_Engine_Owner_SystemWorldToLocalRow2z 884 | PREV_Engine_Owner_SystemWorldToLocalRow2w 888 | PREV_Engine_Owner_SystemWorldToLocalRow3x 892 | PREV_Engine_Owner_SystemWorldToLocalRow3y 896 | PREV_Engine_Owner_SystemWorldToLocalRow3z 900 | PREV_Engine_Owner_SystemWorldToLocalRow3w 904 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0x 908 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0y 912 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0z 916 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0w 920 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1x 924 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1y 928 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1z 932 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1w 936 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2x 940 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2y 944 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2z 948 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2w 952 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3x 956 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3y 960 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3z 964 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3w 968 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0x 972 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0y 976 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0z 980 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0w 984 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1x 988 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1y 992 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1z 996 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1w 1000 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2x 1004 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2y 1008 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2z 1012 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2w 1016 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3x 1020 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3y 1024 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3z 1028 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3w 1032 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0x 1036 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0y 1040 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0z 1044 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0w 1048 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1x 1052 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1y 1056 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1z 1060 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1w 1064 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2x 1068 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2y 1072 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2z 1076 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2w 1080 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3x 1084 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3y 1088 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3z 1092 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3w 1096 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0x 1100 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0y 1104 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0z 1108 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0w 1112 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1x 1116 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1y 1120 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1z 1124 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1w 1128 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2x 1132 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2y 1136 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2z 1140 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2w 1144 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3x 1148 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3y 1152 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3z 1156 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3w 1160 | PREV_Engine_Owner_Rotationx 1164 | PREV_Engine_Owner_Rotationy 1168 | PREV_Engine_Owner_Rotationz 1172 | PREV_Engine_Owner_Rotationw 1176 | PREV_Engine_Owner_Positionx 1180 | PREV_Engine_Owner_Positiony 1184 | PREV_Engine_Owner_Positionz 1188 | PREV_Engine_Owner_Positionw 1192 | PREV_Engine_Owner_Velocityx 1196 | PREV_Engine_Owner_Velocityy 1200 | PREV_Engine_Owner_Velocityz 1204 | PREV_Engine_Owner_Velocityw 1208 | PREV_Engine_Owner_SystemXAxisx 1212 | PREV_Engine_Owner_SystemXAxisy 1216 | PREV_Engine_Owner_SystemXAxisz 1220 | PREV_Engine_Owner_SystemXAxisw 1224 | PREV_Engine_Owner_SystemYAxisx 1228 | PREV_Engine_Owner_SystemYAxisy 1232 | PREV_Engine_Owner_SystemYAxisz 1236 | PREV_Engine_Owner_SystemYAxisw 1240 | PREV_Engine_Owner_SystemZAxisx 1244 | PREV_Engine_Owner_SystemZAxisy 1248 | PREV_Engine_Owner_SystemZAxisz 1252 | PREV_Engine_Owner_SystemZAxisw 1256 | PREV_Engine_Owner_Scalex 1260 | PREV_Engine_Owner_Scaley 1264 | PREV_Engine_Owner_Scalez 1268 | PREV_Engine_Owner_Scalew 1272 | PREV_Engine_Emitter_NumParticles 1276 | PREV_Engine_Emitter_TotalSpawnedParticles 1280 | PREV_Engine_Emitter_SpawnCountScale 1284 | PREV_Emitter_Age 1288 | PREV_Emitter_RandomSeed 1292 | PREV_Engine_Emitter_PaddingInt32_0 1296 | PREV_Engine_Emitter_PaddingInt32_1 1300 | PREV_Engine_Emitter_PaddingInt32_2 1304 | PREV_Constants_Emitter_InitializeParticle_Lifetime 1308 | PREV_Constants_Emitter_InitializeParticle_Colorx 1312 | PREV_Constants_Emitter_InitializeParticle_Colory 1316 | PREV_Constants_Emitter_InitializeParticle_Colorz 1320 | PREV_Constants_Emitter_InitializeParticle_Colorw 1324 | PREV_Constants_Emitter_InitializeParticle_Mass 1328 | PREV_Constants_Emitter_InitializeParticle_SpriteSizex 1332 | PREV_Constants_Emitter_InitializeParticle_SpriteSizey 1336 | PREV_Constants_Emitter_InitializeParticle_SpriteRotation 1340 | PREV_Constants_Emitter_InitializeParticle_MeshScalex 1344 | PREV_Constants_Emitter_InitializeParticle_MeshScaley 1348 | PREV_Constants_Emitter_InitializeParticle_MeshScalez 1352 | PREV_Constants_Emitter_TorusLocation_SurfacePosition 1356 | PREV_Constants_Emitter_TorusLocation_UDistribution 1360 | PREV_Constants_Emitter_TorusLocation_VDistribution 1364 | PREV_Constants_Emitter_TorusLocation_RandomSeed 1368 | PREV_Constants_Emitter_TorusLocation_HandleRadius 1372 | PREV_Constants_Emitter_TorusLocation_LargeRadius 1376 | PREV_Constants_Emitter_TorusLocation_NonUniformScalex 1380 | PREV_Constants_Emitter_TorusLocation_NonUniformScaley 1384 | PREV_Constants_Emitter_TorusLocation_NonUniformScalez 1388 | PREV_Constants_Emitter_TorusLocation_TorusAxisx 1392 | PREV_Constants_Emitter_TorusLocation_TorusAxisy 1396 | PREV_Constants_Emitter_TorusLocation_TorusAxisz 1400 | PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 1404 | PREV_Constants_Emitter_TorusLocation_Offsetx 1408 | PREV_Constants_Emitter_TorusLocation_Offsety 1412 | PREV_Constants_Emitter_TorusLocation_Offsetz 1416 | PREV_Constants_Emitter_TorusLocation_SpawnGroupMask 1420 | PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 1424 | PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 1428 | PREV_Constants_Emitter_ScratchModule_01_NormalaizedPosition 1432 | PREV_Constants_Emitter_ScratchModule_01_Radius 1436 | PREV_Engine_ExecutionCount 1440 | PREV_Emitter_SpawnRate 1444 | PREV_Emitter_SpawnInterval 1448 | PREV_Emitter_InterpSpawnStartDt 1452 | PREV_Emitter_SpawnGroup 1456 | 7 1460 | 1 1464 | 2 1468 | 0 1472 | 999 1476 | 6.28318548 1480 | 4 1484 | 9.99999975e-06 1488 | 9.99999975e-05 1492 | True 1496 | False 1500 | 6 1504 | 0 ------------------------------- Byte Code (93 Ops) ------------------------------- 0 | OP_85(C[1456]); 1 | R[0] = OP_82; 2 | R[1] = OP_44(C[548], R[0]); 3 | R[0] = OP_82; 4 | R[2] = OP_72(R[0]); 5 | R[0] = OP_5(C[716], R[2], C[720]); 6 | R[2] = OP_2(C[0], R[0]); 7 | R[0] = OP_35(C[1460]); 8 | OP_85(C[1464]); 9 | R[3] = OP_28(C[624], C[1468], C[1472]); 10 | R[4] = OP_2(C[1460], R[3]); 11 | R[5] = OP_35(R[4]); 12 | R[4] = OP_1(R[3], R[5]); 13 | R[3] = OP_28(C[628], C[1468], C[1460]); 14 | R[5] = OP_2(C[1460], R[3]); 15 | R[6] = OP_35(R[5]); 16 | R[5] = OP_1(R[3], R[6]); 17 | R[3] = OP_28(C[632], C[1468], C[1460]); 18 | R[6] = OP_2(C[1460], R[3]); 19 | R[7] = OP_35(R[6]); 20 | R[6] = OP_1(R[3], R[7]); 21 | R[3] = OP_9(R[4]); 22 | R[4] = OP_3(R[3], C[640]); 23 | R[3] = OP_3(R[6], C[1476]); 24 | R[7] = OP_17(R[3]); 25 | R[3] = OP_5(R[4], R[7], C[644]); 26 | R[7] = OP_3(R[5], C[1476]); 27 | R[8] = OP_17(R[7]); 28 | R[7] = OP_3(R[3], R[8]); 29 | R[8] = OP_3(R[5], C[1476]); 30 | R[5] = OP_16(R[8]); 31 | R[8] = OP_3(R[3], R[5]); 32 | R[3] = OP_3(R[6], C[1476]); 33 | R[5] = OP_16(R[3]); 34 | R[3] = OP_3(R[4], R[5]); 35 | R[4] = OP_1(R[7], C[676]); 36 | R[5] = OP_1(R[8], C[680]); 37 | R[6] = OP_1(R[3], C[684]); 38 | OP_86; 39 | OP_85(C[1480]); 40 | R[3] = OP_30(C[576], C[1484]); 41 | R[7] = OP_2(R[3], C[1488]); 42 | R[8] = OP_37(R[2], R[7]); 43 | R[7] = OP_43(R[8], C[1492], C[1496]); 44 | R[8] = OP_4(R[2], R[3]); 45 | OP_86; 46 | OP_85(C[1500]); 47 | AudioSpectrum_EmitterNewAudioSpectrum[func0](C[700], C[1504], R[3]); 48 | R[9] = OP_3(R[5], R[5]); 49 | R[10] = OP_5(R[4], R[4], R[9]); 50 | R[9] = OP_5(R[6], R[6], R[10]); 51 | R[10] = OP_8(R[9]); 52 | R[9] = OP_3(R[4], R[10]); 53 | R[11] = OP_3(R[5], R[10]); 54 | R[12] = OP_3(R[6], R[10]); 55 | R[10] = OP_3(R[9], C[704]); 56 | R[9] = OP_3(R[11], C[704]); 57 | R[11] = OP_3(R[12], C[704]); 58 | R[12] = OP_3(R[3], R[10]); 59 | R[10] = OP_3(R[3], R[9]); 60 | R[9] = OP_3(R[3], R[11]); 61 | SampleColorCurve_EmitterColor[func1](R[3], R[11], R[13], R[14], R[15]); 62 | OP_86; 63 | [R][3] = AcquireIndex(0, [R][7]); 64 | OutputData(0, 0, [R][3], [R][2]); 65 | OutputData(0, 1, [R][3], [R][11]); 66 | OutputData(0, 2, [R][3], [R][13]); 67 | OutputData(0, 3, [R][3], [R][14]); 68 | OutputData(0, 4, [R][3], [R][15]); 69 | OutputData(0, 5, [R][3], [R][4]); 70 | OutputData(0, 6, [R][3], [R][5]); 71 | OutputData(0, 7, [R][3], [R][6]); 72 | OutputData(0, 8, [R][3], [C][576]); 73 | OutputData(0, 9, [R][3], [C][596]); 74 | OutputData(0, 10, [R][3], [R][0]); 75 | OutputData(0, 11, [R][3], [R][8]); 76 | OutputData(0, 12, [R][3], [R][12]); 77 | OutputData(0, 13, [R][3], [R][10]); 78 | OutputData(0, 14, [R][3], [R][9]); 79 | OutputData(0, 15, [R][3], [C][1468]); 80 | OutputData(0, 16, [R][3], [C][1468]); 81 | OutputData(0, 17, [R][3], [C][1468]); 82 | OutputData(0, 18, [R][3], [C][1460]); 83 | OutputData(0, 19, [R][3], [C][1460]); 84 | OutputData(0, 20, [R][3], [C][1460]); 85 | OutputData(0, 21, [R][3], [C][1468]); 86 | OutputData(0, 22, [R][3], [C][600]); 87 | OutputData(0, 23, [R][3], [C][604]); 88 | OutputData(0, 24, [R][3], [R][1]); 89 | OutputData(0, 25, [R][3], [C][1468]); 90 | OutputData(0, 26, [R][3], [C][1468]); 91 | OutputData(0, 27, [R][3], [C][1468]); 92 | OP_86; ------------------------------- (]{|^1a^, T<$@j)'LM  \<$@j)'LM2BMG1{%@j)'|%@j)'}%@j)' ~%@j)'1\zC<FzDTPNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:UpdateScripta o M-RعeQ+(1-Emitter.LocalspaceGPUComputeSim<A1\ P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1  S %<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHMc1cM931M15Ni%1M15N1r32{z01EE// Shader generated by Niagara HLSL Translator struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_01_NormalaizedPosition; float Constants_Emitter_ScratchModule_01_Radius; } struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local { FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; bool LocalSpace; int RandomSeed; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_ScratchModule_01 ScratchModule_01; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_ScratchModule_01 ScratchModule_01; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_01_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result = NiagaraAll(Context.Map.Particles.Age <= Context.Map.Engine.DeltaTime); Context.Map.OUTPUT_VAR.ParticleState.FirstFrame = Result; float Result1 = Context.Map.Particles.Age + Context.Map.ParticleState.DeltaTime; float Constant1 = 1e-05; float Result2 = max(Context.Map.ParticleState.Lifetime, Constant1); float Constant2 = 0.0001; float Result3 = Result2 - Constant2; bool Result4 = NiagaraAll(Result1 < Result3); bool Constant3 = false; bool bool_IfResult; if(Result4) { bool_IfResult = Context.Map.DataInstance.Alive; } else { bool_IfResult = Constant3; } float Result5 = Result1 / Result2; Context.Map.DataInstance.Alive = bool_IfResult; Context.Map.Particles.Age = Result1; Context.Map.Particles.NormalizedAge = Result5; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Context.Map.SolveForcesAndVelocity.DeltaTime; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.SolveForcesAndVelocity.Velocity; Context.Map.Local.SolveForcesAndVelocity.Mass = Context.Map.SolveForcesAndVelocity.Mass; float Constant13 = 0.0001; float Result6 = max(Context.Map.Local.SolveForcesAndVelocity.Mass, Constant13); float Result7 = Reciprocal(Result6); float3 Result8 = Result7 * Context.Map.Local.SolveForcesAndVelocity.PhysicsForce; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Result8; float3 Result9 = Context.Map.Local.SolveForcesAndVelocity.PhysicsForce * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant14 = 0; float Result10 = max(Context.Map.Transient.PhysicsDrag, Constant14); float Result11 = Context.Map.Local.SolveForcesAndVelocity.DeltaTime * Result10; float Constant15 = 1; float Result12 = Result11 + Constant15; float3 Result13 = Result9 / Result12; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result13; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.Map.Transient.PhysicsDrag; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result14 = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.SolveForcesAndVelocity.Position; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result14; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.Map.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.Map.SolveForcesAndVelocity.PreviousVelocity; } Context.Map.Particles.Position = Position_IfResult; Context.Map.Particles.Velocity = Velocity_IfResult; Context.Map.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant16 = float3(0,0,0); float Constant17 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant16; Drag_IfResult = Constant17; } else { ForceVector_IfResult = Context.Map.Transient.PhysicsForce; Drag_IfResult = Context.Map.Transient.PhysicsDrag; } Context.Map.Transient.PhysicsForce = ForceVector_IfResult; Context.Map.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_01_Emitter_Func_(inout FSimulationContext Context) { int Constant18 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.Map.Constants.Emitter.ScratchModule_01.NormalaizedPosition, Constant18, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result15 = normalize(Context.Map.Particles.Direction); float3 Result16 = Result15 * Context.Map.Constants.Emitter.ScratchModule_01.Radius; float3 Result17 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result16; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.Map.Particles.Position = Result17; Context.Map.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/Audio11.Audio11:Empty001_1.UpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = true; Context.Map.DataInstance.Alive = Constant; Context.Map.ParticleState.DeltaTime = Context.Map.Engine.DeltaTime; Context.Map.ParticleState.Lifetime = Context.Map.Particles.Lifetime; EnterStatScope(1 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); Context.Map.Transient.PhysicsDeltaTime = Context.Map.Engine.DeltaTime; Context.Map.SolveForcesAndVelocity.DeltaTime = Context.Map.Transient.PhysicsDeltaTime; float Constant4 = (0.0); Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Constant4; float3 Constant5 = float3(0,0,0); Context.Map.Transient.PhysicsForce = Constant5; Context.Map.SolveForcesAndVelocity.Force = Context.Map.Transient.PhysicsForce; Context.Map.SolveForcesAndVelocity.Velocity = Context.Map.Particles.Velocity; Context.Map.SolveForcesAndVelocity.Mass = Context.Map.Particles.Mass; float3 Constant6 = float3(0.0, 0.0, 0.0); Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant7; float Constant8 = (0.0); Context.Map.Local.SolveForcesAndVelocity.Mass = Constant8; float Constant9 = 0; Context.Map.Transient.PhysicsDrag = Constant9; Context.Map.SolveForcesAndVelocity.PreviousVelocity = Context.Map.Particles.PreviousVelocity; bool Constant10 = true; Context.Map.SolveForcesAndVelocity.Position = Context.Map.Particles.Position; float3 Constant11 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant11; bool Constant12 = true; Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant12; EnterStatScope(2 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(3 /**ScratchModule_01_Emitter_Func_*/); ScratchModule_01_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_01_Emitter_Func_*/); ExitStatScope(/**NiagaraScript /Game/Audio11.Audio11:Empty001_1.UpdateScript*/); } void SimulateMain() { EnterStatScope(4 /**UpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.Particles.Age = InputDataFloat(0, 0); Context.Map.Particles.Color.r = InputDataFloat(0, 1); Context.Map.Particles.Color.g = InputDataFloat(0, 2); Context.Map.Particles.Color.b = InputDataFloat(0, 3); Context.Map.Particles.Color.a = InputDataFloat(0, 4); Context.Map.Particles.Direction.x = InputDataFloat(0, 5); Context.Map.Particles.Direction.y = InputDataFloat(0, 6); Context.Map.Particles.Direction.z = InputDataFloat(0, 7); Context.Map.Particles.Lifetime = InputDataFloat(0, 8); Context.Map.Particles.Mass = InputDataFloat(0, 9); Context.Map.Particles.MaterialRandom = InputDataFloat(0, 10); Context.Map.Particles.NormalizedAge = InputDataFloat(0, 11); Context.Map.Particles.Position.x = InputDataFloat(0, 12); Context.Map.Particles.Position.y = InputDataFloat(0, 13); Context.Map.Particles.Position.z = InputDataFloat(0, 14); Context.Map.Particles.PreviousVelocity.x = InputDataFloat(0, 15); Context.Map.Particles.PreviousVelocity.y = InputDataFloat(0, 16); Context.Map.Particles.PreviousVelocity.z = InputDataFloat(0, 17); Context.Map.Particles.Scale.x = InputDataFloat(0, 18); Context.Map.Particles.Scale.y = InputDataFloat(0, 19); Context.Map.Particles.Scale.z = InputDataFloat(0, 20); Context.Map.Particles.SpriteRotation = InputDataFloat(0, 21); Context.Map.Particles.SpriteSize.x = InputDataFloat(0, 22); Context.Map.Particles.SpriteSize.y = InputDataFloat(0, 23); Context.Map.Particles.UniqueID = InputDataInt(0, 24); Context.Map.Particles.Velocity.x = InputDataFloat(0, 25); Context.Map.Particles.Velocity.y = InputDataFloat(0, 26); Context.Map.Particles.Velocity.z = InputDataFloat(0, 27); Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.Map.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.Map.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.Map.Constants.Emitter.ScratchModule_01.NormalaizedPosition = Constants_Emitter_ScratchModule_01_NormalaizedPosition; Context.Map.Constants.Emitter.ScratchModule_01.Radius = Constants_Emitter_ScratchModule_01_Radius; Context.Map.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); Simulate(Context); WriteDataSets(Context); { bool bValid = Context.Map.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.Map.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.Map.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.Map.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.Map.Particles.Scale.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.Map.Particles.Scale.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.Map.Particles.Scale.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.Map.Particles.SpriteRotation); OutputDataFloat(0, 22, TmpWriteIndex, Context.Map.Particles.SpriteSize.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.Map.Particles.SpriteSize.y); OutputDataInt(0, 24, TmpWriteIndex, Context.Map.Particles.UniqueID); OutputDataFloat(0, 25, TmpWriteIndex, Context.Map.Particles.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.Map.Particles.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.Map.Particles.Velocity.z); } ExitStatScope(/**UpdateScript_Main*/); } H$D$ ------------------------------- Summary ------------------------------- Num Byte Code Ops: 71 Num Constants: 155 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_Owner_TimeSinceRendered 20 | Engine_Owner_LODDistance 24 | Engine_Owner_LODDistanceFraction 28 | Engine_System_Age 32 | Engine_Owner_ExecutionState 36 | Engine_System_TickCount 40 | Engine_System_NumEmitters 44 | Engine_System_NumEmittersAlive 48 | Engine_Owner_SystemLocalToWorldRow0x 52 | Engine_Owner_SystemLocalToWorldRow0y 56 | Engine_Owner_SystemLocalToWorldRow0z 60 | Engine_Owner_SystemLocalToWorldRow0w 64 | Engine_Owner_SystemLocalToWorldRow1x 68 | Engine_Owner_SystemLocalToWorldRow1y 72 | Engine_Owner_SystemLocalToWorldRow1z 76 | Engine_Owner_SystemLocalToWorldRow1w 80 | Engine_Owner_SystemLocalToWorldRow2x 84 | Engine_Owner_SystemLocalToWorldRow2y 88 | Engine_Owner_SystemLocalToWorldRow2z 92 | Engine_Owner_SystemLocalToWorldRow2w 96 | Engine_Owner_SystemLocalToWorldRow3x 100 | Engine_Owner_SystemLocalToWorldRow3y 104 | Engine_Owner_SystemLocalToWorldRow3z 108 | Engine_Owner_SystemLocalToWorldRow3w 112 | Engine_Owner_SystemWorldToLocalRow0x 116 | Engine_Owner_SystemWorldToLocalRow0y 120 | Engine_Owner_SystemWorldToLocalRow0z 124 | Engine_Owner_SystemWorldToLocalRow0w 128 | Engine_Owner_SystemWorldToLocalRow1x 132 | Engine_Owner_SystemWorldToLocalRow1y 136 | Engine_Owner_SystemWorldToLocalRow1z 140 | Engine_Owner_SystemWorldToLocalRow1w 144 | Engine_Owner_SystemWorldToLocalRow2x 148 | Engine_Owner_SystemWorldToLocalRow2y 152 | Engine_Owner_SystemWorldToLocalRow2z 156 | Engine_Owner_SystemWorldToLocalRow2w 160 | Engine_Owner_SystemWorldToLocalRow3x 164 | Engine_Owner_SystemWorldToLocalRow3y 168 | Engine_Owner_SystemWorldToLocalRow3z 172 | Engine_Owner_SystemWorldToLocalRow3w 176 | Engine_Owner_SystemLocalToWorldTransposedRow0x 180 | Engine_Owner_SystemLocalToWorldTransposedRow0y 184 | Engine_Owner_SystemLocalToWorldTransposedRow0z 188 | Engine_Owner_SystemLocalToWorldTransposedRow0w 192 | Engine_Owner_SystemLocalToWorldTransposedRow1x 196 | Engine_Owner_SystemLocalToWorldTransposedRow1y 200 | Engine_Owner_SystemLocalToWorldTransposedRow1z 204 | Engine_Owner_SystemLocalToWorldTransposedRow1w 208 | Engine_Owner_SystemLocalToWorldTransposedRow2x 212 | Engine_Owner_SystemLocalToWorldTransposedRow2y 216 | Engine_Owner_SystemLocalToWorldTransposedRow2z 220 | Engine_Owner_SystemLocalToWorldTransposedRow2w 224 | Engine_Owner_SystemLocalToWorldTransposedRow3x 228 | Engine_Owner_SystemLocalToWorldTransposedRow3y 232 | Engine_Owner_SystemLocalToWorldTransposedRow3z 236 | Engine_Owner_SystemLocalToWorldTransposedRow3w 240 | Engine_Owner_SystemWorldToLocalTransposedRow0x 244 | Engine_Owner_SystemWorldToLocalTransposedRow0y 248 | Engine_Owner_SystemWorldToLocalTransposedRow0z 252 | Engine_Owner_SystemWorldToLocalTransposedRow0w 256 | Engine_Owner_SystemWorldToLocalTransposedRow1x 260 | Engine_Owner_SystemWorldToLocalTransposedRow1y 264 | Engine_Owner_SystemWorldToLocalTransposedRow1z 268 | Engine_Owner_SystemWorldToLocalTransposedRow1w 272 | Engine_Owner_SystemWorldToLocalTransposedRow2x 276 | Engine_Owner_SystemWorldToLocalTransposedRow2y 280 | Engine_Owner_SystemWorldToLocalTransposedRow2z 284 | Engine_Owner_SystemWorldToLocalTransposedRow2w 288 | Engine_Owner_SystemWorldToLocalTransposedRow3x 292 | Engine_Owner_SystemWorldToLocalTransposedRow3y 296 | Engine_Owner_SystemWorldToLocalTransposedRow3z 300 | Engine_Owner_SystemWorldToLocalTransposedRow3w 304 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 308 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 312 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 316 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 320 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 324 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 328 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 332 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 368 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 372 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 376 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 380 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 384 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 388 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 392 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 396 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 432 | Engine_Owner_Rotationx 436 | Engine_Owner_Rotationy 440 | Engine_Owner_Rotationz 444 | Engine_Owner_Rotationw 448 | Engine_Owner_Positionx 452 | Engine_Owner_Positiony 456 | Engine_Owner_Positionz 460 | Engine_Owner_Positionw 464 | Engine_Owner_Velocityx 468 | Engine_Owner_Velocityy 472 | Engine_Owner_Velocityz 476 | Engine_Owner_Velocityw 480 | Engine_Owner_SystemXAxisx 484 | Engine_Owner_SystemXAxisy 488 | Engine_Owner_SystemXAxisz 492 | Engine_Owner_SystemXAxisw 496 | Engine_Owner_SystemYAxisx 500 | Engine_Owner_SystemYAxisy 504 | Engine_Owner_SystemYAxisz 508 | Engine_Owner_SystemYAxisw 512 | Engine_Owner_SystemZAxisx 516 | Engine_Owner_SystemZAxisy 520 | Engine_Owner_SystemZAxisz 524 | Engine_Owner_SystemZAxisw 528 | Engine_Owner_Scalex 532 | Engine_Owner_Scaley 536 | Engine_Owner_Scalez 540 | Engine_Owner_Scalew 544 | Engine_Emitter_NumParticles 548 | Engine_Emitter_TotalSpawnedParticles 552 | Engine_Emitter_SpawnCountScale 556 | Emitter_Age 560 | Emitter_RandomSeed 564 | Engine_Emitter_PaddingInt32_0 568 | Engine_Emitter_PaddingInt32_1 572 | Engine_Emitter_PaddingInt32_2 576 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 580 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 584 | Constants_Emitter_ScratchModule_01_NormalaizedPosition 588 | Constants_Emitter_ScratchModule_01_Radius 592 | 1 596 | 9.99999975e-06 600 | 9.99999975e-05 604 | True 608 | False 612 | 3 616 | 0 ------------------------------- Byte Code (71 Ops) ------------------------------- 0 | [R][0] = InputData(0, 0); 1 | [R][1] = InputData(0, 5); 2 | [R][2] = InputData(0, 6); 3 | [R][3] = InputData(0, 7); 4 | [R][4] = InputData(0, 8); 5 | [R][5] = InputData(0, 9); 6 | [R][6] = InputData(0, 10); 7 | [R][7] = InputData(0, 18); 8 | [R][8] = InputData(0, 19); 9 | [R][9] = InputData(0, 20); 10 | [R][10] = InputData(0, 21); 11 | [R][11] = InputData(0, 22); 12 | [R][12] = InputData(0, 23); 13 | [R][13] = InputData(0, 24); 14 | [R][14] = InputData(0, 25); 15 | [R][15] = InputData(0, 26); 16 | [R][16] = InputData(0, 27); 17 | OP_85(C[592]); 18 | R[17] = OP_1(R[0], C[0]); 19 | R[0] = OP_30(R[4], C[596]); 20 | R[18] = OP_2(R[0], C[600]); 21 | R[19] = OP_37(R[17], R[18]); 22 | R[18] = OP_43(R[19], C[604], C[608]); 23 | R[19] = OP_4(R[17], R[0]); 24 | OP_86; 25 | OP_85(C[612]); 26 | AudioSpectrum_EmitterNewAudioSpectrum[func0](C[584], C[616], R[0]); 27 | R[20] = OP_3(R[2], R[2]); 28 | R[21] = OP_5(R[1], R[1], R[20]); 29 | R[20] = OP_5(R[3], R[3], R[21]); 30 | R[21] = OP_8(R[20]); 31 | R[20] = OP_3(R[1], R[21]); 32 | R[22] = OP_3(R[2], R[21]); 33 | R[23] = OP_3(R[3], R[21]); 34 | R[21] = OP_3(R[20], C[588]); 35 | R[20] = OP_3(R[22], C[588]); 36 | R[22] = OP_3(R[23], C[588]); 37 | R[23] = OP_3(R[0], R[21]); 38 | R[21] = OP_3(R[0], R[20]); 39 | R[20] = OP_3(R[0], R[22]); 40 | SampleColorCurve_EmitterColor[func1](R[0], R[22], R[24], R[25], R[26]); 41 | OP_86; 42 | [R][0] = AcquireIndex(0, [R][18]); 43 | OutputData(0, 0, [R][0], [R][17]); 44 | OutputData(0, 1, [R][0], [R][22]); 45 | OutputData(0, 2, [R][0], [R][24]); 46 | OutputData(0, 3, [R][0], [R][25]); 47 | OutputData(0, 4, [R][0], [R][26]); 48 | OutputData(0, 5, [R][0], [R][1]); 49 | OutputData(0, 6, [R][0], [R][2]); 50 | OutputData(0, 7, [R][0], [R][3]); 51 | OutputData(0, 8, [R][0], [R][4]); 52 | OutputData(0, 9, [R][0], [R][5]); 53 | OutputData(0, 10, [R][0], [R][6]); 54 | OutputData(0, 11, [R][0], [R][19]); 55 | OutputData(0, 12, [R][0], [R][23]); 56 | OutputData(0, 13, [R][0], [R][21]); 57 | OutputData(0, 14, [R][0], [R][20]); 58 | OutputData(0, 15, [R][0], [R][14]); 59 | OutputData(0, 16, [R][0], [R][15]); 60 | OutputData(0, 17, [R][0], [R][16]); 61 | OutputData(0, 18, [R][0], [R][7]); 62 | OutputData(0, 19, [R][0], [R][8]); 63 | OutputData(0, 20, [R][0], [R][9]); 64 | OutputData(0, 21, [R][0], [R][10]); 65 | OutputData(0, 22, [R][0], [R][11]); 66 | OutputData(0, 23, [R][0], [R][12]); 67 | OutputData(0, 24, [R][0], [R][13]); 68 | OutputData(0, 25, [R][0], [R][14]); 69 | OutputData(0, 26, [R][0], [R][15]); 70 | OutputData(0, 27, [R][0], [R][16]); ------------------------------- (G{|^1a^, T<$@j)'LM  \<$@j)'LM2e:!9EFEC2754688770EFEEE238A26C4F1C4DefaultGfEANiagaraScript /Niagara/DefaultAssets/DefaultModule.DefaultModule-o M-RعeQ+(1CPUSim<A1\Y`౹TMeWN J1J1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2e:!9EFEC2754688770EFEEE238A26C4F1C4DefaultGfEANiagaraScript /Niagara/DefaultAssets/DefaultModule.DefaultModule-o M-RعeQ+(1CPUSim<A1\Y`౹TMeWN J1J1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2e:!9EFEC2754688770EFEEE238A26C4F1C4DefaultGfEANiagaraScript /Niagara/DefaultAssets/DefaultModule.DefaultModule-o M-RعeQ+(1CPUSim<A1\Y`౹TMeWN J1J1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2BMG{ZVNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterSpawnScripto M-RعeQ+(1&Emitter.LocalspaceCPUSim<A1\xSu_{i֊vl@;:EJ1JU1\&]j1h?ґZ``k1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2BMG 1 %@j)'%@j)'%@j)' %@j)'%@j)'%@j)'%@j)'%@j)' %@j)'$%@j)'(%@j)'10\,?@E ?PG[WNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterUpdateScripto M-RعeQ+(1&Emitter.LocalspaceCPUSim<A1\&]j1h?ґZ``kJ1JU1\xSu_{i֊vl@;:E1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2BMG (1&5%%@j)'%@j)'%@j)' %@j)'%@j)'%@j)' %@j)'$%@j)'(%@j)',%@j)'0%@j)'<%@j)'@%@j)'D%@j)'H%@j)'T%@j)'`%@j)'l%@j)'|%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)' %@j)'%@j)'%@j)'%@j)'%@j)' %@j)'$%@j)'0%@j)'18\4o;Eo:@F?????? A A A????@????@@PG?@B<FzDAB????? A?BL?@FXTNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:GPUComputeScriptao M-RعeQ+(1CInterpolatedSpawnEmitter.LocalspaceGPUComputeSimEM<A1\OĞ'1uJ1yDJD1\OĞ'1u1\8C|ڽc&iAN YI1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1 P<$@j)'K15KLMHM:<$@j)'K1Kl1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 l1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 LMHM<$@j)'K15KLMHM%<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHM1 3298TSZV// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { int Emitter_SpawnParticlesInGrid_GridLocationXCount; int Emitter_SpawnParticlesInGrid_GridLocationYCount; int Emitter_SpawnParticlesInGrid_GridLocationZCount; float4 Constants_Emitter_GridLocation_XYZDimensions; float4 Constants_Emitter_GridLocation_Offset; float4 Constants_Emitter_GridLocation_RandomizePlacementWithinCell; float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float4 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float4 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float4 Constants_Emitter_TorusLocation_NonUniformScale; float4 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; int Constants_Emitter_CurlNoiseForce001_RandomSeed; float Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float4 Constants_Emitter_CurlNoiseForce001_PanNoiseField; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce001_NoiseStrength; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float4 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_PointAttractionForce_AttractionRadius; float Constants_Emitter_PointAttractionForce_AttractionStrength; float Constants_Emitter_PointAttractionForce_FalloffExponent; float Constants_Emitter_PointAttractionForce_KillRadius; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_VortexForce_InfluenceFalloffRadius; float4 Constants_Emitter_VortexForce_VortexAxis; float Constants_Emitter_VortexForce_VortexForceAmount; float Constants_Emitter_VortexForce_OriginPullAmount; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_02_NormalaizedPosition; float Constants_Emitter_ScratchModule_02_Radius; float Emitter_SpawnRate; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; int PREV_Engine_Emitter_PaddingInt32_2; } cbuffer PREV_FNiagaraExternalParameters { int PREV_Emitter_SpawnParticlesInGrid_GridLocationXCount; int PREV_Emitter_SpawnParticlesInGrid_GridLocationYCount; int PREV_Emitter_SpawnParticlesInGrid_GridLocationZCount; float4 PREV_Constants_Emitter_GridLocation_XYZDimensions; float4 PREV_Constants_Emitter_GridLocation_Offset; float4 PREV_Constants_Emitter_GridLocation_RandomizePlacementWithinCell; float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float4 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float4 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float4 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float4 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; int PREV_Constants_Emitter_CurlNoiseForce001_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float4 PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce001_NoiseStrength; int PREV_Constants_Emitter_CurlNoiseForce_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency; float4 PREV_Constants_Emitter_CurlNoiseForce_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength; float PREV_Constants_Emitter_PointAttractionForce_AttractionRadius; float PREV_Constants_Emitter_PointAttractionForce_AttractionStrength; float PREV_Constants_Emitter_PointAttractionForce_FalloffExponent; float PREV_Constants_Emitter_PointAttractionForce_KillRadius; float PREV_Constants_Emitter_Drag_Drag; float PREV_Constants_Emitter_Drag_RotationalDrag; float PREV_Constants_Emitter_VortexForce_InfluenceFalloffRadius; float4 PREV_Constants_Emitter_VortexForce_VortexAxis; float PREV_Constants_Emitter_VortexForce_VortexForceAmount; float PREV_Constants_Emitter_VortexForce_OriginPullAmount; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_ScratchModule_02_NormalaizedPosition; float PREV_Constants_Emitter_ScratchModule_02_Radius; float PREV_Emitter_SpawnRate; } struct FParamMap0_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; float3 VortexOrigin; }; struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles { float3 Direction; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 { FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles Particles; }; struct FParamMap0_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_PointAttractionForce { float AttractionRadius; float AttractionStrength; float3 AttractorPosition; float FalloffExponent; float KillRadius; bool KillWithinRadius; bool UseFalloff; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_GridLocation { float3 GridSpacing; float3 GridUVW; float3 NormalizedArraylocation; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_GridLocation GridLocation; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_VortexForce { float ForceAmount; float InverseNormalizedRange; float NormalizedRange; float3 OriginVector; float3 ParticlesPosition; float3 VortexOrigin; float3 VortexVector; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_PointAttractionForce { float3 PointOriginVec; float PointOriginVecLength; }; struct FParamMap0_Local_GridLocation { int GridXCount; int GridYCount; int GridZCount; float3 InitialGridSpacing; float3 LocalSpacePosition; float3 XYZCountAsVector; }; struct FParamMap0_Local_CurlNoiseForce001 { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Local_GridLocation GridLocation; FParamMap0_Local_PointAttractionForce PointAttractionForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; FParamMap0_Local_VortexForce VortexForce; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_GridLocation { int CoordinateSpace; int ExecIndex; float3 GridOrigin; int GridXCount; int GridYCount; int GridZCount; bool JitterInsideGridCells; float3 Offset; float3 RandomizePlacementWithinCell; float3 XYZDimensions; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter_SpawnParticlesInGrid { int GridLocationXCount; int GridLocationYCount; int GridLocationZCount; }; struct FParamMap0_Emitter { float Age; bool LocalSpace; int RandomSeed; FParamMap0_Emitter_SpawnParticlesInGrid SpawnParticlesInGrid; float SpawnRate; }; struct FParamMap0_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_PointAttractionForce { float AttractionRadius; float AttractionStrength; float FalloffExponent; float KillRadius; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter_GridLocation { float3 Offset; float3 RandomizePlacementWithinCell; float3 XYZDimensions; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_GridLocation GridLocation; FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_PointAttractionForce PointAttractionForce; FParamMap0_Constants_Emitter_ScratchModule_02 ScratchModule_02; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; FParamMap0_Constants_Emitter_VortexForce VortexForce; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_DataInstance DataInstance; FParamMap0_Drag Drag; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_GridLocation GridLocation; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_PointAttractionForce PointAttractionForce; FParamMap0_ScratchModule_02 ScratchModule_02; FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 SetVariables_329408A848D6370CD518C495994F1D42; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; FParamMap0_VortexForce VortexForce; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void GridLocation_SimulationPosition001_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context); void GridLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void GridLocation_Emitter_Func_(inout FSimulationContext Context); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context); void VortexForce_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_02_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void GridLocation_SimulationPosition001_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant18 = true; float3 Constant19 = float3(0,0,0); float3 Vector_IfResult; if(Constant18) { Vector_IfResult = Constant19; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context) { int Constant27 = 0; bool Result19 = NiagaraAll(In_SourceSpace == Constant27); int Constant28 = 0; bool Result20 = NiagaraAll(In_DestinationSpace == Constant28); bool Result21 = Result19 && Result20; int Constant29 = 1; bool Result22 = NiagaraAll(In_SourceSpace == Constant29); int Constant30 = 1; bool Result23 = NiagaraAll(In_DestinationSpace == Constant30); bool Result24 = Result22 && Result23; bool Result25 = Result21 || Result24; int Constant31 = 2; bool Result26 = NiagaraAll(In_SourceSpace == Constant31); int Constant32 = 2; bool Result27 = NiagaraAll(In_DestinationSpace == Constant32); bool Result28 = Result26 && Result27; bool Result29 = Result25 || Result28; bool Result30 = Result19 && Result27; bool Result31 = Result26 && Result20; bool Result32 = Result30 || Result31; bool Result33 = In_bLocalSpace && Result32; bool Result34 = Result29 || Result33; bool Result35 = !In_bLocalSpace; bool Result36 = Result19 && Result23; bool Result37 = Result22 && Result20; bool Result38 = Result36 || Result37; bool Result39 = Result35 && Result38; bool Result40 = Result34 || Result39; bool Result41 = In_bLocalSpace && Result36; bool Result42 = Result26 && Result23; bool Result43 = Result41 || Result42; bool Result44 = Result35 && Result31; bool Result45 = Result43 || Result44; float4x4 Matrix_IfResult1; if(Result45) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result40; Out_OutTransform = Matrix_IfResult1; } void GridLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant26 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant26, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, Context); float3 Result46 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result46; } Out_OutVector = Vector_IfResult2; } void GridLocation_Emitter_Func_(inout FSimulationContext Context) { float3 Output1; Output1.x = Context.MapSpawn.GridLocation.GridXCount; Output1.y = Context.MapSpawn.GridLocation.GridYCount; Output1.z = Context.MapSpawn.GridLocation.GridZCount; Context.MapSpawn.Local.GridLocation.GridXCount = Context.MapSpawn.GridLocation.GridXCount; Context.MapSpawn.Local.GridLocation.GridYCount = Context.MapSpawn.GridLocation.GridYCount; Context.MapSpawn.Local.GridLocation.GridZCount = Context.MapSpawn.GridLocation.GridZCount; Context.MapSpawn.Local.GridLocation.XYZCountAsVector = Output1; int Result1 = Context.MapSpawn.Local.GridLocation.GridXCount * Context.MapSpawn.Local.GridLocation.GridYCount; int Result2 = Context.MapSpawn.GridLocation.ExecIndex / Result1; int Result3 = Context.MapSpawn.Local.GridLocation.GridXCount * Result2; int Result4 = Context.MapSpawn.Local.GridLocation.GridYCount * Result3; int Result5 = Context.MapSpawn.GridLocation.ExecIndex - Result4; int Result6 = ModuloPrecise(Result5, Context.MapSpawn.Local.GridLocation.GridXCount); int Result7 = Result5 / Context.MapSpawn.Local.GridLocation.GridXCount; float3 Output11; Output11.x = Result6; Output11.y = Result7; Output11.z = Result2; Context.MapSpawn.Local.GridLocation.InitialGridSpacing = Output11; float3 Result8 = Context.MapSpawn.Local.GridLocation.InitialGridSpacing / Context.MapSpawn.Local.GridLocation.XYZCountAsVector; Context.MapSpawn.OUTPUT_VAR.GridLocation.NormalizedArraylocation = Result8; Context.MapSpawn.OUTPUT_VAR.GridLocation.GridUVW = Result8; float3 Result9 = Context.MapSpawn.Constants.Emitter.GridLocation.Offset * Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions; float3 Constant21 = float3(1,1,1); float3 Result10 = rand(Constant21); float3 Constant22 = float3(0.5,0.5,0.5); float3 Result11 = Result10 - Constant22; float3 Result12 = Result11 * Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions * Context.MapSpawn.Constants.Emitter.GridLocation.RandomizePlacementWithinCell; float Constant23 = 0.5; float3 Result13 = Context.MapSpawn.Local.GridLocation.XYZCountAsVector * Constant23; float3 Result14 = Context.MapSpawn.Local.GridLocation.InitialGridSpacing - Result13; float3 Result15 = Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions * Result14; float3 Result16 = Result12 + Result15; float3 Vector_IfResult1; if(Context.MapSpawn.GridLocation.JitterInsideGridCells) { Vector_IfResult1 = Result16; } else { Vector_IfResult1 = Result15; } float3 Result17 = Result9 + Vector_IfResult1; float3 Result18 = Context.MapSpawn.Local.GridLocation.InitialGridSpacing / Context.MapSpawn.Local.GridLocation.XYZCountAsVector; Context.MapSpawn.Local.GridLocation.LocalSpacePosition = Result17; Context.MapSpawn.OUTPUT_VAR.GridLocation.GridSpacing = Result18; int Constant24 = 0; bool Constant25 = true; float3 GridLocation_NF_TransformVector_Emitter_Func_Output_OutVector; GridLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.GridLocation.LocalSpacePosition, Context.MapSpawn.GridLocation.CoordinateSpace, Constant24, Constant25, GridLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result47 = Context.MapSpawn.GridLocation.GridOrigin + GridLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.Particles.Position = Result47; } void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant36 = true; float3 Constant37 = float3(0,0,0); float3 Vector_IfResult3; if(Constant36) { Vector_IfResult3 = Constant37; } else { Vector_IfResult3 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult3; } void GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant53 = false; int Constant54 = 0; bool Result48 = NiagaraAll(In_RandomnessMode == Constant54); bool Result49 = Constant53 && Result48; int Constant55 = 1; bool Result50 = NiagaraAll(In_RandomnessMode == Constant55); bool Result51 = Result49 || Result50; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant56 = 0; int Constant57 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant56; Seed3_IfResult = Constant57; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant58 = -1; int Constant59 = -1; int Constant60 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result51) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant58; Seed2_IfResult1 = Constant59; Seed3_IfResult1 = Constant60; } NiagaraRandInfo Output12; Output12.Seed1 = Seed1_IfResult1; Output12.Seed2 = Seed2_IfResult1; Output12.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output12; Out_UseDeterministicRandoms = Result51; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant48 = (0); bool Constant49 = false; int Constant50 = 0; int Constant51 = (0); bool Constant52 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(In_Seed, Constant48, In_OverrideSeed, Constant50, Constant51, Constant52, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms, Context); float Result52 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed3; float Result53 = rand_float(Result52, Seed1, Seed2, Seed3); float Result54 = rand_float(Result52); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result53; } else { Random_IfResult = Result54; } float Result55 = In_Min + Random_IfResult; Out_Result = Result55; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant78 = (0); bool Constant79 = false; int Constant80 = 0; int Constant81 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(In_Seed, Constant78, In_OverrideSeed, Constant80, Constant81, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1, Context); float Result57 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed3; float Result58 = rand(Result57, Seed11, Seed21, Seed31); float Result59 = rand(Result57); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result58; } else { Random_IfResult1 = Result59; } float Result60 = In_Min + Random_IfResult1; Out_Result = Result60; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant88 = 1; float Result65 = cos(In_U*(TWO_PI/Constant88)); float Constant89 = 1; float Result66 = sin(In_U*(TWO_PI/Constant89)); float Constant90 = 1; float Result67 = cos(In_V*(TWO_PI/Constant90)); float Constant91 = 1; float Result68 = sin(In_V*(TWO_PI/Constant91)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result65, Result66, Result67, Result68, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant94 = true; float4x4 Matrix_IfResult2; float4x4 Matrix001_IfResult1; if(In_ApplyScale) { Matrix_IfResult2 = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult1 = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult2 = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult1 = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal1; float4x4 TransformBase_Func_Output_OutTransform1; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult2, Matrix001_IfResult1, Constant94, TransformBase_Func_Output_bUseOriginal1, TransformBase_Func_Output_OutTransform1, Context); float3 Result74 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform1).xyz; float3 Vector_IfResult4; if(TransformBase_Func_Output_bUseOriginal1) { Vector_IfResult4 = In_InVector; } else { Vector_IfResult4 = Result74; } Out_OutVector = Vector_IfResult4; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant73 = 0; float Constant74 = 999; float Result56 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant73,Constant74); float Constant75 = 1; int Constant76 = 0; bool Constant77 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant76; Override_IfResult = Constant77; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result56, Constant75, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant82 = 0; float Constant83 = 1; float Result61 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant82,Constant83); float Constant84 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result61, Constant84, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant85 = 0; float Constant86 = 1; float Result62 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant85,Constant86); float Constant87 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result62, Constant87, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result63 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result64 = Result63 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result64, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result69 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result70 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result71 = normalize(Result70); float3 Result72 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result73 = normalize(Result72); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result69; Tangent_IfResult = Result71; Normal_IfResult = Result73; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant92 = 0; bool Constant93 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant92, Constant93, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result75 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result76 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result75; int Constant95 = 0; bool Constant96 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant95, Constant96, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant97 = 0; bool Constant98 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant97, Constant98, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result77 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result76; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result77; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_(inout FSimulationContext Context) { Context.MapSpawn.Particles.Direction = Context.MapSpawn.SetVariables_329408A848D6370CD518C495994F1D42.Particles.Direction; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result78 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result78; float Result79 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant100 = 1e-05; float Result80 = max(Context.MapUpdate.ParticleState.Lifetime, Constant100); float Constant101 = 0.0001; float Result81 = Result80 - Constant101; bool Result82 = NiagaraAll(Result79 < Result81); bool Constant102 = false; bool bool_IfResult; if(Result82) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant102; } float Result83 = Result79 / Result80; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result79; Context.MapUpdate.Particles.NormalizedAge = Result83; } void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant112 = false; float AgeAdvancement_IfResult; if(Constant112) { AgeAdvancement_IfResult = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult = Context.MapUpdate.Engine.Time; } float Constant113 = 4096; int Constant114 = 0; float Result84 = rand_float(Constant113, Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant114); Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement = AgeAdvancement_IfResult; Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset = Result84; Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition = Context.MapUpdate.CurlNoiseForce001.SamplePosition; float3 Result85 = Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition; float3 Result86 = Result85 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseFrequency; float3 Result87 = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.PanNoiseField * Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement; float3 Result88 = Result86 - Result87; float Constant115 = 125; float3 Result89 = Result88 * Constant115; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result89, SampleField_EmitterVectorField32Output_SampledValue); Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant116 = 1; Context.MapUpdate.Local.CurlNoiseForce001.Falloff = Constant116; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis; float3 Result90 = Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseStrength; float3 Result91 = Context.MapUpdate.Transient.PhysicsForce + Result90; Context.MapUpdate.Transient.PhysicsForce = Result91; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant124 = false; float AgeAdvancement_IfResult1; if(Constant124) { AgeAdvancement_IfResult1 = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult1 = Context.MapUpdate.Engine.Time; } float Constant125 = 4096; int Constant126 = 0; float Result92 = rand_float(Constant125, Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant126); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult1; Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Result92; Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Context.MapUpdate.CurlNoiseForce.SamplePosition; float3 Result93 = Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce.SamplePosition; float3 Result94 = Result93 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float Constant127 = 125; float3 Result95 = Result94 * Constant127; float3 SampleField_EmitterVectorField32Output_SampledValue1; SampleField_EmitterVectorField32(Result95, SampleField_EmitterVectorField32Output_SampledValue1); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue1; float Constant128 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant128; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result96 = Context.MapUpdate.Local.CurlNoiseForce.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result97 = Context.MapUpdate.Transient.PhysicsForce + Result96; Context.MapUpdate.Transient.PhysicsForce = Result97; } void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant129 = true; float3 Constant130 = float3(0,0,0); float3 Vector_IfResult5; if(Constant129) { Vector_IfResult5 = Constant130; } else { Vector_IfResult5 = Context.MapUpdate.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult5; } void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant138 = true; float4x4 Matrix_IfResult3; float4x4 Matrix001_IfResult2; if(In_ApplyScale) { Matrix_IfResult3 = Context.MapUpdate.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult2 = Context.MapUpdate.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult3 = Context.MapUpdate.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult2 = Context.MapUpdate.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal2; float4x4 TransformBase_Func_Output_OutTransform2; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult3, Matrix001_IfResult2, Constant138, TransformBase_Func_Output_bUseOriginal2, TransformBase_Func_Output_OutTransform2, Context); float3 Result98 = mul(float4(In_InPosition,1.0),TransformBase_Func_Output_OutTransform2).xyz; float3 Vector_IfResult6; if(TransformBase_Func_Output_bUseOriginal2) { Vector_IfResult6 = In_InPosition; } else { Vector_IfResult6 = Result98; } Out_OutPosition = Vector_IfResult6; } void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context) { int Constant135 = 0; int Output13; Output13 = Constant135; int Constant136 = 0; bool Constant137 = false; float3 PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_NF_TransformPosition_Emitter_Func_(Context.MapUpdate.Particles.Position, Output13, Constant136, Constant137, PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition, Context); float3 Result99 = Context.MapUpdate.PointAttractionForce.AttractorPosition - PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; float3 Constant139 = float3(0,0,0.0001); float3 Result100 = Result99 + Constant139; float Result101 = length(Result100); Context.MapUpdate.Local.PointAttractionForce.PointOriginVec = Result100; Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength = Result101; float3 Result102 = normalize(Context.MapUpdate.Local.PointAttractionForce.PointOriginVec); bool Result103 = NiagaraAll(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength > Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius); float Constant140 = 0; float Result104 = pow(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength,Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent); float Falloff_IfResult; if(Context.MapUpdate.PointAttractionForce.UseFalloff) { Falloff_IfResult = Result104; } else { Falloff_IfResult = Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength; } float Result105 = Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength * Falloff_IfResult; float float_IfResult; if(Result103) { float_IfResult = Constant140; } else { float_IfResult = Result105; } float3 Result106 = Result102 * float_IfResult; float3 Result107 = Context.MapUpdate.Transient.PhysicsForce + Result106; Context.MapUpdate.Transient.PhysicsForce = Result107; bool Result108 = NiagaraAll(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength < Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius); bool Result109 = !Result108; bool Constant141 = true; bool RadiusCheck_IfResult; if(Context.MapUpdate.PointAttractionForce.KillWithinRadius) { RadiusCheck_IfResult = Result109; } else { RadiusCheck_IfResult = Constant141; } bool Result110 = Context.MapUpdate.DataInstance.Alive && RadiusCheck_IfResult; Context.MapUpdate.DataInstance.Alive = Result110; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result111 = Context.MapUpdate.Constants.Emitter.Drag.Drag + Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.Transient.PhysicsDrag = Result111; Context.MapUpdate.Transient.PhysicsRotationalDrag = Context.MapUpdate.Transient.PhysicsRotationalDrag; } void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant144 = true; float3 Constant145 = float3(0,0,0); float3 Vector_IfResult7; if(Constant144) { Vector_IfResult7 = Constant145; } else { Vector_IfResult7 = Context.MapUpdate.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult7; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result113 = length(In_V); bool Result114 = NiagaraAll(Result113 < In_Threshold); float Result115 = length(In_Fallback); float3 Vector_IfResult8; float float_IfResult1; if(Result114) { Vector_IfResult8 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult8 = In_V; float_IfResult1 = Result113; } float3 Result116 = Vector_IfResult8 / float_IfResult1; float3 Vector_IfResult9; float float_IfResult2; if(Result114) { Vector_IfResult9 = In_Fallback; float_IfResult2 = Result115; } else { Vector_IfResult9 = Result116; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult9; Out_Length = float_IfResult2; Out_BelowThreshold = Result114; } void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context) { float3 Result112 = In_StartPosition - In_EndPosition; float Constant152 = 1e-05; float Constant153 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(Result112, In_FallbackVector, Constant152, Constant153, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant154 = 0; float float_IfResult3; if(DirectionAndLengthSafe_Func_Output_BelowThreshold) { float_IfResult3 = Constant154; } else { float_IfResult3 = DirectionAndLengthSafe_Func_Output_Length; } float Result117 = min(float_IfResult3, In_Distance); float Constant155 = 0.0001; float Result118 = max(In_Distance, Constant155); float Result119 = Result117 / Result118; float Result120 = 1 - Result119; bool Result121 = NiagaraAll(float_IfResult3 <= In_Distance); Out_NormalizedRange = Result119; Out_InverseNormalizedRange = Result120; Out_NormalizedVectorBetweenPositions = DirectionAndLengthSafe_Func_Output_Direction; Out_WithinRange = Result121; } void VortexForce_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.VortexForce.VortexOrigin = Context.MapUpdate.VortexForce.VortexOrigin; Context.MapUpdate.Local.VortexForce.ParticlesPosition = Context.MapUpdate.Particles.Position; float3 Constant151 = float3(0,0,1); float NormalizeDistanceRange_Func_Output_NormalizedRange; float NormalizeDistanceRange_Func_Output_InverseNormalizedRange; float3 NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; bool NormalizeDistanceRange_Func_Output_WithinRange; NormalizeDistanceRange_Func_(Context.MapUpdate.Local.VortexForce.VortexOrigin, Context.MapUpdate.Local.VortexForce.ParticlesPosition, Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius, Constant151, NormalizeDistanceRange_Func_Output_NormalizedRange, NormalizeDistanceRange_Func_Output_InverseNormalizedRange, NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions, NormalizeDistanceRange_Func_Output_WithinRange, Context); float3 Result122 = cross(NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions,Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis); Context.MapUpdate.Local.VortexForce.NormalizedRange = NormalizeDistanceRange_Func_Output_NormalizedRange; Context.MapUpdate.Local.VortexForce.InverseNormalizedRange = NormalizeDistanceRange_Func_Output_InverseNormalizedRange; Context.MapUpdate.Local.VortexForce.OriginVector = NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; Context.MapUpdate.Local.VortexForce.VortexVector = Result122; Context.MapUpdate.Local.VortexForce.ForceAmount = Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount; float3 Constant156 = float3(0,0,0); float Result123 = -(Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount); float3 Result124 = lerp(Context.MapUpdate.Local.VortexForce.OriginVector,Constant156,Result123); float3 Result125 = Context.MapUpdate.Local.VortexForce.VortexVector + Result124; float3 Result126 = normalize(Result125); float3 Result127 = Result126 * Context.MapUpdate.Local.VortexForce.ForceAmount + Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.Transient.PhysicsForce = Result127; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; float Constant163 = 0.0001; float Result128 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant163); float Result129 = Reciprocal(Result128); float3 Result130 = Result129 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result130; float3 Result131 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant164 = 0; float Result132 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant164); float Result133 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result132; float Constant165 = 1; float Result134 = Result133 + Constant165; float3 Result135 = Result131 / Result134; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result135; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result136 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result136; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; Context.MapUpdate.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant166 = float3(0,0,0); float Constant167 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant166; Drag_IfResult = Constant167; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_02_Emitter_Func_(inout FSimulationContext Context) { int Constant168 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.MapUpdate.Constants.Emitter.ScratchModule_02.NormalaizedPosition, Constant168, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result137 = normalize(Context.MapUpdate.Particles.Direction); float3 Result138 = Result137 * Context.MapUpdate.Constants.Emitter.ScratchModule_02.Radius; float3 Result139 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result138; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.MapUpdate.Particles.Position = Result139; Context.MapUpdate.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapSpawn.Engine.DeltaTime = 0.0f; Context.MapSpawn.Engine.InverseDeltaTime = 0.0f; Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 1; Context.MapSpawn.Particles.Lifetime = Constant; float4 Constant1 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant1; float Constant2 = 1; Context.MapSpawn.Particles.Mass = Constant2; float2 Constant3 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant3; float Constant4 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant4; float3 Constant5 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant5; float Constant6 = 0; Context.MapSpawn.Particles.MaterialRandom = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; //End Initialize Parameter Map Defaults Context.MapSpawn.GridLocation.GridXCount = Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationXCount; Context.MapSpawn.GridLocation.GridYCount = Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationYCount; Context.MapSpawn.GridLocation.GridZCount = Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationZCount; int Constant11 = (0); Context.MapSpawn.Local.GridLocation.GridXCount = Constant11; int Constant12 = (0); Context.MapSpawn.Local.GridLocation.GridYCount = Constant12; float3 Constant13 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.GridLocation.XYZCountAsVector = Constant13; int Result = ExecIndex(); Context.MapSpawn.GridLocation.ExecIndex = Result; float3 Constant14 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.GridLocation.InitialGridSpacing = Constant14; bool Constant15 = false; Context.MapSpawn.GridLocation.JitterInsideGridCells = Constant15; float3 Constant16 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.GridLocation.LocalSpacePosition = Constant16; bool Constant17 = true; float3 GridLocation_SimulationPosition001_Emitter_Func_Output_OutPosition; GridLocation_SimulationPosition001_Emitter_Func_(GridLocation_SimulationPosition001_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = GridLocation_SimulationPosition001_Emitter_Func_Output_OutPosition; Context.MapSpawn.GridLocation.GridOrigin = Context.MapSpawn.Particles.Position; int Constant20 = 2; Context.MapSpawn.GridLocation.CoordinateSpace = Constant20; EnterStatScope(1 /**GridLocation_Emitter_Func_*/); GridLocation_Emitter_Func_(Context); ExitStatScope(/**GridLocation_Emitter_Func_*/); bool Constant33 = true; bool Constant34 = true; bool Constant35 = false; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant33; Context.MapSpawn.InitializeParticle.WriteColor = Constant34; Context.MapSpawn.InitializeParticle.WritePosition = Constant35; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant38 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant38; bool Constant39 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant39; bool Constant40 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant40; bool Constant41 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant41; bool Constant42 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant42; float Constant43 = 0; float Constant44 = 1; int Constant45 = -1; int Constant46 = 0; bool Constant47 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant43, Constant44, Constant45, Constant46, Constant47, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; EnterStatScope(2 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant61 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant61; int Constant62 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant62; bool Constant63 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant63; bool Constant64 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant64; float Constant65 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant65; float Constant66 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant66; float Constant67 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant67; float3 Constant68 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant68; float3 Constant69 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant69; float3 Constant70 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant70; bool Constant71 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant71; int Constant72 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant72; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_329408A848D6370CD518C495994F1D42.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(4 /**SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_*/); SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_(Context); ExitStatScope(/**SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues Context.MapSpawn.Particles.PreviousVelocity = Context.MapSpawn.Particles.Velocity; // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! bool Constant99 = true; Context.MapUpdate.DataInstance.Alive = Constant99; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(5 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant103 = false; int Constant104 = (0); float Constant105 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement = Constant105; float Constant106 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset = Constant106; bool Constant107 = true; Context.MapUpdate.CurlNoiseForce001.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant108 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition = Constant108; float3 Constant109 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise = Constant109; float Constant110 = 1; Context.MapUpdate.Local.CurlNoiseForce001.Falloff = Constant110; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant111 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant111; EnterStatScope(6 /**CurlNoiseForce001_Emitter_Func_*/); CurlNoiseForce001_Emitter_Func_(Constant104, Context); ExitStatScope(/**CurlNoiseForce001_Emitter_Func_*/); bool Constant117 = false; int Constant118 = (0); float Constant119 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant119; float Constant120 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant120; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant121 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant121; float3 Constant122 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant122; float Constant123 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant123; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; EnterStatScope(7 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant118, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float3 PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_SimulationPosition_Emitter_Func_(PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.PointAttractionForce.AttractorPosition = PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant131 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVec = Constant131; float Constant132 = (0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength = Constant132; bool Constant133 = true; Context.MapUpdate.PointAttractionForce.UseFalloff = Constant133; bool Constant134 = false; Context.MapUpdate.PointAttractionForce.KillWithinRadius = Constant134; EnterStatScope(8 /**PointAttractionForce_Emitter_Func_*/); PointAttractionForce_Emitter_Func_(Context); ExitStatScope(/**PointAttractionForce_Emitter_Func_*/); float Constant142 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant142; float Constant143 = 0; Context.MapUpdate.Transient.PhysicsRotationalDrag = Constant143; EnterStatScope(9 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); float3 VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; VortexForce_SimulationPosition_Emitter_Func_(VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.VortexForce.VortexOrigin = VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant146 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexOrigin = Constant146; float3 Constant147 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.ParticlesPosition = Constant147; float3 Constant148 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.OriginVector = Constant148; float3 Constant149 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexVector = Constant149; float Constant150 = (0.0); Context.MapUpdate.Local.VortexForce.ForceAmount = Constant150; EnterStatScope(10 /**VortexForce_Emitter_Func_*/); VortexForce_Emitter_Func_(Context); ExitStatScope(/**VortexForce_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant157 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant157; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; float3 Constant158 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant158; float3 Constant159 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant159; float Constant160 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant160; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.PreviousVelocity; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant161 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant161; bool Constant162 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant162; EnterStatScope(11 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(12 /**ScratchModule_02_Emitter_Func_*/); ScratchModule_02_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_02_Emitter_Func_*/); //End Update Script! } float3 TilingAxes_Local_CurlNoiseForce001_VectorField; float3 Dimensions_Local_CurlNoiseForce001_VectorField; float3 MinBounds_Local_CurlNoiseForce001_VectorField; float3 MaxBounds_Local_CurlNoiseForce001_VectorField; Texture3D VectorFieldTexture_Local_CurlNoiseForce001_VectorField; SamplerState VectorFieldSampler_Local_CurlNoiseForce001_VectorField; float3 TilingAxes_Emitter_VectorField32; float3 Dimensions_Emitter_VectorField32; float3 MinBounds_Emitter_VectorField32; float3 MaxBounds_Emitter_VectorField32; Texture3D VectorFieldTexture_Emitter_VectorField32; SamplerState VectorFieldSampler_Emitter_VectorField32; float3 TilingAxes_Local_CurlNoiseForce_VectorField; float3 Dimensions_Local_CurlNoiseForce_VectorField; float3 MinBounds_Local_CurlNoiseForce_VectorField; float3 MaxBounds_Local_CurlNoiseForce_VectorField; Texture3D VectorFieldTexture_Local_CurlNoiseForce_VectorField; SamplerState VectorFieldSampler_Local_CurlNoiseForce_VectorField; Buffer CurveLUT_Emitter_Color; float MinTime_Emitter_Color; float MaxTime_Emitter_Color; float InvTimeRange_Emitter_Color; float CurveLUTNumMinusOne_Emitter_Color; float TimeToLUTFraction_Emitter_Color(float T) { return saturate((T - MinTime_Emitter_Color) * InvTimeRange_Emitter_Color); } float SampleCurve_Emitter_Color(float T) { return CurveLUT_Emitter_Color[(uint)T]; } Buffer SpectrumBuffer_Emitter_NewAudioSpectrum; int NumChannels_Emitter_NewAudioSpectrum; int Resolution_Emitter_NewAudioSpectrum; void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_Sample) { float3 SamplePoint = (In_SamplePoint - MinBounds_Emitter_VectorField32) / (MaxBounds_Emitter_VectorField32 - MinBounds_Emitter_VectorField32); Out_Sample = Texture3DSample(VectorFieldTexture_Emitter_VectorField32, VectorFieldSampler_Emitter_VectorField32, SamplePoint).xyz; } void SampleColorCurve_EmitterColor(in float In_X, out float4 Out_Value) { float RemappedX = TimeToLUTFraction_Emitter_Color(In_X) * CurveLUTNumMinusOne_Emitter_Color; float Prev = floor(RemappedX); float Next = Prev < CurveLUTNumMinusOne_Emitter_Color ? Prev + 1.0 : Prev; float Interp = RemappedX - Prev; Prev *= 4; Next *= 4; float4 A = float4(SampleCurve_Emitter_Color(Prev), SampleCurve_Emitter_Color(Prev + 1), SampleCurve_Emitter_Color(Prev + 2), SampleCurve_Emitter_Color(Prev + 3)); float4 B = float4(SampleCurve_Emitter_Color(Next), SampleCurve_Emitter_Color(Next + 1), SampleCurve_Emitter_Color(Next + 2), SampleCurve_Emitter_Color(Next + 3)); Out_Value = lerp(A, B, Interp); } void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * Resolution_Emitter_NewAudioSpectrum; int MaxIndex = Resolution_Emitter_NewAudioSpectrum - 1; int LowerIndex = floor(FrameIndex); LowerIndex = LowerIndex < Resolution_Emitter_NewAudioSpectrum ? LowerIndex : MaxIndex; LowerIndex = LowerIndex >= 0 ? LowerIndex : 0; int UpperIndex = LowerIndex < MaxIndex ? LowerIndex + 1 : LowerIndex; float Fraction = FrameIndex - LowerIndex; Fraction = Fraction > 1.0 ? 1.0 : Fraction; Fraction = Fraction < 0.0 ? 0.0 : Fraction; float LowerValue = SpectrumBuffer_Emitter_NewAudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_NewAudioSpectrum + LowerIndex); float UpperValue = SpectrumBuffer_Emitter_NewAudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_NewAudioSpectrum + UpperIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void InitConstants(inout FSimulationContext Context) { Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationXCount = Emitter_SpawnParticlesInGrid_GridLocationXCount; Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationYCount = Emitter_SpawnParticlesInGrid_GridLocationYCount; Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationZCount = Emitter_SpawnParticlesInGrid_GridLocationZCount; Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions = Constants_Emitter_GridLocation_XYZDimensions.xyz; Context.MapSpawn.Constants.Emitter.GridLocation.Offset = Constants_Emitter_GridLocation_Offset.xyz; Context.MapSpawn.Constants.Emitter.GridLocation.RandomizePlacementWithinCell = Constants_Emitter_GridLocation_RandomizePlacementWithinCell.xyz; Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize.xy; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale.xyz; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.RandomSeed = Constants_Emitter_CurlNoiseForce001_RandomSeed; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseFrequency = Constants_Emitter_CurlNoiseForce001_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.PanNoiseField = Constants_Emitter_CurlNoiseForce001_PanNoiseField.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseStrength = Constants_Emitter_CurlNoiseForce001_NoiseStrength; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.MapUpdate.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapUpdate.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapUpdate.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapUpdate.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius = Constants_Emitter_PointAttractionForce_AttractionRadius; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength = Constants_Emitter_PointAttractionForce_AttractionStrength; Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent = Constants_Emitter_PointAttractionForce_FalloffExponent; Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius = Constants_Emitter_PointAttractionForce_KillRadius; Context.MapUpdate.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.MapUpdate.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius = Constants_Emitter_VortexForce_InfluenceFalloffRadius; Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis = Constants_Emitter_VortexForce_VortexAxis.xyz; Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount = Constants_Emitter_VortexForce_VortexForceAmount; Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount = Constants_Emitter_VortexForce_OriginPullAmount; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Constants.Emitter.ScratchModule_02.NormalaizedPosition = Constants_Emitter_ScratchModule_02_NormalaizedPosition; Context.MapUpdate.Constants.Emitter.ScratchModule_02.Radius = Constants_Emitter_ScratchModule_02_Radius; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; } void InitSpawnVariables(inout FSimulationContext Context) { Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.x = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.y = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.DataInstance.Alive=true; } void LoadUpdateVariables(inout FSimulationContext Context, int InstanceIdx) { Context.MapUpdate.Particles.Age = InputDataFloat(0, 0, InstanceIdx); Context.MapUpdate.Particles.Color.r = InputDataFloat(0, 1, InstanceIdx); Context.MapUpdate.Particles.Color.g = InputDataFloat(0, 2, InstanceIdx); Context.MapUpdate.Particles.Color.b = InputDataFloat(0, 3, InstanceIdx); Context.MapUpdate.Particles.Color.a = InputDataFloat(0, 4, InstanceIdx); Context.MapUpdate.Particles.Direction.x = InputDataFloat(0, 5, InstanceIdx); Context.MapUpdate.Particles.Direction.y = InputDataFloat(0, 6, InstanceIdx); Context.MapUpdate.Particles.Direction.z = InputDataFloat(0, 7, InstanceIdx); Context.MapUpdate.Particles.Lifetime = InputDataFloat(0, 8, InstanceIdx); Context.MapUpdate.Particles.Mass = InputDataFloat(0, 9, InstanceIdx); Context.MapUpdate.Particles.MaterialRandom = InputDataFloat(0, 10, InstanceIdx); Context.MapUpdate.Particles.NormalizedAge = InputDataFloat(0, 11, InstanceIdx); Context.MapUpdate.Particles.Position.x = InputDataFloat(0, 12, InstanceIdx); Context.MapUpdate.Particles.Position.y = InputDataFloat(0, 13, InstanceIdx); Context.MapUpdate.Particles.Position.z = InputDataFloat(0, 14, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.x = InputDataFloat(0, 15, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.y = InputDataFloat(0, 16, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.z = InputDataFloat(0, 17, InstanceIdx); Context.MapUpdate.Particles.Scale.x = InputDataFloat(0, 18, InstanceIdx); Context.MapUpdate.Particles.Scale.y = InputDataFloat(0, 19, InstanceIdx); Context.MapUpdate.Particles.Scale.z = InputDataFloat(0, 20, InstanceIdx); Context.MapUpdate.Particles.SpriteRotation = InputDataFloat(0, 21, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.x = InputDataFloat(0, 22, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.y = InputDataFloat(0, 23, InstanceIdx); Context.MapUpdate.Particles.UniqueID = InputDataInt(0, 0, InstanceIdx); Context.MapUpdate.Particles.Velocity.x = InputDataFloat(0, 24, InstanceIdx); Context.MapUpdate.Particles.Velocity.y = InputDataFloat(0, 25, InstanceIdx); Context.MapUpdate.Particles.Velocity.z = InputDataFloat(0, 26, InstanceIdx); Context.MapUpdate.DataInstance.Alive=true; } void ConditionalInterpolateParameters(inout FSimulationContext Context) { InterpolateParameters(Context); } void TransferAttributes(inout FSimulationContext Context) { Context.MapUpdate.Particles = Context.MapSpawn.Particles; } void StoreUpdateVariables(in FSimulationContext Context) { GStageWritesAlive = true; const bool bValid = Context.MapUpdate.DataInstance.Alive; const int WriteIndex = OutputIndex(0, true, bValid); if (bValid) { OutputDataFloat(0, 0, WriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, WriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, WriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, WriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, WriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, WriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, WriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, WriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, WriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, WriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, WriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, WriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, WriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, WriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, WriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, WriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 19, WriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 20, WriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 21, WriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 22, WriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 23, WriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 0, WriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 24, WriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 25, WriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 26, WriteIndex, Context.MapUpdate.Particles.Velocity.z); } } void CopyInstance(in int InstanceIdx) { // TODO! } /* * CS wrapper for our generated code; calls spawn and update functions on the corresponding instances in the buffer */ [numthreads(THREADGROUP_SIZE, 1, 1)] void SimulateMainComputeCS( uint3 GroupId : SV_GroupID, uint3 DispatchThreadId : SV_DispatchThreadID, uint3 GroupThreadId : SV_GroupThreadID) { GDispatchThreadId = DispatchThreadId; GGroupThreadId = GroupThreadId; GCurrentPhase = -1; GEmitterTickCounter = EmitterTickCounter; GSimStart = SimStart; GRandomSeedOffset = 0; /* if(CopyInstancesBeforeStart == 1) { UpdateStartInstance = 0; } */ // The CPU code will set UpdateStartInstance to 0 and ReadInstanceCountOffset to -1 for stages. const uint InstanceID = UpdateStartInstance + DispatchThreadId.x; if (ReadInstanceCountOffset == 0xFFFFFFFF) { GSpawnStartInstance = 0; } else { GSpawnStartInstance = RWInstanceCounts[ReadInstanceCountOffset]; // needed by ExecIndex() } bool bRunUpdateLogic, bRunSpawnLogic; #if USE_SIMULATION_STAGES if (IterationInterfaceCount > 0) { bRunUpdateLogic = InstanceID < IterationInterfaceCount && GSimStart != 1; bRunSpawnLogic = InstanceID < IterationInterfaceCount && GSimStart == 1; } else #endif // USE_SIMULATION_STAGES { const int MaxInstances = GSpawnStartInstance + SpawnedInstances; bRunUpdateLogic = InstanceID < GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; bRunSpawnLogic = InstanceID >= GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; } const float RandomSeedInitialisation = NiagaraInternalNoise(InstanceID * 16384, 0 * 8196, (bRunUpdateLogic ? 4096 : 0) + EmitterTickCounter); // initialise the random state seed FSimulationContext Context = (FSimulationContext)0; BRANCH if (bRunUpdateLogic) { GCurrentPhase = GUpdatePhase; SetupExecIndexForGPU(); InitConstants(Context); LoadUpdateVariables(Context, InstanceID); ReadDataSets(Context); SimulateMapUpdate(Context); //SimulateDoWork(Context); //SimulateMapUpdate(Context); WriteDataSets(Context); } else if (bRunSpawnLogic) { GCurrentPhase = GSpawnPhase; #if USE_SIMULATION_STAGES // Only process the spawn info for particle-based stages. Stages with an iteration interface expect the exec index to simply be the thread index. if (IterationInterfaceCount > 0) { SetupExecIndexForGPU(); } else #endif { SetupExecIndexAndSpawnInfoForGPU(); } InitConstants(Context); InitSpawnVariables(Context); ReadDataSets(Context); Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); ConditionalInterpolateParameters(Context); SimulateMapSpawn(Context); GCurrentPhase = GUpdatePhase; TransferAttributes(Context); //SimulateDoWork(Context); //SimulateMapUpdate(Context); SimulateMapUpdate(Context); WriteDataSets(Context); } StoreUpdateVariables(Context); } 1)$Local_CurlNoiseForce001_VectorField NiagaraDataInterfaceVectorFieldEmitter_VectorField32 NiagaraDataInterfaceVectorFieldl!SampleField_EmitterVectorField32!Local_CurlNoiseForce_VectorField NiagaraDataInterfaceVectorFieldEmitter_ColorNiagaraDataInterfaceColorCurveiSampleColorCurve_EmitterColorEmitter_NewAudioSpectrum"NiagaraDataInterfaceAudioSpectrum9&AudioSpectrum_EmitterNewAudioSpectrum{|^1^n <$@j)'LM <$@j)'LM <$@j)'LM <$@j)'LM  <$@j)'LM2GNiagaraScript /Game/Audio6.Audio6:NiagaraEmitter_0.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_1.SetVariables_329408A848D6370CD518C495994F1D42bNiagaraNodeAssigmentAssignmentNodeDesc)Sets one or more variables in the stack.2BMG51%@j)' %@j)'%@j)'$%@j)'4%@j)'8%@j)'<%@j)'H%@j)'L%@j)'T%@j)'X%@j)'\%@j)'`%@j)'d%@j)'p%@j)'t%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'1\??? A A A????@????@@AB????? ASONiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:SpawnScriptao M-RعeQ+(1CInterpolatedSpawnEmitter.LocalspaceGPUComputeSimEM<A1\OĞ'1uJ18CJ1\8C|ڽc&iAN YI1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1 P<$@j)'K15KLMHM:<$@j)'K1Kl1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 l1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 LMHM<$@j)'K15KLMHM%<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHMc1cMl:1M15Nl:1M15N931M15Ni%1M15N1A 3298TS1QrMr// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { int Emitter_SpawnParticlesInGrid_GridLocationXCount; int Emitter_SpawnParticlesInGrid_GridLocationYCount; int Emitter_SpawnParticlesInGrid_GridLocationZCount; float3 Constants_Emitter_GridLocation_XYZDimensions; float3 Constants_Emitter_GridLocation_Offset; float3 Constants_Emitter_GridLocation_RandomizePlacementWithinCell; float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float2 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float3 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float3 Constants_Emitter_TorusLocation_NonUniformScale; float3 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; int Constants_Emitter_CurlNoiseForce001_RandomSeed; float Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce001_PanNoiseField; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce001_NoiseStrength; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_PointAttractionForce_AttractionRadius; float Constants_Emitter_PointAttractionForce_AttractionStrength; float Constants_Emitter_PointAttractionForce_FalloffExponent; float Constants_Emitter_PointAttractionForce_KillRadius; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_VortexForce_InfluenceFalloffRadius; float3 Constants_Emitter_VortexForce_VortexAxis; float Constants_Emitter_VortexForce_VortexForceAmount; float Constants_Emitter_VortexForce_OriginPullAmount; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_02_NormalaizedPosition; float Constants_Emitter_ScratchModule_02_Radius; int Engine_ExecutionCount; float Emitter_SpawnRate; float Emitter_SpawnInterval; float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; int PREV_Engine_Emitter_PaddingInt32_2; } cbuffer PREV_FNiagaraExternalParameters { int PREV_Emitter_SpawnParticlesInGrid_GridLocationXCount; int PREV_Emitter_SpawnParticlesInGrid_GridLocationYCount; int PREV_Emitter_SpawnParticlesInGrid_GridLocationZCount; float3 PREV_Constants_Emitter_GridLocation_XYZDimensions; float3 PREV_Constants_Emitter_GridLocation_Offset; float3 PREV_Constants_Emitter_GridLocation_RandomizePlacementWithinCell; float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float2 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float3 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float3 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float3 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; int PREV_Constants_Emitter_CurlNoiseForce001_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float3 PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce001_NoiseStrength; int PREV_Constants_Emitter_CurlNoiseForce_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 PREV_Constants_Emitter_CurlNoiseForce_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength; float PREV_Constants_Emitter_PointAttractionForce_AttractionRadius; float PREV_Constants_Emitter_PointAttractionForce_AttractionStrength; float PREV_Constants_Emitter_PointAttractionForce_FalloffExponent; float PREV_Constants_Emitter_PointAttractionForce_KillRadius; float PREV_Constants_Emitter_Drag_Drag; float PREV_Constants_Emitter_Drag_RotationalDrag; float PREV_Constants_Emitter_VortexForce_InfluenceFalloffRadius; float3 PREV_Constants_Emitter_VortexForce_VortexAxis; float PREV_Constants_Emitter_VortexForce_VortexForceAmount; float PREV_Constants_Emitter_VortexForce_OriginPullAmount; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_ScratchModule_02_NormalaizedPosition; float PREV_Constants_Emitter_ScratchModule_02_Radius; int PREV_Engine_ExecutionCount; float PREV_Emitter_SpawnRate; float PREV_Emitter_SpawnInterval; float PREV_Emitter_InterpSpawnStartDt; int PREV_Emitter_SpawnGroup; } struct FParamMap0_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; float3 VortexOrigin; }; struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles { float3 Direction; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 { FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles Particles; }; struct FParamMap0_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_PointAttractionForce { float AttractionRadius; float AttractionStrength; float3 AttractorPosition; float FalloffExponent; float KillRadius; bool KillWithinRadius; bool UseFalloff; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_GridLocation { float3 GridSpacing; float3 GridUVW; float3 NormalizedArraylocation; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_GridLocation GridLocation; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_VortexForce { float ForceAmount; float InverseNormalizedRange; float NormalizedRange; float3 OriginVector; float3 ParticlesPosition; float3 VortexOrigin; float3 VortexVector; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_PointAttractionForce { float3 PointOriginVec; float PointOriginVecLength; }; struct FParamMap0_Local_GridLocation { int GridXCount; int GridYCount; int GridZCount; float3 InitialGridSpacing; float3 LocalSpacePosition; float3 XYZCountAsVector; }; struct FParamMap0_Local_CurlNoiseForce001 { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Local_GridLocation GridLocation; FParamMap0_Local_PointAttractionForce PointAttractionForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; FParamMap0_Local_VortexForce VortexForce; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_GridLocation { int CoordinateSpace; int ExecIndex; float3 GridOrigin; int GridXCount; int GridYCount; int GridZCount; bool JitterInsideGridCells; float3 Offset; float3 RandomizePlacementWithinCell; float3 XYZDimensions; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter_SpawnParticlesInGrid { int GridLocationXCount; int GridLocationYCount; int GridLocationZCount; }; struct FParamMap0_Emitter { float Age; float InterpSpawnStartDt; bool LocalSpace; int RandomSeed; int SpawnGroup; float SpawnInterval; FParamMap0_Emitter_SpawnParticlesInGrid SpawnParticlesInGrid; float SpawnRate; }; struct FParamMap0_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_PointAttractionForce { float AttractionRadius; float AttractionStrength; float FalloffExponent; float KillRadius; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter_GridLocation { float3 Offset; float3 RandomizePlacementWithinCell; float3 XYZDimensions; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_GridLocation GridLocation; FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_PointAttractionForce PointAttractionForce; FParamMap0_Constants_Emitter_ScratchModule_02 ScratchModule_02; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; FParamMap0_Constants_Emitter_VortexForce VortexForce; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_DataInstance DataInstance; FParamMap0_Drag Drag; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_GridLocation GridLocation; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_PointAttractionForce PointAttractionForce; FParamMap0_ScratchModule_02 ScratchModule_02; FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 SetVariables_329408A848D6370CD518C495994F1D42; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; FParamMap0_VortexForce VortexForce; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void GridLocation_SimulationPosition001_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context); void GridLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void GridLocation_Emitter_Func_(inout FSimulationContext Context); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context); void VortexForce_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_02_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void GridLocation_SimulationPosition001_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant18 = true; float3 Constant19 = float3(0,0,0); float3 Vector_IfResult; if(Constant18) { Vector_IfResult = Constant19; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context) { int Constant27 = 0; bool Result19 = NiagaraAll(In_SourceSpace == Constant27); int Constant28 = 0; bool Result20 = NiagaraAll(In_DestinationSpace == Constant28); bool Result21 = Result19 && Result20; int Constant29 = 1; bool Result22 = NiagaraAll(In_SourceSpace == Constant29); int Constant30 = 1; bool Result23 = NiagaraAll(In_DestinationSpace == Constant30); bool Result24 = Result22 && Result23; bool Result25 = Result21 || Result24; int Constant31 = 2; bool Result26 = NiagaraAll(In_SourceSpace == Constant31); int Constant32 = 2; bool Result27 = NiagaraAll(In_DestinationSpace == Constant32); bool Result28 = Result26 && Result27; bool Result29 = Result25 || Result28; bool Result30 = Result19 && Result27; bool Result31 = Result26 && Result20; bool Result32 = Result30 || Result31; bool Result33 = In_bLocalSpace && Result32; bool Result34 = Result29 || Result33; bool Result35 = !In_bLocalSpace; bool Result36 = Result19 && Result23; bool Result37 = Result22 && Result20; bool Result38 = Result36 || Result37; bool Result39 = Result35 && Result38; bool Result40 = Result34 || Result39; bool Result41 = In_bLocalSpace && Result36; bool Result42 = Result26 && Result23; bool Result43 = Result41 || Result42; bool Result44 = Result35 && Result31; bool Result45 = Result43 || Result44; float4x4 Matrix_IfResult1; if(Result45) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result40; Out_OutTransform = Matrix_IfResult1; } void GridLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant26 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant26, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, Context); float3 Result46 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result46; } Out_OutVector = Vector_IfResult2; } void GridLocation_Emitter_Func_(inout FSimulationContext Context) { float3 Output1; Output1.x = Context.MapSpawn.GridLocation.GridXCount; Output1.y = Context.MapSpawn.GridLocation.GridYCount; Output1.z = Context.MapSpawn.GridLocation.GridZCount; Context.MapSpawn.Local.GridLocation.GridXCount = Context.MapSpawn.GridLocation.GridXCount; Context.MapSpawn.Local.GridLocation.GridYCount = Context.MapSpawn.GridLocation.GridYCount; Context.MapSpawn.Local.GridLocation.GridZCount = Context.MapSpawn.GridLocation.GridZCount; Context.MapSpawn.Local.GridLocation.XYZCountAsVector = Output1; int Result1 = Context.MapSpawn.Local.GridLocation.GridXCount * Context.MapSpawn.Local.GridLocation.GridYCount; int Result2 = Context.MapSpawn.GridLocation.ExecIndex / Result1; int Result3 = Context.MapSpawn.Local.GridLocation.GridXCount * Result2; int Result4 = Context.MapSpawn.Local.GridLocation.GridYCount * Result3; int Result5 = Context.MapSpawn.GridLocation.ExecIndex - Result4; int Result6 = ModuloPrecise(Result5, Context.MapSpawn.Local.GridLocation.GridXCount); int Result7 = Result5 / Context.MapSpawn.Local.GridLocation.GridXCount; float3 Output11; Output11.x = Result6; Output11.y = Result7; Output11.z = Result2; Context.MapSpawn.Local.GridLocation.InitialGridSpacing = Output11; float3 Result8 = Context.MapSpawn.Local.GridLocation.InitialGridSpacing / Context.MapSpawn.Local.GridLocation.XYZCountAsVector; Context.MapSpawn.OUTPUT_VAR.GridLocation.NormalizedArraylocation = Result8; Context.MapSpawn.OUTPUT_VAR.GridLocation.GridUVW = Result8; float3 Result9 = Context.MapSpawn.Constants.Emitter.GridLocation.Offset * Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions; float3 Constant21 = float3(1,1,1); float3 Result10 = rand(Constant21); float3 Constant22 = float3(0.5,0.5,0.5); float3 Result11 = Result10 - Constant22; float3 Result12 = Result11 * Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions * Context.MapSpawn.Constants.Emitter.GridLocation.RandomizePlacementWithinCell; float Constant23 = 0.5; float3 Result13 = Context.MapSpawn.Local.GridLocation.XYZCountAsVector * Constant23; float3 Result14 = Context.MapSpawn.Local.GridLocation.InitialGridSpacing - Result13; float3 Result15 = Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions * Result14; float3 Result16 = Result12 + Result15; float3 Vector_IfResult1; if(Context.MapSpawn.GridLocation.JitterInsideGridCells) { Vector_IfResult1 = Result16; } else { Vector_IfResult1 = Result15; } float3 Result17 = Result9 + Vector_IfResult1; float3 Result18 = Context.MapSpawn.Local.GridLocation.InitialGridSpacing / Context.MapSpawn.Local.GridLocation.XYZCountAsVector; Context.MapSpawn.Local.GridLocation.LocalSpacePosition = Result17; Context.MapSpawn.OUTPUT_VAR.GridLocation.GridSpacing = Result18; int Constant24 = 0; bool Constant25 = true; float3 GridLocation_NF_TransformVector_Emitter_Func_Output_OutVector; GridLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.GridLocation.LocalSpacePosition, Context.MapSpawn.GridLocation.CoordinateSpace, Constant24, Constant25, GridLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result47 = Context.MapSpawn.GridLocation.GridOrigin + GridLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.Particles.Position = Result47; } void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant36 = true; float3 Constant37 = float3(0,0,0); float3 Vector_IfResult3; if(Constant36) { Vector_IfResult3 = Constant37; } else { Vector_IfResult3 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult3; } void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant53 = false; int Constant54 = 0; bool Result48 = NiagaraAll(In_RandomnessMode == Constant54); bool Result49 = Constant53 && Result48; int Constant55 = 1; bool Result50 = NiagaraAll(In_RandomnessMode == Constant55); bool Result51 = Result49 || Result50; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant56 = 0; int Constant57 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant56; Seed3_IfResult = Constant57; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant58 = -1; int Constant59 = -1; int Constant60 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result51) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant58; Seed2_IfResult1 = Constant59; Seed3_IfResult1 = Constant60; } NiagaraRandInfo Output12; Output12.Seed1 = Seed1_IfResult1; Output12.Seed2 = Seed2_IfResult1; Output12.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output12; Out_UseDeterministicRandoms = Result51; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant48 = (0); bool Constant49 = false; int Constant50 = 0; int Constant51 = (0); bool Constant52 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant48, In_OverrideSeed, Constant50, Constant51, Constant52, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms, Context); float Result52 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed3; float Result53 = rand_float(Result52, Seed1, Seed2, Seed3); float Result54 = rand_float(Result52); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result53; } else { Random_IfResult = Result54; } float Result55 = In_Min + Random_IfResult; Out_Result = Result55; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant78 = (0); bool Constant79 = false; int Constant80 = 0; int Constant81 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant78, In_OverrideSeed, Constant80, Constant81, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1, Context); float Result57 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed3; float Result58 = rand(Result57, Seed11, Seed21, Seed31); float Result59 = rand(Result57); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result58; } else { Random_IfResult1 = Result59; } float Result60 = In_Min + Random_IfResult1; Out_Result = Result60; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant88 = 1; float Result65 = cos(In_U*(TWO_PI/Constant88)); float Constant89 = 1; float Result66 = sin(In_U*(TWO_PI/Constant89)); float Constant90 = 1; float Result67 = cos(In_V*(TWO_PI/Constant90)); float Constant91 = 1; float Result68 = sin(In_V*(TWO_PI/Constant91)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result65, Result66, Result67, Result68, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant94 = true; float4x4 Matrix_IfResult2; float4x4 Matrix001_IfResult1; if(In_ApplyScale) { Matrix_IfResult2 = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult1 = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult2 = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult1 = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal1; float4x4 TransformBase_Func_Output_OutTransform1; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult2, Matrix001_IfResult1, Constant94, TransformBase_Func_Output_bUseOriginal1, TransformBase_Func_Output_OutTransform1, Context); float3 Result74 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform1).xyz; float3 Vector_IfResult4; if(TransformBase_Func_Output_bUseOriginal1) { Vector_IfResult4 = In_InVector; } else { Vector_IfResult4 = Result74; } Out_OutVector = Vector_IfResult4; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant73 = 0; float Constant74 = 999; float Result56 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant73,Constant74); float Constant75 = 1; int Constant76 = 0; bool Constant77 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant76; Override_IfResult = Constant77; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result56, Constant75, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant82 = 0; float Constant83 = 1; float Result61 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant82,Constant83); float Constant84 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result61, Constant84, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant85 = 0; float Constant86 = 1; float Result62 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant85,Constant86); float Constant87 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result62, Constant87, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result63 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result64 = Result63 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result64, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result69 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result70 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result71 = normalize(Result70); float3 Result72 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result73 = normalize(Result72); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result69; Tangent_IfResult = Result71; Normal_IfResult = Result73; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant92 = 0; bool Constant93 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant92, Constant93, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result75 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result76 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result75; int Constant95 = 0; bool Constant96 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant95, Constant96, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant97 = 0; bool Constant98 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant97, Constant98, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result77 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result76; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result77; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_(inout FSimulationContext Context) { Context.MapSpawn.Particles.Direction = Context.MapSpawn.SetVariables_329408A848D6370CD518C495994F1D42.Particles.Direction; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result78 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result78; float Result79 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant100 = 1e-05; float Result80 = max(Context.MapUpdate.ParticleState.Lifetime, Constant100); float Constant101 = 0.0001; float Result81 = Result80 - Constant101; bool Result82 = NiagaraAll(Result79 < Result81); bool Constant102 = false; bool bool_IfResult; if(Result82) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant102; } float Result83 = Result79 / Result80; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result79; Context.MapUpdate.Particles.NormalizedAge = Result83; } void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant112 = false; float AgeAdvancement_IfResult; if(Constant112) { AgeAdvancement_IfResult = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult = Context.MapUpdate.Engine.Time; } float Constant113 = 4096; int Constant114 = 0; float Result84 = rand_float(Constant113, Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant114); Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement = AgeAdvancement_IfResult; Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset = Result84; Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition = Context.MapUpdate.CurlNoiseForce001.SamplePosition; float3 Result85 = Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition; float3 Result86 = Result85 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseFrequency; float3 Result87 = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.PanNoiseField * Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement; float3 Result88 = Result86 - Result87; float Constant115 = 125; float3 Result89 = Result88 * Constant115; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result89, SampleField_EmitterVectorField32Output_SampledValue); Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant116 = 1; Context.MapUpdate.Local.CurlNoiseForce001.Falloff = Constant116; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis; float3 Result90 = Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseStrength; float3 Result91 = Context.MapUpdate.Transient.PhysicsForce + Result90; Context.MapUpdate.Transient.PhysicsForce = Result91; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant124 = false; float AgeAdvancement_IfResult1; if(Constant124) { AgeAdvancement_IfResult1 = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult1 = Context.MapUpdate.Engine.Time; } float Constant125 = 4096; int Constant126 = 0; float Result92 = rand_float(Constant125, Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant126); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult1; Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Result92; Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Context.MapUpdate.CurlNoiseForce.SamplePosition; float3 Result93 = Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce.SamplePosition; float3 Result94 = Result93 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float Constant127 = 125; float3 Result95 = Result94 * Constant127; float3 SampleField_EmitterVectorField32Output_SampledValue1; SampleField_EmitterVectorField32(Result95, SampleField_EmitterVectorField32Output_SampledValue1); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue1; float Constant128 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant128; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result96 = Context.MapUpdate.Local.CurlNoiseForce.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result97 = Context.MapUpdate.Transient.PhysicsForce + Result96; Context.MapUpdate.Transient.PhysicsForce = Result97; } void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant129 = true; float3 Constant130 = float3(0,0,0); float3 Vector_IfResult5; if(Constant129) { Vector_IfResult5 = Constant130; } else { Vector_IfResult5 = Context.MapUpdate.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult5; } void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant138 = true; float4x4 Matrix_IfResult3; float4x4 Matrix001_IfResult2; if(In_ApplyScale) { Matrix_IfResult3 = Context.MapUpdate.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult2 = Context.MapUpdate.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult3 = Context.MapUpdate.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult2 = Context.MapUpdate.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal2; float4x4 TransformBase_Func_Output_OutTransform2; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult3, Matrix001_IfResult2, Constant138, TransformBase_Func_Output_bUseOriginal2, TransformBase_Func_Output_OutTransform2, Context); float3 Result98 = mul(float4(In_InPosition,1.0),TransformBase_Func_Output_OutTransform2).xyz; float3 Vector_IfResult6; if(TransformBase_Func_Output_bUseOriginal2) { Vector_IfResult6 = In_InPosition; } else { Vector_IfResult6 = Result98; } Out_OutPosition = Vector_IfResult6; } void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context) { int Constant135 = 0; int Output13; Output13 = Constant135; int Constant136 = 0; bool Constant137 = false; float3 PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_NF_TransformPosition_Emitter_Func_(Context.MapUpdate.Particles.Position, Output13, Constant136, Constant137, PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition, Context); float3 Result99 = Context.MapUpdate.PointAttractionForce.AttractorPosition - PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; float3 Constant139 = float3(0,0,0.0001); float3 Result100 = Result99 + Constant139; float Result101 = length(Result100); Context.MapUpdate.Local.PointAttractionForce.PointOriginVec = Result100; Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength = Result101; float3 Result102 = normalize(Context.MapUpdate.Local.PointAttractionForce.PointOriginVec); bool Result103 = NiagaraAll(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength > Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius); float Constant140 = 0; float Result104 = pow(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength,Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent); float Falloff_IfResult; if(Context.MapUpdate.PointAttractionForce.UseFalloff) { Falloff_IfResult = Result104; } else { Falloff_IfResult = Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength; } float Result105 = Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength * Falloff_IfResult; float float_IfResult; if(Result103) { float_IfResult = Constant140; } else { float_IfResult = Result105; } float3 Result106 = Result102 * float_IfResult; float3 Result107 = Context.MapUpdate.Transient.PhysicsForce + Result106; Context.MapUpdate.Transient.PhysicsForce = Result107; bool Result108 = NiagaraAll(Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength < Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius); bool Result109 = !Result108; bool Constant141 = true; bool RadiusCheck_IfResult; if(Context.MapUpdate.PointAttractionForce.KillWithinRadius) { RadiusCheck_IfResult = Result109; } else { RadiusCheck_IfResult = Constant141; } bool Result110 = Context.MapUpdate.DataInstance.Alive && RadiusCheck_IfResult; Context.MapUpdate.DataInstance.Alive = Result110; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result111 = Context.MapUpdate.Constants.Emitter.Drag.Drag + Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.Transient.PhysicsDrag = Result111; Context.MapUpdate.Transient.PhysicsRotationalDrag = Context.MapUpdate.Transient.PhysicsRotationalDrag; } void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant144 = true; float3 Constant145 = float3(0,0,0); float3 Vector_IfResult7; if(Constant144) { Vector_IfResult7 = Constant145; } else { Vector_IfResult7 = Context.MapUpdate.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult7; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result113 = length(In_V); bool Result114 = NiagaraAll(Result113 < In_Threshold); float Result115 = length(In_Fallback); float3 Vector_IfResult8; float float_IfResult1; if(Result114) { Vector_IfResult8 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult8 = In_V; float_IfResult1 = Result113; } float3 Result116 = Vector_IfResult8 / float_IfResult1; float3 Vector_IfResult9; float float_IfResult2; if(Result114) { Vector_IfResult9 = In_Fallback; float_IfResult2 = Result115; } else { Vector_IfResult9 = Result116; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult9; Out_Length = float_IfResult2; Out_BelowThreshold = Result114; } void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context) { float3 Result112 = In_StartPosition - In_EndPosition; float Constant152 = 1e-05; float Constant153 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(Result112, In_FallbackVector, Constant152, Constant153, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant154 = 0; float float_IfResult3; if(DirectionAndLengthSafe_Func_Output_BelowThreshold) { float_IfResult3 = Constant154; } else { float_IfResult3 = DirectionAndLengthSafe_Func_Output_Length; } float Result117 = min(float_IfResult3, In_Distance); float Constant155 = 0.0001; float Result118 = max(In_Distance, Constant155); float Result119 = Result117 / Result118; float Result120 = 1 - Result119; bool Result121 = NiagaraAll(float_IfResult3 <= In_Distance); Out_NormalizedRange = Result119; Out_InverseNormalizedRange = Result120; Out_NormalizedVectorBetweenPositions = DirectionAndLengthSafe_Func_Output_Direction; Out_WithinRange = Result121; } void VortexForce_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.VortexForce.VortexOrigin = Context.MapUpdate.VortexForce.VortexOrigin; Context.MapUpdate.Local.VortexForce.ParticlesPosition = Context.MapUpdate.Particles.Position; float3 Constant151 = float3(0,0,1); float NormalizeDistanceRange_Func_Output_NormalizedRange; float NormalizeDistanceRange_Func_Output_InverseNormalizedRange; float3 NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; bool NormalizeDistanceRange_Func_Output_WithinRange; NormalizeDistanceRange_Func_(Context.MapUpdate.Local.VortexForce.VortexOrigin, Context.MapUpdate.Local.VortexForce.ParticlesPosition, Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius, Constant151, NormalizeDistanceRange_Func_Output_NormalizedRange, NormalizeDistanceRange_Func_Output_InverseNormalizedRange, NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions, NormalizeDistanceRange_Func_Output_WithinRange, Context); float3 Result122 = cross(NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions,Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis); Context.MapUpdate.Local.VortexForce.NormalizedRange = NormalizeDistanceRange_Func_Output_NormalizedRange; Context.MapUpdate.Local.VortexForce.InverseNormalizedRange = NormalizeDistanceRange_Func_Output_InverseNormalizedRange; Context.MapUpdate.Local.VortexForce.OriginVector = NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; Context.MapUpdate.Local.VortexForce.VortexVector = Result122; Context.MapUpdate.Local.VortexForce.ForceAmount = Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount; float3 Constant156 = float3(0,0,0); float Result123 = -(Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount); float3 Result124 = lerp(Context.MapUpdate.Local.VortexForce.OriginVector,Constant156,Result123); float3 Result125 = Context.MapUpdate.Local.VortexForce.VortexVector + Result124; float3 Result126 = normalize(Result125); float3 Result127 = Result126 * Context.MapUpdate.Local.VortexForce.ForceAmount + Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.Transient.PhysicsForce = Result127; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; float Constant163 = 0.0001; float Result128 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant163); float Result129 = Reciprocal(Result128); float3 Result130 = Result129 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result130; float3 Result131 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant164 = 0; float Result132 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant164); float Result133 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result132; float Constant165 = 1; float Result134 = Result133 + Constant165; float3 Result135 = Result131 / Result134; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result135; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result136 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result136; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; Context.MapUpdate.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant166 = float3(0,0,0); float Constant167 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant166; Drag_IfResult = Constant167; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_02_Emitter_Func_(inout FSimulationContext Context) { int Constant168 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.MapUpdate.Constants.Emitter.ScratchModule_02.NormalaizedPosition, Constant168, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result137 = normalize(Context.MapUpdate.Particles.Direction); float3 Result138 = Result137 * Context.MapUpdate.Constants.Emitter.ScratchModule_02.Radius; float3 Result139 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result138; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.MapUpdate.Particles.Position = Result139; Context.MapUpdate.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapSpawn.Engine.DeltaTime = 0.0f; Context.MapSpawn.Engine.InverseDeltaTime = 0.0f; Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 1; Context.MapSpawn.Particles.Lifetime = Constant; float4 Constant1 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant1; float Constant2 = 1; Context.MapSpawn.Particles.Mass = Constant2; float2 Constant3 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant3; float Constant4 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant4; float3 Constant5 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant5; float Constant6 = 0; Context.MapSpawn.Particles.MaterialRandom = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; //End Initialize Parameter Map Defaults Context.MapSpawn.GridLocation.GridXCount = Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationXCount; Context.MapSpawn.GridLocation.GridYCount = Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationYCount; Context.MapSpawn.GridLocation.GridZCount = Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationZCount; int Constant11 = (0); Context.MapSpawn.Local.GridLocation.GridXCount = Constant11; int Constant12 = (0); Context.MapSpawn.Local.GridLocation.GridYCount = Constant12; float3 Constant13 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.GridLocation.XYZCountAsVector = Constant13; int Result = ExecIndex(); Context.MapSpawn.GridLocation.ExecIndex = Result; float3 Constant14 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.GridLocation.InitialGridSpacing = Constant14; bool Constant15 = false; Context.MapSpawn.GridLocation.JitterInsideGridCells = Constant15; float3 Constant16 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.GridLocation.LocalSpacePosition = Constant16; bool Constant17 = true; float3 GridLocation_SimulationPosition001_Emitter_Func_Output_OutPosition; GridLocation_SimulationPosition001_Emitter_Func_(GridLocation_SimulationPosition001_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = GridLocation_SimulationPosition001_Emitter_Func_Output_OutPosition; Context.MapSpawn.GridLocation.GridOrigin = Context.MapSpawn.Particles.Position; int Constant20 = 2; Context.MapSpawn.GridLocation.CoordinateSpace = Constant20; EnterStatScope(1 /**GridLocation_Emitter_Func_*/); GridLocation_Emitter_Func_(Context); ExitStatScope(/**GridLocation_Emitter_Func_*/); bool Constant33 = true; bool Constant34 = true; bool Constant35 = false; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant33; Context.MapSpawn.InitializeParticle.WriteColor = Constant34; Context.MapSpawn.InitializeParticle.WritePosition = Constant35; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant38 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant38; bool Constant39 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant39; bool Constant40 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant40; bool Constant41 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant41; bool Constant42 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant42; float Constant43 = 0; float Constant44 = 1; int Constant45 = -1; int Constant46 = 0; bool Constant47 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant43, Constant44, Constant45, Constant46, Constant47, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; EnterStatScope(2 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant61 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant61; int Constant62 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant62; bool Constant63 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant63; bool Constant64 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant64; float Constant65 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant65; float Constant66 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant66; float Constant67 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant67; float3 Constant68 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant68; float3 Constant69 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant69; float3 Constant70 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant70; bool Constant71 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant71; int Constant72 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant72; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_329408A848D6370CD518C495994F1D42.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(4 /**SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_*/); SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_(Context); ExitStatScope(/**SetVariables_329408A848D6370CD518C495994F1D42_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues Context.MapSpawn.Particles.PreviousVelocity = Context.MapSpawn.Particles.Velocity; // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! bool Constant99 = true; Context.MapUpdate.DataInstance.Alive = Constant99; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(5 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant103 = false; int Constant104 = (0); float Constant105 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.AgeAdvancement = Constant105; float Constant106 = (0.0); Context.MapUpdate.Local.CurlNoiseForce001.DeterministicOffset = Constant106; bool Constant107 = true; Context.MapUpdate.CurlNoiseForce001.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant108 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SamplePosition = Constant108; float3 Constant109 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce001.SampledNoise = Constant109; float Constant110 = 1; Context.MapUpdate.Local.CurlNoiseForce001.Falloff = Constant110; Context.MapUpdate.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant111 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant111; EnterStatScope(6 /**CurlNoiseForce001_Emitter_Func_*/); CurlNoiseForce001_Emitter_Func_(Constant104, Context); ExitStatScope(/**CurlNoiseForce001_Emitter_Func_*/); bool Constant117 = false; int Constant118 = (0); float Constant119 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant119; float Constant120 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant120; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant121 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant121; float3 Constant122 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant122; float Constant123 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant123; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; EnterStatScope(7 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant118, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float3 PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_SimulationPosition_Emitter_Func_(PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.PointAttractionForce.AttractorPosition = PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant131 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVec = Constant131; float Constant132 = (0.0); Context.MapUpdate.Local.PointAttractionForce.PointOriginVecLength = Constant132; bool Constant133 = true; Context.MapUpdate.PointAttractionForce.UseFalloff = Constant133; bool Constant134 = false; Context.MapUpdate.PointAttractionForce.KillWithinRadius = Constant134; EnterStatScope(8 /**PointAttractionForce_Emitter_Func_*/); PointAttractionForce_Emitter_Func_(Context); ExitStatScope(/**PointAttractionForce_Emitter_Func_*/); float Constant142 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant142; float Constant143 = 0; Context.MapUpdate.Transient.PhysicsRotationalDrag = Constant143; EnterStatScope(9 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); float3 VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; VortexForce_SimulationPosition_Emitter_Func_(VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapUpdate.VortexForce.VortexOrigin = VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant146 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexOrigin = Constant146; float3 Constant147 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.ParticlesPosition = Constant147; float3 Constant148 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.OriginVector = Constant148; float3 Constant149 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.VortexForce.VortexVector = Constant149; float Constant150 = (0.0); Context.MapUpdate.Local.VortexForce.ForceAmount = Constant150; EnterStatScope(10 /**VortexForce_Emitter_Func_*/); VortexForce_Emitter_Func_(Context); ExitStatScope(/**VortexForce_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant157 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant157; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; float3 Constant158 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant158; float3 Constant159 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant159; float Constant160 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant160; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.PreviousVelocity; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant161 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant161; bool Constant162 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant162; EnterStatScope(11 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(12 /**ScratchModule_02_Emitter_Func_*/); ScratchModule_02_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_02_Emitter_Func_*/); //End Update Script! } void SimulateMain() { EnterStatScope(13 /**SpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.x = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.y = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationXCount = Emitter_SpawnParticlesInGrid_GridLocationXCount; Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationYCount = Emitter_SpawnParticlesInGrid_GridLocationYCount; Context.MapSpawn.Emitter.SpawnParticlesInGrid.GridLocationZCount = Emitter_SpawnParticlesInGrid_GridLocationZCount; Context.MapSpawn.Constants.Emitter.GridLocation.XYZDimensions = Constants_Emitter_GridLocation_XYZDimensions; Context.MapSpawn.Constants.Emitter.GridLocation.Offset = Constants_Emitter_GridLocation_Offset; Context.MapSpawn.Constants.Emitter.GridLocation.RandomizePlacementWithinCell = Constants_Emitter_GridLocation_RandomizePlacementWithinCell; Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.RandomSeed = Constants_Emitter_CurlNoiseForce001_RandomSeed; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseFrequency = Constants_Emitter_CurlNoiseForce001_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.PanNoiseField = Constants_Emitter_CurlNoiseForce001_PanNoiseField; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce001.NoiseStrength = Constants_Emitter_CurlNoiseForce001_NoiseStrength; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.MapUpdate.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapUpdate.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapUpdate.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapUpdate.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionRadius = Constants_Emitter_PointAttractionForce_AttractionRadius; Context.MapUpdate.Constants.Emitter.PointAttractionForce.AttractionStrength = Constants_Emitter_PointAttractionForce_AttractionStrength; Context.MapUpdate.Constants.Emitter.PointAttractionForce.FalloffExponent = Constants_Emitter_PointAttractionForce_FalloffExponent; Context.MapUpdate.Constants.Emitter.PointAttractionForce.KillRadius = Constants_Emitter_PointAttractionForce_KillRadius; Context.MapUpdate.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.MapUpdate.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.MapUpdate.Constants.Emitter.VortexForce.InfluenceFalloffRadius = Constants_Emitter_VortexForce_InfluenceFalloffRadius; Context.MapUpdate.Constants.Emitter.VortexForce.VortexAxis = Constants_Emitter_VortexForce_VortexAxis; Context.MapUpdate.Constants.Emitter.VortexForce.VortexForceAmount = Constants_Emitter_VortexForce_VortexForceAmount; Context.MapUpdate.Constants.Emitter.VortexForce.OriginPullAmount = Constants_Emitter_VortexForce_OriginPullAmount; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Constants.Emitter.ScratchModule_02.NormalaizedPosition = Constants_Emitter_ScratchModule_02_NormalaizedPosition; Context.MapUpdate.Constants.Emitter.ScratchModule_02.Radius = Constants_Emitter_ScratchModule_02_Radius; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Emitter.SpawnInterval = Emitter_SpawnInterval; Context.MapUpdate.Emitter.InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapUpdate.Emitter.SpawnGroup = Emitter_SpawnGroup; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; ReadDataSets(Context); InterpolateParameters(Context); SimulateMapSpawn(Context); //Begin Transfer of Attributes! Context.MapUpdate.Particles = Context.MapSpawn.Particles; //End Transfer of Attributes! SimulateMapUpdate(Context); WriteDataSets(Context); { bool bValid = Context.MapUpdate.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 22, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 24, TmpWriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 25, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.z); } ExitStatScope(/**SpawnScript_Main*/); }  ------------------------------- Summary ------------------------------- Num Byte Code Ops: 303 Num Constants: 470 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_Owner_TimeSinceRendered 20 | Engine_Owner_LODDistance 24 | Engine_Owner_LODDistanceFraction 28 | Engine_System_Age 32 | Engine_Owner_ExecutionState 36 | Engine_System_TickCount 40 | Engine_System_NumEmitters 44 | Engine_System_NumEmittersAlive 48 | Engine_Owner_SystemLocalToWorldRow0x 52 | Engine_Owner_SystemLocalToWorldRow0y 56 | Engine_Owner_SystemLocalToWorldRow0z 60 | Engine_Owner_SystemLocalToWorldRow0w 64 | Engine_Owner_SystemLocalToWorldRow1x 68 | Engine_Owner_SystemLocalToWorldRow1y 72 | Engine_Owner_SystemLocalToWorldRow1z 76 | Engine_Owner_SystemLocalToWorldRow1w 80 | Engine_Owner_SystemLocalToWorldRow2x 84 | Engine_Owner_SystemLocalToWorldRow2y 88 | Engine_Owner_SystemLocalToWorldRow2z 92 | Engine_Owner_SystemLocalToWorldRow2w 96 | Engine_Owner_SystemLocalToWorldRow3x 100 | Engine_Owner_SystemLocalToWorldRow3y 104 | Engine_Owner_SystemLocalToWorldRow3z 108 | Engine_Owner_SystemLocalToWorldRow3w 112 | Engine_Owner_SystemWorldToLocalRow0x 116 | Engine_Owner_SystemWorldToLocalRow0y 120 | Engine_Owner_SystemWorldToLocalRow0z 124 | Engine_Owner_SystemWorldToLocalRow0w 128 | Engine_Owner_SystemWorldToLocalRow1x 132 | Engine_Owner_SystemWorldToLocalRow1y 136 | Engine_Owner_SystemWorldToLocalRow1z 140 | Engine_Owner_SystemWorldToLocalRow1w 144 | Engine_Owner_SystemWorldToLocalRow2x 148 | Engine_Owner_SystemWorldToLocalRow2y 152 | Engine_Owner_SystemWorldToLocalRow2z 156 | Engine_Owner_SystemWorldToLocalRow2w 160 | Engine_Owner_SystemWorldToLocalRow3x 164 | Engine_Owner_SystemWorldToLocalRow3y 168 | Engine_Owner_SystemWorldToLocalRow3z 172 | Engine_Owner_SystemWorldToLocalRow3w 176 | Engine_Owner_SystemLocalToWorldTransposedRow0x 180 | Engine_Owner_SystemLocalToWorldTransposedRow0y 184 | Engine_Owner_SystemLocalToWorldTransposedRow0z 188 | Engine_Owner_SystemLocalToWorldTransposedRow0w 192 | Engine_Owner_SystemLocalToWorldTransposedRow1x 196 | Engine_Owner_SystemLocalToWorldTransposedRow1y 200 | Engine_Owner_SystemLocalToWorldTransposedRow1z 204 | Engine_Owner_SystemLocalToWorldTransposedRow1w 208 | Engine_Owner_SystemLocalToWorldTransposedRow2x 212 | Engine_Owner_SystemLocalToWorldTransposedRow2y 216 | Engine_Owner_SystemLocalToWorldTransposedRow2z 220 | Engine_Owner_SystemLocalToWorldTransposedRow2w 224 | Engine_Owner_SystemLocalToWorldTransposedRow3x 228 | Engine_Owner_SystemLocalToWorldTransposedRow3y 232 | Engine_Owner_SystemLocalToWorldTransposedRow3z 236 | Engine_Owner_SystemLocalToWorldTransposedRow3w 240 | Engine_Owner_SystemWorldToLocalTransposedRow0x 244 | Engine_Owner_SystemWorldToLocalTransposedRow0y 248 | Engine_Owner_SystemWorldToLocalTransposedRow0z 252 | Engine_Owner_SystemWorldToLocalTransposedRow0w 256 | Engine_Owner_SystemWorldToLocalTransposedRow1x 260 | Engine_Owner_SystemWorldToLocalTransposedRow1y 264 | Engine_Owner_SystemWorldToLocalTransposedRow1z 268 | Engine_Owner_SystemWorldToLocalTransposedRow1w 272 | Engine_Owner_SystemWorldToLocalTransposedRow2x 276 | Engine_Owner_SystemWorldToLocalTransposedRow2y 280 | Engine_Owner_SystemWorldToLocalTransposedRow2z 284 | Engine_Owner_SystemWorldToLocalTransposedRow2w 288 | Engine_Owner_SystemWorldToLocalTransposedRow3x 292 | Engine_Owner_SystemWorldToLocalTransposedRow3y 296 | Engine_Owner_SystemWorldToLocalTransposedRow3z 300 | Engine_Owner_SystemWorldToLocalTransposedRow3w 304 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 308 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 312 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 316 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 320 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 324 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 328 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 332 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 368 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 372 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 376 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 380 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 384 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 388 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 392 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 396 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 432 | Engine_Owner_Rotationx 436 | Engine_Owner_Rotationy 440 | Engine_Owner_Rotationz 444 | Engine_Owner_Rotationw 448 | Engine_Owner_Positionx 452 | Engine_Owner_Positiony 456 | Engine_Owner_Positionz 460 | Engine_Owner_Positionw 464 | Engine_Owner_Velocityx 468 | Engine_Owner_Velocityy 472 | Engine_Owner_Velocityz 476 | Engine_Owner_Velocityw 480 | Engine_Owner_SystemXAxisx 484 | Engine_Owner_SystemXAxisy 488 | Engine_Owner_SystemXAxisz 492 | Engine_Owner_SystemXAxisw 496 | Engine_Owner_SystemYAxisx 500 | Engine_Owner_SystemYAxisy 504 | Engine_Owner_SystemYAxisz 508 | Engine_Owner_SystemYAxisw 512 | Engine_Owner_SystemZAxisx 516 | Engine_Owner_SystemZAxisy 520 | Engine_Owner_SystemZAxisz 524 | Engine_Owner_SystemZAxisw 528 | Engine_Owner_Scalex 532 | Engine_Owner_Scaley 536 | Engine_Owner_Scalez 540 | Engine_Owner_Scalew 544 | Engine_Emitter_NumParticles 548 | Engine_Emitter_TotalSpawnedParticles 552 | Engine_Emitter_SpawnCountScale 556 | Emitter_Age 560 | Emitter_RandomSeed 564 | Engine_Emitter_PaddingInt32_0 568 | Engine_Emitter_PaddingInt32_1 572 | Engine_Emitter_PaddingInt32_2 576 | Emitter_SpawnParticlesInGrid_GridLocationXCount 580 | Emitter_SpawnParticlesInGrid_GridLocationYCount 584 | Emitter_SpawnParticlesInGrid_GridLocationZCount 588 | Constants_Emitter_GridLocation_XYZDimensionsx 592 | Constants_Emitter_GridLocation_XYZDimensionsy 596 | Constants_Emitter_GridLocation_XYZDimensionsz 600 | Constants_Emitter_GridLocation_Offsetx 604 | Constants_Emitter_GridLocation_Offsety 608 | Constants_Emitter_GridLocation_Offsetz 612 | Constants_Emitter_GridLocation_RandomizePlacementWithinCellx 616 | Constants_Emitter_GridLocation_RandomizePlacementWithinCelly 620 | Constants_Emitter_GridLocation_RandomizePlacementWithinCellz 624 | Constants_Emitter_InitializeParticle_Lifetime 628 | Constants_Emitter_InitializeParticle_Colorx 632 | Constants_Emitter_InitializeParticle_Colory 636 | Constants_Emitter_InitializeParticle_Colorz 640 | Constants_Emitter_InitializeParticle_Colorw 644 | Constants_Emitter_InitializeParticle_Mass 648 | Constants_Emitter_InitializeParticle_SpriteSizex 652 | Constants_Emitter_InitializeParticle_SpriteSizey 656 | Constants_Emitter_InitializeParticle_SpriteRotation 660 | Constants_Emitter_InitializeParticle_MeshScalex 664 | Constants_Emitter_InitializeParticle_MeshScaley 668 | Constants_Emitter_InitializeParticle_MeshScalez 672 | Constants_Emitter_TorusLocation_SurfacePosition 676 | Constants_Emitter_TorusLocation_UDistribution 680 | Constants_Emitter_TorusLocation_VDistribution 684 | Constants_Emitter_TorusLocation_RandomSeed 688 | Constants_Emitter_TorusLocation_HandleRadius 692 | Constants_Emitter_TorusLocation_LargeRadius 696 | Constants_Emitter_TorusLocation_NonUniformScalex 700 | Constants_Emitter_TorusLocation_NonUniformScaley 704 | Constants_Emitter_TorusLocation_NonUniformScalez 708 | Constants_Emitter_TorusLocation_TorusAxisx 712 | Constants_Emitter_TorusLocation_TorusAxisy 716 | Constants_Emitter_TorusLocation_TorusAxisz 720 | Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 724 | Constants_Emitter_TorusLocation_Offsetx 728 | Constants_Emitter_TorusLocation_Offsety 732 | Constants_Emitter_TorusLocation_Offsetz 736 | Constants_Emitter_TorusLocation_SpawnGroupMask 740 | Constants_Emitter_CurlNoiseForce001_RandomSeed 744 | Constants_Emitter_CurlNoiseForce001_NoiseFrequency 748 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldx 752 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldy 756 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldz 760 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle 764 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle 768 | Constants_Emitter_CurlNoiseForce001_NoiseStrength 772 | Constants_Emitter_CurlNoiseForce_RandomSeed 776 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 780 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 784 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 788 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 792 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 796 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 800 | Constants_Emitter_CurlNoiseForce_NoiseStrength 804 | Constants_Emitter_PointAttractionForce_AttractionRadius 808 | Constants_Emitter_PointAttractionForce_AttractionStrength 812 | Constants_Emitter_PointAttractionForce_FalloffExponent 816 | Constants_Emitter_PointAttractionForce_KillRadius 820 | Constants_Emitter_Drag_Drag 824 | Constants_Emitter_Drag_RotationalDrag 828 | Constants_Emitter_VortexForce_InfluenceFalloffRadius 832 | Constants_Emitter_VortexForce_VortexAxisx 836 | Constants_Emitter_VortexForce_VortexAxisy 840 | Constants_Emitter_VortexForce_VortexAxisz 844 | Constants_Emitter_VortexForce_VortexForceAmount 848 | Constants_Emitter_VortexForce_OriginPullAmount 852 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 856 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 860 | Constants_Emitter_ScratchModule_02_NormalaizedPosition 864 | Constants_Emitter_ScratchModule_02_Radius 868 | Engine_ExecutionCount 872 | Emitter_SpawnRate 876 | Emitter_SpawnInterval 880 | Emitter_InterpSpawnStartDt 884 | Emitter_SpawnGroup 888 | PREV_Engine_DeltaTime 892 | PREV_Engine_InverseDeltaTime 896 | PREV_Engine_Time 900 | PREV_Engine_RealTime 904 | PREV_Engine_Owner_TimeSinceRendered 908 | PREV_Engine_Owner_LODDistance 912 | PREV_Engine_Owner_LODDistanceFraction 916 | PREV_Engine_System_Age 920 | PREV_Engine_Owner_ExecutionState 924 | PREV_Engine_System_TickCount 928 | PREV_Engine_System_NumEmitters 932 | PREV_Engine_System_NumEmittersAlive 936 | PREV_Engine_Owner_SystemLocalToWorldRow0x 940 | PREV_Engine_Owner_SystemLocalToWorldRow0y 944 | PREV_Engine_Owner_SystemLocalToWorldRow0z 948 | PREV_Engine_Owner_SystemLocalToWorldRow0w 952 | PREV_Engine_Owner_SystemLocalToWorldRow1x 956 | PREV_Engine_Owner_SystemLocalToWorldRow1y 960 | PREV_Engine_Owner_SystemLocalToWorldRow1z 964 | PREV_Engine_Owner_SystemLocalToWorldRow1w 968 | PREV_Engine_Owner_SystemLocalToWorldRow2x 972 | PREV_Engine_Owner_SystemLocalToWorldRow2y 976 | PREV_Engine_Owner_SystemLocalToWorldRow2z 980 | PREV_Engine_Owner_SystemLocalToWorldRow2w 984 | PREV_Engine_Owner_SystemLocalToWorldRow3x 988 | PREV_Engine_Owner_SystemLocalToWorldRow3y 992 | PREV_Engine_Owner_SystemLocalToWorldRow3z 996 | PREV_Engine_Owner_SystemLocalToWorldRow3w 1000 | PREV_Engine_Owner_SystemWorldToLocalRow0x 1004 | PREV_Engine_Owner_SystemWorldToLocalRow0y 1008 | PREV_Engine_Owner_SystemWorldToLocalRow0z 1012 | PREV_Engine_Owner_SystemWorldToLocalRow0w 1016 | PREV_Engine_Owner_SystemWorldToLocalRow1x 1020 | PREV_Engine_Owner_SystemWorldToLocalRow1y 1024 | PREV_Engine_Owner_SystemWorldToLocalRow1z 1028 | PREV_Engine_Owner_SystemWorldToLocalRow1w 1032 | PREV_Engine_Owner_SystemWorldToLocalRow2x 1036 | PREV_Engine_Owner_SystemWorldToLocalRow2y 1040 | PREV_Engine_Owner_SystemWorldToLocalRow2z 1044 | PREV_Engine_Owner_SystemWorldToLocalRow2w 1048 | PREV_Engine_Owner_SystemWorldToLocalRow3x 1052 | PREV_Engine_Owner_SystemWorldToLocalRow3y 1056 | PREV_Engine_Owner_SystemWorldToLocalRow3z 1060 | PREV_Engine_Owner_SystemWorldToLocalRow3w 1064 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0x 1068 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0y 1072 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0z 1076 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0w 1080 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1x 1084 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1y 1088 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1z 1092 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1w 1096 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2x 1100 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2y 1104 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2z 1108 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2w 1112 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3x 1116 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3y 1120 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3z 1124 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3w 1128 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0x 1132 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0y 1136 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0z 1140 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0w 1144 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1x 1148 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1y 1152 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1z 1156 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1w 1160 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2x 1164 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2y 1168 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2z 1172 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2w 1176 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3x 1180 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3y 1184 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3z 1188 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3w 1192 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0x 1196 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0y 1200 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0z 1204 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0w 1208 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1x 1212 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1y 1216 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1z 1220 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1w 1224 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2x 1228 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2y 1232 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2z 1236 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2w 1240 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3x 1244 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3y 1248 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3z 1252 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3w 1256 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0x 1260 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0y 1264 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0z 1268 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0w 1272 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1x 1276 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1y 1280 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1z 1284 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1w 1288 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2x 1292 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2y 1296 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2z 1300 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2w 1304 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3x 1308 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3y 1312 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3z 1316 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3w 1320 | PREV_Engine_Owner_Rotationx 1324 | PREV_Engine_Owner_Rotationy 1328 | PREV_Engine_Owner_Rotationz 1332 | PREV_Engine_Owner_Rotationw 1336 | PREV_Engine_Owner_Positionx 1340 | PREV_Engine_Owner_Positiony 1344 | PREV_Engine_Owner_Positionz 1348 | PREV_Engine_Owner_Positionw 1352 | PREV_Engine_Owner_Velocityx 1356 | PREV_Engine_Owner_Velocityy 1360 | PREV_Engine_Owner_Velocityz 1364 | PREV_Engine_Owner_Velocityw 1368 | PREV_Engine_Owner_SystemXAxisx 1372 | PREV_Engine_Owner_SystemXAxisy 1376 | PREV_Engine_Owner_SystemXAxisz 1380 | PREV_Engine_Owner_SystemXAxisw 1384 | PREV_Engine_Owner_SystemYAxisx 1388 | PREV_Engine_Owner_SystemYAxisy 1392 | PREV_Engine_Owner_SystemYAxisz 1396 | PREV_Engine_Owner_SystemYAxisw 1400 | PREV_Engine_Owner_SystemZAxisx 1404 | PREV_Engine_Owner_SystemZAxisy 1408 | PREV_Engine_Owner_SystemZAxisz 1412 | PREV_Engine_Owner_SystemZAxisw 1416 | PREV_Engine_Owner_Scalex 1420 | PREV_Engine_Owner_Scaley 1424 | PREV_Engine_Owner_Scalez 1428 | PREV_Engine_Owner_Scalew 1432 | PREV_Engine_Emitter_NumParticles 1436 | PREV_Engine_Emitter_TotalSpawnedParticles 1440 | PREV_Engine_Emitter_SpawnCountScale 1444 | PREV_Emitter_Age 1448 | PREV_Emitter_RandomSeed 1452 | PREV_Engine_Emitter_PaddingInt32_0 1456 | PREV_Engine_Emitter_PaddingInt32_1 1460 | PREV_Engine_Emitter_PaddingInt32_2 1464 | PREV_Emitter_SpawnParticlesInGrid_GridLocationXCount 1468 | PREV_Emitter_SpawnParticlesInGrid_GridLocationYCount 1472 | PREV_Emitter_SpawnParticlesInGrid_GridLocationZCount 1476 | PREV_Constants_Emitter_GridLocation_XYZDimensionsx 1480 | PREV_Constants_Emitter_GridLocation_XYZDimensionsy 1484 | PREV_Constants_Emitter_GridLocation_XYZDimensionsz 1488 | PREV_Constants_Emitter_GridLocation_Offsetx 1492 | PREV_Constants_Emitter_GridLocation_Offsety 1496 | PREV_Constants_Emitter_GridLocation_Offsetz 1500 | PREV_Constants_Emitter_GridLocation_RandomizePlacementWithinCellx 1504 | PREV_Constants_Emitter_GridLocation_RandomizePlacementWithinCelly 1508 | PREV_Constants_Emitter_GridLocation_RandomizePlacementWithinCellz 1512 | PREV_Constants_Emitter_InitializeParticle_Lifetime 1516 | PREV_Constants_Emitter_InitializeParticle_Colorx 1520 | PREV_Constants_Emitter_InitializeParticle_Colory 1524 | PREV_Constants_Emitter_InitializeParticle_Colorz 1528 | PREV_Constants_Emitter_InitializeParticle_Colorw 1532 | PREV_Constants_Emitter_InitializeParticle_Mass 1536 | PREV_Constants_Emitter_InitializeParticle_SpriteSizex 1540 | PREV_Constants_Emitter_InitializeParticle_SpriteSizey 1544 | PREV_Constants_Emitter_InitializeParticle_SpriteRotation 1548 | PREV_Constants_Emitter_InitializeParticle_MeshScalex 1552 | PREV_Constants_Emitter_InitializeParticle_MeshScaley 1556 | PREV_Constants_Emitter_InitializeParticle_MeshScalez 1560 | PREV_Constants_Emitter_TorusLocation_SurfacePosition 1564 | PREV_Constants_Emitter_TorusLocation_UDistribution 1568 | PREV_Constants_Emitter_TorusLocation_VDistribution 1572 | PREV_Constants_Emitter_TorusLocation_RandomSeed 1576 | PREV_Constants_Emitter_TorusLocation_HandleRadius 1580 | PREV_Constants_Emitter_TorusLocation_LargeRadius 1584 | PREV_Constants_Emitter_TorusLocation_NonUniformScalex 1588 | PREV_Constants_Emitter_TorusLocation_NonUniformScaley 1592 | PREV_Constants_Emitter_TorusLocation_NonUniformScalez 1596 | PREV_Constants_Emitter_TorusLocation_TorusAxisx 1600 | PREV_Constants_Emitter_TorusLocation_TorusAxisy 1604 | PREV_Constants_Emitter_TorusLocation_TorusAxisz 1608 | PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 1612 | PREV_Constants_Emitter_TorusLocation_Offsetx 1616 | PREV_Constants_Emitter_TorusLocation_Offsety 1620 | PREV_Constants_Emitter_TorusLocation_Offsetz 1624 | PREV_Constants_Emitter_TorusLocation_SpawnGroupMask 1628 | PREV_Constants_Emitter_CurlNoiseForce001_RandomSeed 1632 | PREV_Constants_Emitter_CurlNoiseForce001_NoiseFrequency 1636 | PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseFieldx 1640 | PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseFieldy 1644 | PREV_Constants_Emitter_CurlNoiseForce001_PanNoiseFieldz 1648 | PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle 1652 | PREV_Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle 1656 | PREV_Constants_Emitter_CurlNoiseForce001_NoiseStrength 1660 | PREV_Constants_Emitter_CurlNoiseForce_RandomSeed 1664 | PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency 1668 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 1672 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 1676 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 1680 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 1684 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 1688 | PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength 1692 | PREV_Constants_Emitter_PointAttractionForce_AttractionRadius 1696 | PREV_Constants_Emitter_PointAttractionForce_AttractionStrength 1700 | PREV_Constants_Emitter_PointAttractionForce_FalloffExponent 1704 | PREV_Constants_Emitter_PointAttractionForce_KillRadius 1708 | PREV_Constants_Emitter_Drag_Drag 1712 | PREV_Constants_Emitter_Drag_RotationalDrag 1716 | PREV_Constants_Emitter_VortexForce_InfluenceFalloffRadius 1720 | PREV_Constants_Emitter_VortexForce_VortexAxisx 1724 | PREV_Constants_Emitter_VortexForce_VortexAxisy 1728 | PREV_Constants_Emitter_VortexForce_VortexAxisz 1732 | PREV_Constants_Emitter_VortexForce_VortexForceAmount 1736 | PREV_Constants_Emitter_VortexForce_OriginPullAmount 1740 | PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 1744 | PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 1748 | PREV_Constants_Emitter_ScratchModule_02_NormalaizedPosition 1752 | PREV_Constants_Emitter_ScratchModule_02_Radius 1756 | PREV_Engine_ExecutionCount 1760 | PREV_Emitter_SpawnRate 1764 | PREV_Emitter_SpawnInterval 1768 | PREV_Emitter_InterpSpawnStartDt 1772 | PREV_Emitter_SpawnGroup 1776 | 13 1780 | 1 1784 | 0.5 1788 | 1 1792 | 3 1796 | 0 1800 | 999 1804 | 6.28318548 1808 | 5 1812 | 9.99999975e-06 1816 | 9.99999975e-05 1820 | True 1824 | False 1828 | 6 1832 | 1664525 1836 | 1013904223 1840 | 8 1844 | 16777215 1848 | 16777216 1852 | 4096 1856 | 125 1860 | 7 1864 | 10 1868 | 11 1872 | 12 1876 | 0 ------------------------------- Byte Code (303 Ops) ------------------------------- 0 | OP_85(C[1776]); 1 | R[0] = OP_82; 2 | R[1] = OP_44(C[548], R[0]); 3 | R[0] = OP_82; 4 | R[2] = OP_72(R[0]); 5 | R[0] = OP_5(C[876], R[2], C[880]); 6 | R[2] = OP_2(C[0], R[0]); 7 | R[0] = OP_82; 8 | OP_85(C[1780]); 9 | R[3] = OP_72(C[576]); 10 | R[4] = OP_72(C[580]); 11 | R[5] = OP_72(C[584]); 12 | R[6] = OP_46(C[576], C[580]); 13 | R[7] = OP_47(R[0], R[6]); 14 | R[6] = OP_46(C[576], R[7]); 15 | R[8] = OP_46(C[580], R[6]); 16 | R[6] = OP_45(R[0], R[8]); 17 | R[0] = OP_47(R[6], C[576]); 18 | R[8] = OP_46(C[576], R[0]); 19 | R[0] = OP_45(R[6], R[8]); 20 | R[8] = OP_72(R[0]); 21 | R[0] = OP_47(R[6], C[576]); 22 | R[6] = OP_72(R[0]); 23 | R[0] = OP_72(R[7]); 24 | R[7] = OP_3(R[3], C[1784]); 25 | R[3] = OP_3(R[4], C[1784]); 26 | R[4] = OP_3(R[5], C[1784]); 27 | R[5] = OP_2(R[8], R[7]); 28 | R[7] = OP_2(R[6], R[3]); 29 | R[3] = OP_2(R[0], R[4]); 30 | R[0] = OP_3(C[600], C[588]); 31 | R[4] = OP_3(C[604], C[592]); 32 | R[6] = OP_3(C[608], C[596]); 33 | R[8] = OP_5(C[588], R[5], R[0]); 34 | R[0] = OP_5(C[592], R[7], R[4]); 35 | R[4] = OP_5(C[596], R[3], R[6]); 36 | OP_86; 37 | R[3] = OP_35(C[1788]); 38 | OP_85(C[1792]); 39 | R[5] = OP_28(C[672], C[1796], C[1800]); 40 | R[6] = OP_2(C[1788], R[5]); 41 | R[7] = OP_35(R[6]); 42 | R[6] = OP_1(R[5], R[7]); 43 | R[5] = OP_28(C[676], C[1796], C[1788]); 44 | R[7] = OP_2(C[1788], R[5]); 45 | R[9] = OP_35(R[7]); 46 | R[7] = OP_1(R[5], R[9]); 47 | R[5] = OP_28(C[680], C[1796], C[1788]); 48 | R[9] = OP_2(C[1788], R[5]); 49 | R[10] = OP_35(R[9]); 50 | R[9] = OP_1(R[5], R[10]); 51 | R[5] = OP_9(R[6]); 52 | R[6] = OP_3(R[5], C[688]); 53 | R[5] = OP_3(R[9], C[1804]); 54 | R[10] = OP_17(R[5]); 55 | R[5] = OP_5(R[6], R[10], C[692]); 56 | R[10] = OP_3(R[7], C[1804]); 57 | R[11] = OP_17(R[10]); 58 | R[10] = OP_3(R[5], R[11]); 59 | R[11] = OP_3(R[7], C[1804]); 60 | R[7] = OP_16(R[11]); 61 | R[11] = OP_3(R[5], R[7]); 62 | R[5] = OP_3(R[9], C[1804]); 63 | R[7] = OP_16(R[5]); 64 | R[5] = OP_3(R[6], R[7]); 65 | R[6] = OP_1(C[724], R[8]); 66 | R[7] = OP_1(C[728], R[0]); 67 | R[0] = OP_1(C[732], R[4]); 68 | R[4] = OP_1(R[10], R[6]); 69 | R[6] = OP_1(R[11], R[7]); 70 | R[7] = OP_1(R[5], R[0]); 71 | OP_86; 72 | OP_85(C[1808]); 73 | R[0] = OP_30(C[624], C[1812]); 74 | R[5] = OP_2(R[0], C[1816]); 75 | R[8] = OP_37(R[2], R[5]); 76 | R[5] = OP_43(R[8], C[1820], C[1824]); 77 | R[8] = OP_4(R[2], R[0]); 78 | OP_86; 79 | OP_85(C[1828]); 80 | R[0] = OP_46(C[740], C[1832]); 81 | R[9] = OP_46(C[560], C[1832]); 82 | R[10] = OP_46(C[1808], C[1832]); 83 | R[11] = OP_44(R[0], C[1836]); 84 | R[0] = OP_44(R[9], C[1836]); 85 | R[9] = OP_44(R[10], C[1836]); 86 | R[10] = OP_46(R[0], R[9]); 87 | R[12] = OP_44(R[11], R[10]); 88 | R[10] = OP_46(R[9], R[12]); 89 | R[11] = OP_44(R[0], R[10]); 90 | R[0] = OP_46(R[12], R[11]); 91 | R[10] = OP_44(R[9], R[0]); 92 | R[0] = OP_46(R[11], R[10]); 93 | R[9] = OP_44(R[12], R[0]); 94 | R[0] = OP_46(R[10], R[9]); 95 | R[12] = OP_44(R[11], R[0]); 96 | R[0] = OP_46(R[9], R[12]); 97 | R[11] = OP_44(R[10], R[0]); 98 | R[0] = OP_66(R[9], C[1840]); 99 | R[9] = OP_66(R[12], C[1840]); 100 | R[10] = OP_66(R[11], C[1840]); 101 | R[11] = OP_61(R[0], C[1844]); 102 | R[0] = OP_61(R[9], C[1844]); 103 | R[9] = OP_61(R[10], C[1844]); 104 | R[10] = OP_72(R[11]); 105 | R[11] = OP_72(R[0]); 106 | R[0] = OP_72(R[9]); 107 | R[9] = OP_4(R[10], C[1848]); 108 | R[0] = OP_5(R[9], C[1852], R[4]); 109 | R[10] = OP_5(R[9], C[1852], R[6]); 110 | R[11] = OP_5(R[9], C[1852], R[7]); 111 | R[9] = OP_3(R[0], C[744]); 112 | R[0] = OP_3(R[10], C[744]); 113 | R[10] = OP_3(R[11], C[744]); 114 | R[11] = OP_3(C[748], C[8]); 115 | R[12] = OP_3(C[752], C[8]); 116 | R[13] = OP_3(C[756], C[8]); 117 | R[14] = OP_2(R[9], R[11]); 118 | R[9] = OP_2(R[0], R[12]); 119 | R[0] = OP_2(R[10], R[13]); 120 | R[10] = OP_3(R[14], C[1856]); 121 | R[11] = OP_3(R[9], C[1856]); 122 | R[9] = OP_3(R[0], C[1856]); 123 | SampleField_EmitterVectorField32[func0](R[10], R[11], R[9], R[0], R[12], R[13]); 124 | R[9] = OP_3(R[0], C[768]); 125 | R[0] = OP_3(R[12], C[768]); 126 | R[10] = OP_3(R[13], C[768]); 127 | OP_86; 128 | OP_85(C[1860]); 129 | R[11] = OP_46(C[772], C[1832]); 130 | R[12] = OP_46(C[560], C[1832]); 131 | R[13] = OP_46(C[1828], C[1832]); 132 | R[14] = OP_44(R[11], C[1836]); 133 | R[11] = OP_44(R[12], C[1836]); 134 | R[12] = OP_44(R[13], C[1836]); 135 | R[13] = OP_46(R[11], R[12]); 136 | R[15] = OP_44(R[14], R[13]); 137 | R[13] = OP_46(R[12], R[15]); 138 | R[14] = OP_44(R[11], R[13]); 139 | R[11] = OP_46(R[15], R[14]); 140 | R[13] = OP_44(R[12], R[11]); 141 | R[11] = OP_46(R[14], R[13]); 142 | R[12] = OP_44(R[15], R[11]); 143 | R[11] = OP_46(R[13], R[12]); 144 | R[15] = OP_44(R[14], R[11]); 145 | R[11] = OP_46(R[12], R[15]); 146 | R[14] = OP_44(R[13], R[11]); 147 | R[11] = OP_66(R[12], C[1840]); 148 | R[12] = OP_66(R[15], C[1840]); 149 | R[13] = OP_66(R[14], C[1840]); 150 | R[14] = OP_61(R[11], C[1844]); 151 | R[11] = OP_61(R[12], C[1844]); 152 | R[12] = OP_61(R[13], C[1844]); 153 | R[13] = OP_72(R[14]); 154 | R[14] = OP_72(R[11]); 155 | R[11] = OP_72(R[12]); 156 | R[12] = OP_4(R[13], C[1848]); 157 | R[11] = OP_5(R[12], C[1852], R[4]); 158 | R[13] = OP_5(R[12], C[1852], R[6]); 159 | R[14] = OP_5(R[12], C[1852], R[7]); 160 | R[12] = OP_3(R[11], C[776]); 161 | R[11] = OP_3(R[13], C[776]); 162 | R[13] = OP_3(R[14], C[776]); 163 | R[14] = OP_3(R[12], C[1856]); 164 | R[12] = OP_3(R[11], C[1856]); 165 | R[11] = OP_3(R[13], C[1856]); 166 | SampleField_EmitterVectorField32[func1](R[14], R[12], R[11], R[13], R[15], R[16]); 167 | R[11] = OP_5(R[13], C[800], R[9]); 168 | R[9] = OP_5(R[15], C[800], R[0]); 169 | R[0] = OP_5(R[16], C[800], R[10]); 170 | OP_86; 171 | OP_85(C[1840]); 172 | R[10] = OP_10(R[4]); 173 | R[12] = OP_10(R[6]); 174 | R[13] = OP_10(R[7]); 175 | R[14] = OP_1(R[13], C[1816]); 176 | R[13] = OP_3(R[12], R[12]); 177 | R[15] = OP_5(R[10], R[10], R[13]); 178 | R[13] = OP_5(R[14], R[14], R[15]); 179 | R[15] = OP_9(R[13]); 180 | R[13] = OP_3(R[12], R[12]); 181 | R[16] = OP_5(R[10], R[10], R[13]); 182 | R[13] = OP_5(R[14], R[14], R[16]); 183 | R[16] = OP_8(R[13]); 184 | R[13] = OP_3(R[10], R[16]); 185 | R[10] = OP_3(R[12], R[16]); 186 | R[12] = OP_3(R[14], R[16]); 187 | R[14] = OP_31(R[15], C[812]); 188 | R[16] = OP_3(C[808], R[14]); 189 | R[14] = OP_39(R[15], C[804]); 190 | R[15] = OP_43(R[14], C[1796], R[16]); 191 | R[14] = OP_5(R[13], R[15], R[11]); 192 | R[11] = OP_5(R[10], R[15], R[9]); 193 | R[9] = OP_5(R[12], R[15], R[0]); 194 | OP_86; 195 | OP_85(C[1864]); 196 | R[0] = OP_10(R[4]); 197 | R[10] = OP_10(R[6]); 198 | R[12] = OP_10(R[7]); 199 | R[13] = OP_3(R[10], R[10]); 200 | R[15] = OP_5(R[0], R[0], R[13]); 201 | R[13] = OP_5(R[12], R[12], R[15]); 202 | R[15] = OP_9(R[13]); 203 | R[13] = OP_37(R[15], C[1812]); 204 | R[16] = OP_43(R[13], C[1796], R[0]); 205 | R[0] = OP_43(R[13], C[1796], R[10]); 206 | R[10] = OP_43(R[13], C[1788], R[12]); 207 | R[12] = OP_43(R[13], C[1788], R[15]); 208 | R[15] = OP_4(R[16], R[12]); 209 | R[16] = OP_4(R[0], R[12]); 210 | R[0] = OP_4(R[10], R[12]); 211 | R[10] = OP_43(R[13], C[1796], R[15]); 212 | R[12] = OP_43(R[13], C[1796], R[16]); 213 | R[15] = OP_43(R[13], C[1788], R[0]); 214 | R[0] = OP_3(R[12], C[840]); 215 | R[13] = OP_3(R[15], C[836]); 216 | R[16] = OP_2(R[0], R[13]); 217 | R[0] = OP_3(R[15], C[832]); 218 | R[13] = OP_3(R[10], C[840]); 219 | R[17] = OP_2(R[0], R[13]); 220 | R[0] = OP_3(R[10], C[836]); 221 | R[13] = OP_3(R[12], C[832]); 222 | R[18] = OP_2(R[0], R[13]); 223 | R[0] = OP_10(C[848]); 224 | R[13] = OP_6(R[10], C[1796], R[0]); 225 | R[10] = OP_6(R[12], C[1796], R[0]); 226 | R[12] = OP_6(R[15], C[1796], R[0]); 227 | R[0] = OP_1(R[16], R[13]); 228 | R[13] = OP_1(R[17], R[10]); 229 | R[10] = OP_1(R[18], R[12]); 230 | R[12] = OP_3(R[13], R[13]); 231 | R[15] = OP_5(R[0], R[0], R[12]); 232 | R[12] = OP_5(R[10], R[10], R[15]); 233 | R[15] = OP_8(R[12]); 234 | R[12] = OP_3(R[0], R[15]); 235 | R[0] = OP_3(R[13], R[15]); 236 | R[13] = OP_3(R[10], R[15]); 237 | R[10] = OP_5(R[12], C[844], R[14]); 238 | R[12] = OP_5(R[0], C[844], R[11]); 239 | R[0] = OP_5(R[13], C[844], R[9]); 240 | OP_86; 241 | OP_85(C[1868]); 242 | R[9] = OP_30(C[644], C[1816]); 243 | R[11] = OP_7(R[9]); 244 | R[9] = OP_3(R[11], R[10]); 245 | R[10] = OP_3(R[11], R[12]); 246 | R[12] = OP_3(R[11], R[0]); 247 | R[0] = OP_3(R[9], R[2]); 248 | R[9] = OP_3(R[10], R[2]); 249 | R[10] = OP_3(R[12], R[2]); 250 | R[11] = OP_30(C[820], C[1796]); 251 | R[12] = OP_5(R[2], R[11], C[1788]); 252 | R[11] = OP_4(R[0], R[12]); 253 | R[0] = OP_4(R[9], R[12]); 254 | R[9] = OP_4(R[10], R[12]); 255 | OP_86; 256 | OP_85(C[1872]); 257 | AudioSpectrum_EmitterNewAudioSpectrum[func2](C[860], C[1876], R[10]); 258 | R[12] = OP_3(R[6], R[6]); 259 | R[13] = OP_5(R[4], R[4], R[12]); 260 | R[12] = OP_5(R[7], R[7], R[13]); 261 | R[13] = OP_8(R[12]); 262 | R[12] = OP_3(R[4], R[13]); 263 | R[14] = OP_3(R[6], R[13]); 264 | R[15] = OP_3(R[7], R[13]); 265 | R[13] = OP_3(R[12], C[864]); 266 | R[12] = OP_3(R[14], C[864]); 267 | R[14] = OP_3(R[15], C[864]); 268 | R[15] = OP_3(R[10], R[13]); 269 | R[13] = OP_3(R[10], R[12]); 270 | R[12] = OP_3(R[10], R[14]); 271 | SampleColorCurve_EmitterColor[func3](R[10], R[14], R[16], R[17], R[18]); 272 | OP_86; 273 | [R][10] = AcquireIndex(0, [R][5]); 274 | OutputData(0, 0, [R][10], [R][2]); 275 | OutputData(0, 1, [R][10], [R][14]); 276 | OutputData(0, 2, [R][10], [R][16]); 277 | OutputData(0, 3, [R][10], [R][17]); 278 | OutputData(0, 4, [R][10], [R][18]); 279 | OutputData(0, 5, [R][10], [R][4]); 280 | OutputData(0, 6, [R][10], [R][6]); 281 | OutputData(0, 7, [R][10], [R][7]); 282 | OutputData(0, 8, [R][10], [C][624]); 283 | OutputData(0, 9, [R][10], [C][644]); 284 | OutputData(0, 10, [R][10], [R][3]); 285 | OutputData(0, 11, [R][10], [R][8]); 286 | OutputData(0, 12, [R][10], [R][15]); 287 | OutputData(0, 13, [R][10], [R][13]); 288 | OutputData(0, 14, [R][10], [R][12]); 289 | OutputData(0, 15, [R][10], [R][11]); 290 | OutputData(0, 16, [R][10], [R][0]); 291 | OutputData(0, 17, [R][10], [R][9]); 292 | OutputData(0, 18, [R][10], [C][1788]); 293 | OutputData(0, 19, [R][10], [C][1788]); 294 | OutputData(0, 20, [R][10], [C][1788]); 295 | OutputData(0, 21, [R][10], [C][1796]); 296 | OutputData(0, 22, [R][10], [C][648]); 297 | OutputData(0, 23, [R][10], [C][652]); 298 | OutputData(0, 24, [R][10], [R][1]); 299 | OutputData(0, 25, [R][10], [R][11]); 300 | OutputData(0, 26, [R][10], [R][0]); 301 | OutputData(0, 27, [R][10], [R][9]); 302 | OP_86; ------------------------------- (/{|^1^n <$@j)'LM <$@j)'LM <$@j)'LM <$@j)'LM  <$@j)'LM2BMG1M%@j)'%@j)'%@j)' %@j)'%@j)'%@j)' %@j)'$%@j)'(%@j)',%@j)'0%@j)'<%@j)'@%@j)'D%@j)'H%@j)'L%@j)'P%@j)'T%@j)'X%@j)'\%@j)'`%@j)'d%@j)'h%@j)'l%@j)'p%@j)'t%@j)'%@j)'1\o;Eo:@F???PG?@B<FzD?BL?@FTPNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:UpdateScriptao M-RعeQ+(1-Emitter.LocalspaceGPUComputeSim<A1\Qx2:y8FXyJ18CJ1\OĞ'1u1\8C|ڽc&iAN YI1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1 P<$@j)'K15KLMHM:<$@j)'K1Kl1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 l1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 LMHM<$@j)'K15KLMHM%<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHMc1cMl:1M15Nl:1M15N931M15Ni%1M15N1 3298TS01[W// Shader generated by Niagara HLSL Translator struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { int Constants_Emitter_CurlNoiseForce001_RandomSeed; float Constants_Emitter_CurlNoiseForce001_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce001_PanNoiseField; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce001_NoiseStrength; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_PointAttractionForce_AttractionRadius; float Constants_Emitter_PointAttractionForce_AttractionStrength; float Constants_Emitter_PointAttractionForce_FalloffExponent; float Constants_Emitter_PointAttractionForce_KillRadius; float Constants_Emitter_Drag_Drag; float Constants_Emitter_Drag_RotationalDrag; float Constants_Emitter_VortexForce_InfluenceFalloffRadius; float3 Constants_Emitter_VortexForce_VortexAxis; float Constants_Emitter_VortexForce_VortexForceAmount; float Constants_Emitter_VortexForce_OriginPullAmount; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_02_NormalaizedPosition; float Constants_Emitter_ScratchModule_02_Radius; } struct FParamMap0_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; float3 VortexOrigin; }; struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_PointAttractionForce { float AttractionRadius; float AttractionStrength; float3 AttractorPosition; float FalloffExponent; float KillRadius; bool KillWithinRadius; bool UseFalloff; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Local_VortexForce { float ForceAmount; float InverseNormalizedRange; float NormalizedRange; float3 OriginVector; float3 ParticlesPosition; float3 VortexOrigin; float3 VortexVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_PointAttractionForce { float3 PointOriginVec; float PointOriginVecLength; }; struct FParamMap0_Local_CurlNoiseForce001 { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Local_PointAttractionForce PointAttractionForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_VortexForce VortexForce; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; bool LocalSpace; int RandomSeed; }; struct FParamMap0_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_PointAttractionForce { float AttractionRadius; float AttractionStrength; float FalloffExponent; float KillRadius; }; struct FParamMap0_Constants_Emitter_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Constants_Emitter_Drag Drag; FParamMap0_Constants_Emitter_PointAttractionForce PointAttractionForce; FParamMap0_Constants_Emitter_ScratchModule_02 ScratchModule_02; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_VortexForce VortexForce; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_DataInstance DataInstance; FParamMap0_Drag Drag; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_PointAttractionForce PointAttractionForce; FParamMap0_ScratchModule_02 ScratchModule_02; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Transient Transient; FParamMap0_VortexForce VortexForce; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context); void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context); void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context); void Drag_Emitter_Func_(inout FSimulationContext Context); void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context); void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context); void VortexForce_Emitter_Func_(inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_02_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result = NiagaraAll(Context.Map.Particles.Age <= Context.Map.Engine.DeltaTime); Context.Map.OUTPUT_VAR.ParticleState.FirstFrame = Result; float Result1 = Context.Map.Particles.Age + Context.Map.ParticleState.DeltaTime; float Constant1 = 1e-05; float Result2 = max(Context.Map.ParticleState.Lifetime, Constant1); float Constant2 = 0.0001; float Result3 = Result2 - Constant2; bool Result4 = NiagaraAll(Result1 < Result3); bool Constant3 = false; bool bool_IfResult; if(Result4) { bool_IfResult = Context.Map.DataInstance.Alive; } else { bool_IfResult = Constant3; } float Result5 = Result1 / Result2; Context.Map.DataInstance.Alive = bool_IfResult; Context.Map.Particles.Age = Result1; Context.Map.Particles.NormalizedAge = Result5; } void CurlNoiseForce001_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant13 = false; float AgeAdvancement_IfResult; if(Constant13) { AgeAdvancement_IfResult = Context.Map.Emitter.Age; } else { AgeAdvancement_IfResult = Context.Map.Engine.Time; } float Constant14 = 4096; int Constant15 = 0; float Result6 = rand_float(Constant14, Context.Map.Constants.Emitter.CurlNoiseForce001.RandomSeed, Context.Map.Emitter.RandomSeed, Constant15); Context.Map.Local.CurlNoiseForce001.AgeAdvancement = AgeAdvancement_IfResult; Context.Map.Local.CurlNoiseForce001.DeterministicOffset = Result6; Context.Map.Local.CurlNoiseForce001.SamplePosition = Context.Map.CurlNoiseForce001.SamplePosition; float3 Result7 = Context.Map.Local.CurlNoiseForce001.DeterministicOffset + Context.Map.Local.CurlNoiseForce001.SamplePosition; float3 Result8 = Result7 * Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseFrequency; float3 Result9 = Context.Map.Constants.Emitter.CurlNoiseForce001.PanNoiseField * Context.Map.Local.CurlNoiseForce001.AgeAdvancement; float3 Result10 = Result8 - Result9; float Constant16 = 125; float3 Result11 = Result10 * Constant16; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result11, SampleField_EmitterVectorField32Output_SampledValue); Context.Map.Local.CurlNoiseForce001.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant17 = 1; Context.Map.Local.CurlNoiseForce001.Falloff = Constant17; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAngle = Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAxis; float3 Result12 = Context.Map.Local.CurlNoiseForce001.SampledNoise * Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseStrength; float3 Result13 = Context.Map.Transient.PhysicsForce + Result12; Context.Map.Transient.PhysicsForce = Result13; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant25 = false; float AgeAdvancement_IfResult1; if(Constant25) { AgeAdvancement_IfResult1 = Context.Map.Emitter.Age; } else { AgeAdvancement_IfResult1 = Context.Map.Engine.Time; } float Constant26 = 4096; int Constant27 = 0; float Result14 = rand_float(Constant26, Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.Map.Emitter.RandomSeed, Constant27); Context.Map.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult1; Context.Map.Local.CurlNoiseForce.DeterministicOffset = Result14; Context.Map.Local.CurlNoiseForce.SamplePosition = Context.Map.CurlNoiseForce.SamplePosition; float3 Result15 = Context.Map.Local.CurlNoiseForce.DeterministicOffset + Context.Map.Local.CurlNoiseForce.SamplePosition; float3 Result16 = Result15 * Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float Constant28 = 125; float3 Result17 = Result16 * Constant28; float3 SampleField_EmitterVectorField32Output_SampledValue1; SampleField_EmitterVectorField32(Result17, SampleField_EmitterVectorField32Output_SampledValue1); Context.Map.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue1; float Constant29 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant29; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result18 = Context.Map.Local.CurlNoiseForce.SampledNoise * Context.Map.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result19 = Context.Map.Transient.PhysicsForce + Result18; Context.Map.Transient.PhysicsForce = Result19; } void PointAttractionForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant30 = true; float3 Constant31 = float3(0,0,0); float3 Vector_IfResult; if(Constant30) { Vector_IfResult = Constant31; } else { Vector_IfResult = Context.Map.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context) { int Constant40 = 0; bool Result20 = NiagaraAll(In_SourceSpace == Constant40); int Constant41 = 0; bool Result21 = NiagaraAll(In_DestinationSpace == Constant41); bool Result22 = Result20 && Result21; int Constant42 = 1; bool Result23 = NiagaraAll(In_SourceSpace == Constant42); int Constant43 = 1; bool Result24 = NiagaraAll(In_DestinationSpace == Constant43); bool Result25 = Result23 && Result24; bool Result26 = Result22 || Result25; int Constant44 = 2; bool Result27 = NiagaraAll(In_SourceSpace == Constant44); int Constant45 = 2; bool Result28 = NiagaraAll(In_DestinationSpace == Constant45); bool Result29 = Result27 && Result28; bool Result30 = Result26 || Result29; bool Result31 = Result20 && Result28; bool Result32 = Result27 && Result21; bool Result33 = Result31 || Result32; bool Result34 = In_bLocalSpace && Result33; bool Result35 = Result30 || Result34; bool Result36 = !In_bLocalSpace; bool Result37 = Result20 && Result24; bool Result38 = Result23 && Result21; bool Result39 = Result37 || Result38; bool Result40 = Result36 && Result39; bool Result41 = Result35 || Result40; bool Result42 = In_bLocalSpace && Result37; bool Result43 = Result27 && Result24; bool Result44 = Result42 || Result43; bool Result45 = Result36 && Result32; bool Result46 = Result44 || Result45; float4x4 Matrix_IfResult1; if(Result46) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result41; Out_OutTransform = Matrix_IfResult1; } void PointAttractionForce_NF_TransformPosition_Emitter_Func_(float3 In_InPosition, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant39 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.Map.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.Map.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.Map.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.Map.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant39, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, Context); float3 Result47 = mul(float4(In_InPosition,1.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult1; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult1 = In_InPosition; } else { Vector_IfResult1 = Result47; } Out_OutPosition = Vector_IfResult1; } void PointAttractionForce_Emitter_Func_(inout FSimulationContext Context) { int Constant36 = 0; int Output1; Output1 = Constant36; int Constant37 = 0; bool Constant38 = false; float3 PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_NF_TransformPosition_Emitter_Func_(Context.Map.Particles.Position, Output1, Constant37, Constant38, PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition, Context); float3 Result48 = Context.Map.PointAttractionForce.AttractorPosition - PointAttractionForce_NF_TransformPosition_Emitter_Func_Output_OutPosition; float3 Constant46 = float3(0,0,0.0001); float3 Result49 = Result48 + Constant46; float Result50 = length(Result49); Context.Map.Local.PointAttractionForce.PointOriginVec = Result49; Context.Map.Local.PointAttractionForce.PointOriginVecLength = Result50; float3 Result51 = normalize(Context.Map.Local.PointAttractionForce.PointOriginVec); bool Result52 = NiagaraAll(Context.Map.Local.PointAttractionForce.PointOriginVecLength > Context.Map.Constants.Emitter.PointAttractionForce.AttractionRadius); float Constant47 = 0; float Result53 = pow(Context.Map.Local.PointAttractionForce.PointOriginVecLength,Context.Map.Constants.Emitter.PointAttractionForce.FalloffExponent); float Falloff_IfResult; if(Context.Map.PointAttractionForce.UseFalloff) { Falloff_IfResult = Result53; } else { Falloff_IfResult = Context.Map.Local.PointAttractionForce.PointOriginVecLength; } float Result54 = Context.Map.Constants.Emitter.PointAttractionForce.AttractionStrength * Falloff_IfResult; float float_IfResult; if(Result52) { float_IfResult = Constant47; } else { float_IfResult = Result54; } float3 Result55 = Result51 * float_IfResult; float3 Result56 = Context.Map.Transient.PhysicsForce + Result55; Context.Map.Transient.PhysicsForce = Result56; bool Result57 = NiagaraAll(Context.Map.Local.PointAttractionForce.PointOriginVecLength < Context.Map.Constants.Emitter.PointAttractionForce.KillRadius); bool Result58 = !Result57; bool Constant48 = true; bool RadiusCheck_IfResult; if(Context.Map.PointAttractionForce.KillWithinRadius) { RadiusCheck_IfResult = Result58; } else { RadiusCheck_IfResult = Constant48; } bool Result59 = Context.Map.DataInstance.Alive && RadiusCheck_IfResult; Context.Map.DataInstance.Alive = Result59; } void Drag_Emitter_Func_(inout FSimulationContext Context) { float Result60 = Context.Map.Constants.Emitter.Drag.Drag + Context.Map.Transient.PhysicsDrag; Context.Map.Transient.PhysicsDrag = Result60; Context.Map.Transient.PhysicsRotationalDrag = Context.Map.Transient.PhysicsRotationalDrag; } void VortexForce_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant51 = true; float3 Constant52 = float3(0,0,0); float3 Vector_IfResult2; if(Constant51) { Vector_IfResult2 = Constant52; } else { Vector_IfResult2 = Context.Map.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult2; } void DirectionAndLengthSafe_Func_(float3 In_V, float3 In_Fallback, float In_Threshold, float In_FallbackLength, out float3 Out_Direction, out float Out_Length, out bool Out_BelowThreshold, inout FSimulationContext Context) { float Result62 = length(In_V); bool Result63 = NiagaraAll(Result62 < In_Threshold); float Result64 = length(In_Fallback); float3 Vector_IfResult3; float float_IfResult1; if(Result63) { Vector_IfResult3 = In_Fallback; float_IfResult1 = In_FallbackLength; } else { Vector_IfResult3 = In_V; float_IfResult1 = Result62; } float3 Result65 = Vector_IfResult3 / float_IfResult1; float3 Vector_IfResult4; float float_IfResult2; if(Result63) { Vector_IfResult4 = In_Fallback; float_IfResult2 = Result64; } else { Vector_IfResult4 = Result65; float_IfResult2 = float_IfResult1; } Out_Direction = Vector_IfResult4; Out_Length = float_IfResult2; Out_BelowThreshold = Result63; } void NormalizeDistanceRange_Func_(float3 In_StartPosition, float3 In_EndPosition, float In_Distance, float3 In_FallbackVector, out float Out_NormalizedRange, out float Out_InverseNormalizedRange, out float3 Out_NormalizedVectorBetweenPositions, out bool Out_WithinRange, inout FSimulationContext Context) { float3 Result61 = In_StartPosition - In_EndPosition; float Constant59 = 1e-05; float Constant60 = 1; float3 DirectionAndLengthSafe_Func_Output_Direction; float DirectionAndLengthSafe_Func_Output_Length; bool DirectionAndLengthSafe_Func_Output_BelowThreshold; DirectionAndLengthSafe_Func_(Result61, In_FallbackVector, Constant59, Constant60, DirectionAndLengthSafe_Func_Output_Direction, DirectionAndLengthSafe_Func_Output_Length, DirectionAndLengthSafe_Func_Output_BelowThreshold, Context); float Constant61 = 0; float float_IfResult3; if(DirectionAndLengthSafe_Func_Output_BelowThreshold) { float_IfResult3 = Constant61; } else { float_IfResult3 = DirectionAndLengthSafe_Func_Output_Length; } float Result66 = min(float_IfResult3, In_Distance); float Constant62 = 0.0001; float Result67 = max(In_Distance, Constant62); float Result68 = Result66 / Result67; float Result69 = 1 - Result68; bool Result70 = NiagaraAll(float_IfResult3 <= In_Distance); Out_NormalizedRange = Result68; Out_InverseNormalizedRange = Result69; Out_NormalizedVectorBetweenPositions = DirectionAndLengthSafe_Func_Output_Direction; Out_WithinRange = Result70; } void VortexForce_Emitter_Func_(inout FSimulationContext Context) { Context.Map.Local.VortexForce.VortexOrigin = Context.Map.VortexForce.VortexOrigin; Context.Map.Local.VortexForce.ParticlesPosition = Context.Map.Particles.Position; float3 Constant58 = float3(0,0,1); float NormalizeDistanceRange_Func_Output_NormalizedRange; float NormalizeDistanceRange_Func_Output_InverseNormalizedRange; float3 NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; bool NormalizeDistanceRange_Func_Output_WithinRange; NormalizeDistanceRange_Func_(Context.Map.Local.VortexForce.VortexOrigin, Context.Map.Local.VortexForce.ParticlesPosition, Context.Map.Constants.Emitter.VortexForce.InfluenceFalloffRadius, Constant58, NormalizeDistanceRange_Func_Output_NormalizedRange, NormalizeDistanceRange_Func_Output_InverseNormalizedRange, NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions, NormalizeDistanceRange_Func_Output_WithinRange, Context); float3 Result71 = cross(NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions,Context.Map.Constants.Emitter.VortexForce.VortexAxis); Context.Map.Local.VortexForce.NormalizedRange = NormalizeDistanceRange_Func_Output_NormalizedRange; Context.Map.Local.VortexForce.InverseNormalizedRange = NormalizeDistanceRange_Func_Output_InverseNormalizedRange; Context.Map.Local.VortexForce.OriginVector = NormalizeDistanceRange_Func_Output_NormalizedVectorBetweenPositions; Context.Map.Local.VortexForce.VortexVector = Result71; Context.Map.Local.VortexForce.ForceAmount = Context.Map.Constants.Emitter.VortexForce.VortexForceAmount; float3 Constant63 = float3(0,0,0); float Result72 = -(Context.Map.Constants.Emitter.VortexForce.OriginPullAmount); float3 Result73 = lerp(Context.Map.Local.VortexForce.OriginVector,Constant63,Result72); float3 Result74 = Context.Map.Local.VortexForce.VortexVector + Result73; float3 Result75 = normalize(Result74); float3 Result76 = Result75 * Context.Map.Local.VortexForce.ForceAmount + Context.Map.Transient.PhysicsForce; Context.Map.Transient.PhysicsForce = Result76; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Context.Map.SolveForcesAndVelocity.DeltaTime; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.SolveForcesAndVelocity.Velocity; Context.Map.Local.SolveForcesAndVelocity.Mass = Context.Map.SolveForcesAndVelocity.Mass; float Constant70 = 0.0001; float Result77 = max(Context.Map.Local.SolveForcesAndVelocity.Mass, Constant70); float Result78 = Reciprocal(Result77); float3 Result79 = Result78 * Context.Map.Local.SolveForcesAndVelocity.PhysicsForce; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Result79; float3 Result80 = Context.Map.Local.SolveForcesAndVelocity.PhysicsForce * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant71 = 0; float Result81 = max(Context.Map.Transient.PhysicsDrag, Constant71); float Result82 = Context.Map.Local.SolveForcesAndVelocity.DeltaTime * Result81; float Constant72 = 1; float Result83 = Result82 + Constant72; float3 Result84 = Result80 / Result83; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result84; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.Map.Transient.PhysicsDrag; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result85 = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.SolveForcesAndVelocity.Position; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result85; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.Map.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.Map.SolveForcesAndVelocity.PreviousVelocity; } Context.Map.Particles.Position = Position_IfResult; Context.Map.Particles.Velocity = Velocity_IfResult; Context.Map.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant73 = float3(0,0,0); float Constant74 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant73; Drag_IfResult = Constant74; } else { ForceVector_IfResult = Context.Map.Transient.PhysicsForce; Drag_IfResult = Context.Map.Transient.PhysicsDrag; } Context.Map.Transient.PhysicsForce = ForceVector_IfResult; Context.Map.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_02_Emitter_Func_(inout FSimulationContext Context) { int Constant75 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.Map.Constants.Emitter.ScratchModule_02.NormalaizedPosition, Constant75, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result86 = normalize(Context.Map.Particles.Direction); float3 Result87 = Result86 * Context.Map.Constants.Emitter.ScratchModule_02.Radius; float3 Result88 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result87; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.Map.Particles.Position = Result88; Context.Map.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/Audio11.Audio11:Empty002_2.UpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = true; Context.Map.DataInstance.Alive = Constant; Context.Map.ParticleState.DeltaTime = Context.Map.Engine.DeltaTime; Context.Map.ParticleState.Lifetime = Context.Map.Particles.Lifetime; EnterStatScope(1 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant4 = false; int Constant5 = (0); float Constant6 = (0.0); Context.Map.Local.CurlNoiseForce001.AgeAdvancement = Constant6; float Constant7 = (0.0); Context.Map.Local.CurlNoiseForce001.DeterministicOffset = Constant7; bool Constant8 = true; Context.Map.CurlNoiseForce001.SamplePosition = Context.Map.Particles.Position; float3 Constant9 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce001.SamplePosition = Constant9; float3 Constant10 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce001.SampledNoise = Constant10; float Constant11 = 1; Context.Map.Local.CurlNoiseForce001.Falloff = Constant11; Context.Map.CurlNoiseForce001.CurlNoiseConeMaskAxis = Context.Map.Particles.Velocity; float3 Constant12 = float3(0,0,0); Context.Map.Transient.PhysicsForce = Constant12; EnterStatScope(2 /**CurlNoiseForce001_Emitter_Func_*/); CurlNoiseForce001_Emitter_Func_(Constant5, Context); ExitStatScope(/**CurlNoiseForce001_Emitter_Func_*/); bool Constant18 = false; int Constant19 = (0); float Constant20 = (0.0); Context.Map.Local.CurlNoiseForce.AgeAdvancement = Constant20; float Constant21 = (0.0); Context.Map.Local.CurlNoiseForce.DeterministicOffset = Constant21; Context.Map.CurlNoiseForce.SamplePosition = Context.Map.Particles.Position; float3 Constant22 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SamplePosition = Constant22; float3 Constant23 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SampledNoise = Constant23; float Constant24 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant24; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.Particles.Velocity; EnterStatScope(3 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant19, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); float3 PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; PointAttractionForce_SimulationPosition_Emitter_Func_(PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.Map.PointAttractionForce.AttractorPosition = PointAttractionForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant32 = float3(0.0, 0.0, 0.0); Context.Map.Local.PointAttractionForce.PointOriginVec = Constant32; float Constant33 = (0.0); Context.Map.Local.PointAttractionForce.PointOriginVecLength = Constant33; bool Constant34 = true; Context.Map.PointAttractionForce.UseFalloff = Constant34; bool Constant35 = false; Context.Map.PointAttractionForce.KillWithinRadius = Constant35; EnterStatScope(4 /**PointAttractionForce_Emitter_Func_*/); PointAttractionForce_Emitter_Func_(Context); ExitStatScope(/**PointAttractionForce_Emitter_Func_*/); float Constant49 = 0; Context.Map.Transient.PhysicsDrag = Constant49; float Constant50 = 0; Context.Map.Transient.PhysicsRotationalDrag = Constant50; EnterStatScope(5 /**Drag_Emitter_Func_*/); Drag_Emitter_Func_(Context); ExitStatScope(/**Drag_Emitter_Func_*/); float3 VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; VortexForce_SimulationPosition_Emitter_Func_(VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.Map.VortexForce.VortexOrigin = VortexForce_SimulationPosition_Emitter_Func_Output_OutPosition; float3 Constant53 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.VortexOrigin = Constant53; float3 Constant54 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.ParticlesPosition = Constant54; float3 Constant55 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.OriginVector = Constant55; float3 Constant56 = float3(0.0, 0.0, 0.0); Context.Map.Local.VortexForce.VortexVector = Constant56; float Constant57 = (0.0); Context.Map.Local.VortexForce.ForceAmount = Constant57; EnterStatScope(6 /**VortexForce_Emitter_Func_*/); VortexForce_Emitter_Func_(Context); ExitStatScope(/**VortexForce_Emitter_Func_*/); Context.Map.Transient.PhysicsDeltaTime = Context.Map.Engine.DeltaTime; Context.Map.SolveForcesAndVelocity.DeltaTime = Context.Map.Transient.PhysicsDeltaTime; float Constant64 = (0.0); Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Constant64; Context.Map.SolveForcesAndVelocity.Force = Context.Map.Transient.PhysicsForce; Context.Map.SolveForcesAndVelocity.Velocity = Context.Map.Particles.Velocity; Context.Map.SolveForcesAndVelocity.Mass = Context.Map.Particles.Mass; float3 Constant65 = float3(0.0, 0.0, 0.0); Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Constant65; float3 Constant66 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant66; float Constant67 = (0.0); Context.Map.Local.SolveForcesAndVelocity.Mass = Constant67; Context.Map.SolveForcesAndVelocity.PreviousVelocity = Context.Map.Particles.PreviousVelocity; Context.Map.SolveForcesAndVelocity.Position = Context.Map.Particles.Position; float3 Constant68 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant68; bool Constant69 = true; Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant69; EnterStatScope(7 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(8 /**ScratchModule_02_Emitter_Func_*/); ScratchModule_02_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_02_Emitter_Func_*/); ExitStatScope(/**NiagaraScript /Game/Audio11.Audio11:Empty002_2.UpdateScript*/); } void SimulateMain() { EnterStatScope(9 /**UpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.Particles.Age = InputDataFloat(0, 0); Context.Map.Particles.Color.r = InputDataFloat(0, 1); Context.Map.Particles.Color.g = InputDataFloat(0, 2); Context.Map.Particles.Color.b = InputDataFloat(0, 3); Context.Map.Particles.Color.a = InputDataFloat(0, 4); Context.Map.Particles.Direction.x = InputDataFloat(0, 5); Context.Map.Particles.Direction.y = InputDataFloat(0, 6); Context.Map.Particles.Direction.z = InputDataFloat(0, 7); Context.Map.Particles.Lifetime = InputDataFloat(0, 8); Context.Map.Particles.Mass = InputDataFloat(0, 9); Context.Map.Particles.MaterialRandom = InputDataFloat(0, 10); Context.Map.Particles.NormalizedAge = InputDataFloat(0, 11); Context.Map.Particles.Position.x = InputDataFloat(0, 12); Context.Map.Particles.Position.y = InputDataFloat(0, 13); Context.Map.Particles.Position.z = InputDataFloat(0, 14); Context.Map.Particles.PreviousVelocity.x = InputDataFloat(0, 15); Context.Map.Particles.PreviousVelocity.y = InputDataFloat(0, 16); Context.Map.Particles.PreviousVelocity.z = InputDataFloat(0, 17); Context.Map.Particles.Scale.x = InputDataFloat(0, 18); Context.Map.Particles.Scale.y = InputDataFloat(0, 19); Context.Map.Particles.Scale.z = InputDataFloat(0, 20); Context.Map.Particles.SpriteRotation = InputDataFloat(0, 21); Context.Map.Particles.SpriteSize.x = InputDataFloat(0, 22); Context.Map.Particles.SpriteSize.y = InputDataFloat(0, 23); Context.Map.Particles.UniqueID = InputDataInt(0, 24); Context.Map.Particles.Velocity.x = InputDataFloat(0, 25); Context.Map.Particles.Velocity.y = InputDataFloat(0, 26); Context.Map.Particles.Velocity.z = InputDataFloat(0, 27); Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Emitter.Age = Emitter_Age; Context.Map.Engine.Time = Engine_Time; Context.Map.Constants.Emitter.CurlNoiseForce001.RandomSeed = Constants_Emitter_CurlNoiseForce001_RandomSeed; Context.Map.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseFrequency = Constants_Emitter_CurlNoiseForce001_NoiseFrequency; Context.Map.Constants.Emitter.CurlNoiseForce001.PanNoiseField = Constants_Emitter_CurlNoiseForce001_PanNoiseField; Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle; Context.Map.Constants.Emitter.CurlNoiseForce001.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle; Context.Map.Constants.Emitter.CurlNoiseForce001.NoiseStrength = Constants_Emitter_CurlNoiseForce001_NoiseStrength; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.Map.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.Map.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.Map.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.Map.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.Map.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.Map.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.Map.Constants.Emitter.PointAttractionForce.AttractionRadius = Constants_Emitter_PointAttractionForce_AttractionRadius; Context.Map.Constants.Emitter.PointAttractionForce.AttractionStrength = Constants_Emitter_PointAttractionForce_AttractionStrength; Context.Map.Constants.Emitter.PointAttractionForce.FalloffExponent = Constants_Emitter_PointAttractionForce_FalloffExponent; Context.Map.Constants.Emitter.PointAttractionForce.KillRadius = Constants_Emitter_PointAttractionForce_KillRadius; Context.Map.Constants.Emitter.Drag.Drag = Constants_Emitter_Drag_Drag; Context.Map.Constants.Emitter.Drag.RotationalDrag = Constants_Emitter_Drag_RotationalDrag; Context.Map.Constants.Emitter.VortexForce.InfluenceFalloffRadius = Constants_Emitter_VortexForce_InfluenceFalloffRadius; Context.Map.Constants.Emitter.VortexForce.VortexAxis = Constants_Emitter_VortexForce_VortexAxis; Context.Map.Constants.Emitter.VortexForce.VortexForceAmount = Constants_Emitter_VortexForce_VortexForceAmount; Context.Map.Constants.Emitter.VortexForce.OriginPullAmount = Constants_Emitter_VortexForce_OriginPullAmount; Context.Map.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.Map.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.Map.Constants.Emitter.ScratchModule_02.NormalaizedPosition = Constants_Emitter_ScratchModule_02_NormalaizedPosition; Context.Map.Constants.Emitter.ScratchModule_02.Radius = Constants_Emitter_ScratchModule_02_Radius; Context.Map.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; ReadDataSets(Context); Simulate(Context); WriteDataSets(Context); { bool bValid = Context.Map.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.Map.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.Map.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.Map.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.Map.Particles.Scale.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.Map.Particles.Scale.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.Map.Particles.Scale.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.Map.Particles.SpriteRotation); OutputDataFloat(0, 22, TmpWriteIndex, Context.Map.Particles.SpriteSize.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.Map.Particles.SpriteSize.y); OutputDataInt(0, 24, TmpWriteIndex, Context.Map.Particles.UniqueID); OutputDataFloat(0, 25, TmpWriteIndex, Context.Map.Particles.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.Map.Particles.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.Map.Particles.Velocity.z); } ExitStatScope(/**UpdateScript_Main*/); } CB ------------------------------- Summary ------------------------------- Num Byte Code Ops: 251 Num Constants: 196 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_Owner_TimeSinceRendered 20 | Engine_Owner_LODDistance 24 | Engine_Owner_LODDistanceFraction 28 | Engine_System_Age 32 | Engine_Owner_ExecutionState 36 | Engine_System_TickCount 40 | Engine_System_NumEmitters 44 | Engine_System_NumEmittersAlive 48 | Engine_Owner_SystemLocalToWorldRow0x 52 | Engine_Owner_SystemLocalToWorldRow0y 56 | Engine_Owner_SystemLocalToWorldRow0z 60 | Engine_Owner_SystemLocalToWorldRow0w 64 | Engine_Owner_SystemLocalToWorldRow1x 68 | Engine_Owner_SystemLocalToWorldRow1y 72 | Engine_Owner_SystemLocalToWorldRow1z 76 | Engine_Owner_SystemLocalToWorldRow1w 80 | Engine_Owner_SystemLocalToWorldRow2x 84 | Engine_Owner_SystemLocalToWorldRow2y 88 | Engine_Owner_SystemLocalToWorldRow2z 92 | Engine_Owner_SystemLocalToWorldRow2w 96 | Engine_Owner_SystemLocalToWorldRow3x 100 | Engine_Owner_SystemLocalToWorldRow3y 104 | Engine_Owner_SystemLocalToWorldRow3z 108 | Engine_Owner_SystemLocalToWorldRow3w 112 | Engine_Owner_SystemWorldToLocalRow0x 116 | Engine_Owner_SystemWorldToLocalRow0y 120 | Engine_Owner_SystemWorldToLocalRow0z 124 | Engine_Owner_SystemWorldToLocalRow0w 128 | Engine_Owner_SystemWorldToLocalRow1x 132 | Engine_Owner_SystemWorldToLocalRow1y 136 | Engine_Owner_SystemWorldToLocalRow1z 140 | Engine_Owner_SystemWorldToLocalRow1w 144 | Engine_Owner_SystemWorldToLocalRow2x 148 | Engine_Owner_SystemWorldToLocalRow2y 152 | Engine_Owner_SystemWorldToLocalRow2z 156 | Engine_Owner_SystemWorldToLocalRow2w 160 | Engine_Owner_SystemWorldToLocalRow3x 164 | Engine_Owner_SystemWorldToLocalRow3y 168 | Engine_Owner_SystemWorldToLocalRow3z 172 | Engine_Owner_SystemWorldToLocalRow3w 176 | Engine_Owner_SystemLocalToWorldTransposedRow0x 180 | Engine_Owner_SystemLocalToWorldTransposedRow0y 184 | Engine_Owner_SystemLocalToWorldTransposedRow0z 188 | Engine_Owner_SystemLocalToWorldTransposedRow0w 192 | Engine_Owner_SystemLocalToWorldTransposedRow1x 196 | Engine_Owner_SystemLocalToWorldTransposedRow1y 200 | Engine_Owner_SystemLocalToWorldTransposedRow1z 204 | Engine_Owner_SystemLocalToWorldTransposedRow1w 208 | Engine_Owner_SystemLocalToWorldTransposedRow2x 212 | Engine_Owner_SystemLocalToWorldTransposedRow2y 216 | Engine_Owner_SystemLocalToWorldTransposedRow2z 220 | Engine_Owner_SystemLocalToWorldTransposedRow2w 224 | Engine_Owner_SystemLocalToWorldTransposedRow3x 228 | Engine_Owner_SystemLocalToWorldTransposedRow3y 232 | Engine_Owner_SystemLocalToWorldTransposedRow3z 236 | Engine_Owner_SystemLocalToWorldTransposedRow3w 240 | Engine_Owner_SystemWorldToLocalTransposedRow0x 244 | Engine_Owner_SystemWorldToLocalTransposedRow0y 248 | Engine_Owner_SystemWorldToLocalTransposedRow0z 252 | Engine_Owner_SystemWorldToLocalTransposedRow0w 256 | Engine_Owner_SystemWorldToLocalTransposedRow1x 260 | Engine_Owner_SystemWorldToLocalTransposedRow1y 264 | Engine_Owner_SystemWorldToLocalTransposedRow1z 268 | Engine_Owner_SystemWorldToLocalTransposedRow1w 272 | Engine_Owner_SystemWorldToLocalTransposedRow2x 276 | Engine_Owner_SystemWorldToLocalTransposedRow2y 280 | Engine_Owner_SystemWorldToLocalTransposedRow2z 284 | Engine_Owner_SystemWorldToLocalTransposedRow2w 288 | Engine_Owner_SystemWorldToLocalTransposedRow3x 292 | Engine_Owner_SystemWorldToLocalTransposedRow3y 296 | Engine_Owner_SystemWorldToLocalTransposedRow3z 300 | Engine_Owner_SystemWorldToLocalTransposedRow3w 304 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 308 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 312 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 316 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 320 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 324 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 328 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 332 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 368 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 372 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 376 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 380 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 384 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 388 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 392 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 396 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 432 | Engine_Owner_Rotationx 436 | Engine_Owner_Rotationy 440 | Engine_Owner_Rotationz 444 | Engine_Owner_Rotationw 448 | Engine_Owner_Positionx 452 | Engine_Owner_Positiony 456 | Engine_Owner_Positionz 460 | Engine_Owner_Positionw 464 | Engine_Owner_Velocityx 468 | Engine_Owner_Velocityy 472 | Engine_Owner_Velocityz 476 | Engine_Owner_Velocityw 480 | Engine_Owner_SystemXAxisx 484 | Engine_Owner_SystemXAxisy 488 | Engine_Owner_SystemXAxisz 492 | Engine_Owner_SystemXAxisw 496 | Engine_Owner_SystemYAxisx 500 | Engine_Owner_SystemYAxisy 504 | Engine_Owner_SystemYAxisz 508 | Engine_Owner_SystemYAxisw 512 | Engine_Owner_SystemZAxisx 516 | Engine_Owner_SystemZAxisy 520 | Engine_Owner_SystemZAxisz 524 | Engine_Owner_SystemZAxisw 528 | Engine_Owner_Scalex 532 | Engine_Owner_Scaley 536 | Engine_Owner_Scalez 540 | Engine_Owner_Scalew 544 | Engine_Emitter_NumParticles 548 | Engine_Emitter_TotalSpawnedParticles 552 | Engine_Emitter_SpawnCountScale 556 | Emitter_Age 560 | Emitter_RandomSeed 564 | Engine_Emitter_PaddingInt32_0 568 | Engine_Emitter_PaddingInt32_1 572 | Engine_Emitter_PaddingInt32_2 576 | Constants_Emitter_CurlNoiseForce001_RandomSeed 580 | Constants_Emitter_CurlNoiseForce001_NoiseFrequency 584 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldx 588 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldy 592 | Constants_Emitter_CurlNoiseForce001_PanNoiseFieldz 596 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskAngle 600 | Constants_Emitter_CurlNoiseForce001_CurlNoiseConeMaskFalloffAngle 604 | Constants_Emitter_CurlNoiseForce001_NoiseStrength 608 | Constants_Emitter_CurlNoiseForce_RandomSeed 612 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 616 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 620 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 624 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 628 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 632 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 636 | Constants_Emitter_CurlNoiseForce_NoiseStrength 640 | Constants_Emitter_PointAttractionForce_AttractionRadius 644 | Constants_Emitter_PointAttractionForce_AttractionStrength 648 | Constants_Emitter_PointAttractionForce_FalloffExponent 652 | Constants_Emitter_PointAttractionForce_KillRadius 656 | Constants_Emitter_Drag_Drag 660 | Constants_Emitter_Drag_RotationalDrag 664 | Constants_Emitter_VortexForce_InfluenceFalloffRadius 668 | Constants_Emitter_VortexForce_VortexAxisx 672 | Constants_Emitter_VortexForce_VortexAxisy 676 | Constants_Emitter_VortexForce_VortexAxisz 680 | Constants_Emitter_VortexForce_VortexForceAmount 684 | Constants_Emitter_VortexForce_OriginPullAmount 688 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 692 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 696 | Constants_Emitter_ScratchModule_02_NormalaizedPosition 700 | Constants_Emitter_ScratchModule_02_Radius 704 | 1 708 | 9.99999975e-06 712 | 9.99999975e-05 716 | True 720 | False 724 | 2 728 | 1664525 732 | 1013904223 736 | 8 740 | 16777215 744 | 16777216 748 | 4096 752 | 125 756 | 3 760 | 4 764 | 0 768 | 6 772 | 1 776 | 7 780 | 0 ------------------------------- Byte Code (251 Ops) ------------------------------- 0 | [R][0] = InputData(0, 0); 1 | [R][1] = InputData(0, 5); 2 | [R][2] = InputData(0, 6); 3 | [R][3] = InputData(0, 7); 4 | [R][4] = InputData(0, 8); 5 | [R][5] = InputData(0, 9); 6 | [R][6] = InputData(0, 10); 7 | [R][7] = InputData(0, 12); 8 | [R][8] = InputData(0, 13); 9 | [R][9] = InputData(0, 14); 10 | [R][10] = InputData(0, 18); 11 | [R][11] = InputData(0, 19); 12 | [R][12] = InputData(0, 20); 13 | [R][13] = InputData(0, 21); 14 | [R][14] = InputData(0, 22); 15 | [R][15] = InputData(0, 23); 16 | [R][16] = InputData(0, 24); 17 | [R][17] = InputData(0, 25); 18 | [R][18] = InputData(0, 26); 19 | [R][19] = InputData(0, 27); 20 | OP_85(C[704]); 21 | R[20] = OP_1(R[0], C[0]); 22 | R[0] = OP_30(R[4], C[708]); 23 | R[21] = OP_2(R[0], C[712]); 24 | R[22] = OP_37(R[20], R[21]); 25 | R[21] = OP_43(R[22], C[716], C[720]); 26 | R[22] = OP_4(R[20], R[0]); 27 | OP_86; 28 | OP_85(C[724]); 29 | R[0] = OP_46(C[576], C[728]); 30 | R[23] = OP_46(C[560], C[728]); 31 | R[24] = OP_46(C[704], C[728]); 32 | R[25] = OP_44(R[0], C[732]); 33 | R[0] = OP_44(R[23], C[732]); 34 | R[23] = OP_44(R[24], C[732]); 35 | R[24] = OP_46(R[0], R[23]); 36 | R[26] = OP_44(R[25], R[24]); 37 | R[24] = OP_46(R[23], R[26]); 38 | R[25] = OP_44(R[0], R[24]); 39 | R[0] = OP_46(R[26], R[25]); 40 | R[24] = OP_44(R[23], R[0]); 41 | R[0] = OP_46(R[25], R[24]); 42 | R[23] = OP_44(R[26], R[0]); 43 | R[0] = OP_46(R[24], R[23]); 44 | R[26] = OP_44(R[25], R[0]); 45 | R[0] = OP_46(R[23], R[26]); 46 | R[25] = OP_44(R[24], R[0]); 47 | R[0] = OP_66(R[23], C[736]); 48 | R[23] = OP_66(R[26], C[736]); 49 | R[24] = OP_66(R[25], C[736]); 50 | R[25] = OP_61(R[0], C[740]); 51 | R[0] = OP_61(R[23], C[740]); 52 | R[23] = OP_61(R[24], C[740]); 53 | R[24] = OP_72(R[25]); 54 | R[25] = OP_72(R[0]); 55 | R[0] = OP_72(R[23]); 56 | R[23] = OP_4(R[24], C[744]); 57 | R[0] = OP_5(R[23], C[748], R[7]); 58 | R[24] = OP_5(R[23], C[748], R[8]); 59 | R[25] = OP_5(R[23], C[748], R[9]); 60 | R[23] = OP_3(R[0], C[580]); 61 | R[0] = OP_3(R[24], C[580]); 62 | R[24] = OP_3(R[25], C[580]); 63 | R[25] = OP_3(C[584], C[8]); 64 | R[26] = OP_3(C[588], C[8]); 65 | R[27] = OP_3(C[592], C[8]); 66 | R[28] = OP_2(R[23], R[25]); 67 | R[23] = OP_2(R[0], R[26]); 68 | R[0] = OP_2(R[24], R[27]); 69 | R[24] = OP_3(R[28], C[752]); 70 | R[25] = OP_3(R[23], C[752]); 71 | R[23] = OP_3(R[0], C[752]); 72 | SampleField_EmitterVectorField32[func0](R[24], R[25], R[23], R[0], R[26], R[27]); 73 | R[23] = OP_3(R[0], C[604]); 74 | R[0] = OP_3(R[26], C[604]); 75 | R[24] = OP_3(R[27], C[604]); 76 | OP_86; 77 | OP_85(C[756]); 78 | R[25] = OP_46(C[608], C[728]); 79 | R[26] = OP_46(C[560], C[728]); 80 | R[27] = OP_46(C[724], C[728]); 81 | R[28] = OP_44(R[25], C[732]); 82 | R[25] = OP_44(R[26], C[732]); 83 | R[26] = OP_44(R[27], C[732]); 84 | R[27] = OP_46(R[25], R[26]); 85 | R[29] = OP_44(R[28], R[27]); 86 | R[27] = OP_46(R[26], R[29]); 87 | R[28] = OP_44(R[25], R[27]); 88 | R[25] = OP_46(R[29], R[28]); 89 | R[27] = OP_44(R[26], R[25]); 90 | R[25] = OP_46(R[28], R[27]); 91 | R[26] = OP_44(R[29], R[25]); 92 | R[25] = OP_46(R[27], R[26]); 93 | R[29] = OP_44(R[28], R[25]); 94 | R[25] = OP_46(R[26], R[29]); 95 | R[28] = OP_44(R[27], R[25]); 96 | R[25] = OP_66(R[26], C[736]); 97 | R[26] = OP_66(R[29], C[736]); 98 | R[27] = OP_66(R[28], C[736]); 99 | R[28] = OP_61(R[25], C[740]); 100 | R[25] = OP_61(R[26], C[740]); 101 | R[26] = OP_61(R[27], C[740]); 102 | R[27] = OP_72(R[28]); 103 | R[28] = OP_72(R[25]); 104 | R[25] = OP_72(R[26]); 105 | R[26] = OP_4(R[27], C[744]); 106 | R[25] = OP_5(R[26], C[748], R[7]); 107 | R[27] = OP_5(R[26], C[748], R[8]); 108 | R[28] = OP_5(R[26], C[748], R[9]); 109 | R[26] = OP_3(R[25], C[612]); 110 | R[25] = OP_3(R[27], C[612]); 111 | R[27] = OP_3(R[28], C[612]); 112 | R[28] = OP_3(R[26], C[752]); 113 | R[26] = OP_3(R[25], C[752]); 114 | R[25] = OP_3(R[27], C[752]); 115 | SampleField_EmitterVectorField32[func1](R[28], R[26], R[25], R[27], R[29], R[30]); 116 | R[25] = OP_5(R[27], C[636], R[23]); 117 | R[23] = OP_5(R[29], C[636], R[0]); 118 | R[0] = OP_5(R[30], C[636], R[24]); 119 | OP_86; 120 | OP_85(C[760]); 121 | R[24] = OP_10(R[7]); 122 | R[26] = OP_10(R[8]); 123 | R[27] = OP_10(R[9]); 124 | R[28] = OP_1(R[27], C[712]); 125 | R[27] = OP_3(R[26], R[26]); 126 | R[29] = OP_5(R[24], R[24], R[27]); 127 | R[27] = OP_5(R[28], R[28], R[29]); 128 | R[29] = OP_9(R[27]); 129 | R[27] = OP_3(R[26], R[26]); 130 | R[30] = OP_5(R[24], R[24], R[27]); 131 | R[27] = OP_5(R[28], R[28], R[30]); 132 | R[30] = OP_8(R[27]); 133 | R[27] = OP_3(R[24], R[30]); 134 | R[24] = OP_3(R[26], R[30]); 135 | R[26] = OP_3(R[28], R[30]); 136 | R[28] = OP_31(R[29], C[648]); 137 | R[30] = OP_3(C[644], R[28]); 138 | R[28] = OP_39(R[29], C[640]); 139 | R[29] = OP_43(R[28], C[764], R[30]); 140 | R[28] = OP_5(R[27], R[29], R[25]); 141 | R[25] = OP_5(R[24], R[29], R[23]); 142 | R[23] = OP_5(R[26], R[29], R[0]); 143 | OP_86; 144 | OP_85(C[768]); 145 | R[0] = OP_10(R[7]); 146 | R[7] = OP_10(R[8]); 147 | R[8] = OP_10(R[9]); 148 | R[9] = OP_3(R[7], R[7]); 149 | R[24] = OP_5(R[0], R[0], R[9]); 150 | R[9] = OP_5(R[8], R[8], R[24]); 151 | R[24] = OP_9(R[9]); 152 | R[9] = OP_37(R[24], C[708]); 153 | R[26] = OP_43(R[9], C[764], R[0]); 154 | R[0] = OP_43(R[9], C[764], R[7]); 155 | R[7] = OP_43(R[9], C[772], R[8]); 156 | R[8] = OP_43(R[9], C[772], R[24]); 157 | R[24] = OP_4(R[26], R[8]); 158 | R[26] = OP_4(R[0], R[8]); 159 | R[0] = OP_4(R[7], R[8]); 160 | R[7] = OP_43(R[9], C[764], R[24]); 161 | R[8] = OP_43(R[9], C[764], R[26]); 162 | R[24] = OP_43(R[9], C[772], R[0]); 163 | R[0] = OP_3(R[8], C[676]); 164 | R[9] = OP_3(R[24], C[672]); 165 | R[26] = OP_2(R[0], R[9]); 166 | R[0] = OP_3(R[24], C[668]); 167 | R[9] = OP_3(R[7], C[676]); 168 | R[27] = OP_2(R[0], R[9]); 169 | R[0] = OP_3(R[7], C[672]); 170 | R[9] = OP_3(R[8], C[668]); 171 | R[29] = OP_2(R[0], R[9]); 172 | R[0] = OP_10(C[684]); 173 | R[9] = OP_6(R[7], C[764], R[0]); 174 | R[7] = OP_6(R[8], C[764], R[0]); 175 | R[8] = OP_6(R[24], C[764], R[0]); 176 | R[0] = OP_1(R[26], R[9]); 177 | R[9] = OP_1(R[27], R[7]); 178 | R[7] = OP_1(R[29], R[8]); 179 | R[8] = OP_3(R[9], R[9]); 180 | R[24] = OP_5(R[0], R[0], R[8]); 181 | R[8] = OP_5(R[7], R[7], R[24]); 182 | R[24] = OP_8(R[8]); 183 | R[8] = OP_3(R[0], R[24]); 184 | R[0] = OP_3(R[9], R[24]); 185 | R[9] = OP_3(R[7], R[24]); 186 | R[7] = OP_5(R[8], C[680], R[28]); 187 | R[8] = OP_5(R[0], C[680], R[25]); 188 | R[0] = OP_5(R[9], C[680], R[23]); 189 | OP_86; 190 | OP_85(C[776]); 191 | R[9] = OP_30(R[5], C[712]); 192 | R[23] = OP_7(R[9]); 193 | R[9] = OP_3(R[23], R[7]); 194 | R[7] = OP_3(R[23], R[8]); 195 | R[8] = OP_3(R[23], R[0]); 196 | R[0] = OP_5(R[9], C[0], R[17]); 197 | R[9] = OP_5(R[7], C[0], R[18]); 198 | R[7] = OP_5(R[8], C[0], R[19]); 199 | R[8] = OP_30(C[656], C[764]); 200 | R[17] = OP_5(C[0], R[8], C[772]); 201 | R[8] = OP_4(R[0], R[17]); 202 | R[0] = OP_4(R[9], R[17]); 203 | R[9] = OP_4(R[7], R[17]); 204 | OP_86; 205 | OP_85(C[736]); 206 | AudioSpectrum_EmitterNewAudioSpectrum[func2](C[696], C[780], R[7]); 207 | R[17] = OP_3(R[2], R[2]); 208 | R[18] = OP_5(R[1], R[1], R[17]); 209 | R[17] = OP_5(R[3], R[3], R[18]); 210 | R[18] = OP_8(R[17]); 211 | R[17] = OP_3(R[1], R[18]); 212 | R[19] = OP_3(R[2], R[18]); 213 | R[23] = OP_3(R[3], R[18]); 214 | R[18] = OP_3(R[17], C[700]); 215 | R[17] = OP_3(R[19], C[700]); 216 | R[19] = OP_3(R[23], C[700]); 217 | R[23] = OP_3(R[7], R[18]); 218 | R[18] = OP_3(R[7], R[17]); 219 | R[17] = OP_3(R[7], R[19]); 220 | SampleColorCurve_EmitterColor[func3](R[7], R[19], R[24], R[25], R[26]); 221 | OP_86; 222 | [R][7] = AcquireIndex(0, [R][21]); 223 | OutputData(0, 0, [R][7], [R][20]); 224 | OutputData(0, 1, [R][7], [R][19]); 225 | OutputData(0, 2, [R][7], [R][24]); 226 | OutputData(0, 3, [R][7], [R][25]); 227 | OutputData(0, 4, [R][7], [R][26]); 228 | OutputData(0, 5, [R][7], [R][1]); 229 | OutputData(0, 6, [R][7], [R][2]); 230 | OutputData(0, 7, [R][7], [R][3]); 231 | OutputData(0, 8, [R][7], [R][4]); 232 | OutputData(0, 9, [R][7], [R][5]); 233 | OutputData(0, 10, [R][7], [R][6]); 234 | OutputData(0, 11, [R][7], [R][22]); 235 | OutputData(0, 12, [R][7], [R][23]); 236 | OutputData(0, 13, [R][7], [R][18]); 237 | OutputData(0, 14, [R][7], [R][17]); 238 | OutputData(0, 15, [R][7], [R][8]); 239 | OutputData(0, 16, [R][7], [R][0]); 240 | OutputData(0, 17, [R][7], [R][9]); 241 | OutputData(0, 18, [R][7], [R][10]); 242 | OutputData(0, 19, [R][7], [R][11]); 243 | OutputData(0, 20, [R][7], [R][12]); 244 | OutputData(0, 21, [R][7], [R][13]); 245 | OutputData(0, 22, [R][7], [R][14]); 246 | OutputData(0, 23, [R][7], [R][15]); 247 | OutputData(0, 24, [R][7], [R][16]); 248 | OutputData(0, 25, [R][7], [R][8]); 249 | OutputData(0, 26, [R][7], [R][0]); 250 | OutputData(0, 27, [R][7], [R][9]); ------------------------------- ({|^1^n <$@j)'LM <$@j)'LM  <$@j)'LM <$@j)'LM  <$@j)'LM2GY84NiagaraScript /Game/Audio4.Audio4:SystemSpawnScriptao M-RعeQ+(1NTorus.LocalspaceRIng.LocalspaceSphere.LocalspaceCPUSim<A1\P$0vJn^VLJ1lJl1\xSu_{i֊vl@;:E1\&]j1h?ґZ``k1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\Sa[5bP~1\,ᖑ\e= }S1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\xSu_{i֊vl@;:E1\&]j1h?ґZ``k1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*Ao M-RعeQ+(1NTorus.LocalspaceRIng.LocalspaceSphere.LocalspaceCPUSim<A1\P$0vJn^VLJ1lJl1\xSu_{i֊vl@;:E1\&]j1h?ґZ``k1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\Sa[5bP~1\,ᖑ\e= }S1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\xSu_{i֊vl@;:E1\&]j1h?ґZ``k1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\xSu_{i֊vl@;:E1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A` [1[\WPOOOOOO OOOO O O O O OOOOOO OOOOOOOOOOOOO O!O"O#O$O%O &O'O(O)O*O+O,O-O.O/O0O 1O2O3O4O5O6O7O8O9O:!!!1!?1\5%@j)'j!1A! ?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'2-S!1!?1\W%@j)'81N#/8#?1\5%@j)'?1\S%@j)'?1\U%@j)'?1\V%@j)'?1\W%@j)'?1\Y%@j)'?1\Z%@j)'?1\[%@j)'?1\]%@j)'?1\_%@j)'?1\c%@j)'?1\d%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\ %@j)'?1\%@j)'?1\%@j)'1rRR1)`%`// Shader generated by Niagara HLSL Translator struct NiagaraSpawnInfo { int Count; float InterpStartDt; float IntervalDt; int SpawnGroup; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { } cbuffer FNiagaraOwnerParameters { } cbuffer FNiagaraEmitterParameters { } cbuffer FNiagaraExternalParameters { int Emitter_RandomSeed; } struct FParamMap0_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; float3 VortexOrigin; }; struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; int ScalabilityEmitterExecutionState; float ScalabilityEmitterSpawnCountScale; bool SpawningbCanEverSpawn; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_Torus_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_Torus_Scalability { float DistanceFraction; }; struct FParamMap0_Torus { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_Torus_Scalability Scalability; FParamMap0_Torus_SpawnRate SpawnRate; }; struct FParamMap0_System { float Age; bool bCompleteOnInactive; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; int LoopCount; float LoopedAge; float NormalizedLoopAge; }; struct FParamMap0_Sphere_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_Sphere_SpawnParticlesInGrid_SpawnBurst_Instantaneous { NiagaraSpawnInfo SpawnBurst; }; struct FParamMap0_Sphere_SpawnParticlesInGrid { int GridLocationSpawnCount; int GridLocationXCount; int GridLocationYCount; int GridLocationZCount; FParamMap0_Sphere_SpawnParticlesInGrid_SpawnBurst_Instantaneous SpawnBurst_Instantaneous; }; struct FParamMap0_Sphere_Scalability { float DistanceFraction; }; struct FParamMap0_Sphere { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_Sphere_Scalability Scalability; FParamMap0_Sphere_SpawnParticlesInGrid SpawnParticlesInGrid; FParamMap0_Sphere_SpawnRate SpawnRate; }; struct FParamMap0_SpawnRate { int SpawnGroup; float SpawnProbability; float SpawnRate; }; struct FParamMap0_SpawnParticlesInGrid_SpawnBurst_Instantaneous { float Age; int SpawnCount; int SpawnGroup; float SpawnProbability; float SpawnTime; }; struct FParamMap0_SpawnParticlesInGrid { FParamMap0_SpawnParticlesInGrid_SpawnBurst_Instantaneous SpawnBurst_Instantaneous; float SpawnTime; int XCount; int YCount; int ZCount; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles { float3 Direction; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE { FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles Particles; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles { float3 Direction; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 { FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles Particles; }; struct FParamMap0_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_RIng_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_RIng_Scalability { float DistanceFraction; }; struct FParamMap0_RIng { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_RIng_Scalability Scalability; FParamMap0_RIng_SpawnRate SpawnRate; }; struct FParamMap0_PointAttractionForce { float AttractionRadius; float AttractionStrength; float3 AttractorPosition; float FalloffExponent; float KillRadius; bool KillWithinRadius; bool UseFalloff; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_GridLocation { float3 GridSpacing; float3 GridUVW; float3 NormalizedArraylocation; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_GridLocation GridLocation; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_VortexForce { float ForceAmount; float InverseNormalizedRange; float NormalizedRange; float3 OriginVector; float3 ParticlesPosition; float3 VortexOrigin; float3 VortexVector; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SpawnRate { float InterpStartDT; float IntervalDT; int SpawnCount; float SpawnRate; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_PointAttractionForce { float3 PointOriginVec; float PointOriginVecLength; }; struct FParamMap0_Local_GridLocation { int GridXCount; int GridYCount; int GridZCount; float3 InitialGridSpacing; float3 LocalSpacePosition; float3 XYZCountAsVector; }; struct FParamMap0_Local_EmitterState { bool LoopCountIncreased; float LoopDuration; bool NoActiveEmitterParticles; int PreviousEmitterState; }; struct FParamMap0_Local_CurlNoiseForce001 { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Local_EmitterState EmitterState; FParamMap0_Local_GridLocation GridLocation; FParamMap0_Local_PointAttractionForce PointAttractionForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_SpawnRate SpawnRate; FParamMap0_Local_TorusLocation TorusLocation; FParamMap0_Local_VortexForce VortexForce; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_GridLocation { int CoordinateSpace; int ExecIndex; float3 GridOrigin; int GridXCount; int GridYCount; int GridZCount; bool JitterInsideGridCells; float3 Offset; float3 RandomizePlacementWithinCell; float3 XYZDimensions; }; struct FParamMap0_Engine_Torus { int NumParticles; float SpawnCountScale; }; struct FParamMap0_Engine_Sphere { int NumParticles; float SpawnCountScale; }; struct FParamMap0_Engine_RIng { int NumParticles; float SpawnCountScale; }; struct FParamMap0_Engine_Owner { float LODDistanceFraction; float3 Position; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; }; struct FParamMap0_Engine_Emitter { int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_RIng RIng; FParamMap0_Engine_Sphere Sphere; float Time; FParamMap0_Engine_Torus Torus; }; struct FParamMap0_EmitterState { float LoopDelay; float LoopDuration; bool RecalculateDurationEachLoop; }; struct FParamMap0_Emitter { int RandomSeed; }; struct FParamMap0_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0 { FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_DataInstance DataInstance; FParamMap0_Drag Drag; FParamMap0_Emitter Emitter; FParamMap0_EmitterState EmitterState; FParamMap0_Engine Engine; FParamMap0_GridLocation GridLocation; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_PointAttractionForce PointAttractionForce; FParamMap0_RIng RIng; FParamMap0_ScratchModule ScratchModule; FParamMap0_ScratchModule_01 ScratchModule_01; FParamMap0_ScratchModule_02 ScratchModule_02; FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 SetVariables_329408A848D6370CD518C495994F1D42; FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE SetVariables_619FBC7841F4E96144B94D92F32F22FE; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_SpawnParticlesInGrid SpawnParticlesInGrid; FParamMap0_SpawnRate SpawnRate; FParamMap0_Sphere Sphere; FParamMap0_System System; FParamMap0_Torus Torus; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; FParamMap0_VortexForce VortexForce; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void Sphere_Func_(inout FSimulationContext Context); void RIng_Func_(inout FSimulationContext Context); void Torus_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void Sphere_Func_(inout FSimulationContext Context) { } void RIng_Func_(inout FSimulationContext Context) { } void Torus_Func_(inout FSimulationContext Context) { } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:SystemSpawnScript*/); //Begin Initialize Parameter Map Defaults int Constant = 0; Context.Map.Sphere.ExecutionState = Constant; float Constant1 = 0; Context.Map.Sphere.Age = Constant1; float Constant2 = 0; Context.Map.Sphere.CurrentLoopDuration = Constant2; float Constant3 = 0; Context.Map.Sphere.LoopedAge = Constant3; int Constant4 = 0; Context.Map.Sphere.LoopCount = Constant4; float Constant5 = (0.0); Context.Map.Sphere.NormalizedLoopAge = Constant5; float Constant6 = (0.0); Context.Map.Sphere.Scalability.DistanceFraction = Constant6; int Constant7 = 0; Context.Map.System.ExecutionState = Constant7; int Constant8 = 0; Context.Map.System.ExecutionStateSource = Constant8; int Constant9 = 0; Context.Map.Sphere.ExecutionStateSource = Constant9; int Constant10 = (0); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationSpawnCount = Constant10; int Constant11 = (0); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationXCount = Constant11; int Constant12 = (0); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationYCount = Constant12; int Constant13 = (0); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationZCount = Constant13; NiagaraSpawnInfo Constant14 = (NiagaraSpawnInfo)0; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst = Constant14; float Constant15 = 0; Context.Map.Sphere.SpawnRate.SpawnRemainder = Constant15; NiagaraSpawnInfo Constant16 = (NiagaraSpawnInfo)0; Context.Map.Sphere.SpawnRate.SpawnOutputInfo = Constant16; bool Constant17 = false; Context.Map.Sphere.LocalSpace = Constant17; int Constant18 = 0; Context.Map.RIng.ExecutionState = Constant18; float Constant19 = 0; Context.Map.RIng.Age = Constant19; float Constant20 = 0; Context.Map.RIng.CurrentLoopDuration = Constant20; float Constant21 = 0; Context.Map.RIng.LoopedAge = Constant21; int Constant22 = 0; Context.Map.RIng.LoopCount = Constant22; float Constant23 = (0.0); Context.Map.RIng.NormalizedLoopAge = Constant23; float Constant24 = (0.0); Context.Map.RIng.Scalability.DistanceFraction = Constant24; int Constant25 = 0; Context.Map.RIng.ExecutionStateSource = Constant25; float Constant26 = 0; Context.Map.RIng.SpawnRate.SpawnRemainder = Constant26; NiagaraSpawnInfo Constant27 = (NiagaraSpawnInfo)0; Context.Map.RIng.SpawnRate.SpawnOutputInfo = Constant27; bool Constant28 = false; Context.Map.RIng.LocalSpace = Constant28; int Constant29 = 0; Context.Map.Torus.ExecutionState = Constant29; float Constant30 = 0; Context.Map.Torus.Age = Constant30; float Constant31 = 0; Context.Map.Torus.CurrentLoopDuration = Constant31; float Constant32 = 0; Context.Map.Torus.LoopedAge = Constant32; int Constant33 = 0; Context.Map.Torus.LoopCount = Constant33; float Constant34 = (0.0); Context.Map.Torus.NormalizedLoopAge = Constant34; float Constant35 = (0.0); Context.Map.Torus.Scalability.DistanceFraction = Constant35; int Constant36 = 0; Context.Map.Torus.ExecutionStateSource = Constant36; float Constant37 = 0; Context.Map.Torus.SpawnRate.SpawnRemainder = Constant37; NiagaraSpawnInfo Constant38 = (NiagaraSpawnInfo)0; Context.Map.Torus.SpawnRate.SpawnOutputInfo = Constant38; bool Constant39 = false; Context.Map.Torus.LocalSpace = Constant39; float Constant40 = 0; Context.Map.System.Age = Constant40; float Constant41 = 0; Context.Map.System.CurrentLoopDuration = Constant41; float Constant42 = 0; Context.Map.System.LoopedAge = Constant42; int Constant43 = 0; Context.Map.System.LoopCount = Constant43; float Constant44 = (0.0); Context.Map.System.NormalizedLoopAge = Constant44; bool Constant45 = false; Context.Map.System.bCompleteOnInactive = Constant45; //End Initialize Parameter Map Defaults EnterStatScope(1 /**Sphere*/); Sphere_Func_(Context); ExitStatScope(/**Sphere*/); EnterStatScope(2 /**RIng*/); RIng_Func_(Context); ExitStatScope(/**RIng*/); EnterStatScope(3 /**Torus*/); Torus_Func_(Context); ExitStatScope(/**Torus*/); // Begin HandleMissingDefaultValues // End HandleMissingDefaultValues ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:SystemSpawnScript*/); } void SimulateMain() { EnterStatScope(4 /**SystemSpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.Emitter.RandomSeed = 0; Context.Map.RIng.Age = 0.0f; Context.Map.RIng.CurrentLoopDuration = 0.0f; Context.Map.RIng.ExecutionState = 0; Context.Map.RIng.ExecutionStateSource = 0; Context.Map.RIng.LocalSpace = false; Context.Map.RIng.LoopCount = 0; Context.Map.RIng.LoopedAge = 0.0f; Context.Map.RIng.NormalizedLoopAge = 0.0f; Context.Map.RIng.Scalability.DistanceFraction = 0.0f; Context.Map.RIng.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.RIng.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.RIng.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.RIng.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.RIng.SpawnRate.SpawnRemainder = 0.0f; Context.Map.Sphere.Age = 0.0f; Context.Map.Sphere.CurrentLoopDuration = 0.0f; Context.Map.Sphere.ExecutionState = 0; Context.Map.Sphere.ExecutionStateSource = 0; Context.Map.Sphere.LocalSpace = false; Context.Map.Sphere.LoopCount = 0; Context.Map.Sphere.LoopedAge = 0.0f; Context.Map.Sphere.NormalizedLoopAge = 0.0f; Context.Map.Sphere.Scalability.DistanceFraction = 0.0f; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationSpawnCount = 0; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationXCount = 0; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationYCount = 0; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationZCount = 0; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.Count = 0; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.InterpStartDt = 0.0f; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.IntervalDt = 0.0f; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.SpawnGroup = 0; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.Sphere.SpawnRate.SpawnRemainder = 0.0f; Context.Map.System.Age = 0.0f; Context.Map.System.bCompleteOnInactive = false; Context.Map.System.CurrentLoopDuration = 0.0f; Context.Map.System.ExecutionState = 0; Context.Map.System.ExecutionStateSource = 0; Context.Map.System.LoopCount = 0; Context.Map.System.LoopedAge = 0.0f; Context.Map.System.NormalizedLoopAge = 0.0f; Context.Map.Torus.Age = 0.0f; Context.Map.Torus.CurrentLoopDuration = 0.0f; Context.Map.Torus.ExecutionState = 0; Context.Map.Torus.ExecutionStateSource = 0; Context.Map.Torus.LocalSpace = false; Context.Map.Torus.LoopCount = 0; Context.Map.Torus.LoopedAge = 0.0f; Context.Map.Torus.NormalizedLoopAge = 0.0f; Context.Map.Torus.Scalability.DistanceFraction = 0.0f; Context.Map.Torus.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.Torus.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.Torus.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.Torus.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.Torus.SpawnRate.SpawnRemainder = 0.0f; Context.Map.Engine.Emitter.TotalSpawnedParticles = InputDataInt(1, 0); Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); Simulate(Context); WriteDataSets(Context); { int TmpWriteIndex = OutputIndex(0, false, true); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.Emitter.RandomSeed); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.RIng.Age); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.RIng.CurrentLoopDuration); OutputDataInt(0, 3, TmpWriteIndex, Context.Map.RIng.ExecutionState); OutputDataInt(0, 4, TmpWriteIndex, Context.Map.RIng.ExecutionStateSource); OutputDataBool(0, 5, TmpWriteIndex, Context.Map.RIng.LocalSpace); OutputDataInt(0, 6, TmpWriteIndex, Context.Map.RIng.LoopCount); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.RIng.LoopedAge); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.RIng.NormalizedLoopAge); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.RIng.Scalability.DistanceFraction); OutputDataInt(0, 10, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 12, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 13, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 14, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnRemainder); OutputDataFloat(0, 15, TmpWriteIndex, Context.Map.Sphere.Age); OutputDataFloat(0, 16, TmpWriteIndex, Context.Map.Sphere.CurrentLoopDuration); OutputDataInt(0, 17, TmpWriteIndex, Context.Map.Sphere.ExecutionState); OutputDataInt(0, 18, TmpWriteIndex, Context.Map.Sphere.ExecutionStateSource); OutputDataBool(0, 19, TmpWriteIndex, Context.Map.Sphere.LocalSpace); OutputDataInt(0, 20, TmpWriteIndex, Context.Map.Sphere.LoopCount); OutputDataFloat(0, 21, TmpWriteIndex, Context.Map.Sphere.LoopedAge); OutputDataFloat(0, 22, TmpWriteIndex, Context.Map.Sphere.NormalizedLoopAge); OutputDataFloat(0, 23, TmpWriteIndex, Context.Map.Sphere.Scalability.DistanceFraction); OutputDataInt(0, 24, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationSpawnCount); OutputDataInt(0, 25, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationXCount); OutputDataInt(0, 26, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationYCount); OutputDataInt(0, 27, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationZCount); OutputDataInt(0, 28, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.Count); OutputDataFloat(0, 29, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.InterpStartDt); OutputDataFloat(0, 30, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.IntervalDt); OutputDataInt(0, 31, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.SpawnGroup); OutputDataInt(0, 32, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 33, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 34, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 35, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 36, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnRemainder); OutputDataFloat(0, 37, TmpWriteIndex, Context.Map.System.Age); OutputDataBool(0, 38, TmpWriteIndex, Context.Map.System.bCompleteOnInactive); OutputDataFloat(0, 39, TmpWriteIndex, Context.Map.System.CurrentLoopDuration); OutputDataInt(0, 40, TmpWriteIndex, Context.Map.System.ExecutionState); OutputDataInt(0, 41, TmpWriteIndex, Context.Map.System.ExecutionStateSource); OutputDataInt(0, 42, TmpWriteIndex, Context.Map.System.LoopCount); OutputDataFloat(0, 43, TmpWriteIndex, Context.Map.System.LoopedAge); OutputDataFloat(0, 44, TmpWriteIndex, Context.Map.System.NormalizedLoopAge); OutputDataFloat(0, 45, TmpWriteIndex, Context.Map.Torus.Age); OutputDataFloat(0, 46, TmpWriteIndex, Context.Map.Torus.CurrentLoopDuration); OutputDataInt(0, 47, TmpWriteIndex, Context.Map.Torus.ExecutionState); OutputDataInt(0, 48, TmpWriteIndex, Context.Map.Torus.ExecutionStateSource); OutputDataBool(0, 49, TmpWriteIndex, Context.Map.Torus.LocalSpace); OutputDataInt(0, 50, TmpWriteIndex, Context.Map.Torus.LoopCount); OutputDataFloat(0, 51, TmpWriteIndex, Context.Map.Torus.LoopedAge); OutputDataFloat(0, 52, TmpWriteIndex, Context.Map.Torus.NormalizedLoopAge); OutputDataFloat(0, 53, TmpWriteIndex, Context.Map.Torus.Scalability.DistanceFraction); OutputDataInt(0, 54, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 55, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 56, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 57, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 58, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnRemainder); } ExitStatScope(/**SystemSpawnScript_Main*/); } P L ------------------------------- Summary ------------------------------- Num Byte Code Ops: 60 Num Constants: 9 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Emitter_RandomSeed 20 | True 24 | 0 28 | 0 32 | False ------------------------------- Byte Code (60 Ops) ------------------------------- 0 | [R][0] = AcquireIndex(0, [C][20]); 1 | OutputData(0, 0, [R][0], [C][16]); 2 | OutputData(0, 1, [R][0], [C][24]); 3 | OutputData(0, 2, [R][0], [C][24]); 4 | OutputData(0, 3, [R][0], [C][28]); 5 | OutputData(0, 4, [R][0], [C][28]); 6 | OutputData(0, 5, [R][0], [C][32]); 7 | OutputData(0, 6, [R][0], [C][28]); 8 | OutputData(0, 7, [R][0], [C][24]); 9 | OutputData(0, 8, [R][0], [C][24]); 10 | OutputData(0, 9, [R][0], [C][24]); 11 | OutputData(0, 10, [R][0], [C][28]); 12 | OutputData(0, 11, [R][0], [C][24]); 13 | OutputData(0, 12, [R][0], [C][24]); 14 | OutputData(0, 13, [R][0], [C][28]); 15 | OutputData(0, 14, [R][0], [C][24]); 16 | OutputData(0, 15, [R][0], [C][24]); 17 | OutputData(0, 16, [R][0], [C][24]); 18 | OutputData(0, 17, [R][0], [C][28]); 19 | OutputData(0, 18, [R][0], [C][28]); 20 | OutputData(0, 19, [R][0], [C][32]); 21 | OutputData(0, 20, [R][0], [C][28]); 22 | OutputData(0, 21, [R][0], [C][24]); 23 | OutputData(0, 22, [R][0], [C][24]); 24 | OutputData(0, 23, [R][0], [C][24]); 25 | OutputData(0, 24, [R][0], [C][28]); 26 | OutputData(0, 25, [R][0], [C][28]); 27 | OutputData(0, 26, [R][0], [C][28]); 28 | OutputData(0, 27, [R][0], [C][28]); 29 | OutputData(0, 28, [R][0], [C][28]); 30 | OutputData(0, 29, [R][0], [C][24]); 31 | OutputData(0, 30, [R][0], [C][24]); 32 | OutputData(0, 31, [R][0], [C][28]); 33 | OutputData(0, 32, [R][0], [C][28]); 34 | OutputData(0, 33, [R][0], [C][24]); 35 | OutputData(0, 34, [R][0], [C][24]); 36 | OutputData(0, 35, [R][0], [C][28]); 37 | OutputData(0, 36, [R][0], [C][24]); 38 | OutputData(0, 37, [R][0], [C][24]); 39 | OutputData(0, 38, [R][0], [C][32]); 40 | OutputData(0, 39, [R][0], [C][24]); 41 | OutputData(0, 40, [R][0], [C][28]); 42 | OutputData(0, 41, [R][0], [C][28]); 43 | OutputData(0, 42, [R][0], [C][28]); 44 | OutputData(0, 43, [R][0], [C][24]); 45 | OutputData(0, 44, [R][0], [C][24]); 46 | OutputData(0, 45, [R][0], [C][24]); 47 | OutputData(0, 46, [R][0], [C][24]); 48 | OutputData(0, 47, [R][0], [C][28]); 49 | OutputData(0, 48, [R][0], [C][28]); 50 | OutputData(0, 49, [R][0], [C][32]); 51 | OutputData(0, 50, [R][0], [C][28]); 52 | OutputData(0, 51, [R][0], [C][24]); 53 | OutputData(0, 52, [R][0], [C][24]); 54 | OutputData(0, 53, [R][0], [C][24]); 55 | OutputData(0, 54, [R][0], [C][28]); 56 | OutputData(0, 55, [R][0], [C][24]); 57 | OutputData(0, 56, [R][0], [C][24]); 58 | OutputData(0, 57, [R][0], [C][28]); 59 | OutputData(0, 58, [R][0], [C][24]); ------------------------------- (<{|2G1MPq%@j)'Tr%@j)'Xs%@j)'\t%@j)'`%@j)'d%@j)'h%@j)'%@j)'%@j)'%@j)' %@j)'%@j)'%@j)'%@j)'%@j)' %@j)'$%@j)'(%@j)',%@j)'0%@j)'4%@j)'8%@j)'<%@j)'@%@j)'D%@j)'H%@j)'L%@j)'1p\l?@E ?PG@?@E?PCG?@E?PCG95NiagaraScript /Game/Audio4.Audio4:SystemUpdateScriptao M-RعeQ+(1NTorus.LocalspaceRIng.LocalspaceSphere.LocalspaceCPUSim<A1\Sa[5bP~J1lJl1\P$0vJn^VL1\&]j1h?ґZ``k1\xSu_{i֊vl@;:E1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\,ᖑ\e= }S1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\&]j1h?ґZ``k1\xSu_{i֊vl@;:E1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*Ao M-RعeQ+(1NTorus.LocalspaceRIng.LocalspaceSphere.LocalspaceCPUSim<A1\Sa[5bP~J1lJl1\P$0vJn^VL1\&]j1h?ґZ``k1\xSu_{i֊vl@;:E1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\,ᖑ\e= }S1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\S$=\44F;/1\&]j1h?ґZ``k1\xSu_{i֊vl@;:E1\}cF&b,pڡ }]1\'f'Zd6*1\{Oߦ> P1\W47-$ 4ި ?1\ $Uŭ]W0tHw1\{Oߦ> P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\āMnM[_+rb71\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A`[1 \ MMMMMMMMMM M M M M MM$M%M'M(M)M*M+M-M.M/M0M1M2M3M:MMM M!M"M#M$M%Uhl&)p'+'&((G&2&tH&&(''&,9t+((+&&''8t&+&t(+&t<t8x&C&)+)(+)xVU|l)p&+& (  (G2tH(& &,  9t+((+&&p;"t(;t"< |)< *C)*+C"+)8 "C)"*+* "+* <t ;x)C )*<"| <")C )+C*+ 8 h)C )*+*h" +*h "< t <"t)C )*C(* < |(< )C()*C *(8"| C( )+)| +)|" VU2 h"2$h(2(h)."(*.*)+U&*,*,(,p*,&-%-p.C*.-H+**#..*;+t.+.p*/G/*+-*t.+-,p*+-pp,+-tt/VVU0#--#0#01(&p0+0p2-200--G0-2VU<l)p-+-33G2tH3--,9t+33+--p; t3;t <|4<5C456C 648 C4 5+5 +5<t;x4C45< |< 4C46C568h4C45+5h +5h <t< t4C45C35<|3<4C345C538 |C34+4|+4| VUD!  !3!34(-p3+3p5 533  G3 5VUPl)p + 66G2tH6  ,9t+66+  p;$t;t$<|6<7C678C$868$C6$7+7$+7<t;x6C67<$|<$6C68C788h6C67+7h$+7h$<t<$t6C67C7<|<6C67C78$|C6+6|+6|$VUX%$%$%6( p%+%p77%%G%7VPOdOOOOOOO-OO O3 O4 O! OH O5O OO O O O O&OOO+O"O(O)O.O*O,O/O0 O1!O#"O4#O2$O%O&O'O(O)O*O'+O,O-O.O/O0O1O2O 3O4O5O%6O67O$8O\9O7:9! !1!?1\%@j)'?1\@%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\r%@j)'?1\q%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\5%@j)' !1e !0 ?1\%@j)'?1\;<%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\G?%@j)'?1\%@j)'?1\%@j)'?1\? %@j)'?1\ %@j)'?1\ %@j)'?1\  %@j)'?1\  %@j)'?1\ %@j)'?1\%@j)'2AS!1 !?1\W%@j)'?1\Y%@j)'?1\Z%@j)'?1\`%@j)'?1\a%@j)'?1\c%@j)'?1\d%@j)'?1\g%@j)'?1\h%@j)'81z#/8E#?1\5%@j)'?1\S%@j)'?1\U%@j)'?1\V%@j)'?1\W%@j)'?1\Y%@j)'?1\Z%@j)'?1\[%@j)'?1\]%@j)'?1\_%@j)'?1\c%@j)'?1\d%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\ %@j)'?1\%@j)'?1\%@j)'1A IHRRGFKJ1// Shader generated by Niagara HLSL Translator struct NiagaraSpawnInfo { int Count; float InterpStartDt; float IntervalDt; int SpawnGroup; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { } cbuffer FNiagaraOwnerParameters { } cbuffer FNiagaraEmitterParameters { } cbuffer FNiagaraExternalParameters { float Constants_SystemState_LoopDelay; float Constants_SystemState_LoopDuration; float Constants_Sphere_EmitterState_LoopDuration; float Constants_Sphere_EmitterState_LoopDelay; int Constants_Sphere_SpawnParticlesInGrid_XCount; int Constants_Sphere_SpawnParticlesInGrid_YCount; int Constants_Sphere_SpawnParticlesInGrid_ZCount; float Constants_Sphere_SpawnParticlesInGrid_SpawnTime; float Constants_Sphere_SpawnRate_SpawnRate; int Constants_Sphere_SpawnRate_SpawnGroup; float Constants_Sphere_SpawnRate_SpawnProbability; float Constants_RIng_EmitterState_LoopDuration; float Constants_RIng_EmitterState_LoopDelay; float Constants_RIng_SpawnRate_SpawnRate; int Constants_RIng_SpawnRate_SpawnGroup; float Constants_RIng_SpawnRate_SpawnProbability; float Constants_Torus_EmitterState_LoopDuration; float Constants_Torus_EmitterState_LoopDelay; float Constants_Torus_SpawnRate_SpawnRate; int Constants_Torus_SpawnRate_SpawnGroup; float Constants_Torus_SpawnRate_SpawnProbability; int Emitter_RandomSeed; } struct FParamMap0_VortexForce { float InfluenceFalloffRadius; float OriginPullAmount; float3 VortexAxis; float VortexForceAmount; float3 VortexOrigin; }; struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; float PhysicsRotationalDrag; int ScalabilityEmitterExecutionState; float ScalabilityEmitterSpawnCountScale; int ScalabilityExecutionState; bool SpawningbCanEverSpawn; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_Torus_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_Torus_Scalability { float DistanceFraction; }; struct FParamMap0_Torus { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_Torus_Scalability Scalability; FParamMap0_Torus_SpawnRate SpawnRate; }; struct FParamMap0_SystemState { float LoopDelay; float LoopDuration; bool RecalculateDurationEachLoop; }; struct FParamMap0_System { float Age; bool bCompleteOnInactive; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; int LoopCount; float LoopedAge; float NormalizedLoopAge; }; struct FParamMap0_Sphere_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_Sphere_SpawnParticlesInGrid_SpawnBurst_Instantaneous { NiagaraSpawnInfo SpawnBurst; }; struct FParamMap0_Sphere_SpawnParticlesInGrid { int GridLocationSpawnCount; int GridLocationXCount; int GridLocationYCount; int GridLocationZCount; FParamMap0_Sphere_SpawnParticlesInGrid_SpawnBurst_Instantaneous SpawnBurst_Instantaneous; }; struct FParamMap0_Sphere_Scalability { float DistanceFraction; }; struct FParamMap0_Sphere { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_Sphere_Scalability Scalability; FParamMap0_Sphere_SpawnParticlesInGrid SpawnParticlesInGrid; FParamMap0_Sphere_SpawnRate SpawnRate; }; struct FParamMap0_SpawnRate { int SpawnGroup; float SpawnProbability; float SpawnRate; }; struct FParamMap0_SpawnParticlesInGrid_SpawnBurst_Instantaneous { float Age; int SpawnCount; int SpawnGroup; float SpawnProbability; float SpawnTime; }; struct FParamMap0_SpawnParticlesInGrid { FParamMap0_SpawnParticlesInGrid_SpawnBurst_Instantaneous SpawnBurst_Instantaneous; float SpawnTime; int XCount; int YCount; int ZCount; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles { float3 Direction; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE { FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles Particles; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles { float3 Direction; }; struct FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 { FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42_Particles Particles; }; struct FParamMap0_ScratchModule_02 { float NormalaizedPosition; float Radius; }; struct FParamMap0_ScratchModule_01 { float NormalaizedPosition; float Radius; }; struct FParamMap0_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_RIng_SpawnRate { NiagaraSpawnInfo SpawnOutputInfo; float SpawnRemainder; }; struct FParamMap0_RIng_Scalability { float DistanceFraction; }; struct FParamMap0_RIng { float Age; float CurrentLoopDuration; int ExecutionState; int ExecutionStateSource; bool LocalSpace; int LoopCount; float LoopedAge; float NormalizedLoopAge; FParamMap0_RIng_Scalability Scalability; FParamMap0_RIng_SpawnRate SpawnRate; }; struct FParamMap0_PointAttractionForce { float AttractionRadius; float AttractionStrength; float3 AttractorPosition; float FalloffExponent; float KillRadius; bool KillWithinRadius; bool UseFalloff; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR_GridLocation { float3 GridSpacing; float3 GridUVW; float3 NormalizedArraylocation; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_GridLocation GridLocation; FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_VortexForce { float ForceAmount; float InverseNormalizedRange; float NormalizedRange; float3 OriginVector; float3 ParticlesPosition; float3 VortexOrigin; float3 VortexVector; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SystemState { bool LoopCountIncreased; }; struct FParamMap0_Local_SpawnRate { float InterpStartDT; float IntervalDT; int SpawnCount; float SpawnRate; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_PointAttractionForce { float3 PointOriginVec; float PointOriginVecLength; }; struct FParamMap0_Local_GridLocation { int GridXCount; int GridYCount; int GridZCount; float3 InitialGridSpacing; float3 LocalSpacePosition; float3 XYZCountAsVector; }; struct FParamMap0_Local_EmitterState { bool LoopCountIncreased; float LoopDuration; bool NoActiveEmitterParticles; int PreviousEmitterState; }; struct FParamMap0_Local_CurlNoiseForce001 { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_Local_EmitterState EmitterState; FParamMap0_Local_GridLocation GridLocation; FParamMap0_Local_PointAttractionForce PointAttractionForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_SpawnRate SpawnRate; FParamMap0_Local_SystemState SystemState; FParamMap0_Local_TorusLocation TorusLocation; FParamMap0_Local_VortexForce VortexForce; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_GridLocation { int CoordinateSpace; int ExecIndex; float3 GridOrigin; int GridXCount; int GridYCount; int GridZCount; bool JitterInsideGridCells; float3 Offset; float3 RandomizePlacementWithinCell; float3 XYZDimensions; }; struct FParamMap0_Engine_Torus { int NumParticles; float SpawnCountScale; }; struct FParamMap0_Engine_Sphere { int NumParticles; float SpawnCountScale; }; struct FParamMap0_Engine_RIng { int NumParticles; float SpawnCountScale; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistanceFraction; float3 Position; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; }; struct FParamMap0_Engine_Emitter { int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_RIng RIng; FParamMap0_Engine_Sphere Sphere; float Time; FParamMap0_Engine_Torus Torus; }; struct FParamMap0_EmitterState { float LoopDelay; float LoopDuration; bool RecalculateDurationEachLoop; }; struct FParamMap0_Emitter { int RandomSeed; }; struct FParamMap0_Drag { float Drag; float RotationalDrag; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce001 { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_Constants_Torus_SpawnRate { int SpawnGroup; float SpawnProbability; float SpawnRate; }; struct FParamMap0_Constants_Torus_EmitterState { float LoopDelay; float LoopDuration; }; struct FParamMap0_Constants_Torus { FParamMap0_Constants_Torus_EmitterState EmitterState; FParamMap0_Constants_Torus_SpawnRate SpawnRate; }; struct FParamMap0_Constants_SystemState { float LoopDelay; float LoopDuration; }; struct FParamMap0_Constants_Sphere_SpawnRate { int SpawnGroup; float SpawnProbability; float SpawnRate; }; struct FParamMap0_Constants_Sphere_SpawnParticlesInGrid { float SpawnTime; int XCount; int YCount; int ZCount; }; struct FParamMap0_Constants_Sphere_EmitterState { float LoopDelay; float LoopDuration; }; struct FParamMap0_Constants_Sphere { FParamMap0_Constants_Sphere_EmitterState EmitterState; FParamMap0_Constants_Sphere_SpawnParticlesInGrid SpawnParticlesInGrid; FParamMap0_Constants_Sphere_SpawnRate SpawnRate; }; struct FParamMap0_Constants_RIng_SpawnRate { int SpawnGroup; float SpawnProbability; float SpawnRate; }; struct FParamMap0_Constants_RIng_EmitterState { float LoopDelay; float LoopDuration; }; struct FParamMap0_Constants_RIng { FParamMap0_Constants_RIng_EmitterState EmitterState; FParamMap0_Constants_RIng_SpawnRate SpawnRate; }; struct FParamMap0_Constants { FParamMap0_Constants_RIng RIng; FParamMap0_Constants_Sphere Sphere; FParamMap0_Constants_SystemState SystemState; FParamMap0_Constants_Torus Torus; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_CurlNoiseForce001 CurlNoiseForce001; FParamMap0_DataInstance DataInstance; FParamMap0_Drag Drag; FParamMap0_Emitter Emitter; FParamMap0_EmitterState EmitterState; FParamMap0_Engine Engine; FParamMap0_GridLocation GridLocation; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_PointAttractionForce PointAttractionForce; FParamMap0_RIng RIng; FParamMap0_ScratchModule ScratchModule; FParamMap0_ScratchModule_01 ScratchModule_01; FParamMap0_ScratchModule_02 ScratchModule_02; FParamMap0_SetVariables_329408A848D6370CD518C495994F1D42 SetVariables_329408A848D6370CD518C495994F1D42; FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE SetVariables_619FBC7841F4E96144B94D92F32F22FE; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_SpawnParticlesInGrid SpawnParticlesInGrid; FParamMap0_SpawnRate SpawnRate; FParamMap0_Sphere Sphere; FParamMap0_System System; FParamMap0_SystemState SystemState; FParamMap0_Torus Torus; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; FParamMap0_VortexForce VortexForce; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void SystemState_SystemChangeState002_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void SystemState_SystemChangeState_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void SystemState_SystemChangeState001_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void SystemState_Func_(inout FSimulationContext Context); void EmitterState_EmitterChangeState002_Sphere_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState005_Sphere_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState003_Sphere_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_Sphere_Func_(inout FSimulationContext Context); void SpawnParticlesInGrid_SpawnBurst_Instantaneous_Sphere_Func_(inout FSimulationContext Context); void SpawnParticlesInGrid_Sphere_Func_(inout FSimulationContext Context); void SpawnRate_Sphere_Func_(inout FSimulationContext Context); void Sphere_Func_(inout FSimulationContext Context); void EmitterState_EmitterChangeState002_RIng_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState005_RIng_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState003_RIng_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_RIng_Func_(inout FSimulationContext Context); void SpawnRate_RIng_Func_(inout FSimulationContext Context); void RIng_Func_(inout FSimulationContext Context); void EmitterState_EmitterChangeState002_Torus_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState005_Torus_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_EmitterChangeState003_Torus_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context); void EmitterState_Torus_Func_(inout FSimulationContext Context); void SpawnRate_Torus_Func_(inout FSimulationContext Context); void Torus_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void SystemState_SystemChangeState002_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { bool Result11 = NiagaraAll(Context.Map.System.ExecutionStateSource <= In_NewStateSource); bool Result12 = In_Condition && Result11; int ENiagaraExecutionState_IfResult; int ENiagaraExecutionStateSource_IfResult; if(Result12) { ENiagaraExecutionState_IfResult = In_NewState; ENiagaraExecutionStateSource_IfResult = In_NewStateSource; } else { ENiagaraExecutionState_IfResult = Context.Map.System.ExecutionState; ENiagaraExecutionStateSource_IfResult = Context.Map.System.ExecutionStateSource; } Context.Map.System.ExecutionState = ENiagaraExecutionState_IfResult; Context.Map.System.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult; } void SystemState_SystemChangeState_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { bool Result13 = NiagaraAll(Context.Map.System.ExecutionStateSource <= In_NewStateSource); bool Result14 = In_Condition && Result13; int ENiagaraExecutionState_IfResult1; int ENiagaraExecutionStateSource_IfResult1; if(Result14) { ENiagaraExecutionState_IfResult1 = In_NewState; ENiagaraExecutionStateSource_IfResult1 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult1 = Context.Map.System.ExecutionState; ENiagaraExecutionStateSource_IfResult1 = Context.Map.System.ExecutionStateSource; } Context.Map.System.ExecutionState = ENiagaraExecutionState_IfResult1; Context.Map.System.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult1; } void SystemState_SystemChangeState001_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { bool Result16 = NiagaraAll(Context.Map.System.ExecutionStateSource <= In_NewStateSource); bool Result17 = In_Condition && Result16; int ENiagaraExecutionState_IfResult2; int ENiagaraExecutionStateSource_IfResult2; if(Result17) { ENiagaraExecutionState_IfResult2 = In_NewState; ENiagaraExecutionStateSource_IfResult2 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult2 = Context.Map.System.ExecutionState; ENiagaraExecutionStateSource_IfResult2 = Context.Map.System.ExecutionStateSource; } Context.Map.System.ExecutionState = ENiagaraExecutionState_IfResult2; Context.Map.System.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult2; } void SystemState_Func_(inout FSimulationContext Context) { float Constant3 = 0; bool Result = NiagaraAll(Context.Map.System.Age == Constant3); float Constant4 = 0.016667; float Result1 = max(Context.Map.Constants.SystemState.LoopDuration, Constant4); float Duration_IfResult; if(Result) { Duration_IfResult = Result1; } else { Duration_IfResult = Context.Map.System.CurrentLoopDuration; } float Constant5 = 0; Context.Map.System.CurrentLoopDuration = Duration_IfResult; Context.Map.SystemState.LoopDelay = Constant5; float Result2 = Context.Map.System.Age + Context.Map.Engine.DeltaTime; float Result3 = Context.Map.Engine.DeltaTime + Context.Map.System.LoopedAge; float Result4 = Result3 / Context.Map.System.CurrentLoopDuration; int Count; Count = Result4; int Constant6 = 0; int Result5 = max(Count, Constant6); float Result6 = Result5 * Context.Map.System.CurrentLoopDuration; float Result7 = Result3 - Result6; int Constant7 = 0; bool Result8 = NiagaraAll(Result5 > Constant7); int Result9 = Result5 + Context.Map.System.LoopCount; Context.Map.System.Age = Result2; Context.Map.System.LoopedAge = Result7; Context.Map.Local.SystemState.LoopCountIncreased = Result8; Context.Map.System.LoopCount = Result9; float float_IfResult; if(Context.Map.SystemState.RecalculateDurationEachLoop) { float_IfResult = Context.Map.Constants.SystemState.LoopDuration; } else { float_IfResult = Context.Map.System.CurrentLoopDuration; } float CurrentLoopDuration_IfResult; float LoopedAge_IfResult; if(Context.Map.Local.SystemState.LoopCountIncreased) { CurrentLoopDuration_IfResult = float_IfResult; LoopedAge_IfResult = Context.Map.System.LoopedAge; } else { CurrentLoopDuration_IfResult = Context.Map.System.CurrentLoopDuration; LoopedAge_IfResult = Context.Map.System.LoopedAge; } Context.Map.System.CurrentLoopDuration = CurrentLoopDuration_IfResult; Context.Map.System.LoopedAge = LoopedAge_IfResult; float Result10 = Context.Map.System.LoopedAge / Context.Map.System.CurrentLoopDuration; Context.Map.System.NormalizedLoopAge = Result10; bool Constant8 = true; int Constant9 = 0; SystemState_SystemChangeState002_Func_(Context.Map.Transient.ScalabilityExecutionState, Constant8, Constant9, Context); int Constant10 = 3; bool Constant11 = false; int Constant12 = 3; SystemState_SystemChangeState_Func_(Constant10, Constant11, Constant12, Context); bool Constant13 = true; Context.Map.System.bCompleteOnInactive = Constant13; int Constant14 = 0; bool Result15 = NiagaraAll(Context.Map.Engine.Owner.ExecutionState != Constant14); int Constant15 = 2; SystemState_SystemChangeState001_Func_(Context.Map.Engine.Owner.ExecutionState, Result15, Constant15, Context); } void EmitterState_EmitterChangeState002_Sphere_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant27 = 3; bool Result32 = NiagaraAll(Context.Map.Sphere.ExecutionState != Constant27); int Constant28 = 4; bool Result33 = NiagaraAll(Context.Map.Sphere.ExecutionState != Constant28); bool Result34 = Result32 && Result33; bool Result35 = In_Condition && Result34; bool Result36 = NiagaraAll(Context.Map.Sphere.ExecutionStateSource <= In_NewStateSource); bool Result37 = Result35 && Result36; int ENiagaraExecutionState_IfResult3; int ENiagaraExecutionStateSource_IfResult3; if(Result37) { ENiagaraExecutionState_IfResult3 = In_NewState; ENiagaraExecutionStateSource_IfResult3 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult3 = Context.Map.Sphere.ExecutionState; ENiagaraExecutionStateSource_IfResult3 = Context.Map.Sphere.ExecutionStateSource; } Context.Map.Sphere.ExecutionState = ENiagaraExecutionState_IfResult3; Context.Map.Sphere.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult3; } void EmitterState_EmitterChangeState005_Sphere_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant33 = 3; bool Result41 = NiagaraAll(Context.Map.Sphere.ExecutionState != Constant33); int Constant34 = 4; bool Result42 = NiagaraAll(Context.Map.Sphere.ExecutionState != Constant34); bool Result43 = Result41 && Result42; bool Result44 = In_Condition && Result43; bool Result45 = NiagaraAll(Context.Map.Sphere.ExecutionStateSource <= In_NewStateSource); bool Result46 = Result44 && Result45; int ENiagaraExecutionState_IfResult4; int ENiagaraExecutionStateSource_IfResult4; if(Result46) { ENiagaraExecutionState_IfResult4 = In_NewState; ENiagaraExecutionStateSource_IfResult4 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult4 = Context.Map.Sphere.ExecutionState; ENiagaraExecutionStateSource_IfResult4 = Context.Map.Sphere.ExecutionStateSource; } Context.Map.Sphere.ExecutionState = ENiagaraExecutionState_IfResult4; Context.Map.Sphere.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult4; } void EmitterState_EmitterChangeState003_Sphere_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant39 = 3; bool Result51 = NiagaraAll(Context.Map.Sphere.ExecutionState != Constant39); int Constant40 = 4; bool Result52 = NiagaraAll(Context.Map.Sphere.ExecutionState != Constant40); bool Result53 = Result51 && Result52; bool Result54 = In_Condition && Result53; bool Result55 = NiagaraAll(Context.Map.Sphere.ExecutionStateSource <= In_NewStateSource); bool Result56 = Result54 && Result55; int ENiagaraExecutionState_IfResult5; int ENiagaraExecutionStateSource_IfResult5; if(Result56) { ENiagaraExecutionState_IfResult5 = In_NewState; ENiagaraExecutionStateSource_IfResult5 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult5 = Context.Map.Sphere.ExecutionState; ENiagaraExecutionStateSource_IfResult5 = Context.Map.Sphere.ExecutionStateSource; } Context.Map.Sphere.ExecutionState = ENiagaraExecutionState_IfResult5; Context.Map.Sphere.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult5; } void EmitterState_Sphere_Func_(inout FSimulationContext Context) { Context.Map.Local.EmitterState.PreviousEmitterState = Context.Map.Sphere.ExecutionState; float Constant16 = 0.016667; float Result18 = max(Context.Map.Constants.Sphere.EmitterState.LoopDuration, Constant16); Context.Map.Local.EmitterState.LoopDuration = Result18; float Constant17 = 0; bool Result19 = NiagaraAll(Context.Map.Sphere.Age == Constant17); float Duration_IfResult1; if(Result19) { Duration_IfResult1 = Context.Map.Local.EmitterState.LoopDuration; } else { Duration_IfResult1 = Context.Map.Sphere.CurrentLoopDuration; } float Constant18 = 0; Context.Map.Sphere.CurrentLoopDuration = Duration_IfResult1; Context.Map.EmitterState.LoopDelay = Constant18; float Result20 = Context.Map.Sphere.Age + Context.Map.Engine.DeltaTime; float Result21 = Context.Map.Engine.DeltaTime + Context.Map.Sphere.LoopedAge; float Result22 = Result21 / Context.Map.Sphere.CurrentLoopDuration; int Count1; Count1 = Result22; int Constant19 = 0; int Result23 = max(Count1, Constant19); float Result24 = Result23 * Context.Map.Sphere.CurrentLoopDuration; float Result25 = Result21 - Result24; int Constant20 = 0; bool Result26 = NiagaraAll(Result23 > Constant20); int Result27 = Result23 + Context.Map.Sphere.LoopCount; Context.Map.Sphere.Age = Result20; Context.Map.Sphere.LoopedAge = Result25; Context.Map.Local.EmitterState.LoopCountIncreased = Result26; Context.Map.Sphere.LoopCount = Result27; bool Constant21 = false; Context.Map.EmitterState.RecalculateDurationEachLoop = Constant21; float float_IfResult1; if(Context.Map.EmitterState.RecalculateDurationEachLoop) { float_IfResult1 = Context.Map.Local.EmitterState.LoopDuration; } else { float_IfResult1 = Context.Map.Sphere.CurrentLoopDuration; } float CurrentLoopDuration_IfResult1; float LoopedAge_IfResult1; if(Context.Map.Local.EmitterState.LoopCountIncreased) { CurrentLoopDuration_IfResult1 = float_IfResult1; LoopedAge_IfResult1 = Context.Map.Sphere.LoopedAge; } else { CurrentLoopDuration_IfResult1 = Context.Map.Sphere.CurrentLoopDuration; LoopedAge_IfResult1 = Context.Map.Sphere.LoopedAge; } Context.Map.Sphere.CurrentLoopDuration = CurrentLoopDuration_IfResult1; Context.Map.Sphere.LoopedAge = LoopedAge_IfResult1; float Result28 = Context.Map.Sphere.LoopedAge / Context.Map.Sphere.CurrentLoopDuration; Context.Map.Sphere.NormalizedLoopAge = Result28; float Constant22 = 0; float Constant23 = 1.0001; float Result29 = clamp(Context.Map.Engine.Owner.LODDistanceFraction,Constant22,Constant23); Context.Map.Sphere.Scalability.DistanceFraction = Result29; int Constant24 = 0; Context.Map.Transient.ScalabilityEmitterExecutionState = Constant24; int Constant25 = 0; bool Result30 = NiagaraAll(Context.Map.Engine.Sphere.NumParticles == Constant25); Context.Map.Local.EmitterState.NoActiveEmitterParticles = Result30; int Constant26 = 0; bool Result31 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant26); EmitterState_EmitterChangeState002_Sphere_Func_(Context.Map.System.ExecutionState, Result31, Context.Map.System.ExecutionStateSource, Context); int Constant29 = 1; int Constant30 = 0; bool Result38 = NiagaraAll(Context.Map.System.ExecutionState != Constant30); int Constant31 = 2; bool Result39 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant31); bool Result40 = Result38 && Result39; int Constant32 = 1; EmitterState_EmitterChangeState005_Sphere_Func_(Constant29, Result40, Constant32, Context); int Constant35 = 3; int Constant36 = 0; bool Result47 = NiagaraAll(Context.Map.Sphere.ExecutionState != Constant36); int Constant37 = 0; bool Result48 = NiagaraAll(Context.Map.Sphere.ExecutionStateSource != Constant37); bool Result49 = Result47 && Result48; bool Result50 = Context.Map.Local.EmitterState.NoActiveEmitterParticles && Result49; int Constant38 = 3; EmitterState_EmitterChangeState003_Sphere_Func_(Constant35, Result50, Constant38, Context); } void SpawnParticlesInGrid_SpawnBurst_Instantaneous_Sphere_Func_(inout FSimulationContext Context) { Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.Age = Context.Map.Sphere.LoopedAge; int Constant44 = 0; Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnGroup = Constant44; float Constant45 = 1; Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnProbability = Constant45; float Result62 = Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.Age - Context.Map.Engine.DeltaTime; float Result63 = Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnTime - Result62; float Constant46 = 0; float Output1; Output1 = Constant46; bool Result64 = NiagaraAll(Result63 >= Output1); float Result65 = Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnTime - Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.Age; bool Result66 = NiagaraAll(Result65 < Output1); bool Result67 = Result64 && Result66; float Constant47 = 1; Context.Map.Transient.ScalabilityEmitterSpawnCountScale = Constant47; int Constant48 = 0; bool Result68 = NiagaraAll(Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnCount == Constant48); float Constant49 = 0; float Result69 = Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnCount * Context.Map.Transient.ScalabilityEmitterSpawnCountScale * Context.Map.Engine.Sphere.SpawnCountScale; float Constant50 = 1; float Result70 = max(Result69, Constant50); float float_IfResult2; if(Result68) { float_IfResult2 = Constant49; } else { float_IfResult2 = Result70; } float Constant51 = 0; NiagaraSpawnInfo Output11; Output11.Count = float_IfResult2; Output11.InterpStartDt = Result63; Output11.IntervalDt = Constant51; Output11.SpawnGroup = Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnGroup; int Constant52 = 0; float Constant53 = 0; float Constant54 = 0; NiagaraSpawnInfo Output12; Output12.Count = Constant52; Output12.InterpStartDt = Constant53; Output12.SpawnGroup = Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnGroup; Output12.IntervalDt = Constant54; NiagaraSpawnInfo SpawnInfo_IfResult; if(Result67) { SpawnInfo_IfResult = Output11; } else { SpawnInfo_IfResult = Output12; } Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst = SpawnInfo_IfResult; bool Constant55 = false; Context.Map.Transient.SpawningbCanEverSpawn = Constant55; bool Result71 = NiagaraAll(Context.Map.Sphere.LoopedAge <= Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnTime); bool Result72 = Context.Map.Transient.SpawningbCanEverSpawn || Result71; Context.Map.Transient.SpawningbCanEverSpawn = Result72; } void SpawnParticlesInGrid_Sphere_Func_(inout FSimulationContext Context) { int Constant41 = 1; int Result57 = max(Context.Map.Constants.Sphere.SpawnParticlesInGrid.XCount, Constant41); int Constant42 = 1; int Result58 = max(Context.Map.Constants.Sphere.SpawnParticlesInGrid.YCount, Constant42); int Result59 = Result57 * Result58; int Constant43 = 1; int Result60 = max(Context.Map.Constants.Sphere.SpawnParticlesInGrid.ZCount, Constant43); int Result61 = Result59 * Result60; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationSpawnCount = Result61; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationXCount = Result57; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationYCount = Result58; Context.Map.Sphere.SpawnParticlesInGrid.GridLocationZCount = Result60; Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnCount = Context.Map.Sphere.SpawnParticlesInGrid.GridLocationSpawnCount; Context.Map.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnTime = Context.Map.Constants.Sphere.SpawnParticlesInGrid.SpawnTime; EnterStatScope(4 /**SpawnParticlesInGrid_SpawnBurst_Instantaneous_Sphere_Func_*/); SpawnParticlesInGrid_SpawnBurst_Instantaneous_Sphere_Func_(Context); ExitStatScope(/**SpawnParticlesInGrid_SpawnBurst_Instantaneous_Sphere_Func_*/); } void SpawnRate_Sphere_Func_(inout FSimulationContext Context) { float Result73 = Context.Map.Constants.Sphere.SpawnRate.SpawnRate * Context.Map.Transient.ScalabilityEmitterSpawnCountScale * Context.Map.Engine.Sphere.SpawnCountScale; float Result74 = Reciprocal(Result73); float Result75 = 1 - Context.Map.Sphere.SpawnRate.SpawnRemainder; float Result76 = Result74 * Result75; Context.Map.Local.SpawnRate.SpawnRate = Result73; Context.Map.Local.SpawnRate.IntervalDT = Result74; Context.Map.Local.SpawnRate.InterpStartDT = Result76; float Constant56 = 0; bool Result77 = NiagaraAll(Context.Map.Sphere.LoopedAge >= Constant56); float Constant57 = 1; float Constant58 = 0; float float_IfResult3; if(Result77) { float_IfResult3 = Constant57; } else { float_IfResult3 = Constant58; } float Result78 = Context.Map.Local.SpawnRate.SpawnRate * float_IfResult3; float Result79 = Result78 * Context.Map.Engine.DeltaTime + Context.Map.Sphere.SpawnRate.SpawnRemainder; float Result80 = floor(Result79); float Result81 = Result79 - Result80; Context.Map.Local.SpawnRate.SpawnCount = Result80; Context.Map.Sphere.SpawnRate.SpawnRemainder = Result81; NiagaraSpawnInfo Output13; Output13.Count = Context.Map.Local.SpawnRate.SpawnCount; Output13.InterpStartDt = Context.Map.Local.SpawnRate.InterpStartDT; Output13.IntervalDt = Context.Map.Local.SpawnRate.IntervalDT; Output13.SpawnGroup = Context.Map.Constants.Sphere.SpawnRate.SpawnGroup; bool Constant59 = true; Context.Map.Sphere.SpawnRate.SpawnOutputInfo = Output13; Context.Map.Transient.SpawningbCanEverSpawn = Constant59; } void Sphere_Func_(inout FSimulationContext Context) { EnterStatScope(3 /**EmitterState_Sphere_Func_*/); EmitterState_Sphere_Func_(Context); ExitStatScope(/**EmitterState_Sphere_Func_*/); EnterStatScope(5 /**SpawnParticlesInGrid_Sphere_Func_*/); SpawnParticlesInGrid_Sphere_Func_(Context); ExitStatScope(/**SpawnParticlesInGrid_Sphere_Func_*/); EnterStatScope(6 /**SpawnRate_Sphere_Func_*/); SpawnRate_Sphere_Func_(Context); ExitStatScope(/**SpawnRate_Sphere_Func_*/); } void EmitterState_EmitterChangeState002_RIng_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant71 = 3; bool Result96 = NiagaraAll(Context.Map.RIng.ExecutionState != Constant71); int Constant72 = 4; bool Result97 = NiagaraAll(Context.Map.RIng.ExecutionState != Constant72); bool Result98 = Result96 && Result97; bool Result99 = In_Condition && Result98; bool Result100 = NiagaraAll(Context.Map.RIng.ExecutionStateSource <= In_NewStateSource); bool Result101 = Result99 && Result100; int ENiagaraExecutionState_IfResult6; int ENiagaraExecutionStateSource_IfResult6; if(Result101) { ENiagaraExecutionState_IfResult6 = In_NewState; ENiagaraExecutionStateSource_IfResult6 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult6 = Context.Map.RIng.ExecutionState; ENiagaraExecutionStateSource_IfResult6 = Context.Map.RIng.ExecutionStateSource; } Context.Map.RIng.ExecutionState = ENiagaraExecutionState_IfResult6; Context.Map.RIng.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult6; } void EmitterState_EmitterChangeState005_RIng_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant77 = 3; bool Result105 = NiagaraAll(Context.Map.RIng.ExecutionState != Constant77); int Constant78 = 4; bool Result106 = NiagaraAll(Context.Map.RIng.ExecutionState != Constant78); bool Result107 = Result105 && Result106; bool Result108 = In_Condition && Result107; bool Result109 = NiagaraAll(Context.Map.RIng.ExecutionStateSource <= In_NewStateSource); bool Result110 = Result108 && Result109; int ENiagaraExecutionState_IfResult7; int ENiagaraExecutionStateSource_IfResult7; if(Result110) { ENiagaraExecutionState_IfResult7 = In_NewState; ENiagaraExecutionStateSource_IfResult7 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult7 = Context.Map.RIng.ExecutionState; ENiagaraExecutionStateSource_IfResult7 = Context.Map.RIng.ExecutionStateSource; } Context.Map.RIng.ExecutionState = ENiagaraExecutionState_IfResult7; Context.Map.RIng.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult7; } void EmitterState_EmitterChangeState003_RIng_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant83 = 3; bool Result115 = NiagaraAll(Context.Map.RIng.ExecutionState != Constant83); int Constant84 = 4; bool Result116 = NiagaraAll(Context.Map.RIng.ExecutionState != Constant84); bool Result117 = Result115 && Result116; bool Result118 = In_Condition && Result117; bool Result119 = NiagaraAll(Context.Map.RIng.ExecutionStateSource <= In_NewStateSource); bool Result120 = Result118 && Result119; int ENiagaraExecutionState_IfResult8; int ENiagaraExecutionStateSource_IfResult8; if(Result120) { ENiagaraExecutionState_IfResult8 = In_NewState; ENiagaraExecutionStateSource_IfResult8 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult8 = Context.Map.RIng.ExecutionState; ENiagaraExecutionStateSource_IfResult8 = Context.Map.RIng.ExecutionStateSource; } Context.Map.RIng.ExecutionState = ENiagaraExecutionState_IfResult8; Context.Map.RIng.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult8; } void EmitterState_RIng_Func_(inout FSimulationContext Context) { Context.Map.Local.EmitterState.PreviousEmitterState = Context.Map.RIng.ExecutionState; float Constant60 = 0.016667; float Result82 = max(Context.Map.Constants.RIng.EmitterState.LoopDuration, Constant60); Context.Map.Local.EmitterState.LoopDuration = Result82; float Constant61 = 0; bool Result83 = NiagaraAll(Context.Map.RIng.Age == Constant61); float Duration_IfResult2; if(Result83) { Duration_IfResult2 = Context.Map.Local.EmitterState.LoopDuration; } else { Duration_IfResult2 = Context.Map.RIng.CurrentLoopDuration; } float Constant62 = 0; Context.Map.RIng.CurrentLoopDuration = Duration_IfResult2; Context.Map.EmitterState.LoopDelay = Constant62; float Result84 = Context.Map.RIng.Age + Context.Map.Engine.DeltaTime; float Result85 = Context.Map.Engine.DeltaTime + Context.Map.RIng.LoopedAge; float Result86 = Result85 / Context.Map.RIng.CurrentLoopDuration; int Count2; Count2 = Result86; int Constant63 = 0; int Result87 = max(Count2, Constant63); float Result88 = Result87 * Context.Map.RIng.CurrentLoopDuration; float Result89 = Result85 - Result88; int Constant64 = 0; bool Result90 = NiagaraAll(Result87 > Constant64); int Result91 = Result87 + Context.Map.RIng.LoopCount; Context.Map.RIng.Age = Result84; Context.Map.RIng.LoopedAge = Result89; Context.Map.Local.EmitterState.LoopCountIncreased = Result90; Context.Map.RIng.LoopCount = Result91; bool Constant65 = false; Context.Map.EmitterState.RecalculateDurationEachLoop = Constant65; float float_IfResult4; if(Context.Map.EmitterState.RecalculateDurationEachLoop) { float_IfResult4 = Context.Map.Local.EmitterState.LoopDuration; } else { float_IfResult4 = Context.Map.RIng.CurrentLoopDuration; } float CurrentLoopDuration_IfResult2; float LoopedAge_IfResult2; if(Context.Map.Local.EmitterState.LoopCountIncreased) { CurrentLoopDuration_IfResult2 = float_IfResult4; LoopedAge_IfResult2 = Context.Map.RIng.LoopedAge; } else { CurrentLoopDuration_IfResult2 = Context.Map.RIng.CurrentLoopDuration; LoopedAge_IfResult2 = Context.Map.RIng.LoopedAge; } Context.Map.RIng.CurrentLoopDuration = CurrentLoopDuration_IfResult2; Context.Map.RIng.LoopedAge = LoopedAge_IfResult2; float Result92 = Context.Map.RIng.LoopedAge / Context.Map.RIng.CurrentLoopDuration; Context.Map.RIng.NormalizedLoopAge = Result92; float Constant66 = 0; float Constant67 = 1.0001; float Result93 = clamp(Context.Map.Engine.Owner.LODDistanceFraction,Constant66,Constant67); Context.Map.RIng.Scalability.DistanceFraction = Result93; int Constant68 = 0; Context.Map.Transient.ScalabilityEmitterExecutionState = Constant68; int Constant69 = 0; bool Result94 = NiagaraAll(Context.Map.Engine.RIng.NumParticles == Constant69); Context.Map.Local.EmitterState.NoActiveEmitterParticles = Result94; int Constant70 = 0; bool Result95 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant70); EmitterState_EmitterChangeState002_RIng_Func_(Context.Map.System.ExecutionState, Result95, Context.Map.System.ExecutionStateSource, Context); int Constant73 = 1; int Constant74 = 0; bool Result102 = NiagaraAll(Context.Map.System.ExecutionState != Constant74); int Constant75 = 2; bool Result103 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant75); bool Result104 = Result102 && Result103; int Constant76 = 1; EmitterState_EmitterChangeState005_RIng_Func_(Constant73, Result104, Constant76, Context); int Constant79 = 3; int Constant80 = 0; bool Result111 = NiagaraAll(Context.Map.RIng.ExecutionState != Constant80); int Constant81 = 0; bool Result112 = NiagaraAll(Context.Map.RIng.ExecutionStateSource != Constant81); bool Result113 = Result111 && Result112; bool Result114 = Context.Map.Local.EmitterState.NoActiveEmitterParticles && Result113; int Constant82 = 3; EmitterState_EmitterChangeState003_RIng_Func_(Constant79, Result114, Constant82, Context); } void SpawnRate_RIng_Func_(inout FSimulationContext Context) { float Result121 = Context.Map.Constants.RIng.SpawnRate.SpawnRate * Context.Map.Transient.ScalabilityEmitterSpawnCountScale * Context.Map.Engine.RIng.SpawnCountScale; float Result122 = Reciprocal(Result121); float Result123 = 1 - Context.Map.RIng.SpawnRate.SpawnRemainder; float Result124 = Result122 * Result123; Context.Map.Local.SpawnRate.SpawnRate = Result121; Context.Map.Local.SpawnRate.IntervalDT = Result122; Context.Map.Local.SpawnRate.InterpStartDT = Result124; float Constant85 = 0; bool Result125 = NiagaraAll(Context.Map.RIng.LoopedAge >= Constant85); float Constant86 = 1; float Constant87 = 0; float float_IfResult5; if(Result125) { float_IfResult5 = Constant86; } else { float_IfResult5 = Constant87; } float Result126 = Context.Map.Local.SpawnRate.SpawnRate * float_IfResult5; float Result127 = Result126 * Context.Map.Engine.DeltaTime + Context.Map.RIng.SpawnRate.SpawnRemainder; float Result128 = floor(Result127); float Result129 = Result127 - Result128; Context.Map.Local.SpawnRate.SpawnCount = Result128; Context.Map.RIng.SpawnRate.SpawnRemainder = Result129; NiagaraSpawnInfo Output14; Output14.Count = Context.Map.Local.SpawnRate.SpawnCount; Output14.InterpStartDt = Context.Map.Local.SpawnRate.InterpStartDT; Output14.IntervalDt = Context.Map.Local.SpawnRate.IntervalDT; Output14.SpawnGroup = Context.Map.Constants.RIng.SpawnRate.SpawnGroup; bool Constant88 = true; Context.Map.RIng.SpawnRate.SpawnOutputInfo = Output14; Context.Map.Transient.SpawningbCanEverSpawn = Constant88; } void RIng_Func_(inout FSimulationContext Context) { EnterStatScope(8 /**EmitterState_RIng_Func_*/); EmitterState_RIng_Func_(Context); ExitStatScope(/**EmitterState_RIng_Func_*/); EnterStatScope(9 /**SpawnRate_RIng_Func_*/); SpawnRate_RIng_Func_(Context); ExitStatScope(/**SpawnRate_RIng_Func_*/); } void EmitterState_EmitterChangeState002_Torus_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant100 = 3; bool Result144 = NiagaraAll(Context.Map.Torus.ExecutionState != Constant100); int Constant101 = 4; bool Result145 = NiagaraAll(Context.Map.Torus.ExecutionState != Constant101); bool Result146 = Result144 && Result145; bool Result147 = In_Condition && Result146; bool Result148 = NiagaraAll(Context.Map.Torus.ExecutionStateSource <= In_NewStateSource); bool Result149 = Result147 && Result148; int ENiagaraExecutionState_IfResult9; int ENiagaraExecutionStateSource_IfResult9; if(Result149) { ENiagaraExecutionState_IfResult9 = In_NewState; ENiagaraExecutionStateSource_IfResult9 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult9 = Context.Map.Torus.ExecutionState; ENiagaraExecutionStateSource_IfResult9 = Context.Map.Torus.ExecutionStateSource; } Context.Map.Torus.ExecutionState = ENiagaraExecutionState_IfResult9; Context.Map.Torus.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult9; } void EmitterState_EmitterChangeState005_Torus_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant106 = 3; bool Result153 = NiagaraAll(Context.Map.Torus.ExecutionState != Constant106); int Constant107 = 4; bool Result154 = NiagaraAll(Context.Map.Torus.ExecutionState != Constant107); bool Result155 = Result153 && Result154; bool Result156 = In_Condition && Result155; bool Result157 = NiagaraAll(Context.Map.Torus.ExecutionStateSource <= In_NewStateSource); bool Result158 = Result156 && Result157; int ENiagaraExecutionState_IfResult10; int ENiagaraExecutionStateSource_IfResult10; if(Result158) { ENiagaraExecutionState_IfResult10 = In_NewState; ENiagaraExecutionStateSource_IfResult10 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult10 = Context.Map.Torus.ExecutionState; ENiagaraExecutionStateSource_IfResult10 = Context.Map.Torus.ExecutionStateSource; } Context.Map.Torus.ExecutionState = ENiagaraExecutionState_IfResult10; Context.Map.Torus.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult10; } void EmitterState_EmitterChangeState003_Torus_Func_(int In_NewState, bool In_Condition, int In_NewStateSource, inout FSimulationContext Context) { int Constant112 = 3; bool Result163 = NiagaraAll(Context.Map.Torus.ExecutionState != Constant112); int Constant113 = 4; bool Result164 = NiagaraAll(Context.Map.Torus.ExecutionState != Constant113); bool Result165 = Result163 && Result164; bool Result166 = In_Condition && Result165; bool Result167 = NiagaraAll(Context.Map.Torus.ExecutionStateSource <= In_NewStateSource); bool Result168 = Result166 && Result167; int ENiagaraExecutionState_IfResult11; int ENiagaraExecutionStateSource_IfResult11; if(Result168) { ENiagaraExecutionState_IfResult11 = In_NewState; ENiagaraExecutionStateSource_IfResult11 = In_NewStateSource; } else { ENiagaraExecutionState_IfResult11 = Context.Map.Torus.ExecutionState; ENiagaraExecutionStateSource_IfResult11 = Context.Map.Torus.ExecutionStateSource; } Context.Map.Torus.ExecutionState = ENiagaraExecutionState_IfResult11; Context.Map.Torus.ExecutionStateSource = ENiagaraExecutionStateSource_IfResult11; } void EmitterState_Torus_Func_(inout FSimulationContext Context) { Context.Map.Local.EmitterState.PreviousEmitterState = Context.Map.Torus.ExecutionState; float Constant89 = 0.016667; float Result130 = max(Context.Map.Constants.Torus.EmitterState.LoopDuration, Constant89); Context.Map.Local.EmitterState.LoopDuration = Result130; float Constant90 = 0; bool Result131 = NiagaraAll(Context.Map.Torus.Age == Constant90); float Duration_IfResult3; if(Result131) { Duration_IfResult3 = Context.Map.Local.EmitterState.LoopDuration; } else { Duration_IfResult3 = Context.Map.Torus.CurrentLoopDuration; } float Constant91 = 0; Context.Map.Torus.CurrentLoopDuration = Duration_IfResult3; Context.Map.EmitterState.LoopDelay = Constant91; float Result132 = Context.Map.Torus.Age + Context.Map.Engine.DeltaTime; float Result133 = Context.Map.Engine.DeltaTime + Context.Map.Torus.LoopedAge; float Result134 = Result133 / Context.Map.Torus.CurrentLoopDuration; int Count3; Count3 = Result134; int Constant92 = 0; int Result135 = max(Count3, Constant92); float Result136 = Result135 * Context.Map.Torus.CurrentLoopDuration; float Result137 = Result133 - Result136; int Constant93 = 0; bool Result138 = NiagaraAll(Result135 > Constant93); int Result139 = Result135 + Context.Map.Torus.LoopCount; Context.Map.Torus.Age = Result132; Context.Map.Torus.LoopedAge = Result137; Context.Map.Local.EmitterState.LoopCountIncreased = Result138; Context.Map.Torus.LoopCount = Result139; bool Constant94 = false; Context.Map.EmitterState.RecalculateDurationEachLoop = Constant94; float float_IfResult6; if(Context.Map.EmitterState.RecalculateDurationEachLoop) { float_IfResult6 = Context.Map.Local.EmitterState.LoopDuration; } else { float_IfResult6 = Context.Map.Torus.CurrentLoopDuration; } float CurrentLoopDuration_IfResult3; float LoopedAge_IfResult3; if(Context.Map.Local.EmitterState.LoopCountIncreased) { CurrentLoopDuration_IfResult3 = float_IfResult6; LoopedAge_IfResult3 = Context.Map.Torus.LoopedAge; } else { CurrentLoopDuration_IfResult3 = Context.Map.Torus.CurrentLoopDuration; LoopedAge_IfResult3 = Context.Map.Torus.LoopedAge; } Context.Map.Torus.CurrentLoopDuration = CurrentLoopDuration_IfResult3; Context.Map.Torus.LoopedAge = LoopedAge_IfResult3; float Result140 = Context.Map.Torus.LoopedAge / Context.Map.Torus.CurrentLoopDuration; Context.Map.Torus.NormalizedLoopAge = Result140; float Constant95 = 0; float Constant96 = 1.0001; float Result141 = clamp(Context.Map.Engine.Owner.LODDistanceFraction,Constant95,Constant96); Context.Map.Torus.Scalability.DistanceFraction = Result141; int Constant97 = 0; Context.Map.Transient.ScalabilityEmitterExecutionState = Constant97; int Constant98 = 0; bool Result142 = NiagaraAll(Context.Map.Engine.Torus.NumParticles == Constant98); Context.Map.Local.EmitterState.NoActiveEmitterParticles = Result142; int Constant99 = 0; bool Result143 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant99); EmitterState_EmitterChangeState002_Torus_Func_(Context.Map.System.ExecutionState, Result143, Context.Map.System.ExecutionStateSource, Context); int Constant102 = 1; int Constant103 = 0; bool Result150 = NiagaraAll(Context.Map.System.ExecutionState != Constant103); int Constant104 = 2; bool Result151 = NiagaraAll(Context.Map.System.ExecutionStateSource == Constant104); bool Result152 = Result150 && Result151; int Constant105 = 1; EmitterState_EmitterChangeState005_Torus_Func_(Constant102, Result152, Constant105, Context); int Constant108 = 3; int Constant109 = 0; bool Result159 = NiagaraAll(Context.Map.Torus.ExecutionState != Constant109); int Constant110 = 0; bool Result160 = NiagaraAll(Context.Map.Torus.ExecutionStateSource != Constant110); bool Result161 = Result159 && Result160; bool Result162 = Context.Map.Local.EmitterState.NoActiveEmitterParticles && Result161; int Constant111 = 3; EmitterState_EmitterChangeState003_Torus_Func_(Constant108, Result162, Constant111, Context); } void SpawnRate_Torus_Func_(inout FSimulationContext Context) { float Result169 = Context.Map.Constants.Torus.SpawnRate.SpawnRate * Context.Map.Transient.ScalabilityEmitterSpawnCountScale * Context.Map.Engine.Torus.SpawnCountScale; float Result170 = Reciprocal(Result169); float Result171 = 1 - Context.Map.Torus.SpawnRate.SpawnRemainder; float Result172 = Result170 * Result171; Context.Map.Local.SpawnRate.SpawnRate = Result169; Context.Map.Local.SpawnRate.IntervalDT = Result170; Context.Map.Local.SpawnRate.InterpStartDT = Result172; float Constant114 = 0; bool Result173 = NiagaraAll(Context.Map.Torus.LoopedAge >= Constant114); float Constant115 = 1; float Constant116 = 0; float float_IfResult7; if(Result173) { float_IfResult7 = Constant115; } else { float_IfResult7 = Constant116; } float Result174 = Context.Map.Local.SpawnRate.SpawnRate * float_IfResult7; float Result175 = Result174 * Context.Map.Engine.DeltaTime + Context.Map.Torus.SpawnRate.SpawnRemainder; float Result176 = floor(Result175); float Result177 = Result175 - Result176; Context.Map.Local.SpawnRate.SpawnCount = Result176; Context.Map.Torus.SpawnRate.SpawnRemainder = Result177; NiagaraSpawnInfo Output15; Output15.Count = Context.Map.Local.SpawnRate.SpawnCount; Output15.InterpStartDt = Context.Map.Local.SpawnRate.InterpStartDT; Output15.IntervalDt = Context.Map.Local.SpawnRate.IntervalDT; Output15.SpawnGroup = Context.Map.Constants.Torus.SpawnRate.SpawnGroup; bool Constant117 = true; Context.Map.Torus.SpawnRate.SpawnOutputInfo = Output15; Context.Map.Transient.SpawningbCanEverSpawn = Constant117; } void Torus_Func_(inout FSimulationContext Context) { EnterStatScope(11 /**EmitterState_Torus_Func_*/); EmitterState_Torus_Func_(Context); ExitStatScope(/**EmitterState_Torus_Func_*/); EnterStatScope(12 /**SpawnRate_Torus_Func_*/); SpawnRate_Torus_Func_(Context); ExitStatScope(/**SpawnRate_Torus_Func_*/); } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:SystemUpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = (false); Context.Map.Local.SystemState.LoopCountIncreased = Constant; bool Constant1 = false; Context.Map.SystemState.RecalculateDurationEachLoop = Constant1; int Constant2 = 0; Context.Map.Transient.ScalabilityExecutionState = Constant2; EnterStatScope(1 /**SystemState_Func_*/); SystemState_Func_(Context); ExitStatScope(/**SystemState_Func_*/); EnterStatScope(2 /**Sphere*/); Sphere_Func_(Context); ExitStatScope(/**Sphere*/); EnterStatScope(7 /**RIng*/); RIng_Func_(Context); ExitStatScope(/**RIng*/); EnterStatScope(10 /**Torus*/); Torus_Func_(Context); ExitStatScope(/**Torus*/); ExitStatScope(/**NiagaraScript /Game/NiagaraAudioVisualization/Effects/NS_Rings+Sphere.NS_Rings+Sphere:SystemUpdateScript*/); } void SimulateMain() { EnterStatScope(13 /**SystemUpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.Emitter.RandomSeed = InputDataInt(0, 0); Context.Map.RIng.Age = InputDataFloat(0, 1); Context.Map.RIng.CurrentLoopDuration = InputDataFloat(0, 2); Context.Map.RIng.ExecutionState = InputDataInt(0, 3); Context.Map.RIng.ExecutionStateSource = InputDataInt(0, 4); Context.Map.RIng.LocalSpace = InputDataBool(0, 5); Context.Map.RIng.LoopCount = InputDataInt(0, 6); Context.Map.RIng.LoopedAge = InputDataFloat(0, 7); Context.Map.RIng.NormalizedLoopAge = InputDataFloat(0, 8); Context.Map.RIng.Scalability.DistanceFraction = InputDataFloat(0, 9); Context.Map.RIng.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.RIng.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.RIng.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.RIng.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.RIng.SpawnRate.SpawnRemainder = InputDataFloat(0, 14); Context.Map.Sphere.Age = InputDataFloat(0, 15); Context.Map.Sphere.CurrentLoopDuration = InputDataFloat(0, 16); Context.Map.Sphere.ExecutionState = InputDataInt(0, 17); Context.Map.Sphere.ExecutionStateSource = InputDataInt(0, 18); Context.Map.Sphere.LocalSpace = InputDataBool(0, 19); Context.Map.Sphere.LoopCount = InputDataInt(0, 20); Context.Map.Sphere.LoopedAge = InputDataFloat(0, 21); Context.Map.Sphere.NormalizedLoopAge = InputDataFloat(0, 22); Context.Map.Sphere.Scalability.DistanceFraction = InputDataFloat(0, 23); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationSpawnCount = InputDataInt(0, 24); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationXCount = InputDataInt(0, 25); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationYCount = InputDataInt(0, 26); Context.Map.Sphere.SpawnParticlesInGrid.GridLocationZCount = InputDataInt(0, 27); Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.Count = 0; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.InterpStartDt = 0.0f; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.IntervalDt = 0.0f; Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.SpawnGroup = 0; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.Sphere.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.Sphere.SpawnRate.SpawnRemainder = InputDataFloat(0, 36); Context.Map.System.Age = InputDataFloat(0, 37); Context.Map.System.bCompleteOnInactive = InputDataBool(0, 38); Context.Map.System.CurrentLoopDuration = InputDataFloat(0, 39); Context.Map.System.ExecutionState = InputDataInt(0, 40); Context.Map.System.ExecutionStateSource = InputDataInt(0, 41); Context.Map.System.LoopCount = InputDataInt(0, 42); Context.Map.System.LoopedAge = InputDataFloat(0, 43); Context.Map.System.NormalizedLoopAge = InputDataFloat(0, 44); Context.Map.Torus.Age = InputDataFloat(0, 45); Context.Map.Torus.CurrentLoopDuration = InputDataFloat(0, 46); Context.Map.Torus.ExecutionState = InputDataInt(0, 47); Context.Map.Torus.ExecutionStateSource = InputDataInt(0, 48); Context.Map.Torus.LocalSpace = InputDataBool(0, 49); Context.Map.Torus.LoopCount = InputDataInt(0, 50); Context.Map.Torus.LoopedAge = InputDataFloat(0, 51); Context.Map.Torus.NormalizedLoopAge = InputDataFloat(0, 52); Context.Map.Torus.Scalability.DistanceFraction = InputDataFloat(0, 53); Context.Map.Torus.SpawnRate.SpawnOutputInfo.Count = 0; Context.Map.Torus.SpawnRate.SpawnOutputInfo.InterpStartDt = 0.0f; Context.Map.Torus.SpawnRate.SpawnOutputInfo.IntervalDt = 0.0f; Context.Map.Torus.SpawnRate.SpawnOutputInfo.SpawnGroup = 0; Context.Map.Torus.SpawnRate.SpawnRemainder = InputDataFloat(0, 58); Context.Map.Engine.Emitter.TotalSpawnedParticles = InputDataInt(1, 0); Context.Map.Engine.Owner.ExecutionState = InputDataInt(1, 1); Context.Map.Engine.Owner.LODDistanceFraction = InputDataFloat(1, 2); Context.Map.Engine.RIng.NumParticles = InputDataInt(1, 3); Context.Map.Engine.RIng.SpawnCountScale = InputDataFloat(1, 4); Context.Map.Engine.Sphere.NumParticles = InputDataInt(1, 5); Context.Map.Engine.Sphere.SpawnCountScale = InputDataFloat(1, 6); Context.Map.Engine.Torus.NumParticles = InputDataInt(1, 7); Context.Map.Engine.Torus.SpawnCountScale = InputDataFloat(1, 8); Context.Map.Constants.SystemState.LoopDelay = Constants_SystemState_LoopDelay; Context.Map.Constants.SystemState.LoopDuration = Constants_SystemState_LoopDuration; Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Constants.Sphere.EmitterState.LoopDuration = Constants_Sphere_EmitterState_LoopDuration; Context.Map.Constants.Sphere.EmitterState.LoopDelay = Constants_Sphere_EmitterState_LoopDelay; Context.Map.Constants.Sphere.SpawnParticlesInGrid.XCount = Constants_Sphere_SpawnParticlesInGrid_XCount; Context.Map.Constants.Sphere.SpawnParticlesInGrid.YCount = Constants_Sphere_SpawnParticlesInGrid_YCount; Context.Map.Constants.Sphere.SpawnParticlesInGrid.ZCount = Constants_Sphere_SpawnParticlesInGrid_ZCount; Context.Map.Constants.Sphere.SpawnParticlesInGrid.SpawnTime = Constants_Sphere_SpawnParticlesInGrid_SpawnTime; Context.Map.Constants.Sphere.SpawnRate.SpawnRate = Constants_Sphere_SpawnRate_SpawnRate; Context.Map.Constants.Sphere.SpawnRate.SpawnGroup = Constants_Sphere_SpawnRate_SpawnGroup; Context.Map.Constants.Sphere.SpawnRate.SpawnProbability = Constants_Sphere_SpawnRate_SpawnProbability; Context.Map.Constants.RIng.EmitterState.LoopDuration = Constants_RIng_EmitterState_LoopDuration; Context.Map.Constants.RIng.EmitterState.LoopDelay = Constants_RIng_EmitterState_LoopDelay; Context.Map.Constants.RIng.SpawnRate.SpawnRate = Constants_RIng_SpawnRate_SpawnRate; Context.Map.Constants.RIng.SpawnRate.SpawnGroup = Constants_RIng_SpawnRate_SpawnGroup; Context.Map.Constants.RIng.SpawnRate.SpawnProbability = Constants_RIng_SpawnRate_SpawnProbability; Context.Map.Constants.Torus.EmitterState.LoopDuration = Constants_Torus_EmitterState_LoopDuration; Context.Map.Constants.Torus.EmitterState.LoopDelay = Constants_Torus_EmitterState_LoopDelay; Context.Map.Constants.Torus.SpawnRate.SpawnRate = Constants_Torus_SpawnRate_SpawnRate; Context.Map.Constants.Torus.SpawnRate.SpawnGroup = Constants_Torus_SpawnRate_SpawnGroup; Context.Map.Constants.Torus.SpawnRate.SpawnProbability = Constants_Torus_SpawnRate_SpawnProbability; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; ReadDataSets(Context); Simulate(Context); WriteDataSets(Context); { int TmpWriteIndex = OutputIndex(0, false, true); OutputDataInt(0, 0, TmpWriteIndex, Context.Map.Emitter.RandomSeed); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.RIng.Age); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.RIng.CurrentLoopDuration); OutputDataInt(0, 3, TmpWriteIndex, Context.Map.RIng.ExecutionState); OutputDataInt(0, 4, TmpWriteIndex, Context.Map.RIng.ExecutionStateSource); OutputDataBool(0, 5, TmpWriteIndex, Context.Map.RIng.LocalSpace); OutputDataInt(0, 6, TmpWriteIndex, Context.Map.RIng.LoopCount); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.RIng.LoopedAge); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.RIng.NormalizedLoopAge); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.RIng.Scalability.DistanceFraction); OutputDataInt(0, 10, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 12, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 13, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 14, TmpWriteIndex, Context.Map.RIng.SpawnRate.SpawnRemainder); OutputDataFloat(0, 15, TmpWriteIndex, Context.Map.Sphere.Age); OutputDataFloat(0, 16, TmpWriteIndex, Context.Map.Sphere.CurrentLoopDuration); OutputDataInt(0, 17, TmpWriteIndex, Context.Map.Sphere.ExecutionState); OutputDataInt(0, 18, TmpWriteIndex, Context.Map.Sphere.ExecutionStateSource); OutputDataBool(0, 19, TmpWriteIndex, Context.Map.Sphere.LocalSpace); OutputDataInt(0, 20, TmpWriteIndex, Context.Map.Sphere.LoopCount); OutputDataFloat(0, 21, TmpWriteIndex, Context.Map.Sphere.LoopedAge); OutputDataFloat(0, 22, TmpWriteIndex, Context.Map.Sphere.NormalizedLoopAge); OutputDataFloat(0, 23, TmpWriteIndex, Context.Map.Sphere.Scalability.DistanceFraction); OutputDataInt(0, 24, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationSpawnCount); OutputDataInt(0, 25, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationXCount); OutputDataInt(0, 26, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationYCount); OutputDataInt(0, 27, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.GridLocationZCount); OutputDataInt(0, 28, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.Count); OutputDataFloat(0, 29, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.InterpStartDt); OutputDataFloat(0, 30, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.IntervalDt); OutputDataInt(0, 31, TmpWriteIndex, Context.Map.Sphere.SpawnParticlesInGrid.SpawnBurst_Instantaneous.SpawnBurst.SpawnGroup); OutputDataInt(0, 32, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 33, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 34, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 35, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 36, TmpWriteIndex, Context.Map.Sphere.SpawnRate.SpawnRemainder); OutputDataFloat(0, 37, TmpWriteIndex, Context.Map.System.Age); OutputDataBool(0, 38, TmpWriteIndex, Context.Map.System.bCompleteOnInactive); OutputDataFloat(0, 39, TmpWriteIndex, Context.Map.System.CurrentLoopDuration); OutputDataInt(0, 40, TmpWriteIndex, Context.Map.System.ExecutionState); OutputDataInt(0, 41, TmpWriteIndex, Context.Map.System.ExecutionStateSource); OutputDataInt(0, 42, TmpWriteIndex, Context.Map.System.LoopCount); OutputDataFloat(0, 43, TmpWriteIndex, Context.Map.System.LoopedAge); OutputDataFloat(0, 44, TmpWriteIndex, Context.Map.System.NormalizedLoopAge); OutputDataFloat(0, 45, TmpWriteIndex, Context.Map.Torus.Age); OutputDataFloat(0, 46, TmpWriteIndex, Context.Map.Torus.CurrentLoopDuration); OutputDataInt(0, 47, TmpWriteIndex, Context.Map.Torus.ExecutionState); OutputDataInt(0, 48, TmpWriteIndex, Context.Map.Torus.ExecutionStateSource); OutputDataBool(0, 49, TmpWriteIndex, Context.Map.Torus.LocalSpace); OutputDataInt(0, 50, TmpWriteIndex, Context.Map.Torus.LoopCount); OutputDataFloat(0, 51, TmpWriteIndex, Context.Map.Torus.LoopedAge); OutputDataFloat(0, 52, TmpWriteIndex, Context.Map.Torus.NormalizedLoopAge); OutputDataFloat(0, 53, TmpWriteIndex, Context.Map.Torus.Scalability.DistanceFraction); OutputDataInt(0, 54, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.Count); OutputDataFloat(0, 55, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.InterpStartDt); OutputDataFloat(0, 56, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.IntervalDt); OutputDataInt(0, 57, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnOutputInfo.SpawnGroup); OutputDataFloat(0, 58, TmpWriteIndex, Context.Map.Torus.SpawnRate.SpawnRemainder); } ExitStatScope(/**SystemUpdateScript_Main*/); } 55 ------------------------------- Summary ------------------------------- Num Byte Code Ops: 344 Num Constants: 42 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Constants_SystemState_LoopDelay 20 | Constants_SystemState_LoopDuration 24 | Constants_Sphere_EmitterState_LoopDuration 28 | Constants_Sphere_EmitterState_LoopDelay 32 | Constants_Sphere_SpawnParticlesInGrid_XCount 36 | Constants_Sphere_SpawnParticlesInGrid_YCount 40 | Constants_Sphere_SpawnParticlesInGrid_ZCount 44 | Constants_Sphere_SpawnParticlesInGrid_SpawnTime 48 | Constants_Sphere_SpawnRate_SpawnRate 52 | Constants_Sphere_SpawnRate_SpawnGroup 56 | Constants_Sphere_SpawnRate_SpawnProbability 60 | Constants_RIng_EmitterState_LoopDuration 64 | Constants_RIng_EmitterState_LoopDelay 68 | Constants_RIng_SpawnRate_SpawnRate 72 | Constants_RIng_SpawnRate_SpawnGroup 76 | Constants_RIng_SpawnRate_SpawnProbability 80 | Constants_Torus_EmitterState_LoopDuration 84 | Constants_Torus_EmitterState_LoopDelay 88 | Constants_Torus_SpawnRate_SpawnRate 92 | Constants_Torus_SpawnRate_SpawnGroup 96 | Constants_Torus_SpawnRate_SpawnProbability 100 | Emitter_RandomSeed 104 | 1 108 | 0.0166669991 112 | 0 116 | 0 120 | 2 124 | 3 128 | 1.00010002 132 | 4 136 | 5 140 | 1 144 | 6 148 | 8 152 | 9 156 | 11 160 | 12 164 | True ------------------------------- Byte Code (344 Ops) ------------------------------- 0 | [R][0] = InputData(0, 1); 1 | [R][1] = InputData(0, 2); 2 | [R][2] = InputData(0, 3); 3 | [R][3] = InputData(0, 4); 4 | [R][4] = InputData(0, 5); 5 | [R][5] = InputData(0, 6); 6 | [R][6] = InputData(0, 7); 7 | [R][7] = InputData(0, 14); 8 | [R][8] = InputData(0, 15); 9 | [R][9] = InputData(0, 16); 10 | [R][10] = InputData(0, 17); 11 | [R][11] = InputData(0, 18); 12 | [R][12] = InputData(0, 19); 13 | [R][13] = InputData(0, 20); 14 | [R][14] = InputData(0, 21); 15 | [R][15] = InputData(0, 36); 16 | [R][16] = InputData(0, 37); 17 | [R][17] = InputData(0, 39); 18 | [R][18] = InputData(0, 40); 19 | [R][19] = InputData(0, 41); 20 | [R][20] = InputData(0, 42); 21 | [R][21] = InputData(0, 43); 22 | [R][22] = InputData(0, 45); 23 | [R][23] = InputData(0, 46); 24 | [R][24] = InputData(0, 47); 25 | [R][25] = InputData(0, 48); 26 | [R][26] = InputData(0, 49); 27 | [R][27] = InputData(0, 50); 28 | [R][28] = InputData(0, 51); 29 | [R][29] = InputData(0, 58); 30 | [R][30] = InputData(1, 1); 31 | [R][31] = InputData(1, 2); 32 | [R][32] = InputData(1, 3); 33 | [R][33] = InputData(1, 4); 34 | [R][34] = InputData(1, 5); 35 | [R][35] = InputData(1, 6); 36 | [R][36] = InputData(1, 7); 37 | [R][37] = InputData(1, 8); 38 | OP_85(C[104]); 39 | R[38] = OP_30(C[20], C[108]); 40 | R[39] = OP_41(R[16], C[112]); 41 | R[40] = OP_43(R[39], R[38], R[17]); 42 | R[17] = OP_1(C[0], R[21]); 43 | R[21] = OP_4(R[17], R[40]); 44 | R[38] = OP_71(R[21]); 45 | R[21] = OP_50(R[38], C[116]); 46 | R[38] = OP_72(R[21]); 47 | R[39] = OP_3(R[38], R[40]); 48 | R[38] = OP_2(R[17], R[39]); 49 | R[17] = OP_44(R[21], R[20]); 50 | R[20] = OP_1(R[16], C[0]); 51 | R[16] = OP_57(R[21], C[116]); 52 | R[21] = OP_43(R[16], R[40], R[40]); 53 | R[39] = OP_43(R[16], R[38], R[38]); 54 | R[16] = OP_4(R[39], R[21]); 55 | R[38] = OP_56(R[19], C[116]); 56 | R[40] = OP_43(R[38], C[116], R[18]); 57 | R[18] = OP_43(R[38], C[116], R[19]); 58 | R[19] = OP_60(R[30], C[116]); 59 | R[38] = OP_56(R[18], C[120]); 60 | R[41] = OP_67(R[19], R[38]); 61 | R[19] = OP_43(R[41], R[30], R[40]); 62 | R[30] = OP_43(R[41], C[120], R[18]); 63 | OP_86; 64 | OP_85(C[124]); 65 | R[18] = OP_30(C[24], C[108]); 66 | R[38] = OP_41(R[8], C[112]); 67 | R[40] = OP_43(R[38], R[18], R[9]); 68 | R[9] = OP_1(C[0], R[14]); 69 | R[14] = OP_4(R[9], R[40]); 70 | R[18] = OP_71(R[14]); 71 | R[14] = OP_50(R[18], C[116]); 72 | R[18] = OP_72(R[14]); 73 | R[38] = OP_3(R[18], R[40]); 74 | R[18] = OP_2(R[9], R[38]); 75 | R[9] = OP_44(R[14], R[13]); 76 | R[13] = OP_1(R[8], C[0]); 77 | R[8] = OP_57(R[14], C[116]); 78 | R[14] = OP_43(R[8], R[40], R[40]); 79 | R[38] = OP_43(R[8], R[18], R[18]); 80 | R[8] = OP_4(R[38], R[14]); 81 | R[18] = OP_28(R[31], C[112], C[128]); 82 | R[40] = OP_59(R[34], C[116]); 83 | R[34] = OP_59(R[30], C[116]); 84 | R[41] = OP_60(R[10], C[124]); 85 | R[42] = OP_60(R[10], C[132]); 86 | R[43] = OP_67(R[41], R[42]); 87 | R[41] = OP_67(R[34], R[43]); 88 | R[34] = OP_56(R[11], R[30]); 89 | R[42] = OP_67(R[41], R[34]); 90 | R[34] = OP_43(R[42], R[19], R[10]); 91 | R[10] = OP_43(R[42], R[30], R[11]); 92 | R[11] = OP_60(R[19], C[116]); 93 | R[41] = OP_59(R[30], C[120]); 94 | R[42] = OP_67(R[11], R[41]); 95 | R[11] = OP_60(R[34], C[124]); 96 | R[41] = OP_60(R[34], C[132]); 97 | R[43] = OP_67(R[11], R[41]); 98 | R[11] = OP_67(R[42], R[43]); 99 | R[41] = OP_56(R[10], C[104]); 100 | R[42] = OP_67(R[11], R[41]); 101 | R[11] = OP_43(R[42], C[104], R[34]); 102 | R[34] = OP_43(R[42], C[104], R[10]); 103 | R[10] = OP_60(R[11], C[116]); 104 | R[41] = OP_60(R[34], C[116]); 105 | R[42] = OP_67(R[10], R[41]); 106 | R[10] = OP_67(R[40], R[42]); 107 | R[40] = OP_60(R[11], C[124]); 108 | R[41] = OP_60(R[11], C[132]); 109 | R[42] = OP_67(R[40], R[41]); 110 | R[40] = OP_67(R[10], R[42]); 111 | R[10] = OP_56(R[34], C[124]); 112 | R[41] = OP_67(R[40], R[10]); 113 | R[10] = OP_43(R[41], C[124], R[11]); 114 | R[11] = OP_43(R[41], C[124], R[34]); 115 | OP_86; 116 | OP_85(C[136]); 117 | R[34] = OP_50(C[32], C[104]); 118 | R[40] = OP_50(C[36], C[104]); 119 | R[41] = OP_50(C[40], C[104]); 120 | R[42] = OP_46(R[34], R[40]); 121 | R[43] = OP_46(R[42], R[41]); 122 | OP_85(C[132]); 123 | R[42] = OP_2(R[38], C[0]); 124 | R[44] = OP_2(C[44], R[42]); 125 | R[42] = OP_40(R[44], C[112]); 126 | R[45] = OP_2(C[44], R[38]); 127 | R[46] = OP_37(R[45], C[112]); 128 | R[45] = OP_67(R[42], R[46]); 129 | R[42] = OP_72(R[43]); 130 | R[46] = OP_3(R[42], R[35]); 131 | R[42] = OP_30(R[46], C[140]); 132 | R[46] = OP_59(R[43], C[116]); 133 | R[47] = OP_43(R[46], C[112], R[42]); 134 | R[42] = OP_71(R[47]); 135 | R[46] = OP_43(R[45], R[42], C[116]); 136 | R[42] = OP_43(R[45], R[44], C[112]); 137 | R[44] = OP_43(R[45], C[112], C[112]); 138 | R[47] = OP_43(R[45], C[116], C[116]); 139 | OP_86; 140 | OP_86; 141 | OP_85(C[144]); 142 | R[45] = OP_3(C[48], R[35]); 143 | R[35] = OP_7(R[45]); 144 | R[48] = OP_2(C[140], R[15]); 145 | R[49] = OP_3(R[35], R[48]); 146 | R[48] = OP_40(R[38], C[112]); 147 | R[50] = OP_43(R[48], C[140], C[112]); 148 | R[48] = OP_3(R[45], R[50]); 149 | R[45] = OP_5(R[48], C[0], R[15]); 150 | R[15] = OP_24(R[45]); 151 | R[48] = OP_71(R[15]); 152 | R[50] = OP_2(R[45], R[15]); 153 | OP_86; 154 | OP_85(C[148]); 155 | R[15] = OP_30(C[60], C[108]); 156 | R[45] = OP_41(R[0], C[112]); 157 | R[51] = OP_43(R[45], R[15], R[1]); 158 | R[1] = OP_1(C[0], R[6]); 159 | R[6] = OP_4(R[1], R[51]); 160 | R[15] = OP_71(R[6]); 161 | R[6] = OP_50(R[15], C[116]); 162 | R[15] = OP_72(R[6]); 163 | R[45] = OP_3(R[15], R[51]); 164 | R[15] = OP_2(R[1], R[45]); 165 | R[1] = OP_44(R[6], R[5]); 166 | R[5] = OP_1(R[0], C[0]); 167 | R[0] = OP_57(R[6], C[116]); 168 | R[6] = OP_43(R[0], R[51], R[51]); 169 | R[45] = OP_43(R[0], R[15], R[15]); 170 | R[0] = OP_4(R[45], R[6]); 171 | R[15] = OP_28(R[31], C[112], C[128]); 172 | R[51] = OP_59(R[32], C[116]); 173 | R[32] = OP_59(R[30], C[116]); 174 | R[52] = OP_60(R[2], C[124]); 175 | R[53] = OP_60(R[2], C[132]); 176 | R[54] = OP_67(R[52], R[53]); 177 | R[52] = OP_67(R[32], R[54]); 178 | R[32] = OP_56(R[3], R[30]); 179 | R[53] = OP_67(R[52], R[32]); 180 | R[32] = OP_43(R[53], R[19], R[2]); 181 | R[2] = OP_43(R[53], R[30], R[3]); 182 | R[3] = OP_60(R[19], C[116]); 183 | R[52] = OP_59(R[30], C[120]); 184 | R[53] = OP_67(R[3], R[52]); 185 | R[3] = OP_60(R[32], C[124]); 186 | R[52] = OP_60(R[32], C[132]); 187 | R[54] = OP_67(R[3], R[52]); 188 | R[3] = OP_67(R[53], R[54]); 189 | R[52] = OP_56(R[2], C[104]); 190 | R[53] = OP_67(R[3], R[52]); 191 | R[3] = OP_43(R[53], C[104], R[32]); 192 | R[32] = OP_43(R[53], C[104], R[2]); 193 | R[2] = OP_60(R[3], C[116]); 194 | R[52] = OP_60(R[32], C[116]); 195 | R[53] = OP_67(R[2], R[52]); 196 | R[2] = OP_67(R[51], R[53]); 197 | R[51] = OP_60(R[3], C[124]); 198 | R[52] = OP_60(R[3], C[132]); 199 | R[53] = OP_67(R[51], R[52]); 200 | R[51] = OP_67(R[2], R[53]); 201 | R[2] = OP_56(R[32], C[124]); 202 | R[52] = OP_67(R[51], R[2]); 203 | R[2] = OP_43(R[52], C[124], R[3]); 204 | R[3] = OP_43(R[52], C[124], R[32]); 205 | OP_86; 206 | OP_85(C[152]); 207 | R[32] = OP_3(C[68], R[33]); 208 | R[33] = OP_7(R[32]); 209 | R[51] = OP_2(C[140], R[7]); 210 | R[52] = OP_3(R[33], R[51]); 211 | R[51] = OP_40(R[45], C[112]); 212 | R[53] = OP_43(R[51], C[140], C[112]); 213 | R[51] = OP_3(R[32], R[53]); 214 | R[32] = OP_5(R[51], C[0], R[7]); 215 | R[7] = OP_24(R[32]); 216 | R[51] = OP_71(R[7]); 217 | R[53] = OP_2(R[32], R[7]); 218 | OP_86; 219 | OP_85(C[156]); 220 | R[7] = OP_30(C[80], C[108]); 221 | R[32] = OP_41(R[22], C[112]); 222 | R[54] = OP_43(R[32], R[7], R[23]); 223 | R[7] = OP_1(C[0], R[28]); 224 | R[23] = OP_4(R[7], R[54]); 225 | R[28] = OP_71(R[23]); 226 | R[23] = OP_50(R[28], C[116]); 227 | R[28] = OP_72(R[23]); 228 | R[32] = OP_3(R[28], R[54]); 229 | R[28] = OP_2(R[7], R[32]); 230 | R[7] = OP_44(R[23], R[27]); 231 | R[27] = OP_1(R[22], C[0]); 232 | R[22] = OP_57(R[23], C[116]); 233 | R[23] = OP_43(R[22], R[54], R[54]); 234 | R[32] = OP_43(R[22], R[28], R[28]); 235 | R[22] = OP_4(R[32], R[23]); 236 | R[28] = OP_28(R[31], C[112], C[128]); 237 | R[31] = OP_59(R[36], C[116]); 238 | R[36] = OP_59(R[30], C[116]); 239 | R[54] = OP_60(R[24], C[124]); 240 | R[55] = OP_60(R[24], C[132]); 241 | R[56] = OP_67(R[54], R[55]); 242 | R[54] = OP_67(R[36], R[56]); 243 | R[36] = OP_56(R[25], R[30]); 244 | R[55] = OP_67(R[54], R[36]); 245 | R[36] = OP_43(R[55], R[19], R[24]); 246 | R[24] = OP_43(R[55], R[30], R[25]); 247 | R[25] = OP_60(R[19], C[116]); 248 | R[54] = OP_59(R[30], C[120]); 249 | R[55] = OP_67(R[25], R[54]); 250 | R[25] = OP_60(R[36], C[124]); 251 | R[54] = OP_60(R[36], C[132]); 252 | R[56] = OP_67(R[25], R[54]); 253 | R[25] = OP_67(R[55], R[56]); 254 | R[54] = OP_56(R[24], C[104]); 255 | R[55] = OP_67(R[25], R[54]); 256 | R[25] = OP_43(R[55], C[104], R[36]); 257 | R[36] = OP_43(R[55], C[104], R[24]); 258 | R[24] = OP_60(R[25], C[116]); 259 | R[54] = OP_60(R[36], C[116]); 260 | R[55] = OP_67(R[24], R[54]); 261 | R[24] = OP_67(R[31], R[55]); 262 | R[31] = OP_60(R[25], C[124]); 263 | R[54] = OP_60(R[25], C[132]); 264 | R[55] = OP_67(R[31], R[54]); 265 | R[31] = OP_67(R[24], R[55]); 266 | R[24] = OP_56(R[36], C[124]); 267 | R[54] = OP_67(R[31], R[24]); 268 | R[24] = OP_43(R[54], C[124], R[25]); 269 | R[25] = OP_43(R[54], C[124], R[36]); 270 | OP_86; 271 | OP_85(C[160]); 272 | R[31] = OP_3(C[88], R[37]); 273 | R[36] = OP_7(R[31]); 274 | R[37] = OP_2(C[140], R[29]); 275 | R[54] = OP_3(R[36], R[37]); 276 | R[37] = OP_40(R[32], C[112]); 277 | R[55] = OP_43(R[37], C[140], C[112]); 278 | R[37] = OP_3(R[31], R[55]); 279 | R[31] = OP_5(R[37], C[0], R[29]); 280 | R[29] = OP_24(R[31]); 281 | R[37] = OP_71(R[29]); 282 | R[55] = OP_2(R[31], R[29]); 283 | OP_86; 284 | [R][29] = AcquireIndex(0, [C][164]); 285 | OutputData(0, 0, [R][29], [C][100]); 286 | OutputData(0, 1, [R][29], [R][5]); 287 | OutputData(0, 2, [R][29], [R][6]); 288 | OutputData(0, 3, [R][29], [R][2]); 289 | OutputData(0, 4, [R][29], [R][3]); 290 | OutputData(0, 5, [R][29], [R][4]); 291 | OutputData(0, 6, [R][29], [R][1]); 292 | OutputData(0, 7, [R][29], [R][45]); 293 | OutputData(0, 8, [R][29], [R][0]); 294 | OutputData(0, 9, [R][29], [R][15]); 295 | OutputData(0, 10, [R][29], [R][51]); 296 | OutputData(0, 11, [R][29], [R][52]); 297 | OutputData(0, 12, [R][29], [R][33]); 298 | OutputData(0, 13, [R][29], [C][72]); 299 | OutputData(0, 14, [R][29], [R][53]); 300 | OutputData(0, 15, [R][29], [R][13]); 301 | OutputData(0, 16, [R][29], [R][14]); 302 | OutputData(0, 17, [R][29], [R][10]); 303 | OutputData(0, 18, [R][29], [R][11]); 304 | OutputData(0, 19, [R][29], [R][12]); 305 | OutputData(0, 20, [R][29], [R][9]); 306 | OutputData(0, 21, [R][29], [R][38]); 307 | OutputData(0, 22, [R][29], [R][8]); 308 | OutputData(0, 23, [R][29], [R][18]); 309 | OutputData(0, 24, [R][29], [R][43]); 310 | OutputData(0, 25, [R][29], [R][34]); 311 | OutputData(0, 26, [R][29], [R][40]); 312 | OutputData(0, 27, [R][29], [R][41]); 313 | OutputData(0, 28, [R][29], [R][46]); 314 | OutputData(0, 29, [R][29], [R][42]); 315 | OutputData(0, 30, [R][29], [R][44]); 316 | OutputData(0, 31, [R][29], [R][47]); 317 | OutputData(0, 32, [R][29], [R][48]); 318 | OutputData(0, 33, [R][29], [R][49]); 319 | OutputData(0, 34, [R][29], [R][35]); 320 | OutputData(0, 35, [R][29], [C][52]); 321 | OutputData(0, 36, [R][29], [R][50]); 322 | OutputData(0, 37, [R][29], [R][20]); 323 | OutputData(0, 38, [R][29], [C][164]); 324 | OutputData(0, 39, [R][29], [R][21]); 325 | OutputData(0, 40, [R][29], [R][19]); 326 | OutputData(0, 41, [R][29], [R][30]); 327 | OutputData(0, 42, [R][29], [R][17]); 328 | OutputData(0, 43, [R][29], [R][39]); 329 | OutputData(0, 44, [R][29], [R][16]); 330 | OutputData(0, 45, [R][29], [R][27]); 331 | OutputData(0, 46, [R][29], [R][23]); 332 | OutputData(0, 47, [R][29], [R][24]); 333 | OutputData(0, 48, [R][29], [R][25]); 334 | OutputData(0, 49, [R][29], [R][26]); 335 | OutputData(0, 50, [R][29], [R][7]); 336 | OutputData(0, 51, [R][29], [R][32]); 337 | OutputData(0, 52, [R][29], [R][22]); 338 | OutputData(0, 53, [R][29], [R][28]); 339 | OutputData(0, 54, [R][29], [R][37]); 340 | OutputData(0, 55, [R][29], [R][54]); 341 | OutputData(0, 56, [R][29], [R][36]); 342 | OutputData(0, 57, [R][29], [C][92]); 343 | OutputData(0, 58, [R][29], [R][55]); ------------------------------- (X{|2BMG{ZVNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterSpawnScripto M-RعeQ+(1&Emitter.LocalspaceCPUSim<A1\xSu_{i֊vl@;:EJ1JQ1\āMnM[_+rb71\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2BMG16%@j)'%@j)'%@j)' %@j)'%@j)'%@j)'%@j)'1 \?@E?PCG[WNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:EmitterUpdateScripto M-RعeQ+(1&Emitter.LocalspaceCPUSim<A1\āMnM[_+rb7J1JQ1\xSu_{i֊vl@;:E1\}cF&b, P1\W47-$ 4ި ?1\˷ZȠjRڜv1\*%LR?L1%1\wj.C=Wc~E*A2BMGG1!%@j)'%@j)'%@j)' %@j)'%@j)'%@j)' %@j)'0%@j)'4%@j)'8%@j)'D%@j)'H%@j)'P%@j)'T%@j)'X%@j)'\%@j)'`%@j)'d%@j)'h%@j)'l%@j)'p%@j)'|%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'%@j)'1\o:@F==????@????@@C<FzDAB????? AXTNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:GPUComputeScripta o M-RعeQ+(1CInterpolatedSpawnEmitter.LocalspaceGPUComputeSimEM<A1\|tSJiAj́cSJ1e 0J0 1\|tSJiAj́cS1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRhS!!1!?1\?%@j)'?1\????%@j)'?1\?%@j)'?1 \ A A%@j)'?1\%@j)'?1\ ???%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\A%@j)'?1\B%@j)'?1\ ???%@j)'?1\ ?%@j)'?1\%@j)'?1\ %@j)'?1\%@j)'?1\%@j)'?1\L=%@j)'?1\ %@j)'?1\%@j)'?1\%@j)'?1\ A%@j)'?1\zD%@j)'?1\<F%@j)'?1\%@j)'?1\%@j)'?1\ %@j)'81 8 ?1\*%@j)'?1\k%@j)'?1\ %@j)'?1\%@j)'?1\5%@j)'?1\9%@j)'?1\%@j)'?1\<%@j)'?1\>%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1 <$@j)'K15KLMHM:<$@j)'K1Kal1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 LMHM%<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHM1P32}y// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float4 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float4 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float4 Constants_Emitter_TorusLocation_NonUniformScale; float4 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float4 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_NormalaizedPosition; float Constants_Emitter_ScratchModule_Radius; float Emitter_SpawnRate; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; int PREV_Engine_Emitter_PaddingInt32_2; } cbuffer PREV_FNiagaraExternalParameters { float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float4 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float4 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float4 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float4 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float4 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; int PREV_Constants_Emitter_CurlNoiseForce_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency; float4 PREV_Constants_Emitter_CurlNoiseForce_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_ScratchModule_NormalaizedPosition; float PREV_Constants_Emitter_ScratchModule_Radius; float PREV_Emitter_SpawnRate; } struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles { float3 Direction; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE { FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles Particles; }; struct FParamMap0_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; bool LocalSpace; int RandomSeed; float SpawnRate; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_ScratchModule ScratchModule; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_ScratchModule ScratchModule; FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE SetVariables_619FBC7841F4E96144B94D92F32F22FE; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant15 = true; float3 Constant16 = float3(0,0,0); float3 Vector_IfResult; if(Constant15) { Vector_IfResult = Constant16; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant21 = true; float3 Constant22 = float3(0,0,0); float3 Vector_IfResult1; if(Constant21) { Vector_IfResult1 = Constant22; } else { Vector_IfResult1 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult1; } void GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant34 = false; int Constant35 = 0; bool Result = NiagaraAll(In_RandomnessMode == Constant35); bool Result1 = Constant34 && Result; int Constant36 = 1; bool Result2 = NiagaraAll(In_RandomnessMode == Constant36); bool Result3 = Result1 || Result2; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant37 = 0; int Constant38 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant37; Seed3_IfResult = Constant38; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant39 = -1; int Constant40 = -1; int Constant41 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result3) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant39; Seed2_IfResult1 = Constant40; Seed3_IfResult1 = Constant41; } NiagaraRandInfo Output1; Output1.Seed1 = Seed1_IfResult1; Output1.Seed2 = Seed2_IfResult1; Output1.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output1; Out_UseDeterministicRandoms = Result3; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant29 = (0); bool Constant30 = false; int Constant31 = 0; int Constant32 = (0); bool Constant33 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(In_Seed, Constant29, In_OverrideSeed, Constant31, Constant32, Constant33, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms, Context); float Result4 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo.Seed3; float Result5 = rand_float(Result4, Seed1, Seed2, Seed3); float Result6 = rand_float(Result4); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result5; } else { Random_IfResult = Result6; } float Result7 = In_Min + Random_IfResult; Out_Result = Result7; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant59 = (0); bool Constant60 = false; int Constant61 = 0; int Constant62 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_(In_Seed, Constant59, In_OverrideSeed, Constant61, Constant62, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1, Context); float Result9 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_RandomInfo1.Seed3; float Result10 = rand(Result9, Seed11, Seed21, Seed31); float Result11 = rand(Result9); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Particle_Particle_Particle_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result10; } else { Random_IfResult1 = Result11; } float Result12 = In_Min + Random_IfResult1; Out_Result = Result12; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant69 = 1; float Result17 = cos(In_U*(TWO_PI/Constant69)); float Constant70 = 1; float Result18 = sin(In_U*(TWO_PI/Constant70)); float Constant71 = 1; float Result19 = cos(In_V*(TWO_PI/Constant71)); float Constant72 = 1; float Result20 = sin(In_V*(TWO_PI/Constant72)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result17, Result18, Result19, Result20, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context) { int Constant76 = 0; bool Result26 = NiagaraAll(In_SourceSpace == Constant76); int Constant77 = 0; bool Result27 = NiagaraAll(In_DestinationSpace == Constant77); bool Result28 = Result26 && Result27; int Constant78 = 1; bool Result29 = NiagaraAll(In_SourceSpace == Constant78); int Constant79 = 1; bool Result30 = NiagaraAll(In_DestinationSpace == Constant79); bool Result31 = Result29 && Result30; bool Result32 = Result28 || Result31; int Constant80 = 2; bool Result33 = NiagaraAll(In_SourceSpace == Constant80); int Constant81 = 2; bool Result34 = NiagaraAll(In_DestinationSpace == Constant81); bool Result35 = Result33 && Result34; bool Result36 = Result32 || Result35; bool Result37 = Result26 && Result34; bool Result38 = Result33 && Result27; bool Result39 = Result37 || Result38; bool Result40 = In_bLocalSpace && Result39; bool Result41 = Result36 || Result40; bool Result42 = !In_bLocalSpace; bool Result43 = Result26 && Result30; bool Result44 = Result29 && Result27; bool Result45 = Result43 || Result44; bool Result46 = Result42 && Result45; bool Result47 = Result41 || Result46; bool Result48 = In_bLocalSpace && Result43; bool Result49 = Result33 && Result30; bool Result50 = Result48 || Result49; bool Result51 = Result42 && Result38; bool Result52 = Result50 || Result51; float4x4 Matrix_IfResult1; if(Result52) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result47; Out_OutTransform = Matrix_IfResult1; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant75 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant75, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, Context); float3 Result53 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result53; } Out_OutVector = Vector_IfResult2; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant54 = 0; float Constant55 = 999; float Result8 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant54,Constant55); float Constant56 = 1; int Constant57 = 0; bool Constant58 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant57; Override_IfResult = Constant58; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result8, Constant56, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant63 = 0; float Constant64 = 1; float Result13 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant63,Constant64); float Constant65 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result13, Constant65, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant66 = 0; float Constant67 = 1; float Result14 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant66,Constant67); float Constant68 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result14, Constant68, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result15 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result16 = Result15 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result16, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result21 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result22 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result23 = normalize(Result22); float3 Result24 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result25 = normalize(Result24); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result21; Tangent_IfResult = Result23; Normal_IfResult = Result25; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant73 = 0; bool Constant74 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant73, Constant74, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result54 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result55 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result54; int Constant82 = 0; bool Constant83 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant82, Constant83, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant84 = 0; bool Constant85 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant84, Constant85, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result56 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result55; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result56; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context) { Context.MapSpawn.Particles.Direction = Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result57 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result57; float Result58 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant87 = 1e-05; float Result59 = max(Context.MapUpdate.ParticleState.Lifetime, Constant87); float Constant88 = 0.0001; float Result60 = Result59 - Constant88; bool Result61 = NiagaraAll(Result58 < Result60); bool Constant89 = false; bool bool_IfResult; if(Result61) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant89; } float Result62 = Result58 / Result59; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result58; Context.MapUpdate.Particles.NormalizedAge = Result62; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant99 = false; float AgeAdvancement_IfResult; if(Constant99) { AgeAdvancement_IfResult = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult = Context.MapUpdate.Engine.Time; } float Constant100 = 4096; int Constant101 = 0; float Result63 = rand_float(Constant100, Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant101); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult; Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Result63; Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Context.MapUpdate.CurlNoiseForce.SamplePosition; float3 Result64 = Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce.SamplePosition; float3 Result65 = Result64 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float3 Result66 = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField * Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement; float3 Result67 = Result65 - Result66; float Constant102 = 125; float3 Result68 = Result67 * Constant102; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result68, SampleField_EmitterVectorField32Output_SampledValue); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant103 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant103; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result69 = Context.MapUpdate.Local.CurlNoiseForce.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result70 = Context.MapUpdate.Transient.PhysicsForce + Result69; Context.MapUpdate.Transient.PhysicsForce = Result70; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; float Constant111 = 0.0001; float Result71 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant111); float Result72 = Reciprocal(Result71); float3 Result73 = Result72 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result73; float3 Result74 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant112 = 0; float Result75 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant112); float Result76 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result75; float Constant113 = 1; float Result77 = Result76 + Constant113; float3 Result78 = Result74 / Result77; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result78; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result79 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result79; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; Context.MapUpdate.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant114 = float3(0,0,0); float Constant115 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant114; Drag_IfResult = Constant115; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_Emitter_Func_(inout FSimulationContext Context) { int Constant116 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.MapUpdate.Constants.Emitter.ScratchModule.NormalaizedPosition, Constant116, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result80 = normalize(Context.MapUpdate.Particles.Direction); float3 Result81 = Result80 * Context.MapUpdate.Constants.Emitter.ScratchModule.Radius; float3 Result82 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result81; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.MapUpdate.Particles.Position = Result82; Context.MapUpdate.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapSpawn.Engine.DeltaTime = 0.0f; Context.MapSpawn.Engine.InverseDeltaTime = 0.0f; Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 1; Context.MapSpawn.Particles.Lifetime = Constant; float4 Constant1 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant1; float Constant2 = 1; Context.MapSpawn.Particles.Mass = Constant2; float2 Constant3 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant3; float Constant4 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant4; float3 Constant5 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant5; float Constant6 = 0; Context.MapSpawn.Particles.MaterialRandom = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; //End Initialize Parameter Map Defaults bool Constant11 = true; bool Constant12 = true; bool Constant13 = false; bool Constant14 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant11; Context.MapSpawn.InitializeParticle.WriteColor = Constant12; Context.MapSpawn.InitializeParticle.WritePosition = Constant13; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant17 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant17; bool Constant18 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant18; bool Constant19 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant19; bool Constant20 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant20; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; bool Constant23 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant23; float Constant24 = 0; float Constant25 = 1; int Constant26 = -1; int Constant27 = 0; bool Constant28 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant24, Constant25, Constant26, Constant27, Constant28, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant42 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant42; int Constant43 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant43; bool Constant44 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant44; bool Constant45 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant45; float Constant46 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant46; float Constant47 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant47; float Constant48 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant48; float3 Constant49 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant49; float3 Constant50 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant50; float3 Constant51 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant51; bool Constant52 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant52; int Constant53 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant53; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(Context); ExitStatScope(/**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues Context.MapSpawn.Particles.PreviousVelocity = Context.MapSpawn.Particles.Velocity; // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! bool Constant86 = true; Context.MapUpdate.DataInstance.Alive = Constant86; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(4 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant90 = false; int Constant91 = (0); float Constant92 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant92; float Constant93 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant93; bool Constant94 = true; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant95 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant95; float3 Constant96 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant96; float Constant97 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant97; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant98 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant98; EnterStatScope(5 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant91, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant104 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant104; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; float3 Constant105 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant105; float3 Constant106 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant106; float Constant107 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant107; float Constant108 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant108; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.PreviousVelocity; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant109 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant109; bool Constant110 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant110; EnterStatScope(6 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(7 /**ScratchModule_Emitter_Func_*/); ScratchModule_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_Emitter_Func_*/); //End Update Script! } float3 TilingAxes_Local_CurlNoiseForce_VectorField; float3 Dimensions_Local_CurlNoiseForce_VectorField; float3 MinBounds_Local_CurlNoiseForce_VectorField; float3 MaxBounds_Local_CurlNoiseForce_VectorField; Texture3D VectorFieldTexture_Local_CurlNoiseForce_VectorField; SamplerState VectorFieldSampler_Local_CurlNoiseForce_VectorField; float3 TilingAxes_Emitter_VectorField32; float3 Dimensions_Emitter_VectorField32; float3 MinBounds_Emitter_VectorField32; float3 MaxBounds_Emitter_VectorField32; Texture3D VectorFieldTexture_Emitter_VectorField32; SamplerState VectorFieldSampler_Emitter_VectorField32; Buffer CurveLUT_Emitter_Color; float MinTime_Emitter_Color; float MaxTime_Emitter_Color; float InvTimeRange_Emitter_Color; float CurveLUTNumMinusOne_Emitter_Color; float TimeToLUTFraction_Emitter_Color(float T) { return saturate((T - MinTime_Emitter_Color) * InvTimeRange_Emitter_Color); } float SampleCurve_Emitter_Color(float T) { return CurveLUT_Emitter_Color[(uint)T]; } Buffer SpectrumBuffer_Emitter_NewAudioSpectrum; int NumChannels_Emitter_NewAudioSpectrum; int Resolution_Emitter_NewAudioSpectrum; void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_Sample) { float3 SamplePoint = (In_SamplePoint - MinBounds_Emitter_VectorField32) / (MaxBounds_Emitter_VectorField32 - MinBounds_Emitter_VectorField32); Out_Sample = Texture3DSample(VectorFieldTexture_Emitter_VectorField32, VectorFieldSampler_Emitter_VectorField32, SamplePoint).xyz; } void SampleColorCurve_EmitterColor(in float In_X, out float4 Out_Value) { float RemappedX = TimeToLUTFraction_Emitter_Color(In_X) * CurveLUTNumMinusOne_Emitter_Color; float Prev = floor(RemappedX); float Next = Prev < CurveLUTNumMinusOne_Emitter_Color ? Prev + 1.0 : Prev; float Interp = RemappedX - Prev; Prev *= 4; Next *= 4; float4 A = float4(SampleCurve_Emitter_Color(Prev), SampleCurve_Emitter_Color(Prev + 1), SampleCurve_Emitter_Color(Prev + 2), SampleCurve_Emitter_Color(Prev + 3)); float4 B = float4(SampleCurve_Emitter_Color(Next), SampleCurve_Emitter_Color(Next + 1), SampleCurve_Emitter_Color(Next + 2), SampleCurve_Emitter_Color(Next + 3)); Out_Value = lerp(A, B, Interp); } void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPosition, int In_ChannelIndex, out float Out_Val) { float FrameIndex = In_NormalizedPosition * Resolution_Emitter_NewAudioSpectrum; int MaxIndex = Resolution_Emitter_NewAudioSpectrum - 1; int LowerIndex = floor(FrameIndex); LowerIndex = LowerIndex < Resolution_Emitter_NewAudioSpectrum ? LowerIndex : MaxIndex; LowerIndex = LowerIndex >= 0 ? LowerIndex : 0; int UpperIndex = LowerIndex < MaxIndex ? LowerIndex + 1 : LowerIndex; float Fraction = FrameIndex - LowerIndex; Fraction = Fraction > 1.0 ? 1.0 : Fraction; Fraction = Fraction < 0.0 ? 0.0 : Fraction; float LowerValue = SpectrumBuffer_Emitter_NewAudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_NewAudioSpectrum + LowerIndex); float UpperValue = SpectrumBuffer_Emitter_NewAudioSpectrum.Load(In_ChannelIndex * Resolution_Emitter_NewAudioSpectrum + UpperIndex); Out_Val = lerp(LowerValue, UpperValue, Fraction); } void InitConstants(inout FSimulationContext Context) { Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize.xy; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale.xyz; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset.xyz; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Constants.Emitter.ScratchModule.NormalaizedPosition = Constants_Emitter_ScratchModule_NormalaizedPosition; Context.MapUpdate.Constants.Emitter.ScratchModule.Radius = Constants_Emitter_ScratchModule_Radius; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; } void InitSpawnVariables(inout FSimulationContext Context) { Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.x = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.y = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.DataInstance.Alive=true; } void LoadUpdateVariables(inout FSimulationContext Context, int InstanceIdx) { Context.MapUpdate.Particles.Age = InputDataFloat(0, 0, InstanceIdx); Context.MapUpdate.Particles.Color.r = InputDataFloat(0, 1, InstanceIdx); Context.MapUpdate.Particles.Color.g = InputDataFloat(0, 2, InstanceIdx); Context.MapUpdate.Particles.Color.b = InputDataFloat(0, 3, InstanceIdx); Context.MapUpdate.Particles.Color.a = InputDataFloat(0, 4, InstanceIdx); Context.MapUpdate.Particles.Direction.x = InputDataFloat(0, 5, InstanceIdx); Context.MapUpdate.Particles.Direction.y = InputDataFloat(0, 6, InstanceIdx); Context.MapUpdate.Particles.Direction.z = InputDataFloat(0, 7, InstanceIdx); Context.MapUpdate.Particles.Lifetime = InputDataFloat(0, 8, InstanceIdx); Context.MapUpdate.Particles.Mass = InputDataFloat(0, 9, InstanceIdx); Context.MapUpdate.Particles.MaterialRandom = InputDataFloat(0, 10, InstanceIdx); Context.MapUpdate.Particles.NormalizedAge = InputDataFloat(0, 11, InstanceIdx); Context.MapUpdate.Particles.Position.x = InputDataFloat(0, 12, InstanceIdx); Context.MapUpdate.Particles.Position.y = InputDataFloat(0, 13, InstanceIdx); Context.MapUpdate.Particles.Position.z = InputDataFloat(0, 14, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.x = InputDataFloat(0, 15, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.y = InputDataFloat(0, 16, InstanceIdx); Context.MapUpdate.Particles.PreviousVelocity.z = InputDataFloat(0, 17, InstanceIdx); Context.MapUpdate.Particles.Scale.x = InputDataFloat(0, 18, InstanceIdx); Context.MapUpdate.Particles.Scale.y = InputDataFloat(0, 19, InstanceIdx); Context.MapUpdate.Particles.Scale.z = InputDataFloat(0, 20, InstanceIdx); Context.MapUpdate.Particles.SpriteRotation = InputDataFloat(0, 21, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.x = InputDataFloat(0, 22, InstanceIdx); Context.MapUpdate.Particles.SpriteSize.y = InputDataFloat(0, 23, InstanceIdx); Context.MapUpdate.Particles.UniqueID = InputDataInt(0, 0, InstanceIdx); Context.MapUpdate.Particles.Velocity.x = InputDataFloat(0, 24, InstanceIdx); Context.MapUpdate.Particles.Velocity.y = InputDataFloat(0, 25, InstanceIdx); Context.MapUpdate.Particles.Velocity.z = InputDataFloat(0, 26, InstanceIdx); Context.MapUpdate.DataInstance.Alive=true; } void ConditionalInterpolateParameters(inout FSimulationContext Context) { InterpolateParameters(Context); } void TransferAttributes(inout FSimulationContext Context) { Context.MapUpdate.Particles = Context.MapSpawn.Particles; } void StoreUpdateVariables(in FSimulationContext Context) { GStageWritesAlive = true; const bool bValid = Context.MapUpdate.DataInstance.Alive; const int WriteIndex = OutputIndex(0, true, bValid); if (bValid) { OutputDataFloat(0, 0, WriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, WriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, WriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, WriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, WriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, WriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, WriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, WriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, WriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, WriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, WriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, WriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, WriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, WriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, WriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, WriteIndex, Context.MapUpdate.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, WriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 19, WriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 20, WriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 21, WriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 22, WriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 23, WriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 0, WriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 24, WriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 25, WriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 26, WriteIndex, Context.MapUpdate.Particles.Velocity.z); } } void CopyInstance(in int InstanceIdx) { // TODO! } /* * CS wrapper for our generated code; calls spawn and update functions on the corresponding instances in the buffer */ [numthreads(THREADGROUP_SIZE, 1, 1)] void SimulateMainComputeCS( uint3 GroupId : SV_GroupID, uint3 DispatchThreadId : SV_DispatchThreadID, uint3 GroupThreadId : SV_GroupThreadID) { GDispatchThreadId = DispatchThreadId; GGroupThreadId = GroupThreadId; GCurrentPhase = -1; GEmitterTickCounter = EmitterTickCounter; GSimStart = SimStart; GRandomSeedOffset = 0; /* if(CopyInstancesBeforeStart == 1) { UpdateStartInstance = 0; } */ // The CPU code will set UpdateStartInstance to 0 and ReadInstanceCountOffset to -1 for stages. const uint InstanceID = UpdateStartInstance + DispatchThreadId.x; if (ReadInstanceCountOffset == 0xFFFFFFFF) { GSpawnStartInstance = 0; } else { GSpawnStartInstance = RWInstanceCounts[ReadInstanceCountOffset]; // needed by ExecIndex() } bool bRunUpdateLogic, bRunSpawnLogic; #if USE_SIMULATION_STAGES if (IterationInterfaceCount > 0) { bRunUpdateLogic = InstanceID < IterationInterfaceCount && GSimStart != 1; bRunSpawnLogic = InstanceID < IterationInterfaceCount && GSimStart == 1; } else #endif // USE_SIMULATION_STAGES { const int MaxInstances = GSpawnStartInstance + SpawnedInstances; bRunUpdateLogic = InstanceID < GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; bRunSpawnLogic = InstanceID >= GSpawnStartInstance && InstanceID < UpdateStartInstance + MaxInstances; } const float RandomSeedInitialisation = NiagaraInternalNoise(InstanceID * 16384, 0 * 8196, (bRunUpdateLogic ? 4096 : 0) + EmitterTickCounter); // initialise the random state seed FSimulationContext Context = (FSimulationContext)0; BRANCH if (bRunUpdateLogic) { GCurrentPhase = GUpdatePhase; SetupExecIndexForGPU(); InitConstants(Context); LoadUpdateVariables(Context, InstanceID); ReadDataSets(Context); SimulateMapUpdate(Context); //SimulateDoWork(Context); //SimulateMapUpdate(Context); WriteDataSets(Context); } else if (bRunSpawnLogic) { GCurrentPhase = GSpawnPhase; #if USE_SIMULATION_STAGES // Only process the spawn info for particle-based stages. Stages with an iteration interface expect the exec index to simply be the thread index. if (IterationInterfaceCount > 0) { SetupExecIndexForGPU(); } else #endif { SetupExecIndexAndSpawnInfoForGPU(); } InitConstants(Context); InitSpawnVariables(Context); ReadDataSets(Context); Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); ConditionalInterpolateParameters(Context); SimulateMapSpawn(Context); GCurrentPhase = GUpdatePhase; TransferAttributes(Context); //SimulateDoWork(Context); //SimulateMapUpdate(Context); SimulateMapUpdate(Context); WriteDataSets(Context); } StoreUpdateVariables(Context); } 1!Local_CurlNoiseForce_VectorField NiagaraDataInterfaceVectorFieldEmitter_VectorField32 NiagaraDataInterfaceVectorFieldl!SampleField_EmitterVectorField32Emitter_ColorNiagaraDataInterfaceColorCurveiSampleColorCurve_EmitterColorEmitter_NewAudioSpectrum"NiagaraDataInterfaceAudioSpectrum9&AudioSpectrum_EmitterNewAudioSpectrum{|^1^X !<$@j)'LM "<$@j)'LM <$@j)'LM  <$@j)'LM2GNiagaraScript /Game/Audio4.Audio4:Empty.NiagaraScriptSource_0.NiagaraGraph_0.NiagaraNodeAssignment_0.SetVariables_619FBC7841F4E96144B94D92F32F22FEbNiagaraNodeAssigmentAssignmentNodeDesc)Sets one or more variables in the stack.2BMG1q%@j)'%@j)'%@j)'%@j)'$%@j)'(%@j)'0%@j)'4%@j)'8%@j)'<%@j)'@%@j)'L%@j)'P%@j)'\%@j)'`%@j)'d%@j)'h%@j)'l%@j)'x%@j)'|%@j)'%@j)'%@j)'%@j)'1\????@????@@AB????? ASONiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:SpawnScripta o M-RعeQ+(1CInterpolatedSpawnEmitter.LocalspaceGPUComputeSimEM<A1\|tSJiAj́cSJ1$ /J 1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1 <$@j)'K15KLMHM:<$@j)'K1Kal1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 LMHM%<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHMc1cMl:1M15N931M15Ni%1M15N1 321// Shader generated by Niagara HLSL Translator struct NiagaraRandInfo { int Seed1; int Seed2; int Seed3; }; struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { float Constants_Emitter_InitializeParticle_Lifetime; float4 Constants_Emitter_InitializeParticle_Color; float Constants_Emitter_InitializeParticle_Mass; float2 Constants_Emitter_InitializeParticle_SpriteSize; float Constants_Emitter_InitializeParticle_SpriteRotation; float3 Constants_Emitter_InitializeParticle_MeshScale; float Constants_Emitter_TorusLocation_SurfacePosition; float Constants_Emitter_TorusLocation_UDistribution; float Constants_Emitter_TorusLocation_VDistribution; int Constants_Emitter_TorusLocation_RandomSeed; float Constants_Emitter_TorusLocation_HandleRadius; float Constants_Emitter_TorusLocation_LargeRadius; float3 Constants_Emitter_TorusLocation_NonUniformScale; float3 Constants_Emitter_TorusLocation_TorusAxis; float Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 Constants_Emitter_TorusLocation_Offset; int Constants_Emitter_TorusLocation_SpawnGroupMask; int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_NormalaizedPosition; float Constants_Emitter_ScratchModule_Radius; int Engine_ExecutionCount; float Emitter_SpawnRate; float Emitter_SpawnInterval; float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; } cbuffer PREV_FNiagaraGlobalParameters { float PREV_Engine_DeltaTime; float PREV_Engine_InverseDeltaTime; float PREV_Engine_Time; float PREV_Engine_RealTime; } cbuffer PREV_FNiagaraSystemParameters { float PREV_Engine_Owner_TimeSinceRendered; float PREV_Engine_Owner_LODDistance; float PREV_Engine_Owner_LODDistanceFraction; float PREV_Engine_System_Age; int PREV_Engine_Owner_ExecutionState; int PREV_Engine_System_TickCount; int PREV_Engine_System_NumEmitters; int PREV_Engine_System_NumEmittersAlive; } cbuffer PREV_FNiagaraOwnerParameters { float4x4 PREV_Engine_Owner_SystemLocalToWorld; float4x4 PREV_Engine_Owner_SystemWorldToLocal; float4x4 PREV_Engine_Owner_SystemLocalToWorldTransposed; float4x4 PREV_Engine_Owner_SystemWorldToLocalTransposed; float4x4 PREV_Engine_Owner_SystemLocalToWorldNoScale; float4x4 PREV_Engine_Owner_SystemWorldToLocalNoScale; float4 PREV_Engine_Owner_Rotation; float4 PREV_Engine_Owner_Position; float4 PREV_Engine_Owner_Velocity; float4 PREV_Engine_Owner_SystemXAxis; float4 PREV_Engine_Owner_SystemYAxis; float4 PREV_Engine_Owner_SystemZAxis; float4 PREV_Engine_Owner_Scale; } cbuffer PREV_FNiagaraEmitterParameters { int PREV_Engine_Emitter_NumParticles; int PREV_Engine_Emitter_TotalSpawnedParticles; float PREV_Engine_Emitter_SpawnCountScale; float PREV_Emitter_Age; int PREV_Emitter_RandomSeed; int PREV_Engine_Emitter_PaddingInt32_0; int PREV_Engine_Emitter_PaddingInt32_1; int PREV_Engine_Emitter_PaddingInt32_2; } cbuffer PREV_FNiagaraExternalParameters { float PREV_Constants_Emitter_InitializeParticle_Lifetime; float4 PREV_Constants_Emitter_InitializeParticle_Color; float PREV_Constants_Emitter_InitializeParticle_Mass; float2 PREV_Constants_Emitter_InitializeParticle_SpriteSize; float PREV_Constants_Emitter_InitializeParticle_SpriteRotation; float3 PREV_Constants_Emitter_InitializeParticle_MeshScale; float PREV_Constants_Emitter_TorusLocation_SurfacePosition; float PREV_Constants_Emitter_TorusLocation_UDistribution; float PREV_Constants_Emitter_TorusLocation_VDistribution; int PREV_Constants_Emitter_TorusLocation_RandomSeed; float PREV_Constants_Emitter_TorusLocation_HandleRadius; float PREV_Constants_Emitter_TorusLocation_LargeRadius; float3 PREV_Constants_Emitter_TorusLocation_NonUniformScale; float3 PREV_Constants_Emitter_TorusLocation_TorusAxis; float PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; float3 PREV_Constants_Emitter_TorusLocation_Offset; int PREV_Constants_Emitter_TorusLocation_SpawnGroupMask; int PREV_Constants_Emitter_CurlNoiseForce_RandomSeed; float PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 PREV_Constants_Emitter_CurlNoiseForce_PanNoiseField; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength; float PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float PREV_Constants_Emitter_ScratchModule_NormalaizedPosition; float PREV_Constants_Emitter_ScratchModule_Radius; int PREV_Engine_ExecutionCount; float PREV_Emitter_SpawnRate; float PREV_Emitter_SpawnInterval; float PREV_Emitter_InterpSpawnStartDt; int PREV_Emitter_SpawnGroup; } struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; }; struct FParamMap0_TorusLocation { int CoordinateSpace; bool EnableScale; bool FixedRandomSeed; float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; bool OverrideRandomness; bool OverrideSeed; int RandomnessMode; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float3 TorusOrigin; float UDistribution; float VDistribution; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles { float3 Direction; }; struct FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE { FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE_Particles Particles; }; struct FParamMap0_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_TorusLocation { float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_OUTPUT_VAR_TorusLocation TorusLocation; }; struct FParamMap0_Local_TorusLocation { float RandomRadius; float RandomU; float RandomV; float3 TorusBitangent; float3 TorusNormal; float3 TorusTangent; float3 TorusVector; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Local_TorusLocation TorusLocation; }; struct FParamMap0_Interpolation { float Emitter_InterpSpawnStartDt; int Emitter_SpawnGroup; float Emitter_SpawnInterval; int InterpSpawn_Index; float InterpSpawn_InvSpawnTime; float InterpSpawn_InvUpdateTime; float InterpSpawn_SpawnTime; float InterpSpawn_UpdateTime; float SpawnInterp; }; struct FParamMap0_InitializeParticle { float4 Color; float Lifetime; float Mass; float MaterialRandom; float3 MeshScale; float3 Position; float SpriteRotation; float2 SpriteSize; bool WriteColor; bool WriteLifetime; bool WriteMass; bool WriteMaterialRandom; bool WritePosition; bool WriteScale; bool WriteSpriteRotation; bool WriteSpriteSize; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; int ExecutionCount; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; float InterpSpawnStartDt; bool LocalSpace; int RandomSeed; int SpawnGroup; float SpawnInterval; float SpawnRate; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_TorusLocation { float HandleRadius; float LargeRadius; float3 NonUniformScale; float NormalizedAngleAroundTorusAxis; float3 Offset; int RandomSeed; int SpawnGroupMask; float SurfacePosition; float3 TorusAxis; float UDistribution; float VDistribution; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_InitializeParticle { float4 Color; float Lifetime; float Mass; float3 MeshScale; float SpriteRotation; float2 SpriteSize; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_InitializeParticle InitializeParticle; FParamMap0_Constants_Emitter_ScratchModule ScratchModule; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Constants_Emitter_TorusLocation TorusLocation; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_InitializeParticle InitializeParticle; FParamMap0_Interpolation Interpolation; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_ScratchModule ScratchModule; FParamMap0_SetVariables_619FBC7841F4E96144B94D92F32F22FE SetVariables_619FBC7841F4E96144B94D92F32F22FE; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_TorusLocation TorusLocation; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 MapSpawn; FParamMap0 MapUpdate; }; static float HackSpawnInterp = 1.0; void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context); void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context); void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context); void InitializeParticle_Emitter_Func_(inout FSimulationContext Context); void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context); void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal); void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context); void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context); void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context); void TorusLocation_Emitter_Func_(inout FSimulationContext Context); void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context); void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleOwnerPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant15 = true; float3 Constant16 = float3(0,0,0); float3 Vector_IfResult; if(Constant15) { Vector_IfResult = Constant16; } else { Vector_IfResult = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult; } void InitializeParticle_SimulationPosition_Emitter_Func_(out float3 Out_OutPosition, inout FSimulationContext Context) { bool Constant21 = true; float3 Constant22 = float3(0,0,0); float3 Vector_IfResult1; if(Constant21) { Vector_IfResult1 = Constant22; } else { Vector_IfResult1 = Context.MapSpawn.Engine.Owner.Position; } Out_OutPosition = Vector_IfResult1; } void GetRandomInfo_Emitter_Determinism_false_Func_(int In_Seed, int In_Engine_System_TickCount, bool In_OverrideSeed, int In_Particles_UniqueID, int In_Emitter_RandomSeed, bool In_FixedOverrideSeed, int In_RandomnessMode, out NiagaraRandInfo Out_RandomInfo, out bool Out_UseDeterministicRandoms, inout FSimulationContext Context) { bool Constant34 = false; int Constant35 = 0; bool Result = NiagaraAll(In_RandomnessMode == Constant35); bool Result1 = Constant34 && Result; int Constant36 = 1; bool Result2 = NiagaraAll(In_RandomnessMode == Constant36); bool Result3 = Result1 || Result2; int Seed_IfResult; if(In_OverrideSeed) { Seed_IfResult = In_Seed; } else { Seed_IfResult = Context.MapSpawn.Emitter.RandomSeed; } int Constant37 = 0; int Constant38 = 0; int Seed1_IfResult; int Seed2_IfResult; int Seed3_IfResult; if(In_FixedOverrideSeed) { Seed1_IfResult = Seed_IfResult; Seed2_IfResult = Constant37; Seed3_IfResult = Constant38; } else { Seed1_IfResult = Context.MapSpawn.Particles.UniqueID; Seed2_IfResult = Context.MapSpawn.Engine.System.TickCount; Seed3_IfResult = Seed_IfResult; } int Constant39 = -1; int Constant40 = -1; int Constant41 = -1; int Seed1_IfResult1; int Seed2_IfResult1; int Seed3_IfResult1; if(Result3) { Seed1_IfResult1 = Seed1_IfResult; Seed2_IfResult1 = Seed2_IfResult; Seed3_IfResult1 = Seed3_IfResult; } else { Seed1_IfResult1 = Constant39; Seed2_IfResult1 = Constant40; Seed3_IfResult1 = Constant41; } NiagaraRandInfo Output1; Output1.Seed1 = Seed1_IfResult1; Output1.Seed2 = Seed2_IfResult1; Output1.Seed3 = Seed3_IfResult1; Out_RandomInfo = Output1; Out_UseDeterministicRandoms = Result3; } void RandomRangeFloat_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant29 = (0); bool Constant30 = false; int Constant31 = 0; int Constant32 = (0); bool Constant33 = false; NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant29, In_OverrideSeed, Constant31, Constant32, Constant33, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms, Context); float Result4 = In_Max - In_Min; int Seed1; int Seed2; int Seed3; Seed1 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed1; Seed2 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed2; Seed3 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo.Seed3; float Result5 = rand_float(Result4, Seed1, Seed2, Seed3); float Result6 = rand_float(Result4); float Random_IfResult; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms) { Random_IfResult = Result5; } else { Random_IfResult = Result6; } float Result7 = In_Min + Random_IfResult; Out_Result = Result7; } void InitializeParticle_Emitter_Func_(inout FSimulationContext Context) { float Lifetime_IfResult; if(Context.MapSpawn.InitializeParticle.WriteLifetime) { Lifetime_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime; } else { Lifetime_IfResult = Context.MapSpawn.Particles.Lifetime; } Context.MapSpawn.Particles.Lifetime = Lifetime_IfResult; float4 Color_IfResult; if(Context.MapSpawn.InitializeParticle.WriteColor) { Color_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Color; } else { Color_IfResult = Context.MapSpawn.Particles.Color; } Context.MapSpawn.Particles.Color = Color_IfResult; float Mass_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMass) { Mass_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass; } else { Mass_IfResult = Context.MapSpawn.Particles.Mass; } Context.MapSpawn.Particles.Mass = Mass_IfResult; float2 SpriteSize_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteSize) { SpriteSize_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize; } else { SpriteSize_IfResult = Context.MapSpawn.Particles.SpriteSize; } Context.MapSpawn.Particles.SpriteSize = SpriteSize_IfResult; float SpriteRotation_IfResult; if(Context.MapSpawn.InitializeParticle.WriteSpriteRotation) { SpriteRotation_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation; } else { SpriteRotation_IfResult = Context.MapSpawn.Particles.SpriteRotation; } Context.MapSpawn.Particles.SpriteRotation = SpriteRotation_IfResult; float3 Scale_IfResult; if(Context.MapSpawn.InitializeParticle.WriteScale) { Scale_IfResult = Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale; } else { Scale_IfResult = Context.MapSpawn.Particles.Scale; } Context.MapSpawn.Particles.Scale = Scale_IfResult; float3 Scale_IfResult1; if(Context.MapSpawn.InitializeParticle.WritePosition) { Scale_IfResult1 = Context.MapSpawn.InitializeParticle.Position; } else { Scale_IfResult1 = Context.MapSpawn.Particles.Position; } Context.MapSpawn.Particles.Position = Scale_IfResult1; float MaterialRandom_IfResult; if(Context.MapSpawn.InitializeParticle.WriteMaterialRandom) { MaterialRandom_IfResult = Context.MapSpawn.InitializeParticle.MaterialRandom; } else { MaterialRandom_IfResult = Context.MapSpawn.Particles.MaterialRandom; } Context.MapSpawn.Particles.MaterialRandom = MaterialRandom_IfResult; } void RandomRange_Func_(float In_Min, float In_Max, int In_Seed, int In_RandomnessMode, bool In_OverrideSeed, bool In_FixedOverrideSeed, out float Out_Result, inout FSimulationContext Context) { int Constant59 = (0); bool Constant60 = false; int Constant61 = 0; int Constant62 = (0); NiagaraRandInfo GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1; bool GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1; GetRandomInfo_Emitter_Determinism_false_Func_(In_Seed, Constant59, In_OverrideSeed, Constant61, Constant62, In_FixedOverrideSeed, In_RandomnessMode, GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1, GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1, Context); float Result9 = In_Max - In_Min; int Seed11; int Seed21; int Seed31; Seed11 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed1; Seed21 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed2; Seed31 = GetRandomInfo_Emitter_Determinism_false_Func_Output_RandomInfo1.Seed3; float Result10 = rand(Result9, Seed11, Seed21, Seed31); float Result11 = rand(Result9); float Random_IfResult1; if(GetRandomInfo_Emitter_Determinism_false_Func_Output_UseDeterministicRandoms1) { Random_IfResult1 = Result10; } else { Random_IfResult1 = Result11; } float Result12 = In_Min + Random_IfResult1; Out_Result = Result12; } void CustomHlslE548EF1441649C36D35230847F667303_Func_(float In_a, float In_c, float In_cosu, float In_sinu, float In_cosv, float In_sinv, out float3 Out_Torus, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal) { // Parametric Torus float c_add_a_mul_cosv = float(In_c + In_a * In_cosv); Out_Torus.x = c_add_a_mul_cosv * In_cosu; Out_Torus.y = c_add_a_mul_cosv * In_sinu; Out_Torus.z = In_a * In_sinv; Out_TorusTangent = normalize(float3(1 + 1 * In_cosv, 1 + 1 * In_cosv, 1 + 1 * In_cosv) * float3(-In_sinu, In_cosu, 0)); Out_TorusBitangent = normalize(float3(-In_sinv * In_cosu, -In_sinv * In_sinu, In_cosv)); Out_TorusNormal = cross(Out_TorusTangent, Out_TorusBitangent); } void ParametricTorus_Func_(float In_HandleRadius, float In_LargeRadius, float In_U, float In_V, out float3 Out_TorusVector, out float3 Out_TorusTangent, out float3 Out_TorusBitangent, out float3 Out_TorusNormal, inout FSimulationContext Context) { float Constant69 = 1; float Result17 = cos(In_U*(TWO_PI/Constant69)); float Constant70 = 1; float Result18 = sin(In_U*(TWO_PI/Constant70)); float Constant71 = 1; float Result19 = cos(In_V*(TWO_PI/Constant71)); float Constant72 = 1; float Result20 = sin(In_V*(TWO_PI/Constant72)); float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; float3 CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; CustomHlslE548EF1441649C36D35230847F667303_Func_(In_HandleRadius, In_LargeRadius, Result17, Result18, Result19, Result20, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent, CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal); Out_TorusVector = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_Torus; Out_TorusTangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusTangent; Out_TorusBitangent = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusBitangent; Out_TorusNormal = CustomHlslE548EF1441649C36D35230847F667303_Func_Output_TorusNormal; } void TransformBase_Func_(int In_SourceSpace, int In_DestinationSpace, float4x4 In_LocalToWorldTransform, float4x4 In_WorldToLocalTransform, bool In_bLocalSpace, out bool Out_bUseOriginal, out float4x4 Out_OutTransform, inout FSimulationContext Context) { int Constant76 = 0; bool Result26 = NiagaraAll(In_SourceSpace == Constant76); int Constant77 = 0; bool Result27 = NiagaraAll(In_DestinationSpace == Constant77); bool Result28 = Result26 && Result27; int Constant78 = 1; bool Result29 = NiagaraAll(In_SourceSpace == Constant78); int Constant79 = 1; bool Result30 = NiagaraAll(In_DestinationSpace == Constant79); bool Result31 = Result29 && Result30; bool Result32 = Result28 || Result31; int Constant80 = 2; bool Result33 = NiagaraAll(In_SourceSpace == Constant80); int Constant81 = 2; bool Result34 = NiagaraAll(In_DestinationSpace == Constant81); bool Result35 = Result33 && Result34; bool Result36 = Result32 || Result35; bool Result37 = Result26 && Result34; bool Result38 = Result33 && Result27; bool Result39 = Result37 || Result38; bool Result40 = In_bLocalSpace && Result39; bool Result41 = Result36 || Result40; bool Result42 = !In_bLocalSpace; bool Result43 = Result26 && Result30; bool Result44 = Result29 && Result27; bool Result45 = Result43 || Result44; bool Result46 = Result42 && Result45; bool Result47 = Result41 || Result46; bool Result48 = In_bLocalSpace && Result43; bool Result49 = Result33 && Result30; bool Result50 = Result48 || Result49; bool Result51 = Result42 && Result38; bool Result52 = Result50 || Result51; float4x4 Matrix_IfResult1; if(Result52) { Matrix_IfResult1 = In_LocalToWorldTransform; } else { Matrix_IfResult1 = In_WorldToLocalTransform; } Out_bUseOriginal = Result47; Out_OutTransform = Matrix_IfResult1; } void TorusLocation_NF_TransformVector_Emitter_Func_(float3 In_InVector, int In_SourceSpace, int In_DestinationSpace, bool In_ApplyScale, out float3 Out_OutVector, inout FSimulationContext Context) { bool Constant75 = true; float4x4 Matrix_IfResult; float4x4 Matrix001_IfResult; if(In_ApplyScale) { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorld; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocal; } else { Matrix_IfResult = Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale; Matrix001_IfResult = Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale; } bool TransformBase_Func_Output_bUseOriginal; float4x4 TransformBase_Func_Output_OutTransform; TransformBase_Func_(In_SourceSpace, In_DestinationSpace, Matrix_IfResult, Matrix001_IfResult, Constant75, TransformBase_Func_Output_bUseOriginal, TransformBase_Func_Output_OutTransform, Context); float3 Result53 = mul(float4(In_InVector,0.0),TransformBase_Func_Output_OutTransform).xyz; float3 Vector_IfResult2; if(TransformBase_Func_Output_bUseOriginal) { Vector_IfResult2 = In_InVector; } else { Vector_IfResult2 = Result53; } Out_OutVector = Vector_IfResult2; } void TorusLocation_Emitter_Func_(inout FSimulationContext Context) { float Constant54 = 0; float Constant55 = 999; float Result8 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition,Constant54,Constant55); float Constant56 = 1; int Constant57 = 0; bool Constant58 = false; int Mode_IfResult; bool Override_IfResult; if(Context.MapSpawn.TorusLocation.OverrideRandomness) { Mode_IfResult = Context.MapSpawn.TorusLocation.RandomnessMode; Override_IfResult = Context.MapSpawn.TorusLocation.OverrideSeed; } else { Mode_IfResult = Constant57; Override_IfResult = Constant58; } float RandomRange_Func_Output_Result; RandomRange_Func_(Result8, Constant56, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result, Context); float Constant63 = 0; float Constant64 = 1; float Result13 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution,Constant63,Constant64); float Constant65 = 1; float RandomRange_Func_Output_Result1; RandomRange_Func_(Result13, Constant65, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result1, Context); float Constant66 = 0; float Constant67 = 1; float Result14 = clamp(Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution,Constant66,Constant67); float Constant68 = 1; float RandomRange_Func_Output_Result2; RandomRange_Func_(Result14, Constant68, Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed, Mode_IfResult, Override_IfResult, Context.MapSpawn.TorusLocation.FixedRandomSeed, RandomRange_Func_Output_Result2, Context); Context.MapSpawn.Local.TorusLocation.RandomRadius = RandomRange_Func_Output_Result; Context.MapSpawn.Local.TorusLocation.RandomU = RandomRange_Func_Output_Result1; Context.MapSpawn.Local.TorusLocation.RandomV = RandomRange_Func_Output_Result2; float Result15 = sqrt(Context.MapSpawn.Local.TorusLocation.RandomRadius); float Result16 = Result15 * Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius; float3 ParametricTorus_Func_Output_TorusVector; float3 ParametricTorus_Func_Output_TorusTangent; float3 ParametricTorus_Func_Output_TorusBitangent; float3 ParametricTorus_Func_Output_TorusNormal; ParametricTorus_Func_(Result16, Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius, Context.MapSpawn.Local.TorusLocation.RandomU, Context.MapSpawn.Local.TorusLocation.RandomV, ParametricTorus_Func_Output_TorusVector, ParametricTorus_Func_Output_TorusTangent, ParametricTorus_Func_Output_TorusBitangent, ParametricTorus_Func_Output_TorusNormal, Context); Context.MapSpawn.Local.TorusLocation.TorusVector = ParametricTorus_Func_Output_TorusVector; Context.MapSpawn.Local.TorusLocation.TorusTangent = ParametricTorus_Func_Output_TorusTangent; Context.MapSpawn.Local.TorusLocation.TorusBitangent = ParametricTorus_Func_Output_TorusBitangent; Context.MapSpawn.Local.TorusLocation.TorusNormal = ParametricTorus_Func_Output_TorusNormal; float3 Result21 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusVector; float3 Result22 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusTangent; float3 Result23 = normalize(Result22); float3 Result24 = Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale * Context.MapSpawn.Local.TorusLocation.TorusNormal; float3 Result25 = normalize(Result24); float3 TorusVector_IfResult; float3 Tangent_IfResult; float3 Normal_IfResult; if(Context.MapSpawn.TorusLocation.EnableScale) { TorusVector_IfResult = Result21; Tangent_IfResult = Result23; Normal_IfResult = Result25; } else { TorusVector_IfResult = Context.MapSpawn.Local.TorusLocation.TorusVector; Tangent_IfResult = Context.MapSpawn.Local.TorusLocation.TorusTangent; Normal_IfResult = Context.MapSpawn.Local.TorusLocation.TorusNormal; } Context.MapSpawn.Local.TorusLocation.TorusVector = TorusVector_IfResult; Context.MapSpawn.Local.TorusLocation.TorusTangent = Tangent_IfResult; Context.MapSpawn.Local.TorusLocation.TorusNormal = Normal_IfResult; Context.MapSpawn.TorusLocation.TorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis; Context.MapSpawn.TorusLocation.NormalizedAngleAroundTorusAxis = Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis; int Constant73 = 0; bool Constant74 = true; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusVector, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant73, Constant74, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector, Context); float3 Result54 = Context.MapSpawn.Constants.Emitter.TorusLocation.Offset + Context.MapSpawn.TorusLocation.TorusOrigin; float3 Result55 = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector + Result54; int Constant82 = 0; bool Constant83 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusTangent, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant82, Constant83, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1, Context); int Constant84 = 0; bool Constant85 = false; float3 TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; TorusLocation_NF_TransformVector_Emitter_Func_(Context.MapSpawn.Local.TorusLocation.TorusNormal, Context.MapSpawn.TorusLocation.CoordinateSpace, Constant84, Constant85, TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2, Context); float3 Result56 = cross(TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2,TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1); Context.MapSpawn.Particles.Position = Result55; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusVector = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusTangent = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector1; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusBitangent = Result56; Context.MapSpawn.OUTPUT_VAR.TorusLocation.TorusNormal = TorusLocation_NF_TransformVector_Emitter_Func_Output_OutVector2; } void SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(inout FSimulationContext Context) { Context.MapSpawn.Particles.Direction = Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction; } void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result57 = NiagaraAll(Context.MapUpdate.Particles.Age <= Context.MapUpdate.Engine.DeltaTime); Context.MapUpdate.OUTPUT_VAR.ParticleState.FirstFrame = Result57; float Result58 = Context.MapUpdate.Particles.Age + Context.MapUpdate.ParticleState.DeltaTime; float Constant87 = 1e-05; float Result59 = max(Context.MapUpdate.ParticleState.Lifetime, Constant87); float Constant88 = 0.0001; float Result60 = Result59 - Constant88; bool Result61 = NiagaraAll(Result58 < Result60); bool Constant89 = false; bool bool_IfResult; if(Result61) { bool_IfResult = Context.MapUpdate.DataInstance.Alive; } else { bool_IfResult = Constant89; } float Result62 = Result58 / Result59; Context.MapUpdate.DataInstance.Alive = bool_IfResult; Context.MapUpdate.Particles.Age = Result58; Context.MapUpdate.Particles.NormalizedAge = Result62; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant99 = false; float AgeAdvancement_IfResult; if(Constant99) { AgeAdvancement_IfResult = Context.MapUpdate.Emitter.Age; } else { AgeAdvancement_IfResult = Context.MapUpdate.Engine.Time; } float Constant100 = 4096; int Constant101 = 0; float Result63 = rand_float(Constant100, Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.MapUpdate.Emitter.RandomSeed, Constant101); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult; Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Result63; Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Context.MapUpdate.CurlNoiseForce.SamplePosition; float3 Result64 = Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset + Context.MapUpdate.Local.CurlNoiseForce.SamplePosition; float3 Result65 = Result64 * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float3 Result66 = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField * Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement; float3 Result67 = Result65 - Result66; float Constant102 = 125; float3 Result68 = Result67 * Constant102; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result68, SampleField_EmitterVectorField32Output_SampledValue); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant103 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant103; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result69 = Context.MapUpdate.Local.CurlNoiseForce.SampledNoise * Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result70 = Context.MapUpdate.Transient.PhysicsForce + Result69; Context.MapUpdate.Transient.PhysicsForce = Result70; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.SolveForcesAndVelocity.DeltaTime; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.MapUpdate.SolveForcesAndVelocity.Force; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.SolveForcesAndVelocity.Velocity; Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Context.MapUpdate.SolveForcesAndVelocity.Mass; float Constant111 = 0.0001; float Result71 = max(Context.MapUpdate.Local.SolveForcesAndVelocity.Mass, Constant111); float Result72 = Reciprocal(Result71); float3 Result73 = Result72 * Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce; Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Result73; float3 Result74 = Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant112 = 0; float Result75 = max(Context.MapUpdate.Transient.PhysicsDrag, Constant112); float Result76 = Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime * Result75; float Constant113 = 1; float Result77 = Result76 + Constant113; float3 Result78 = Result74 / Result77; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result78; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.MapUpdate.Transient.PhysicsDrag; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result79 = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime + Context.MapUpdate.SolveForcesAndVelocity.Position; Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result79; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity; } Context.MapUpdate.Particles.Position = Position_IfResult; Context.MapUpdate.Particles.Velocity = Velocity_IfResult; Context.MapUpdate.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant114 = float3(0,0,0); float Constant115 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant114; Drag_IfResult = Constant115; } else { ForceVector_IfResult = Context.MapUpdate.Transient.PhysicsForce; Drag_IfResult = Context.MapUpdate.Transient.PhysicsDrag; } Context.MapUpdate.Transient.PhysicsForce = ForceVector_IfResult; Context.MapUpdate.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_Emitter_Func_(inout FSimulationContext Context) { int Constant116 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.MapUpdate.Constants.Emitter.ScratchModule.NormalaizedPosition, Constant116, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result80 = normalize(Context.MapUpdate.Particles.Direction); float3 Result81 = Result80 * Context.MapUpdate.Constants.Emitter.ScratchModule.Radius; float3 Result82 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result81; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.MapUpdate.Particles.Position = Result82; Context.MapUpdate.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return HackSpawnInterp; } void InterpolateParameters(inout FSimulationContext Context) { int InterpSpawn_Index = ExecIndex(); float InterpSpawn_SpawnTime = Emitter_InterpSpawnStartDt + (Emitter_SpawnInterval * InterpSpawn_Index); float InterpSpawn_UpdateTime = Engine_DeltaTime - InterpSpawn_SpawnTime; float InterpSpawn_InvSpawnTime = 1.0 / InterpSpawn_SpawnTime; float InterpSpawn_InvUpdateTime = 1.0 / InterpSpawn_UpdateTime; float SpawnInterp = InterpSpawn_SpawnTime * Engine_InverseDeltaTime ; HackSpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.InterpSpawn_Index = InterpSpawn_Index; Context.MapSpawn.Interpolation.InterpSpawn_SpawnTime = InterpSpawn_SpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_UpdateTime = InterpSpawn_UpdateTime; Context.MapSpawn.Interpolation.InterpSpawn_InvSpawnTime = InterpSpawn_InvSpawnTime; Context.MapSpawn.Interpolation.InterpSpawn_InvUpdateTime = InterpSpawn_InvUpdateTime; Context.MapSpawn.Interpolation.SpawnInterp = SpawnInterp; Context.MapSpawn.Interpolation.Emitter_SpawnInterval = Emitter_SpawnInterval; Context.MapSpawn.Interpolation.Emitter_InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapSpawn.Interpolation.Emitter_SpawnGroup = Emitter_SpawnGroup; Context.MapSpawn.Engine.Time = lerp(PREV_Engine_Time, Engine_Time, SpawnInterp); Context.MapSpawn.Engine.RealTime = lerp(PREV_Engine_RealTime, Engine_RealTime, SpawnInterp); Context.MapSpawn.Engine.Owner.TimeSinceRendered = lerp(PREV_Engine_Owner_TimeSinceRendered, Engine_Owner_TimeSinceRendered, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistance = lerp(PREV_Engine_Owner_LODDistance, Engine_Owner_LODDistance, SpawnInterp); Context.MapSpawn.Engine.Owner.LODDistanceFraction = lerp(PREV_Engine_Owner_LODDistanceFraction, Engine_Owner_LODDistanceFraction, SpawnInterp); Context.MapSpawn.Engine.System.Age = lerp(PREV_Engine_System_Age, Engine_System_Age, SpawnInterp); Context.MapSpawn.Engine.Owner.Rotation = lerp(PREV_Engine_Owner_Rotation, Engine_Owner_Rotation, SpawnInterp); Context.MapSpawn.Engine.Owner.Position = lerp(PREV_Engine_Owner_Position.xyz, Engine_Owner_Position.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Velocity = lerp(PREV_Engine_Owner_Velocity.xyz, Engine_Owner_Velocity.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemXAxis = lerp(PREV_Engine_Owner_SystemXAxis.xyz, Engine_Owner_SystemXAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemYAxis = lerp(PREV_Engine_Owner_SystemYAxis.xyz, Engine_Owner_SystemYAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.SystemZAxis = lerp(PREV_Engine_Owner_SystemZAxis.xyz, Engine_Owner_SystemZAxis.xyz, SpawnInterp); Context.MapSpawn.Engine.Owner.Scale = lerp(PREV_Engine_Owner_Scale.xyz, Engine_Owner_Scale.xyz, SpawnInterp); Context.MapSpawn.Emitter.Age = lerp(PREV_Emitter_Age, Emitter_Age, SpawnInterp); Context.MapSpawn.Engine.DeltaTime = 0.0f; Context.MapSpawn.Engine.InverseDeltaTime = 0.0f; Context.MapUpdate.Engine.DeltaTime = InterpSpawn_UpdateTime; Context.MapUpdate.Engine.InverseDeltaTime = InterpSpawn_InvUpdateTime; } void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void SimulateMapSpawn(inout FSimulationContext Context) { //Begin Interpolated Spawn Script! //Begin Initialize Parameter Map Defaults float Constant = 1; Context.MapSpawn.Particles.Lifetime = Constant; float4 Constant1 = float4(1,1,1,1); Context.MapSpawn.Particles.Color = Constant1; float Constant2 = 1; Context.MapSpawn.Particles.Mass = Constant2; float2 Constant3 = float2(10,10); Context.MapSpawn.Particles.SpriteSize = Constant3; float Constant4 = 0; Context.MapSpawn.Particles.SpriteRotation = Constant4; float3 Constant5 = float3(1,1,1); Context.MapSpawn.Particles.Scale = Constant5; float Constant6 = 0; Context.MapSpawn.Particles.MaterialRandom = Constant6; float3 Constant7 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Particles.Direction = Constant7; float Constant8 = 0; Context.MapSpawn.Particles.Age = Constant8; float Constant9 = (0.0); Context.MapSpawn.Particles.NormalizedAge = Constant9; float3 Constant10 = float3(0,0,0); Context.MapSpawn.Particles.Velocity = Constant10; //End Initialize Parameter Map Defaults bool Constant11 = true; bool Constant12 = true; bool Constant13 = false; bool Constant14 = true; float3 ParticleOwnerPosition_Emitter_Func_Output_OutPosition; ParticleOwnerPosition_Emitter_Func_(ParticleOwnerPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.InitializeParticle.WriteSpriteSize = Constant11; Context.MapSpawn.InitializeParticle.WriteColor = Constant12; Context.MapSpawn.InitializeParticle.WritePosition = Constant13; Context.MapSpawn.InitializeParticle.Position = ParticleOwnerPosition_Emitter_Func_Output_OutPosition; bool Constant17 = true; Context.MapSpawn.InitializeParticle.WriteLifetime = Constant17; bool Constant18 = true; Context.MapSpawn.InitializeParticle.WriteMass = Constant18; bool Constant19 = false; Context.MapSpawn.InitializeParticle.WriteSpriteRotation = Constant19; bool Constant20 = false; Context.MapSpawn.InitializeParticle.WriteScale = Constant20; float3 InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; InitializeParticle_SimulationPosition_Emitter_Func_(InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition, Context); Context.MapSpawn.Particles.Position = InitializeParticle_SimulationPosition_Emitter_Func_Output_OutPosition; bool Constant23 = true; Context.MapSpawn.InitializeParticle.WriteMaterialRandom = Constant23; float Constant24 = 0; float Constant25 = 1; int Constant26 = -1; int Constant27 = 0; bool Constant28 = false; float RandomRangeFloat_Func_Output_Result; RandomRangeFloat_Func_(Constant24, Constant25, Constant26, Constant27, Constant28, RandomRangeFloat_Func_Output_Result, Context); Context.MapSpawn.InitializeParticle.MaterialRandom = RandomRangeFloat_Func_Output_Result; EnterStatScope(1 /**InitializeParticle_Emitter_Func_*/); InitializeParticle_Emitter_Func_(Context); ExitStatScope(/**InitializeParticle_Emitter_Func_*/); bool Constant42 = false; Context.MapSpawn.TorusLocation.OverrideRandomness = Constant42; int Constant43 = 0; Context.MapSpawn.TorusLocation.RandomnessMode = Constant43; bool Constant44 = false; Context.MapSpawn.TorusLocation.OverrideSeed = Constant44; bool Constant45 = false; Context.MapSpawn.TorusLocation.FixedRandomSeed = Constant45; float Constant46 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomRadius = Constant46; float Constant47 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomU = Constant47; float Constant48 = (0.0); Context.MapSpawn.Local.TorusLocation.RandomV = Constant48; float3 Constant49 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusVector = Constant49; float3 Constant50 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusTangent = Constant50; float3 Constant51 = float3(0.0, 0.0, 0.0); Context.MapSpawn.Local.TorusLocation.TorusNormal = Constant51; bool Constant52 = false; Context.MapSpawn.TorusLocation.EnableScale = Constant52; int Constant53 = 2; Context.MapSpawn.TorusLocation.CoordinateSpace = Constant53; Context.MapSpawn.TorusLocation.TorusOrigin = Context.MapSpawn.Particles.Position; EnterStatScope(2 /**TorusLocation_Emitter_Func_*/); TorusLocation_Emitter_Func_(Context); ExitStatScope(/**TorusLocation_Emitter_Func_*/); Context.MapSpawn.SetVariables_619FBC7841F4E96144B94D92F32F22FE.Particles.Direction = Context.MapSpawn.Particles.Position; EnterStatScope(3 /**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_(Context); ExitStatScope(/**SetVariables_619FBC7841F4E96144B94D92F32F22FE_Emitter_Func_*/); //End Spawn Script! // Begin HandleMissingDefaultValues Context.MapSpawn.Particles.PreviousVelocity = Context.MapSpawn.Particles.Velocity; // End HandleMissingDefaultValues } void SimulateMapUpdate(inout FSimulationContext Context) { //Begin Update Script! bool Constant86 = true; Context.MapUpdate.DataInstance.Alive = Constant86; Context.MapUpdate.ParticleState.DeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.ParticleState.Lifetime = Context.MapUpdate.Particles.Lifetime; EnterStatScope(4 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant90 = false; int Constant91 = (0); float Constant92 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.AgeAdvancement = Constant92; float Constant93 = (0.0); Context.MapUpdate.Local.CurlNoiseForce.DeterministicOffset = Constant93; bool Constant94 = true; Context.MapUpdate.CurlNoiseForce.SamplePosition = Context.MapUpdate.Particles.Position; float3 Constant95 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SamplePosition = Constant95; float3 Constant96 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.CurlNoiseForce.SampledNoise = Constant96; float Constant97 = 1; Context.MapUpdate.Local.CurlNoiseForce.Falloff = Constant97; Context.MapUpdate.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.MapUpdate.Particles.Velocity; float3 Constant98 = float3(0,0,0); Context.MapUpdate.Transient.PhysicsForce = Constant98; EnterStatScope(5 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant91, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); Context.MapUpdate.Transient.PhysicsDeltaTime = Context.MapUpdate.Engine.DeltaTime; Context.MapUpdate.SolveForcesAndVelocity.DeltaTime = Context.MapUpdate.Transient.PhysicsDeltaTime; float Constant104 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.DeltaTime = Constant104; Context.MapUpdate.SolveForcesAndVelocity.Force = Context.MapUpdate.Transient.PhysicsForce; Context.MapUpdate.SolveForcesAndVelocity.Velocity = Context.MapUpdate.Particles.Velocity; Context.MapUpdate.SolveForcesAndVelocity.Mass = Context.MapUpdate.Particles.Mass; float3 Constant105 = float3(0.0, 0.0, 0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.PhysicsForce = Constant105; float3 Constant106 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant106; float Constant107 = (0.0); Context.MapUpdate.Local.SolveForcesAndVelocity.Mass = Constant107; float Constant108 = 0; Context.MapUpdate.Transient.PhysicsDrag = Constant108; Context.MapUpdate.SolveForcesAndVelocity.PreviousVelocity = Context.MapUpdate.Particles.PreviousVelocity; Context.MapUpdate.SolveForcesAndVelocity.Position = Context.MapUpdate.Particles.Position; float3 Constant109 = float3(0.0, 0.0, 0.0); Context.MapUpdate.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant109; bool Constant110 = true; Context.MapUpdate.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant110; EnterStatScope(6 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(7 /**ScratchModule_Emitter_Func_*/); ScratchModule_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_Emitter_Func_*/); //End Update Script! } void SimulateMain() { EnterStatScope(8 /**SpawnScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.MapSpawn.Particles.Age = 0.0f; Context.MapSpawn.Particles.Color.r = 0.0f; Context.MapSpawn.Particles.Color.g = 0.0f; Context.MapSpawn.Particles.Color.b = 0.0f; Context.MapSpawn.Particles.Color.a = 0.0f; Context.MapSpawn.Particles.Direction.x = 0.0f; Context.MapSpawn.Particles.Direction.y = 0.0f; Context.MapSpawn.Particles.Direction.z = 0.0f; Context.MapSpawn.Particles.Lifetime = 0.0f; Context.MapSpawn.Particles.Mass = 0.0f; Context.MapSpawn.Particles.MaterialRandom = 0.0f; Context.MapSpawn.Particles.NormalizedAge = 0.0f; Context.MapSpawn.Particles.Position.x = 0.0f; Context.MapSpawn.Particles.Position.y = 0.0f; Context.MapSpawn.Particles.Position.z = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.x = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.y = 0.0f; Context.MapSpawn.Particles.PreviousVelocity.z = 0.0f; Context.MapSpawn.Particles.Scale.x = 0.0f; Context.MapSpawn.Particles.Scale.y = 0.0f; Context.MapSpawn.Particles.Scale.z = 0.0f; Context.MapSpawn.Particles.SpriteRotation = 0.0f; Context.MapSpawn.Particles.SpriteSize.x = 0.0f; Context.MapSpawn.Particles.SpriteSize.y = 0.0f; Context.MapSpawn.Particles.UniqueID = 0; Context.MapSpawn.Particles.Velocity.x = 0.0f; Context.MapSpawn.Particles.Velocity.y = 0.0f; Context.MapSpawn.Particles.Velocity.z = 0.0f; Context.MapSpawn.Particles.UniqueID = Engine_Emitter_TotalSpawnedParticles + ExecIndex(); Context.MapSpawn.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapSpawn.Constants.Emitter.InitializeParticle.Lifetime = Constants_Emitter_InitializeParticle_Lifetime; Context.MapSpawn.Constants.Emitter.InitializeParticle.Color = Constants_Emitter_InitializeParticle_Color; Context.MapSpawn.Constants.Emitter.InitializeParticle.Mass = Constants_Emitter_InitializeParticle_Mass; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteSize = Constants_Emitter_InitializeParticle_SpriteSize; Context.MapSpawn.Constants.Emitter.InitializeParticle.SpriteRotation = Constants_Emitter_InitializeParticle_SpriteRotation; Context.MapSpawn.Constants.Emitter.InitializeParticle.MeshScale = Constants_Emitter_InitializeParticle_MeshScale; Context.MapSpawn.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapSpawn.Engine.System.TickCount = Engine_System_TickCount; Context.MapSpawn.Constants.Emitter.TorusLocation.SurfacePosition = Constants_Emitter_TorusLocation_SurfacePosition; Context.MapSpawn.Constants.Emitter.TorusLocation.UDistribution = Constants_Emitter_TorusLocation_UDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.VDistribution = Constants_Emitter_TorusLocation_VDistribution; Context.MapSpawn.Constants.Emitter.TorusLocation.RandomSeed = Constants_Emitter_TorusLocation_RandomSeed; Context.MapSpawn.Constants.Emitter.TorusLocation.HandleRadius = Constants_Emitter_TorusLocation_HandleRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.LargeRadius = Constants_Emitter_TorusLocation_LargeRadius; Context.MapSpawn.Constants.Emitter.TorusLocation.NonUniformScale = Constants_Emitter_TorusLocation_NonUniformScale; Context.MapSpawn.Constants.Emitter.TorusLocation.TorusAxis = Constants_Emitter_TorusLocation_TorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.NormalizedAngleAroundTorusAxis = Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis; Context.MapSpawn.Constants.Emitter.TorusLocation.Offset = Constants_Emitter_TorusLocation_Offset; Context.MapSpawn.Constants.Emitter.TorusLocation.SpawnGroupMask = Constants_Emitter_TorusLocation_SpawnGroupMask; Context.MapSpawn.Engine.Owner.SystemLocalToWorld = Engine_Owner_SystemLocalToWorld; Context.MapSpawn.Engine.Owner.SystemWorldToLocal = Engine_Owner_SystemWorldToLocal; Context.MapSpawn.Engine.Owner.SystemLocalToWorldNoScale = Engine_Owner_SystemLocalToWorldNoScale; Context.MapSpawn.Engine.Owner.SystemWorldToLocalNoScale = Engine_Owner_SystemWorldToLocalNoScale; Context.MapUpdate.Engine.DeltaTime = Engine_DeltaTime; Context.MapUpdate.Emitter.Age = Emitter_Age; Context.MapUpdate.Engine.Time = Engine_Time; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.MapUpdate.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.MapUpdate.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.MapUpdate.Emitter.RandomSeed = Emitter_RandomSeed; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.MapUpdate.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.MapUpdate.Constants.Emitter.ScratchModule.NormalaizedPosition = Constants_Emitter_ScratchModule_NormalaizedPosition; Context.MapUpdate.Constants.Emitter.ScratchModule.Radius = Constants_Emitter_ScratchModule_Radius; Context.MapUpdate.Engine.InverseDeltaTime = Engine_InverseDeltaTime; Context.MapUpdate.Engine.ExecutionCount = Engine_ExecutionCount; Context.MapUpdate.Emitter.SpawnRate = Emitter_SpawnRate; Context.MapUpdate.Emitter.SpawnInterval = Emitter_SpawnInterval; Context.MapUpdate.Emitter.InterpSpawnStartDt = Emitter_InterpSpawnStartDt; Context.MapUpdate.Emitter.SpawnGroup = Emitter_SpawnGroup; Context.MapUpdate.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; ReadDataSets(Context); InterpolateParameters(Context); SimulateMapSpawn(Context); //Begin Transfer of Attributes! Context.MapUpdate.Particles = Context.MapSpawn.Particles; //End Transfer of Attributes! SimulateMapUpdate(Context); WriteDataSets(Context); { bool bValid = Context.MapUpdate.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.MapUpdate.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.MapUpdate.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.MapUpdate.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.MapUpdate.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.MapUpdate.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.MapUpdate.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.MapUpdate.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.MapUpdate.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.MapUpdate.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.MapUpdate.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.MapUpdate.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.MapUpdate.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.MapUpdate.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.MapUpdate.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.MapUpdate.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.MapUpdate.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.MapUpdate.Particles.Scale.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.MapUpdate.Particles.Scale.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.MapUpdate.Particles.Scale.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.MapUpdate.Particles.SpriteRotation); OutputDataFloat(0, 22, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.MapUpdate.Particles.SpriteSize.y); OutputDataInt(0, 24, TmpWriteIndex, Context.MapUpdate.Particles.UniqueID); OutputDataFloat(0, 25, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.MapUpdate.Particles.Velocity.z); } ExitStatScope(/**SpawnScript_Main*/); } \\ ------------------------------- Summary ------------------------------- Num Byte Code Ops: 152 Num Constants: 401 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_Owner_TimeSinceRendered 20 | Engine_Owner_LODDistance 24 | Engine_Owner_LODDistanceFraction 28 | Engine_System_Age 32 | Engine_Owner_ExecutionState 36 | Engine_System_TickCount 40 | Engine_System_NumEmitters 44 | Engine_System_NumEmittersAlive 48 | Engine_Owner_SystemLocalToWorldRow0x 52 | Engine_Owner_SystemLocalToWorldRow0y 56 | Engine_Owner_SystemLocalToWorldRow0z 60 | Engine_Owner_SystemLocalToWorldRow0w 64 | Engine_Owner_SystemLocalToWorldRow1x 68 | Engine_Owner_SystemLocalToWorldRow1y 72 | Engine_Owner_SystemLocalToWorldRow1z 76 | Engine_Owner_SystemLocalToWorldRow1w 80 | Engine_Owner_SystemLocalToWorldRow2x 84 | Engine_Owner_SystemLocalToWorldRow2y 88 | Engine_Owner_SystemLocalToWorldRow2z 92 | Engine_Owner_SystemLocalToWorldRow2w 96 | Engine_Owner_SystemLocalToWorldRow3x 100 | Engine_Owner_SystemLocalToWorldRow3y 104 | Engine_Owner_SystemLocalToWorldRow3z 108 | Engine_Owner_SystemLocalToWorldRow3w 112 | Engine_Owner_SystemWorldToLocalRow0x 116 | Engine_Owner_SystemWorldToLocalRow0y 120 | Engine_Owner_SystemWorldToLocalRow0z 124 | Engine_Owner_SystemWorldToLocalRow0w 128 | Engine_Owner_SystemWorldToLocalRow1x 132 | Engine_Owner_SystemWorldToLocalRow1y 136 | Engine_Owner_SystemWorldToLocalRow1z 140 | Engine_Owner_SystemWorldToLocalRow1w 144 | Engine_Owner_SystemWorldToLocalRow2x 148 | Engine_Owner_SystemWorldToLocalRow2y 152 | Engine_Owner_SystemWorldToLocalRow2z 156 | Engine_Owner_SystemWorldToLocalRow2w 160 | Engine_Owner_SystemWorldToLocalRow3x 164 | Engine_Owner_SystemWorldToLocalRow3y 168 | Engine_Owner_SystemWorldToLocalRow3z 172 | Engine_Owner_SystemWorldToLocalRow3w 176 | Engine_Owner_SystemLocalToWorldTransposedRow0x 180 | Engine_Owner_SystemLocalToWorldTransposedRow0y 184 | Engine_Owner_SystemLocalToWorldTransposedRow0z 188 | Engine_Owner_SystemLocalToWorldTransposedRow0w 192 | Engine_Owner_SystemLocalToWorldTransposedRow1x 196 | Engine_Owner_SystemLocalToWorldTransposedRow1y 200 | Engine_Owner_SystemLocalToWorldTransposedRow1z 204 | Engine_Owner_SystemLocalToWorldTransposedRow1w 208 | Engine_Owner_SystemLocalToWorldTransposedRow2x 212 | Engine_Owner_SystemLocalToWorldTransposedRow2y 216 | Engine_Owner_SystemLocalToWorldTransposedRow2z 220 | Engine_Owner_SystemLocalToWorldTransposedRow2w 224 | Engine_Owner_SystemLocalToWorldTransposedRow3x 228 | Engine_Owner_SystemLocalToWorldTransposedRow3y 232 | Engine_Owner_SystemLocalToWorldTransposedRow3z 236 | Engine_Owner_SystemLocalToWorldTransposedRow3w 240 | Engine_Owner_SystemWorldToLocalTransposedRow0x 244 | Engine_Owner_SystemWorldToLocalTransposedRow0y 248 | Engine_Owner_SystemWorldToLocalTransposedRow0z 252 | Engine_Owner_SystemWorldToLocalTransposedRow0w 256 | Engine_Owner_SystemWorldToLocalTransposedRow1x 260 | Engine_Owner_SystemWorldToLocalTransposedRow1y 264 | Engine_Owner_SystemWorldToLocalTransposedRow1z 268 | Engine_Owner_SystemWorldToLocalTransposedRow1w 272 | Engine_Owner_SystemWorldToLocalTransposedRow2x 276 | Engine_Owner_SystemWorldToLocalTransposedRow2y 280 | Engine_Owner_SystemWorldToLocalTransposedRow2z 284 | Engine_Owner_SystemWorldToLocalTransposedRow2w 288 | Engine_Owner_SystemWorldToLocalTransposedRow3x 292 | Engine_Owner_SystemWorldToLocalTransposedRow3y 296 | Engine_Owner_SystemWorldToLocalTransposedRow3z 300 | Engine_Owner_SystemWorldToLocalTransposedRow3w 304 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 308 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 312 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 316 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 320 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 324 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 328 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 332 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 368 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 372 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 376 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 380 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 384 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 388 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 392 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 396 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 432 | Engine_Owner_Rotationx 436 | Engine_Owner_Rotationy 440 | Engine_Owner_Rotationz 444 | Engine_Owner_Rotationw 448 | Engine_Owner_Positionx 452 | Engine_Owner_Positiony 456 | Engine_Owner_Positionz 460 | Engine_Owner_Positionw 464 | Engine_Owner_Velocityx 468 | Engine_Owner_Velocityy 472 | Engine_Owner_Velocityz 476 | Engine_Owner_Velocityw 480 | Engine_Owner_SystemXAxisx 484 | Engine_Owner_SystemXAxisy 488 | Engine_Owner_SystemXAxisz 492 | Engine_Owner_SystemXAxisw 496 | Engine_Owner_SystemYAxisx 500 | Engine_Owner_SystemYAxisy 504 | Engine_Owner_SystemYAxisz 508 | Engine_Owner_SystemYAxisw 512 | Engine_Owner_SystemZAxisx 516 | Engine_Owner_SystemZAxisy 520 | Engine_Owner_SystemZAxisz 524 | Engine_Owner_SystemZAxisw 528 | Engine_Owner_Scalex 532 | Engine_Owner_Scaley 536 | Engine_Owner_Scalez 540 | Engine_Owner_Scalew 544 | Engine_Emitter_NumParticles 548 | Engine_Emitter_TotalSpawnedParticles 552 | Engine_Emitter_SpawnCountScale 556 | Emitter_Age 560 | Emitter_RandomSeed 564 | Engine_Emitter_PaddingInt32_0 568 | Engine_Emitter_PaddingInt32_1 572 | Engine_Emitter_PaddingInt32_2 576 | Constants_Emitter_InitializeParticle_Lifetime 580 | Constants_Emitter_InitializeParticle_Colorx 584 | Constants_Emitter_InitializeParticle_Colory 588 | Constants_Emitter_InitializeParticle_Colorz 592 | Constants_Emitter_InitializeParticle_Colorw 596 | Constants_Emitter_InitializeParticle_Mass 600 | Constants_Emitter_InitializeParticle_SpriteSizex 604 | Constants_Emitter_InitializeParticle_SpriteSizey 608 | Constants_Emitter_InitializeParticle_SpriteRotation 612 | Constants_Emitter_InitializeParticle_MeshScalex 616 | Constants_Emitter_InitializeParticle_MeshScaley 620 | Constants_Emitter_InitializeParticle_MeshScalez 624 | Constants_Emitter_TorusLocation_SurfacePosition 628 | Constants_Emitter_TorusLocation_UDistribution 632 | Constants_Emitter_TorusLocation_VDistribution 636 | Constants_Emitter_TorusLocation_RandomSeed 640 | Constants_Emitter_TorusLocation_HandleRadius 644 | Constants_Emitter_TorusLocation_LargeRadius 648 | Constants_Emitter_TorusLocation_NonUniformScalex 652 | Constants_Emitter_TorusLocation_NonUniformScaley 656 | Constants_Emitter_TorusLocation_NonUniformScalez 660 | Constants_Emitter_TorusLocation_TorusAxisx 664 | Constants_Emitter_TorusLocation_TorusAxisy 668 | Constants_Emitter_TorusLocation_TorusAxisz 672 | Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 676 | Constants_Emitter_TorusLocation_Offsetx 680 | Constants_Emitter_TorusLocation_Offsety 684 | Constants_Emitter_TorusLocation_Offsetz 688 | Constants_Emitter_TorusLocation_SpawnGroupMask 692 | Constants_Emitter_CurlNoiseForce_RandomSeed 696 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 700 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 704 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 708 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 712 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 716 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 720 | Constants_Emitter_CurlNoiseForce_NoiseStrength 724 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 728 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 732 | Constants_Emitter_ScratchModule_NormalaizedPosition 736 | Constants_Emitter_ScratchModule_Radius 740 | Engine_ExecutionCount 744 | Emitter_SpawnRate 748 | Emitter_SpawnInterval 752 | Emitter_InterpSpawnStartDt 756 | Emitter_SpawnGroup 760 | PREV_Engine_DeltaTime 764 | PREV_Engine_InverseDeltaTime 768 | PREV_Engine_Time 772 | PREV_Engine_RealTime 776 | PREV_Engine_Owner_TimeSinceRendered 780 | PREV_Engine_Owner_LODDistance 784 | PREV_Engine_Owner_LODDistanceFraction 788 | PREV_Engine_System_Age 792 | PREV_Engine_Owner_ExecutionState 796 | PREV_Engine_System_TickCount 800 | PREV_Engine_System_NumEmitters 804 | PREV_Engine_System_NumEmittersAlive 808 | PREV_Engine_Owner_SystemLocalToWorldRow0x 812 | PREV_Engine_Owner_SystemLocalToWorldRow0y 816 | PREV_Engine_Owner_SystemLocalToWorldRow0z 820 | PREV_Engine_Owner_SystemLocalToWorldRow0w 824 | PREV_Engine_Owner_SystemLocalToWorldRow1x 828 | PREV_Engine_Owner_SystemLocalToWorldRow1y 832 | PREV_Engine_Owner_SystemLocalToWorldRow1z 836 | PREV_Engine_Owner_SystemLocalToWorldRow1w 840 | PREV_Engine_Owner_SystemLocalToWorldRow2x 844 | PREV_Engine_Owner_SystemLocalToWorldRow2y 848 | PREV_Engine_Owner_SystemLocalToWorldRow2z 852 | PREV_Engine_Owner_SystemLocalToWorldRow2w 856 | PREV_Engine_Owner_SystemLocalToWorldRow3x 860 | PREV_Engine_Owner_SystemLocalToWorldRow3y 864 | PREV_Engine_Owner_SystemLocalToWorldRow3z 868 | PREV_Engine_Owner_SystemLocalToWorldRow3w 872 | PREV_Engine_Owner_SystemWorldToLocalRow0x 876 | PREV_Engine_Owner_SystemWorldToLocalRow0y 880 | PREV_Engine_Owner_SystemWorldToLocalRow0z 884 | PREV_Engine_Owner_SystemWorldToLocalRow0w 888 | PREV_Engine_Owner_SystemWorldToLocalRow1x 892 | PREV_Engine_Owner_SystemWorldToLocalRow1y 896 | PREV_Engine_Owner_SystemWorldToLocalRow1z 900 | PREV_Engine_Owner_SystemWorldToLocalRow1w 904 | PREV_Engine_Owner_SystemWorldToLocalRow2x 908 | PREV_Engine_Owner_SystemWorldToLocalRow2y 912 | PREV_Engine_Owner_SystemWorldToLocalRow2z 916 | PREV_Engine_Owner_SystemWorldToLocalRow2w 920 | PREV_Engine_Owner_SystemWorldToLocalRow3x 924 | PREV_Engine_Owner_SystemWorldToLocalRow3y 928 | PREV_Engine_Owner_SystemWorldToLocalRow3z 932 | PREV_Engine_Owner_SystemWorldToLocalRow3w 936 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0x 940 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0y 944 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0z 948 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow0w 952 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1x 956 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1y 960 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1z 964 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow1w 968 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2x 972 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2y 976 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2z 980 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow2w 984 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3x 988 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3y 992 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3z 996 | PREV_Engine_Owner_SystemLocalToWorldTransposedRow3w 1000 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0x 1004 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0y 1008 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0z 1012 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow0w 1016 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1x 1020 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1y 1024 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1z 1028 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow1w 1032 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2x 1036 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2y 1040 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2z 1044 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow2w 1048 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3x 1052 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3y 1056 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3z 1060 | PREV_Engine_Owner_SystemWorldToLocalTransposedRow3w 1064 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0x 1068 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0y 1072 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0z 1076 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow0w 1080 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1x 1084 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1y 1088 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1z 1092 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow1w 1096 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2x 1100 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2y 1104 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2z 1108 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow2w 1112 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3x 1116 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3y 1120 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3z 1124 | PREV_Engine_Owner_SystemLocalToWorldNoScaleRow3w 1128 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0x 1132 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0y 1136 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0z 1140 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow0w 1144 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1x 1148 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1y 1152 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1z 1156 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow1w 1160 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2x 1164 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2y 1168 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2z 1172 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow2w 1176 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3x 1180 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3y 1184 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3z 1188 | PREV_Engine_Owner_SystemWorldToLocalNoScaleRow3w 1192 | PREV_Engine_Owner_Rotationx 1196 | PREV_Engine_Owner_Rotationy 1200 | PREV_Engine_Owner_Rotationz 1204 | PREV_Engine_Owner_Rotationw 1208 | PREV_Engine_Owner_Positionx 1212 | PREV_Engine_Owner_Positiony 1216 | PREV_Engine_Owner_Positionz 1220 | PREV_Engine_Owner_Positionw 1224 | PREV_Engine_Owner_Velocityx 1228 | PREV_Engine_Owner_Velocityy 1232 | PREV_Engine_Owner_Velocityz 1236 | PREV_Engine_Owner_Velocityw 1240 | PREV_Engine_Owner_SystemXAxisx 1244 | PREV_Engine_Owner_SystemXAxisy 1248 | PREV_Engine_Owner_SystemXAxisz 1252 | PREV_Engine_Owner_SystemXAxisw 1256 | PREV_Engine_Owner_SystemYAxisx 1260 | PREV_Engine_Owner_SystemYAxisy 1264 | PREV_Engine_Owner_SystemYAxisz 1268 | PREV_Engine_Owner_SystemYAxisw 1272 | PREV_Engine_Owner_SystemZAxisx 1276 | PREV_Engine_Owner_SystemZAxisy 1280 | PREV_Engine_Owner_SystemZAxisz 1284 | PREV_Engine_Owner_SystemZAxisw 1288 | PREV_Engine_Owner_Scalex 1292 | PREV_Engine_Owner_Scaley 1296 | PREV_Engine_Owner_Scalez 1300 | PREV_Engine_Owner_Scalew 1304 | PREV_Engine_Emitter_NumParticles 1308 | PREV_Engine_Emitter_TotalSpawnedParticles 1312 | PREV_Engine_Emitter_SpawnCountScale 1316 | PREV_Emitter_Age 1320 | PREV_Emitter_RandomSeed 1324 | PREV_Engine_Emitter_PaddingInt32_0 1328 | PREV_Engine_Emitter_PaddingInt32_1 1332 | PREV_Engine_Emitter_PaddingInt32_2 1336 | PREV_Constants_Emitter_InitializeParticle_Lifetime 1340 | PREV_Constants_Emitter_InitializeParticle_Colorx 1344 | PREV_Constants_Emitter_InitializeParticle_Colory 1348 | PREV_Constants_Emitter_InitializeParticle_Colorz 1352 | PREV_Constants_Emitter_InitializeParticle_Colorw 1356 | PREV_Constants_Emitter_InitializeParticle_Mass 1360 | PREV_Constants_Emitter_InitializeParticle_SpriteSizex 1364 | PREV_Constants_Emitter_InitializeParticle_SpriteSizey 1368 | PREV_Constants_Emitter_InitializeParticle_SpriteRotation 1372 | PREV_Constants_Emitter_InitializeParticle_MeshScalex 1376 | PREV_Constants_Emitter_InitializeParticle_MeshScaley 1380 | PREV_Constants_Emitter_InitializeParticle_MeshScalez 1384 | PREV_Constants_Emitter_TorusLocation_SurfacePosition 1388 | PREV_Constants_Emitter_TorusLocation_UDistribution 1392 | PREV_Constants_Emitter_TorusLocation_VDistribution 1396 | PREV_Constants_Emitter_TorusLocation_RandomSeed 1400 | PREV_Constants_Emitter_TorusLocation_HandleRadius 1404 | PREV_Constants_Emitter_TorusLocation_LargeRadius 1408 | PREV_Constants_Emitter_TorusLocation_NonUniformScalex 1412 | PREV_Constants_Emitter_TorusLocation_NonUniformScaley 1416 | PREV_Constants_Emitter_TorusLocation_NonUniformScalez 1420 | PREV_Constants_Emitter_TorusLocation_TorusAxisx 1424 | PREV_Constants_Emitter_TorusLocation_TorusAxisy 1428 | PREV_Constants_Emitter_TorusLocation_TorusAxisz 1432 | PREV_Constants_Emitter_TorusLocation_NormalizedAngleAroundTorusAxis 1436 | PREV_Constants_Emitter_TorusLocation_Offsetx 1440 | PREV_Constants_Emitter_TorusLocation_Offsety 1444 | PREV_Constants_Emitter_TorusLocation_Offsetz 1448 | PREV_Constants_Emitter_TorusLocation_SpawnGroupMask 1452 | PREV_Constants_Emitter_CurlNoiseForce_RandomSeed 1456 | PREV_Constants_Emitter_CurlNoiseForce_NoiseFrequency 1460 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 1464 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 1468 | PREV_Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 1472 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 1476 | PREV_Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 1480 | PREV_Constants_Emitter_CurlNoiseForce_NoiseStrength 1484 | PREV_Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 1488 | PREV_Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 1492 | PREV_Constants_Emitter_ScratchModule_NormalaizedPosition 1496 | PREV_Constants_Emitter_ScratchModule_Radius 1500 | PREV_Engine_ExecutionCount 1504 | PREV_Emitter_SpawnRate 1508 | PREV_Emitter_SpawnInterval 1512 | PREV_Emitter_InterpSpawnStartDt 1516 | PREV_Emitter_SpawnGroup 1520 | 8 1524 | 1 1528 | 2 1532 | 0 1536 | 999 1540 | 6.28318548 1544 | 4 1548 | 9.99999975e-06 1552 | 9.99999975e-05 1556 | True 1560 | False 1564 | 5 1568 | 1664525 1572 | 1013904223 1576 | 16777215 1580 | 16777216 1584 | 4096 1588 | 125 1592 | 6 1596 | 7 1600 | 0 ------------------------------- Byte Code (152 Ops) ------------------------------- 0 | OP_85(C[1520]); 1 | R[0] = OP_82; 2 | R[1] = OP_44(C[548], R[0]); 3 | R[0] = OP_82; 4 | R[2] = OP_72(R[0]); 5 | R[0] = OP_5(C[748], R[2], C[752]); 6 | R[2] = OP_2(C[0], R[0]); 7 | R[0] = OP_35(C[1524]); 8 | OP_85(C[1528]); 9 | R[3] = OP_28(C[624], C[1532], C[1536]); 10 | R[4] = OP_2(C[1524], R[3]); 11 | R[5] = OP_35(R[4]); 12 | R[4] = OP_1(R[3], R[5]); 13 | R[3] = OP_28(C[628], C[1532], C[1524]); 14 | R[5] = OP_2(C[1524], R[3]); 15 | R[6] = OP_35(R[5]); 16 | R[5] = OP_1(R[3], R[6]); 17 | R[3] = OP_28(C[632], C[1532], C[1524]); 18 | R[6] = OP_2(C[1524], R[3]); 19 | R[7] = OP_35(R[6]); 20 | R[6] = OP_1(R[3], R[7]); 21 | R[3] = OP_9(R[4]); 22 | R[4] = OP_3(R[3], C[640]); 23 | R[3] = OP_3(R[6], C[1540]); 24 | R[7] = OP_17(R[3]); 25 | R[3] = OP_5(R[4], R[7], C[644]); 26 | R[7] = OP_3(R[5], C[1540]); 27 | R[8] = OP_17(R[7]); 28 | R[7] = OP_3(R[3], R[8]); 29 | R[8] = OP_3(R[5], C[1540]); 30 | R[5] = OP_16(R[8]); 31 | R[8] = OP_3(R[3], R[5]); 32 | R[3] = OP_3(R[6], C[1540]); 33 | R[5] = OP_16(R[3]); 34 | R[3] = OP_3(R[4], R[5]); 35 | R[4] = OP_1(R[7], C[676]); 36 | R[5] = OP_1(R[8], C[680]); 37 | R[6] = OP_1(R[3], C[684]); 38 | OP_86; 39 | OP_85(C[1544]); 40 | R[3] = OP_30(C[576], C[1548]); 41 | R[7] = OP_2(R[3], C[1552]); 42 | R[8] = OP_37(R[2], R[7]); 43 | R[7] = OP_43(R[8], C[1556], C[1560]); 44 | R[8] = OP_4(R[2], R[3]); 45 | OP_86; 46 | OP_85(C[1564]); 47 | R[3] = OP_46(C[692], C[1568]); 48 | R[9] = OP_46(C[560], C[1568]); 49 | R[10] = OP_46(C[1564], C[1568]); 50 | R[11] = OP_44(R[3], C[1572]); 51 | R[3] = OP_44(R[9], C[1572]); 52 | R[9] = OP_44(R[10], C[1572]); 53 | R[10] = OP_46(R[3], R[9]); 54 | R[12] = OP_44(R[11], R[10]); 55 | R[10] = OP_46(R[9], R[12]); 56 | R[11] = OP_44(R[3], R[10]); 57 | R[3] = OP_46(R[12], R[11]); 58 | R[10] = OP_44(R[9], R[3]); 59 | R[3] = OP_46(R[11], R[10]); 60 | R[9] = OP_44(R[12], R[3]); 61 | R[3] = OP_46(R[10], R[9]); 62 | R[12] = OP_44(R[11], R[3]); 63 | R[3] = OP_46(R[9], R[12]); 64 | R[11] = OP_44(R[10], R[3]); 65 | R[3] = OP_66(R[9], C[1520]); 66 | R[9] = OP_66(R[12], C[1520]); 67 | R[10] = OP_66(R[11], C[1520]); 68 | R[11] = OP_61(R[3], C[1576]); 69 | R[3] = OP_61(R[9], C[1576]); 70 | R[9] = OP_61(R[10], C[1576]); 71 | R[10] = OP_72(R[11]); 72 | R[11] = OP_72(R[3]); 73 | R[3] = OP_72(R[9]); 74 | R[9] = OP_4(R[10], C[1580]); 75 | R[3] = OP_5(R[9], C[1584], R[4]); 76 | R[10] = OP_5(R[9], C[1584], R[5]); 77 | R[11] = OP_5(R[9], C[1584], R[6]); 78 | R[9] = OP_3(R[3], C[696]); 79 | R[3] = OP_3(R[10], C[696]); 80 | R[10] = OP_3(R[11], C[696]); 81 | R[11] = OP_3(C[700], C[8]); 82 | R[12] = OP_3(C[704], C[8]); 83 | R[13] = OP_3(C[708], C[8]); 84 | R[14] = OP_2(R[9], R[11]); 85 | R[9] = OP_2(R[3], R[12]); 86 | R[3] = OP_2(R[10], R[13]); 87 | R[10] = OP_3(R[14], C[1588]); 88 | R[11] = OP_3(R[9], C[1588]); 89 | R[9] = OP_3(R[3], C[1588]); 90 | SampleField_EmitterVectorField32[func0](R[10], R[11], R[9], R[3], R[12], R[13]); 91 | R[9] = OP_3(R[3], C[720]); 92 | R[3] = OP_3(R[12], C[720]); 93 | R[10] = OP_3(R[13], C[720]); 94 | OP_86; 95 | OP_85(C[1592]); 96 | R[11] = OP_30(C[596], C[1552]); 97 | R[12] = OP_7(R[11]); 98 | R[11] = OP_3(R[12], R[9]); 99 | R[9] = OP_3(R[12], R[3]); 100 | R[3] = OP_3(R[12], R[10]); 101 | R[10] = OP_3(R[11], R[2]); 102 | R[11] = OP_3(R[9], R[2]); 103 | R[9] = OP_3(R[3], R[2]); 104 | OP_86; 105 | OP_85(C[1596]); 106 | AudioSpectrum_EmitterNewAudioSpectrum[func1](C[732], C[1600], R[3]); 107 | R[12] = OP_3(R[5], R[5]); 108 | R[13] = OP_5(R[4], R[4], R[12]); 109 | R[12] = OP_5(R[6], R[6], R[13]); 110 | R[13] = OP_8(R[12]); 111 | R[12] = OP_3(R[4], R[13]); 112 | R[14] = OP_3(R[5], R[13]); 113 | R[15] = OP_3(R[6], R[13]); 114 | R[13] = OP_3(R[12], C[736]); 115 | R[12] = OP_3(R[14], C[736]); 116 | R[14] = OP_3(R[15], C[736]); 117 | R[15] = OP_3(R[3], R[13]); 118 | R[13] = OP_3(R[3], R[12]); 119 | R[12] = OP_3(R[3], R[14]); 120 | SampleColorCurve_EmitterColor[func2](R[3], R[14], R[16], R[17], R[18]); 121 | OP_86; 122 | [R][3] = AcquireIndex(0, [R][7]); 123 | OutputData(0, 0, [R][3], [R][2]); 124 | OutputData(0, 1, [R][3], [R][14]); 125 | OutputData(0, 2, [R][3], [R][16]); 126 | OutputData(0, 3, [R][3], [R][17]); 127 | OutputData(0, 4, [R][3], [R][18]); 128 | OutputData(0, 5, [R][3], [R][4]); 129 | OutputData(0, 6, [R][3], [R][5]); 130 | OutputData(0, 7, [R][3], [R][6]); 131 | OutputData(0, 8, [R][3], [C][576]); 132 | OutputData(0, 9, [R][3], [C][596]); 133 | OutputData(0, 10, [R][3], [R][0]); 134 | OutputData(0, 11, [R][3], [R][8]); 135 | OutputData(0, 12, [R][3], [R][15]); 136 | OutputData(0, 13, [R][3], [R][13]); 137 | OutputData(0, 14, [R][3], [R][12]); 138 | OutputData(0, 15, [R][3], [R][10]); 139 | OutputData(0, 16, [R][3], [R][11]); 140 | OutputData(0, 17, [R][3], [R][9]); 141 | OutputData(0, 18, [R][3], [C][1524]); 142 | OutputData(0, 19, [R][3], [C][1524]); 143 | OutputData(0, 20, [R][3], [C][1524]); 144 | OutputData(0, 21, [R][3], [C][1532]); 145 | OutputData(0, 22, [R][3], [C][600]); 146 | OutputData(0, 23, [R][3], [C][604]); 147 | OutputData(0, 24, [R][3], [R][1]); 148 | OutputData(0, 25, [R][3], [R][10]); 149 | OutputData(0, 26, [R][3], [R][11]); 150 | OutputData(0, 27, [R][3], [R][9]); 151 | OP_86; ------------------------------- ({|^1^X #<$@j)'LM %<$@j)'LM <$@j)'LM <$@j)'LM2BMGF1[ &%@j)'%@j)'%@j)' %@j)'%@j)'%@j)' %@j)'$%@j)'(%@j)',%@j)'14\0o:@F==C<FzDTPNiagaraScript /Niagara/DefaultAssets/DefaultEmitter.DefaultEmitter:UpdateScriptaw o M-RعeQ+(1-Emitter.LocalspaceGPUComputeSim<A1\:) $%R'ɈW=6EJ1$ /J 1\|tSJiAj́cS1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh P1\W47-$ 4ި ?1\^-k\ض\kRS*1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\j3s j|*!1\W47-$ 4ި ?1\5uqߥQ+bVYS1\VMh Z/br1\%$@ϕpObHTp1\%$@ϕpObHTp1\ o(|D Ţ1\K-e+c301\mf56VA1\2ڿpLg_.W1\Vb>( pt`:K1\Vb>( pt`:K1\Vb>( pt`:K1\SRh%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)' 1 <$@j)'K15KLMHM:<$@j)'K1Kal1~?1\E%@j)'?1\g%@j)'1?1\k%@j)':QMLM@M (SMTMZM2 LMHM%<$@j)'K1Kai1~?1\l%@j)'?1\`%@j)'1?1\>%@j)'%QMLM@M (SMTMZM2 LMHM3<$@j)'K1UK 91r=?1\%@j)'?1\%@j)'?1\g%@j)'1?1\0%@j)'3QMLM@M (SMTMZM2 LMHMc1cMl:1M15N931M15Ni%1M15N13201 YY// Shader generated by Niagara HLSL Translator struct NiagaraID { int Index; int AcquireTag; }; cbuffer FNiagaraGlobalParameters { float Engine_DeltaTime; float Engine_InverseDeltaTime; float Engine_Time; float Engine_RealTime; } cbuffer FNiagaraSystemParameters { float Engine_Owner_TimeSinceRendered; float Engine_Owner_LODDistance; float Engine_Owner_LODDistanceFraction; float Engine_System_Age; int Engine_Owner_ExecutionState; int Engine_System_TickCount; int Engine_System_NumEmitters; int Engine_System_NumEmittersAlive; } cbuffer FNiagaraOwnerParameters { float4x4 Engine_Owner_SystemLocalToWorld; float4x4 Engine_Owner_SystemWorldToLocal; float4x4 Engine_Owner_SystemLocalToWorldTransposed; float4x4 Engine_Owner_SystemWorldToLocalTransposed; float4x4 Engine_Owner_SystemLocalToWorldNoScale; float4x4 Engine_Owner_SystemWorldToLocalNoScale; float4 Engine_Owner_Rotation; float4 Engine_Owner_Position; float4 Engine_Owner_Velocity; float4 Engine_Owner_SystemXAxis; float4 Engine_Owner_SystemYAxis; float4 Engine_Owner_SystemZAxis; float4 Engine_Owner_Scale; } cbuffer FNiagaraEmitterParameters { int Engine_Emitter_NumParticles; int Engine_Emitter_TotalSpawnedParticles; float Engine_Emitter_SpawnCountScale; float Emitter_Age; int Emitter_RandomSeed; int Engine_Emitter_PaddingInt32_0; int Engine_Emitter_PaddingInt32_1; int Engine_Emitter_PaddingInt32_2; } cbuffer FNiagaraExternalParameters { int Constants_Emitter_CurlNoiseForce_RandomSeed; float Constants_Emitter_CurlNoiseForce_NoiseFrequency; float3 Constants_Emitter_CurlNoiseForce_PanNoiseField; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; float Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; float Constants_Emitter_CurlNoiseForce_NoiseStrength; float Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; float Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; float Constants_Emitter_ScratchModule_NormalaizedPosition; float Constants_Emitter_ScratchModule_Radius; } struct FParamMap0_Transient { float PhysicsDeltaTime; float PhysicsDrag; float3 PhysicsForce; }; struct FParamMap0_SolveForcesAndVelocity { float AccelerationLimit; float DeltaTime; float3 Force; float Mass; float3 Position; float3 PreviousVelocity; float SpeedLimit; float3 Velocity; bool WritetoIntrinsicProperties; }; struct FParamMap0_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_ParticleState { float DeltaTime; float Lifetime; }; struct FParamMap0_Particles { float Age; float4 Color; float3 Direction; float Lifetime; float Mass; float MaterialRandom; float NormalizedAge; float3 Position; float3 PreviousVelocity; float3 Scale; float SpriteRotation; float2 SpriteSize; int UniqueID; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity { float IncomingPhysicsDrag; float3 IncomingPhysicsForce; float3 Position; float3 Velocity; }; struct FParamMap0_OUTPUT_VAR_ParticleState { bool FirstFrame; }; struct FParamMap0_OUTPUT_VAR { FParamMap0_OUTPUT_VAR_ParticleState ParticleState; FParamMap0_OUTPUT_VAR_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Local_SolveForcesAndVelocity { float DeltaTime; float Mass; float3 PhysicsForce; }; struct FParamMap0_Local_CurlNoiseForce { float AgeAdvancement; float DeterministicOffset; float Falloff; float3 SampledNoise; float3 SamplePosition; }; struct FParamMap0_Local { FParamMap0_Local_CurlNoiseForce CurlNoiseForce; FParamMap0_Local_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Engine_System { float Age; int NumEmitters; int NumEmittersAlive; int TickCount; }; struct FParamMap0_Engine_Owner { int ExecutionState; float LODDistance; float LODDistanceFraction; float3 Position; float4 Rotation; float3 Scale; float4x4 SystemLocalToWorld; float4x4 SystemLocalToWorldNoScale; float4x4 SystemLocalToWorldTransposed; float4x4 SystemWorldToLocal; float4x4 SystemWorldToLocalNoScale; float4x4 SystemWorldToLocalTransposed; float3 SystemXAxis; float3 SystemYAxis; float3 SystemZAxis; float TimeSinceRendered; float3 Velocity; }; struct FParamMap0_Engine_Emitter { int NumParticles; int PaddingInt32_0; int PaddingInt32_1; int PaddingInt32_2; float SpawnCountScale; int TotalSpawnedParticles; }; struct FParamMap0_Engine { float DeltaTime; FParamMap0_Engine_Emitter Emitter; float InverseDeltaTime; FParamMap0_Engine_Owner Owner; float RealTime; FParamMap0_Engine_System System; float Time; }; struct FParamMap0_Emitter { float Age; bool LocalSpace; int RandomSeed; }; struct FParamMap0_DataInstance { bool Alive; }; struct FParamMap0_CurlNoiseForce { float CurlNoiseConeMaskAngle; float3 CurlNoiseConeMaskAxis; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; float3 SamplePosition; }; struct FParamMap0_Constants_Emitter_SolveForcesAndVelocity { float AccelerationLimit; float SpeedLimit; }; struct FParamMap0_Constants_Emitter_ScratchModule { float NormalaizedPosition; float Radius; }; struct FParamMap0_Constants_Emitter_CurlNoiseForce { float CurlNoiseConeMaskAngle; float CurlNoiseConeMaskFalloffAngle; float NoiseFrequency; float NoiseStrength; float3 PanNoiseField; int RandomSeed; }; struct FParamMap0_Constants_Emitter { FParamMap0_Constants_Emitter_CurlNoiseForce CurlNoiseForce; FParamMap0_Constants_Emitter_ScratchModule ScratchModule; FParamMap0_Constants_Emitter_SolveForcesAndVelocity SolveForcesAndVelocity; }; struct FParamMap0_Constants { FParamMap0_Constants_Emitter Emitter; }; struct FParamMap0 { FParamMap0_Constants Constants; FParamMap0_CurlNoiseForce CurlNoiseForce; FParamMap0_DataInstance DataInstance; FParamMap0_Emitter Emitter; FParamMap0_Engine Engine; FParamMap0_Local Local; FParamMap0_OUTPUT_VAR OUTPUT_VAR; FParamMap0_Particles Particles; FParamMap0_ParticleState ParticleState; FParamMap0_ScratchModule ScratchModule; FParamMap0_SolveForcesAndVelocity SolveForcesAndVelocity; FParamMap0_Transient Transient; }; struct FSimulationContext { FParamMap0 Map; }; static float HackSpawnInterp = 1.0; void ParticleState_Emitter_Func_(inout FSimulationContext Context); void SampleField_EmitterVectorField32(float3 In_SamplePoint, out float3 Out_SampledValue); void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context); void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context); void AudioSpectrum_EmitterNewAudioSpectrum(float In_NormalizedPositionInSpectrum, int In_ChannelIndex, out float Out_Amplitude); void SampleColorCurve_EmitterColor(float In_X, out float4 Out_Value); void ScratchModule_Emitter_Func_(inout FSimulationContext Context); float GetSpawnInterpolation(); void ParticleState_Emitter_Func_(inout FSimulationContext Context) { bool Result = NiagaraAll(Context.Map.Particles.Age <= Context.Map.Engine.DeltaTime); Context.Map.OUTPUT_VAR.ParticleState.FirstFrame = Result; float Result1 = Context.Map.Particles.Age + Context.Map.ParticleState.DeltaTime; float Constant1 = 1e-05; float Result2 = max(Context.Map.ParticleState.Lifetime, Constant1); float Constant2 = 0.0001; float Result3 = Result2 - Constant2; bool Result4 = NiagaraAll(Result1 < Result3); bool Constant3 = false; bool bool_IfResult; if(Result4) { bool_IfResult = Context.Map.DataInstance.Alive; } else { bool_IfResult = Constant3; } float Result5 = Result1 / Result2; Context.Map.DataInstance.Alive = bool_IfResult; Context.Map.Particles.Age = Result1; Context.Map.Particles.NormalizedAge = Result5; } void CurlNoiseForce_Emitter_Func_(int In_Emitter_RandomSeed, inout FSimulationContext Context) { bool Constant13 = false; float AgeAdvancement_IfResult; if(Constant13) { AgeAdvancement_IfResult = Context.Map.Emitter.Age; } else { AgeAdvancement_IfResult = Context.Map.Engine.Time; } float Constant14 = 4096; int Constant15 = 0; float Result6 = rand_float(Constant14, Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed, Context.Map.Emitter.RandomSeed, Constant15); Context.Map.Local.CurlNoiseForce.AgeAdvancement = AgeAdvancement_IfResult; Context.Map.Local.CurlNoiseForce.DeterministicOffset = Result6; Context.Map.Local.CurlNoiseForce.SamplePosition = Context.Map.CurlNoiseForce.SamplePosition; float3 Result7 = Context.Map.Local.CurlNoiseForce.DeterministicOffset + Context.Map.Local.CurlNoiseForce.SamplePosition; float3 Result8 = Result7 * Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency; float3 Result9 = Context.Map.Constants.Emitter.CurlNoiseForce.PanNoiseField * Context.Map.Local.CurlNoiseForce.AgeAdvancement; float3 Result10 = Result8 - Result9; float Constant16 = 125; float3 Result11 = Result10 * Constant16; float3 SampleField_EmitterVectorField32Output_SampledValue; SampleField_EmitterVectorField32(Result11, SampleField_EmitterVectorField32Output_SampledValue); Context.Map.Local.CurlNoiseForce.SampledNoise = SampleField_EmitterVectorField32Output_SampledValue; float Constant17 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant17; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis; float3 Result12 = Context.Map.Local.CurlNoiseForce.SampledNoise * Context.Map.Constants.Emitter.CurlNoiseForce.NoiseStrength; float3 Result13 = Context.Map.Transient.PhysicsForce + Result12; Context.Map.Transient.PhysicsForce = Result13; } void SolveForcesAndVelocity_Emitter_Func_(inout FSimulationContext Context) { Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Context.Map.SolveForcesAndVelocity.DeltaTime; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsForce = Context.Map.SolveForcesAndVelocity.Force; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.SolveForcesAndVelocity.Velocity; Context.Map.Local.SolveForcesAndVelocity.Mass = Context.Map.SolveForcesAndVelocity.Mass; float Constant25 = 0.0001; float Result14 = max(Context.Map.Local.SolveForcesAndVelocity.Mass, Constant25); float Result15 = Reciprocal(Result14); float3 Result16 = Result15 * Context.Map.Local.SolveForcesAndVelocity.PhysicsForce; Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Result16; float3 Result17 = Context.Map.Local.SolveForcesAndVelocity.PhysicsForce * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float Constant26 = 0; float Result18 = max(Context.Map.Transient.PhysicsDrag, Constant26); float Result19 = Context.Map.Local.SolveForcesAndVelocity.DeltaTime * Result18; float Constant27 = 1; float Result20 = Result19 + Constant27; float3 Result21 = Result17 / Result20; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Result21; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.IncomingPhysicsDrag = Context.Map.Transient.PhysicsDrag; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; float3 Result22 = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity * Context.Map.Local.SolveForcesAndVelocity.DeltaTime + Context.Map.SolveForcesAndVelocity.Position; Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Result22; float3 Position_IfResult; float3 Velocity_IfResult; float3 PreviousVelocity_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { Position_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity; } else { Position_IfResult = Context.Map.SolveForcesAndVelocity.Position; Velocity_IfResult = Context.Map.SolveForcesAndVelocity.Velocity; PreviousVelocity_IfResult = Context.Map.SolveForcesAndVelocity.PreviousVelocity; } Context.Map.Particles.Position = Position_IfResult; Context.Map.Particles.Velocity = Velocity_IfResult; Context.Map.Particles.PreviousVelocity = PreviousVelocity_IfResult; float3 Constant28 = float3(0,0,0); float Constant29 = 0; float3 ForceVector_IfResult; float Drag_IfResult; if(Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties) { ForceVector_IfResult = Constant28; Drag_IfResult = Constant29; } else { ForceVector_IfResult = Context.Map.Transient.PhysicsForce; Drag_IfResult = Context.Map.Transient.PhysicsDrag; } Context.Map.Transient.PhysicsForce = ForceVector_IfResult; Context.Map.Transient.PhysicsDrag = Drag_IfResult; } void ScratchModule_Emitter_Func_(inout FSimulationContext Context) { int Constant30 = 0; float AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude; AudioSpectrum_EmitterNewAudioSpectrum(Context.Map.Constants.Emitter.ScratchModule.NormalaizedPosition, Constant30, AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude); float3 Result23 = normalize(Context.Map.Particles.Direction); float3 Result24 = Result23 * Context.Map.Constants.Emitter.ScratchModule.Radius; float3 Result25 = AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude * Result24; float4 SampleColorCurve_EmitterColorOutput_Value; SampleColorCurve_EmitterColor(AudioSpectrum_EmitterNewAudioSpectrumOutput_Amplitude, SampleColorCurve_EmitterColorOutput_Value); Context.Map.Particles.Position = Result25; Context.Map.Particles.Color = SampleColorCurve_EmitterColorOutput_Value; } float GetSpawnInterpolation() { return 1.0f;} void ReadDataSets(inout FSimulationContext Context) { } void WriteDataSets(inout FSimulationContext Context) { } void Simulate(inout FSimulationContext Context) { EnterStatScope(0 /**NiagaraScript /Game/Audio5.Audio5:Empty.UpdateScript*/); //Begin Initialize Parameter Map Defaults //End Initialize Parameter Map Defaults bool Constant = true; Context.Map.DataInstance.Alive = Constant; Context.Map.ParticleState.DeltaTime = Context.Map.Engine.DeltaTime; Context.Map.ParticleState.Lifetime = Context.Map.Particles.Lifetime; EnterStatScope(1 /**ParticleState_Emitter_Func_*/); ParticleState_Emitter_Func_(Context); ExitStatScope(/**ParticleState_Emitter_Func_*/); bool Constant4 = false; int Constant5 = (0); float Constant6 = (0.0); Context.Map.Local.CurlNoiseForce.AgeAdvancement = Constant6; float Constant7 = (0.0); Context.Map.Local.CurlNoiseForce.DeterministicOffset = Constant7; bool Constant8 = true; Context.Map.CurlNoiseForce.SamplePosition = Context.Map.Particles.Position; float3 Constant9 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SamplePosition = Constant9; float3 Constant10 = float3(0.0, 0.0, 0.0); Context.Map.Local.CurlNoiseForce.SampledNoise = Constant10; float Constant11 = 1; Context.Map.Local.CurlNoiseForce.Falloff = Constant11; Context.Map.CurlNoiseForce.CurlNoiseConeMaskAxis = Context.Map.Particles.Velocity; float3 Constant12 = float3(0,0,0); Context.Map.Transient.PhysicsForce = Constant12; EnterStatScope(2 /**CurlNoiseForce_Emitter_Func_*/); CurlNoiseForce_Emitter_Func_(Constant5, Context); ExitStatScope(/**CurlNoiseForce_Emitter_Func_*/); Context.Map.Transient.PhysicsDeltaTime = Context.Map.Engine.DeltaTime; Context.Map.SolveForcesAndVelocity.DeltaTime = Context.Map.Transient.PhysicsDeltaTime; float Constant18 = (0.0); Context.Map.Local.SolveForcesAndVelocity.DeltaTime = Constant18; Context.Map.SolveForcesAndVelocity.Force = Context.Map.Transient.PhysicsForce; Context.Map.SolveForcesAndVelocity.Velocity = Context.Map.Particles.Velocity; Context.Map.SolveForcesAndVelocity.Mass = Context.Map.Particles.Mass; float3 Constant19 = float3(0.0, 0.0, 0.0); Context.Map.Local.SolveForcesAndVelocity.PhysicsForce = Constant19; float3 Constant20 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Velocity = Constant20; float Constant21 = (0.0); Context.Map.Local.SolveForcesAndVelocity.Mass = Constant21; float Constant22 = 0; Context.Map.Transient.PhysicsDrag = Constant22; Context.Map.SolveForcesAndVelocity.PreviousVelocity = Context.Map.Particles.PreviousVelocity; Context.Map.SolveForcesAndVelocity.Position = Context.Map.Particles.Position; float3 Constant23 = float3(0.0, 0.0, 0.0); Context.Map.OUTPUT_VAR.SolveForcesAndVelocity.Position = Constant23; bool Constant24 = true; Context.Map.SolveForcesAndVelocity.WritetoIntrinsicProperties = Constant24; EnterStatScope(3 /**SolveForcesAndVelocity_Emitter_Func_*/); SolveForcesAndVelocity_Emitter_Func_(Context); ExitStatScope(/**SolveForcesAndVelocity_Emitter_Func_*/); EnterStatScope(4 /**ScratchModule_Emitter_Func_*/); ScratchModule_Emitter_Func_(Context); ExitStatScope(/**ScratchModule_Emitter_Func_*/); ExitStatScope(/**NiagaraScript /Game/Audio5.Audio5:Empty.UpdateScript*/); } void SimulateMain() { EnterStatScope(5 /**UpdateScript_Main*/); FSimulationContext Context = (FSimulationContext)0; Context.Map.Particles.Age = InputDataFloat(0, 0); Context.Map.Particles.Color.r = InputDataFloat(0, 1); Context.Map.Particles.Color.g = InputDataFloat(0, 2); Context.Map.Particles.Color.b = InputDataFloat(0, 3); Context.Map.Particles.Color.a = InputDataFloat(0, 4); Context.Map.Particles.Direction.x = InputDataFloat(0, 5); Context.Map.Particles.Direction.y = InputDataFloat(0, 6); Context.Map.Particles.Direction.z = InputDataFloat(0, 7); Context.Map.Particles.Lifetime = InputDataFloat(0, 8); Context.Map.Particles.Mass = InputDataFloat(0, 9); Context.Map.Particles.MaterialRandom = InputDataFloat(0, 10); Context.Map.Particles.NormalizedAge = InputDataFloat(0, 11); Context.Map.Particles.Position.x = InputDataFloat(0, 12); Context.Map.Particles.Position.y = InputDataFloat(0, 13); Context.Map.Particles.Position.z = InputDataFloat(0, 14); Context.Map.Particles.PreviousVelocity.x = InputDataFloat(0, 15); Context.Map.Particles.PreviousVelocity.y = InputDataFloat(0, 16); Context.Map.Particles.PreviousVelocity.z = InputDataFloat(0, 17); Context.Map.Particles.Scale.x = InputDataFloat(0, 18); Context.Map.Particles.Scale.y = InputDataFloat(0, 19); Context.Map.Particles.Scale.z = InputDataFloat(0, 20); Context.Map.Particles.SpriteRotation = InputDataFloat(0, 21); Context.Map.Particles.SpriteSize.x = InputDataFloat(0, 22); Context.Map.Particles.SpriteSize.y = InputDataFloat(0, 23); Context.Map.Particles.UniqueID = InputDataInt(0, 24); Context.Map.Particles.Velocity.x = InputDataFloat(0, 25); Context.Map.Particles.Velocity.y = InputDataFloat(0, 26); Context.Map.Particles.Velocity.z = InputDataFloat(0, 27); Context.Map.Engine.DeltaTime = Engine_DeltaTime; Context.Map.Emitter.Age = Emitter_Age; Context.Map.Engine.Time = Engine_Time; Context.Map.Constants.Emitter.CurlNoiseForce.RandomSeed = Constants_Emitter_CurlNoiseForce_RandomSeed; Context.Map.Engine.Owner.Position = Engine_Owner_Position.xyz; Context.Map.Constants.Emitter.CurlNoiseForce.NoiseFrequency = Constants_Emitter_CurlNoiseForce_NoiseFrequency; Context.Map.Constants.Emitter.CurlNoiseForce.PanNoiseField = Constants_Emitter_CurlNoiseForce_PanNoiseField; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle; Context.Map.Constants.Emitter.CurlNoiseForce.CurlNoiseConeMaskFalloffAngle = Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle; Context.Map.Constants.Emitter.CurlNoiseForce.NoiseStrength = Constants_Emitter_CurlNoiseForce_NoiseStrength; Context.Map.Emitter.RandomSeed = Emitter_RandomSeed; Context.Map.Constants.Emitter.SolveForcesAndVelocity.SpeedLimit = Constants_Emitter_SolveForcesAndVelocity_SpeedLimit; Context.Map.Constants.Emitter.SolveForcesAndVelocity.AccelerationLimit = Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit; Context.Map.Constants.Emitter.ScratchModule.NormalaizedPosition = Constants_Emitter_ScratchModule_NormalaizedPosition; Context.Map.Constants.Emitter.ScratchModule.Radius = Constants_Emitter_ScratchModule_Radius; Context.Map.Engine.Emitter.TotalSpawnedParticles = Engine_Emitter_TotalSpawnedParticles; ReadDataSets(Context); Simulate(Context); WriteDataSets(Context); { bool bValid = Context.Map.DataInstance.Alive; int TmpWriteIndex = OutputIndex(0, true, bValid); OutputDataFloat(0, 0, TmpWriteIndex, Context.Map.Particles.Age); OutputDataFloat(0, 1, TmpWriteIndex, Context.Map.Particles.Color.r); OutputDataFloat(0, 2, TmpWriteIndex, Context.Map.Particles.Color.g); OutputDataFloat(0, 3, TmpWriteIndex, Context.Map.Particles.Color.b); OutputDataFloat(0, 4, TmpWriteIndex, Context.Map.Particles.Color.a); OutputDataFloat(0, 5, TmpWriteIndex, Context.Map.Particles.Direction.x); OutputDataFloat(0, 6, TmpWriteIndex, Context.Map.Particles.Direction.y); OutputDataFloat(0, 7, TmpWriteIndex, Context.Map.Particles.Direction.z); OutputDataFloat(0, 8, TmpWriteIndex, Context.Map.Particles.Lifetime); OutputDataFloat(0, 9, TmpWriteIndex, Context.Map.Particles.Mass); OutputDataFloat(0, 10, TmpWriteIndex, Context.Map.Particles.MaterialRandom); OutputDataFloat(0, 11, TmpWriteIndex, Context.Map.Particles.NormalizedAge); OutputDataFloat(0, 12, TmpWriteIndex, Context.Map.Particles.Position.x); OutputDataFloat(0, 13, TmpWriteIndex, Context.Map.Particles.Position.y); OutputDataFloat(0, 14, TmpWriteIndex, Context.Map.Particles.Position.z); OutputDataFloat(0, 15, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.x); OutputDataFloat(0, 16, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.y); OutputDataFloat(0, 17, TmpWriteIndex, Context.Map.Particles.PreviousVelocity.z); OutputDataFloat(0, 18, TmpWriteIndex, Context.Map.Particles.Scale.x); OutputDataFloat(0, 19, TmpWriteIndex, Context.Map.Particles.Scale.y); OutputDataFloat(0, 20, TmpWriteIndex, Context.Map.Particles.Scale.z); OutputDataFloat(0, 21, TmpWriteIndex, Context.Map.Particles.SpriteRotation); OutputDataFloat(0, 22, TmpWriteIndex, Context.Map.Particles.SpriteSize.x); OutputDataFloat(0, 23, TmpWriteIndex, Context.Map.Particles.SpriteSize.y); OutputDataInt(0, 24, TmpWriteIndex, Context.Map.Particles.UniqueID); OutputDataFloat(0, 25, TmpWriteIndex, Context.Map.Particles.Velocity.x); OutputDataFloat(0, 26, TmpWriteIndex, Context.Map.Particles.Velocity.y); OutputDataFloat(0, 27, TmpWriteIndex, Context.Map.Particles.Velocity.z); } ExitStatScope(/**UpdateScript_Main*/); } .~. ------------------------------- Summary ------------------------------- Num Byte Code Ops: 133 Num Constants: 172 ------------------------------- Constant Table ------------------------------- 0 | Engine_DeltaTime 4 | Engine_InverseDeltaTime 8 | Engine_Time 12 | Engine_RealTime 16 | Engine_Owner_TimeSinceRendered 20 | Engine_Owner_LODDistance 24 | Engine_Owner_LODDistanceFraction 28 | Engine_System_Age 32 | Engine_Owner_ExecutionState 36 | Engine_System_TickCount 40 | Engine_System_NumEmitters 44 | Engine_System_NumEmittersAlive 48 | Engine_Owner_SystemLocalToWorldRow0x 52 | Engine_Owner_SystemLocalToWorldRow0y 56 | Engine_Owner_SystemLocalToWorldRow0z 60 | Engine_Owner_SystemLocalToWorldRow0w 64 | Engine_Owner_SystemLocalToWorldRow1x 68 | Engine_Owner_SystemLocalToWorldRow1y 72 | Engine_Owner_SystemLocalToWorldRow1z 76 | Engine_Owner_SystemLocalToWorldRow1w 80 | Engine_Owner_SystemLocalToWorldRow2x 84 | Engine_Owner_SystemLocalToWorldRow2y 88 | Engine_Owner_SystemLocalToWorldRow2z 92 | Engine_Owner_SystemLocalToWorldRow2w 96 | Engine_Owner_SystemLocalToWorldRow3x 100 | Engine_Owner_SystemLocalToWorldRow3y 104 | Engine_Owner_SystemLocalToWorldRow3z 108 | Engine_Owner_SystemLocalToWorldRow3w 112 | Engine_Owner_SystemWorldToLocalRow0x 116 | Engine_Owner_SystemWorldToLocalRow0y 120 | Engine_Owner_SystemWorldToLocalRow0z 124 | Engine_Owner_SystemWorldToLocalRow0w 128 | Engine_Owner_SystemWorldToLocalRow1x 132 | Engine_Owner_SystemWorldToLocalRow1y 136 | Engine_Owner_SystemWorldToLocalRow1z 140 | Engine_Owner_SystemWorldToLocalRow1w 144 | Engine_Owner_SystemWorldToLocalRow2x 148 | Engine_Owner_SystemWorldToLocalRow2y 152 | Engine_Owner_SystemWorldToLocalRow2z 156 | Engine_Owner_SystemWorldToLocalRow2w 160 | Engine_Owner_SystemWorldToLocalRow3x 164 | Engine_Owner_SystemWorldToLocalRow3y 168 | Engine_Owner_SystemWorldToLocalRow3z 172 | Engine_Owner_SystemWorldToLocalRow3w 176 | Engine_Owner_SystemLocalToWorldTransposedRow0x 180 | Engine_Owner_SystemLocalToWorldTransposedRow0y 184 | Engine_Owner_SystemLocalToWorldTransposedRow0z 188 | Engine_Owner_SystemLocalToWorldTransposedRow0w 192 | Engine_Owner_SystemLocalToWorldTransposedRow1x 196 | Engine_Owner_SystemLocalToWorldTransposedRow1y 200 | Engine_Owner_SystemLocalToWorldTransposedRow1z 204 | Engine_Owner_SystemLocalToWorldTransposedRow1w 208 | Engine_Owner_SystemLocalToWorldTransposedRow2x 212 | Engine_Owner_SystemLocalToWorldTransposedRow2y 216 | Engine_Owner_SystemLocalToWorldTransposedRow2z 220 | Engine_Owner_SystemLocalToWorldTransposedRow2w 224 | Engine_Owner_SystemLocalToWorldTransposedRow3x 228 | Engine_Owner_SystemLocalToWorldTransposedRow3y 232 | Engine_Owner_SystemLocalToWorldTransposedRow3z 236 | Engine_Owner_SystemLocalToWorldTransposedRow3w 240 | Engine_Owner_SystemWorldToLocalTransposedRow0x 244 | Engine_Owner_SystemWorldToLocalTransposedRow0y 248 | Engine_Owner_SystemWorldToLocalTransposedRow0z 252 | Engine_Owner_SystemWorldToLocalTransposedRow0w 256 | Engine_Owner_SystemWorldToLocalTransposedRow1x 260 | Engine_Owner_SystemWorldToLocalTransposedRow1y 264 | Engine_Owner_SystemWorldToLocalTransposedRow1z 268 | Engine_Owner_SystemWorldToLocalTransposedRow1w 272 | Engine_Owner_SystemWorldToLocalTransposedRow2x 276 | Engine_Owner_SystemWorldToLocalTransposedRow2y 280 | Engine_Owner_SystemWorldToLocalTransposedRow2z 284 | Engine_Owner_SystemWorldToLocalTransposedRow2w 288 | Engine_Owner_SystemWorldToLocalTransposedRow3x 292 | Engine_Owner_SystemWorldToLocalTransposedRow3y 296 | Engine_Owner_SystemWorldToLocalTransposedRow3z 300 | Engine_Owner_SystemWorldToLocalTransposedRow3w 304 | Engine_Owner_SystemLocalToWorldNoScaleRow0x 308 | Engine_Owner_SystemLocalToWorldNoScaleRow0y 312 | Engine_Owner_SystemLocalToWorldNoScaleRow0z 316 | Engine_Owner_SystemLocalToWorldNoScaleRow0w 320 | Engine_Owner_SystemLocalToWorldNoScaleRow1x 324 | Engine_Owner_SystemLocalToWorldNoScaleRow1y 328 | Engine_Owner_SystemLocalToWorldNoScaleRow1z 332 | Engine_Owner_SystemLocalToWorldNoScaleRow1w 336 | Engine_Owner_SystemLocalToWorldNoScaleRow2x 340 | Engine_Owner_SystemLocalToWorldNoScaleRow2y 344 | Engine_Owner_SystemLocalToWorldNoScaleRow2z 348 | Engine_Owner_SystemLocalToWorldNoScaleRow2w 352 | Engine_Owner_SystemLocalToWorldNoScaleRow3x 356 | Engine_Owner_SystemLocalToWorldNoScaleRow3y 360 | Engine_Owner_SystemLocalToWorldNoScaleRow3z 364 | Engine_Owner_SystemLocalToWorldNoScaleRow3w 368 | Engine_Owner_SystemWorldToLocalNoScaleRow0x 372 | Engine_Owner_SystemWorldToLocalNoScaleRow0y 376 | Engine_Owner_SystemWorldToLocalNoScaleRow0z 380 | Engine_Owner_SystemWorldToLocalNoScaleRow0w 384 | Engine_Owner_SystemWorldToLocalNoScaleRow1x 388 | Engine_Owner_SystemWorldToLocalNoScaleRow1y 392 | Engine_Owner_SystemWorldToLocalNoScaleRow1z 396 | Engine_Owner_SystemWorldToLocalNoScaleRow1w 400 | Engine_Owner_SystemWorldToLocalNoScaleRow2x 404 | Engine_Owner_SystemWorldToLocalNoScaleRow2y 408 | Engine_Owner_SystemWorldToLocalNoScaleRow2z 412 | Engine_Owner_SystemWorldToLocalNoScaleRow2w 416 | Engine_Owner_SystemWorldToLocalNoScaleRow3x 420 | Engine_Owner_SystemWorldToLocalNoScaleRow3y 424 | Engine_Owner_SystemWorldToLocalNoScaleRow3z 428 | Engine_Owner_SystemWorldToLocalNoScaleRow3w 432 | Engine_Owner_Rotationx 436 | Engine_Owner_Rotationy 440 | Engine_Owner_Rotationz 444 | Engine_Owner_Rotationw 448 | Engine_Owner_Positionx 452 | Engine_Owner_Positiony 456 | Engine_Owner_Positionz 460 | Engine_Owner_Positionw 464 | Engine_Owner_Velocityx 468 | Engine_Owner_Velocityy 472 | Engine_Owner_Velocityz 476 | Engine_Owner_Velocityw 480 | Engine_Owner_SystemXAxisx 484 | Engine_Owner_SystemXAxisy 488 | Engine_Owner_SystemXAxisz 492 | Engine_Owner_SystemXAxisw 496 | Engine_Owner_SystemYAxisx 500 | Engine_Owner_SystemYAxisy 504 | Engine_Owner_SystemYAxisz 508 | Engine_Owner_SystemYAxisw 512 | Engine_Owner_SystemZAxisx 516 | Engine_Owner_SystemZAxisy 520 | Engine_Owner_SystemZAxisz 524 | Engine_Owner_SystemZAxisw 528 | Engine_Owner_Scalex 532 | Engine_Owner_Scaley 536 | Engine_Owner_Scalez 540 | Engine_Owner_Scalew 544 | Engine_Emitter_NumParticles 548 | Engine_Emitter_TotalSpawnedParticles 552 | Engine_Emitter_SpawnCountScale 556 | Emitter_Age 560 | Emitter_RandomSeed 564 | Engine_Emitter_PaddingInt32_0 568 | Engine_Emitter_PaddingInt32_1 572 | Engine_Emitter_PaddingInt32_2 576 | Constants_Emitter_CurlNoiseForce_RandomSeed 580 | Constants_Emitter_CurlNoiseForce_NoiseFrequency 584 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldx 588 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldy 592 | Constants_Emitter_CurlNoiseForce_PanNoiseFieldz 596 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskAngle 600 | Constants_Emitter_CurlNoiseForce_CurlNoiseConeMaskFalloffAngle 604 | Constants_Emitter_CurlNoiseForce_NoiseStrength 608 | Constants_Emitter_SolveForcesAndVelocity_SpeedLimit 612 | Constants_Emitter_SolveForcesAndVelocity_AccelerationLimit 616 | Constants_Emitter_ScratchModule_NormalaizedPosition 620 | Constants_Emitter_ScratchModule_Radius 624 | 1 628 | 9.99999975e-06 632 | 9.99999975e-05 636 | True 640 | False 644 | 2 648 | 1664525 652 | 1013904223 656 | 8 660 | 16777215 664 | 16777216 668 | 4096 672 | 125 676 | 3 680 | 4 684 | 0 ------------------------------- Byte Code (133 Ops) ------------------------------- 0 | [R][0] = InputData(0, 0); 1 | [R][1] = InputData(0, 5); 2 | [R][2] = InputData(0, 6); 3 | [R][3] = InputData(0, 7); 4 | [R][4] = InputData(0, 8); 5 | [R][5] = InputData(0, 9); 6 | [R][6] = InputData(0, 10); 7 | [R][7] = InputData(0, 12); 8 | [R][8] = InputData(0, 13); 9 | [R][9] = InputData(0, 14); 10 | [R][10] = InputData(0, 18); 11 | [R][11] = InputData(0, 19); 12 | [R][12] = InputData(0, 20); 13 | [R][13] = InputData(0, 21); 14 | [R][14] = InputData(0, 22); 15 | [R][15] = InputData(0, 23); 16 | [R][16] = InputData(0, 24); 17 | [R][17] = InputData(0, 25); 18 | [R][18] = InputData(0, 26); 19 | [R][19] = InputData(0, 27); 20 | OP_85(C[624]); 21 | R[20] = OP_1(R[0], C[0]); 22 | R[0] = OP_30(R[4], C[628]); 23 | R[21] = OP_2(R[0], C[632]); 24 | R[22] = OP_37(R[20], R[21]); 25 | R[21] = OP_43(R[22], C[636], C[640]); 26 | R[22] = OP_4(R[20], R[0]); 27 | OP_86; 28 | OP_85(C[644]); 29 | R[0] = OP_46(C[576], C[648]); 30 | R[23] = OP_46(C[560], C[648]); 31 | R[24] = OP_46(C[624], C[648]); 32 | R[25] = OP_44(R[0], C[652]); 33 | R[0] = OP_44(R[23], C[652]); 34 | R[23] = OP_44(R[24], C[652]); 35 | R[24] = OP_46(R[0], R[23]); 36 | R[26] = OP_44(R[25], R[24]); 37 | R[24] = OP_46(R[23], R[26]); 38 | R[25] = OP_44(R[0], R[24]); 39 | R[0] = OP_46(R[26], R[25]); 40 | R[24] = OP_44(R[23], R[0]); 41 | R[0] = OP_46(R[25], R[24]); 42 | R[23] = OP_44(R[26], R[0]); 43 | R[0] = OP_46(R[24], R[23]); 44 | R[26] = OP_44(R[25], R[0]); 45 | R[0] = OP_46(R[23], R[26]); 46 | R[25] = OP_44(R[24], R[0]); 47 | R[0] = OP_66(R[23], C[656]); 48 | R[23] = OP_66(R[26], C[656]); 49 | R[24] = OP_66(R[25], C[656]); 50 | R[25] = OP_61(R[0], C[660]); 51 | R[0] = OP_61(R[23], C[660]); 52 | R[23] = OP_61(R[24], C[660]); 53 | R[24] = OP_72(R[25]); 54 | R[25] = OP_72(R[0]); 55 | R[0] = OP_72(R[23]); 56 | R[23] = OP_4(R[24], C[664]); 57 | R[0] = OP_5(R[23], C[668], R[7]); 58 | R[7] = OP_5(R[23], C[668], R[8]); 59 | R[8] = OP_5(R[23], C[668], R[9]); 60 | R[9] = OP_3(R[0], C[580]); 61 | R[0] = OP_3(R[7], C[580]); 62 | R[7] = OP_3(R[8], C[580]); 63 | R[8] = OP_3(C[584], C[8]); 64 | R[23] = OP_3(C[588], C[8]); 65 | R[24] = OP_3(C[592], C[8]); 66 | R[25] = OP_2(R[9], R[8]); 67 | R[8] = OP_2(R[0], R[23]); 68 | R[0] = OP_2(R[7], R[24]); 69 | R[7] = OP_3(R[25], C[672]); 70 | R[9] = OP_3(R[8], C[672]); 71 | R[8] = OP_3(R[0], C[672]); 72 | SampleField_EmitterVectorField32[func0](R[7], R[9], R[8], R[0], R[23], R[24]); 73 | R[7] = OP_3(R[0], C[604]); 74 | R[0] = OP_3(R[23], C[604]); 75 | R[8] = OP_3(R[24], C[604]); 76 | OP_86; 77 | OP_85(C[676]); 78 | R[9] = OP_30(R[5], C[632]); 79 | R[23] = OP_7(R[9]); 80 | R[9] = OP_3(R[23], R[7]); 81 | R[7] = OP_3(R[23], R[0]); 82 | R[0] = OP_3(R[23], R[8]); 83 | R[8] = OP_5(R[9], C[0], R[17]); 84 | R[9] = OP_5(R[7], C[0], R[18]); 85 | R[7] = OP_5(R[0], C[0], R[19]); 86 | OP_86; 87 | OP_85(C[680]); 88 | AudioSpectrum_EmitterNewAudioSpectrum[func1](C[616], C[684], R[0]); 89 | R[17] = OP_3(R[2], R[2]); 90 | R[18] = OP_5(R[1], R[1], R[17]); 91 | R[17] = OP_5(R[3], R[3], R[18]); 92 | R[18] = OP_8(R[17]); 93 | R[17] = OP_3(R[1], R[18]); 94 | R[19] = OP_3(R[2], R[18]); 95 | R[23] = OP_3(R[3], R[18]); 96 | R[18] = OP_3(R[17], C[620]); 97 | R[17] = OP_3(R[19], C[620]); 98 | R[19] = OP_3(R[23], C[620]); 99 | R[23] = OP_3(R[0], R[18]); 100 | R[18] = OP_3(R[0], R[17]); 101 | R[17] = OP_3(R[0], R[19]); 102 | SampleColorCurve_EmitterColor[func2](R[0], R[19], R[24], R[25], R[26]); 103 | OP_86; 104 | [R][0] = AcquireIndex(0, [R][21]); 105 | OutputData(0, 0, [R][0], [R][20]); 106 | OutputData(0, 1, [R][0], [R][19]); 107 | OutputData(0, 2, [R][0], [R][24]); 108 | OutputData(0, 3, [R][0], [R][25]); 109 | OutputData(0, 4, [R][0], [R][26]); 110 | OutputData(0, 5, [R][0], [R][1]); 111 | OutputData(0, 6, [R][0], [R][2]); 112 | OutputData(0, 7, [R][0], [R][3]); 113 | OutputData(0, 8, [R][0], [R][4]); 114 | OutputData(0, 9, [R][0], [R][5]); 115 | OutputData(0, 10, [R][0], [R][6]); 116 | OutputData(0, 11, [R][0], [R][22]); 117 | OutputData(0, 12, [R][0], [R][23]); 118 | OutputData(0, 13, [R][0], [R][18]); 119 | OutputData(0, 14, [R][0], [R][17]); 120 | OutputData(0, 15, [R][0], [R][8]); 121 | OutputData(0, 16, [R][0], [R][9]); 122 | OutputData(0, 17, [R][0], [R][7]); 123 | OutputData(0, 18, [R][0], [R][10]); 124 | OutputData(0, 19, [R][0], [R][11]); 125 | OutputData(0, 20, [R][0], [R][12]); 126 | OutputData(0, 21, [R][0], [R][13]); 127 | OutputData(0, 22, [R][0], [R][14]); 128 | OutputData(0, 23, [R][0], [R][15]); 129 | OutputData(0, 24, [R][0], [R][16]); 130 | OutputData(0, 25, [R][0], [R][8]); 131 | OutputData(0, 26, [R][0], [R][9]); 132 | OutputData(0, 27, [R][0], [R][7]); ------------------------------- ({|^1^X $<$@j)'LM %<$@j)'LM <$@j)'LM <$@j)'LM,-./012345@?1\ k%%j<ls2}XM@%%%j<ss"2}_@|%%j<ss2}_@ %%j<ss2}_+@%%j<ss2}_@K%%j<ss2}_R@c%%j<ss2}_@%%j<ss2}_@e%%j<ss2}_@E%@j)'<ss2}_@f%%j<ss2}_@%%j<ss2}_@v%%j<ss2}_@\%%j<ssk2}_@^%%j<ssk2}_@%%j<ls2}XM@]%%j<ssk2}_@_%%j<ssk2}_@ %%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@%%j<ls2}XM@%%%j<ss"2}_@V%%j<ssj2}_@d%%j<ss2}_@n%%j<ss2}_@@x%@j)'<ls2}XM@y%@j)'<ls2}XM@2%%j<ls2}XM@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@{%%j<ss2}_@w%%j<ss2}_@%@j)'<ss2}_=@1%%j<ls2}XM@%@j)'<ss2}_@ %%j<ss2}_@U%%j<ssj2}_@?1\!%%j<ls2}XM@6%%j<s2}_XM@Z%%j<ssk2}_$@&%%j<ss#2}_@%%j<ss2}_@*%%j<ss#2}_)@?1\%@j)'<ls2}XM@4%%j<ss#2}_@?1\%%j<s2}_^XM@?1\%%j<s2}_WXM@?1\%%j<s2}_[XM@)%%j<ss#2}_"@[%%j<ssk2}_<@%%j<s2}_<XM@%%j<ss2}_X@Z%%j<ss2}_@&%%j<ss"2}_@%%j<ls2}XM@D%%j<ss2}_k@$%%j<ss"2}_k@+%%j<ss#2}_,@%%j<ss2}_Y@]%%j<ss2}_5@'%%j<ss"2}_5@%%j<ss2}_@.%%j<ss"2}_@$%%j<ss#2}_*@%%j<ss2}_]@%%j<ls2}XM@~%%j<ss2}_@-%%j<ss"2}_@%%j<ss2}_\@_%%j<ss2}_;@,%%j<ss"2}_o@?1\ *%%j<ss"2}_<@%%j<ss2}_@r%%j<ss2}_H@[%%j<ss2}_&@%%j<ss2}_&@T%%j<ssS2}_@I%%j<ss2}_@\%%j<ss2}_'@%%j<ss2}_=@%%j<ss2}_@h%%j<ss2}_@/%%j<ss"2}_L@O%%j<ss2}_@%%j<ss2}_L@q%@j)'<ss2}_C@%%j<ss2}_L@%%j<ss2}_4@ %%j<ss2}_5@i%%j<ss2}_@o%%j<ss2}_A@+%%j<ss"2}_>@m%%j<ss2}_>@?%%j<ss2}_&@N%%j<ss2}_@}%%j<ss2}_@l%%j<ss2}_<@ %%j<ss2}_<@%%j<ss2}_@%%j<ss2}__@%%j<ss2}_Z@^%%j<ss2}_8@(%%j<ss"2}_9@)%%j<ss"2}_@#%%j<ss"2}_*@ %%j<s2}_.XM@%%j<ss2}_D@%%j<ss2}_E@%%j<ss2}_F@%%j<ls2}XM@T%%j<ss2}_@%@j)'<ss2}_@'%@j)'<ss#2}_@Y%%j<ss2}_@(%@j)'<ss#2}_@%%j<ss2}_@%%j<ss2}_*@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@`%@j)'<ss2}~_@*%%j<ss"2}~_<@D%@j)'<ss2}~_k@$%%j<ss"2}~_k@?1\d%%j<ss2}~_@?1\ %%%j<R2}~_@?1\n%%j<ss2}~_@@`%@j)'<ss2}~_@*%%j<ss"2}~_<@D%@j)'<ss2}~_k@$%%j<ss"2}~_k@?1\d%%j<ss2}~_@?1\ %%%j<R2}~_@?1\n%%j<ss2}~_@@`%@j)'<ss2}~_@*%%j<ss"2}~_<@D%@j)'<ss2}~_k@$%%j<ss"2}~_k@?1\d%%j<ss2}~_@?1\ %%%j<R2}~_@?1\n%%j<ss2}~_@@?1\ k%%j<ls2}XM@%%%j<ss"2}_@|%%j<ss2}_@ %%j<ss2}_+@%%j<ss2}_@E%@j)'<ss2}_@f%%j<ss2}_@\%%j<ssk2}_@^%%j<ssk2}_@%%j<ls2}XM@]%%j<ssk2}_@_%%j<ssk2}_@%%%j<ss"2}_@V%%j<ssj2}_@d%%j<ss2}_@n%%j<ss2}_@@f%%j<ssS2}_@%%j<ss2}_+@%%j<ss2}_@t%%j<ss2}_h@%%j<ss2}_m@%@j)'<ss2}_G@a%%j<ss2}_@j%%j<ss2}_@2%%j<ls2}XM@%%j<ss2}_j@?1\?%%j<ss2}_@F%%j<ss2}_@H%%j<ss2}_@G%%j<ss2}_@b%%j<ss2}_@C%%j<ss2}_7@%%j<ss2}_:@%%j<ss2}_;@A%%j<ss2}_5@%%j<ss2}_@B%%j<ss2}_6@%%j<ss2}_5@M%%j<ss2}_@X%%j<ss2}_@W%%j<ss2}_@J%%j<ss2}_@s%%j<ss2}_f@%%j<ls2}XM@%%j<ss2}_Q@%%j<ss2}_U@%%j<ss2}_@%%j<ss2}_0@U%%j<ss2}_@%%j<ss2}_O@ %%j<ss2}_@%%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_V@%%j<ss2}_P@%%j<ss2}_@g%%j<ss2}_@%%j<ss2}_@%%j<ss2}_a@%%j<ss2}_d@%%j<ss2}_e@,%%j<ls2}XM@-%%j<ls2}XM@.%%j<ls2}XM@/%%j<ls2}XM@x%%j<ss2}_@?1\2y%%j<ls2}XM@?1\z%%j<ls2}XM@%%j<ss2}_@@%%j<ss2}_*@u%%j<ss2}_@0%%j<ls2}XM@7%%j<ls2}XM@8%%j<ls2}XM@9%%j<ls2}XM@Q%%j<ss2}_@R%%j<ss2}_@S%%j<ss2}_@%%j<ss2}_@{%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@!%%j<ss2}_c@L%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_b@p%%j<ss2}_B@V%%j<ss2}_@w%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@P%%j<ss2}_@%%j<ls2}XM@c%%j<ss2}_@v%%j<ss2}_@%@j)'<ss2}_=@1%%j<ls2}XM@%%j<ss2}_@%%j<ss2}_&@%%j<ss2}_=@%%j<ss2}_E@%%j<ss2}_F@T%%j<ss2}_@Y%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%@j)'<ss2}_@%%j<ss2}_@%%j<ss2}_@K%%j<ss2}_R@%%j<ss2}_@e%%j<ss2}_@%%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@}%@j)'<ls2}XM@~%@j)'<ls2}XM@U%%j<ssj2}_@?1\!%%j<ls2}XM@6%%j<s2}_XM@Z%%j<ssk2}_$@&%%j<ss#2}_@*%%j<ss#2}_)@?1\%@j)'<ls2}XM@4%%j<ss#2}_@?1\%%j<s2}_^XM@?1\%%j<s2}_WXM@?1\%%j<s2}_[XM@)%%j<ss#2}_"@[%%j<ssk2}_<@%%j<s2}_<XM@%%j<ss2}_X@Z%%j<ss2}_@&%%j<ss"2}_@%%j<ls2}XM@D%%j<ss2}_k@$%%j<ss"2}_k@+%%j<ss#2}_,@%%j<ss2}_Y@]%%j<ss2}_5@'%%j<ss"2}_5@%%j<ss2}_@.%%j<ss"2}_@$%%j<ss#2}_*@%%j<ss2}_]@%%j<ls2}XM@~%%j<ss2}_@-%%j<ss"2}_@%%j<ss2}_\@_%%j<ss2}_;@,%%j<ss"2}_o@?1\ *%%j<ss"2}_<@%%j<ss2}_@r%%j<ss2}_H@[%%j<ss2}_&@T%%j<ssS2}_@I%%j<ss2}_@\%%j<ss2}_'@i%%j<ss2}_@%%j<ss2}_@h%%j<ss2}_@/%%j<ss"2}_L@O%%j<ss2}_@%%j<ss2}_L@q%@j)'<ss2}_C@%%j<ss2}_L@%%j<ss2}_4@ %%j<ss2}_5@N%%j<ss2}_@o%%j<ss2}_A@+%%j<ss"2}_>@m%%j<ss2}_>@?%%j<ss2}_&@}%%j<ss2}_@l%%j<ss2}_<@ %%j<ss2}_<@%%j<ss2}_@%%j<ss2}__@%%j<ss2}_Z@^%%j<ss2}_8@(%%j<ss"2}_9@)%%j<ss"2}_@#%%j<ss"2}_*@ %%j<s2}_.XM@%%j<ls2}XM@%%j<ss2}_D@%@j)'<ss2}_@'%@j)'<ss#2}_@(%@j)'<ss#2}_@%%j<ss2}_*@'%@j)'<ss#2}_@%@j)'<ss2}_=@%%j<ss2}_*@%%j<ss2}_@%%j<ls2}XM@/%%j<ss"2}_L@O%%j<ss2}_@%%j<ss2}_L@%%j<ss2}_4@%%j<ss2}_@%%j<ss2}_L@ %%j<ss2}_5@%%j<ls2}XM@r%%j<ss2}_H@%%j<ss2}_@}%%j<ss2}_@+%%j<ss"2}_>@m%%j<ss2}_>@?%%j<ss2}_&@l%%j<ss2}_<@ %%j<ss2}_<@%%j<ss2}__@u%@j)'<ls2}XM@v%@j)'<ls2}XM@4%%j<ss#2}_@d%%j<ss2}_@n%%j<ss2}_@@%%j<ss2}_*@%%j<ss2}_@%%j<ss2}_,@%%j<ss2}_)@%%j<ss2}_@ %@j)'<ls2}XM@?1\%%j<ss2}_>@Y%@j)'<ssk2}_@Z%%j<ssk2}_$@f%%j<ssS2}_@%%j<ss2}_+@%%j<ss2}_@t%%j<ss2}_h@%%j<ss2}_m@%@j)'<ss2}_G@a%%j<ss2}_@j%%j<ss2}_@%%j<ss2}_j@?1\?%%j<ss2}_@6%%j<ls2}XM@F%%j<ss2}_@H%%j<ss2}_@G%%j<ss2}_@b%%j<ss2}_@C%%j<ss2}_7@%%j<ss2}_:@%%j<ss2}_;@A%%j<ss2}_5@B%%j<ss2}_6@%%j<ss2}_5@?1\%@j)'<ls2}XM@M%%j<ss2}_@X%%j<ss2}_@W%%j<ss2}_@J%%j<ss2}_@s%%j<ss2}_f@%%j<ls2}XM@%%j<ss2}_Q@%%j<ss2}_U@%%j<ss2}_0@U%%j<ss2}_@U%%j<ssj2}_@%%j<ss2}_O@ %%j<ss2}_@%%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_V@%%j<ss2}_P@%%j<ss2}_@g%%j<ss2}_@ %%j<ss2}_@%%j<ss2}_a@%%j<ss2}_d@%%j<ss2}_e@,%%j<ls2}XM@-%%j<ls2}XM@.%%j<ls2}XM@/%%j<ls2}XM@x%%j<ss2}_@?1\2y%%j<ls2}XM@%@j)'<ss2}_@?1\z%%j<ls2}XM@@%%j<ss2}_*@u%%j<ss2}_@0%%j<ls2}XM@Q%%j<ss2}_@R%%j<ss2}_@S%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%@j)'<ss2}_@!%%j<ss2}_c@L%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_b@p%%j<ss2}_B@V%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@\%%j<ss2}_'@(%@j)'<ss#2}_@P%%j<ss2}_@%%j<ls2}XM@}%@j)'<ls2}XM@~%@j)'<ls2}XM@x%@j)'<ls2}XM@y%@j)'<ls2}XM@|%%j<ss2}_@%%j<ls2}XM@V%%j<ssj2}_@2%%j<ls2}XM@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@{%%j<ss2}_@ %%j<ss2}_+@w%%j<ss2}_@1%%j<ls2}XM@?1\!%%j<ls2}XM@?1\%%j<ls2}XM@?1\%%j<ls2}XM@?1\%%j<ls2}XM@)%%j<ss#2}_"@[%%j<ssk2}_<@%%j<ls2}XM@%%j<ss2}_X@$%%j<ss#2}_*@Z%%j<ss2}_@&%%j<ss"2}_@D%%j<ss2}_k@$%%j<ss"2}_k@%%j<ss2}_Y@]%%j<ss2}_5@'%%j<ss"2}_5@%%j<ss2}_@.%%j<ss"2}_@%%j<ss2}_]@&%%j<ss#2}_@~%%j<ss2}_@-%%j<ss"2}_@%%j<ss2}_\@_%%j<ss2}_;@,%%j<ss"2}_o@*%%j<ss"2}_<@%%j<ss2}_Z@^%%j<ss2}_8@(%%j<ss"2}_9@%%j<ss2}_@[%%j<ss2}_&@%%j<ss2}_&@%%j<ss2}_=@h%%j<ss2}_@q%@j)'<ss2}_C@i%%j<ss2}_@o%%j<ss2}_A@N%%j<ss2}_@%%j<ss2}_D@%%j<ss2}_E@%%j<ss2}_F@T%%j<ssS2}_@T%%j<ss2}_@Y%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@K%%j<ss2}_R@c%%j<ss2}_@%%j<ss2}_@e%%j<ss2}_@+%%j<ss#2}_,@E%@j)'<ss2}_@f%%j<ss2}_@%%j<ss2}_@v%%j<ss2}_@\%%j<ssk2}_@^%%j<ssk2}_@]%%j<ssk2}_@_%%j<ssk2}_@ %%j<ss2}_@ %%j<ss2}_@*%%j<ss#2}_)@ %%j<ss2}_@ %%j<ss2}_@%%j<ls2}XM@%%%j<ss"2}_@#%%j<ss"2}_*@%%j<ss2}_@ %%j<ls2}XM@I%%j<ss2}_@)%%j<ss"2}_@%%j<ls2}XM@?1\ k%%j<ls2}XM@%%%j<ss"2}_@|%%j<ss2}_@ %%j<ss2}_+@%%j<ss2}_@K%%j<ss2}_R@c%%j<ss2}_@%%j<ss2}_@e%%j<ss2}_@E%@j)'<ss2}_@f%%j<ss2}_@%%j<ss2}_@v%%j<ss2}_@\%%j<ssk2}_@^%%j<ssk2}_@%%j<ls2}XM@]%%j<ssk2}_@_%%j<ssk2}_@ %%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@ %%j<ss2}_@%%j<ls2}XM@%%%j<ss"2}_@u%@j)'<ls2}XM@v%@j)'<ls2}XM@V%%j<ssj2}_@d%%j<ss2}_@n%%j<ss2}_@@f%%j<ssS2}_@%%j<ss2}_+@%%j<ss2}_@t%%j<ss2}_h@%%j<ss2}_m@%@j)'<ss2}_G@a%%j<ss2}_@j%%j<ss2}_@2%%j<ls2}XM@%%j<ss2}_j@?1\?%%j<ss2}_@F%%j<ss2}_@H%%j<ss2}_@G%%j<ss2}_@b%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_@{%%j<ss2}_@w%%j<ss2}_@%@j)'<ss2}_=@1%%j<ls2}XM@%@j)'<ss2}_@ %%j<ss2}_@U%%j<ssj2}_@?1\!%%j<ls2}XM@6%%j<s2}_XM@Z%%j<ssk2}_$@&%%j<ss#2}_@%%j<ss2}_@*%%j<ss#2}_)@?1\%@j)'<ls2}XM@4%%j<ss#2}_@?1\%%j<s2}_^XM@?1\%%j<s2}_WXM@?1\%%j<s2}_[XM@)%%j<ss#2}_"@[%%j<ssk2}_<@%%j<s2}_<XM@%%j<ss2}_X@Z%%j<ss2}_@&%%j<ss"2}_@%%j<ls2}XM@D%%j<ss2}_k@$%%j<ss"2}_k@+%%j<ss#2}_,@%%j<ss2}_Y@]%%j<ss2}_5@'%%j<ss"2}_5@%%j<ss2}_@.%%j<ss"2}_@$%%j<ss#2}_*@%%j<ss2}_]@%%j<ls2}XM@~%%j<ss2}_@-%%j<ss"2}_@%%j<ss2}_\@_%%j<ss2}_;@,%%j<ss"2}_o@?1\ *%%j<ss"2}_<@%%j<ss2}_@r%%j<ss2}_H@[%%j<ss2}_&@%%j<ss2}_&@T%%j<ssS2}_@I%%j<ss2}_@\%%j<ss2}_'@%%j<ss2}_=@%%j<ss2}_@h%%j<ss2}_@/%%j<ss"2}_L@O%%j<ss2}_@%%j<ss2}_L@q%@j)'<ss2}_C@%%j<ss2}_L@%%j<ss2}_4@ %%j<ss2}_5@i%%j<ss2}_@o%%j<ss2}_A@+%%j<ss"2}_>@m%%j<ss2}_>@?%%j<ss2}_&@N%%j<ss2}_@}%%j<ss2}_@l%%j<ss2}_<@ %%j<ss2}_<@%%j<ss2}_@%%j<ss2}__@%%j<ss2}_Z@^%%j<ss2}_8@(%%j<ss"2}_9@)%%j<ss"2}_@#%%j<ss"2}_*@ %%j<s2}_.XM@%%j<ss2}_D@%%j<ss2}_E@%%j<ss2}_F@%%j<ls2}XM@T%%j<ss2}_@%@j)'<ss2}_@'%@j)'<ss#2}_@Y%%j<ss2}_@(%@j)'<ss#2}_@%%j<ss2}_@%%j<ss2}_*@%%j<ss2}_@%%j<ss2}_@%%j<ss2}_7:0j<5Fq 7:0j<5Fq 7:0j<5Fq 2{%CF7EB070-47EB-DE89-AC35-8AA03AC5912E!99912FFB4F7A97C170826F94E5866920SizeAndCololrBySpectrum2{%CF7EB070-47EB-DE89-AC35-8AA03AC5912E!6481884B4C33A6EDEE0EC6B29354E44CSizeAndCololrBySpectrum2{%CF7EB070-47EB-DE89-AC35-8AA03AC5912E!4F2F28E24ED2DDD20EF60192DBEEDCBCSizeAndCololrBySpectrum1>1{>FTLE'_Glͅ$A#GM(wE'GYDZ "GMR&g}H ꩤl%GM'wt WB1z#/BE#?1\5%@j)'?1\S%@j)'?1\U%@j)'?1\V%@j)'?1\W%@j)'?1\Y%@j)'?1\Z%@j)'?1\[%@j)'?1\]%@j)'?1\_%@j)'?1\c%@j)'?1\d%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\%@j)'?1\ %@j)'?1\%@j)'?1\%@j)'A13/A3((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1 ( 1 (((1(1(1(1(((1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(( ( 1(1(1(1(( ( 1(1(1(1(( ( 1(1(1(1(( ( 1(1(1(1(( ( 1(1(1(1(( ( 1(1(1(1(( ( 1(1(1(1(( ( 1(1(1(1(( (1(1(1(1(( (1 (1 (1 ( 1 (((1 (1 (1 ( 1 (((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1 ( 1 (((1(1(1(1(((B1B?1\W%@j)'A1LA((1(1(1(1((-B1 B?1\W%@j)'?1\Y%@j)'?1\Z%@j)'?1\`%@j)'?1\a%@j)'?1\c%@j)'?1\d%@j)'?1\g%@j)'?1\h%@j)'A1  A ((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1Q151515151515.81wB 1wB ,1,1wB 1wB 1wB 1wB 1wB 1wB G&"NiagaraSystem /Game/Audio4.Audio4"1 B?1\ %@j)'??1\%@j)'A?1\ %@j)';?1\%@j)'@?1\ %@j)'L?1\i%@j)' B1 B ?1\*%@j)'?1\k%@j)'?1\ %@j)'?1\%@j)'?1\5%@j)'?1\9%@j)'?1\%@j)'?1\<%@j)'?1\>%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)'A1A((1(1(1(1(((1( 1(1(1(((1(1(1(1(((1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1(1(((1(1(1(1(((1(1(1(1(((RMR#$pqB1 B ?1\*%@j)'?1\k%@j)'?1\ %@j)'?1\%@j)'?1\5%@j)'?1\9%@j)'?1\%@j)'?1\<%@j)'?1\>%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)'A1A((1(1(1(1(((1( 1(1(1(((1(1(1(1(((1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1(1(((1(1(1(1(((1(1(1(1(((RMR$pq1 cB?1\a%@j)'??1\X%@j)'A?1\`%@j)';?1\S%@j)'@?1\^%@j)'L?1\b%@j)' B1 B ?1\*%@j)'?1\k%@j)'?1\ %@j)'?1\%@j)'?1\5%@j)'?1\9%@j)'?1\%@j)'?1\<%@j)'?1\>%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)'A1A((1(1(1(1(((1( 1(1(1(((1(1(1(1(((1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1(1(((1(1(1(1(((1(1(1(1(((RMR"$pqB1 B ?1\*%@j)'?1\k%@j)'?1\ %@j)'?1\%@j)'?1\5%@j)'?1\9%@j)'?1\%@j)'?1\<%@j)'?1\>%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)'A1A((1(1(1(1(((1( 1(1(1(((1(1(1(1(((1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1(1(((1(1(1(1(((1(1(1(1(((RMR$pq1B?1\%@j)'??1\%@j)'A?1\%@j)';?1\%@j)'@?1\%@j)'L?1\e%@j)' B1 B ?1\*%@j)'?1\k%@j)'?1\ %@j)'?1\%@j)'?1\5%@j)'?1\9%@j)'?1\%@j)'?1\<%@j)'?1\>%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)'A1A((1(1(1(1(((1( 1(1(1(((1(1(1(1(((1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1(1(((1(1(1(1(((1(1(1(1(((RMR%$pqB1 B ?1\*%@j)'?1\k%@j)'?1\ %@j)'?1\%@j)'?1\5%@j)'?1\9%@j)'?1\%@j)'?1\<%@j)'?1\>%@j)'?1\o%@j)'?1\%@j)'?1\%@j)'?1\+%@j)'?1\L%@j)'A1A((1(1(1(1(((1( 1(1(1(((1(1(1(1(((1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(( (1(1(1(1(((1(1(1(1(((1(1(1(1(((1(1(1(1(((1 (1 (1(1(((1(1(1(1(((1(1(1(1(((RMR$pqex#FFBrCf?IMV9$p@CڗϔOM\#Zh'Bg%2pM]V9$p@CڗϔOM\#Zh'Bg%2pM]]-h&%Aws?OM\#1 \#Llyx8PMS9f2pM]#V9$p@CڗϔOM\#Zh'Bg%2pM]*--x sb``p b``ba6 /у.!omdPax53k 5=^PIQ# V`Q&&6 %9q8U0a38$^rUkdkȬX `FLF kEًp:߮7уE|KWsibLܲ=yShcL`#g:!}ڱsy|Vgs $z3&lcacbc~gH1`΄+ěu_<䋐͉"l(~?0J#*Z_j!n;oDk ųh'߭Wf#zk"N fz}wWwϵ7olѬ\Kl;bp_էO~Quq=^1g9)hҏW "7ݳ煤chԃպMُ%i3=x?^fwwX/O}#\U]nU%z:l\=[r|<& Ȳu=ŋ ݣp[K/2lSOȸ1{lټgfMQXOߜwc6ټThFDsuE'h6ſY#ج FF$QZd %[ft .&݅é['+^$>aH_|FNjIar~ă7lrjWYw*ct'>g|gq=Ёto?O~OY:kߪ/ܸ]X)ُM[u69i]w0OᚠgS#Yj1sb·_x'ܞ*nZn?h' B>91Gsk&r\N^:Rtfj#O:Ͼɻ✵{ÜG6oL>~!Wn;j0rwc΍etmNkj׶M?Fk1Uexsɀ[:ҋH^7ol;kf҇ݘ~l,bKZӠ/%d8etcV76%(^sJkFӭwË-/0Ʌr|Bw>=C9 n?pJG{mȞP)wn^ o; MfQy0U wP<ΧxӃk}7&fوĽ#m ݶb>j~ȡxS<b2)zA_0=_t>5&J9F@Ϸ7އNDG[eCTFpMS컢^?{MlA %s!*Qg:?  Wx\^Vkəu!4}zpF`VQs%NYgv='Y]Ke=O-GHr{njJ z=qr$'q[ &kpwuv~޷bOƠ^3?PὟ# wj#U~GD;"}_L dd@p>oeBcm={fSA}|Qd#xC7E?7=z~_yI%&W1kq=j(kc Ƣ퉉&w󬔣qI7?ӪK{/6r-n:/3ۿ=NFyA@9F pΠ=Ԙ1(ǡ`{ s |R؃:ycψ?7Zbq0ё\s'3n}ұ'Noڰoο"V"dos%oc3śI"޺pd1Ŧy7Y_.sdkq\Mf`onƝOѬw;.k4O]JOy4+ZuB_<2&|;`$2|}LDxzl ǯx{7S\`ҋJɉ)ZwO6 ?q_^U^)- Xy۰rML9?TZ䅍0u}$9 kLqF97"`gn U'Z4z:'9ѠJ<ǎY:Xz왌?{#PrC ?}~'|˃?>bsĖ|IJg4d%aRO⶟x_ٹm7/Fo{.}NhL҆+gR:]n%6z6F|x7?e .mtdw?WL 9jAyT6#L5}1~i\<9Cԏ;rMRMĎر֩At[a5{燁(-5| ~79N&PWNxpP_kDşYsl `S4='\ǹ&Us؍ FE@݋aclpwɕl\>k8qf.>(Xr`B A8ʸ6 GxWT3䎭 8E70y-3o'"Ͻr'1')Fo7FKOOFrlί6±MSzթ㳞$|Fc?h} v Z֏*%mUWŇ(8>/\kBgpl>bu>#uJ|n?p>[VߧqۮAu׈K7ύġjIZ|d6Fy;cz3{.{K9?CwCJaNt϶Jc|x?k >|Y1Wlvm@sҝ#ufɪT]Ol]O~ώa3)ЙY Y" ? 3=a'`ϚCoo}ϨsHvꦹ&Q@occT5:bcN'|X};~~K~x\JZ.fߟܝ 1ۅ D5UD |=׶wޠtaeQW1q rM$Fsmc$-s'繎:#*y{ox|S~YS9~Qy $:~#YcacbxҠJTHB BG;'ɻsrRzSw+ϼ2+rJ}Dy+[f KΠ3a8bo.O:>E>o []1)Uz'zYCxSwelsm]TXq/h;0]ɧ_ͷk-Ga*--O{]g(wjQKT;8h̻2?g^:t΃nh@߹6m`;/u96pFE)p p9@D%/ >mc㻚cj8q  &)%$C(sf/\SYkX3u5/-Bɴo.>wM\sb5?&oo":ҭ< |;Ÿ̅ jli[W){N/5q'iݘ!xw.Ok$9i}൮1kgϜqg{]_jYa񅯀ZYBA1#RKHO׉e\Ӌ@IQ9}i1+񱰆X{MA}ڱGo?X?}Ƹ92s 0+1fݓst~o}8zgUh8vZ;>%ngq0IP`= /XFn`m>_'=iw_Q\yOy1tn8'G-'08kw`84% &ku99oczGռkmL?Z_{΁ cr-8Mo> 'E[3#_cROp;墑+1+'S ;ZmltM\ٟ.f9ߛ;` 1~C/_zZrq-1g4eDx$_fMχ% SXhqCEMOD{?pݍa_F8Å.q-ϛ HKM+.83ouļcw+牱>>!k?Cxq[U# YN:s)Lbhhjx%ɇCu?|SA?}X{jhRK*uŚ/4aPF̌ӬCTJ@ޞF=D Ͻ8y]hQDOfLyr?8U^oLqHF&烦Ksi L7S"^1zUC;'%>* VWݎV'ܝkN*,n > +h _$ĻX릸j&mO Gt \MZΏsMXYtJ2ƓGn*h>{w:oLFy jM: kSc83&$3csذ6 O<)*Xmc\6?sF*=ssC PhÕVV:c}YS'>|823I),S~ns䋖BE˽'b{)5y85<~ I"kql‚˘>W\}s93{& ha[3Yf4oֹ6ӞTvO'ԡ2tcjw= |oUvbCScZʚ 8ϜވĴWlw#"geOm:+g $3ˋ޼\:xjmhI+Y<ٓONtWony1-o"`4J]ᜃ&b_w- [&Gm}л*[8ǚ3 JS IDATSgufwx?z›gfvbrK>O=aG=̓x}9|A<m8MNqM_[B NJWVAhu0̾mן8a]o .Ľq9PE- @2?y stU(s#YPN_8+ T\UHn%7#ͻpe2?ѳc{Z3e>4s_ҟ1cb2bY׏ݏi ]㕁}uqFrc ~nqy0TˈwSS? NP7_bm3o7 !g@p`Ʋ͐wجMfSg S}`K˽4 T2{"rD+C!_S- 7~7+|kΑTH~婉4W:_5辈_/\0ĻFޱqaύ?k*N /OJl lc}OHGb2ڞ|w3_c_;a9|;_ RZ!ߤ3/i,Mlr>?A I Z5`LcBK;wb_0?HfƠ"Ոvc~s"N^sUM8־}kNʓk˜)7&]hv&ct8"+gG16y{DέO$F L^mL,~7˫U_8+s K\zR>;{_%pZ!P0SݜVOނ۾XڴGƵgH`\9G;1>no'Шu}i-氖#)L{n% [}wq>&W?W։>K>stͻ=H5I(9 zr{Uz]Ʌ?cIqlݧ{UtgLJ7y\tKΎ5,ׅCkssdk cqzxm$[Z?탙xyxs [5mLXkg4-^'7}]NCq?n.>;J_f$q|y_@roBN^\'vbAŨ+<yѷ ;ڎb]Se5N--t5MpopO I#>KANB)>'Țx2X6O"1~!K.Z>s\\T;lF$F ?92w.7hy/,]c7iF!ÜqXS W=W/ޜ֓c Ik/v-(>扞{,™9$v} GHcN1nO[T%+[;Xȍ}.?fjOS~^9V6RcY|Yec=6$wD3ݾUo,;Ҥ:{XEF[;}8 ?vܷlkv;}:xdm*^)争ض©.% 啈ˏ/lqI DR9 xAyommtN+%ICۣD+qHۏ/~E-"/si2s$)SSm|dlpF;)u<85\1q>rs<Ş>fMcLc^ykp'!O_ɹ9אA(ו1~ 3KMwNZk~ugެǖ1ɀF<=5.\;uc >gF;N`eкy2zk(?vV&M9\N)"؇K= فv֟?걊.|)q-3އB v'f[10f 7V 9kaU]շJc{^vkF]c2&%_QL?c(;4Jj31tnԓL %̎o0O\o,3c{7q8s7>'ww^>A8X~4󸓪;KِNRS$Vi㣅sTqPGz|8w"ȡܭ|B\sbg{烦}<^ kV4vcsɯ=N?oWpN\sbA&А=%=F z IW0oPIpA h'u4W\ dM,oۯzt ,sMћJ):h>f!mݟ#L!Wh[vd-ű5ca&bcTn-4!y uF%bX%a?&pq {\..bz=8uIN%M`|0Ʌl ySw,ևB9qex_8eZ&YЛ_)wr 1*}!1w Ǹ?ۑ1zJ9:5f(zo>&@xNM=Q@}9rܩs*ꚺtͅUha?X򂃋A`hS.vs0-<~g0+_`Z6'䘹=!R@χ+or.L4Egp$njCѨؔeOQ~틭κ;M;c6ǎ:.;o-/z>e G⁉1t2Zz*0IC1gN: %:imuP'Fl"TݰA1SÕu)On{X}sr1"sbܹ|p̷oqX,7VhgBtsP_jfqhzѷMg%VljJo};=D^gw5@f;60ƋG/~ 8!لʮ>rUeJl['le8ח{!J-f;+zJL PY7xpGѤ} BYg?goR?Xj]Ԕ=Vfҋ#F?\`TSoN]EhCz97Y`ٴP~4 SSو_Ö^%GFzA}m>̱}1}m+q`u2{vI|ׁwi_޶gQ65moxS//X _=Rz"̘Ű (ZR϶EDZ#b0p)sj˞JlFò?(~9"stPᩋ {#S+iB?1'wq?l[ZfoԠSb3o:6 [Ȏ K߅K'~!\SoEv8ݞ2@ݷy'UE+-ŻkOr(nS`oS'=ߵG%>as9kx]~IjCkr=bUj0sLjsHYHoj45maѐ̝'n8HƟ9}~8= 2_^˶9S۾;x_׌beS)4'p{'Hh1| ͣMVse丝0Oˊ QckaX/977n?qFZs|$&k7?cw ׭VloN.0CvXTsJ Ξ4k=0&dur+_=~C肭p0W pn$xaB{}.u6_[>^`uy;uC|;r88jq5'{rFrmCh@/[Jl܀{֛`Sfg ҂c;ԑ[^sdr_?WI,yQӼhݮ`-[ͣ!cY;NlBpy3]< +U_ ,'/`rm?A;5 J[_2$wNoɉu413p7NK# OПĭ#=F}HĒPzjB7{_fEԑRlGѠڛG]jU~.k%ٶъd ol bjdl.Ŏ+p-q)zͻ%+UH,xu躭vϡV,:C սF\nouk|!9c@gMǵZ5'-x C?9B%~09|m_e\ʫwHE͌·H[:R3lry)PnDN6?Òߵ?: iDŽp* *3\?؜8}d24=6#ZWͩ|9R1K{ /揯Og*g:K$fWgqipk9na*{t> Gr#40wMՓ>/x=ӢIۗ9%@ڿ̟BTUCX2OAd\</K| IDATִ(ߘk,=O=dwnzz@n.N ӕj^cN>̑=\D{/O]ᅂsb1|zP/,@CLtmJ;R=Be߱,GJՒ cc~|̓&XxpG t-:81@:4b(d8 ɷ^(?n⁚#rGq܃ ~[%#!] ] e|9ؖ?U`vcA8uȫ?Oq~~[A\`_09p.sbH>C/_G,Q{kg>?}tYU҇5rmG(">;{~# ]JpkG}-w̚83'.9hsY{ou$bw9› __|LtCN ֑:2+ӧ>B rۤw08S8_aFƁMyÛUEN90 .(ikm_ӵib4 .&}օ?sOߕDʵs>u%"ۿL抟127,F{=#x+z7&q GJ/-nr'8@\^/e3.qmgxw=̞3GZ؋R]1'{ANt+?i:6:/.PM\16\Kt|yOx-ɦ~$`^d pev͊^3 ^g_8SW83cpq,Bq{[^jދwaP'0}Gnjc~!%]jݍ?Np^}baITF!Bt݇.Y lX6 miVъGrm=RZBW&gg[Gé\6^]z6k꥞KZtnb2{=AyG4 `J'7jL)Cߌ09H $Pi.bŋ?u0MCWWR<`v(6o6zycdCH>e}*ǭgev+;ƙah<֟B`Y*d?3&3.P"ß&j~68{[}!9{ӄz85@K- o[p{Ty)囍\ׇwn<[y~ѓ|etkn'Wf~c18uqƵ?';u#7_r(OnRGQ|(8[9/|}07kڗr 7xc볆GFRBlBMO[PĚx<9Z9VXuܾ>c8|N&\ѭ⺓jEM9^?`4v? W(}%l26e;8s}'W tsԻIpF?-ko4"Z:=8U f?+yOl/~/~hȈ}/c!\!\J*s,)koJryģMR@HW>^95'"Xx\ӝ׵ovrw2F8/5%)W=p7)줭|buCx1 ƾ&hp,1Z:@KB#)5l[8 Zi[̱1;1QE}qcA{}^ pAg}\?:<8,~0n{kS=3 f`aD@ЉR+Wز'<y\ne0'?Kl|@#s&)ژ1o1scŁ.p1^~eo 97R;~[FW/?L)VNp/l⨑aC)U{bLK}ct8esO <#v/K1[7e%_Jty8D?Sw'66.y +gޘbAֿ7y^/ .K$ACW/!~&IgDV8bk[ih Yyȡ8e/o@i_Jyx܊gC;yM˚u S!ĢB{Dvw8E3kͼp$ף}{O=K8w%ԠOU[&;7p// 9DP 7L|C@Y.'v}7[# Ho)`}LJ{~=焙%c54?mםWs.'5#L-˞OB3~̑~_Cyl Լϋ<"OhTyOUo°HE\(5+kC]#j(ȑz;8yEW{{<~ul}{n,D=bg[dpnV͟Ht?#(Vw^|k׽޵FѰyfܚŮ-P'c n$уž [;&q\۞@t -BU{b-*n]/ܪw.>B6{e=ʡLZ&uӛB$>~_0 +a/y?vlZhJ}yln&-T+Cqޚ&^ɼ%/q.Цu]s4##Pp=HzF)] }/1XZ5Vu43jQqphs'׉3F|F**Ӥr<9u灃>bMaG=z79dip=wI>sG:@lk?:j^In%|tF-u'-"܉AP^w%3y[dnA dG^!YqX|yaNjW[]E5G'`d+v2'FO3 qs:ccܭV^rT%z>7K~rPm^՜] :ѳݓ-7#ڜ蟅p1oןX?My+XC؉&D6 g]`=ޱ>Ⓝ:QS?]8[Ӟw Ź? nvaٗ7 `1.wlGq_ p&~n[;n&y.R1>ˆ$T!NQp1I;lo+_֎-2UXbrPUUU_}Kw(~zG]|s~֘f$/jZ|x$At7JQΖ"2MHβ(GqdԂSk8t^Rv5KzŁTv(?bO cqTS5.+=S{#T|+Q|Q ~uKqEj:n DQ8?yvL3%pd$9~쩮)r7Ut JWɤ g5>Yw5G[0qg1ľ6R\wgN<.q[Jv&/wF@ۇPC) YՓ?Og|(.,dž0猍ta.9Docϳ))99׹v !cP Kk#ϕw3miX3X 䮈S(sPK<&er ^>чB$\mGëPq6/psP$xmuI8:}K92Rޮ26]i+\šE=?5]j{bخ)w'J_,M?jdzluma(9yd .c?¬8i' k(ܦG52 Gp9rG XbrZYh;|YUhoJmkBg;|DGt+ipm= };<ѬQyCTuzLcN\e:sSnJyw,Md 6=5]sW7@0.Y ;_42BXs<?$_# ApfMj{ǣFsd.[EVQ9'oaNuDc;\G^ő:]H̻'mpF.skq% :IwY%W,-Ru t6aO}zx9{q@qV.h(]/jA<7{zO3BZtHk \qސ%_ݜ`y Ǽ?}9JҥCh3 ⫯Ǝkٱ9ڏ(0E޾;.ucƿ̾/XdU-l(NZ,h&c|68Zϡ}b(|XɄ^cwˍg6*xBfs:~Q?w;.^ܢbK\6gR: K^IZt~|?Z>Zsb[6^Bw3 D=C8RŦ\ut\љ+Q?=4YyD4f &a^'.83?ȹSVGԻmG[j" ؔ]FkT}~?==~;/ɭ«t9cJT~1k,kO|\g%>a!_J\+'9rMzy}6B0 Cous|+X Swb:K7\5=A';}L[.cI$Ph#1F j'LFWAn4Q<@@c/m5c[pd액LkWHᅹr Jv|;.ldHpa ?Ϭmg w0M=`p . OsVYIꉞl"yg/%FSCbx0T`1 xyp ji|s/́/m ;8>yu|;$Mp~E={f0 CΩ I#խrBBb񉿀TykszC12E.RX`25zm7ɱ麒ƹ ?fAo ߨZF^H@UQ uzi"}x2[OjAqo_3ٗ g ՂT4Qd:y$=sa]G@ "oc[_8]yȝcɸ1?qWD"ɣ>qF+llmĄ/=J]7Td8%`Z޽J05@n^՜gi6P?,@,g:1T!, ]"X!;r~4*M?CǪ#)N _oLRnwֲ?}r?k,yMd;srE_s*[54@kbIr8\83HJ+&~ADU>3t˯zqEj\uiajY_T:o!<XSG;Z7l{ĚC/4/Of͈y<wzׄ]b 2~A\7һhHэԍuxey.]?=M=ѐ:uXk\`វDͬsfipfώ p]K!#ui3F9jʻ<γy˞o}s^nx1><< FANtإ9DP=q0'*Jq+4V>x%?ЇxT&9&UggT:BȌ:-; Qbgje4Y|4[(;3G3qBAzt3Au6xU+E\[X%oa+yK8 E>9**'79 S.T݉یZK({獍-\wo>r6Mlb+fk2 Iw,WhBQ]|vA{Lφ,`ATwziRDZS&xR+Rʄ9ۇ쉵w}&fɐ7Co?7/9GQI/@b3̱VO~`Kl}F~.1^vfԻA%55 ׎I Ԛs$4h+g]gTInp!ߴj`S\0! Bn;9'Į}g ^ 0̺^B7B\5Wt /xnp'a7qww6.KK֋Fg/kn&7rԌ,~5=>cpɻ> }#Jb螹#;b}-$&k:}Q Xӳ8&?{?*b IDATd`Re6]o5-/)&?wiM`4S,oi5F ,}̈Sж 8%>~2g0-bŗ%~ׁ(YGXt=.9wE-]&o|3ԥ%/Ї@/Ws0Ů7.N}eIa^*) M_7iLB'>T(B!:Vo= Qv\ w- 5>ukոCSk |pϟ],uT@i #{O=u߬nutZSY#RT1&9'hٶY\:!.['Ub~ƖQM9 65q7\p 2ug„zOخ>UmlL*[}Z_תm}nIj+=Kpv>c5>4|ZRˑ^ )+NƘYkE :Xg]4GkBGnww_N,?<))5ǔP'p v,6hڣ\֜آk{m4[lmL8^r^a=QYM}G p4ޢ1}Wg =6 RO1rxB2jIΟ~_m0Q f2Ku-uϚF u7@GF ߥy4HѾs:z`ZOoLhsׇ b1%ñ_N >6!ƹ9c g:?7E0śp8UEmFO4C0^ ɀSaܤn([^zLeyj=˙N>޵OpVgUM1aO#l"͋}e11lx/7D3b֓$Zg(Fs~u1wCaN=88\72C7‹F8^0z.6quRWjuG;uŹOҭ6NI+)F")=\8>_@80lxη^h(_֧ƾ׎o6wϵ-\ƞnٌ{_}|c3ٯÝk,(7;kK#f47ÂA!c݅+q{}gL7=k S_t~? UNzp5#,teϱ8V?;ՙ>R0rX$cN;U|+ׄ`( M.(I]WV7Wk:xL,XۥaD3GӹpNC'UubF@cFm2ڶ4)GK~ ~ޚR{_l}S]#&i.0 w|yB@U\DK(gCW'k34d; Oϝ'W7!C67z xNjol=\ơGza#\gH:-y\s21=֗䬞}o;7jZ#;ʑşhPZQx<;5#Z{H^5/nol`Lwٚtqg㓧>xj hr ͟B8'Koؓ,S) Okx8d&h^"gc6 V;s0wsю=`AX5p40Ǔ`K:zx% Շmt8C<&{54X췎%$s '#~isހN-h(sܟN_о`o'N~b]_Ů\/リ LqĤgZ~\Aֿڰ;S]0__\38F?W_=6N\o ts⾤{{' ى<)@mϾ%:{tOD.X-ݔsP͋qyϾyIO=N>|8Ds]ӀU'wuӟX@/ڎ+ !!3,󠡹8,wx~&Bo # If7 ?aAM>X\7 vcjn^0n\[>#<G|wkgJݯ濘mv}DGy%S[w^g:xA<9e.s*1G8pS^΃YMFM;gqp}'ns&뎳E=|ŷ.0ظc?,Wo_h3f?{.c^Dw|pEխ%k2u}_7!qCڈ,X-!5ޘn|/i{G0>}Y5obWK۝#s;ߜO>eoNp&cT8$V=~Ko[=`&CGc#\RW%Lk>>^Dͳ6 @J1==Ӡq/6d#V%n2)4s!CutA=!q^4x}r7(8=Z0b:z"ԾhҮ+P%r7UHNZ%&Ec.yAg}@2=z߄{4r~lmܽS3f7>}'O s^+@>!ml nȈ'Euvsu_Q#ثy)hn]oGc?;b<{8Wu\y%}<Cu-TXu[tOr7e}Ox}]D= 45"k7THh9CxyBE&/Y&ﲃ:j.Y޷/WtӲuB D1e >s|N9yyIܻKN.As|: (޷[1^>An*+keZrFY6pݘto Ýbs+whuhf.C1yq|G_tz+W!xzf_d-yj/5yVcH F}af랫:~ҍ=!0e)۠酥FC;}928gzt-ac7n|;|-)f#۷O ;~7yA:}X̟?xo^C/yb^MOR␎|.|1cD֢'RFLrs|PCCa7>!^uyX_l]w qo vmoLGHzGOؓ͏CQt5Z=9\b|bĮeck%K!J)_^W'y5[pVlaIШwBn' wBۧ@cuwHw?Njl_"sr[r.+<8QldƸp."EcxIv7za~(s% ޓF6=c"i2#šy2Vk`W7ԤHHzO˙= ]m)[sw.mLӪ<T;u5Vb4/sF5;GޓKw;rz|nJʾָ_pQ7Ɂ0ܚUzq7Lt=Ü=8 "MUQw2.\ 2օP b5X@UpOmkAFm/wI\76˜B_~$p/p:Z6o܊c>cyB]xO͍Qnyqc,17~xczA?ڹ$W% 6ǐ/Z@mF|otgeB|1non||ӟrk$ECMvk Wmѭ?_7׍cNOr/~ˠɧhxnZ[\|w[I0 ww?Po l^QO} ~؝3LLp6՗DOĿ"ۊdr  OB7p5^Fњ>ӏA~OB7spC#\/!&SnWG!lȷQ/m ܘO.rV&E=ЗSY>$螧O!ui/o-a5͈Z;up!Eo|Q>+krҷI0|"|Vӫz߹7|5#5y7ڪsFWBͽq󕲾z7ƹvrΞ~PO9=ώ4p9x+?9ڣa&p<|3v|,9[;G|1[?GX-apڞX]ԧG8S3V>FWyG{\?7{yj2}7n\pl-jo$4t3Nj>!7 S~&,b9NĘW$@~$P<:n˻NXTu&JڧuɺLbmrsnj.عZ+GoWB s4M| D=>a2[L{MWh6wYoޱ7'})vvWios` ~;Mf] . "z*~X6HCa>N<,9ygH B`IH7E)-486Jw`=s`,8~ 8Һ.4Ț\Vi%;!?fJ~<٧ioOxl]pSif6CZY2}ubklY]';ǽֹw|b[̠$?k|oc9/?̞4/=]#7/#pv+EP=[ywB]X#l;&ƨ`^!O~$P^}hZ9stIMz8'>u}c&5F,*H"p0 VE.#@ܿ]{O/ IDAT$5/=8Oazy9NCȹU},] 4RkܡOxE?1H=7golu1~oN6s_V }|͋gg[L~dݿO[c|uio܎ם%B_ɿ9Wo^3֦ۓ[[Ϲk&H&Ϛ]w9'ƽkC߱ѓ2Z+FOmńn\f?C?"eF7oP&9\9l=z7"[$O;3颡˨WyNۢ`[` z>9&4W"g#Tp,p&SŹBS>Hqd{jG_|O;y9w:Xwh[cˇl_CUB_c԰y'*yc?;8.N{ eqO+Gܳk/[k&+סf.t4w筧 G3=[O8]TrxN*!-ಚxl5OZo0o8ֳ޿!wr{%ڿKZ̮؆99荜ԝ&7:8:ϊO,7'y^ Aؿ=bϐRq/ rȻ_u-.Կ"?dTpqrhbZpAS;1k|wy09P͏kFs(j1m?O~>=& O.V%ꩮ9 K.|=9…\<]_f[N͋5]^Vaۂ>w}5¥ay|{׾[\ĵ! 4܁>M|s|2m1nΝO+\v}} ?}xSOu$3us{rݵ?=)͘u\h?w }\8wj ~A0sbE`|+5.OWwnanR܉Cˠ\Oސ޾5QVމÕfӷ+tcXzU[^OU)b4z-)w _N6./_@I߉. |?TBA,<|w#eHYO*kld{___JԒpr2؂O=L,1#M 9'0;㼼}ьG A|^ 1 ? +hVHHu}>)n[Ccw-\韢җsaQ*~/xQp$b8ɩ)] zO kcmk;3O-UW1|jCFj^OVxOm P{:,ijq֞oC[Awk lf0&VvZ y1GFMy8:zw=j՟7J=ygGxA<ķ9ȝAndlQqE8F y#Z&JiΨ^D5s+wEAZ8.Rcarnu<0۳Bj:TFѩs8ð.ȏn&<'IXd\Nz##ʻ1T`lzWL:jvrNG/׮Gv[Mg|7=0cZvg֣q)-hLV[ٗ&籨m=> h Sss#A=:h!sԈi+0"<[+yvJ\`hۦ`rq;Zx[cU?sp{>%0/wաyϮbYi@(%8ƩIhw`sQ4T`'h}MkV|/ePdxd `'?nx]^5E2}M_ΰ0;4fzHrNplzwVw'ݠpo_ f}_\yN|Ro4#yO4;-8+1a~ם[UF>Eۓ$,NOmU >[^8V@~$PWG}wѧw}.8r>PiǚI'wgboجAZ炰I?XjK7=2jcgA(Xۧlm_7ףb(qxs|>u^9|" _9?^{/*Xe.$8a5zGJx%|-3iAPsFG;}F^dBd>*<DN"NN~mRɚ`(暢̆WkNƯS]zps"m] أ#;pG̫!~'o V}'2 9rtgXJmCjJמ䪓Pz053Ym}=.yXt5@G)y瓺d ÐoMRqQ{<ϋN;hکcj_E_Fk=4O~PLnGqcSz-!=aQ4X'iMFs L흣6'8w=w=?_Pd/;_PDjbm/NٳڊMFBƆ^cΧC~_3 -,ݨXdn6G~0a x;kf-Rk_$/ ;mbyWX k0hmVh-b6`?8EY!(Z?)ܘ='} kߦ}O[Co]Z@sٜ]ѧ.): bvR3)%,ul1K=ës?kuSsВz\o˱Ρ'3xGJךs?xwD/|% şj%Y/OUPΡfq妞s>Gׄ?Zqɼ7s suzѵjyƔY]C }SGl1Ec޾p~4$=IX_[k67k#3eηOIףqWEN|58#yp6!ApO!]!=,II4$Jx%/p?KKϝ'_VпopN$|IXǍݵw1e ;ا瓃a*^1݀X*Z^T֐[g6>mލg첬==snl$-o[cxZ O1}Up/ߕ /"/;jˣP=~|.Ǿy\ޜI8C,ў'˽/ZoM.s_Er%1֘&w<02P?9d+CvkЋfxRQNw~|@EꬊIM`QkT['S؊Ӽo >ckcD_sNaK7Dǽ/W'Z7[U1Qءrqd}>A; A@TQ>҄{@)lʈ&&R^>X0=Pf wQϏv߼P =૩1j^ue>8h4 ^-O}v;~kf[O.n^w<|:({봎a+lvFLp`kϰ4[3QrR:3 )vg"FA| ˵֛#͌34YS`t8΍ahos<(\2ك+'\ZfOeq]k5½<_Epw2%F[ZS;~玶٧cΝe>煀Ii s;q6O卥=O,طGCi 1h 6ܷG`7SReOqZ߳?]nᄚZ-';:j}gG=u^(|6nw:Uj4 e#Ahrʇr-Pc˿ zkO % j8f=.&=.MoD5K )Xc,WјXP/0e|?⻏݃т .(}|~jx_1;pcs~~N[Dnb4/QӹONoP ]>xyww+n1buQVrW+3ЮyfċT"{; bY9٬AἾ OM}BɋB2kT ?OK׮o֎sc;379/M׽_%ÉW_1ãCV \O2pџT:wkw#K|Yj1}BsZDѝ`z3iˬyi'M s@BnϞ,6hйopbSSi M$6w(z8EN|c`#~?YP3G"@70}@T@p5Qm2@L%d/jѸ[(K]ჶREN2#sf̼ po#1<X%OG"4qĚhbg`,CKvUSp2sht:y@3 "\>v@^n}b"^~b}8^ afG?S ԅs8ackv:; G`c[dYS4C"8p/^6ͥ9S{Ə$]2=. ڊՆ/wV2z9}v=O9h'-Á|!\l1b";|cvM6k<|q3nʷ:71op1f=T|@D;~=.U+?ZoMjֺkUkpŰ=]\aVKS[C4B+*."%O4NA:%J[,)vjRs Ly)'j=q{w#8`HnB XnA<"lX|so Doc8rۨʾurp'Rᚳ!@@L!BN̅&X_vn UmsO4d }M8|j2V+Q<1_.gn]B};aDB}P<^MM:5M,p+ɒz뼶ʣl_9^sكFkXHе 3TFQ~T2X`3mM,&·}qГK,,"_e祎53ԣHdkbw>Ȑhek`E Ĭ0bŧ-9I+5C/_@B24/Gxr+ۦ,UNCS_mD_>a`~" s1֡o5CYә-+6>XbhX!;6L0~vn- 8xx޲vnpf ?dMN̂<ռ^;+? k Dž>dL ӠW|{yqpg pa 2rK_T>50)X?Wk)+nVMB* ~2ɹ#r2??y4x(%Hm#3')wo25s4'D5\o~~!Obƈh_|'l]G}"̪|Mn O(_Բ}[ޥcףk'Lw=!8w0O<)ꊾK<ΐ#r /W4cvgB'; _oįNj2Wk®D_vnڹysw]y{eh'?6keXW>ɨ^ի?$)`w9m4r) IDATtjF)hm[R#>KR£9O|y'~ j5/ftF9>$.G4 }|g}\ȋGIYu^ɬv$k|NW;b-ӈ[{B%w~r%Vssy?: cpF>QDE/ē.~w*]RyA!#ĸL"}unV~7I^!p"k~9O<>JW.0by\w/W>^@vLGY2;̊gkE?ዾޕv'TXM>8sq7ܳosı>-z|4PFYWnoؠcFg EuaɍDnVյUѷϽ{̹$9tW{<gPl)"4lmB*R!qk<^4l89kyMe'X8?G)O`A(O˸_8q(1I,\X`!|7bZp9 3Oht\''CFjlq.`o=>k}ℿ8Ƚ&=cԱZO1O o h197q6bܔ gi5a?Vb?UZOo~NfystƵk л~\uċ3@s\rD:MK̡K>3a^_@fd9(HD1nJ_ۿeOE9O&g\fogߌӣ{WsvPfx jL{LP|sy]cRžthϾUޜ[zk ev7e8gqzлW6"ξQ_Py]'G9߲̋Π~vxo0X/'Ȣ'8]{k߽x|W{qk߾  } МssЭz ̀M0'tsG/ߘIӮ1q|6 p.~Ҡ>5W|qzxf upt.SsWN0;:15zd~{oxeU_{@ ۘ`fձj} ?xH2:2 %*۱3'q_: @ylkcX;5N,>M+GTXDw2 V^H_ZQWskNp,4/.-ڰ #0 p ?>au,}= @ /߇[ 낏:f#?B=DyV?~Gֹ UjF'V0'(5IHG~̀Bb= ~ ~^ d歎W8ru [?R5E88{ibZWcڦP H|w&ZL-tGV9g,#9؋"~∏X>@[J hb=a9;O)7>U3'79~ 8H}y'/Г$WɱS!^,<[_M_=?JspLcc  ?|G ^&b[b9buLNNRQ~^9#0h/SЌO icCV[4i}<6N+.jvzw*=vBbnyzK R01<2t[b<|~r=(/V~ S[_cKYnmV8r[] jwǵCuB#ioz"?6"wo E:h]'5G8=sd$펓n5~"Kp牔/ŁO1ʳk!p$4 bqFr8wj-0/s_d aEYsg>Oʏ.Vt$`NM<X 6;ȼ *ܑWXN`;vH0j5k3wm;Q<< _?{o*1uI-5/o҇ZNifIDq/lA?_W2fȏO?h ;/1@ۻwHՋG:84`{`m 1;Ҳ_D5T h|V?ƿ׊8ꤏ_$kGI& 5È\v0@/9Oz"&Ϩ6BBǸrlB'`5zvsZkM+/ґ?yfyo劣\d8$]ZcEM@!8rg땫gAS5_`?/&9D ښŽ)ΧDyrt7zHF"~*wVO2aY;u'sp/E@ߑ8\x9GkG_d oA27=f]#FCݎ\Xj:>OPysxΝ~l qZ_^7c~ΡT\[G&xxر;,W73W\- hpt4xS2 Ktoua?$OBKEbؚӋf1ߪ- ||*qq90<5O\ؘ؏}1EqhM0eG`9V_T߅|j=0@l|e$lYCN ;$De3u߱ftߛƿ1BB.;n+)t bwn874+0M#sML|gϵU|:G2 K0JC6ϓhJZs7~1u(<9=TkcCۜC]ÿMbۘnkl}c`} D6w9P;>R^hB<_be'p 0bƱ!*HG$t9'$\Pg C=آߌe]' ;$ ?tD$JCO^קyq hv*z[Lyk7‚x J$JЫ sq3ƺn\ pNH4O0T| wm1s.cEl~$LC:a^P폦_k,6xzu٣=:Tw /<)s ep/~ȐpQ{1]Kީ"'i);fܾIi G헹Уd _2DR\<o9?ْݎúz'1ӗM//wG5dƾc&$Бa}¹~: l#,\كDk~}@q{y8x_`dc@ʙ!3e22`pr- {"3#)Ibb\pW\xwEϵ-Rg='|\xk8n&G=k4:q{}0Ӣһ[Sr(E_i6K՝V7Cphera@D_IN|hRd1 ' ëyiyS^Rg~'?=:X+_^"br P5i^Y8jqj̥ PX,A_Fte oYEZJW~g.~E{،Jq|υ^?oulLÅczEv?gC.B#Լgao~E Ӵ<4w$@AM@wmks[Y[5"q*09W WNC~f?aI:/B ]kGP n^οu4Ő^3~d5qSn̓Dc&=)7'~>3HrW^'CWy]03%_9oVV9á1@@Vj3I0q\ |#G398t)i|J]ۘ!!yƟ߿cKF~bKz-͟&Q$XOtWS|*Eh _ ˏ b'I5/xJ~BCZơm|}Mx3ӷ$]R :?@f\t ̜ϴuGҙ.vuRq (b֊Pǫp<{9q*w%5it;{+uEJϠ9fAcH|}ZnE."}'/n7 [w,@;,j%ݻ!1 0/}Ryԯ/?QN@3G֊O#KRj \OK㣮'?Saη}Gܵk"ɜ/p\(5l;rɱ ҹ W6t"׊6fqh=V?H0KZ;NַI.CI8lfe ^Wyx1*#-DJm^Ln `~c6۞/ri X- gj!nzb`įu4 3urqPyb(E87/^ܟ'/>-_WVϚF-u)anO ?⪂8 ܜྀ,{WtN X^`,XpM[kwZʇđwxWYj^.'BA|NqoLZgxqi~0n L_ 4 ~}dm Bg/ +@Կ2Iu IDAT<]3{5/X'ݟR=5"S8W@g?rnΗEv_vH͞?Ir'ʭi4ID^(AhI\@9,x=z!/a O4L~;7~7q{08v +zx7څ }a[As$++5 /8[t}k]s%R׽{o\4fMogxm]sO.}\g"5qN&+~_U1|>8O?j<'aK';5σ<#~a|6c%fWphj8E_t!bx?gO.&=xُK Q~·\l=2NuO|Ջ> 5h)CZupWz-8 i̼kdh?z~_ Ke8#.)I C1Ø.89ymHΫ'=ǫ|]sy7/|:P ;.7}H\/\5o;<ym"qݼ@`Io [M6z:R]8c}W17$D)+pG:r_ޘoqxcr@o||>eDpXN:9z xÔdX/Dc#Oz# ܼPϴ K~Z#98[1 ʭiHQҜ4 1L^wgnGoրZ%H5`-'5zNHN_\OIǠN鹗yzд3sMG=ѯ>{'bqc6ykT/q\G9ZV0笞ꎼ;E~ BؓiZcQ}g2=px_9?A^/x=p~so.ͣySJv/.bOm{^utQnǟ0?Z3+}; {}w5GF~HmO Ґ`O$}:u9d-ì'w(M;_9RO_\<5|MCDZLoͩRњا\!f 7Ni5h}D303ͭvѳtɯ\twا#e8:<.-<8|F0brӚ!G.3dJwyJ,ב ЋcGˏ$q`ˆh~3~P LCIԯw?)vs'6`cy )Z9?2FY,{lwpngO+C9"ep8Hk}GbdtV4{Otd:xeI݃2ˏ GɃ6?KM_Xt4$6fQ9y_:g;<VW`8ƣLFX瘾}(DyL>s\/joAp޹]>p:pNݷ,{niKo؎O 98R],\$zO @:V_xښ|Fj X5U>]tؒHz0='V w(j/'f56w` '(}D i|;cPٮ`L JƓ| -XpL,s k__KiqNNA|I"01, Wų=E2X{z. mƶm۲׉7닖ƗK<ђ}mR= eW)__[uy0-dn>\xqcZ:`JkT1ސ:cȌQk`- C"Z K\d DXLξ0gxsyDCB4s97 vi_3~b6G;NλT\-`>YίHߨIy)y;swSߋ79RXռxjm>0'Bʭ'v|`ǵsP T,\+Zf3eW9Ѝͬ#o_ğ/h9Do3Dl&T,f?=W=~-ecI߀\=j:([^t 3)=rcKGtG~Dž9mvP_yɐbI1n"V?ݓ]_e\&aǬF@1h~;Vu0=?J|Ի@455k{X59T>wޤ@ذQ~η-|tc247GҦnvof2n `jKe1-|yGJڙ6h:ҝW@ >sJ&I^z^XvmMGI> Vbs'FQ8O۫I}+6'N4aN/мu@jf l-?^B >YA`sW\@[GF] CIGõ\n"NzɚGN;zԐ*2|HPUY %1@x2|!nid+3uA&8.Lŝ=4JJFɅ>>96g:8#3˞ģ7w.4 t9ÍWuuF(x|iس3i9t43ħ';c+G"ݟ˹ɖޏ+$ry"ǖ<\'gSxF1}|G37z$(('^))T [0D[$$8bp,_bHc la{ߥùT% 7?up̕O`s0 D<bYբ]JyosF"ic>PIV|گeolz8Xt%Û03JXPu2_y넎ԋNKȯJyη6b1 >iwf~T =9СZ\E&9#JϹc5$~!.fcS(zm=٤9_k|A)IÏw^G?]Dz{qR|03X0ᚂ*DZ 9i9|]!BՓȖPb\gxlIkv%}c2(ç^ToC8$9X`Hr;\ܒZ`oxa45y9gI7/g o:FpզH'O=? l;+|vw^'L /f9Ŀ3{܂>_,[N$M >Əq.2<XRZr8(}3z ^d m6Ewȫu9\:HBk M& ȾxM7[ ӏ͏1I9ÇG0erg4%FhPsqDg?ZpH111I眘C]ɘOmRaokS =t8Pޭ[Go>tbp Ֆ>@hʰ{a( Q0c+ٗb۩ ~W{_L7 Y!3%mX/E84wuP ͞2Cӥ&{eu -bP(=y_f({oU~j}"k4vUSCr?RS;xuҐ~;]yL_ ρ|c;,q'isH }[P}H;Qw@s%tr|=Pɓ'گN8}C9f9%zhZcD)_ kت%NmkCyr8wQ͠>oA <9L@cd^rtz^|1<ϖx1< g|5Bc Ñ8@ o8ݽN=˷~O oJ".S{c8zgJ:䤙\o ԐΙ@&Ɛ'r;ARJ},=?a:X.Lg3EgxKo~~C`r|W̋J Z@Um/pP:"C՗ƐfrƑ;ޮGj>cO1v7'.i|PƎ3Lj Xn";VV܍wM 61gϞ=V0`{ꨖ(vu]Lk\*IQ9G 5uk!)rٷ^&6؉glFo{q #+Y~:ID u%bs߾o|ʾ5|Ps(n"7>mN95k _|1OƇ9gYfٖ:֜3HZ?kg%[勿5ԭEF;ͫ 98!c)}x 3 l҈&Hg6[KMY5^nO W%p@L9@2<J$B/@;S`< ñ>p);*OHٞ7TßMj*oj}m Zt kn !?b_t `B||g[֣t`S6rܜ>;_y{GZ0;e_/퇝eP& p>XكG'GԼj/V!>AOLhy`)'PGvk?2ysDg^ amg\ٝ ȼw;H1l6v˂ѡ!) %z5=v s9`-z-gXl`=ߺ㭋._櫂W' 0!;`Ssy9B0^̳!w\N9cۺ]؄+zбs2Sa{*,2vMN_'|i8 ar֠DGadN}j6qo9%_/gڋ-omпO:ǔG'Lg hŅJ w  h=}o ?=ɫ:K=9n{%: 8 IDAT\Ā/ɏl `o8^#}lK\u䵨oy-O$`s'ZԳCL%v|8cC,Flq.\Xo>ş3r]>>3y 62Jg\R@G|T{04+?uOu\3 biq=y!mTqqdpA?x:d@M;,XZ<.o/.~FG΂]8rFl9z/ >-5rc6!ثN5H[( ENX_3u#P|Yr"6^cZ}zޕIN3lOD i y?]A͆pk/P`'a7Sw?xG1pGPe15`|H@/Rp)'[1fx$K*G &sG^c|[^e6xn؉ߺNo82bpӛp;YX`ٺ6kUeq|E1ձLӊ™G]z#)E,d\6?v 8 ֵ*\z2I4u_xԬ|K~2FݙlmFzu̎36w4K={".9&&g!VK{#%PϼP_ּ/2^)+|PNPZleG䙰ʗgO]|6쭿a#wݺMϾ ŵ93AV7[yvxc^j!, PuZ9-{򦥏0z6|S 29bsj=c:2^$vJ0tzro՗uɡk藃@yML橅uЍ2bX|Q{ Mj%F#8XmCgLKc2ߏZps5n:X H}anP}סPݝ76^7D2?]hV-{Yۍo8[AN\%dyުR@]8qM,fiIvYq^YUD;bjLIԂC60AOsE8GĸWa{0bmz_!­_8d|=@INV҈>w[l$Pbofg`5tXn䀝3 iC5| [peNO/J-/6pOTHi2L`V/^ k'ض6&\!fFLՂ~l=:?jAG&_5kQN|lWI~Q}>wr5:]:m jtհMVٲw:a1Pqkō뽣58m49aaC^ݛ#/6Ks| sU}A:N)B [`~7+:ע>.]kcXk~4o!J-Pc"(:h([˭g5!JJDŽ \Yrs`/w{`Z:pڴ] OW#xӽ! fc|ὸ%whvI8b{{dN{$6C!HqΓ pt߰ ]-tu__>6geFbb ŅH|'˜0ԓ6=/bzǟWTW?AXܘ}~7M3o}mPL8mpk <_Ǩv9/_lm_}q]}1}썕x{#V;yM+A|ˉpNLXl& Xd^K6ɖŢzLx4gcmAb_=རП`QqY٠7ų S\ap,EvIaʉ` XrldH |1h o'py/g.3rm[cz\5>:rn,ؓ7c[ ڞWalٟmGRE^[/Rķw`Аg;Sb{؊fġNPȖZRGl<^X!0&{qGFZn:3+'|1/#;}ϚxC׍+1xשc_{CkQ_ȆK< ˿_+188/dV\y. sҽ\#>0!<֤ޙ_^!هqx*G`q2E:ǯ0IR nZy^ [c5T\E:1lf^"'Ĝ=6a a~n)Y/Q' s!_>x5ۿfw.9uXjl~&lcwoQ8h '_S_T9hX{Y1(k^(v_o%UŰ}?Bf߸8 B7%A$*6AD̼NNmr˿f@dW^g~uq}CI|܇wtӂy^m_cbd]ҿ}iI܋ umؿ2ٝG-^d .q6z4IIZGT؂Nk0&t|\ί{rvL É}ü_ w:50&pޫoJBN`¯`ƅwW nik٣[ #6NlC.W~$ ڮɆQ534IuJ)0Vo mjbEe/) 1hi?[X1lgk{s%\4|˻ j_Gl|(ta]^h8h=2!:Qh$>!Hd$uH熬'sM5`?',_C{ұ訽߰8|{ ӂ8ߘVhsrNliadSG3x(BH>mW>q]O@([owp>k;u${<4N\<7M޺$ ~FPHcØxpikn\xIh&Zg|#g;õ*x{_l˻Tbsr$Kʅ7.j{uC_!3qgyműHKc։XȗrCrc֚|,R8ʫ,KzBh(scQ;/kCQ@s6:5Zxcµ9ҬXbOG՗:|3ű|VwC?!K4o6eKgZ1 G]|~gA_@gQ3Y9Tt<8 2֓]t8B)&FZ<逸̰"^>RROo`G!<цR<0߆r4p' ӗAƌ u-{; 9ڎc1U.^ȧm~r'r1{l^ٞ^^ZϺ6hNk\틝q41_ܷҦ-7|gέaZYw^a=JNp&:u;䠧kύo01W8SĐ̅8ܘ~kH1ِzBf&;8DW igrn 5vl3,GƜ'繁68$!bYnخs1:s)Q^7c"D~O^G=dW|4;T=-E@T\'ьuo:I-v : $3)` NJě|> !a1q0Z$> ,<%pM3ё+̣j!.I/ aa >Xw`c G =-opݠ=V XI1m<ݷ1`?6ĸys>~{[ܷ.׌!r yn$D%g Y(' }4j0ΏA{l N=9y @B޶9_s 3wg.kb:X弻/a76W9aUH͑Z Mt‹Q$k ^<2qл%MtdG˃<$^Npv̅jw4sy waO,,Gǒn?S){ԏ|[*JHR=؅i/yYk; $ql 2E30erO#bx;6 s||Vz8E;!,Ȯ͏5/^XTGo3YI(iliޓ`6d798:|Y^a^X[{`9~7 ˃ƞϱ9Yp:p+{[/{@5,W<\:Pϋ ǩ.iC?6#܎l89p"ѮHz.bzy.UQaTX cP0sdFX훿qCƶ\Pa$w0"ÞoQl_z@Q^(u$m89H^z!p1aN#6P;p,<9<B^Sb~YMbչ tru WFp 1_7zlݏkl}\78*O/򀏅> ۀFmcw vKl ?6qaGvÂZhu!p2Tb3.>4mÆ|nN!ym>~;c{.f1; kk69LARyhxŒ'7~hNtd  >S-W,FƎI\|g޶oNCqn)1/8Mvҍ<kLr'10{yN_8 q5p&s7RkܴA2mxɽ ] 2?z~5ñ9>&K SO~1kqlͧ(o%5.O10ȽG*:`IhH$}϶:boBO _tS࿨i`%B̓]$8?40F<%9Dghg1T˶AN>SO%ǼjD{m 9QȌ<9;J6nb|Ws%ߡbR|wwW_oX]`14U^7w oTd@k]-̿K']k8xOcy?Dsai5WY/&>&)tؖ3A Qi ?]o<Qy`Grf = KnؼY[g>*_ɠVyf\ѹUfCmX.^NŰyٻv* lVRW_j3c63o0H?|6p2~PQv 0,$ۨPk~'//|̹I_Lpǭwz 7 n_%}kR`9 gƛs4.Q4jf('0O`@\o{曃xd` I{N>?l|\[> mJ'0ūs/YY#.=~<yn=c\GZ3@fA_i}u>Zvg(}~IJ{rTۻaM>ɛS|-8*8J5iUq*l^j'K"]ޱIgQ*x5>l;W1c !a%=y0~ :VG~63͗'j->%2əz#O}hɍV,;:93AN=x b D.+ws\+9?( ApO haE/?Ls/!mvw 0ކ#~M pչVtzs8&NE/*"10#ʱӘ>!uq7QI|VU~&{ 䵵!0n{%S޼=͹ ?yȜ]16a*§˙#77>RF㯃깵AIdriOm0y/۠>!&lqQ7q>#o͇hiGg]m !;`r_}' ՆˍљK@8]?酽o @J#ʉ9_`w{XG*BW#v6^4h? {g uA!P'͐\Ucc+Jcl]$k^0.0v0 9ե$F|^^0v9-D%N=mm1ε;+/؃p?sx/r@Q{ׁwmtѾ b z|/fY'_]}_XC_ 3!׺) ~Ǖ5GL(uP`9,ί ` hQ7-\mk֮\[;c3+C'Zl#E6|711r:[ɖgkϟZ*{JM h~G/\l}~7^޶ϡ~&Rg$V y?ط6 7тn;pG.b!7hC[ek{}>bD.f=;.O~!Hr"0&?1`w5rÔs'p禒5fS~bn^#tyDN! ܁}z~ק iL_ oyKwػ, +=el qlCz0nzDg|m>92@0TƱrm>5s nG>ok7v&\k$K/}c3nFl}Scp9VwV2hXM^r9metgNzq\0'Vw ˼mfIRD4*$rKҍ,O۶yGzc<Ͷ21 [=@xKJZwUCГk8p@|nF1/g)˿6#5lvwL,=w%Yg-κ8(e稄di8/&2Ĺ7 p}=^s$|8zTFιІu2N-pٙr+s[d~ k0^O-ؑ숟9$jB|!YG͓ NkwFURS d7n47I޶{4GZӱd'WI~9;=',%@6z~m]Ekݬ8HI䋿8{'_T] 2PPsp }>bјSs L7?l}"'&NpnA,2z͹z0̄nx-3b o55nPቍN6 C~ע:dX-߼ri/30>s9D,cvR[须w _ J|X/t,0/pjrr&OeɘInїG$ab-L${5aoN`u2/~f[qGNC0BV@ S%#yCL[!3ajυ7j!9e3u-L_$)aw }.AU{w2Ѳ9q(zRgpqRaL6+B q8Ayb'$%ᰑůV5taEc\H%Ucx Tl>}ł=c7 ӱ|xTڂj!΃/^nbWs뢏[FpIK͆'}񁓣h#%8$_F}g~Ot6gʑ +$dI SdeO<`Ύ#ջkݹڌ_ܣ\͞F-~뵩(y*c5p.,֜^c y^_>6s?^ǩ>(M ,as?8"um׸Lk~=æ~. \Xn:<֋/_hw{ҴY~ K[JƓo ]jarf'?靗8tҸhkuvƾ`^ܤeQ IDAT`kiIflmI!ڛk 8: 13&$ !jDkP>2U>ȿڀ5_Z>` wl_b$g>gDm^o | ޡlZތd\uE;iM>oHNHvsɡzDˁӓJBv:Y "s,j.>2yPLo[tPdehojZ8/dQY8y mMc?2!L%0^93!,>zKOW6GQ'ꏫ<|e>Kbwq1p[=xO.`s뼻9 xV75t-haЉLHjO/?.vec[.˜Ƿ'Kbz]1Y ͹)?c ϲeK>ruWġ؀ǜY@cy[Ƕ`0x8~7'.9'm> |Fy ?*9{9 ^iC D9z~y9RzN?Ѱ|a ;|Wx* +bhZ'6T\kqԀ51?6ȜZdy ."5gNsIRb~UoGs' sEnS<ӈaUGV|4uJ7?l,N ${{[dK;{% &N0c,:ү8LDbF,$6i s"vk zXš~X [~h{J=B.XԒ^+&ܯգg=u抽~*e`[gnÏ]FO{vJmbI[}q2{HZOq;NNFQ]8[mώ31G mG~5Ukڎ2굖 Oi@Dvuf#5α%[;8S S\D X~FNcpqO2wLxW5G=*Ƙ6Ƀe !desc@&&#ŋ&`lay0 n'MGs>R3ŲoN$-g̔=qM9y>V?&ɠ|oq?8^BC [Ijqy}{>? v98Q5cqÞ"=1rJLP bNY109.& NP!ez.[-ۈ&J&T1W21JƓO &S5]rЄSNr6e1Ћ[󓎽Ŝ0#vE'O+jh*Bn31-D i?=n;9ҧ0]WpMmدV!M=ABh[*9A™uɓϳ]^CxH굺$Z #ݼWa9kQCWĿV׬z~4: u`SsHpObD|<. ׄh9p>ȱ vCp{V7hӊ8 @e^E8P_:hgddL-'7p4\IRF?:?qr0//5}e':6S79_O.$ zC|m\K!'d^VW;XϾÆi>8fcQvSf :3F“{ /zLeeC`<L{ƒH,^xkwg݅TxY 7}TGTOH#!6&l,)yدVd,"Փd-]/q8S7CïH4z}= _𵮇ZLWة>CKn<0q]g_0{2T5: <xb;F?s g qCs'9b6e+«rKiƋc)ddkǙt!EHc M4V$~kM,+J8` n!٤\γe8` hcL NA, 傝9uw|l Җ-4bi7Pn}d,?uaʉ?DKVQUY[/jIog=ݵϽfݳZ:wI>υ+N:jm|//ŕOP Jbw^7X5p/žMxNIĸ`lޔn9i)wc{lh>ۉB張m\|W6 e>Kr' YE:ݛxz #qjTo&-`>I1LS΄e4 Uډ.|Fa{N (M0nLS&sƯ*:Ɖt|hMt~LޝA;HT\a[+h_÷Qe7 $rd?^tmwq6־m cJd] oju cB(ğʼn;)Sr8v*wϭdK=WsEԂo?r_)R-m@CrroyxY$m}R#Ll+|cj! &F)ZN:p$ojX'*3rnՊ<2 ֆF^-[9 D%VŹ)r`\>yp"j_uc(LD|t+!k$:MY36+J[w>qR=`q`R&$?T$bPKM?ԛ+J=u_MPFֵ}$`Աm5oٖCJ;"-Rw #_6-@˶}xŵbebD Þ1q冇2fy]|25>g"S3|VtO񞞼j3mAڜU_b$] pCm┏Ħa1=DK\R"&P:&uȼK1ckFd\X#5lTz8/t\B3a u8' _1 Tli*4g0 *b];v/oSz wkZ_׋o8mAMܿ ֹ #ϥWWd 1w1ۅTq,`0ؘ{b`ϼ4(OM̟A|u{!6ޑ#IRs{_ϥtʖ{@=AxxlyP= 6a&syE,mWe)$/J}xiWg#8NSOS5/~5]vC6:cΥ<q ~$Gc'U5d0fE''YEbQy*rԡ˙Ee ųm^~J]29mBer ~|hw[w+osrݲ9#weQPs$Tv]O|NfHz.o!MToOJǼ kbw,5rRP$G=eH{ABv/NY JXWbb=}g;.Bj'WDL_u i4ZLf;&br^< S<#n-7Y jbqcn}`eG٨giV6Ŏހg@L'[F۠;'> ܴ.[#pОy]oXG(uǯckUH u+{3_8lz8.>Bs'859QHdXPwS gԻbGrG&Fwf%2nO i׾8'N'IZ111"64މaӗ(/gLtP&E"g=v-=> ROկc!D=qmew +ⴱ''yԋ(LIgQF+2ʅIS:{EDk}e5 DϺT-\RK]cЏ|e~Sla;' 鉃UclcThE=ٗt2FW9\&_؇ |_r~ݫYOPrs0hNBQ bUe⪅vNk0d}cYw;RhGFpČ96$3Uu|V\\?i VD{i#`fS|u;j[ FKÎRE(x1cSv6w_M8SmECM{F|%۠}Dƨ#` #rn^֎OǦ1d82'y׉}غHMnZ'6RS(DL ړ z$m-{4Nay0"e' &)4x9slDJրf/ˋ,.dp/FnD1mǒo[*\za _ xl:ܓ-5Ǥ:#WrCs,S$^yU'A0JHQ'brbb0#XnQ̔9q97j үSS\7Ojaj|R0qiCfk 4޴oe3 P+SeO/wGwߊHSm1&U6W^{~\ezɄxɧ\rg^9(;C,T@b&:+o!0q|pb{dyXX;V۴C NeFօ"bIe7)WL[;ePYq0(])>/)wKk ga=wxz&8G8`:ZWpՆn bc rZXf6C`rn;@@"e;]#.S/)[-(;#੍L8ns:3A|4&βtvg/ew[~-EFk}sAYx7Sj:A ~yYW;̫Qm:NJ$ࣿ5g^у{\3+'N&K*UDif]S\fvc>}壹LFYB@p;IǞ_o<8NI7bp:z0׶ṊSi]7>cdRʳlA{[U{ MK^;a}C>#3棸q@!˽58ZnX3.xn%]56Nz2׋36U6X8s53NWw[*`)hǣE\o8SlռavVoE~UP뽊rՇ rZ;ve*ynQ n@ bߘPTʭ[Zm>%r0+oִ )FUQJm8rx;؋IymZG/lQ{ OXXbBR6E+}wk FJ3؋/lÏЈapKU ڰK|E&+jrV֗MfzFޠe1FU.ʠ6%_jC]X sΤ"Zb,^yx W4Հ~j-~#7ilˌ`%Nq,`?8i}ES5~a~2ĞӇ]x@s͎cI`xlCm>fvS#s>ȂkG([o~(f>9g𵿿@QfbCdmXy30w> >*{xڤH &疚Wkabk")yW I}M5Nխ&wH"W2//t c(y˳7>@۳iר&_&.t,dNmM9R"Yj1뭒Mj?lW&ʜeDeecEge&죓օc7&bܷoXlV-\y fmdgJ;|Ko"$Sd S9f-1fgpAL55 "2G3ej)64}#Cy FHR"}$eR"Z$$:)A"!;It0hi o xᎣKߺMk:4e?<2y/lzF~;[G&\òvL6cm(Qˌ:rSg#(?Z-+s)]S[9]6nq%?6VgЎ1nE|3_;A`tҶrDG5KjI=S޾//pR)$,&p^_qj<]^I1)?NI\?L͔ƿtY^Qo^z6@ve6U#~:$|ȧvsk$N1 tۈb4 8Ռڅ_wۤڍ 3*˶}娞(w7eC콿=1IKzYWb3e;;>]r/ -j:Y|Ps>dM_n͹Qk+7"\UTN $Jt $CxXeR,.rљĸ)=Ȩ1HLC8J^qx.'1vWȟىuhSl-{WgYn=_T'A _d+#7-!h?W)|j*kʀ렵}K hqJ_ 6L~0Ys̓3L9׮v=,bC}e`|+@i̿' v&Y54 ˘98_AH:O%`]q,.$Hșb$İn Iʙ'>X 3JH 1 rI6W5Ի MM؈ )p}!ff'6U'5㖺2.a19-2x1Ķfkvᔡx|PEG. .+ ޱ'αRy8~:v;^!랃q|"lo._ypk.|x%!\>E=bk蛏VO|e.5lQ"6@N6u_9י<BbTϤ&շv(lhy:/~t7)\"rl\Cҷ c`DO̵EQXI_BeiC ͢1jS :5eE7.;c0}#d_^ן.W>eTvOqUW<&ŵ l!}dRcg:akGζwø>ٴ S> )N40~p1mleZgbpp#D|5/&Eٜs%)l++ejᦣ57FnϾF^Ң=wbƩDvp;.dqZg[୳֖+l:8vfp.k@׎8ݓGb:s tT!,>h^^ ~÷rwpsqɽpd6&Ekbu om 6TeRDZ?G ٞ=8кזңksgcxLd % 1“m}oHE2x/l_$9Ai\<OƝԙD䪋=뼄ڸ.U?MoqqGȄñS&z~en,K_Dq NY0!Sn$2=W5‰6Ҹz158Qާm59&{[mL\|/Ç ([پܸ~mO6ķe&B[r)S2.[Z.ˤm(lb9Ft,DĕP3nmc}+ /)I{̨sPq>l̷l^8 "u#x+#Jl6xCGFJAcfR.&ĩ&Rշ+n:b,` `p_b0t66*7[6͸b᳢NQK֡ ^)3ۭ X_\6y'QfpcLe䭤 rI_eóZ)I~Rw6(k1ٲ=:v`t'vpRSI\ӬSal%28w2|؍2ںv"0*Ϊ6SIcc' `/$ʺt1wJDT|U\pזgLjX# /^񳐉 c) I%J-`rvyK(*4NAncUO 6̃IEcZwS_ k{ٞ?dg)rNʷO9ĘJM}|uq 3>{um}QCŴUnxL")r߂gw.SU4!:ӓf_yEkX;Fצṱ-Jمa ?0?B XAVS\Kirhyǡ3^ǀ'|ۿ -j[Sqp6V Sn<2O GdK޲՝`0 X>j3ZwRxX-TI#kaԹN|oR61id-n H.+2`|#1Ai*1cpt8"3@ K@l`1:?.jv̝@׍g N#t|}ϴ;9s:՜ҩW5vC trD~.vjy-+&\L[u_(.X&}$ȣ >E~jGؘh u6]B 0A\bP 6Xb4[1{S˼8V9ms'YE&4=m>ƭvos!/좪ږ}T@U7UU.d+i1Z^}}zf]L?$R8q)Vq+Q{+}mjx[pNe uyxD )1L:ZCLjOʍGxNW\z4jq}pσiݶ~%)&g(*OSww{l<;O@lǬuD%B(OϋW+&qds=73|cb R`k*J'ԍ_ce XC!s I zcM+܆Di-um=0l'Ǥ\o 뫃<bc%?e _\d팦u۴Bp('{D_ NB#SRYH !?a&[#cՊjkЖ)ly MXx/'Dl'a]uB=#[߻(-x9(x(ג(Ղ`X~՘)H1X]}8+kޔ܂msSY&oUEic~vcxRc?8@ľYճXmly;Ǡ#kL f12P*KY?*tS)vXFl[Xt(~ÓÓ1Uuu  o1 pֆڜKpK/POf6 r} 5vAG;.;FTglcdN阹? X< 8XLܜ'jն[(F9bGs}ɠ_DrRWmNPR{u@yjzLy4)˴\KKocI^Y'ަ0r7 ?~EBS,s,-mg?* ʰ>r@1yk1}z{ !ݶʊ}ѶlWθQ]yB,h?,#eW<UqEo*O$|CZ2y,3í] Q Fc QF@#5#VJ'K5;<U'8Fx8t/U jkqw\i(^ w6K,l^M?\m.<>g T4z+.BD|h~E(w%IvK#gyfUuGxeޞTwⰠj m*)voRJH ?Ֆ4!בW7R}Ц $dIJ"-r !:,V IDATKn<{F`å YHҁB"K!|ciG;g':GFZK<c$SH{$r5WxX Ӗy)Ξ8]E7&-f͜WX>6: VĐ3Wrm@ګR1Ll:LK׈d5g~H;LWbȴ܉: HxskY7'r6֯_;sޯ>‘v/dg{⫖Ƭ#PLWeƧ qk9ox}r845pí?}y|r^)h.z|Bgpl^k/{&rζ`BnJOJvcO $^ ff'Nqm{^ZG+Doy%=їpdO +jPmχE7䬮Xe1[ۉWl]͂=\'ss 916u씿"H޺ywVS?ݒcoe}Տ(yǍ`.{ƑT.n3mPe/@[~KV:pN}KI z@+HH{%x+dRJ)oeֿ,NكG=e_\W =wE$ graNBnvl\Lʞu=X,rT0M`-H7Rŕ}B*-"8)g 3 EB(Lo LULޞ^6ˬwe)"M2|(%t,,QGgܕ,v,V߉~MNmﯙ'o^1Yg&t70Nޚ2%cnń?IKbNVq/1/I7=k†@VEg+"LJߝЉ o=>>?>|[YH.&>o /iG]hCu^bO |y+[<]\? <)\\(<BE(}8IQWBglb 4VU$=ǀq2sm1~Jue,XkQ"ch|> º{|YwNo勧ߧ~T .RpŖɻqڴ쀳- ncY)73' Ȭ%o>G7oXikO~YH da1enӬX* _VA[.֥4䤡,Zrk$FgMΩ^ZX#0^p6-3ۥ" >b;ϻXKuy/Dkf$tDxoZykK˷]:H~$o:uS:PQ$w菞/r9+4<{(uѡ n_220^}~቉޳:r x e|>jx99v`1#@k&ኄ < }hsk/_^=~^j_8p‚3ؿ ƀw${L"@oY"OG/c܉Ӆ@qz^? 9]Fy@ 7qO D$ڗ^"V ȵDy9n6VM}:[l/if 5"AYniB. qm*mG6k[Yݍ*ג[ن/u oY2r`5tO}t8I\ 7( cҬzKwlm`,WD,h7ǧ7Qx Jw@T8q7rȿ|7$UpVڬ݈ 4hQ,oP=p?ӎYƼQ#þv3Qu`ԘhG٭ncro@WHk*ˤ(R:_NJqAAщLz}VqUnJEʋ;,E61a|a jmurS;[=zN3u 7wo^?޿{˙Np^\ `sԉE$('j_s"{-JӷmDwó,@"=1~B)he] L;3$˳n^3!vzL8xA߼`s]0O޿}c5 o\!x?3",>s yk#W~N]`$qՠ_E {+=y(OULl-mob䫂M"'ƳNCiMDEn դD@\P+ZFowUdiee7IK9yU4%ʗk<_ٌ(Lp]֊9y'.|XL}ë%ejcLl׳b6EgMbk֨ĖXVOP ȩ>rDcpe5>1ʌmyf( 9SndO@ZX:n4agގlF~pB2C6dJdkj%Z" b=)6|!=:!HyԮu`lE/|yo'Цu{(+T PTfk hWhmK+ThrrpFP[u|@7kO<-s$q QVFS‱g3ė ['f{R6~9Y |='sg,=8 Qyޕ?LKo7>Y)C+kʜ#Ӎv?5g\hlQ=VfPڞG/:S&o߼gfOΠ'h\ {{bRU$B&mOrgE{؆xvI)샇d,I{kK?͛~xӧ/w߁&||r뀖Y7.ԁ ۄ-F}&i;9+/ah.fn6u@۲`pa}q׶װDz/xЯk`ӟ敧ζ O}w72I.geB WZKN@[se:Y4*J=wI4 -}l]iٕg䶬[ֽabQ)ˊ'\*צu(a~bn;WBˡӠSg-w߇6ëwo<~_y%t)& GR4;qKs<~}ŋrY0pwzOS%~[*ؖJ@ 13!'۞.\(\ڦ mj.$Zl[( >JEt+KqcD"= k[YɇPg/yy׿ ,ʑW^j>wFrX|sm3'X]BW笧,HwaFOLpc48@Ôִ-M[ +f 1n""uM3DG}m#[I&ر).FQMAJ RreNϖF'o'pEʥ Ibد[.5[JOŷN&Y^ mCe-Fa=3ʹ@T|9e?@[gYp3?!nDJA҂-zhV :J ,VRZ;$)qf"Dl # _5ˑ}DJ<4Z'xVQ3z~QWMAGY 7^>rn)jzcˆm*SvTcˑMIB$772Gc:$1cuSɀifF"吳ٳv<;L2Wҝ Ӈ=IŎ\d$'y(xD/L{8{ܧ_>~3o^z x$Ì/D)ȤbGF=$f,KLmW|ܶ TV|6{Lx1Z,o[N.HEVr9r/i+칷Gn\6ȹMǙ6S-/'P@Nec+޾'z[ځgoX Kmo,wCU ]K7l=.2#l*g2wv2Y4]q4ӷ J}S~l92(&Y)Rm\) PT)$J$[{Kf+?'_"2NAj~^ z[ Qi_[dR<uYIH8i2er emTH Z˘h,f<@f씻:UzFAv%׼bk'D8gm/,i#olD \tFng6-~_( V~{ e .h sFń\'Ueݳ/auwsw` }`W޻w?O?z1;xTg/|3\3kG D>"00YYD8K(Gx߉xa3px=jkRNf51OWg!99"C$2N&eb"g,|?ל8E2Tc.cW~٘h>G?x<9ǯ??~[Æ?`W[ଝ3~c?|{6Hsmg3xu90ڴmLϳSmYplY+:no=,LA<|r?@'%3)X٤}2bhP=OZҾbl,颒ە<wۍQX{%@Fa)W0$Vxi5+^p$)󷏭۫ȭŸ2ቤiܧQ^ֹo`cŕ.{wנtۏ䟖 , ʚ!%E;Z@/fH'"%ܑiMTE苲aj}97&SnW^jz> d&4 G,~P x3a/Fd>ee)Xxf~/[r6y;./ytFÕX"4(N}Y_={fbzk䲰?m]$9|wO_L Z<lKGwOxy9 u]1FNy |e[ @|{Xc}l4m\zfdLb ٓ\,q;Іk EG&a'7Yɇ.ݙ$Ϙh73.} 'qtOkLpآ?P:j8a:r^Jۤə/0gk2~NZhhܒ\C%0 D*r]{L}L,H?&_u2ǧ[sL^88S\*.[Vɮ>A;CxMR&'l@IN{ф g$2-ɠt@9 g<`/#eNhgpIΚ=;K$..CYg,G}[3-mؾأGPgF*1Qɤc`P6r-7"Ec)mM7R8Hr3v( /ljų}Ue,xxa$?u{dr߿cz?񗟙x_c8m?[: B˕$EYSG30)S#8ߛ7b&ϞwY-WsEBn>elbɖ| I.F2[.<'&o'޾z>ϟ?Tjo ַɟFn)X[ez,Q怗 ;QEq=jV uuk }7Ϭ;~Q|6NJ'oIRI˚g8C.GZVُ%{墷/ۤ "gҔ+WU>̬'O?&#EbMjl9f!+0ovJhgv/fo쌌,&E_;k|ܪ.jCd =ro ђ UG Bfi ;[}Vxt;_a35eRlCRf{q\7e u!6-w2 ~741EdIwut;K~@8pғLga?mZ}Eb52LS2gRCuT1Ɂ>e/'~L{v3hN6]"$\y︧/9 IDATx#@ܿD$F` ;LNzj\6'L3Q:9b8ΩCq&\D#!C~ ExVpr6a` )NLo3OLJ ߿'>s6C. -'DުIr}Y/Oq\fvKv g̅r~qqdz'nEw?+:/_=, Q_9_^ NIxcωl5] o_8Y\.l __;~bP'없ņW=[boKW;W/@4yp#q;{6S_wOL~g|C@×7E#Ǐ U:}ɯz_<쭘\mFKs,&(?g;x\3._[瑹O_? *WѤ>_|=P\WWbWF6SxJmbvOQ4~*'|oǮcrJ` ֕eGB4i[ m cdb,T7cgonPGSd} ]A:oxNi ,5)~˴ݺ<#减|a/Zg"ܼ9ݡzP ʷ\ 81Vkf }R\ $ &5L qiQp19V^vCն Ϸԕp;ʤrM}AMLO\xF&6Rgؑ ʎ^f|YdRf Z`#@L_~fڵ@n'm2^OG}dcJԯbqmֳ^gFb͚Ap1:|t>OwO?=뗿5ώ(n<9p-8O?P˿ǯ(3>>`_>J߱# !idNV-95i0${|M .tY3I:'ccr^qg^E=}''n~-:'Y01k`MopC.BlB#B9vO'啵O'OJy"p762pɅv>I|gw'X [P}5ԗk =샹Pt:ǚo`cl(زcGpd{(YϏrgmrRs`G #!Ɩ@.#3"ny F.4au eM LmٰFe(pp@{f uzmnbnȪ >|ÒͷD6%_FNJ[g8 h:(`IW H091rPه9}ۧK/s,sF E~'NȅI;C&'FgK ^%bKalIYU2NU2{U!WOA/ r+20Ol|2Nos?%?W?_ j@e`ůJ +ԙx`*6c$gĜm;xSc+%%K\!W<Ƈ~[UE*L=ş$ent̉Lx5ezI֟d8vHZ~އJVQz<h^oY6:OmwLxc<{8Y&2b\uR]tJˊA +3[sk@?-ӂ屹rta3mwp Zud& WGڈS6NJg I\?H0]9pdn'Χq+g>:+YkKBAg=]Iîȹ̹(H>]Vwnr|g|R&~VQhL*gJջf}yB?FHdLlQ>Mm_SHFQG U!ؑF{_K#+ԳW%AOGl߲ |' 8'}\g~wsG~?9//Y٨mBSߧ4ߟ$ul <rd=d`Ρ>gi2-<|{gYNK숙I K dLb>]:kqU\KEBhy__J-,PW9vOX65/v#8, ad>,}:T,IJ@ؤQ\j!Cs#?8}O?`bEq2Mcs¼= aD NۚƓo ڮ(2H?\nBoLFČLvVhA8AŦ.I31g}eۦHcC&d/XSGbTЮos))e#-1~pcq >+ GoEC+ʿzqQòKn |Y~)׳bN51PĒu_#U5&7:x ܠ:yAiD8t'1 dIy߭miVN4v-y@66jys𥏠܃Úd]]%L#46L?-u"1++X&22n*ƀ諉Cf˦&Uruqoڦ;.8(֪ApJ]83A2:y/?;d7.Kƃ^ޫCcR/ ť1Cq-WR$-Ch$E&&Alq4_fJoϕWÇ૕4goGa7㍋ IB0?E+ -ox&lC[Z1=ar$ 0 vo,P ]MH9AxAre9&\RbA}/TW[ONY-U5gY Vc}mh֠^crSf$T⮌zk/]$Nn?Xk[_͋#,[ݖ{\thc6wB CSY2FeM7uo0ytN࠘O̽6B\+A>^|UhFO?Ec#Fir *]6A 5-\κ]5jgMoPZoLw0;GS챇Zb,%rV7zcڱzHr%9&sάU'?LKoM9LNGn?̎ ݅tg F!:!,-ouØO_S}wC;Dxq|R0U`O|L_:gH{9wc&ûJRtm g&Pӿc Û/ WV|C Å,냼2͛*W.C6SoMj4#> H 97ʕ ;TJ?F(~AL c'y5({/+K%R]ݰv 2ZV|({]]cձi,ʦL2Dz@yAp#ƾ&QFh_ΉI$?{Jya7^v`>匥ƐJc}?`! -KMJk=3N b#N CmwGzȒ:x#x2yb0 sLKuUsDF̓Gs,]{m6/kCl"NH=yhcjZ[H%%`Zz^8W6xF|LK'f:v6l#{Y6>f5Xg6T I+GCFlǔ=ĹR{*܆ΓDkΐ<hw?+8񚴻ِ`F39'v<J i,,=`NJ=&=(d)lY?y握+N!6IE>.$Lt@A/mY`2#T\U049f "n~qce P}\˗r.\&/\,1%fPꃗ|&Bꇳ(7Ag03Ӌ?^r7_@{X xz??6CuvTNoƼ;fc@No,5Txmzi:皜wpN /K淤<2hJ#CEi0tmOus>/ڲ93@z04 vދg3Վy PtcZRn&XT;i`zNMNS؍#"ft ?GItk(?ʠ$<2?.hlxTR!u: 1NzPbod,htPT.!Bol!5xdO @}Z-@l#U0LY:VM8Zʕf*LWyP^q;cNB1ZZlO>%<\^+^ó}^eFetUgpR%jo+q%.҉1p T|gc y=/呧1V\b2 2ؔhfJtWOnb68U]J58}s:qWH_KNFHįS'q|>H_Կ|uP\"ZmܳY|Q&?O\]Zߋc^_Gq<7auՁ~8Jk/Q5A?.n؍Τc~I󄏃w(<)#(?]n?~]l_tl`𔕓GLڿ| c!]\ -K~/jvGz"Y~ !D7' D $ ;LHB؂`v\Xˁ\.?2TO-/+.t[Ct̹g2+~|dL=t*lT!BD+9xk2#20m{ IDAT8w摣3ϱS}|u_D^"Ưfl(C;Eb8gbEOG #Pi5vy.|hD#KX?=&)k;ycYSB&M]I>6pY ߓ3xMݳ 6XPq0 謮jyIGKu^BK.KW+ xг;i%]ʳGgnI9wv{~gxrچ xoN -р[|荳rjwgoA@vdy$_;>}b}6%~ӟxx3v|BfZz6Fw]Ux80AL'!Yv»(($*"rZAC1{D:XR/㡏4=%N,IYw##\ǧtάYC nXTY@vB\B.4~OCj'af'63Mh\h?c<ϓoyo\ qvv6ԝUfi>Rá=?\_#eʫ͛O(XZ2/`q둥lr“CLA}=bԯ~E[r:7KN#-{Q'[:*.lDoilBɱý?bu5AWx-3 ^}ȣE|=ǜ*l; å/DY4c cU~_2Eym_ohE잺QH7$F:0EܹuKV#+%Nr}͗S#TK2؞|zУrw,.?bKsި2|ǘ2^ģtGRkøb%t+d$>  53ykkzfo'S_/T Oht iA$Rmf|RRB㎪0b8;*aU[W# 0ͮH2A6TpJ[e3G&Q25b" G ?G f!稔 EPu [x/Smi%6t:w9u]4!mHر.x#O?[Ɖ{vՊHW= D-n"y:A2 ~T!tacrwTd0:LW>$cKvL+WeGaeFXh𑧝䏌yȼUGSr7C ݊Hr:`2\ch/6u8˕>L~l}#Sd¸<~28LǜO_^|خ.^o?}<^S㞝PF葆m&^S\:k#C,:rt_n|%t^{!/q?3:A[8ʕbҴ%Z;sOE'՘AVZeژDP kvMG%vِZymmE*nZ7u֢BJC$ۺK2gn-;m7\䖟4`֟0rAO۷45̏\Vz=l ̤cD](!y:eyK8w^bޭQ{,}^jlpEr)uⲆωE1T~%S2 @.0qidݱl{1hMIdG V&iW[Zշs *<9)l Kǫ-1A,)m>yu"IK@Y_)[jߧ}a=?]~ɟr^|<-aӊq?5/H>?kt<5{7FhBW(K L`QmLE$1y=ӪAM"!4(DI7b}_ Q@E61XuqsQˠc:fS,-rIGvyh?3^/ſWX $nx:2kãK综&c &9rl#Ih (?z9p|hA?M}k ÃlB%3)@\K&ԏ pr0<< fKF1V(Feue/D+t}[}ekb5KyȊOhufVOVqog MJҥYy1Gſ(El+^S|㿡X4I8%͸/vMe9OWlQ`O[Ų)?I%]ЩLuAIFځ t:@3(nWHAȌ`k |1BvPdER% 9ş<+yHְ++YQ>[~` cwd8$1UXLgGO[P+XF ~Xtbr4FX69HVz>q%;NFr\,sz_g߭bvEc-f>ŋi;j:0'!v$Ҋ" Ov#ZfݲOܫg֞x3XmngS)m4eo~ y r}c2 ۹.<ϵu̲H1Xҕ 3W:' =[ b 'gl32QY9{cX}8N|9C9hC;ZjN7yꕍEoAg<.gVΐ@(F&x+_Xf|l//wYyb%sC냀OyO6* o:@Ji:誂:!!w61 <ځC$di~) @@o!a]ՌP,Ih9.B YWr38¨t74iM>rRPtWN-\#ke]K]mG cU>CoyO^ ᬤWg+F%R_9_-L:OE[lHQtv 娿6] UXr+#YBpimY5 2q1aO r"ܓuΡLj q1xEB!ˠb$sx,.DZCLE7C=}t h(:EQ;8iߑNt#d6 [pkfk*産|y.do7پ>~~K,;u(Hd SP,CmeUv^dC ]!߾3AFwV~g,r[} pnJg wҖq`I> AybS_QQ:~Mƨ r6E.$< oX<ۢ1U,Sjk|Idf*'ց0Wz+A:9Lđ(CJ9[cGg+;oV dI)T{s~y}v#~}xϳX:s>9;jnn>=+R!ɗ(M;5Ðj, \sJ<75{I ]',O/,`v-$LbZsr}M 6y&xefg9:䩽/y-+@.?>oLy+"/d%3.I!c LJw7kuem_&#< dQY޵Hw˓A7ژgtB|U`$\7iI1a9U2"Kt8ox%]3Ȼwe1B!F >JU] II,ڹEB ַ޾d ]OO3S?(K$s ڞ:"H}||}UO:Mxօd^jןl@NaWY#="P\2XwP?ʄSہsl`_-o|EITF3,N'ڝKDe?r-J~v`ظp]g/Mev{SRҸH< 0N6ukʜ?-VwX{>u{asv@xݖaÞejk D/Rr0|#~ IO iz\L##q9~ָ@fFIԒѥïoCtٷ6U>f>1OpECБj㾋&+[TgHoD{2失Y"d9_p]ge^LQ'h8呣|YZգ.J\HAa]YV$%} x=}}*mM5,"GirS!/_);."#_+?mHc%lZv1=!? tr4tF)KW;Η|^ ~۱ %oS˓ΐc{־ŚQnaX!C7 ˤwOb޾~>(qX^-\K5~-Y6w*-cU?Š.lo/KNZі]SIZ4Nix,f%KCAl3]e/YQP1ۉOt7 +i;}Nr9}s%2䕳F%^Y@Az ̒YiM3u-d;{xׯټ}* $hwDžAi,'C#m}#}/c;v~W _#(F>N؏hmpj퀗 ]CWQ3OJnX#NcdH^?X bͿ|ȥd9)` ;q=KEVwOtқE}d43h&M}$i]%%L^蜾/VZK¯X[,|qGPaFB:žf O9V`fsmEFYR9_IoEODM6$]1n-;3黱ʠPHGҚlP؃ԅW\%8 KC9V_1/D:<ơ&fvIQbe:|S78h,K%?vGqϧ-^~^w9NdX+x?'rv8Is%~:oO3$nwS_埰02+j#[$"`>-eA/ȟ-;<^wW><ۅ ɡa9fȈUj2 iWt_ MGia;`Vt0t[1ƇXtxdr`he 7ƅ#>tҷ{+!nqO ϶>o~/x*@uǮl/ኾY\2?qŹGi< 럷f dǁ`Q%T;$eٺD4߂5ux U2ݺtLʿy֌_EJ :i\|-0j;Kp>KF](@ARQH h҄_<()| -SǏJ|AnL{ؙ߿x cY|W'q!BҬ8AfxpЧ0"Gfwf]:AzAΚgɼ2t^z6CwSg~i>g6S]aߛ?lrrÓ2vp):]L'^\{:9˧"Ow͎j]Unx#~ذ;bwVk:Е˕<^*E ڮ2Pg+^m0uOxJJ˱d Ob(Ӯn!j;!dTf OmxI.se(xA̗'$rW& V]"ڄ:/Ag@@KY-Ľ{,oglԪR`N5>Gv++qUGKL;6ɝPLӵ:ek1C?\1~7dѵta峭+۸`XkMrUds4jDONʕγYZN1\IrҮ\0Z6efII[@S+/o/%^ǩ~,S<cuue#eq! qw_v<_9ͬo>a"2d3zEram!L5 ȫ#?',eglh..~MNIP4?ʍo_aEJdܼ7Xzw& ʔB KVĭ${,4>aԙv506q|zO֟-ޱ+)gDfT/+ӂ;xz8wmUDG׼8'lk*A}>Ƒg0V훥 Šn H8bA4OI!)*ӌtFNT/DÇulڌL۠p%t#ǣ6L1n_C\?86<}"uFjٰh *WŢl9I01+|S9γF˟x啽?f|~fE:O)#ߊEftgl\?{ۧ}q_C_|n.{+K%m\[Nclc΃WxFx}8ya=HAPdx`Ngnz6Ihͥ6kyy֖s;QqX4xQrK)JMerYLV荍8Ae}KYpi{=oN'p>6 pˣH29 8`&v^M؈2VzA`iD"aX+aT+ ?Ry`CSvfd3 Aw[&I,GE2eredhyT/_xv/ QpY䟌N.! Q6 V.+0&S3OoSc,yVpL&}{X0]b&d {eU[ IE‰Yy9]:Q6,-M/:|UhAx+N꽓 zŚ3Fx>ǽԾϑ62iɊa/>CNcgCwm}nz/.+cNqޱNf.Ae`½!sH]Ӕ(N$:ԑ6~C<0g W̏u4X߶I$JB3,+]x`lCƺV#]~dd0 +==,l;E(!ʄLd:q$A0 ])xȸF)`H3ʯפM=ëFqd1X3UXH)&Gy6V: V%G8e?:&hb-g8Цb;PmizP UqƦ̍.W#l"f? \}}n?nS//?-~6\.lRyƀH!j!ue'=i=rn(Ǿdy-=8kÉ`I8"o 1wЎb]'hx8bB1x ;6^u.0D9jJ1N^.ɑtuAq<.)՟_>,hzy(EdoD y?r Y!wWޘ/boM均CQTl@Z^l]6-OxA>W/X .. 8@mO }y 0E)ϚbX2$ ~ !'ֺu ,agpX?I]*äɩXt'|2lIsZf| ]q^55h5D^܃:s/=?A6 5:v=41"+80 $!-LGӒ(Ѥ/PqYK5-YgIEks* 9h0Ӑ0ᶜ~17,g|򘑟]T[2|eu`6%!=-L ak_ҳgojg  2ԟivtRݻqer42~gXsA,IS.M}:SW zgg,ɏpIFTV[y~Ppz}|!^%A%7^D|P=Fƛ?'/XM}`2,Pɩ4kƅ/wo)x;TdNK[q8~i|zC~CkX[K?S5/کЄwSӝ7ţck-YzB~OʅDy^QRf,vr ;|Γ7۫+IKatܢi`!*HMwa$y!Q~РwKRW, F_և2Ag2Kdb|v1CGn1lCqd@>liSD669:cI¤gY6y@N3Q8ob6\;Pc;h09 -ʗcذϹ|AQ-ʞh8xm}38?.%‚ $ćdi+ +? wG1|-ǻ39GZ1)T`b]׃SLׁԃGtTUu+:䖿!X68iw_gߤtFP:q@!@71J?6V֮tH+Tm\?::ncǿz+^uçaS؆YjD a:J׭MGҞ?r7k.sqP=FvuTW;ҴC;%i߲ TD@&i@twzƥg"+oeC<׾/ٚO|*sy'+8$,3;ͪ>f&]ZsNI/h ,yZ7&/e-~ _=8YYMktMiS 5aГ yvYQnY'p %n'+.PN+hT=­Bg,8',~)~=R"wѯVV8+cqU-똩WPZwg?-B09Ig\o A?~ɣR?i G=y|ڡ-x {rYo\8v?xY9S}}+S3?r+M^:Wx\4_?E|&f\(SZc<>ܖG;Po;R//AO\iWpf0ŗL|r_fȨ,gqi=8efޓC6H}_p 7 SK}G$W:l1;[t;ךݵC M ]^ Wv?! A>`F yg;O90z#_8J[isLda6>dcr109O p5a+XJ㹗 ki;v- bpr߱ `9P699iKLޮ˕ڐΎt19)kt>ո ;mY {&KDˤGqs,dÃf/}BX6:; L~2k~W%ؖj]ɷ~B/d:K9iH>7@IGfnj8 sM,@`aWЏ{N= Bq4+1118<,ˢ!fhm1-yN\$Wph٠+uv)a-P)TV;*(,+@Ɏ*r^g<g߇w;6=&/BSaR7c1ƴ3`qIKc{_U<<с~7ٸ!ndBB:+fPY}iMM:HiNhBhzz4tX*q^bsoKK^yL/6Yg2Vν,l^,)Jf L{^85@сe`ot)_#u}-I˦RI>][4KqOz` MQ j@Dj wޝtl9|14ZxHxpv''AtU ) R?=>$p BvҸk7FAC*2I7% Kwg@=] iw UfJ!U7rXi:껑KӼ~ '( <;Q؁|Vpҹ;Sdf׽yz{W<۟7L_A>Ē[gpyKv]?)'AU;o޲pð9P$ 3uE^ؓJ mxc AS> io,9A7M_n+T ۛ^jC[k##>re}}D̯9K/"tSp8I.m:k>V>"x<Iu$E{ߠ'>Fܶ0ˠmMd %`-XA" $ׯͰUeM1X MUdS;UHOe>u6yd u umI` X"UVҦlQ`|o&ӊe,A6^:.upzfdR]~lha> oOOg-T7nVuLژ*Shh觘D'wf/r6dΟ qL+5籫>#X88Wy'ʀy`kǏ! v (H4 ?&6[^+tᲢkܥt.3HfX׎%:*re9A=uIsWO<5Ƨۧ?@:u=C\pf0Pc7+BGջwe::>mlhx͕QږWF$ʴlCjBi"K wYwxBb c9 ZFwt's~|L MӭNG|υ,Gx#`}Ic0ax[X7yAP~E;bZ/&-|%c(2&TP=7FUt;9Z7 Y%%tktgǣ, 6eXLXaV|VhT<8 X !XSZ]i}r8:ykXXISy䆧#Q_DS-g%og/οiij%O%%A*]z-Qu;b_fͷ߶?nkv6-hiT=፟'!dž[|_uEf@k<;(b}IrD ˯9鯘E'3G*o'lz#@IGud̴͆L qsgbeK\A?$\ucf@ĽkNx2+O,E?LYn#ONq/ϱ{5/<1뭆dd л9q24p{} -pJY襁vئOP-@sU HisG}_ "uk'/뒥iމE,:dvYtƊtg]/ Er9|u1w!nW/߇Ğai%Sʒ5)kW dlee%0ЈacB=XDb:|!'=0+4MTh_}dOG_2YA9 &ɫ:qC1/-}x&I_ʿս=GWM<`TBOnc>lM%HN_6@Z{< _Fl-_ 瀭~OܮD0x6fs mF$ fQG{(R6 zW*:dr.C@T$hEt0}l*FCѧb{j嗋{g4 NY^֘J0RiR*΃~װ@mj.@6f3A⊣v>#-jK`\?$NsߵPUʘKfv,<`c/mc0J:±v_ɧ3m(8a%t{dU`{J:ݤ3> - >HzGm^2 o>'# b̊ǙE|}\w$x}T]_ec+v xJ?sς.bl0pͻ @<_YV>ޕo2\\gYX̭o1-kYV]}rp%!%WXBJΦqu"-EG.mGuYK1JY4d矴I0yg}pPuR#bw9~VT9*Oxwa;ji S}i ϥwKNCA}ȹAuwF dfP(H0#3!|1Ȝ?-vFcXb݉G Fzy^b7l-כNǎK?af9)[Q&Y^nN|P-&Ysq TRůr8c~⌉_A6pI-}sA'CF2aaJt7'۷t T>v[QmsNznS%Rt_!/3}tGyHce}ŋt[:tt k4 Tgv,w-֘F9+5ա0P;mPZ6wdv"ABH|H|J€{7||Yq>[ovSO ܠxjZ Kl(.qY{pVL|_Y~t {%mP-5&'py$|Y6XuA{!{%2~LpM҆9 1p̾LY Xr@ډ]U2O uU>Gپ3PjT"b+TrPH TG2X[Y5Է#nybYKoΛW/ }Z3~x@[!{ BGKSiyD7?:!-A)_Ir,'e(G>%ȣ N_/F/K~{Stclk*fYtFN_5ܳI<D70Y,:pdWMfB%TcqK6:W_mN?<lHX|q19i|a̦1w-0T]ZʺV敬w +fm&/#9d?3WysnyI(Ngp9Տݞn_?4}G~ 4CٱL[/H{Z%]xgJk}锑wN|[;9;vfG>l8?0pFZK^3s(w?3bm Ng%qC=n?ig;KR7gk t8 X؝t hĚ $Ͱht}(pWZW#\:`ۙFt $;L?aPp\eg76/qo  wCxe-qGXb;ڑ? 'ꚺn#=F6Fa-w|}c',91@X)_*Y ^Ԯ2{tH!+#ro#773%jMe~Ҏ ǭ[Jm$ ƗDʀ9)-,T!/LQ1-ĥ|mP` ,snr'qҙe%& \Y}G @$~1%f!ą~h]xD5 b%R-6x`& Mg/\mX篼[H%epAXsX c bOo眝O_$ -nCccFv~`k[^'8e82ja^tuS6)]D7xﵻ|e C~y7 nvuB<d)vcc]|mo, +?~vR9i JgъY8. QX&mmWU%ߦam`tdn>0W=XW>\'~/SG[ zqzϝߠr?UU-~_~}͐zQB}΀sn6cpqNjuTKc W<@:4R؂<:Dz2Wl ŁK3R$CK|ǎe"yT?K;=;#vJ &Vވ1H_i c&MhWt 58]iˋ'Ž0.H#Q>1_ Xb!^h>vQ6%$:]T5q؇J{U>;g<d.TZӁ 9;M9c,7&uNIdInem*Lzf(TG:Jgy/*̖h|r;`c _9ғBF騂YG6턵3MtWܒL?3!x@4=n;Nj[| 62[vßt_Xe GV'qXNUAWP8^|°TF'YRx=Iι OǦ^(R]id|DZBm޷t>wLK@O^y}̏O/瑹l(yXO\Ύ->{,ش+:XnnG:.wu6~j[ϋihHG v+Vg(|/SRw(S]9i2GvT3:.Þ9#~|yeW5uG./Ͳ1~Ħѣԕ,<5$`tDVC?ؤԵAOJߔ"Uoa{Oi B&H O۠H'm{JL$6 '@'qRŖ%߿qtAL-z2i!Sd YZ=MXb]bФ| DCC,d S5up8DYrwFCW_^Ų/g "Fd&0.>B+$8h'5[`F`ͥ) K{nh<ã3 gXVL̆j?+q6q^MMbt 'rmlSb>ݽ7FQ(YAWj:#Ϗ[,dâe3X>n*S7|2#r)3e%'eiOlvv{K,{kyF-tg[Nޏo( <H;8@ÊSVd+h.mb9eb%COCc$.$LU_WP$(CltYgH wx3y}i 6 푕":tw{/h/YX&o^IK]$Ig"TWr80ǿfK?ƛ]5(߁X>Z:fI!v%z<咝q UtyNRb( 62ei;uP=+w߮YiMaeM_ 0kS杁*$>Kp2 yϞ}qK/u{^K:Ɇ)y %+QaU'6Ag}c/yXB^YI|.0W+rS!q^Je'I $F*@eb;f#JvF]93T]lwUT D9n*% v2VW@ҸZQ }r XV1*4cld%d#Y |tHf'}LHqY\EGo*,gZX{qڝ:q8mcY|Aį 9X}}◿}L|\uJj֠ ~:;V75~~=4UP;Tv"]0ʨ2 C$pگj>S.W5r8ChHh ޡY'|Zmp^ns#xq○˿򁘮`Y`d nxN5Y]6BGTʕ&s Mm`ToQY j"30HLړAeF;v‚ i_TiS[UG,`L 8;]^dFA`:s 5 x`#<*R:F#.yc ?:!pF.m ZKxmL̵1s`>ع61v|Gb{M& g쿳;3c>'-y `:J3 ?mٗE0ICHCجu6 e xYG vZ_([Ҡ թ>jȻiiV^=.W7 ?ް _gu%oGZ_Wp " U4a"FIMDJk *#J X O\w!Ȃ+kX *o)☏"V,#7fQ _[H2!,~X `r!56n؉>g(Ѩܝ/(.V'+T"p ιkJerUu Q [=G* c$1]x@F 5j[8JSXuD;qaJ ޿$|xJ?l’ HjïiZQ6fu&[?+mkv$i##,moԼXט  olol٪M,-;nj#_l9|ոͧ(YR+ 0Ƀlv͌>Yo'uYm&UuNј4zt荩J&<\EP/$PFJ z U~ X-5x,gXtt1t7rx7cZYk9+`,Qe0x'6 >RѲX8B-*tc<1ଌV(╭_>tOxފn}8ÿQCA7Β ๭+.;SFlMXZ66:m4S:6"\@ސ Sm+hd`x̆Y|Sc<z8_ѿb37;xy7y^-$y7_2rx!-k|3 QA}TTvEڐ9R@D[uG>iϾbc6bQ)VxS8,ͶU#iɟ6eJ-,]MYfixM^ Ƕ7lW+7xf\x,Hk:*NWa٩H(0e=䳂s7*6_<w+u.w :G__~Wu_XDi/6/ "4PwiD֋Ζ?o_>xpDlN:e"˛u PGVLу [ma_,$$1tSO\#o6=gqHezƝhmӊȳ2[7({D+ !-xz^Og@_}0 jk@u8$p@y4 TӰ(Ptr{38{ "D! ]dt, ?`V p|Yv )w8X^KSI7ʤ`n# [YTwYʚLȈuXLQԹNZѷj`:yg~OE3|׽##mCbJ^xg^=_^ԢVNEiȮ7 esTz2|eD5gQR95uГi1KTϭx]\_p"N 2J]v]애xrN:{K;h m*2"kfݵY&ZglN6۠_k2;FDdٳ{B_KʳR^ jS dpW\+Q^7S֯<IˇAx [?`K;fl 'vtVʠIw+lh~"ja;/>:I(E('~UIkrW.ݼP.SK)9f $:){7\|?^^Y؁'~Xr|ӿ6(Qc3 jbvv2D*ZTiJ+֠<^\wg6M]y,$8{ y'9.GpG>A gC҈?u嵣ewO;O!+Dyi ?>=%gFb~׊W2]spO?+p}3>Ḳ2␏hG,<\{{&6G.onگ~eW4]k^sEQI3벣uG44Fg46 NG8Rd84q5P0ibrXmbsh*Hl2d6ġ9\ qڝvh #GשdKp]6oi1c¡]]ˏK/=|we;T=k2xįhHN-_ϝZqɌ!1NIM$thQ!vߓ BNjx32_ҳKa8{0mVuMwn>|1_ѷ$;ҷq#&Cɥޕ8H}Cwzy8ez9OEŸ1S/#K9t_Qw;f!"xu 'j ©6 ͳ\DNTIB|/ @Mlf0:ay#::QO U* }H* #llCPe$#5'$7kT4&qRЕ' )΄&Sl[^ Oc12#Gñ7[yQm-k~G1!0:Y+z:Hd"C!kFV4l=_W*TTT`k\+C/pkj"mh/]kSTkIO33xH?U#22k#xxϵɝ"~nz6wqc߰7g T~OGwY4T4jlo\苏$^Q*iWK tkz|B:S_a4r)A]*Suv"~jNֆVZX-0ydɫgl#&:h?ӱX`F<~YsחxDΉ_3 3OH'Fq^G?ރ+@w<KxӡpVK\Svmov;a8sMؘA3GM w :c^3kf\ʇ Ҵ'5)|K@Y~|~dž[It<g+-HMB$]m[=}lh*v@.ۦ!tfOHW!: S_cʔcrP#`m::yt} B2='ay`۴}ы$i]%,Ǡ,]O,"hI{J- WLEl|96F3`Z+2!O.ʨ DP0 TGcTu}3F+G"r@+)o`pVC :XpfZ OZ:96γT7ִGԽXx5'It<7^kNj[BgGt}/6vfE@~mGmee^%CIYu>#~l HK'ƨhQ@Rgt6/Whb4VS*"h:BD } Oe&>t@zs@lB X5!m czjp]Br ]ǎ;˰+0ѻ:KXNg~p-I$.k 24 sl#3J/ݿS|EE惃_:Bܓe?ZHY>&k/"m~Z 3ɪ偿vk#nolo#S⟟nǏ7p_I`׬GirSO e}vǂx}"5jHIWWjGKGC@V! i{ٯM!qKWߪdOw4riy)[.I\3ޔhD<`*Qe]"VwY$jy<6<)#`5vT"j0D+؂A0kpb,_)tg9?:kG3GOx:3r /[Q5cqQ;pǿ |1KωAE'Nb#.k NЛu9$9Hkfu?RVzj}_.~g7D,׶ɇxs'>{Kmhfgai>qs'=qsWA0+^}6/B425k^8jS61 vM}?V_𞿾#Ff=o,6Fyid[[\i0ё |}GȻ }hJGP RQa}h+}f(=8T*»^6j,Kd#୸!<+N#x[^?ૂ,V%|(4V2oF |-Y+㴓zk7W2`$Zqd3_Qͣ6<]̩J~zl(~7c>|tDLt ]~[ egitqpBpx/; 0Z/ #udiU].0XUߞ> 0Yʟ&0ӒI@ؖul`?^M6@qɧ_mXS7ƽ1qMj\٧O:J3xeJq88al/L?kM὏2I^nI*#sW0$xZ9" Xa /I7Ӆ /dyU${8$Cxh0O瓮-_[y@r2:OakgX箴]~ R9 I*G MIOh1#@*+"7,cJ>+0~':\8Xq6uy*hK3 7!SMVFyFH]} ?|֟co}Q%8?@ '#mqZyi?Ѹ1U}L?wkk,_ xNyNyE~#oS"\ 6>C]l|mG#dD\-x{1"megG9FZI|DKHz3+c~v؄F/ix(>4 t.hLûwp>B suAƸe!&3ө?8Hso1JEإ@W}sB)B.Vxc\K8$;Ӵ֎_\f_//~ يyp®6N!7mW}w+~O璙.?fO:PPD}:-6Юm$_Q?S@8b^$'o?- RI~NHPƖG'geIieQbv|Kl C۵ٙ4Ӈ! J0~֗l%NhyDW jo8+&`HdCg3b& ljYe;Wѽ_YMJu{dteu&/[9^9矣,F:?*:Upȵlygk*^9V ܕ= zXᄏk{6 Mr& e4+ilN@8=%u-SFOO׶wGAxl/=j>YLQld% 87G1mt"N#'\3N3134\3iK; rO^#o\Co4z&RtH̆A9_x0A[p!>HҁqjjN@l2Qբ>u|NZi@{Di۲:,e?wq{DXNȷ"ǮO 6|QFoX>on W``k2璺R%:ݧsa4|k%S>]#ȴ泯tZX__"Q޵m|S3*0}XBp\','8cO/g,c3s_+2jBKwy%<cMS(GR`6`}4y"t5!2jGi"+l1 80J>gB)<>_%c襇wBs`/8N; /boRJ”i|6Vnuhm#c (%,4X'Ue+*+Ȝ]{[y%bj.JfzTC1d _Ͽr{: gPHNf&V *`ֆx_|Qήw6j|/ dֆFv+ڲWC+v<*87TMKD4&w8l1"v}7F<4Jp#7nB³fG[y [~8Lz§Aog͙ ÷*o+o 8ҿ<ƁAαSvA4K>l*=JgnpdgEk_Ն>SN[.R?17#{; )3xI:P}G?4d~ݑY#a8>}$/EWaI#VW<ξ u%=)5cO0"f]٪o(Oc)a[g>XshKt/ɧ,Ͷ礣6;u0#bS}ټ2O"N~bȟXWO|#b*:'-Gty nV5ߍ WozNkt¦ʛ@v_pJO^P['@| O$Kc@-tLM^ Wd<˪>r8Q$ǰqZks}ı28 mGȗG#\~++`@Q[ *Pf:4~goClɽk,b䵅`hp桉]s,O 0 k7zxF"hal3nP "gLZOD<#6. Cp: .pܣ Ɖn`sGŇzRKVj K?vohL}L][Ɔ2>f/_|g,ųF<ϵюO!Pop 4h)0v}ҕ` ό F~FL^YgaEIlP&Boj3k3;c 44PiTh;Gf!E?e1{G_>Mg9̓M vi.t} /V IDAT:kOg LW8'ɷt$mG+vYY;!Cbk\Ôsp凄|_3y ?[-])ҵT;ՃX,A\s~ޛa"xҳA-l[a Yo:ģ<`C\viN NGt$;' iK 8!>aZ"Mr2 EZ&ztH'@]wD/o%^Mh+zC5i8ϑbz .Ka, Ȱ)VœܖQ[^I90XH_m g}%LdB:E_I?)X*‡xr*ʑVQE:APFqOc׎Cɣί<_f?lE˳<7r5g_<[!Z9l? `4nĭȔD-id'n1e%FlZ?6>ǠV*^qڙR3-q; 7`ν#-Aa5@Kt+$n:%|ǵg~M볭2Øt*m*lN /?߿|~ۂ]e[W_Gns JA}_عk݄1cPG4#ۘK3O7O).^'L,!t'e_( `(lO~Y5ZT㒏J8kaNKOޛ<F-/3F//PW/c c@zn26Ƚ?0вYxe!vDx*^g`%46:8x˽L<$5>r_T\jD}!vNx/ A6prT(2"RzѠ@Q6VYs=6wEORʹ6ԃ~NSp #MN2N,8ZO Zթo1!B)rIGd;(b٠ D#>/QQ}kHR'KB aΡ၏8 [WbrheZ[7JNJEA%dmէ>0y lxچA"# j{Q7F*-o42.VNAGqƹ _ޱ EvʐDз|ogM`!8Y|iguWl~'-)> m)o49㵋 Ϣ ڊàWTapqFWq  t1u;瑑[Fv9jK:y y9tobgL81h}Ό>$zKfld؏evP(0Lom)eEf <{WU};B[EW_1R6|4>#~ /BJv\" |#hGR3|3 YeάLZ-C]s/Y mW'e2#+>W*ٷ6,#нՇ2yVXVyYtĕx2T#m¬Lo G6zle%3FاF\ h4Z ([qn`CC2ep1Ѩ*pM$;ǀ)4>i4䟌(OӭL H`5 kPݪī{u?%tF8(q*rbE~j{ xӈ㬋ǍdY1)q?!CFX\#A# HA$OwyR ~@1l97>VjP*Sf>iiew&(Y .[:{(\F{;_ҁ$Wv[:O< 1|4d'Skk};WWt\u#O !kh87/"AlZ#kHaK^daw:owcf\GjVx.>NHSm`y)vm<6- ü6/M;q# ޝ;ן/{oZv7H+2 L󱙝w/~7Sr>ȕ٦lP4Y:ܓG:7pj< XO(>/Dzt~YV/'DPGy646^,⒌1xgxqc/?`<$EKG 'Nm\8eIƇC[;_>'YěP:VnJGMsz)ku8c vNCԁcB(&kJpuh\c%F%,,9-e[d_'68d. lʧkMf/wtߨͳ-̵'Xqt+ID0G|S_$$=|e!Q)^a):';QVlO\oT2*kC#y=Pڐ΂#NK)3BJ]jwzU6)$"˕pit`3 v6. .0 5 9䳑2\W##|)\:ORN6o?d'lHcGNm0.y?<æ ЖvNQhdCi™T俍AXk}KZ6\Љ||͑VҾg *[4jgcH&I*_-A`eGy&fod#\e~L|l׬-)@4CxtBиOGtfK|O/ ;!{s*A=886ށ$?,˦L.j^;6Oo>*ʩڙ (I{xv/&7}ݣ,mac'ᪧ#, }a R7W$qN948l)N¡1g7ϰW}d'!#2N^?}Es': UF&Θ{7!|xBgt/5<|Ω`RI3z0S<ƞ%8Ǹ8ʉ;GTrPϿ_C#NfT4"az!UG}|J0IGށ܂#~+FwC* zRm䳣H iQf[~TL+N8,[sԪ , Y8ȍ-V?ɧk2̪bkp fjjcoEF- a6h {6 ^ 0NLX[lyGsjgaEy%tX`$2Ӳ4 y^LE 2⃣_[f+A:vBX2w*U3NE+{>cc/߾0;4PgIo+;q݀v6 ;Ƽ rD>َT^yu; Sv6L>X?}y,}. LA'AkNino1gjx`c ȧ q12v|ݙx}R/Q| x 0o>™aliy0ȧY=[6J?'jlؚBlhjIfB^] HTȣ7Ub󅩍BCŒ 8))z+_f4?}R+ɆzF>/I{g}He5 wZnK* ,arm&21 ,~| 'GH_KǴ ( b tL!|ziUθС_N',qhC\l Y©l}ilr.U<"Zu"%̿i2ȣaLT٣)IDAv ؔځq< ^mK䀙.Taʤ Mp3:60 QXbG36܉-v()myjVj|vs*vact|, ht 4oP+i3Y7^Jэ~n֍k˟``hgi?љˑ$ܤFJM~,QesPHP\Æũ0s`Y43>gqX874M ~H}葂,2ֶY3#h*'mc{߳ >#sw;d5aI_`)?sDs{ PN-Zǐ_fOtxxL G֨浝mtb|t!?;yeHc=V?:W?ig|1t)_%yǾ>HAO9%HC+K9v.X胓]3Щj!c/t)4^odCȁ,dʋ\OR A@6 ]dX+Ÿķp, 1ғHOt SGbaaRNq=k]0'VRw!Lnr$߸&:\roeW\UQRaK"98^R:eO8:¶2Zۼ;Q'}TӖʼ׊vm 6V<g%_ l.vvF!c.3 VuΎTłA鈿NW u`k\r= .xxk"2q U~H(S:v0Ԛ3@pFC+6 d:=(BpN}߷ 3 UguPV=ۡIG@k`{{TNoxUuE}- ˽#5?>|c@fgnvtc'! t48hC_pwJߗGn`6So;vNgv_XNrHF$viÆc#WRi 0S^F`FLc[ WYy#JqNTsה;u"q|,F6~4i6 F6AB=eYxa{0Gálof6έ)3#4`6gs/z9)x0+#gU=N{g[Q!>&]QE5PWEc+y`Emy73#=5Gh G;~旼7ӟ~eٴ lr 0$O#ThG,8NUFR$Ϛ_;yfG;v$v"CF_َ0ޛ/>Khkk[40A$_WϬ=߳6ѶG3CcjO0AvꃄMnYv.6OW|,_p\gO,{ ꀖ;dvJ70;-?д!LO`%+wϪUlOO?{C|˛ &OntT1vv}<XC$~25Pd~w_'Ƌe"ueD'"]eK:̏Б6rGJa tg]=>r4 2lp8Btc¥[FO!xcIsJ'46t?es5|#y ]!.Lk DMgk*,#dW/=+0p @W+uga) SH ȔEq6l鎽8%kox%_@ah<=ꯌy+sT|G8ۛ186j;uWܬeT]mAmK?wfc wӱ 298v !,\QX7!'#ϴ*K' NH%eɄ#/B|q_|+cɌ^7PI4jMyyacuȗ,$o8#|6DN6;7mtqlс 7lcenkxeY|pdl0#};%}$h>oF:tMhxdNUk>Fy/goeo$w#>U^1͏LxB ǜ;::"mݕpeQixuIˎ0#Sk0>m(wɫ7,x|vx[UN9A7>,V ; uyng`_ޱW94@MnG隧;ڕܷ?M^lrYi0GpN~X&){ީeSP2)M`w\_͑:x@S`+ =r<0$$"E8+|H0N1X.A eՆzMKz !su+vm$=n 7rtg%o맛:bt'TW4>ZކA6MH˅"R[!;~Cgul1$!L;O#f,)?b#}\-A`zJZ8YwkfXIW;@~╅.>,GbCZr!N4{:426֠.|1GD%C"d'?M%>oA$ Og}@2 ϤL 3Gh$O(}0N䵜$S%3/oIR G;~x/%:ʄͶLd)^ʸc:/Ha0N0RVw}$8\(uX~G8CxOOBm`8Wk9+J'x>tNē@28@tH)*:>Q^áL1T3Z&6 :4;3]L4# IDATZ9`Yn>.S: k*@gSz_d)-p&J0(HQ]t_Vo°_tkY F&@~|BF*>7B1+ +ZZe4A՝x7`e#xp)qv ,0CXB?^hRvl ]x^ 6qYH#)DxtYw$lki#b?uR6^[Y;h}l=Lw=@%L4Q|ӭhON`?e}lF r]o9HLn)"c; m3X`V@컀 v-Ƹxٚ9TV]swopR#m/" 9Q?lh=)P0K%6ԟ΄!>▙{>J U W;~S@Fa;0le2jɇNŭ5nӐک2Non驲8|zTwLǵ<-6&U *z}lk>brzp 0ȨP z6L]hB80pNW_?^뇋w?,k!X$Vigq֏\+6w5f3}7`+[W^Oʨ1-\& qp/YP8 @[ 8 Z7e1..u_( o\}ὡϼOʭWÛN8crR4_w7V*|m#ov ŬQGl:=:]y;[1 '/1Ny\S>< tgvʢ#\n?#4!?3Vo(CʚApS>Kk6` n9q)gYE!K;nP}:lv<ޠ5;Á14/Kv Nj#hdFHr7,sfx~,|WqhV6.+Ww؉<>wT7LիG?N/ď TL "4F@R BIJ=F~Jq6IF`u' 6|fhc'FjΛ No++ 1,a ʻ2QA9:#y@ -Kayx< !/qRMԙ@]Gdu W 1A-Yzw"ÃSG!:~Mȋl1< >d9YŨfn#sJ~(yI/*8 AJ:frO=V&|cMw\ |CB%8ePyG.tQt2n/LK0T{iXu6ЩoFLOu)ʋR1CH6@Y6ݺ̕7 }³ie@Q<\ «gqTǏԊҚ'V`c`i kc>{_Yz/RSĖ3ӽ`dZY)_i^NiьȢL/ema"ZX !0y],oQ`ّ6,sϟ[ 7앯l,p0/ܯːEhy>Ϩ1"y]jm!b(!Ϧ HFFm嬎AZPZQ6MϵgqL|zYy"6ALcM̢J}@%˔x&Iy_U/sی6#[??[ . 7n 2Rg;ƸauЯ&:蠊N&>t#Y8eO^ 'l )Iȶ'?'y)vNH}0{KaxL&J˿;&8?K\(BXBf:8q :puV܃}On[$︿rQ(r!eN/ڊbK,G(Io -QP+XopY >6LT_X%!.xM9&^:Vv|Q[-_$Ms?v⦫Dzxc+ZŒtwgςPʞ|RtON S7t>dnE ԠCsuO TfOhɵ9)>bq5&.]hE/L*9BP x7؞2aKcC;'? )Wjef?٭#2 JcQZzT[W;o !h%ә@Y:tS>sGʮvAw|\ !M ?(<#2<3|rH7ċg t(͊6; +T&teBki7pl $VhIn}Rʇ"_^`gXD: \ɬoH{˴Qo.x{nȮysC(iבu#VɻC$p'V:(roWJk#( U]0ϵA QU9?L+ >͂pW"H0MJ*# #rUޣGGy[DnJވir-a$#xD^ig88˿r跢'x b[qR:alULQ WmWiXI&BLHrab'> j/mCN ,C6 6"TDZ8w$(eCҩk8  ;7Ҧ ٣t@:+06\V-TBž"t$iMly=|]Q' Oڎ>}Ѡ+3DڮׁE4SёtcOGy!)txgFGv2s}MLe?cKxZ{tH36v|[&mL7'dG&R;rn~ c܆;96`֕ogVWhߤLr@?u%gH5 ;,oE`3@iqn\!.HvL-ʱ_ʻz0pv{yq7ӤR|FysFq}wh"IN.`4.r]\CTWش0H{,~tmhK [ گ+H1K&[bXGCJp3xxp~Ud2t3h|qA8 S`Lc* Jo :E׮ʰFraOD-EKVH6cS TP.9nߟ`^S*#G&}tQ`i7?X, ]YZj;6jHttBF%eBr4%/qNo7M[:VTϑI ?;Jvډ#D@|q ^yEP><Fan6e{HT_l$/n/\;a8iogyK|/jvc)ttB^CYx}:A4y2junm!FOH$l* nנ޿4TȇNsA5|~tnmLyTi6V笓ǡr$a(m.}L'N:)JaawUrFff* r*8~2D4s f_[tmwGM-`彍MG*|#^/}S8*#T>NQ ) Y)#v7h^9ĹJ⥠MR1jrb>wu x6 {m66OwƠ X[69ky`ʟ` ?*6{OW&;:%i;fɮ\K{ kx?T`t~p-) { Бşe\\'r}Y4e_P[ae]棖<:i.pGmIQVES6W^{*>Kt8y{÷CEk,C IVvN<c" iwGLmBUٿQ - LPh¬aOmE&Do~L_>=D;H%Gio;s Fy#zCdkܷRSCtQi%M+dP% hGI U9*U? IUL_05ץ#E o'S+wN> K7ୁoZiXIF&dV]ʳ灙,GB!`4> x+VZ+vS&,7T?DWy{ǴJ xÿ^eFܱ-_Jk㍜=fB =G'3YBʪ`QmERGF\*Wd`q1HCw˳@.B^~9Pc@~6eEh%?xs˫ux(t#۠<;asrو;7.΁>O^T*ҲcHX|,8Ӓ{ m+f;6LF:Jt`nE6V;?X)$Y'B=V VI9FyR@:Uя"AMt`z%&>thGyE9 m$?Nؼol)/pĒH4! 6r\G0q\G7~a 2ȯM$ʛqVXoK Q0}.K%H:†Ln1J49oXqǘV6d)Ăw &Ie 嵼?G3Gdbld'gcbrZ]zO: FrW;_o{Ϋ{| ƅ6z#g38{T IDAT/kHO<qe Zd({TN+TDl͆ʣ@w+k*l+jLJ׾4F/pQwcNS͆p4 y ϳӽ6L[3wWT" Neei/-G.Ja'Bdz"}: q̇ vpDSƹ v.%Lۡc5v6cÿ#aT&!*Ψ4l,];YSßv>ϬSndX/5H~AߵFY R ^"mT:Hk ދgRNazG1=D & sȷok}-?%FgO$}[:|$78aķ!]^6w OT'$9iP':5"A9w'qu~ErH$Z7ȟzG~+צ_:ێ,]q;ۉC^WpB@C4+MS&oǀ &UГd]BȄb&tJO>Oŕd.20y #_:{OmI {ɣ-OC:TV&z&} dˋ.Z=W+͡P+-//6vuW4SlԔ;JTX~\hOY!-4h/?>%. NzVc|4N߆2]qIN9.V:g,Eӗy^-Snld:ظ֔FB4@&iPBj*T[*TkP+`PU|хS2.xG* :#sCCmCx p(S l8V1p'MӃO#k#2ؿЪ6O^_-SIKJYE D,mqvdp$FV\Tr¬L .H>ڣAI|e O(ʧnCB'06N^me'.th\sX_D;vزL wZ/rN{`RRrbF aɉ S"]D6E|9w 9, tn[^ x6C6>7]m]a'fv@2{SޕQo 8p@Sd~'W7)>B : :?X'vxf%Ӽ~Y3t&ٴ{Ly xkΔ?+ⵠX'`z/7[!Yc/H\f+/L!?EA}$]b#`yQ;02`/:ȧwnogj߰Ŗʹ|:ޢD{TAK?.28Y-e%.$ux-wS1Rl/F36 syko$ AMӉO[hyڜNy"i~F :ŔF֮=_ž<*mт256qe%oqT|9 `)3l&l,Uz}+Qm1X,4^fڿ8S){z2=\Y $Np9ы{tNNv:GjWi+,zG-,\}R#W^Gt`OKu e+Ur6cּ |NƸ)/nsw#VfAYR|. "MQy+׳oE\V#nu\\h崼kg^tCBȟosO-"UPbpHNyǟwJώٗ%,mڲrm|+~uJZ3,AK=0ō/q/ubv0wgV\) Mc֟Q&mp:PQwO+,Y|Nvr-^}Zշo)UH9B8] ر$OЙ>mJ#YEguZ=\SbyIkF Lv^CwV[s _+}AAHkB b] ="{ĶeV1%Lxkp=MlyE;XhWұ|֗~-LR J1#ŚW|7=SC|O"z !A46M"Iũ]r+&dkŧvJ ۼhx @ŸWUTR,Q+'ed6:!NEV+HR̆,@A7vLꖅa1p@rP "ABnuE|娝rEfԕԯvshI33JipeǀjD d2ƠQ$,v9QzdIɐ. N+ l+?%3G.9㞱v88_ d5W ?i6 ]Fr"Oyي!c>MI OTKr7͠/o0P8h ?"7|W Y)SlRZ(α0/Xq!]"c{po.;QB?8u;W]@@̾dq2@@O,pҏ}:ozogBXǵmbxS?B 8p!/~OH;G;jjiRڦg!dKhOFȇ(Khqs(V>t܍sƙ?h$r &_&jnY& ;^CxS=-xʢ*Bq 3”I1Շkld(P:d''pK!0ЗBuÍǥ)GH R*%Ae))h# rޜ(%22EEeTB5O;.ҋG΂+B\gW lv!8˕u Wp6}Iywa_ t;{߂ EUqiWhy2] #ΞL)l=bV@ӊ ^cw4j5Rp \.{g 'NYg?nd e0:~5OXi|,yנLtVtw pϔK|Ӹrª#$nd"_eF5@Z/7^n˼Qf*gù-츭7VP y=;崓xde:wNk雦vW*C Juokct[N ؤ,xOF_>byH,ؒlg{;fpAC;0u/$Wj9G1[iut] إb2mv-z5y#O9į.6jbPy_tKPTB.B^]#y "nꦊKU|MTY1͜zvfh^(oj]<jYԝe)OIKezh)*vP{:S߫_%KVuyyxGcAFX7be[5 ;J⿕h@Ji)6ȑo 9yd8 3[ٙ^8;Sv\F$q W+ Ee.W …~|GOI4eRGmRvտmu X Zrh?\*AA΢asdW~\NLI rzڻa4CFRzqA@Xm .oxH-0l~%8o}?|mN`VLA^Z*Lbg% h l㑟0?vڒTun[ K)yȦ`+?*}HԾZKn${$8aeצ3S`\g#lsӽ>sL 8!vAǘ[/:>3Hu~˩x'^/a[^MK_&筈>DI~3Ff0N_"28$w\Xh9^_lDu'+z}!RIN%ü<_8$жt0lSK_:Ǧ>[؋dYsdǶ1Rk (i{kC7yEC h Kcd?C7_3؞uQ7Uր%G~-INf%ԶS/ Z(Yr&zD?|*ͦE +*k @]hG0AY^jG:L[5bWU)S-xi 6yrC"DžTvqksG+BY89\L/ .6[*ci.gIgm#l`:hGxuf `b(leyT3OMҾ˶ND8b٠ÒI۱A!0;x験6x1y~Y6.0.UZ+ck:WVE^|[[}#3M̕b(MWJ*8c]fMzFV K|'3<[@4&;6;(ιA>Y`<'@֫tԋ{};z}K^pwğO}v՞VSa{r}QfymM  ޗ:Ɀ\OG2=v~:~y,ySH[$VPH-6zy'ulRw&ꞁw^V.U竇^C/UȭO%!mɘ"]kA`Bٹtp iϒ)1C/W΍`6a- @=lt"!yd# _"V8Hr'rj01&rEH:c9W> N.-)Ϯ., :Яg'3W&2~(׹R!\Y2y}`y8=ycL-n~b%i)7M;Yq;,\b@䴹7/ }N¨#:z:pu8oF@.2t5 jTI+.@4ev鸠)nԋ؎sӅjxgUze یOW|s-o'/IVf 8Fa'o=/uoj/J@/ϑ=4<O㩃V21hӬ76):봿,f7}]l>rbFVA6~ mM*ŗm̤u &}'< ~|ҫS|?o \'e@ ||8v˒`q0;v^E*/Eۯu1 $ '[6R3́4S#AEON4Adi$H2{?24X ^Ҫȍ`Y RX+t*!ttЎraI9'g),@d` &dS6eY0,TEm}$Nkgs.7)NդE!h e~g9)r,#NxK}6سXH:OYlT.i9 jz%k+ RM1HAAw7`*CEc IDAT/{o* [Y9`eJR 2 jOlG ҷ4<ɂnv#%\NW}>o ؞Ǟw z:8AտW?*dhY΂%Trb_fsjlK~zSW8ßAFM}ąN;cRM#Q0k[w7uvŬR_ @Ϻ DEtg?mUBnk\k_ȓ1(NήIh Q|QgV^y tKٜܲƻvJ]CB`e2g`ZKn͓GRrsom{bBܩ!֑2YR_E%,SM?*`kwmR"x:%A7~-Pബ!ɨ*p2(KdE-_1g AK]l{<ܷ:N _G>Do~<翘A`7W%{&hY|5l SW\O3]҅XA%ovs;jlY+E!j^lAQu'(`U+^** ^;-gZzvv?jrgݙzΧ*u9ą`[zq?`δuUl"+a')23e1$c5 b̼XC+YM(Y/poU. Ydl1rlY&:<o6h1`՝X>eg-i;pPlUY7O4퐤EvvؼmH T M9;m ^n=->g2/̙uP׶ 0=pǷ×?сLG㳹OI{;ޗ0VMg g\ &v2Cc Qy݃Lnu3EkR.T; % [8n>?eQ|_>:ih{%KiIy y3uٷ޼14FX,~Γjh.jBfdž#VJ%ang4?Ti-]3|۾qmgbug;C\9s}l^!VjEՎ6pN!{D1c9n8 eL鴱S:H@ E :~`Q'/#'rxu'JznokGZ}2e3mݏ?2;).BK|rFGiuY;t<Ҳ*07 EXeCڧ?ͯڍY#W7\_}ř <~k.X@;Os5K;/=dJ_MɃ?+<Ջ6u ~4boO?^6EY&un{?߬S |[5peZ?N~:SNDn2ȶYnI P\8_\R"=Ǝ %?F6ʝrm]4iDsuqeq_ʹqЄy΋6JcN~uϢ ?ގ3ߥ8>u" `ƒHsn,A{F-5&h Un%9J=(E~Ca 6V<4=zС:""&yQ'[Z:H㿰'ϫ\vc3ʯF,}vJo{eyw =L[5t! κ(rQmJk.iy  t4 KRn?g [Ly 0˼unݣD:9'2E)|gFs\^ֶ٧]|)<|؀/k%M^/tyZ2_Îԓ(XvdF)6 Q~J[;^3/Gm96u.y? QyIgY73?ܤfc+Vwu?n}:A]>'$Z*WԷtcUs̬IK|jɶl̴ ʅ'XA 喽OW +ȫTx8뷣00g@҇ {MҎխ5O/V^qұ@SR lt\)SL]`^GB"x4& 6p"2̅V\sּQd Z [ |d`Tr~lH c#48vH-a;2qC8ϕ40bz5B ).>%z 91Ls6+yD>FD"i#AS歴 JG˟|-(WL (-58mIl ߬6$vة\*ce璏[6t݋襋 z>ޫ0y#k.\uȎiS3Jz49 .Ho$P+@&r"3^=L=+7 ^,x ¤?/e=7I#uEq3 "~`7;͐[L.ȴ-t`e{70\e'C>埇÷o8.5*K U'?MRo+z()q $-iO筯Oy^tz B)o >ٽ3 T}g_ޞ<]~#gGgMao2? UB1.2bnXFDh/c*l -5C (-IK#OMVN_ IΛ23=jQTB`qpr1Tmʩ$y'sD!u}+N7G$ld q ^WLb'ӡ?_>_(ûtNvb@a>ľJ l $QoZuo;=|&%QtzW 78](Zj6Jpn 4Ư6hMd~m%a8q9;#v8PYUwO=Ч 6S\]BOt&t"tt>iegZ;;mm8;TOڎR+0>"+L4eI?2#Z|Vs]J{fxlJO'+KCoi5|w@)6.d`Ny#"Ey5Ap]]AD֭eYΨ\:tl %D#GR5+ /+jP HNd(H<0zHrEu OwBFu/ c%M&m=V nlN{AyY>g`r?#)~<DmRt뷏o gbu+2$ٮy^]{^k#J畱Ӻ$(*h{ioe$ _.Cmṝ`n\4nLE=<"12/Jz%3+0t4X\ e-{@7 8h;mS\1 ]Uumd )2B5^~ Bp? Z0zbwnya;!P8~[ *¾+;|Aotus[WHKOIv3ʙKfq.P5/xtx<-o%.4*A9WAxXpQug=-`Qw:eѡ9Hl鷝AVa Ew{ nQ%n2hs.ꮭ}Qin ee&営7[I}̶A̭Kz*TL\|HIQQ jx =+GZ& #%|LWϚ'{m&$\lcLێ2j/0|m{o(]͛4|P8dL*_eya3^z`;JtT&dી_Gf gz,C,\&a[V#.,I@;sV=+8@nJz[(,'8%73,sp oGΫTVn* bikPq4e\'D5R#rS4Fbs8,uu:Lc∱Lo4Ӻ~b:=/-m1^ F>3eަ|i+ri2Ny?qf t֮ͰF7xo]6ux.-0IH~*2R^)vwI/Pbh97t?ߩ)ғ;uKieiuuAC)Xh.q-|PycN3̍Mױ4ڱrKk󓖿Љ́t1sW 2fp! <}uh{,EX+QLw |\M* Ў*qIX@PK2F%:D)f+8S9g@KJpRԦC5\j!sd }a{iO/2*trNc7J2XAꯍ:joc#Q *}qN%»ұ] L24|cZ׷,aj{RvPศO G,vXo'=1}9tX-ߙhFcp Dq9dj:8mg()t8GVtδ,B*+ck޷ێ659E"^w[ 9a v(MsIP>r' 3,k^\bGӛcDXE&Iչy2-+k~+|ڐ36l*U0^ P)Z J:o-%p.(3:O,{,GFYg0wtbLWőx_ToqrA9:`j+C, >ROᲷ/Ivl4- _T΁[,M/\aIۙJs"ܤvg;ā*(|fkui>} e+s;>,# GnLqhve73iez!DO)hUg T%ipV71` NYK* g a8X"7B=y-ޑ)y#֟Uc'fȤ.=+~4#X[z6o`//&XynGX`oO  r$!!ӦS-k3QlX>e8r S @y1|?\g.j1!$`%(QJ{qQ>HpC;4rJ5yg#kNW7 CoϱPwSOفQrm8)yW޶4s< IDAT2e1* /P ߖf(c)'=A!y$+7vvioˏ q%l` -+/82_p u;\4g euN@uOYW'km<08XqO\]y 5UH}5% &"I(TQ"q¤k)83 GO qW_}d[Ks΂6snªuSI*F\`G|7nB~?aec4H&fљy7E[e#`q<TNY@/2/#S)1>NLSm\ 4{;I&bC3@[6hɥ[F\e\"ٱ#3p)n'4:!];Eօrvw0$RL3!zF\&2#pԭV9\vüwwDi5ENmOe4Բə bl",£`si<{?e7A7_r~؜@i9nG͟aA໫3LG8̋g2pps킮-Ps2>եeKXߚNj{i_" ( Vx 6h : U>٪Lv$vC.)^p?3'>EU|v/ԏt'z ?Ë~>N;V?g0욅t#F;b2mֹ'G%w]EiHwkC46)p9jɿt,7gH;ǭOHE2AօmvovN+4ǙGw[ɯ_88_Ge (EHJmO^`?MdZ#Rv4ý|}`BGYԕJL2ӟLұԾ ,MuXĢb-lwȣ1CKP9jO&";r<{ٸ^%\T1F9 xAH>71 2db .,ы<ęLLk MT5|DVP|VZƊOrG./e?A70Y(=i,{U 7 NqX7JvC b8f_ XO4KPp}[VrnU_о ӶB)؎N7WP@KMIAh|eƦ3gKܺ*ׂm\5 Bק씤&-+f"d=oGwEXbk3NAk@=]j@G"U+&zihG LjfC x;$yvtG6mXR3 ]2c j(dB>uS"@rMugvfz6kfh?/ PnʜO,l>epA(ݜ Y{+~̶ڂ|l'm~!~C_.?3*ҁ_t Ϩj'-[*PB }U_B*C)ӗmYᖓ j7o!]f[;m̻> t m}u6~s[2lQ K̟ zlih''_=5u܊޴mQc3Vo/|\݅,,"W^Gjux/M}P뭻8[#zu!rrw6J;g^˥#Ic%dG6ˆGd#J)c~ ZoBAs+7#UGQ@ɋ,KQ<^JϒHZ,NF:v%X+xD#tlIǛ J@ {ǩJoWv[NSꦅTzv>:| GrB<7d!qh&OhbtF@͈V)fӨ':T4%3( "$`#oӻV^PruGu(١נf^J]@ #xꭽR] e$V:6 G%nݙywqWLۿ9~qSlv 0|NY}|fς@p/?sg ,4Ndh)z@ ;@:!%g9oigYPW !൹`RXIpd%)[4~إ/J`=ysdГe!aeN;Jǟg`EEWt}zᠯa?v?,3V_0nk]mM.qjg /ևI͖̳ۚ>çv$p)OF&qSFyΙ?"j|qG? }b`meG: Edebٙ[q៿;?6޿np`{{B^uplFv&e@ѴO3vrpq.|*9kds,OcL2uLOx[Xa!7L9۩=d^:S,_yđ.3|Aqk+rN'#eO'o<v=K~P;v#XXJ'c}88A{ ۊnh0dC(m_/I|ϻg$3"їBYИh6S:P0qjb9@sGsA/;Aȱh ]ƪTU'~`3|;qHuSQζUfeE i><O᧜O%E$z>wi BΑKl|EZq)NG_ʻ*Teزz0Ƒ Jmk:ݢKZiY+OGdIb3rxʫܖ)Ӫ[yS]BT27;{ Lu=;J0/Xɟm]u݆sql%`W]jP99Q` I"R-f훫- yTÙgv*1sު&;tJTͨjB885c(HԮ X \yT:IL rc rϧS;N1`}vM2OE3sn XGW?}!lTL8*~@^ >hW)P9}n?S.mZ˟- SgɅq2ybt@²FƩF6WX"`=~_JgƢ?m JَϟY+/[O:oΓu8֥TT}0x< e-d؃'}#܆,ʷD)@cy3e>>=O\߾?3:P? zʝ[)xL<=L|aW/ 0DR_S5:5D&/YNi8էS ^? S7j iLa8*LXޜҕ|c*}18ʮmE6 "I |"0͑K.|⟙ޫmKԌ ]C i,f[8 _yX M :gj4 Q%6B4޵#4Jy#m$NQ8bb[~᥃+ٱ1*nkEУ"%6_*GKtձHkS@ZuPqxyׁ @`WW?~|m ܠΩ}S];b w|N%S|Og'J16WWI<~9-[Q\Z0ޙoY=~2pdep& WbN%0p~b0uq-B'Fyzʕ&7 qIysߑ' \=U~jzvl⨳0p᥏cPFN_G‰`RNs%Yh0p䲼hRȺ${#0Y,IЪ1܆s䊅} Yaq}#>x?xvd@ ãv:}umMG.72Ӡُ==Vt"y  :qD6͗:eȓp|پ׫\xNx˯'%WH[_ELG,](x`\@W,=,tяЖot kLW13m'3u_;90HSWÁ;5/t$%Ec/OCKֶ)Ƌ3/[_]/Ԓ'zΣY#XUjW*hV%+ 6Nyxۍ֝qˁ?kՏpY{$4)@Hux=,1@Q{ˎqJǢ;J2ܔh|-WzP /Ex6lct\ 1hT45h g:Z[y>R^? pw(Fnw}<d|qM*u].2üܫW3J7y l ÍK@$J_XK=j" fst2#?h?Di̗ȗa]D3W\Y#j\Γķ]rצAGY50 ]01x^gOe|Ah'O&ҹc3MiС_Q?ڭ=l KS#;;=0~߭__^)Uź:m̀O;Zi}AzGΥ+d6&Q;xгv)t>;ça#+m:VO= iẀ+yJ{.L 8(__};y1vf珂eֹr&f8Ѐ҈)E߸y#8-8!M\xYHNEjw쌡Sh +%2 2LУQ )n^3|FO55[ #Hq E"A#F/9 ɹ'+)W5 XIN2bioYe)!-͡_c{5䋨|b>g|f_ēqij ҺPD6]!y!{3_@ @/9%Dh]MNg# F3و_`-(f'`I[:vRׅf1Ն7 h2c 2B9 J^zvNݱFY ol/iBJC`/O{?al{o?pYȦ`LugQſ`,&r&i $S'ϧ79b{w%ogay.nG>X9(H40Y?BJǔ[ ;Θq>-<`hWOtO7.5\z r=BJlUffcifgrqN!Dr^HKC#Z 7M¹c#\*Lup4⣴|-A^0(ʹ1dWX>ya'7lqAeR;usP|w:|?5~`Ah'{0O9&/֤Ş?&"H[Y'@@Y'`-,SDџ(X"Q:Dp,u"Q =x\+`^TCK6 2Ҙqx,949˹PocomgmDUag9#/_X ,U.,1ZIJƌ. p:~ =(w?bPвbk@d@!kS+ N#@.]rx I}ـi#u8̷ېCDVD_݉N'>-Mcׇ\u/zjj ۧ /=D";Ҷ9Ev"i̓I6>փ3H󂠚3%4W .xn|VH(˱w }5-^ĬɉzrENgVFYfn3- x;=bӁO\kLi{ܼ@MxNWN?^ߦcSJ MaUݗXJ?>rh ?X_yo?WD_8al2yd^Xlϵ<ċ1cͺO< ;ƀȥ\Z9 l[i JyC)g:z歟wxN\2D ~%'^y  NXgyΫ5: Lz` "uMt;g1!@޿|@W]p = c"kvΐPQ^UQ`4BׄB3\`2IycxڈݹiY=@6+ 6Go2 81Ӳہ8<罂5>߱?:_x1_@ m6wv*$9ImheXfZ.)D.tp IDATkik+x.Ć/>YZű_Úiyb1R%_ű8^8TX6vAhβQdP SLG˭?yzi$&mr͢_W"٤ܮ @iZ8 #o/iF3u "04W7ucxdt 5 R&r--iK\иWZ`z['fYeܿ &W-oQ=ydt{y4iڂW ̃{{Z6'`.BIJ1"e6>5$']6"/ǜؑylrϖ\¦t3uNMc  vE0w(E>L:@XosWu%S(h##C?ttQ%?dd[lX7hĎ)[6CImzDEvPwIx#vU~WNg?WO v%>x߉w%*62~ W`aW~x ,/p&;_kyE/g{~MG?>Kzn36whn?t+=|7ԑ=3jnWW ܆TtחQI…vVE|q*1K#=WScҌ>IAhdٖKP`mWwJTڲtuQ%pd@% bP"禍E(|`YyR8#tIMkcGŋ;=kgiYEiD9h@19irTzٳҬUDVeCcf_ Q62H[[A).Wq(A@&e^C/rv`}" ZRD_;6(ٷX;ߤ'x;M>,|}51qqC")!&\^+mΞ ظ4L_Xma&$(lK%4#})l{^qhMΕ*' YcbD̚&)/ι´x`,3# 6 /b8rof@&;MXY=9Mڲuwmrr=kؐ$/8+B~+ B7B(ʹBЬT'}ƗŐ|ҫ!@A##çN|ALJ?"gRZmO޺VhNvW=I~/~:xiY_+5܌}^;;~<߇倴2@v$2)2@w&Wo|wQ=N{6UQ$/6X@ӧ1O] )6Pz5^?}Uڼ?i^q2WvmZYS O R&~d28=mmh<Ʌ[H7YW|/ܵHIAPMzx!DxS>oR^2VÅ92MР,NP2ʉ O99c,=+ ? 7~}Zv>Feem@eOG;~҇pUߋo;rR$zFk]@;>ƲwoN QԱ#=qH򃖶j[/ISumXcm [zg_~}{x-%}<ն@f&: Eϲy3s#m[޷#yse1w,̓\{uȵFyh@6(IS~I{Y`JrvR|iJ+Zyt-~Ë3q6BO6r,|+e+&.cNsW}>Ocm~M[ʚN`~Yз >h:۹(k~ _)߳=*I,^9ə9[^']2d)ucE ni@bx:pawS~w{`ڀSڷ:^cQV)'|[J\yصsN-˕ȘSL>Hb_&Yl#Wd|i_z_gåy/(vܜ[ǹeeZ`={[-ׇ38lffS},C<@Jl)ORqߢtQn.e-uǙE{n^-ZպVvuK?YRn:w__A'CK~fXg%]9mKm0GcK,#«Okڱ̛>00#{VIHYxH9bb< 70Xyu <0{|3J.=y 8#;y#ػAb3h[#ktZ6x;wi AѿWډ) 2-:;l# 6AlRkoXDPc G^C[k cuN*YSյyw9NS*sm0nӎ%d$ti״^ )_:If A>GcR. rk0C 鸹et->r}3N8a/0O(Ja䱃:ȍmu$v.TX9;*9DpB^zTϝ3MkX^l񳼷Nc3+diC{s'G$6.{l=IrJS#[ܰ&I#Y;//cl zYY<Ϫ $*]  J(֡NGpmcI;] P."K/F(+:-@0}86? m'+.TuGʦ_b\Ζ;'2HGUKNS^1FSZBIR Og٢HKw= 9_.M+┼<\骿)4cy"-@8`x#udLN+N#LAPҔcv<0PIW=@փZ+5\VY@, >r,=*}@?(r,ⵁm6LFՎ.[{E@ ߣC 5GyבiH8H}#Ԏ Hs?{ni˽~C$~ՙ3`&P<FGݧ[={xA-/}y7y]Ye?^0+E^CP@s@|{իx lF,Y" W|252En ! f{6| ܉Tnħ./(C?<>~zkN~f y`di2Xr79ZU#*1OӺ4[hZ!љafA}E_|ee.c3R'5QΦeʇ7L'nL(,DgY_Kytv`7y0N\ԧ1-?cF^&(LNO{BqթpL% XgBl{/9q韻b{dg;\؟j)wТm䫓xwүmox?NʄQ*@9+ވ}< c|fQ453QqU@P2p΄ ,, _{?#vb44E~qVEk^tWb8W2O?:ɓOp`x=P uEа6accd-Ɩ-ƨ)**}xmKgFޔeU"RKuZh 8[%0{4NwζTe9y㈱bMRҩPh_ܥ4W=J]kf |}zP =6AN3pVtN?C%Em 2q7fn>13'[~r^l&:Fb-ǼGχ۵)tYVJx; x X6ZD@3 ѐ"09:[]*z/6Ln`?[PKkzc}q-<|&xx@d;H8cjY mgNy-wc'(^ʙeِlFqO|\ħ|Je;w.'<}>iu[IzCHWYJ߁+|{Wn:sdFEՑ[R}A ~d'΀iax>,+z 8>*}0⊓s= N *6¶mǯ .dzaa{ݟ'$.?v`EFddPezz/H48@J9׶O\!nꋝ>ͤ^ rmvK#erI;iv[AH},@ /IxոhęA/~bK3lg=H"GMߑ%+/d&T~2cuJ,CIŏR%-ndi}:#4aRE>_T.Pط)85(n,Rʁ{d Jz^\yLN/Ї bZSxe Z i|=#(>j>iՓ]Y@%WiE^repxh؄D[@Ej<}UA gQŊ,miٚn u߇k]gV2j-05 p"+W>3 g60 ִ٫X{NjuHh_|TM9*=-6ج+J>1`nr$e^kA4_^ ۍ}WSh]늋7P޷\I5i70-_fAHg b9TZY^p/uYBF::@V62dn胑({W)*U zMY~8'fٮދzl2L'vÀ lz/fa7:LFߤZ(7y-OLGzׁ?nϹQ@3+8FrmaiX>M/qUn?Oj gg5`h~W7z;Ծu,=[brLd=ig{<iuOß%)K/tKAC<<gT2Qq˱~LVV\0O P>XN2>|01ʶ|N)dKhU+#tTa84DuN`/ʗ_YMŀGgv}rЬΎ;}(Liͯ'n{vlVb˂,N#LTh .nژױ&/4"ՅĚN( . d+kFg@ ^=۞%|S kI:xG6|1ٗ:_%K߱ofyʸk2t1`PyR7I-6-g.K|=MV=l9č-;Km_X;SV&i9m@+|R_^/4ozJ|T,6Z̨N+ ~ɆY)o)pd%$ɣG#Xʡ&[g>)^;siŦ|27{}2e<3[o$1l O< kS:h'z'8l+g=ul#:ŋ!^KtYJ3^Ƿ^%Ielo2ejRva /wkw[7Gstj`@0#4PZ g'${n7)bW`~{HuBT%-zQC롈vX_NRCb&X/%x*o]8"8YD:;uLΉ>R/^Ƙ _][9CAy9rlYN!\зIN.GIޠ:Xz}ìWōNX'K[-Qq]JK,(X93|d6xI0^O4 qTm ,aXyևO>7a;kq2Mgg6X,Ic~VOXdՓ4.mM  X t4zV~Y$z"6>K_ zl9eG:'٤)/x^y Xny& {7LűEmnBNns:a>) -?> I?Gv)kp|a\{y XJl W0v&JR:;t\pH #ߐCQOBgg*Orc HH\ɖ|K_m1A_h?kO!]>Vy|onN?>4+dʋw [ׯ~~[7_Eɰ썷U'[-Gddp F9ж&Q~ړ"1Re8>B/oNEXN[wuA@|uNXnPFOXpj)(e~8,6PRc1\CޕsWZh#ϽUկXBpwA eg }iaNc ܂λu i eE)r DZ:PZƎ 'JC2HOM;f vVV0,;v Ϗ IDATKi>R{J]x%9,sP*3T^rJ}0Z {xIJot >Q2*qߙTφ?She6Cꇼ0G/yc p]^yއٕaVz5Ó5YMtLG;PqXlpC}lKQ:pL6hyߚEwAmiЎ/~fw9Ktd]zc]Ŋ˿ҧhg6Yt$@6t9OOAoS0ıwuv`0D APŝٻy:1(Jr3 2#[QqvzNO<)cS>律\w)AK_/|1" zstJ w?nYFoggK._rm3K`m+MZכ6$apimePe/<1N:$1P* 87 MNZ (ݲQ:K#]uCt++t<1^Y?˹+mmqb)Gm}YXWͬ7R}SRA}dA C7[V ՟ICtJo] B@jgrTAS+c΁Q/@혓qXa\U|I=@ڇ;ȶ\&=$;]naNÜ%ZLyy}?2J{e=@%mh8չl=ϝDo}!3IyؑZaz^Lj|2 ) bֽm03Q7lsPO);ґs%%1b pyxW<\._g CS<~O]@n##buY~osEƪ%ڢ=6Fw-@q4[&Ϡ| Cq([e)c e$D]!؇|XY1Xwϓ6>0,eiwi+nu%^}Uf+z s7+z;Q424e8SGXh`GB4K%@E"Yw/LI(ݸ2w+OZ$&\L y2gf b0$:zpeZGHN ƚc%xp dK 4H~@~Mq/;_߭<$YK ;).g |.w^HBL'4_/j >~/On4|CF3h^;>qR#=tVފ \YlL\r92gF iS{6`S3k/'ͷqNlZ?$"M3@FD f|fya3ndy,CvjlS~RJy>cW*!kۿZ*t@DǣN S#| C M1GMn}a^ܣG dk2/.gy)73|w<_|~݀_^nFY 1':c& x}P]^xj#IڗD0<:O\G͍L2DZRO}@mtԡ(X@A(y`̣>x2E(/V(t<ܻ'~A~r3 @<=3s*)7QVS?x>r(ʽ˔AKBzsEBBg9H"|7 zG 堜ؑSmЀ'ek~[ ԍ򞽫t (ϘIEgmVB;R,ߤSfG_|A r Ww(:!<(VY*J218dҤn&_X.C͊N^#rLىwPB~W9ظ 3 a4/"_}~zY\m0!bK;6G`!Md"ZQCTfl$_ck+~-PӮ4 ˺eR;cؒ>^qR2 ?8tVMR';Pz@jH5S"tPCm@/EuMEdAva,oRG7Ewkh,OV8Nޞy'SϹ)<,n;c?ѣvMݎ̻=}k>ivk4X6w*9eWk6v`Xp$4ɞH(VfqF45W+Kq.>}4tiڈi_+C_˃{D>*`ƣ'T= /;؋bhS GLh_n)Ӿv0#ƀcvs02neKgM O΍eSxEq.lwY£W`tG< cbĥJVsOP` 3㫟e&UɍHs,Ф`tw^ڿ|PTZNʢ6sGi?R^%!i jtpT P[A0 7'y M'H>Nr:$3N凍 ^0<ƙQnZ0 ZʄX?2K_}f)s1;Kۆ`(T.*IU5"r<1ɿI쬛vW^-f@3ؠeN0x[@N2d_{|+"@/Iã=/ͳwg9/#:e5w{SPŲ4v` @ &NźZ}U\''e~{YYޤV,రy.MkYfq>Z#F4ao=7 +^h`Kn<.9f (VI?;.t|uҾs켞 0t7.g,OV=Td1#hi3Q\kx*q:+R&ȬK?tTŘ딁[Y†˅l}tO) V!~mWJ;ls7w2-:G  ?ŏ`^S Wӹ `vrm;yWƔvsmy8nW/ ӷ,pho OF&M`R3M>xhk9,e`x9k|Jo|F~WyVG' M$@dI/G)c;59)"9b o"<(GB .R/#FN-4j!kGF 26t<{3T}`q`ȫhԑ:?ȚAG3_dO,V6h_~i,rvU ?fg tvh6/0i7Mdrn_ߟr/\~Σ\j`[om;j`E#E'o6{Ļ^GjvSil ',Z FlͤWen*n ? $c͙v&`ц g}:I{ArVZ뇗ím2vc^&b,S?>:EX3Tꬽ^P+ YRJx٣U]{f̌z0K-w3>t<)KGf)oƙ?a@;}?s<I;&zQ)+埃|j Hɮ$B{M`XC]s OA^:8qVaiRh?z'LϿcL(NA rLzg,w ž׿Ҧzӳ -gސט\ck= ֋mlGxJ |8ubג\0lsdZ6$P;1|TTWHL*S<ݼɤU/u'E #ؖMD(oYL΁ r)?9z6Yo8s/6z Ji‑|uu:l4a;0h8&R}YƘ3?)|Kh;Չ/"Nގˆy rNK.1哾^eI C*ADIIX.u_{Gh|?3;xƋU+cb\b/=H;X^~L=ϰyW3|)vp3w8΍[]Lp # b:Vݍ5;3^w 9g&oaȉ?+ylW H$PxE*XC-3(Xrg܅s;H9r2}aKS'S/c ܘܲǦ)1`H^{xV,<aSU\ֲR<p~=.MuNP| $bN<7&;[/ұAZc"l*G]ƍ|shy\Knfz_l\t' rdc{!~ r@}x#Ez?UC9<,pf^gILİ=X+.X:q9]Z%^u<'ztVsXyVMrl{b"s=^E~*pi%~:qoO; ̒W O`b]'~=sLy @8cWUEPEЌ䪔I+P,8]F) ~nūx*~N@`qgcaru'iX':.l+`q g3LOwYѫЯꖼQΗ-`m+ryD q};ǩwtnc뗅{6 o1|o+7e %)if~aWm$4\oxA}ቯCiOcӆ'.lTڬJ \8BIj03pQ*dއϹ}q g9{xᑻ;NXhSijwh,AWN 0^΍ [}gm`?2pK=ۖ<"*2P+4,_Nܤszh'/Kr|Ɠ9f>|vl{tm/Os17G~ z`fzg տ>5as^r8X]팭kr3͜,'&[}InX'-g*˘Νx?vYZ=3MlkWROZB?0h-CuQEU|yKU{wݳ[NJ;X>cs։8򋅑o)\z(2O/rI{0Jcݽdd)2Q YfV%@J | ȒDoz)d(Ǫ~`Y׊E ;A [؞LI2oB<Sz6{쐏v.b}ai$l$>#CG9t)h?$$yب)Ш- eݹtJyƥ4dT>\TgYYnT⾀ۿ)_:;{g8Q ]،)i36Ϊιny#o ę hΌ@4nY?Aw6$GʊbƸM_Yi6xRO}eKW'.B{;I BrwDq,^öA{F4I eW=?Oq;[}fFo'p1.jt唟XK?!ELyQ) h룱PuBAx^s`h``qf/?ݾd{Ob7`r&j?ۦ۽_&W>pvoj[c@;~h̳ͽ12PG)g)0m$K'l zji36(Wy˥:d}KxFե/0zG}I)ạ+:Ǟ|<1 .AE897>Y9J-L9׶,<=b-rLO&~&h66T`G ) kF a$ IDAT iJ7{E^l㬠.o l;/q-(%K>XC\QpN#-jW>To_y_s6Npi[6SoRN+ISԷq/ҊBcNOAd {,<PU?Z?hL~ K 12A@9_*/ Q~_+O޷`Zy{"A %3.Ξ\q#xQŎ3}Jx $|yԕFLi/h) /erҺ?cɟ+3'/wϳ\?9w+7أU~=^6Ȧ\#_{f/Q߰.r_fKuXc%V!<@>9U-_%FltU$O `v2kRnXA8 yyNOHЬ\hST#~zVyXrTY#>kcrNw~9@\AʤBs΢hуL{ܿ!#N ɯ{!Eܑ#PA [S3 SjvGi'M@"8{]#+Nei=oWFrqd4Tռ 7C>d5_@ H9M>"Vx-a)m8 7wQy+c|Z|"JQ@Z)'W>{2tΒ}vX=wpc?uQ "(x,rjeeI?2S^}{A`bIY xkV/h_9㒀?J#R NMq׏0E%Lmc̟]}G9!Kr/P`HN]ѮxZ:XȣsP0;P>r4w0s(Rblt)o{n\&:ggIܵ*-2X5,W:WIAowZc֞]*?w@/ C_;q'/yr 7^l'c:/N]Mˁ?5GތO?D4އ,oەluΟX>/mg=P'Y[>@9Hh[{)5褕\_˷+O23|F_'>?ɱI wABP^% =*?%nMf~Xݫ ]eWR'nYzh5at,&{-p:EIC8K38-J̀ဩIsw;P(~!N$:g} AAұ V/f<h1Wbthide Wl`)0:|N,pc^6 |}d$ɛ<8 x!&or/0lfyA/ hRyŵY:'O\2)*%' ,<>Kٳ.yoߕe?..O2pfiom3gq5in3#O5շ?PD9`yw3^M<=lAN*^lW9[˞ yR~{s1 q/TAw VS7ʉ^ tpQF5fē$ g),]rgܴW'W=u8޹'?;}UOP=yc;g}M~G_/YJ_R0}kctl`=8n>>~ZO?}g7?ߝu-+ƫr˙c &Ґs3 DSSǡħ_ACvƆ|qM(Mrri3:tg<63 @[תdG 8ĽWBzm7oS4 Xޓ:i^F/+huHg%z8&SCXibWx2v3rJeC'8a2ulpeM, s)$|^2(" UFpJI +o+7\1CE9(#H7;1Va%\A@?3Z_K[z6(R5ҀXB.l]j}F[u RP;倷|Jk/y%́JWS?Jj:WʟWj37a#  ~xK!wM_c D@PuWg>p)F[9`~ .O|tV~NPh}OF/4 9|ђtz238l,|瘽:t]31י-'/ i7s.~l'NV֗v- -~~rP/un L;$4,-\ZG4|y[[^YiM4hS)vS4=ҌQQ{IW;8+a/xUR1>ZYʟsp ?Ўc!t;6U,H;, <Үxt)< лA_FLT+oK'ЇN^ؠ[uFQ'.o'O9]BLTZWc62/zF5+ |)gW:VdW i4qZ9~nD#\RC^Iҧk l/r"h8S¯Y|KXeA5 dMؠe>:3|mQH'96:[0d0k߈s~Jh O'8V| pޝNRlS'ԇAg<߰M"?*ˋS ;6D4d}{|@V ~D 鎓h11#}Oǧ2 >Wvz^95@)^}HֲRvRX9Áp YzZxY1Eg?z6 ce7<</g>Ŷ=}ܯu댿o\a, οmU_d>oxf{%T^w?k(Y?Tp`#9(V+0Q\f8U-Ѕu]'[IF2RP8ޞm>i;]] E%8wr@VRa=5t t\NibcaOTJϧV"2(¯V;ɷ Ms.MQusgBY,k K-#+,q)ot`0r ߢ 'e36gNt_B!H$߼V(*ե%_~j?|9~|h(:L6o"^?u֗8+KϞn/'l|8:/&~Ik2˪%B,IAf?B# S<5}q5x|[/!Xmct;VI~rNLw-S dwCAF0`ߺ6-~wM'/[G&>mX砝[5 # w 0ٷH9]Wx$L X+xW/ \xc}@33C1F [a8Rc gHR> xű\8jo9*>N&ng} /5t;⯅k#Fp)7Cn@ڑ9v.]cYL^Dn{2s(\$9S&:;+;;0gYs=<0{c8A/\n߼<Jþ|/cyFB7i n]6δ×yS², $i;tyQ[ltU*(9I<&y:zȻ/g|NOٸ7uV4mnnZ \Ѽ9FGE|^ =Ɂ'[-W A;6U'Buk56jto}`l)OAa ~TV2 ks,|{YhoiX9|q"6˰Sʇ]9\ UhAWH0H0>*g4uKY2V5SD`gz| FyORɛ>w?ƹݰ JQIx&)㱏XqDS+V|G|mMGܴޔg{G+(l qPS&}6M챞vb6;d6rj2.Cy\xXMig%ۮe}EW.tGY;‰%G<wG/Fp1x 6^ NB@}aԚv9?Fùu) [b3P0.^HGLu",܁xBEq z~ǖ^uRV^?:~l4?XNf gY|BKU*_N #qrN5(<;Yr`7[#W|^5{MtMúzs)_XLƩZ?-7*n3TV]wy7|- w,ۿ=櫂||hҭҜqy6>:8^NnLP|[=Ӭi}z}λ0+ 6_h5kǒhCآ%j7y@|,30l9 -'e3#B#F۹,n@QLjO;rii}%/ c!l˿.WY<#>q,hGΥISA 4e 7]ZI?c=|X k[7>/S|yf Y41XfJBrU(x;W); ڋ[:+oGa[" 8&k#+Vd%q7J%Y>r ʎ.baW鼗\CFMw:pL@ f lOO<2A&>]pPAR;S.plpg@&6:6dS0b rnMnNC'onogim"*| ̤t&sOǨuvw)>6A̅^泏] 덍ymlW:hR/ a{=pmdl[`mv.wsfQA_q+ldupPTcUkYWܖ_mJBe5)#G͍C{%irf0룤v@`}tw%O>2G^ /q?Bר>~|&?0Oglc2M{) by,k_1ռe\y'E~wh6Xy6C: bԁ \ ۦL)y&qQE,Z)7KLYXe Ă-&&E_46蓉".;X&<͋:Qeࣗ±G-`H^1ݎ0߄Yi?E!qKE'm_F0-qU0ǡXm΍\V`hQ φL崅D0P(~<6GejaeAm]NN.P+T ?6zӇs F';JbYI#CaQF׃keO">0vpT{ґ۹bgƢ)a'/+r{4Ww3,`#]53gnйR^,pIa>c&J-16#O[1(Ϩzb_$2yO6{}ϫgot6 Y}ܪwfr#L)aR jPvh&Z(K Bs1Xn;^Y]Y6) d*޾_([O8 Z ꥸ<]#ǤGJUgM'_i^@-!^}Bqj tgk\2|q(w^!$g*mev|w{f7=otڗ~;ju}}>2Թ)'Lt$n ,/I.ďn|Ċ)a*߅^F;XH`ZFo)']lT3+c5r; [qJ`g {xXAEdRd/@ǣ);nZ IDAT$Z'mD1YXb oCmG8&I;k,W{g_Xn $QA6J4[&Daq{`5 /9 9 ˍl~Fƨ6j[+EIsⁿ9OߦW O`~vKc݂w2BU%[;"x)E=5̖k Ef)+,c+TU;ܝ0CT3㕋,1tfpwwlȝ|A|#|xt{kߟnϞs-[?bH5sAHD3gw p北?K|v{Q^l`*g?%ѰRE;/w"t %5vwK?t@{@~&}6Fj$46:ìcKKY5 J|NאjYr4D8WyFp$|gZ3>{~;Y1yĽ _2D'ҹF>:ן|^S}-׾'Q{O+vK/x n^phN Xj9˷ٶ}?8Y |+:AOى:kYcuǏ`x>bq1ohfO"|| 4v[}W)&zv`hll.Q>hvڮNR=KFCK)kS.dU90=vvP* -^2NU9m K6 &|J;qBFgox 5_k^b_N|G#HHPOUչsޛy}@P3f̱jE/ |;^2{{xd <1g@pǣ`Fw'T:Y#[y+ݤ`P38IЖ|3NKʁMgan?-2ns~XGvRs827qfv9ҘoGGBfa8.=@`~|8FNlO%7^_C}t$dh}ƣ~NW=KHUyWxj_6^^㱾הfcN@3p'Ǎ3 J@x]ġo_;K H W<6J\:?v+52),O,.C5'gC{CGP("':ӉO'U/QnG z28#OhDr[vI `m>:l䤪Jz`qյʗT*- XF0Uxv:%TaIS UhTf-M5A&H-0c7;aróۇw[{W?swiԽo(c:otFcywKnm"J78EXddșPgdQ!4s&/sY!(,O,8eyeEM%z:֮l|Mytͩ,'ןyOo7@.3,^$EaJ$vсd^Ϸ/}i*dr1GF=YR!We^` 'JƥnHrw"W"`$Ieʃ%8͞NxU=i_}1b?K')بS(8K7:J$}'늈 yGemy"=2K `2hF[;0YyW #=vh)fg/2l'˅;a+n "0aGҦtN!O)#[xYP["{hʩ!ͶF7sb;zmGǕDחWDבy$ N];*6۹H';GŹD"ыFH!+cdIF3Qo*\yj*oEbwf{*lznOq˻8Wvי-^U7ubÿwhgOx >8g{)g_ˣO,vO3\|^_bCx[ke>LbVCUn7ƴ T?2Qe;'~&K 3 EDe+ ѝ>ZޅlT*tܬBTUcِzj$v)4pEׯy}7=K/˟ZFO(;0ifM 7 W:%߂A`o ⺾~]ԼΠށ{nsuKz?Fq_MԱ5A?֛Q6ƐOVNCevp^ቱprPhe[^tvzt"xdzQڬPy}ɭ vW=Nca^l^&?4H?-pxO `ifF NE\٘Αxs.Nd) Ez^'Ȓ?ƒ>%eۊiaFA@tSȌ6KR~KD9%w@ZÚm:Ss&]j,{43y׿Vh;iȴRC ky/~}s zuObO|՛йzة 0Mnɡ*ҟSgK|L/q϶«kx[E0Ayq_zИ/+( BS0P7Z)3__cvܠ}.kS>@9A^~ih)&<=wpZ$pFO,:@Q/9WZ7N^As>`{=r籽g]^GVr~@16QzGa`vU.uE}98vM_KB<˯wϿa 0=ԖK9 (,s-SWL\8~$vr/ 퀾v]bj9}mA^2VV7“V}114OˀaB a#C[BCr9AQ4N{p6s8%PJVRKia|8Ǥxx>eq(c Cٹ/\IN-滞=z^QΈąȑ(*I^Voj8NӨ~#s|zgؑ0yVӦ tI:ީ4Ufs|ax3{?ۆf]'ͼNj߮.bXFy8+6ct²l/:T^-'iB̎e.9c5Gᝍڀu%/wL+C:M_GnNX8~ww7ZcU,a?/бC"|T !.\u|?S_C|AnXaQK"gvjc\ ԢvcLoJ:=Op,WNo`a2:vvZq1$0_ r) 9`c^J<%}e;yLgOfs/U >i{"v4.\g dA cPC#si/ x%p yǽ 7Lu7﷫۷俅:`!3k;GHoqyFqFq/cɃG$z,@r~Sۜ N&F⭢Wf0fhd.5Ջr$yd9%*ʒ㔟z@O{L#FkЧ/Yx|86w2:K5Wڭ2lUĦp^,<_HNh|rS?GM sT:3dh=1,!Š VgWY_>NJ\#O#@+Jʒ#,>[iS]cvX,0|T<~K6fu]eOp?T'-_.~VVh#~&z"+@lI#m 3 wx '\oo/`>:u)yt:;Fg.?`F%][kxyu˧\kfe/x$-->L𫃉0[T+ > ~CCARJ\ĖP @WF7EB#u6ES>)~*RΔӓYK<ν}=G vͦS⻯3.\ط3vb 5)N&R*:/Wx.zs\_W >0,p[o#ʜh;$?4r)B,=W2WF%P.|qYDƋMQҔl/C~ƌd@J[ȱŐ0R EȪ.d2̄(c3`)-_*aAes_l43l')mo_EH |cv2]E:SfϓCb)$,3Q@ff/0q}Sa&ɧJ?gip!0R7Ql8ți\e06I/(hX/^͍L/rxZ qV̨G~He~{,;hC n Ԓ`QeU 2&n@bRq"F-{s JCٶS753Cej} /G?BFY+#^ %/gw\._~.x>̫]),Ln*zh'> 0!3Y[#xiKY$ |UNxsqeL\G).WqצL]ć߼drz:f+[DRZG`!\{leog.G 6>|羝5%c K9 @\on$&Y??RQ<,Auo=vһ918ՠ# /c#^v@G}bA@r3:dʒn9Hpo|XSއ`%Zu"d])4RKvarn~mh^Ҏe9t[)Fe|G#*J_[ёrv& :~(Oܵ (*u,?\0 ljsM{@YE0 |Yc$WHBLfY"Re+ i/V%] 呎 8?i^;`tV6 tPaRH{4`>id#s#m 'e3O_E??]~s6XgzOaK i7ggWɗHuc ěV ~3CNC?HGJrKI躂q.|mOY{ʫ%4"xnVoBlCUŷO^/1蜦90T9C?9.E_!Il3Ҟwb?XUJ-z %xtdL2 BMp(C4^lz욀/ yP]"OYen!/X A1(u\ÞyqF@hM 1tTf2 |/Fd1 iHnsm,; צ7n.Y#469mLvڏ.`t`'ehvv2vя>-<ᣓ3ʈer8]VW1m,ts&o;!*+تAtX < \Me,\YL(c~~~<(gaWܦ[ǗL]7~ 8;pc}9ߑ:"rP9eu ę7?|ʗְ0V>%6}ʼS>n!3??+z\;\/sȶQpUR[lXSy;ํߏ`BB: >AC|FqM[$K(a ^ GtId;9;M14D;J'`є.c|?/?nLn3w@\?}XMXQAw :^O Hs ,mřHsՏQ/8;۪vLs? U&fl5NbiHc1#GFK]SL1%h\ή{&u<݉mu|7ZC+6v^Lq탍X9rMO߼X{wEwW9b"| =b-CH-a8Ap!ʆa@ ( "yI/?o?b l'acxr0%{uwۋ A/)b`9H]aQG)Rd{^ rvЅ~c:ң@ f'+>iRÒLl^-_T^Fș@ Y*48BIQ+́␉Mhcdǭ21Ȅo=2% Lh8/>EVL'6i_8~x]oYպIU(\<XDϻG?{yq7s乀Ϲ+9?Qc*R>5Wca壔}=MaIba9҆DbM IDAT "ȉE߾q [ldG&ߝЧܡ(o~do-0޾EФږO1PgcѣrwM+m+zr(ꎥʱ acߠ+Dv\*l@'9JŚqph7lƝ63"M˹6t9zRR-'R噲y: TY\ Wd\2+>}Xc`k2O`Hou[* Lp9Hv n`"C~uM@^-8= t711K:SNrj o;YAG`O!՚*bۚf:ѷ6'lvi6C)UĂ&ZK_O :=/"1+vR1( {'un}YEhn?ʭ.yY\!AB}~]1ǧ?a=~:8ϕ8)K:~2ImDrM#7ϪI[c2_r w77h}+Uߍns_7;7QA2n+g_iwXYtƕf4>%Ѓ]ƿZ[0%>h"%J'ڹ`_BB‚]bl,*‰ =b2 nק_~!o{d>U[|nSĥtK犝HCkM)_Gy zޢ]ӏXY8}y߂Da|W`J^CNL~8~ Vs5DYlp%?bccG=a0fp'~"U6aSa7Ў&+w%S6ePȃ A u9+Å-Q6 <f=̛nHR1ız>s\HK){)كVFXXE@ AF"  o!Q,aҙ)*Cvl_kd>>vNhҰÀN|&h=@Ocn jcq"^!c Ąŀb&`+^ɡ@Dդ*6-ׅc3&Ih ,tdv1P)w_ד䡗+ʎ~_ >Ooo|\&`YB<犜}Jk4 a3hgNĶ޴k:0}r<2y36.ɳn<Ӈ>e{)ʔN)_Y1ibLb&Ѧ]-&ϳ3:]h0U8ǵi_ V3 :O[SƼ_|xrg(R ~oS.ɘMGLp_7>Ghg+;O6GCiV2N^];nC߱}k(K%0=1;HL-6;Wo//􀁹rIZBɤ¹1Ip9wXh$OARdI W'գ(9&XZy݅;}MB۰GZH%9e'>tG M@nSoG+ F$Ld-XĆѻHo{<`GUyFdB bk:'!m@\@ L @y`oGt׭";L rwLLTtp>g}+>~fu^-ؼX3g2 `ʟr5vy '!ϫ=7,|DS?bW 6װ[D+?d% l(3a<ש&o1u\k3|.vCĦcjۿE׼x$ԵƗes~k|K{?C?0gG(E>)Xl=1<#z3'ťpf8)w>3}> &׎0$ɟmf#=&RX)P+.4xpp/&e'Nz=UYς:d9;Gگ0m|+X۲Atz6]qb:nTA8ݱq8=gۺ!يbucƫ)zExWIJ`C l߆ 2UAJhA6+ @b2tp&B&=E01 gBrࡶ#@Oʕ?۠3wD #Kd[2vj/X[;4nHZzėDSÔA4^] vV'DhE:j02,<∼2I6m.&;@ %aݽ;ѳWP.kmE[BקO.x/ͧ&_.yy w;*߷`ޫ}rovt:e*د shzA{ƀ"Ƈ펛OQ`)fL[N>,c Nv* eMpVܲG[XSɟ//wL_e32!߈K@7S]hl"24|OO|>|B|6?r<[YZ|eC ݴ\Icؿ&.6J 2ߘP>#"nѸaَ/>HSwWX^OU?e=.%8ji)9ו>x_:3sNo#ޡ^^!15HŻzxK۸_ՉD\B!¤v&BMM`-mЭzE_`p8 (ظoƖOt'8`XƎՃʄFQ%MuCenb'w,E۳]ܻ,YL,<TegTg"?fcnYյt\Dbf Ӧ~ԟ:e < <䙬ĆbY-G۠ cw ,YgI6`Mbbfj 9O;PQ&9~hޝTjהnJ|)} ,lsG"b+r⇇omehi] d1j;o-xvo[thX\d=oGZ-v1qX #/ʖTŢ}.r_fw*hky!W eqBVv! /dfDf0E&O5e.T!ys/ kŀ~eb@@(} ]EMxh]⨢4Uqit^ ǚ  9&nTJ@+ļPE- uNd^ާac@ck;En+qm`?ڨ a1pb_=u s椲|BmƬ*W|FŖʭ='zӺābX]o&aRwߘW׸~g 3qFfR'?4ƎP?M!٠|ͷ~k ?zS>9O|eߞ^cY]Ķ3ZRѴ `cŗ+z$,| y1XSC@WX"ޖϷ<4Nm ݌mX0\o&_1d2d?቞ˆX;a//Ɓ1e0p2sW?=_ГlEow>U>U>m~n;k8jE>Æȅڹ_]pE<1ҧ(7Xh(⤎&~E" S+72K=&8l-6\;Ϣ|i弎',߾aWOv4?Bv$nh<&Y#?;/F_覍j꧶ b\ : ~a3 j%daNIZOöMZ9!ϟ`}n(cg(|?.#>d$)`/6v! 84br.Gijx9/d $buMG| /lpF6ChmLμH]yn@~ n²|cJcBҶ eI0lX1biթ<"rHb7uE xUHu>qp%#K',O1&*^],O9R1?8N ˃ r[p"m_Γ?վa~| {?~+u} ߽WqԳ~I':r\UCTʛ:qvnh|dwZn)o6m>/aq?`kځA <&ջ;zcS2/ c"xJ\i/|sn> yF>}ޯP|.VpG##Ŝ+ndbѶ;tq&m>9t Ri%OXñs}Q,,l+ MD(0ٻ@ZYlhpF7qq'з 3>B)g{ 2}v:z݌gR) nAo|G?1Ph>8KO;CN[3Ž$t;UCgؠjuT52ʷ 6g!O$: vZdBff^ PF,4 "4-AĆ fg{l1StS+= =|ۮB9oE_ >#?W &[bm ΢f7od0(GԺ.HJƏ]71ܪ%>ǕFǮ,Nv€Bm }y!B>rWzߪk|IN1ѓo4A!>y+J%c=ytW.Uڇ,o-|>ny\}۰/>n{TE^p?yҴWlXM>?=| ;.|3?5NCmD|0J" :|=bbwD[ه&l? *Э'oE 't n珄_CZhM[g!K(9HhcG~/hO>djoKb0>$++ȺCp3b', 5tv 7713+#_n&ŶsvG2ke;YK=JtرytwsO5ɤٔkj25Nw-UJ~ 6[3 ^W9lp1-_HV@j>")TٵŠBCʘ2{θ&̄?n~~oЍuB xH=nmCF gz ߙژ&]OE/1 "C26V܂ =#pU*@L1h(d"m'ܦ%6y!x>W_-)|1Nvǟ) n'D;wĈsNɻXxy؏ .p3^ɸzefdd:(<+; Mb¢!EQigS]͂N1 Mhm66s7î |\ M"l> ܖ킷\&w{< 5=`nl<Eo.@D|ڻU'>˥61}0+n?S|ȂL6Hʭy_Gӂy ;|}oSZAhF6?H;A=P&" |JAǿ~EߍCW~`b#9"\Rϧ([|?Vw0?|jp(I0gs9&Q_3f4 l,GUSаyhS2GAL{oIҟ/[+'QϽx m*}N }noNbk6FtnCw 싟pҝ|sY%`)_jfFNC`>vVc #<;*%uS6 ux̸V6d\g疣3~9GTCe#\+3rRw}G9b֎I8I*ss^r,;tx+=]+ f"#ƾCǜ6DppVm]rMw6ן6~o#.H"(24{L,J|NYP򉄯nD{l H?Ͽ>o^gr_.}{ ȭy/>] L뼥ϻA%a/]ǔ͊ȿKrox^!.'<āgo=uYг`!79O,e?whv>=pKY\hts>bo|# h IDAT/\K c) dY|?I+j+य़AݝC&\?1m}n?6Q:%-x-F=hΡ-K`XMZێ)9 ^2Sc[PȆ24dQ;m[oFŭ,CŪzBm7Z`cu YbrǾt^@3moj]K-֍BG,(=t ЭiYǑ'H6 XtJ*Iu1JI55yԭ Ŕ L@il4R6#`1VKmو/Fv;Nc#WN_t|a}aDA&!qĘw dN3"[_YF34х͗#L$AWN>^epΠK=/ FI94[񝅄 7NQ.vrI$᠃qr .I"? ct% ]"3u*>ѿs|`* 6ZfWy Fz{6 ?3RFqp+O4ry j0'139RoU۷Kj<D;ئ}蛟\Ag eB(ێCɹF I6H KL吗('qg,0O`b,nS[؋^Ԅ~>K'ĕ 1P m 71o܉ W%wy ;%&C@;mg߮#v᷏bLM D`}')Ǽd ,VkzCL7P.V#sEXɘ C}m#R{sĻ_5kZzZŁ-.9 璝ԩuu{Z=zu4Dw5l e~h"Zf8"/I&LLGrm^AU6b #X_EEs×qc a\x?삖=XԸkJ21θ1#+DF~y9)3T(F//?9J/Uc8#Gğ~ Kֳ 0N.X0@by@,Y=N̘+bh)s^`P\7$L'e@bW&)}>Uq!8(s;љ)<gk22IžV*St2/<}-0 Ll]4?N@kN cl_gs[6, RHs^UT?y:C+jS*'v;3pK[KO'GVc@ZKqlrD]/NUCL@6Lb3'%KiU"GB:-QZ{돭 l/  (k횎1e N}K9#F9οz 38Y~)BD4kezffyI sH|8uUHINX mSO}@Z2]HXڨdg^Ŕ n\.& lGʣtŋFj ݚ˿&zdOdȡm̒,,b\2n¦~]}8'TQE-bnb}zY^qPʿ1+nbVDQ>0v).${|mnW5uc {22HJ]Chߴ Eb B3~ugkNE!WYDd.ۂ>.7 95BK;h-f\⭜72/L ZGD;j6{6qptX'{K1ƮAV1ƦB1wh>B5/2 YSoNjCx$8R'8v>!= FrjluA#(=)&?^?hؑ79ԩhģa²v j%ja H MSCa @<ΊW[O"g#% o!> C^&NB]<7&ܬ7,e6xT2x[ԝ+S0[ cő琸b͸rY9qC]kmhr`جƭ vO땙{$ o}yY\𤽔? ^+$p* +Y1 LV6'}>Y+p.WȽ?Y{P7nL +ڕ!Vd4\+g3ˍ@ K!YL1mnjb\Z9*!kĢ+tHp@^uk6T TI(-)p53&P|1xaËbϹfN`ЫCCDwu,T_ӄxAk >G/m'ݲrd2@.'Ъ啫 |ڋ_ i17]~t.6xς -DCy6cm,Jh[?h$dO>BN0.$k*ކN- k/;a027W*/߰9딺7kO0 r.JuŨ<"`Cv*b98W ƹȴR"nO"!6`Lz-}(z1m[u3,+rhW+0UHv D\0_dCbr$}<ؘoߔ#戀M@`Swpbk =:wڊk˞6+Y Xa%zj-6v*4NmST &'0"{ âZ( ʸ)BN>=yAyu r6M;8:@M]"&C>.L0 =;^B@CmJG?dQ^2ׄ6|O\}/!v4|_X'֔3zj{a㊃ơ܍Ȓ-rZ*Gl#:lh )5YQĕgBPMcb拸uaÆ-L\Y щx;n3kWfqHzBnOa967ti#Bl*R xHk66wh'06ۍQ81-.b^g;ڻȫmi *OBI)ӊK 7M>9sjGN$2 SJxR%z5h">dǾ?U{h*rlesⳋmG쯸sÇ i&2&& L?. -cc be|~O=ȍIb!3b&}:aoM|IR멃>uR&|%vZ9OJm0wNN=kESm.m]|v cb;*c粶]*te<`Iv04ŀ?Bmx)N0w] @RCP^ͅ?x59m}YNDY|Gh ֳx2ib+]hPÇAU) E"giN6lчt8Hn&gqDv;MEMqJ#=U[{A=uty%J,6T^wǽvн 5qW^$λ(z;|şmtA7)&~ɄF#c\Ҭյ?lQ@DV7ga%~Yѥ#7Fɚ6vt4r?̻hr]gl,BճUm:Bv+38 cP!+x6_^Co'>sCW^mA|e TkRO qrl\1ЮMgSnއ;Q=tS]8dI'#["8ߜCMzÃņbsLꐮ t3W4!C{M3wxdS2?p 5r޼83nRBzVnLjkve;ck$ȊJʆC]c*\clSl|ۊ9TEpd[JfQ*ʓAC+@mHca Cm]uf8`#AG7_L#V*C@.6:ч|;VC7`UX2&y#/tq#LZ7>c${?\N2}0$}?&Cն Ќ M7p~HmwNdS\Buol`z#mzhËlNoͅ$)~Ém&%*S\cQx =.w룾`7<ǟ'Œ`T_苡n,˻mKĠ+tmj ZϜNRwL Cl VAUGBFR+^?\gZ% \ ÇɪA6c(1џQI0 ǫxc@jFt~"TA@#ǚkMV҂_~XAj6CN,xy߆IiS,Lc/Zto~jx2v}^uÃ9vX_dTJc $!/$P:vvj 8#~mP?}|u0W\`㈫$^˔JdIY)uMJQFgdAj&)攀ge\79_jqmCfY[jOYUzO}n"xe3r碴Ψ'lG!@\#:S"բ=(хj[3r/>`@h Pe %C_V~#8 a 檜`yY X ~gc|ZYEM[%ώ0aH PkXkGA"Tp:!ʎD0#,j*Mekc&[_Ia[|9&xQ$1& PpKQnJ肼=o^0y4r&&eb~ЧfqO y:oNll3ʇ! vyQ|[R?93؊)jyv$uA % MĖ d<`T )(Ul6PPfX<UWs812vj62@RVlZ$M CATTy! $c*O +P]x~Kyt@?O־nG^7)!o_ͯvu,?cmVAɦctG'dƟN˚C"91sǟ+*E1`s<ؠI`JmSʦջF o:2E^~eW:tfژ5Ø՟"CbmFqؚbqescz$A=lēr 1 *6Q/#N˳SMV"8hhDd\fT\с2⹋{o GS.p!a}t,1h[@u;m`+cE0nnNpA/dloYBX}i v+ѣ"윒[c iu&Hʼn-|K:8W`ba FT5iR.W!Rl^2'Sx|/;u]< I0-Z_]1pކ4ߢ դڡx~fL#7gZC(PeCNM0 ;TV >|0 *]=9nX}Y^SXzgV.ś Ch+f ލME9S1uzd=jL!:\rK㙍#txe;UƈRRr@CHWb*_eA.N!@XHƘ50LLSad!xds}HJ)GPgHv_jM9|Flј9%U3Qq0Ufx?WkdV"h~=?AcPg˂ { ͻ5N2۴pZ'v3 O b0tlzeshEh'8%=#˗;Ikg xλI ;;Yb6R2q, k̨o?]̤bk=4ڵvjk5TFoWg»W5F7v&)vRYک/%Bb ~&NB=h #vMPG>4+а-^zVu(:g9>Q2yӦUz|ry+O? =1mC8SZ\űr+%&|՞a#Jn.%l'ƒqF.'S`*ö́O]9ЊQ8D"n p Ox!$Ѝ1!AyY`Ig mݙTTG5Q;`?dİx0;Odr~K0'glv|}6W9OM؄!yH.DƮѥֱ{;5&8_r^xg]R |Tp1VBT)*]Rc T"-¥:Rfwvl;~3 zWxv2Ĵ~d";<4:i6PGŒ lLJesB'c` /MȆwѹiA~jAV;3p'ف<ZJ.x s k>B/y~pi*|Ā È +?<҂ QNdD 6LϱOyL[[I"[/e'#$kJq,q^ QNj;֍kE'_; wW,%&Nf/T9D&C.M^^FX5ŌR~/0ݸ- p6%y|KVrmGO[uoy:+;<[aKwI ߅7YgBs̼Eb24Ix,}O(_ }xc>{伱ctscGCnqmCGso+wó6z̍Lc(F_Y'x7ǜ{zAPVd)7tuz>aYRC;B>7PI|u4 TEܼeF'p%=o, /c/rf䨓nA[TCprA&)EԥONZpզ/9 Cp&!W#:bXO[ˠ$0֗e@e! ^Z+G g:- GX[m|u"Q'm`kUZ* i0eNh!5~jbſv"dԍ v`47n3ZPŒ|>9 Tt>_^`-LzxusdM8OK;C6cD. qo*ҧb3R[>̃\qXAfq3KWX^.Xڍ]4UyDrb% ‰hlb?h;~xc5NEW[Rc}#G}emoLW˴<Z7~`> _ LCվX`aN]5Ȝꮔ>a;P<t ~DȟN!")*v΅zvOJц 5@AżJs _R+S20IWE9 ywI ȝ.<^}FcZ|+x%4mâ_ֈ<;50^vb3HVσ.xYqɝOA_*-cѱOeZi͌h;8wƠ\ix; |V #lj, }@#9=n :xLaQtg1C bl QSh›O[9v(j<ζLr:cy7ܢG-:İ{L3qfsXHq nfn(Pt`ڑŁˣ U%[AIםՅ- ۶ Rmi#n]RlBֺq蘷M>A8 bZw[ۦʈ"/Bb:m$XiNۡ"zL{չT+6րIÃ{&{$};!Ӥ52Ght9-amlN᫟hzFֆ[rmb;tYK2˹H đ'>DM2=qb 4 |8]'8 +owˎ\Y:KZ^A\o/D6KN&AD:,t:mi1h,ƒC|wmڏ<9[ꦣ$S`Mmc,4x '[?Ƈ)zÉ#(8NYƀ@7((Oh"G|n/q8 #9́EN`JEed0Vcyyz nE@\owm:1DXQƙgocM|;wױ{|_G[Uj Gv3.- }3l|Qa&^z=$᳚fބ,m\<s^k m 9XnjL]9zSŇuҦm9 IGɻ*c1jn޸^אNԭ@=eZ1!S@A]Qx,g_q2iGo"tk/Isn0Sn` vX10d:g1 ^god)he,;NV,ujh[pV@#)VWۋ'q`d[[噞 \RY"]t n:ôY-8Vyw&V5Oj7^)^u JړຑnIgJ<}Cغ_`›09Ϩ -IJ0 /ʪy)[tԵ~&ȍ< 2C_oU\%b߫4|.[.9u^sCD[av< .;ui +12q$gmnujI?Q78,-1Ocj35=ʉXSV:u:{mc4 c\Ҡ܆>6Usp&Ÿڰ ihwVYa7KW|!m'GHN\RfA=];r,!-Zc񁳝828Y> )wjfޱW+IxnSP9{$WE\ WUu˫OӀqC?I7r^ur\qTeFAA$쒤+i.Z1)kxO:õ-s:|LP(MI`bD/t4aV:[Q =Lcoz嶞Lt$Oa='ACv'yl8װ  +Wԟ2w46#OMNw !0ru73g#yIO;Nz4;eϩKN|8  M)0?)|`(%I, -o2C䏤cGh|rBtqKvצט V䍅nX߶O:9_ȥơr0JDc)ŌLc,PݸÄ!쎐+B,OV0Pb0\g7rmcymiWW<6"x]H/GƓ62uq \9*5#B ,^06ֶ0 *j3GƉRRdeluPsJ m!97AvfNeQGa-@gZq ##vce3^t_.4*VB.o 0:Ց-04[ņnrqzUe/UZ|gZӚms.;qhȄf PG =!a>%hR-T-VU dz&OG+F,8äPbo:Ч1@ɇ2wk`aퟣ%8]KqY'ީ nڎZMR6>o_h]xzg ȻXV}c",ETH~$m5 xF5ٶa2ѡyٿڜ_cg}R.煡?68 miw)dԫ~ JU_ v崷98N,j I}ȎO|*R6<ĝ{b9Uӥ2Ѹ'.X]=A2ˏ()u:WCNL=q:퍺Q H ^;ro&iǰ P|A=z`]`WCr4#v-B7I|`I= 3 qd@ƐR>d(,grjV x׾$: +vl?vD&22V'Vn*͇N|RKsaIqRe*+h;M@/-mWz.oӘebhFdT(ǾhCz$MLW[r2g(/2m+ƎJpqd &&o~B Ghkhs.gl:dU:!'1_PB4Nٵ/bx'&șN@BtzK~/e'a.uP}-Oev1rj#pFHڐaqAيb;%ۿyU}mjałd`vN?oc/.BD# #\D=%^oS$GYGR싃VWct!uufr#O#f糜ီ ?M_mƤq1;W7vU$وvX԰yF%Fdʓ[ѝ` XR՗q?7K_,WO_Ŗ2 !G N4Gr.IX *J[; _&AC S%/Fp(ڹ|U}@zd6~?HC*JQKrH,.Zgi7ȀҲ$UypNFxU/'./F̀`F)7Xffug:Y_eŧ~ ϗ,ѱHU;[G~ƍm&(:v`qLMiFR։q[ u>Cb}ǗWCIu+:UH.91B͂!E7P4uF/ Iʿd I){ Icfp51j"\d*Y!X#G\{&'uG>\v' u(/mIAӺvm(0t9!ȇZ§י&@ Bw.Gx^J;ÿJq` ?I>hj5TPmlu,_t!襑hŨܺ! -k{]8+6QR8X0mˈ_9.| 8B.x 2&!(_M=GG1UZ""8wpt8hBo39ޏ&vcVsC&X=6>ԫg!g@V2gL➠Q3 ` ߾}G_frpa`l0Kg-Cl+tƷ_we8Üw8 'ɔ!9y}2hI/l'$QglĀ2HaMU!/Hr.L&k5E"Qyqn#./r_|11-bDJPtRq4&p/2S3xa^ŇqL|ևŏn7~`^d,jc52ȁ"u=B]:^eˏc]K%xAvow%};bμELQj~t/I}e|_Oy1V\KЎD5W0<6r*;u9g*%/? atXqo2OZ@i5ZxM\ IDAT ~KDWIKe0LFǡTB)[1˱zg(X;m\ޱw8'euJ$HQʬG_ 8h7O_<-~H@&Յ eR,ΩMU' Q#IqycZ6|s;ȍqUsLJAhgԊKP{P Δs5!a PdcJg {=dʚ%FIyOsIf(2>"gPK1cX~冸s ^C\GH2P;nbE"-mm}LC9@l10@5?p"FkˁHm= o3cy-b>B>ZD~\@,;eĵA\._";ЛfU} Af-97YD|7opёДkg?)~ OubqʐkXQcg^t;z6xw|'54J9 `{nĽUx-sQ`W,!.\vVmZ1H1nB;YWFp!Y/Gɯwp3 @oւ"-cc&iJzFO 4P"\@c͛m> +]jᯥU|޼/"'AaǙB1П-2p7!b.?BKbiIuB8fl-C[%\oѿ6C{s;ڃQJa`qO[qq"Y9}z6pHWD6D\"~ '.Wo Z9k`n| 6xWnBq7{žXM[֏]S:rN+F̼l1BXE9ī5>m$P'}NsqQݧxwJ=!^nX7Q65{!M`lu?oLd{S=&.E1·9/LDv#Oked 8$~-?"26@}}] y[{M~j%Eƫ>O&]@Lt%ApjȧzǬM{phx:4Pr N)r`q;koh_ lfBeiR/De1Χv&o r+d) qkkF}]^d,xu1`ׇJגs+i@Kح!%Ow;yΑoC ]Cfjn6_ralIy[ hUk{M=3Ƹ[iDv}W|AC<}}Ćb~^qz>>nOCіPUqSbjk==~A)1v}^hKӝg`ބ㻼Q\]K"+[rMI0`lžrtGSKB1f @7be{a 87|"ÃX˩;AFƥa<_쪞8K NC1`[w{mF.+[΋l!vX? p0OLS~|jwM?JE /{I˅xbu8o&ns;a{Rj­/^CB=؈5MkHiNa;z Wm /f3l3 3ԮB0Ksr"F, J?N'a<ocr!ˉom4i.Vng!T7{̨~FւX'ž'b.[o)+dj.r+ rSa'6—S!4/Gэn L>y ʺuǖ\weai͌Q] `$۴/ O'X\ps}d0\x‰:78Tt4rBg|-&{#^?'uY>([=c 挛ZlDX)6΋9;rൣv;zni`O5!2K!.|&D>D^!5szCA̕DE;'Dp~oue-'i|\\JVAL9>`riÁÓ=n0v^;>$, jn(Y_ @u>@} 'J\2c6 |P6LW EM{ .X`> ;YJğ˨2P$20D\<<y7g‰Ж<9Fs||F ?z 7^\R805>(]oJ9VA~) nLz 7HopSc~xk'>;9P|o'=.3?ɯ}}`\P̴9uPo,mRauWPf>ԒoaY/4 BıΈm|?Fs IΥn]|8;9F?9b{?ڐfXWSNYNg>q!1_[ʣrǪg fvvcpd;<Љ]ۛhxo|2<@'{bט y6u[bM#cy"ϳTshΎ,~̨S!X5]G^W4}WQc{> r~ҳk XY?'P) M|jM^]75HϚ-ktU{M7vX É7>,OЁ\=G޸OB'7 "6D3.3@[CGy뢅`zFz~jlJ2$̝w/Qy;/>#%kOk)nƋYcz`kI ?1={6mF%o(0i3ؚ!Q?IqOwzQպ6ݩ ;sA9i@mmX. Ȱ}{Ck!u>c|s\o+!kUQd_m8d-K@kq2g81~[w$E,D;8ƀ1 Xuz}WM} 1j%4W?rGFC@l )ϐtTF$FdyBI Es|;1G|;cN~vFy?ym&P3?Qȇ :>4xg/.z,́ܤ!(R㈬G"g2.QC]R3?1.̯q&rT#ZM\u0vβv^\Kx1Oc؍q[>y.c֧xƖތ _,EPgמ@7&g΍ E%cU/6`9xbw`jįv^׉ߜ/Ǩ V8޼Z/v|>y(]e>y9S'7u|67uh <c9V#!wZa>gKb?Z( yK #}LQB2K_I + GbH|@_k(mpѷ͂c0D4`([Dk)›hwhLgD]@0bL߅c"sOG1 ds~a_:O7V͏Ѳ͚~* 4Ç}յ:ӑZbky;Y$d6[I o8ػa6~94_< 5y72XzϸS$H?b:ݩ?:s;|9q"fG?lG/ b~b3 4V7gd>i/Fԣsvrޥ;׉^Nл2'zā;4jOT1ލ2RY<\ u=k~؇ц>l"%]W]9tS V=3ZZWJ&.r K^˺*3m:Hi,0g7F?m1n}kűε$";"I-ITu96L-BִO|x(~Ԛ\ _͡0嘽rРj@.Pt ۽ fޙ"2woKtTnukW%Nk['fM\ '˺ϼ]:=b@-7n&i*po3n'M_+[$+㸣GM|~nTڢ[ONƌEah?2lDQ"fr61fc\ArE+ņ8<`Z&7+W{Ls9{ָ"_ G IbΉbNY2\5JOMo h'PSt>Ӕ[z<ÆuDu:e]9>Wz'B|ZC^d>Op&.p~\m9kߺcھdN\c[x#sN|nD v\PT/lc_pП؋ 3@"^/<>2A g -} n;)۹18! O!IK9na#lxP]I$~ J94 lrp01p">p>/:xbO0^`b3~08u}@b6in|FhJCW߆:;$1 ;`Qlx_; ).9 ivc8`9G_aH1RIqLl-.ܦJrEKLG۹06/Gڄwz~p& *1`F]_>^Ͽ!7bC t|>}`D܆vc2:\O|crz`e3z%/ק;}b_^VoNDZ{'Nk ~u|'̱V忼&|^CsY6Y6AcLluϱ57!@nSC%9E~]X@_8{" `Q?dWkpO}4'D>}̚UNoPpBm[ Ad PdC)Q']IF2!zt &u$H5faq{TvaY=ϻ(> v 9c%~Y9 cџ D)`S1b}MY^%lإqnzk3~|SXq ƻu/^7: ZnRѩEؘ{q:,ɀXgGZA!0."RFO]ԾaNyoGJg+M =ރCKٻآAÄ@Țm~5d QZ 3tͳgQ?XuaLGye9xw]1g!^6h=H1 ޮ Խv͸܈8jݻk=o6_̓5r+Xll|Dq \fv1a#eڢ4ς^Y5(79v]a S;!X-^Xk!2ڜ:XԠBh Rf t[羻܋Šv0 `'}b^"o2 no&|ߙm-02],uG14!.<;g,Q0CS"mYI]YqcoFL?@d Q3FO~foN|ZFx'90_?# ?v~QCv^ʱy4hd(ʉ,5fp”4ކ>dJ?wqyc2uqF5s-7%~a#@ 'ěJ'7|Y{OhǞܐ)6꺜V,blpGygԜ~NgJ)Ϳ֕qs[>gbOoGإAa *_>X:_'AqW441uaTԜ-WPG<&ok6 IDATq8ÕkFI1N'rMkx51TATC979e,&XIô-^Pt&>Lkܲ%\, %e?J)d'Ԃ8M 88nGcS'~RK1W'uhҎ&~l q_ȳr|!W6;㭝,`f9]ɥ& #˵ÕEl!kH͏(C aE=Q'Wl%@ߵJ[ 5Yc:sbM9<副[ĽA @w_nͯU )ȕiqGvUy#B/S,vp\jF/KϚu/@֪ziƻXeUUu1bkXī&v1aau3 k1os?9KЃ=X{n֫~5!|ПG%jNxDK?%iR9c{CP{u!DHB]\qLG]lȝxS064n ǂr! ]gs `wsvi&W~QMum֖ƛX m>trrGG s4x틉 tbu}spVmMOx|xk&o?j|vS7fɑ3"8ɪ 7'_m/ טg3(bjnm)~膟Ժy 6Ge3^>ȸIm3p]zHƼl}P擙lp~{j>|^>}!o-~FŇ*gRj: ٞR|XKn[$`łK}! d_k߇Av,(gF@1dAL[{#3}>b;|PҭŎe.=vX{<ۑaci]Sy-2qLku:@S O$1Hg\K8gVأ7 `aB;)B{23G9Ĵ)}q>hPj IH;F=~(x=~.\GڃٰrTy鳁wnj:s`cIC'J1$zcF0 |k1@rX,6xB:ZKܻ1>{;Dm~Z5b>[A8x Qx'OyU15M$3]'\ \$676xXl7yi3dk?1"%Æ憩G忰x9y0c yx#cL3}楟 0m1b3h\oe':%3{BIr";vc =_f ?rrS/~0Cu6fMp\FHdxDaon`91#&ĈcB1P:1 u|ņ(^eY%4]:63LA]')C I"yxQ|Hc[5[ฝF𱱧mp{ 5?.Ē[ #]ŋD0>Mf.2 c63yŇ 6n<7YA΍E^X=l>ֻQnW5R98|"|G1Լ7bs\:"}YX{mNsiǼ>Q?CsWX*Lk7w],ϸ%o`$9>{ѳV7WLo=D;'PzP<&T|B>Jk@wI|C}oZ9,?,~?811Go1}|Gn?p,}wcdI4<_AkηǸ;S:}/?|p}cGjԶGFJΩZ^mSdaU]D-6`i@g*](&;[}qRp#-d"=?(not^O^'YXo9!vCDL댮m aIenMcQpOLŎWbi- &Z-g<3sqSzי~D]}ghTr1qbnx[&Ï)|*Tn3g-G7t^E# ~d;9U&:ljsƏnw7G'n96 <_XMN> !|DZCY55 l˃x;gi Fj_ᭌ(ΒlfCfd\cur|G}h'kf!.&˹kյ7XDeΑ">sӇWkR;^~{Ɔ~!?A}^O1N~x1ʨ { *t#h \'MOlW%_09P0hYz۔aNd XgYf#_X) UW9~o?kGF=&Jt)~$QM؎րd<'0.Xw-Ϳ HxEO'^S,c BU~GզIN5h*"~34#ȯ !C"[ yhr:b~]s&v#HT$3ލf)\7'z=O'bʪr(B/*4?cuAtr证e K:O W,dp\57Mボkpp;i~ 8DŽ84sc/֖|?︟\[l΋Ϸ1ᒛ]9;#Ğ4dl$+ș~^=LE {CcoXW{f> F}ǎ#[|oos׿36ĜoƶŧSr̀X]ƻ;9{kO&z,u۵<;DEs?Ь{ &Cpڏ Jڜzz?j"$$(2 "?Mљż\hzX5OU8$֧2xQډ SM= W"+ +7+I&^.g /k߼Jӳl2 cA\ntuD b-7W/;Ocb0 ^Ž6~S:w )P'\ ޺Mc۶sy^L l1ЀEb-/=ucZ/A ޏ/#-|R G^ bZ;|ʑֹcacqo.ä591qy[X[CDbV79e>aC7_ īzǼ{Soy52RHOܒ.5[ȽrƞWw|@)&P#3WPI+VM]Δ2fݱE=xf\Kk2K,Cz0k 8~A4 `C-3ZA5:6 rDN@ WMC(| 1s3#1ny#nj]jκ+S45u9m;f_86!¤EI"OW>,pMP8['|j1>/^w0\nB{`|6xwΣ4{9MBq -9 s1z o5uqe?#il-coF%gc|!|/x`ȗӜӇ(W`LVe8Y`l`9o=cF p[g1rCh,Z֍}IA`u|wm! G:"wȐ'у>^GxK@1L`T)?m?(1VEJϊ pbZQŰM~ە RX,fg=l=/>K/ly~Fex83<&A ;}j<m}U~"oD{hhbGE9۫ xPZeTqȓz!tMrFlrcqW5vYnp#h<p= {o|c#3g3X[ ;io0e;V[9<[]5 剋-H`KZw pꘝY~lځ6^揥1yٟICmÆwpƆH{8ś GX)Η`ͻM;pX?mw kԫyQmdk]$ħ`P]#<|o-ͮZ? WfcƗy8k9^~uhmfng~̡ _X^P&Tț{ئ?ڼˁXOZRg'pj"gdJJX&r6ō4avk1ze P]n`$D}_s&_zŬ"AhLuWZn ɓ,1vc_.͒O>mvsM-QH&/|xW Z&.|'7 >L fnqnc]T,)}[9YO a`K\Ù\9wCɯV>;̏ ?1.f `/<׺ʘ83˓ _;V6ֺ8 د\r_=/GKcܑmxYtk\B޿O1Z!ζr#p%5$fNޘL`d mj\5^!/{ߜuJH,@ZW}X1+o^~x[5Л{fi {o3 FLd" ~hrjujZYP-qRvo>c0 q~_t)rF#j^֯Z.>6\>/vS>lh%> s{z0:L.uq=kϢKB*pS) o 1 JtYq P?;y1DZF>eK`slvɎ~ 2 !Mx$D)gx`Zc }ߛF3e4o{u}Ѹ?QD ߇fkN eXfl[y';SAE5ڍ~`cFFS[d tޖ'n#_,1kq Н=d@`<ʠ~׬q]kV99tPw}!%J1sԖ"U \钓~苅e{z%os _s]"Wc.ud@#ƶ'ocaK wk+X=[,Ўw~m&2V.&Znc+:jA3xueJn܍/hFzTs]XS^ACv|nB =y^\M}nͱ~? x؛SAxNMnlwe~|pنƣa0vvÑvrL=vFکpyik68F>}bE- z+)!ލxo:X.wl)1#XoI@?ڐȱݸ<ijL~淾<ڼ_{CXfm呿P뤿\#4Zvb|1pFlLDi&__|+=bh^pk zylu;Z!Y k9*e=^dxmxs6Y4̇xu.+^ə7sq\rT:h yM3⺯IuQymQXӸAw ^`q}8kCHȳQ;`/T9p4?hJm"/dLc3Uu:X.3] ^4>CEP@ <,~j#Lwrwٜ <UXl!`&vL[J:~%Xu͘nݾG6ށ e8rubDvѴRr3<;g1{k3IMΈQ{}0のM6Sq*+qz 3޴CTFT:l]ic~3>+ǎoq!ѷ( 5 x1zqe퀀Mq\<0?k˺N,&і[^Qو?Q8f[iL7P.Cfo TY \{uet=yQ?8!?I6vշ9FS7F/h5sל?kCߚi͝`C–HxnΓ3A6+; `U8ɦ31cc\V7U ~P#\Y[uy,ǙMwV_(Fº94ߛ2n8V~U͟0 =Wn4q#d7x,?aY?[n7?KNRڭIn@'K9"cPoNN xac뉛)!ɷy '6?F&!cvN<m 0Ȉ|77k8VGOӠԻrzGmZfTĺ[EQ5^ɀ_=Qx>)&fÝ9!vImlFN އETuY9wAO:`PF ~]|Zb@9}L:پ|#!#d[rc%Kl%X~OD ⢧MVhOKI&E#p0ûk=8_LD7d9O7~]ON0N%vZ!㣻91d Li7$vq;5>#Gn.J9H[!xN⧿qO3 ؆4ʺ431͞rkG4|T&R. y66;!r$IlN,i W(ol4iA~Y+4]czEQpB&ЬPmуGnX]g^ ,z׬\9yߙ4p%p:+X>NzZe{b #äkǪq._*tX>C/1p`rӗO4/8W#s??31y~,y CGg/{,t:1Kd]9I{ aTW$.eő>#Im;WPq{kZtG8Nu'?pU~Omzmz5^!~Qy㷱jC}T "Eu):.l%ē7Y1s!~J1b!EsUOLƵfAҫ͡˯qX8 /ޔuy, G扞'48;_! P -g~L#*blupQ6|"7d7c;yĠ5K8}g~tz&>x8ހ_>P] 漵uKa9< v}0Ya`/'{ՙۀ9czlAɋӏV-x 57+PϧsLkh'r&*5mo&ȷl- p7o]v*G^kyqeN}gFgۃ{\"Mj*nj㋎d*rNZ#t_x|uN"1-|ٓ&w|6>^ʰ.$?-r0nڼ$m-_{ؕ!.;73r! >k1D5[ta`ׇ)^ Z7흯 uZtWنoZ}13WY1'Ns][N؆o0I4&ht@S_3tۘb4:kGo[T()-<[9B>m@9"ԬOc 8'^ε#2ʣňI,nY2A7NaxdƇgضcm"al:hGn K /jpƼ;GWF>4.DitڏZa"ǗUry=gMZOZڵVAx*n1a̗q|2+%K;豶8ZNl-v˲`:ӇF(a.&"!~'~x?=k!#c=&#".q>r:z ;kQr#*N+_$$nd\םnVB:]uQá FC~qYE1c!307F*>0ƺO/2_ܰ*W,TۺN:%B9N~j71KydGt YcV׸>鍷xU__/\|Z{f6נbk@G 6~''?S|mM!֑>ګĺ0FӵF$Ge\EQ{mA> ޵ {'ʡ0+ f/ "v2, |/n8CP\` ٶ[;'X6Fw 0n 7;vL]λ26n!BߏއzM^-?l- ػ 7وʯ <3?0F7 zf!өgpȤ=&kv~CyL%9"\l~rŨ9;p씩Q(z›sa 6 %M{9L^[K LpʵbO$ .gU]=MHN][yuyk Km0p!K `^bn,p'fKg)Z krFl6:#$<(Fn +z1-3&V_kxӗw9ۑsCMZS$aC֛Mn~l{^ o1X dEgif-*ӱ: +νQv(|h76`iWdzSB#7?r0136܌%MDq5?2T!Ŕ|`1]\_1ȩX5y֊2 7G,X4At(6>ȅ,۹3E>ŹoDi㔷$J< ' ?PR'x,䅦q^uqN=t_[^Ԓ`ZDhJպT#_Q*xq濊" 9!uگ7}V:_Eŗ?ǔ*+'{;XܛP'*@5ŢW[{Ӷ0b q4J]kV>. wvjѹ:vmskd5wr{ %0JN\$kgiJ ;A$*h/?ӍIfwh&S0'OƧ(8An.{7[핼WW",e36ߓ #Hw󂳯 ,G3V[~l<q`>`_z;j;*I(vRZH{eXDYkSixd-lb,9ly k?13y Fq' @795  ؜"ݢ`"ޏ926IY}W'[=&H{.%N~;I,04y'0KuqCrι>ghE<8'q_&۳2Mo^S2ʑ5A1A$aGv5wMb.8ӸFNl>! Ѵ0=QF9Nݶ6zcē7xAМƉ6Lcqbo8wg\g8\'>D {ol@>mqW8&N+ڵN?t8r(0`Q^[7>7ϝ0{ݛ ]]npK?nnfC,HTtG[@#=ui|R͉ m֖ փ7>LkƹEDQ?,_yΧ&2k|cLcŖV=Gѩf0!4}وb)=/ub0I n!{E2fC3(w?}he֐L Ğ1hkG$8nFo_Zh=k|ca%}Cᚌ5G?[e39cwGȶ{ƯI+bp aq2Sqa:O`B1ɤFg,MNz]僝.rʫf#k;~cvdu6ˍ v}0BӵLe99BECh2) fVH6-t#5 ҟv{3B,?7(Pb f)Ǐg?7\|yL|O 34V,k;mEw R"Z:O=  :V ??7[`#~#}t]`AeYud;OLA܈{"m 05z1I ?,r>Q ;4NlcG9]m"=2yȫg+t65uE1Y-/2[&O~H 91V]ǻ|҄츴7{#ۣ<۽qӪ oQ1q[-dDrlx W\o>t;9w̃k[lZGMe@OoBw3p%qDv֟3|H [Que4'f۪j}:w=17ƫp4)*}Lطi'dyD]ͥkNHnh9 s5gGR6[j!vVL@}@P*_ %r^_֐{`Nh?3&m8SлA^x @*64|o*ưi}@-D|!W%jvYƃOI`]b2|m?>[-d/X<{dDswygȱ3r->Žf,f"=]b(7*96\vZ'jǛ~ml$z:k3s:R{x&5)^-L҈q][Í&.(7x̥b[+Lȹ QQȷa ܰ8oxhվ t8| ];74yIшj[ϸ|黐'tGּRڥ~qTÓ¦g-tpt0sf.f<pM^k&?/qӘ+`}~XFž1"+c$ '빾Y49D}ÍЫu ѺvLEXVk._t"O RK7͚.v(;ȣ%.M*c1֞Njȶk _~%|oXdZ+(6;$ e :de04!>BH/x'^NΊ/)f[G6`߉W׷xEH'*.gM>Knry]C.q^Ą,o<}\/\8WmTݻV+7=xg 81#򌎏rY󑮤af $\pb.XGB3 c73Od Dݓ}˖H)Us/9ksc W8&s ߺ͹r9]Լf|.u麵.$ztc/ 73>Tc`F3  W{nxy>CQZHNG>ojc+:j g#߽if"-V2v;Bs+TgMyoF7b5&g3_rHw>Eb/k˜"2z u& G7wD.u}^מ7ckypKAkKq}#5ᣗ~ph0'ڪ;%6as;$1#7WOd B7 q)SS >ؼğeΧqx9p(rľ7^\)b<=(3y x;_C9/5T*Nd3&W v88 q gjx4|KuK7?$Yu!.l02gv5eb?[R9%g=K[_Uп =)Sɂ4$xzG$~cvw"tEs,?gWnjx?hE3$KV7':!l.>h /dOl[co7?RҐW˖(zd#yd/##[Ē}x йEFWy3][m?5D$ 6%G^ܹUG~&u똛p`{pOTc'/& exN1zxy H BΨfR4VsY'^H.}wͅ/:O$3A>)Or4@tLҏI}rTCԒP & O>,O}a$7~48iK+#xQA3nŸ {pnR-4}_qr~3l£g,o&0Y t]MIڎO{uOlÉXÇ`g%8 gpT(6}9Čp$ >,_jFrc%ⷱ9 EotþԘ\أ/yr"hb΂w [P ?;|vO|h^ޙF@7 ?4yDڍ^Yə|d?xRZ 5Ncf|9ū&(k2΃?w6::5–ŋ>?F/6 ^ivy9B;yBscr b62'6ty}A}f6oI] "7:XXCm8=/ݬOY=ZIvJw[)G0xHT*bmn[sZ\ןx77m+s`0}|#6pbMsuXskɩљv d>pnkR/Ѣ qY&ρ 2XF +˰!7 ə3G闾P5_2ǐA@m1u @7I6L(s!oab{gF/X2TĦpfaV<_:> 'wr=:o=N!+ݵcj9S٩XC򞀤kuN??I 7@m~U;7cbFL2htT̞V c. zk?b,m셇 gzoE|:h򨂖g5\~|xN'2cc[Fм_`o8yYpE;1,2}}d)D>a{iAx {r}קx,upܩaP"m8 FLs1{'y9mg8Hhd4I)nۚn)q-`aMcSs _1jVr^9&SW֘2L$cnՒ]~'~OP9IBOer\"8191e=f\BUqo y!;TC71?Y-,2c l dp +Sxu3;ul%1 F;VL@P§euz7a豑nǸz |hhX9Es)g7nt ĵ>h\?C>Åd <(y?L٘\bS1jT(ֳ}q"8͓ܘ*K :#6+rǟ0Ld֯iWjE97 fnvz R7 dX5zŸf_EoE"rG/l#r@=xF]12feο a Zl]XBX2t:9N 'ŭ*tY`v(bxIFEDE4qsN>װDy=<ײR//v~BW/E!Dž"8JXɭǬpcLIa-G q Cez)x3hNxףz ϰſ6bM.r.fɈ`dֽZį=unss/}o]o|8[ـ`kurO09X=ORHm'\Wf֣ 8΍^ҁND3}:a+羀7I5۳u?Se_}DW|zR<,\f"d=%l &cuĚ5xmq1f >'YWQ#g5q^}^oZ%[W됃'D%|r_;5J8yՎBS/\e n2L$yF|HO4ʑ AOȲ1p]&XfO"k.FǨoms;|I qw3Ox>'J'sh*R/rQhUltՃvDLN33 t`4 a/<-oBҢ<|McNMbC^z^`!*gn6ٯKz~y;mKY[gӑQ7jMC'1 U|^=nScP0_p`sB# !bC<-d݋d{wN4Kvӵ(PF >NYi49X6$Xs"_JQt[ýCN6LoӐwZ?C@oPa~s&CpՅa(e&l912 yy=A@/'Vb5كK_7ld _ tFDkQ  SYA΂CQ[pC%&K~ҙ$nЀEPlzKrUS:ia*G)yPȒnV#|F&bӧس?a'r]1汑Cp||ۿ 1u1LrrQ> џ p;yem#V܊i}nV+,ImG#<$]`v %.›V}pcvuo=)ONEAI'yM:R 5·o&o|RQeQ,;m99$L8p%<}[z#ą*ϗ?`p|'wa`9+>.h\̄#'|lſG90OBw>opg+ڨכ8M[u߫A֐'11>iz|r8k՘53٥d5nIMfrX'79($/}w>(ۂԗLQ^>Kg_i?ѾO|@Ff9 JMH겺ɝ5`i٘pz Tc,p΋v t=#d k,{/֐bU;!UاRE0@lF)]s8y%`mp|`8&}Emv8Zfs^Įs>e!G]?B!kBbrNʰ{|a5}M993Gg^؈L3>[I!ac5/TwflPoj})1G%Gكvc;;Qk螐b\cCGM9':nM^Sq;Y-€^o$5>WtTW/x6.N?Z5(p~s)|@qyEjn۟l\s6:mĦ| ^j0?V0y^*>5ڪWk +?j9NtK~.`|QcJ7;~]l6A"]PJN妞+o4D_k׾0L8I~ff]pD@Rp'rKNݨC)D<[Z-Y*yR!ڒ'XCK֝yvxx(6'V뼜a[}7YLF;pZssZL9xqs^g1K}f&]eBP0 !.ON 1k`Ɗ-p,s?Gsgo =Z Ils't*lÔ9yͷjt<kJ7ƍi7˜ڋ9F޽??|T^ǹ`S?9is:Ɖ0͸ d/u^C \9! =8їCG Н(pEG~-ffH$ԢFő2>kH -qrlV>ܰpaic%Y[$Ж$ol<ќӈKfi ϷyNpMF. 39,ng|\?usOVi+3bus%q̟>qFW Ϥdb44Z E[LciVFzf|If*$]4li;(i:Wpg/5(e}Ho/ oCgԛu qzC w}፽ -|obIOǥ F=ཷr ܉Vo7֜sp[ŚM:R Nz/.+˽I#qԹmwLOsXV盳xGQr\qF IDATr&/xM[D(A1y!tabuߋpIG-SGp2@>\%۟8qw <y/ #Cݰ{;!DMͼev~k xeԾ}=GZ=\YGц=gkQ`փ SF7 C!rs@YS j _{bFls^;VI&fDN!sԾsoԴh,{:²>c^DhxṆNGkz3~{vH2 ؇KP ,"N)b MXuE wk|["ơ6X6i|;\YFv}R4|RC툎]1+:h紉uW~9jŌ^.mKa~HH_{2'gMrP4y!,~̣՜iǭʳ R >+'s7mq:?w1~`ُAo IoBDԔ2Ȯ\=sn}$=[R(a~Dp/̽"_s+  7NYׯNlAgB@>AtjޮpqKMV'ogLMCkIhROѕ4ʔ5g۟Blڛ 4ܢ]>z@Ev0yP'^;y,RK+x=O%'Tb]GGx(Jʧȋ/Kwx/ɣE/dcXPkjAm1OFfت3WySPmԌh;$fŭl$;m5Ƙeagm?a`ѩ9Û jZ.ݾ qdLrS|y |k? (i5Wǻ.+F8mEGrVc?XeD:7ΛR؉dl #v|By+ys!l@dBXE%^m؈nks:OeXHN49_f)/Lzpm DUbn90դ//x =Bf?/G:yWfG/|ߟj??VM֫N?;%?nDzd/{ύn\~,0wZƴm#`XXYl^Iv)>>.HyI~y71[Ҙ\r=Fkz,a[[tj%&q;}9g%.KA\oRZSw?_[2,4ȺӫQ9Ww̓5ۛb5SZƘwOyB{ '>g<&~iRcEO7\ȱ5Y'ul)<㖝D㵓c:zyU_CKgo 2B&ԼssbA'3E΃huȈ1{:şD^Y ;h;QԖ QFw@mc}0<6ֺ{f[m^d66̕C xϡa숀S=Aw-sB;Akxn^t$?ϕ~E)@{[F؆B<.&u, {BZcu)bMUh?rfj&,I%ҕtb}sv sgGH܋\3|w5-]ljֲAY!yAhhBōowp?mn^qgtZ*ɾIPtbfrcA_nXr#uzyʒ mڔֈܬ@D35֠u CKz:ЎR5΄l,Q\ ?70/"hF0x@}8K/\fxC0¬9}SNAn44d-h^s@4\1 ʡ 6؅ڨ! 6֐yf#K+@ntqʆ>VܚfRyxsSdё#v^<8zw߽t賖~kN=ϋEk_jp4F8Ҿ580埩B6c $o"F(g6i=MIb||~r 0LP@.;Eճ}i>a\9 O6Bljp0_^썵 FQNʿdjo58‡P[|7mwGߺB"{BomI\>LpWbįA9WHp?5ZcKvjzOX.qO+ciBk:ץGh@?XBTbO>itaNZ6[ kwX@ηNyΖFz*̲Oi[uΧ: 1z$tp3& c$?qQcL=JB,nm ZȘm0R%SOZВppv,Qqڨ #|1? !y7NQh{'^'s|;@ʍFÒπ0oFqv#z\Q~m<#'YO=C%eƜl5$07&6kˢ b3 kVbFPpfĥոVR_gf{ J5Dg4OplȹVxf+JA^B|/jL/59[7,?Oj}HrHGY2oܾ֠٧_b?|:7Ak_[TD'j8|y`ygN$bk `_lmClqDSÐ\bG~3\Ľ_b qQË5~^#?@|3s߇`!AkSU؉&fz[H^s[Jߠ7*v9Co/0`Zѐ=&/,V>r\#9Q#m rDUe'6^"q4˛I* 4Gq`f hBC%=bǒk[?PtD R:OEc0qCw [tfE>D<1ȓZ׵[_􌬤ꕮ:z((ڶ֭#rVi,z뼰P )v=Mz>D =w޴Xy#=Km1rr>ŖFfb]q4_hQX^}/ơ ~96z?}r/stM8F7~WV<6OiAZ01~ohe5[I.c$> 8/v{SjZ>2\Qſ[6PIK0vb$*>7|Z60}U拥lDO>a;ýz4(F3ԣ-7ow2.⹘ wW !)@ܥ{P[|/g39X!nq yYs}rqo짏`jbأS9C4o\"1pVCta:۾z|2Q[Q2r:#Do6ԱVb񘑾h-1m{5vj }ćni(=³9{Sp\'${{+ޛEfujvղG0?vv㰀mMĽ9[\! 5?X;Ƹ_yi`7{bw}7j\ԝղ^ 6Dcx11~9uxR} >]~W-Z[m{u3o`5GOnr| {4ήѝ}K2N߫mjFt=jN_ .\P`oj85x Ā%_rbgApx\>6pF{q;seD"HU<ƹ ؿq7Hji2r=6Opx +s#GmqXˏ࣮26>ri`C[XU'Zus~b!V{c:׼{b5Nf-g?`λ>gߺ K?pk_h*1FlvL.dZH7-2-y~ `c`񱊟iV[0$FÙf9zz,xhũ\_wpmN[g,\_(;͉e牎G2''Cpo e$bCR08{kBOmkd~rNje >`wS 6M?=Ѯi<:ha=>ǼkČ-ϗޒ40AJGG8'5$?79/H7uE!8aM֪[F2fhCus]sVԘ|&>rcd9j"SߤƙU;,f>$ 7Dz7d-}~1q.vD`g㼦b94pw4N/hÀ>KIz/lh4"5|otXֆ7 |zlO4΃g$i]w¦䘘Gd-}'|M3.Q;"ujW64raK\᚜^W v'Ef΍L[əpOK)ǑstU|R ɔ:1 VI8l:Чar'M$ԓNڹf8[ٺ&bvY'Eڃ\8ࠖ7HE_&IOoABBK>5M6 曲 IDAT!Ce qGx.U3ηBJ4F [?&A/ dui?ks,:[a'7łϚAز6cyʬw5L.&3j]l{O&۸=7nтs]bek,y/u+ܯ$}QK],x^Z<{8q#&ɪ{bУk(a QvbM75i{59ζc44?=;٘AɐqF#(զ/]6_l=6;1jR)NF gZtw:$+koV<_ĸs9- x WH&4z v>׸؇/{Ж=6/y~nDˁ Nl"6=#PC'`rB4&WcNHEu1L6?x"C4+A;u̓Rn%y]e| Ƨ¡RF/q$?_!Oߝr|y'_DW#G8/OAld}xqON {_UoXD|:W(k&mгD79ॶWj3]3?y HBjڤ7ʷZH?xg\෠ # ^:1]y7'~{|ѣoK 4-_y'$W4Xt r\)ṪfL76 >1**}'}{ ƀ+gj—m7?l\HB#)3L՛~Ƅm7wMꣁhb8F+K5o';OœFO,spo 3gzs EfnV5 {jl'M~aF'}9G@ϮbG~0|쟴[.©cN<{۠Q<|Crg~,Ž40`7&kO>290CWk &=߮tt+f bVLb/Egփ;8i*zP\'8X#8|a|d#iG Db*)QLUB4_!.#HGʍD^PhLeu9/p-n]a=3$SٵHG|!%.MՄG91O nζhLZϏfqH'­ ~IoJm ݧȻ1Gə^;z #<'ErKwyb:c}TR_09xٷvBI+L:X[sρjG:#1X}MVO)oզc[@OrO\Ɉ N>Vc6ҋ__4`r bk20/(cNy![^僚3toʋxΕ֙sI )Ko.Ï!1d cFނ9T>饛}<]b\|s"ZP(fs[yrғְy !IsY]āe.25>1q 2/̼wOS~mə&7ua^PT$~YvOmI-A^?0_5N64 OnAݛQ~;&?Fw qUfnX\"4il~oue >bX$념͝`K!Dljј' Dbu3;ӤƞX7rzVˍ'8C PfE7nz55hv9zkƥ>) GpɐX[C{/O^Se*/|`st|tCu>Aw=?¬yr2i=o9:*J\l+vh8[JS;8۸F,K;.6˜x%}{pDf>PP9z2_Bk9z9'/-79GF|g 4T9<ՋZNe,hPa{6M#|h5B;l=ǟ7j1xy\K'y"S50rB8>ϡ]xxݵFMl=! CY{v;O{B5DTYɟKŞo,\Åf&a9⫖uҗrT[WxO0 <~靌.Ծ8I\#<3|ѰOSn',njTor( qFK>q3ƥ ӯ#:MqYpeFtn*̱S(1ɽnMWIz!LO cG?J3cs6=rk EC>RI\\'a͝uƗ2l\18NnM<4)rJpsE@=d ComYjDx^N沶_- 5aM lpݜs`O^=1MU 94v%aizƓV{PkEZ<3Db 'u_S໯0qD' I6c.\تO0E&MQk';v6"b)k-vE'8O̮!~UuKSȌ3+c "'b^fD2mEM=gZq{ < bO&"Lw5d&"ᣟ zI||w-F}#q{$QM;Qсol\Fc?gYC{{Mc8p>g6kLv9mZ#Z[rD[7ؒ^ͽuP[FK <\ϝ裈P|W-1q7`Hp$!z5i=/l͙hZcU{Z7f]f<90PA7 ?*|*c˔2F1=O,)j5ښs 8|p3+|}kr'N5?~r909Zz j 39ڱ 6_y _71rwv!ŧD3_e:{;^yq'orYmg';^mLp_sYo7P zs ]{ۮV8vV o>bV'an:L` o lXÜˠZAfkg ˗dI2Eg4NTLӃ܄o=wKk"׸p@ӊmCBl5޶Ԅ3rzpd]Ld [\T?'=t& l˔ʩ4ۏޡ6|exyɷ'(X_Y'6FY +f LjhSP-"F׼HlsJ]m$۝sԊg栨nn[9Z$wZϷxQkFf|q4L49fuF)%ZO1SjfJ!'/^n9gɦ('"s#}ϙħņ|쯟 \F]͓X鍦4,_u{oZ32'9ȗǶu>vb߾Xv+a\T1x5iߖM+ŸzpݬѸ&IJ\j'+|P2rZ'ˑZɛ^ܘ y$Y"b;FI?yըsd/6IR>?yG<"v{[Nv7?~Gm-ZcK~~$NY﫧5{(:O nb86BqbH<]{#A>"3xkpQδ-z}Wߛ8GN6v·|rGS{l-g}|OiS=Yü]X4^KxySDږ y9'|{ߢ1 uj̭U }:Ƙ 6z8}&/qRYaܛM||Fd !Jzp9.O/^7LNJx$Uؕ{>&Gn~'-`Rk7)%>1X {~F޵_b5ąȔyA׃Ns.9w~h[LIcTlPS76/S07xY#HlMwKzU ݔz<k*,^xSNg#1ON+м0DU>hcd Z id*sSWǸvgg V4rZW#v$ȏ#b=}h%?+V< 6܊dG="DDĮ _D6t7T^#)'z4u_7grLUsNE~,.[.:wdon-5q3sz5tkg&CdK~O0fs /X}}@@ڦuhGϸzԾgym-zVK쉃uukJDHNՓ9z2kw_3hu#xwLpN93zTxEA2dMvjdNI F~#a }k*o<KSa$Lkt&L%S'Oo|C@.p؂ut3CaFI&lq\kl2&z3l<'fֲp[kHk׾>=r Lb"@s?s э7 ) 9rxSS{y/Ԟ.e)9ҫImFrQ< ƅ/2w[੯ >}-k)nG҆/5U{9fu:LrbT:sHyc7w?(s#"Z+|ۛӧ*Vh6fy7<>r D;İsC©;kweEbU1A-{^?:>ۤ<f0`IW E#@rP[9rbao q6)c@/{ζRw.p|a4Y ,%GsWDd\:} ܁y>Q?z?uɽ=\Q&apP"Fr;dyz?Qɇ?Rd;q\yGsb&7Cn39ZbqI<:36zd Syǟ裓'k@gQX=* ]f ;1 V:gЩV>GS*"4לhxĉvMqfM@)oj~j\ԭ[5+!؃ <5D{?u'7[v/R4;ȃqFq9 Na)" 7g³Ȃ8Ye0ߛ.ɜ[luSB!g7O|ɜ/2{ow.gU([*I0c6^D>x [p_ݻi*F4.f/0RK{2wԸXX e [G^Vu0^jFa/U}Qʨ"``MwK|D ^CZ``{#OI Phy'8%L'^!ZGKMx.97 wz`vmR cSKu=*?#|ŮQhNUtN.zrxPw\cտur<Ĭ9!hdz3`GS?vf dcj-ULN?o_9kbiSK/3M. e4U1]Kl'`cw@A\W-P?Ġ&T?|yo`WQz.>PBIH IDAT]r޴('pr,rEFvR+c:HΛ˯bwytz]QUĤ+*M"}NN  Y.p=4h&.Eg#VYrsGkp>9jj琞Wp뀅 ; =; pꢨ|ؚ.Cll0^a 0:1-I+[|ϧ"PCEwĐ:=/&.bYK  *k0ajFF|Y(#n7fO}d黷r'(,=?哵SA1Ɯyܶ9e^eZԿ*//7Mp-C;1N} ڢz>IKoֈq(,ZXjihK ,沞dΖ9u'.Lcwn0ZObW &Ŝ;wHGKg/`h._t \"o| Wi_tL`L\p]O :'q j"]0N[HX(r%'/_>֞%n?yKھ_|Ő=e8vKOIN'ox+b}D+')@&~.V@~s^.ݒvebZ~ߑ}Uu{ 4NP3Rf#:qVx.& ԗo}y}004t@hMڇ17xXܨ:$h7q5&䠸 4?9}Qvstc> o6rK] +V <2/ype8ن 1FFV%U̯f}7G"1I[d 3r}\_mIf4ḃm9 ` pIQRͪ0:ؠ3֛Dr3Gw3nU=ЙDɟZYX0K.4|:|tԱ?VGuMg=Ձ9[mmk(R.Hrb-y#+!\O?4vchI5l/-77xvyq.(T'i!ǭ?\͆x> Q>&^lG>.Q<͗scd{MG|]cg`_,Q7E=?2tҡ9!h_ߥ+qۋMs0FdO 8!X_CAnWBr ܉%09b 7FħAI&soOB;DP|'w&WՏ a|a5ag&NIH{zLn;{1)mB/2CXSmrb0M TtMss0:{0(3؇4rjw|У \5wqw`3'6>˓_ݭ9ÿ]OlST몙cRlɒjt'ohÛױBBQ"z퉯"G^԰oVGdղywfa>O!$`Ee!ۭu,:`^['[KyAUz:vv. 8oxǾ88Rf)@ zޟ͙\s(Ëxˋ?uI} {sw[o 8f޸vZE_YĎHsop\3շ{bX7'kGG'Qo'b}-Wڑ^#܅6LD} L[?S-I=ь7'$mxv5İcF}~KUA&II|]/'pQ4!ORp~ >y̸NRj8vYܛ9H,'MWDGwF;XhI⓿~7d7( xw<$`Lʿ<}@)3:cUӆKf?Ճ/˴QD^u&i{GL!5?KoH_lTr`7.9 /mLaXx!Wrep?`PWa`x*H8A^g_1n-ۨɾ'kwi9Oܜ5+jKPyFg}s2wifלkՊP݁fb_`T[zTnw{yc eϛ"A/MXjw^B^77.#S\I9ӽsx6POjxz#nZ;TӎlQ7 sl"h>=pLFjCwh&CYA\[;8Ar @Oqf@} PjwQhX. Mwlт OL2茞B \'RjuO^̋MnlV<Lny'19wT9~5NN?4 }"Gƙ"k5%߂IDƟl=ۛ ?{{XI{yQdVև`L3}l{J2˔o_=y"_^8D+a"^lj5h#n8ЩM[0? 4! ~6 ̓;t-m{Av1L*pNp54]c=U_bS"\Э7x8>bF`EݹQ>85uWLҜvc%˘sľuSj#v)-'F1nx w)쿜ϽTms =ɾ.(cN8lA]s2WXԪ~q27E[P[q$5\[wyAJCII.:ßk9ʪjڰ/^ ik/9 w_Lw` <`|:u wA+ s;>VΚ!73=u (Cui&p۬W2so/bSJw*RXcO>H׃:gY@B?!^'fFTXAMǠW{‹hQx+Ƹ)BQD+u[-Fw8$ۖ?yg>Pus_5jC=^v>^K\WS:kh~܁EmgUgm!*elXFc+{wsܜy|M.-`OM1TW<$ yU"cV̽K|f42"M[QxY>ϸ h1=3iNc`,<[^gYZ6 E]BKǹcd8brdq2J BC1c q5LH΅|_q`_Rku-t{GBO/ܓUFy0o[laѐkIeݾ[څ6hUpe/tG|ɛ\q %ۗƸv; m ~>1={fW_XP6lm-|²yK 'Ms07󐞚[早%jIUэ捭sԶOz1-׎Q\ʉVngOc,w'h76 nӌ8pQCNͫ $[tȑQK6Xk=Qp ݟ Wکd-XfZrv"w4o-Ka8 ?~{0tOzRZw̭cltXla~pa=mIy>:63$pWعlAT:ӵlT&/`ӺA '7O66I< Mx;CG! _=>S:=_pTT`Mxr";ɫgl٦p{]uG%ŻMW=o`nf0=D"6&xO|*$ܞ|mr `Fdu7$q9-?1ClI " w\{)#[4n)&퓋u𠘜#c;uɖ11dt!i0E'̗ `~]\]pV1Rh:& |5!Gp 3{~g6/xCzr>0X>G\o ~6} \Rv>0:y/!^N] of4cBm<Ɠù|]-@_ay F#(2r l5<2q:~XST'y  0ĒMz_ƪ AuTlK8h_<PtϪNjθxv\z:Wΰ Ŋ^hv0)־@!St ;QԁsJV"J47(Yxtc1k\%%Dۗ1gɋ}wl]rgcDѽ굹}'f=doy]; ZSbɷ9U1сSb3:ɒOp]yBδ/*xygb]Gg[[O2yx_#Ս4x"'&^]a0 {YMid7e ]+N p9g-rzapc^-ON U:#^zu%wzaX/ƽ?Q_Ms_y w l\S'VdOc^{ҧw{i *l/Ƿ]jZbk;LU%OZO<^Xwe_,o7yc#'^MOviKΦD>Fږo 51l|Ж;hmD#ᅠ! fbcӛzPr`^h死Ҩ5ϛ<>xÿ\]+pdl|j$7x}8 ~Ҥ p{ZP3LFc9McZsj%[jX..5R^0҃JۂEsh՞ڞPO|<Їs_q'v'޵!|Rкsg.;-ɩZgô0Vё|{._!>Ipr}ߣccYșpSo0gcWyScz#x⅌^,R_ 8; q$kLT6Sxr1X]sDĽb(ΟI#wف)~dcZ(87ɡO0/%x5L._}u`.1s7^Mw8+pw@S?sXB }k DicngtN*>V`Z=䄿3tߌ?:⼿opGmп "(f٣\vDc[o̢m'jM. IDAT6HKL}Ro 0;1'%yv5S|a 2 O|Y !-{K-]3}v ۟:f^FJ|Gj|'0quݛ?0؎b F8O_˿t1 '5`tp'`<ةߞֻ׌:1!QIȿ3>XF>zhk^ВuT+1&u@`5- MǹӍįN4'>OF.OQXNhkZuh⺢5oz'r栯oĮP֯1xՕ s{`f4}&5rGT΍mN#շ'@Y:W>){߸'dx;4 Yԛ BOln5OSn?43n z%.Xʦ"iLJ6ƌ}$7ǖ?*Jdy[$"TU&.wmc㰝|ݧTz]?q9O 59ӛӠim9Yw0`J[U_<󪋌kL07'>F1` =ke_ ͥyI[YK'R߽ #V@Z7HC]O6HZo^`շ Od^ g/:u5OΜZxZԿWBuGG-غ5u3kN]9oLkUرu\mŷH9c@gEB}[]yu=Z'{hi Xș/Ѥ"sJ3S -8\DpޙFnb@%֡D푫c6ZJ'݃p[Mk Sbo!I0 O qvD;"f8GhX(r'ZC#"V>"3,88^Iyeףl^(`휃ڈ~Ͼcm+C:vnh ;cfz3=.ѽ&9+N;vzq0Ą[Fb oGgx<Ҹ/꤆;ܝUFcNV jZU~C}SN|)W+0_eNڍeN^=53F*HMm㾆ܤhoFk^Dsz=G1MҀ[S%w 5=Hݔ;k9k:g㓗3/Ze9>Ĉdθ= &'as8p:FxOρ\`$y<ذlKDTpFBmtw^mf WJzc Nl98+8}z\ѦV{(>'9ܬwIc5_ rhm_]U2Q80<}_)XuW&VA#7yv䃉prB-]JM9pLEuqJ2=TS9+M} ռQ|wc:Ia8sfN,ϡ=)d-7FyPO1y Y0:zЕ8ICx_Y 5k]Cb>%6<^3͹jr-l{m_53%ܵUz-z*<=4Ln ~'8Bjp0"sx~8p5&to0_/>y{׉u؃[WG?&l} {c/ϧօOiɴg1ݼpOLx}zv3{~՝U`nΓ?Զ%-.bkZsvNRpGͯQxȋ[ JSys[#5T` _ʶ ص^;:: w^uJށ`1&9 ]`a%6dZ!=yQ+6Y1rrULM/ZL]z-7vϞ|^+.~u=~أB+KǶ^Tk+ T OߣԱ="^|wUÑԓkGP}V柤uBpFa,@FV4ʧUrI9TO__w#"6/Xubf }_&˻0yo:md'Qm'*1M[?|Q}O~&h!o1bfI,&)ciVmܝl4X3I[&y9G#N͍-!*F^4_mOX$7_rp>lBؚw3mi75#:oV:1|tvL$;]a3e-rIzőO#;1y>nl'<8T09kpsႜc;ڢm^ou93 ~A' AjICՊo7sI\َ6=4uEomV>,3ɾwֹ1CHG8(xX[,Uúcl6b'ͺ +=@#7!EL8o.:<]%XhR q;qG!7*pf9LBgGj5$Ws|Cf ٹ9zﱃx~j!~Ok4䟟 +d=[GVVA_ktqV{:B#ujG8nuC'bxdż3g&S[ն;&:}eAݕ`/Adk^ܙs?|ѷ0Dof>bp H3^G {M/Y% Ck{Yq  3oOμV?l&!gVA8mSSύ?5ٽ+UHe6gu}aZF;qq[Э ]7iA@s~柞okX5'u1ûD'#΄/XCAd`oM}p*l)YHo_ 6xon(īul px% /T1;59} D ϞI=9SH_?l vz{^jwS4; S-3,9ȠU7Pp3k5dCu|ܣj[6-aUF(sy=9gmf~͗U9qV˛cF#C^s ۜa/ ;3Xv_K['k=j51+ ?0gRxoZ*wz3l}KߣA@*em-6 B 7YiEN:(\o5?ꯜ|F}Àm mQi}14shpMyYs(*t d=,1LJ9vFm(mp(ܑ3Q`:Vgd,μPanuXx&|ܜ ݱoHFΟ8DObSؗ]ޞS7|ϣ2O0կɃW|~e(6o3$DKBP Iim6f[gɀ4™|Ƃ);spX#gi~ڇpA#O㨐SY?اI=n]sޱJ>#%Ow7_kZup*pܬ5r-OGE ~§_v?Pd΃3~:%299؛ N1su|hgvc0} ]/GY.\#r79al*sh&pl׾֞wo0zVG^$|C}xաfՇf Zѹޒ{*z?Tܣ?$aӍI xz ̙x͌%lF'osr|iմ=%̫C 6zL21Xձ!{8滎c! fM[kA?z7bQpOyXؖ/>N xzg[cؼ6ɣ1L"-ywǏkmw_p&=k8Le%6岼&&?y Ӈ{1 fިP19/*3,t_6$35s |bȐmqC#ZoԳkfܳ8'gbW~D_h ,{Ʈflw4}e>cOف5,"Xh W`-gb!f}SVR>6K:ܡ^ yXJa$xĽH|O›$o?mnUZ#3wnAHy2W' {t$,5Vt"hŏ..$j3O@1dɳ=Ewr绞yœa˃w؉T/s&4S_5PE96d F$uR/>o=M;p7sWdm"8z׍?>@Sy|hBcw h9E'nXGiq2ͿѢ_h4OGp c9 VtFg/04>ѾxYqiRoK<~03"lo0|]C #{{}=(xbgsi{Ԛks}Ϛt^;t $s퍻'c;l{o,>~@+9_iet&Ir!Mw#-Mkkm?]ת8^|. l3ϒ>E>69`Nf`_gxR371ưFmُjEz fmW]UEE'4uXs5Tmk4 myg֫^5~jxϽ0ߝ&0Is}:7M2F>47SD*=xs3gEʆ>L1*17xߝ&k)28kn0י;b%q& :k32zOjiNp7mfɾӮ6?=Chy}<`D_>?zX]5dx <[{rRuՠ^g#K,#;mԴll-|PX*O>R43o[^k{x)ĵ3U <@X F~z|]{*pP hc >c?+hٺؓonr0¿`D~u(Wry(\КKb߷_;D;M׏Eg';U՝Z?&$X~._;Y6nfbe#9QX,9G|y} BU3!k"`31@훃p$μd'RbAK-yg`6?=%%WǞ*Z֦Vi wE8&FOf['ᇏa.u6=Wo!< ԩ2îؤ*K]S+MUi*ȵ.|~>o(WjμNkw^ /FgNpٴiёyX[0x94?|;C?TXʷ(@<+P6bV+M;q9hw^r9VkD9ol \'-G7ѹy<_b:38S/ WBq؜g-\˯B ꁓen뻱/Pahr[7szP?ݺAZj\G|MZěMsl}7O*!  fM=\|g$N|4:WFu-]j7$zb^. r=E ڗ5ݽFwNr- k>xyk%7r>i[OB)qFIU\ht_^ܧsm,RbjWԩ6k]h HORaW( m +,8m7!!e?RͿE4mۼlGtʩ^d0Ze^{/7&"`LmF\ŕ{|bEټΫɓ2'sT\xM}b-bx\_g̃V[XӆoHYH~=bBg8JLk:2ge%=d[;EY;V[i<}ç.o{HwM]ۢkj_{"W0h] V9 "-ȿ Mԍ-涅;zr \n7=ǟ\\5(s᥇XW#͍^X; {gZ5Kºexc,N.-<C<#A3Os5ޜ5Xw$W>Ou,}IjW+?VտAPrd_Lt>9qY} DCz8=g0&=ڶ'7njL-O?qJ.<> |ugZvB?19 7"]x)xCVpj2-S_8Ns)I'|Q://Z:z=DdjIƷŚ/lEcdv_5 .8Rt[,nClGIe7;ҏF4M 7Vna%dbsnE>@KvkyepmsEՖ؈pLd+/5Nb?c}b_٫ãk+הӮX9'˘Գk~Ykbxg6r}QJ Vw*ùLvSI`s7V+[OTffbr&mȋ&?pUڞߞ"3Uk&Tby?o:ys{?[eWNwkmReuПm虘>Sk&ǟqeP+#@Owp}!86K7/ܲ'O~ttizfQ~K5Qf>O{M N%6z9HNHlOr `s |4p8Pyf1?4j[zl7C E2{%3ښqvzPT5=Y+v4 bzjdCzbjA<Ԙ؈ n5m;3vWS<gxSgmɻĂ͵#{gscjw y 2%g_5V4|q'I[jXoݺ|G|Xyo[+jݜʗ\U,GGz=cF_45aϙX#;֥N9'7)km`tk7rlчcxg9zzgML^ V'7AF!5b6$uIdN^whŃM.UƹGȊy0/{v3ؿI/]eZ}pusM~{<col|9ypË/gK~U@ xnc_|`3&=3i,v>(M7FX/C-פ5{edI{ԿZM1kWuÿxܾҏ\A/gb חj≓;o];={kԝc ñ-:?'zTrlA5L'nszk׃d\x?9n{8[.jxu8%>fK7gCs8$'sȧG9oWsjZȋQR5TTr3OnUiSxnO5by^wuxc2KD_kuOžX>1PNے3p{?“/MޟZfQѓ<9/XI21yuq }+E9j;7Κ=3 3=91cO|VGҫTg~c8fXm>:Ԫ-́5.=Ƚ圐ԥ'w^m\u2&]8W7./'=FG-:[+6tVVڃ>Ե\4}^~zguy>"5=@lj6lu_ְ{s0/+ s9]mofxt! v;ؚ硊' `LNy K_a(}*6p\o`>#},^ǞOMd7^dɿI!17_G̿w)nގ+o 2|cפ>soױi#Qoro?[GB9_፱d 2닣^#0gcJq{e5Y_y\j qO? T$c~ Xhn 0` (hlᬡ[kp{t4-WEUucw('X#V%l܄rFٛC`7ۅ #6 G'k.'UQ̦H5#NCT~H^%n 4X"ɻz5_zvĔ]uJ,u,Fhz$xpxN]vgtÀA=meׯoM\Who_E/(&H-km?ff}=S/\)8bﶽ6ÞW;?N=_?Gw&J ,r{}Yp8l\Jx7Fc]X);ꅃīihW^tx_Ѩv^x }V(q+x|2-7.2s*CZDt^F7Škw{85qN<> 'w#p䍁feJ-LqKkL%okH`G<-ד:6?w1g~3yx8X|҇ykȫem>l99ɚN|c?u"L3v =ԣ0fF̊ot Ň+phYQ\KK<ssxk̃q6)`Ņ@܌719wylDwXٌp-Sq{s2Piv|Q5WS>fvcجt/-ˋhD=zR:ùp'̈́&1?dAZνDڇǼA<jr:̋/|nד/2g79SY^"ly:60tNXϳK{վ:ӧTsAQZgFÓ Ow؈/yp[ tw>=5g^ IƝW>~ǵRw/>co_Ч}ZuTn,oB'r#Rj_6዇Žsw7w jaO>X;9њ d=z3NjKGQ@&3F=+'+=ۚ}*\IDATD+A!:-cu>G#;piy/cc~擸ۍeŖ#o>b*jqݷ=pwvIENDB`-[ *--x sb``p b``ba6 /у.!omdPax53k 5=^PIQ# V`Q&&6 %9q8U0a38$^rUkdkȬX `FLF