Squashed commit of the following:
commit428243f4a6Author: AsanoRema <asanorema2036@gmail.com> Date: Sat Aug 29 13:43:13 2026 +0300 Squashed commit of the following: commit68e78fa464Author: AsanoRema <asanorema2036@gmail.com> Date: Sat Aug 29 13:41:49 2026 +0300 Updated .gitignore commit9f87122a34Author: AsanoRema <asanorema2036@gmail.com> Date: Sat Aug 29 13:34:57 2026 +0300 Added Dohya commitf6a7547e84Author: AsanoRema <asanorema2036@gmail.com> Date: Fri Aug 21 17:59:13 2026 +0300 Fixed commitb98901c366Author: AsanoRema <asanorema2036@gmail.com> Date: Tue Aug 18 17:37:22 2026 +0300 Added new particle Package commitbb2f4a3b16Author: AsanoRema <asanorema2036@gmail.com> Date: Tue Aug 18 17:17:48 2026 +0300 Map mehanic ready to multiplayer commitc01ff800f6Author: AsanoRema <asanorema2036@gmail.com> Date: Tue Aug 18 16:16:19 2026 +0300 Squashed commit of the following: commit173bbb165cAuthor: henjkey <henjkey@gmail.com> Date: Fri Aug 14 18:51:23 2026 +0500 Mappp commitd559ab338aAuthor: henjkey <henjkey@gmail.com> Date: Thu Aug 13 18:42:41 2026 +0500 Map Controller Coordinates Target System Crosshair System Radar System
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace VLB
|
||||
{
|
||||
[HelpURL(Consts.Help.UrlEffectFlicker)]
|
||||
public class EffectFlicker : EffectAbstractBase
|
||||
{
|
||||
public new const string ClassName = "EffectFlicker";
|
||||
|
||||
/// <summary>
|
||||
/// Frequency of flickering.
|
||||
/// Higher value means the flickering will occur faster.
|
||||
/// </summary>
|
||||
[Range(1.0f, 60.0f)]
|
||||
public float frequency = Consts.Effects.FrequencyDefault;
|
||||
|
||||
/// <summary>
|
||||
/// If enabled, pauses will be added between 2 flickering sequences.
|
||||
/// </summary>
|
||||
public bool performPauses = Consts.Effects.PerformPausesDefault;
|
||||
|
||||
/// <summary>
|
||||
/// The duration of a flickering sequence.
|
||||
/// A random value will be picked each time inside that range.
|
||||
/// </summary>
|
||||
[MinMaxRange(0.0f, 10.0f)]
|
||||
public MinMaxRangeFloat flickeringDuration = Consts.Effects.FlickeringDurationDefault;
|
||||
|
||||
/// <summary>
|
||||
/// The duration of a pause sequence.
|
||||
/// A random value will be picked each time inside that range.
|
||||
/// </summary>
|
||||
[MinMaxRange(0.0f, 10.0f)]
|
||||
public MinMaxRangeFloat pauseDuration = Consts.Effects.PauseDurationDefault;
|
||||
|
||||
/// <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;
|
||||
|
||||
/// <summary>
|
||||
/// How much intensity change will be smoothed.
|
||||
/// Higher value means the more smoothing.
|
||||
/// </summary>
|
||||
[Range(0.0f, 0.25f)]
|
||||
public float smoothing = Consts.Effects.SmoothingDefault;
|
||||
|
||||
|
||||
float m_CurrentAdditiveIntensity = 0.0f;
|
||||
|
||||
protected override void OnEnable()
|
||||
{
|
||||
base.OnEnable();
|
||||
StartCoroutine(CoUpdate());
|
||||
}
|
||||
|
||||
IEnumerator CoUpdate()
|
||||
{
|
||||
while(true)
|
||||
{
|
||||
yield return CoFlicker();
|
||||
|
||||
float remaining = pauseDuration.randomValue;
|
||||
do
|
||||
{
|
||||
remaining -= Time.deltaTime;
|
||||
yield return null;
|
||||
}
|
||||
while (performPauses && remaining > 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator CoFlicker()
|
||||
{
|
||||
float remainingDuration = flickeringDuration.randomValue;
|
||||
float lastTime = Time.deltaTime;
|
||||
|
||||
while (!performPauses || remainingDuration > 0.0f)
|
||||
{
|
||||
Debug.Assert(frequency > 0.0f);
|
||||
float freqDuration = 1.0f / frequency;
|
||||
yield return CoChangeIntensity(freqDuration, intensityAmplitude.randomValue);
|
||||
remainingDuration -= freqDuration;
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator CoChangeIntensity(float expectedDuration, float nextIntensity)
|
||||
{
|
||||
float velocity = 0.0f;
|
||||
float t = 0.0f;
|
||||
|
||||
while (t < expectedDuration)
|
||||
{
|
||||
m_CurrentAdditiveIntensity = Mathf.SmoothDamp(m_CurrentAdditiveIntensity, nextIntensity, ref velocity, smoothing);
|
||||
SetAdditiveIntensity(m_CurrentAdditiveIntensity);
|
||||
t += Time.deltaTime;
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user