Files
2026-06-04 11:42:34 +02:00

111 lines
3.4 KiB
C#

using System;
using UnityEngine.Playables;
namespace UnityEngine.Timeline
{
// Token: 0x02000036 RID: 54
public class ParticleControlPlayable : PlayableBehaviour
{
// Token: 0x060001D1 RID: 465 RVA: 0x00009800 File Offset: 0x00007A00
public static ScriptPlayable<ParticleControlPlayable> Create(PlayableGraph graph, ParticleSystem component, uint randomSeed)
{
ScriptPlayable<ParticleControlPlayable> scriptPlayable;
if (component == null)
{
scriptPlayable = ScriptPlayable<ParticleControlPlayable>.Null;
}
else
{
ScriptPlayable<ParticleControlPlayable> scriptPlayable2 = ScriptPlayable<ParticleControlPlayable>.Create(graph, 0);
scriptPlayable2.GetBehaviour().Initialize(component, randomSeed);
scriptPlayable = scriptPlayable2;
}
return scriptPlayable;
}
// Token: 0x1700008B RID: 139
// (get) Token: 0x060001D2 RID: 466 RVA: 0x00009844 File Offset: 0x00007A44
public ParticleSystem particleSystem
{
get
{
return this.m_ParticleSystem;
}
}
// Token: 0x060001D3 RID: 467 RVA: 0x0000985F File Offset: 0x00007A5F
public void Initialize(ParticleSystem particleSystem, uint randomSeed)
{
this.m_RandomSeed = Math.Max(1U, randomSeed);
this.m_ParticleSystem = particleSystem;
}
// Token: 0x060001D4 RID: 468 RVA: 0x00009878 File Offset: 0x00007A78
public override void PrepareFrame(Playable playable, FrameData data)
{
if (!(this.particleSystem == null) && this.particleSystem.gameObject.activeInHierarchy)
{
if (this.particleSystem.randomSeed != this.m_RandomSeed)
{
this.particleSystem.Stop();
this.particleSystem.useAutoRandomSeed = false;
this.particleSystem.randomSeed = this.m_RandomSeed;
}
float num = (float)playable.GetTime<Playable>();
bool flag = Mathf.Approximately(this.m_LastTime, -1f) || !Mathf.Approximately(this.m_LastTime, num);
if (flag)
{
float num2 = Time.fixedDeltaTime * 0.5f;
float num3 = num;
float num4 = num3 - this.m_LastTime;
bool flag2 = num3 < this.m_LastTime || num3 < num2 || Mathf.Approximately(this.m_LastTime, -1f) || num4 > this.particleSystem.main.duration || !Mathf.Approximately(this.m_LastPsTime, this.particleSystem.time);
if (flag2)
{
this.particleSystem.Simulate(0f, true, true);
this.particleSystem.Simulate(num3, true, false);
}
else
{
float num5 = num3 % this.particleSystem.main.duration;
float num6 = num5 - this.particleSystem.time;
if (num6 < -num2)
{
num6 = num5 + this.particleSystem.main.duration - this.particleSystem.time;
}
this.particleSystem.Simulate(num6, true, false);
}
this.m_LastPsTime = this.particleSystem.time;
this.m_LastTime = num;
}
}
}
// Token: 0x060001D5 RID: 469 RVA: 0x00009A4F File Offset: 0x00007C4F
public override void OnBehaviourPlay(Playable playable, FrameData info)
{
this.m_LastTime = -1f;
}
// Token: 0x060001D6 RID: 470 RVA: 0x00009A5D File Offset: 0x00007C5D
public override void OnBehaviourPause(Playable playable, FrameData info)
{
this.m_LastTime = -1f;
}
// Token: 0x040000D8 RID: 216
private const float kUnsetTime = -1f;
// Token: 0x040000D9 RID: 217
private float m_LastTime = -1f;
// Token: 0x040000DA RID: 218
private float m_LastPsTime = -1f;
// Token: 0x040000DB RID: 219
private uint m_RandomSeed = 1U;
// Token: 0x040000DC RID: 220
private ParticleSystem m_ParticleSystem;
}
}