Files
BH3/Assets/Plugins/Assembly-CSharp-firstpass/PigeonCoopToolkit/Effects/Trails/SmokeTrail.cs
2025-08-13 09:26:42 +08:00

68 lines
1.3 KiB
C#

using UnityEngine;
namespace PigeonCoopToolkit.Effects.Trails
{
[AddComponentMenu("Pigeon Coop Toolkit/Effects/Smoke Trail")]
public class SmokeTrail : TrailRenderer_Base
{
public float MinVertexDistance = 0.1f;
public int MaxNumberOfPoints = 50;
private Vector3 _lastPosition;
private float _distanceMoved;
public float RandomForceScale = 1f;
protected override void Start()
{
base.Start();
_lastPosition = _t.position;
}
protected override void Update()
{
if (_emit)
{
_distanceMoved += Vector3.Distance(_t.position, _lastPosition);
if (_distanceMoved != 0f && _distanceMoved >= MinVertexDistance)
{
AddPoint(new SmokeTrailPoint(), _t.position);
_distanceMoved = 0f;
}
_lastPosition = _t.position;
}
base.Update();
}
protected override void OnStartEmit()
{
_lastPosition = _t.position;
_distanceMoved = 0f;
}
protected override void Reset()
{
base.Reset();
MinVertexDistance = 0.1f;
RandomForceScale = 1f;
}
protected override void InitialiseNewPoint(PCTrailPoint newPoint)
{
((SmokeTrailPoint)newPoint).RandomVec = Random.onUnitSphere * RandomForceScale;
}
protected override void OnTranslate(Vector3 t)
{
_lastPosition += t;
}
protected override int GetMaxNumberOfPoints()
{
return MaxNumberOfPoints;
}
}
}