-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathSimpleMenuScaleInOut.cs
More file actions
82 lines (66 loc) · 1.97 KB
/
SimpleMenuScaleInOut.cs
File metadata and controls
82 lines (66 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using UnityEngine;
public abstract class SimpleMenuScaleInOut<T> : Menu<T> where T : SimpleMenuScaleInOut<T>
{
readonly Vector3 START_SCALE = Vector3.one * .25f;
private bool animatingIn = false;
private float currentAnimInTime = 0;
private bool animatingOut = false;
private float currentAnimOutTime = 0;
// Prefab should have one child to scale
private Transform visualRoot;
protected override void Awake()
{
base.Awake();
visualRoot = transform.GetChild(0);
visualRoot.localScale = START_SCALE;
}
public static void Show()
{
Open();
if (Instance.animInTime > 0)
{
Instance.animatingIn = true;
Instance.currentAnimInTime = 0;
}
}
public static void Hide()
{
Close();
if (Instance.animOutTime > 0)
{
Instance.animatingOut = true;
Instance.currentAnimOutTime = 0;
}
}
public override void OnBackPressed()
{
Close();
if (Instance.animOutTime > 0)
{
Instance.animatingOut = true;
Instance.currentAnimOutTime = 0;
}
}
private void Update()
{
if (animatingIn)
{
ScaleVisuals(ref Instance.animatingIn, ref currentAnimInTime, animInTime, START_SCALE, Vector3.one);
}
if (animatingOut)
{
ScaleVisuals(ref Instance.animatingOut, ref currentAnimOutTime, animOutTime, Vector3.one, START_SCALE);
}
}
private void ScaleVisuals(ref bool isAnimating, ref float curAnimTime, float totalAnimTime, Vector3 startScale, Vector3 endScale)
{
curAnimTime += Time.deltaTime;
if (curAnimTime >= totalAnimTime)
{
curAnimTime = totalAnimTime;
isAnimating = false;
}
float percent = curAnimTime / totalAnimTime;
visualRoot.localScale = Vector3.Lerp(startScale, endScale, percent);
}
}