Tanoda
RealToolAction.cs
Go to the documentation of this file.
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Runtime.Serialization;
5using GILES;
6using NaughtyAttributes;
7using UnityEngine;
8using UnityEngine.UI;
9using Random = UnityEngine.Random;
11using System.Globalization;
12#if !UNITY_WEBGL
13using Valve.VR.InteractionSystem;
14
15#endif
16
17public class RealToolAction : ActionObject, ISerializable
18{
19 public Dropdown drop;
20 public InputField taktTimeInput;
21 internal Vector3 targetPosition, targetRotation;
22 internal bool activated;
23 internal bool done /*executed*/;
24 internal Vector3 currpos, currrot;
25 internal GameObject highlightObject, highlightTool;
26 [SerializeField] private GameObject canvasSelector;
27 public string selectedHash = "";
29 private GameObject[] generatedTriggers;
30 internal GameObject finishBtn, inspector, canvas, stageManagerWindow;
31 private Coroutine mouseOver;
32 internal float time = 0.0f;
33 public InputField holdInput;
34 internal float holdTime = 2.0f;
35 private float currTime;
36 private float realTime = 0.0f;
37 float fillamount;
38 private bool rotated;
39 private GameObject ProgressCanvas;
40 private Camera VRCamera;
41 internal bool isPenalty = false;
42 private bool inProgress = false;
43
44 private List<GameObject> serials;
45 private List<string> serialIds;
46 internal bool low = false;
47 internal bool high = false;
48
49#if !UNITY_WEBGL
50 private Valve.VR.SteamVR_TrackedObjectWithEvents selectedTracked;
51#endif
52
53 internal string selectedSerial;
54
55 private Coroutine progressRoutine;
56
57 public override void Start()
58 {
59 base.Start();
60#if !UNITY_WEBGL
61 currTime = holdTime * 2;
62 fillamount = 0;
63 rotated = false;
64 serials = new List<GameObject>();
65 serialIds = new List<string>();
66 var allTrackers = FindObjectsOfType<Valve.VR.SteamVR_TrackedObjectWithEvents>();
67
68 foreach (var trackedDevice in allTrackers)
69 {
70 if (!string.IsNullOrEmpty(trackedDevice.SerialID))
71 {
72 serials.Add(trackedDevice.gameObject);
73 trackedDevice.name = trackedDevice.SerialID;
74 serialIds.Add(trackedDevice.SerialID);
75 }
76 }
77
78 drop.AddOptions(serialIds);
79
80 canvasSelector = GameObject.Find("Canvas_selector");
81 stageManagerWindow = GameObject.Find("StageManager Window");
82
83 // find inactive finish btn
84 canvas = GameObject.Find("Canvas");
85 var trs = canvas.GetComponentsInChildren<Transform>(true); // true: get inactive as well
86 foreach (var t in trs)
87 if (t.name == "Inspector")
88 inspector = t.gameObject;
89
90 trs = inspector.GetComponentsInChildren<Transform>(true);
91 foreach (var t in trs)
92 if (t.name == "FinishToolPos_Btn")
93 finishBtn = t.gameObject;
94
95
96 VRCamera = GameObject.Find("VRCamera")?.GetComponent<Camera>();
97 if (!VRCamera) //ha nincs vr, ne legyen null
98 VRCamera = Camera.current;
99
100 ProgressCanvas = GameObject.Find("Canvas_ProgressBar").gameObject;
101#endif
102 }
103
104 public override void OnPointerEnter(PointerEventData eventData)
105 {
106 if (targetPosition == default) return;
107
108 if (SavedUser.instance.isEditor)
109 mouseOver = StartCoroutine(ShowHighLight());
110 }
111 public override void OnPointerExit(PointerEventData eventData)
112 {
113 if (SavedUser.instance.isEditor)
114 {
115 StopCoroutine(mouseOver);
116 Destroy(highlightObject);
117 Destroy(highlightTool);
118#if !UNITY_WEBGL
119 PreviewHand.Instance?.hideHandPreview(GetToolObject());
120#endif
121 }
122 }
123
124 void ShowFinishBtn()
125 {
126 if (!inspector.activeSelf)
127 inspector.SetActive(true);
128
129 var btnOffset = finishBtn.transform.parent.GetComponent<RectTransform>().rect.width;
130 var spacing = 5f;
131 finishBtn.GetComponent<RectTransform>().anchoredPosition = new Vector2(-(btnOffset + spacing), 0);
132
133 finishBtn.SetActive(true);
134 }
135
136 void HideFinishBtn()
137 {
138 finishBtn.SetActive(false);
140 }
141
142
143 public void onHoldTimeChanged(string value)
144 {
145 try
146 {
147 var ci = CultureInfo.CurrentCulture;
148 var nfi = ci.NumberFormat;
149 holdInput.text = holdInput.text.Replace(',', nfi.CurrencyDecimalSeparator[0]);
150 holdInput.text = holdInput.text.Replace('.', nfi.CurrencyDecimalSeparator[0]);
151 var single = Convert.ToSingle(holdInput.text, ci);
152 holdInput.text = single.ToString("F2");
153 holdTime = float.Parse(value, ci);
154 }
155 catch (Exception)
156 {
157 Debug.LogWarning("not parsable number(?) in holdTime inputfield!");
158
159 // restore last valid numbers
160 holdInput.text = holdTime.ToString("F2");
161 }
162 }
163
164
165 public void SetToolPosition()
166 {
167#if !DANA
168 return;
169#endif
170#if !UNITY_WEBGL
171 GameObject tool = null;
172
173 tool = serials[drop.value];
174 tool.GetComponent<Valve.VR.SteamVR_TrackedObjectWithEvents>().enabled = false;
175
177 pb_SelectionHandle.instance.SetTool(GILES.Tool.Position);
178
179 currpos = tool.transform.position;
180 currrot = tool.transform.eulerAngles;
181 GameObject.Find("Btn_StageMgr").GetComponent<Button>().onClick.Invoke();
182
183 finishBtn.GetComponent<Button>().onClick.RemoveAllListeners();
184 finishBtn.GetComponent<Button>().onClick.AddListener(OnFinishBtn);
185 ShowFinishBtn();
186#endif
187 }
188
189 void OnFinishBtn()
190 {
191#if !UNITY_WEBGL
192 var tool = serials[drop.value];
193 SaveTarget(tool.transform);
194 tool.GetComponent<Valve.VR.SteamVR_TrackedObjectWithEvents>().enabled = true;
195 HideFinishBtn();
197#endif
198 }
199
200 void SaveTarget(Transform t)
201 {
202 targetPosition = t.position;
203 targetRotation = t.eulerAngles;
204 }
205
206 protected bool InGoodPos(Transform t)
207 {
208 if (Math.Abs(t.position.x - targetPosition.x) > 0.05f) return false;
209 if (Math.Abs(t.position.y - targetPosition.y) > 0.05f) return false;
210 if (Math.Abs(t.position.z - targetPosition.z) > 0.09f) return false;
211
212 return true;
213 }
214
215 protected bool InGoodRot(Transform t)
216 {
217 if (Quaternion.Angle(t.rotation, Quaternion.Euler(targetRotation)) < 25) return true;
218 byte checker = 0;
219 if (Math.Abs(Clamp0360(t.eulerAngles.x) - Clamp0360(targetRotation.x)) < 25 ||
220 Math.Abs(Clamp0360(t.eulerAngles.x) - Clamp0360(targetRotation.x)) > 360 - 25) checker++;
221 if (Math.Abs(Clamp0360(t.eulerAngles.y) - Clamp0360(targetRotation.y)) < 25 ||
222 Math.Abs(Clamp0360(t.eulerAngles.y) - Clamp0360(targetRotation.y)) > 360 - 25) checker++;
223 if (Math.Abs(Clamp0360(t.eulerAngles.z) - Clamp0360(targetRotation.z)) < 25 ||
224 Math.Abs(Clamp0360(t.eulerAngles.z) - Clamp0360(targetRotation.z)) > 360 - 25) checker++;
225 if (checker >= 2) return true;
226
227 checker = 0;
228 if (Math.Abs(Math.Abs(Clamp0360(t.eulerAngles.x) - Clamp0360(targetRotation.x)) - 180) < 25) checker++;
229 if (Math.Abs(Math.Abs(Clamp0360(t.eulerAngles.y) - Clamp0360(targetRotation.y)) - 180) < 25) checker++;
230 if (Math.Abs(Math.Abs(Clamp0360(t.eulerAngles.z) - Clamp0360(targetRotation.z)) - 180) < 25) checker++;
231 if (checker >= 2) return true;
232
233 return false;
234 }
235
236 public static float Clamp0360(float eulerAngles)
237 {
238 var result = eulerAngles - Mathf.CeilToInt(eulerAngles / 360f) * 360f;
239 if (result < 0) result += 360f;
240 return result;
241 }
242
243 new void Update()
244 {
245 base.Update();
246#if !UNITY_WEBGL
247
248 if (base.isInFieldOfView(GetToolObject())) base.actionRecognized = true;
249
250
251 if (!activated || done) return;
252
253 var tool = GetToolObject();
254 if (tool == null)
255 {
256 return;
257 }
258
259 bool isRunning = false;
260 if (tool.GetComponent<TwoHandGrab>() == null) isRunning = false;
261 if (tool.GetComponent<TwoHandGrab>() != null) isRunning = tool.GetComponent<TwoHandGrab>().isRunning;
262
263 var t = tool.transform;
264#if !UNITY_WEBGL
265
266 if (!highlightObject /*&& !executed*/)
267 {
268 StartCoroutine(ShowHighLight());
270 {
271 FollowMe.Instance?.StartFollowing(targetPosition, highlightObject);
272 }
273 }
275
276#endif
277
278 if ( InGoodPos(t) /*&& InGoodRot(t)*/ && selectedTracked && selectedTracked.IsTriggered)
279 {
280 inProgress = true;
281 ProgressCanvas.transform.SetParent(t, true);
282 time += Time.deltaTime;
283 if (progressRoutine == null)
284 {
285 Image Progress = ProgressCanvas.GetComponentInChildren<Image>(true);
286 ProgressCanvas.transform.localPosition = new Vector3(0, 0, 0);
287 ProgressCanvas.transform.position += new Vector3(0, 0.1f, 0);
288 progressRoutine = StartCoroutine(ProgressBar(holdTime, Progress, ProgressCanvas));
289
290 }
291 //else
292 //{
293 // Image Progress = ProgressCanvas.GetComponentInChildren<Image>(true);
294 // StartCoroutine(ProgressBar(holdTime, Progress, ProgressCanvas));
295 //}
296
297 //if (time >= holdTime)
298 //{
299 // Done();
300 //}
301 }else if (selectedTracked && !selectedTracked.IsTriggered)
302 {
303 inProgress = false;
304 if (progressRoutine != null)
305 {
306 StopCoroutine(progressRoutine);
307 StartCoroutine(hideProgressBar());
308 progressRoutine = null;
309 }
310 Image progressImage = ProgressCanvas.GetComponentInChildren<Image>(true);
311 if (progressImage.fillAmount > 0 && !InGoodPos(t))
312 {
313 Done();
314 }
315 }
316 else
317 {
318 inProgress = false;
319 }
320#endif
321 }
322
323
324 private IEnumerator ProgressBar(float value, Image progressImage, GameObject progressCanvas)
325 {
326 float time = realTime;
327 float fill = 0;
328 float deltaTime = 0;
329 progressCanvas.transform.GetChild(0).gameObject.SetActive(true);
330 //progressImage.fillAmount = 0;
331 Color yellow = new Color(250 / 255f, 250 / 255f, 6 / 255f);
332 Color red = new Color(250 / 255f, 13 / 255f, 6 / 255f);
333 Color green = new Color(11 / 255f, 250 / 255f, 6 / 255f);
334 //progressImage.color = yellow;
335 while (inProgress && progressImage.fillAmount < 1)
336 {
337 time += Time.deltaTime;
338 if (progressImage.fillAmount <= 0.30f)
339 {
340 progressImage.color = yellow;
341
342 isPenalty = true;
343 isPenalty = true;
344 low = true;
345 high = false;
346 }
347
348 fill = progressImage.fillAmount - 0.3f;
349 if (progressImage.fillAmount >= 0.30f && progressImage.fillAmount <= 0.36f)
350 {
351 progressImage.color = Color.Lerp(yellow, green, fill / 0.06f);
352 isPenalty = false;
353 isPenalty = false;
354 low = false;
355 high = false;
356 }
357 fill = progressImage.fillAmount - 0.58f;
358 if (progressImage.fillAmount >= 0.58f && progressImage.fillAmount <= 0.64f)
359 {
360 progressImage.color = Color.Lerp(green, red, fill / 0.06f);
361 isPenalty = true;
362 isPenalty = true;
363 high = true;
364 low = false;
365 }
366
367 if (progressImage.fillAmount <= 0.36f)
368 {
369 progressImage.fillAmount = Mathf.Lerp(0, 0.36f, time / ((value) * 0.9f));
370
371 }
372 deltaTime = time - ((value) * 0.9f);
373 if (progressImage.fillAmount >= 0.36f && progressImage.fillAmount <= 0.64f)
374 {
375 progressImage.fillAmount = Mathf.Lerp(0.36f, 0.64f, deltaTime / (value * 2 * 0.1f));
376 }
377 deltaTime = time - ((value) * 1.1f);
378 if (progressImage.fillAmount >= 0.64f)
379 {
380 progressImage.fillAmount = Mathf.Lerp(0.64f, 1, deltaTime / ((value * 2) - (value * 1.1f)));
381 }
382
383 yield return null;
384 }
385 realTime = time;
386
387 }
388
389 private IEnumerator hideProgressBar()
390 {
391 yield return null;
392 ProgressCanvas.transform.GetChild(0).gameObject.SetActive(false);
393 }
394
395 private GameObject GetToolObject()
396 {
397 GameObject tool = null;
398#if !UNITY_WEBGL
399
400 if (serials.Count == 0)
401 {
402 var allTrackers = FindObjectsOfType<Valve.VR.SteamVR_TrackedObjectWithEvents>();
403
404 foreach (var trackedDevice in allTrackers)
405 {
406 if (!string.IsNullOrEmpty(trackedDevice.SerialID))
407 {
408 serials.Add(trackedDevice.gameObject);
409 trackedDevice.name = trackedDevice.SerialID;
410 serialIds.Add(trackedDevice.SerialID);
411 }
412 }
413
414 drop.AddOptions(serialIds);
415 }
416
417 if (serials.Count == 0)
418 return null;
419
420
421 tool = serials[drop.value];
422 selectedTracked = tool.GetComponent<Valve.VR.SteamVR_TrackedObjectWithEvents>();
423#endif
424 return tool;
425 }
426
427 internal IEnumerator ShowHighLight() //GREEN
428 {
429 if (highlightObject) Destroy(highlightObject);
430
431 if (MiscLogicManager.instance.mode != MiscLogicManager.CurrentMode.Training && MiscLogicManager.instance.mode != MiscLogicManager.CurrentMode.Optimization) yield break;
432
433 yield return new WaitForEndOfFrame();
434
435 if (done) yield break;
436 if (serials.Count == 0) yield break;
437
438 GameObject cachedGO;
439 var inflate = false;
440
441 cachedGO = serials[drop.value];
442
443 highlightObject = Instantiate(cachedGO, targetPosition, Quaternion.Euler(targetRotation), cachedGO.transform.parent);
444 highlightObject.transform.position = targetPosition;
445 highlightObject.transform.eulerAngles = targetRotation;
446#if !UNITY_WEBGL
447 Destroy(highlightObject.GetComponent<TorqueWrench>());
448 Destroy(highlightObject.GetComponent<Valve.VR.SteamVR_TrackedObjectWithEvents>());
449 Destroy(highlightObject.GetComponent<SeegerHelper>());
450 Destroy(highlightObject.GetComponent<ThrowableCanDisable>());
451 Destroy(highlightObject.GetComponent<Interactable>());
452#endif
453
454 var allCollider = highlightObject.GetComponentsInChildren<Collider>();
455 var allRb = highlightObject.GetComponentsInChildren<Rigidbody>();
456
457 foreach (var c in allCollider)
458 Destroy(c);
459
460 foreach (var c in allRb)
461 Destroy(c);
462
463 Destroy(highlightObject.GetComponent<HashHolder>());
464
465 yield return new WaitForEndOfFrame();
466
467 if (done)
468 {
469 Destroy(highlightObject);
470 yield break;
471 }
472
473 highlightObject.transform.SetPositionAndRotation(targetPosition, Quaternion.Euler(targetRotation));
474 highlightObject.transform.position = targetPosition;
475 highlightObject.transform.eulerAngles = targetRotation;
476
477 if (inflate)
478 highlightObject.transform.localScale *= 1.001f;
479
480 highlightObject.transform.SetParent(null, true);
481 highlightObject.SetActive(true);
482 MatChange(highlightObject);
483 if (highlightTool) highlightTool.SetActive(false);
484 }
485
486 private IEnumerator ShowPreview(Vector3 TargetPosition, GameObject TargetObject)
487 {
488 if (MiscLogicManager.instance.mode != MiscLogicManager.CurrentMode.Training && MiscLogicManager.instance.mode != MiscLogicManager.CurrentMode.Optimization) yield break;
489 yield return new WaitForEndOfFrame();
490
491#if !UNITY_WEBGL
492 PreviewHand.Instance?.EnterOffsetEditor(TargetObject, this, targetPosition, targetRotation);
493 FollowMe.Instance?.StartFollowing(TargetPosition, TargetObject);
494#endif
495 yield return null;
496
497 }
498
499 private IEnumerator ShowToolHighLight() //BLUE
500 {
501 if (highlightTool) Destroy(highlightTool);
502
503 if (MiscLogicManager.instance.mode != MiscLogicManager.CurrentMode.Training && MiscLogicManager.instance.mode != MiscLogicManager.CurrentMode.Optimization) yield break;
504
505 yield return new WaitForEndOfFrame();
506
507 GameObject cachedGO;
508 var inflate = true;
509
510 cachedGO = serials[drop.value];
511
512 if (cachedGO == null) Debug.LogError("ShowToolHighlight tool is null!");
513
514 highlightTool = Instantiate(cachedGO, cachedGO.transform.position, cachedGO.transform.rotation, null);
515#if !UNITY_WEBGL
516 Destroy(highlightTool.GetComponent<TorqueWrench>());
517 Destroy(highlightTool.GetComponent<Valve.VR.SteamVR_TrackedObjectWithEvents>());
518 Destroy(highlightTool.GetComponent<SeegerHelper>());
519 Destroy(highlightTool.GetComponent<ThrowableCanDisable>());
520 Destroy(highlightTool.GetComponent<Interactable>());
521#endif
522 var allCollider = highlightTool.GetComponentsInChildren<Collider>();
523 var allRb = highlightTool.GetComponentsInChildren<Rigidbody>();
524
525 foreach (var c in allCollider)
526 Destroy(c);
527
528 foreach (var c in allRb)
529 Destroy(c);
530
531 Destroy(highlightTool.GetComponent<HashHolder>());
532
533 yield return new WaitForEndOfFrame();
534
535 highlightTool.transform.SetPositionAndRotation(cachedGO.transform.position, cachedGO.transform.rotation);
536
537 if (inflate)
538 highlightTool.transform.localScale *= 1.001f;
539
540 highlightTool.SetActive(true);
541
542 MatChange(highlightTool, true);
543 }
544 private void MatChange(GameObject go, bool tool = false)
545 {
546 var mrs = go.GetComponentsInChildren<MeshRenderer>();
547 foreach (var meshRenderer in mrs)
548 {
549 var list = new List<Material>();
550 for (var i = 0; i < meshRenderer.materials.Length; i++)
551 list.Add(tool ? highlightToolMaterial : highlightMaterial);
552
553 meshRenderer.materials = list.ToArray();
554 }
555 }
556 internal bool nextActionIsTheSame()
557 {
558 //var action = Controller.Instance.GetActionByInOut(Controller.Instance.GetConnectionByEndPointId(outPuts[0].name).toId);
559 //var actions = Controller.Instance.GetActionsByOut(outPuts[0].name);
560 var connections = Controller.Instance.GetOutputConnectionsToObject(name);
561 foreach (var conn in connections)
562 {
564 var actions = Controller.Instance.GetActionsByIn(c.toId);
565
566 foreach (var act in actions)
567 {
568 if (act is RealToolAction ta)
569 {
570 if (selectedSerial == ta.selectedSerial)
571 {
572 return true;
573 }
574 }
575 }
576 }
577
578
579 return false;
580
581 }
582 private IEnumerator Cleanup()
583 {
584 yield return null;
585 Destroy(highlightTool);
586 Destroy(highlightObject);
587 yield return null;
588 Destroy(highlightTool);
589 Destroy(highlightObject);
590 yield return null;
591 Destroy(highlightTool);
592 Destroy(highlightObject);
593 yield return null;
594 Destroy(highlightTool);
595 Destroy(highlightObject);
596 }
597
598 private new void OnDestroy()
599 {
600 Destroy(highlightTool);
601 Destroy(highlightObject);
602 base.OnDestroy();
603 }
604
605 public void OnSelectionChanged(int value)
606 {
607 GetToolObject()?.SetActive(true);
608 }
609
610 [Button]
611 private void Done()
612 {
613
614 Destroy(highlightObject);
615 if (isPenalty)
616 {
617 penaltyTime = Mathf.Abs(holdTime - realTime);
618 PenaltyCounter.Instance.penaltyTime += penaltyTime;
619 }
620
621 ProgressCanvas?.transform.SetParent(null, true);
622 TriggerOutput(outPuts[0].name);
623 activated = false;
624 done = true;
625 Destroy(highlightTool);
626 Destroy(highlightObject);
628 ProgressCanvas.transform.SetParent(null, true);
629 }
630
631 private void TriggerOutput()
632 {
633 TriggerOutput(outPuts[0].name);
634 activated = false;
635 done = true;
636 Destroy(highlightTool);
637 }
638
639 public override void Triggered(string id)
640 {
641 base.Triggered(id);
642 activated = true;
643 ProgressCanvas.GetComponentInChildren<Image>(true).fillAmount = 0;
644
645#if !UNITY_WEBGL
646 StartCoroutine(ShowToolHighLight());
647#endif
648
649 StartCoroutine(ShowPreview(GetToolObject().transform.position, GetToolObject()));
650 var tool = GetToolObject();
651 if (tool == null)
652 {
653 return; // rossz node? nem lehet ilyen
654 }
655 StartCoroutine(LookAtCanvas());
656
657 }
658 public new void RefreshTargetDisplay()
659 {
660 taktTimeInput.text = taktTime.ToString("F2");
661 }
662 public void onTaktTimeChanged(string value)
663 {
664 try
665 {
666 var ci = CultureInfo.CurrentCulture;
667 var nfi = ci.NumberFormat;
668 taktTimeInput.text = taktTimeInput.text.Replace(',', nfi.CurrencyDecimalSeparator[0]);
669 taktTimeInput.text = taktTimeInput.text.Replace('.', nfi.CurrencyDecimalSeparator[0]);
670 var single = Convert.ToSingle(taktTimeInput.text, ci);
671 taktTimeInput.text = single.ToString("F2");
672 taktTime = single;
673 taktTime = float.Parse(value, ci);
674 }
675 catch (Exception)
676 {
677 Debug.LogWarning("not parsable number(?) in holdTime inputfield!");
678
679 // restore last valid numbers
680 taktTimeInput.text = taktTime.ToString("F2");
681 }
682 }
683 private IEnumerator LookAtCanvas()
684 {
685 while (activated)
686 {
687 ProgressCanvas.transform.LookAt(VRCamera.transform);
688 yield return null;
689 }
690 }
691
692 public override void GetObjectData(SerializationInfo info, StreamingContext context)
693 {
694 base.GetObjectData(info, context);
695
696 info.AddValue("targetPosition", targetPosition, typeof(Vector3));
697 info.AddValue("targetRotation", targetRotation, typeof(Vector3));
698
699 info.AddValue("selectedSerial", selectedSerial);
700 if (holdTime == default || holdTime == 0) holdTime = 2.0f;
701 info.AddValue("holdTime", holdTime, typeof(float));
702 info.AddValue("taktTime", taktTime, typeof(float));
703 }
704
705 public RealToolAction(SerializationInfo info, StreamingContext context) : base(info, context)
706 {
707 targetPosition = (Vector3)info.GetValue("targetPosition", typeof(Vector3));
708 targetRotation = (Vector3)info.GetValue("targetRotation", typeof(Vector3));
709
710 selectedSerial = info.GetString("selectedSerial");
711 holdTime = info.GetSingle("holdTime");
712 foreach (var e in info)
713 {
714 if (e.Name == "taktTime") taktTime = (float)info.GetValue("taktTime", typeof(float));
715 }
716 }
717}
Es.InkPainter.Math Math
Definition: PaintTest.cs:7
UnityEngine.UI.Button Button
Definition: Pointer.cs:7
UnityEngine.Random Random
UnityEngine.Debug Debug
Definition: TanodaServer.cs:19
System.Drawing.Image Image
Definition: TestScript.cs:37
UnityEngine.Color Color
Definition: TestScript.cs:32
List< GameObject > outPuts
Definition: ActionObject.cs:19
ActionObject[] GetActionsByIn(string id)
Definition: Controller.cs:943
List< string > GetOutputConnectionsToObject(string id)
Definition: Controller.cs:899
Connection GetConnectionById(string id)
Definition: Controller.cs:871
static Controller Instance
Definition: Controller.cs:16
void StartFollowing(Vector3 EndPosition, GameObject TargetObject)
Definition: FollowMe.cs:35
static FollowMe Instance
Definition: FollowMe.cs:19
static void SetSelection(IEnumerable< GameObject > selection)
Definition: pb_Selection.cs:92
static void Clear()
Definition: pb_Selection.cs:61
static PenaltyCounter Instance
void hideHandPreview(GameObject objectToGrab)
Definition: PreviewHand.cs:73
void EnterOffsetEditor(GameObject objectToGrab, ActionObject action, Vector3 TargetPos, Vector3 TargetRot)
Definition: PreviewHand.cs:40
static PreviewHand Instance
Definition: PreviewHand.cs:16
void onTaktTimeChanged(string value)
void SetToolPosition()
static float Clamp0360(float eulerAngles)
void OnSelectionChanged(int value)
bool InGoodRot(Transform t)
void onHoldTimeChanged(string value)
Material highlightMaterial
override void GetObjectData(SerializationInfo info, StreamingContext context)
InputField taktTimeInput
Material highlightToolMaterial
override void Start()
override void Triggered(string id)
InputField holdInput
new void RefreshTargetDisplay()
bool InGoodPos(Transform t)
override void OnPointerEnter(PointerEventData eventData)
RealToolAction(SerializationInfo info, StreamingContext context)
override void OnPointerExit(PointerEventData eventData)
static SoundManager instance
Definition: SoundManager.cs:8
void PlaySuccessSound()
Definition: SoundManager.cs:33