/// <summary> /// Sets up the sensor panel by placing sensors in the appropriate category using the /// available prefabs. /// </summary> void SensorPanelSetup() { List <SensorCategoriesModel> categories = urdf.GetSensorCategories(); List <UrdfTypeModel> types = urdf.GetUrdfTypes(); List <UrdfItemModel> sensorList = urdf.GetUrdfs(); this.dropdowns["ddCategory"].options.Add(new Dropdown.OptionData("Unknown")); foreach (SensorCategoriesModel category in categories) { this.dropdowns["ddCategory"].options.Add(new Dropdown.OptionData(category.name)); } this.dropdowns["ddTypes"].options.Add(new Dropdown.OptionData("Unknown")); foreach (UrdfTypeModel type in types) { this.dropdowns["ddTypes"].options.Add(new Dropdown.OptionData(type.name)); } List <headingController> headingControllers = new List <headingController>(); GameObject unknownHolder = GameObject.Instantiate(categoryContainerPrefab); headingController unknownController = unknownHolder.GetComponentInChildren <headingController>(); unknownController.SetHeadingName("Unknown"); headingControllers.Add(unknownController); unknownHolder.transform.SetParent(sensorViewPort.transform, false); categoryHolderList.Add(0, unknownHolder); foreach (SensorCategoriesModel category in categories) { GameObject categoryHolder = GameObject.Instantiate(categoryContainerPrefab); headingController controller = categoryHolder.GetComponentInChildren <headingController>(); controller.SetHeadingName(category.name); headingControllers.Add(controller); categoryHolder.GetComponent <CategoryHeading>().category = category; categoryHolder.transform.SetParent(sensorViewPort.transform, false); categoryHolderList.Add(category.uid, categoryHolder); } foreach (UrdfItemModel item in sensorList) { GameObject sensorBtn = GameObject.Instantiate(sensorBtnPrefab); Button btn = sensorBtn.GetComponent <Button>(); Text value = sensorBtn.GetComponentInChildren <Text>(); Sensor sensor = sensorBtn.GetComponent <Sensor>(); sensor.item = item; sensor.category = categoryHolderList[item.fk_category_id].GetComponent <CategoryHeading>().category; value.text = item.name; sensorBtn.name = item.name.ToLower(); headingControllers[item.fk_category_id].AddSensor(); sensorBtn.transform.SetParent(categoryHolderList[item.fk_category_id].transform, false); btn.onClick.AddListener(() => SensorOnClick(sensorBtn)); this.sensors.Add(sensorBtn); } foreach (headingController controller in headingControllers) { controller.UpdateSensorCount(); } }
/// <summary> /// Sets up the sensor panel by placing sensors in the appropriate category using the /// available prefabs. /// </summary> void SensorPanelSetup() { this.categories = urdf.GetSensorCategories(); this.types = urdf.GetUrdfTypes(); UrdfItemModel[] sensorList = urdf.GetUrdfs(); this.dropdowns["ddCategory"].options.Add(new Dropdown.OptionData("Unknown")); foreach (string category in categories) { this.dropdowns["ddCategory"].options.Add(new Dropdown.OptionData(category)); } this.dropdowns["ddTypes"].options.Add(new Dropdown.OptionData("Unknown")); foreach (string type in types) { this.dropdowns["ddTypes"].options.Add(new Dropdown.OptionData(type)); } Dictionary <string, headingController> headingControllers = new Dictionary <string, headingController>(); GameObject unknownHolder = GameObject.Instantiate(categoryContainerPrefab); headingController unknownController = unknownHolder.GetComponentInChildren <headingController>(); unknownController.SetHeadingName("Unknown"); headingControllers.Add("unknown", unknownController); unknownHolder.transform.SetParent(sensorViewPort.transform, false); categoryHolderList.Add("unknown", unknownHolder); foreach (string category in categories) { GameObject categoryHolder = GameObject.Instantiate(categoryContainerPrefab); headingController controller = categoryHolder.GetComponentInChildren <headingController>(); controller.SetHeadingName(category); headingControllers.Add(category, controller); categoryHolder.GetComponent <CategoryHeading>().category = category; categoryHolder.transform.SetParent(sensorViewPort.transform, false); categoryHolderList.Add(category, categoryHolder); } foreach (UrdfItemModel item in sensorList) { if (item == null) { continue; } GameObject sensorBtn = GameObject.Instantiate(sensorBtnPrefab); Button btn = sensorBtn.GetComponent <Button>(); Text value = sensorBtn.GetComponentInChildren <Text>(); Sensor sensor = sensorBtn.GetComponent <Sensor>(); sensor.item = item; value.text = item.name; sensorBtn.name = item.name.ToLower(); headingControllers[item.category].AddSensor(); sensorBtn.transform.SetParent(categoryHolderList[item.category].transform, false); btn.onClick.AddListener(() => SensorOnClick(sensorBtn)); this.sensors.Add(sensorBtn); } foreach (KeyValuePair <string, headingController> controller in headingControllers) { controller.Value.UpdateSensorCount(); } }