5 using System.Collections.Generic;
23 public enum LerpTypes { Linear, EaseIn, EaseOut, EaseInOut }
25 [Tooltip(
"Fade ease type")]
28 [Tooltip(
"Fade ease type")]
31 [Tooltip(
"Time to fade in seconds")]
32 public float LerpTime = 1f;
34 [Tooltip(
"Run by default? or Status")]
35 public bool IsRunning =
false;
37 [Tooltip(
"Animation is complete!")]
43 public float GetCurrentAlpha {
get {
return mCurrentAlpha; } }
46 private float mLerpTimeCounter;
49 private Color mCachedColor;
50 private float mCurrentAlpha;
53 private Material mMaterial;
54 private TextMesh mTextMesh;
57 private bool mIsFadingIn =
true;
64 if (TargetObject == null)
66 TargetObject = this.gameObject;
69 Renderer renderer = GetComponent<Renderer>();
70 mTextMesh = GetComponent<TextMesh>();
74 mMaterial = renderer.material;
76 else if (mTextMesh == null)
78 Debug.LogError(
"Renderer and TextMesh not found!");
88 public void FadeOut(
bool resetStartValue =
false)
91 mCurrentAlpha = mCachedColor.a;
92 mLerpTimeCounter = LerpTime - LerpTime * mCurrentAlpha;
96 if (resetStartValue && mMaterial != null)
99 mMaterial.color = mCachedColor;
106 public void FadeIn(
bool resetStartValue =
false)
109 mCurrentAlpha = mCachedColor.a;
110 mLerpTimeCounter = LerpTime * mCurrentAlpha;
114 if (resetStartValue && mMaterial != null)
117 mMaterial.color = mCachedColor;
127 mCachedColor = color;
128 mCurrentAlpha = mCachedColor.a;
129 mLerpTimeCounter = LerpTime * mCurrentAlpha;
131 if (mTextMesh != null)
133 mTextMesh.color = mCachedColor;
137 mMaterial.color = mCachedColor;
149 if (mMaterial != null)
151 mCachedColor.a = value;
152 mMaterial.color = mCachedColor;
155 mLerpTimeCounter = LerpTime * mCurrentAlpha;
169 private void CacheColor()
171 if (mTextMesh != null)
173 mCachedColor = mTextMesh.color;
177 if (mMaterial != null)
179 mCachedColor = mMaterial.color;
183 mCachedColor =
new Color();
192 private void SetColor(
float percent)
197 percent = 1 - percent;
206 newAlpha = QuadEaseIn(0, 1, percent);
209 newAlpha = QuadEaseOut(0, 1, percent);
212 newAlpha = QuadEaseInOut(0, 1, percent);
218 mCachedColor.a = newAlpha;
220 if (mTextMesh != null)
222 mTextMesh.color = mCachedColor;
226 mMaterial.color = mCachedColor;
233 return e * (v /= 1) * v + s;
238 return -e * (v /= 1) * (v - 2) + s;
244 return e / 2 * v * v + s;
246 return -e / 2 * ((--v) * (v - 2) - 1) + s;
252 private void Update()
256 mLerpTimeCounter += Time.deltaTime;
257 float percent = mLerpTimeCounter / LerpTime;
269 private void OnDestroy()
271 if (mMaterial != null)