48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace VLB
|
|||
|
{
|
|||
|
[HelpURL(Consts.Help.UrlEffectPulse)]
|
|||
|
public class EffectPulse : EffectAbstractBase
|
|||
|
{
|
|||
|
public new const string ClassName = "EffectPulse";
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Frequency of pulsing.
|
|||
|
/// Higher value means the pulsing will occur faster.
|
|||
|
/// </summary>
|
|||
|
[Range(0.1f, 60.0f)]
|
|||
|
public float frequency = Consts.Effects.FrequencyDefault;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// The amplitude of intensity change which will be applied to the Light and/or Beam.
|
|||
|
/// A random value will be picked each time inside that range.
|
|||
|
/// </summary>
|
|||
|
[MinMaxRange(-5.0f, 5.0f)]
|
|||
|
public MinMaxRangeFloat intensityAmplitude = Consts.Effects.IntensityAmplitudeDefault;
|
|||
|
|
|||
|
protected override void OnEnable()
|
|||
|
{
|
|||
|
base.OnEnable();
|
|||
|
StartCoroutine(CoUpdate());
|
|||
|
}
|
|||
|
|
|||
|
IEnumerator CoUpdate()
|
|||
|
{
|
|||
|
var t = 0.0f;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
var cos = Mathf.Sin(frequency * t);
|
|||
|
var value = intensityAmplitude.GetLerpedValue(cos * 0.5f + 0.5f);
|
|||
|
SetAdditiveIntensity(value);
|
|||
|
|
|||
|
yield return null;
|
|||
|
t += Time.deltaTime;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|