78 lines
2.2 KiB
C#
78 lines
2.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace HighlightPlus {
|
|
|
|
|
|
public partial class HighlightEffect : MonoBehaviour {
|
|
|
|
bool overlayOneShotRunning = false;
|
|
bool currentHighlighted;
|
|
Color overlayOneShotCurrentColor;
|
|
float overlayOneShotCurrentAnimationSpeed, overlayOneShotCurrentOverlay;
|
|
float overlayOneShotCurrentOuterGlow, overlayOneShotCurrentInnerGlow, overlayOneShotCurrentOutline, overlayOneShotCurrentSeeThroughIntensity;
|
|
Coroutine overlayOneShotCo;
|
|
|
|
public void OverlayOneShot (Color color, float duration) {
|
|
if (duration == 0)
|
|
return;
|
|
|
|
if (overlayOneShotRunning) {
|
|
OverlayOneShotEnd ();
|
|
StopCoroutine (overlayOneShotCo);
|
|
}
|
|
overlayOneShotRunning = true;
|
|
overlayOneShotCurrentOverlay = overlay;
|
|
overlayOneShotCurrentColor = overlayColor;
|
|
overlayOneShotCurrentAnimationSpeed = overlayAnimationSpeed;
|
|
overlayOneShotCurrentOuterGlow = glow;
|
|
overlayOneShotCurrentInnerGlow = innerGlow;
|
|
overlayOneShotCurrentOutline = outline;
|
|
overlayOneShotCurrentSeeThroughIntensity = seeThroughIntensity;
|
|
currentHighlighted = _highlighted;
|
|
if (!currentHighlighted) {
|
|
glow = innerGlow = outline = seeThroughIntensity = 0;
|
|
}
|
|
|
|
overlayOneShotCo = StartCoroutine (OverlayOneShotAnimator (color, duration));
|
|
}
|
|
|
|
IEnumerator OverlayOneShotAnimator (Color color, float duration) {
|
|
overlayAnimationSpeed = 0;
|
|
|
|
float startTime = Time.time;
|
|
float t = 1f;
|
|
highlighted = true;
|
|
overlayColor = color;
|
|
overlayAnimationSpeed = 0;
|
|
WaitForEndOfFrame ef = new WaitForEndOfFrame ();
|
|
while (t > 0f) {
|
|
t = 1f - (Time.time - startTime) / duration;
|
|
if (t < 0) {
|
|
t = 0f;
|
|
}
|
|
overlay = t;
|
|
yield return ef;
|
|
}
|
|
|
|
OverlayOneShotEnd ();
|
|
}
|
|
|
|
void OverlayOneShotEnd() {
|
|
overlay = overlayOneShotCurrentOverlay;
|
|
overlayColor = overlayOneShotCurrentColor;
|
|
overlayAnimationSpeed = overlayOneShotCurrentAnimationSpeed;
|
|
if (!currentHighlighted) {
|
|
glow = overlayOneShotCurrentOuterGlow;
|
|
innerGlow = overlayOneShotCurrentInnerGlow;
|
|
outline = overlayOneShotCurrentOutline;
|
|
seeThroughIntensity = overlayOneShotCurrentSeeThroughIntensity;
|
|
highlighted = false;
|
|
}
|
|
overlayOneShotRunning = false;
|
|
}
|
|
}
|
|
|
|
} |