AR Design
UBC EML collab with UBC SALA - visualizing IoT data in AR
ParentWidgetHandler.cs
Go to the documentation of this file.
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 
5 namespace ARDesign
6 {
7  namespace Widgets
8  {
12  public class ParentWidgetHandler : WidgetType<ParentWidget>
13  {
14  [SerializeField]
15  private GameObject GenericDataWidgetObj;
16 
17  //[SerializeField]
18  //private float radius;
19 
20  public List<GameObject> currentChild;
21 
22  //TODO: get rid of this
23  [SerializeField]
24  private Sprite CO2;
25  [SerializeField]
26  private Sprite Humid;
27  [SerializeField]
28  private Sprite PM25;
29  [SerializeField]
30  private Sprite PM10;
31  [SerializeField]
32  private Sprite Temp;
33  [SerializeField]
34  private Sprite VOCs;
35 
36  #region PRIVATE_MEMBER_VARIABLES
37  private IList<DataWidgetHandler> children;
38  private Animator anim;
39  #endregion //PRIVATE_MEMBER_VARIABLES
40 
41  #region UNITY_MONOBEHAVIOUR_METHODS
42  private void Start()
43  {
44  anim = WidgetObj.GetComponent<Animator>();
45  }
46  #endregion //UNITY_MONOBEHAVIOUR_METHODS
47 
48  #region PUBLIC_METHODS
49  public void BuildChildren(string[] labels)
54  {
55  children = new List<DataWidgetHandler>();
56  for (int i = 0; i < labels.Length; i++)
57  {
58  //Vector3 position = new Vector3();
59  GameObject go = Instantiate(GenericDataWidgetObj, currentChild[i].transform);
60  go.transform.localPosition = Vector3.zero;
61  DataWidget toAdd = go.GetComponent<DataWidget>();
62  DataWidgetHandler toAdd2 = go.GetComponent<DataWidgetHandler>();
63  toAdd2.SetWidgetObjDistance(Random.Range(4f, 8f));
64 
65  toAdd.SetLabel(labels[i]);
66 
67  // TODO: remove this
68  toAdd2.graph.sprite = setGraph(labels[i]);
69 
70  reader.AddChild(toAdd);
71  children.Add(toAdd2);
72  toAdd2.EnableWidget(false);
73  }
74 
75  }
76 
81  public override void EnableWidget(bool enable)
82  {
83  if (enable) { anim.SetTrigger("OpenWidget"); };
84  Connector.SetActive(!enabled);
85  this.WidgetObj.GetComponent<Collider>().enabled = !enable;
86  isEnable = !isEnable;
87  }
88  #endregion //PUBLIC_METHODS
89 
90  #region PRIVATE_METHODS
91  //TODO: Remove this
92  private Sprite setGraph(string label)
93  {
94  switch (label)
95  {
96  case "CO2":
97  return CO2;
98  case "VOCs":
99  return VOCs;
100  case "PM2.5":
101  return PM25;
102  case "PM10":
103  return PM10;
104  case "rel_humidity":
105  return Humid;
106  case "temperature":
107  return Temp;
108  default:
109  return CO2;
110  }
111  }
112  #endregion //PRIVATE_METHODS
113  }
114  }
115 }
Handler class for parent widgets - includes building child widget objects
override void EnableWidget(bool enable)
Turns widget on or off
T reader
Reader indicates the data loading functions of the widget. Should derive from InfluxReader ...
void SetLabel(string toSet)
Manually sets the widget label
Definition: DataWidget.cs:64
Handler class for data displaying widgets
Typed widget handler class. Type indicates form of Widget content and should derive from InfluxReader...
Widget storing data for a specific type dataVal is of type IDictionary<DateTime, Vector2> ...
Definition: DataWidget.cs:16
void BuildChildren(string[] labels)
Builds a child widget for each label