Tanoda
HandAnimHelper.cs
Go to the documentation of this file.
1using System.Collections;
2using System.Collections.Generic;
3using NaughtyAttributes;
4using UnityEngine;
5
6[RequireComponent(typeof(Animator))]
7public class HandAnimHelper : MonoBehaviour
8{
9 public GameObject handSimpleCopy;
10 public SkinnedMeshRenderer handRenderer;
11
12 [Button]
13 public void SetAnimPinch()
14 {
15 StopAllCoroutines();
16 GetComponent<Animator>().enabled = true;
17 GetComponent<Animator>().SetTrigger("pinch");
18 GetComponent<HandCopy>().enabled = false;
19 handRenderer.enabled = false;
20 handSimpleCopy.SetActive(true);
21 var hcs = handSimpleCopy.GetComponent<HandCopySimple>();
22 for (int i = 0; i < hcs.AvgClamp; i++)
23 {
24 hcs.AddFrame();
25 }
26 }
27
28 public void SetAnimFist()
29 {
30 StopAllCoroutines();
31 GetComponent<Animator>().enabled = true;
32 GetComponent<Animator>().SetTrigger("fist");
33 GetComponent<HandCopy>().enabled = false;
34 handRenderer.enabled = false;
35 handSimpleCopy.SetActive(true);
36 var hcs = handSimpleCopy.GetComponent<HandCopySimple>();
37 for (int i = 0; i < hcs.AvgClamp; i++)
38 {
39 hcs.AddFrame();
40 }
41 }
42
43 [Button]
44 public void SetAnimIdle()
45 {
46 GetComponent<Animator>().SetTrigger("idle");
47 StartCoroutine(DelayedAnimOff());
48 }
49
50 IEnumerator DelayedAnimOff()
51 {
52 GetComponent<Animator>().enabled = true;
53 GetComponent<Animator>().SetTrigger("idle");
54 yield return new WaitForSeconds(0.6f);
55 GetComponent<Animator>().enabled = false;
56 GetComponent<HandCopy>().enabled = true;
57 yield return new WaitForSeconds(1.0f);
58 handRenderer.enabled = true;
59 handSimpleCopy.SetActive(false);
60 }
61
62 public void SetScrewdriver()
63 {
64 StopAllCoroutines();
65 GetComponent<Animator>().enabled = true;
66 GetComponent<Animator>().SetTrigger("screwdriver");
67 GetComponent<HandCopy>().enabled = false;
68 handRenderer.enabled = false;
69 handSimpleCopy.SetActive(true);
70 var hcs = handSimpleCopy.GetComponent<HandCopySimple>();
71 for (int i = 0; i < hcs.AvgClamp; i++)
72 {
73 hcs.AddFrame();
74 }
75 }
76
77 public void SetSeegerPlier()
78 {
79 StopAllCoroutines();
80 GetComponent<Animator>().enabled = true;
81 GetComponent<Animator>().SetTrigger("seegerPlier");
82 GetComponent<HandCopy>().enabled = false;
83 handRenderer.enabled = false;
84 handSimpleCopy.SetActive(true);
85 var hcs = handSimpleCopy.GetComponent<HandCopySimple>();
86 for (int i = 0; i < hcs.AvgClamp; i++)
87 {
88 hcs.AddFrame();
89 }
90 }
91
92 public void GrabItem()
93 {
94 var item = GetGrabbedObject();
95 if (!item)
96 {
97 return;
98 }
99 StopAllCoroutines();
100 GetComponent<Animator>().enabled = true;
101 if (item.name.Contains("base")) //PROMO
102 {
103 GetComponent<Animator>().SetTrigger("base");
104 }
105 else if (item.name.Contains("topBack"))
106 {
107 GetComponent<Animator>().SetTrigger("topBack");
108 }
109 else if (item.name.Contains("wdriver") || item.name.Contains("JustThe"))
110 {
112 }
113 else if (item.name.Contains("seeger_plier"))
114 {
116 }
117 else if (item.name.Contains("hammer"))
118 {
119 SetAnimFist();
120 }
121 else
122 {
123 GetComponent<Animator>().SetTrigger("pinch");
124 }
125 GetComponent<HandCopy>().enabled = false;
126 handRenderer.enabled = false;
127 handSimpleCopy.SetActive(true);
128 var hcs = handSimpleCopy.GetComponent<HandCopySimple>();
129 for (int i = 0; i < hcs.AvgClamp; i++)
130 {
131 hcs.AddFrame();
132 }
133 }
134
135 public void SetAllIdle()
136 {
137 var hands = FindObjectsOfType<HandAnimHelper>();
138 foreach (var handAnimHelper in hands)
139 {
140 handAnimHelper.SetAnimIdle();
141 }
142 }
143
144 private GameObject GetGrabbedObject()
145 {
146#if UNITY_WEBGL
147 return null;
148#else
149 return GetComponentInParent<HackedHand>().currentAttachedObject;
150#endif
151 }
152}
UnityEngine.UI.Button Button
Definition: Pointer.cs:7
GameObject handSimpleCopy
SkinnedMeshRenderer handRenderer
void SetScrewdriver()
void SetSeegerPlier()