/// <summary> /// Generates the UI unrelated to a mesh or to manipulate the <i>active mesh</i> <see cref="MeshManager.ActiveMesh"/> /// </summary> private void InitializeStaticUi() { // -- Tools _toolGroup = Instantiate(groupPrefab, genericUiListParent).GetComponent <UiCollapsible>(); _toolGroup.title.text = "Tools & Actions"; _toolGroup.SetVisibility(true); var selectionMode = Instantiate(selectionModePrefab, genericUiListParent).GetComponent <UiSelectionMode>(); _toolGroup.AddItem(selectionMode.gameObject); selectionMode.Initialize(); CurrentPivotMode = Instantiate(pivotModePrefab, genericUiListParent).GetComponent <UiPivotMode>(); _toolGroup.AddItem(CurrentPivotMode.gameObject); CurrentPivotMode.Initialize(); // -- Meshes _meshGroup = Instantiate(groupPrefab, genericUiListParent).GetComponent <UiCollapsible>(); _meshGroup.title.text = "Load Mesh"; _meshGroup.SetVisibility(true); foreach (var meshPrefab in MeshManager.get.meshPrefabs) { // Create button to load each mesh var iconAction = Instantiate(iconActionPrefab, genericUiListParent).GetComponent <UiIconAction>(); _meshGroup.AddItem(iconAction.gameObject); var textField = iconAction.actionBtn.GetComponentInChildren <TMP_Text>(); textField.text = meshPrefab.name; // Setup callbacks/events iconAction.actionBtn.onClick.AddListener(() => MeshManager.get.LoadMesh(meshPrefab)); iconAction.iconBtn.onClick.AddListener(() => MeshManager.get.LoadMesh(meshPrefab, false)); var validMesh = MeshManager.CheckPrefabValidity(meshPrefab); iconAction.actionBtn.interactable = validMesh; iconAction.iconBtn.interactable = validMesh; } // -- Debug _debugGroup = Instantiate(groupPrefab, genericUiListParent).GetComponent <UiCollapsible>(); _debugGroup.title.text = "Debug"; _debugGroup.SetVisibility(true); var toggleBounds = Instantiate(UiManager.get.buttonPrefab, genericUiListParent).GetComponent <Button>(); _debugGroup.AddItem(toggleBounds.gameObject); toggleBounds.GetComponentInChildren <TMP_Text>().text = "Toggle Bounds"; toggleBounds.onClick.AddListener(() => { InputManager.State.BoundsVisible = !InputManager.State.BoundsVisible; foreach (var mesh in MeshManager.get.AllMeshes) { mesh.RepaintBounds(); } }); var toggleUvGridAction = Instantiate(buttonPrefab, genericUiListParent).GetComponent <Button>(); _debugGroup.AddItem(toggleUvGridAction.gameObject); toggleUvGridAction.GetComponentInChildren <TMP_Text>().text = "Toggle UV Grid"; // Get references to normal materials _uvGridInitialMaterials = new Material[toggleUvGridRenderers.Length]; for (var i = 0; i < toggleUvGridRenderers.Length; i++) { _uvGridInitialMaterials[i] = toggleUvGridRenderers[i].material; } toggleUvGridAction.onClick.AddListener(() => { // Toggle uv debug material _isShowingUvGrid = !_isShowingUvGrid; for (var i = 0; i < toggleUvGridRenderers.Length; i++) { toggleUvGridRenderers[i].material = _isShowingUvGrid ? uvGridMaterial : _uvGridInitialMaterials[i]; } }); }