UniversalViewer/Assets/Scripts/ModelViewerBase/ModelViewerInterface.cs

123 lines
3.3 KiB
C#

using System;
using System.Collections.Generic;
using UIPanels;
using UnityEngine;
using UnityEngine.UI;
public class ModelViewerInterface : MonoBehaviour
{
public static ModelViewerInterface _mainInstance;
public Transform DynamicPanels;
public TMPro.TMP_Text[] TooltipLabels;
public ScrollRect ScenePresetToggle;
public ScrollRect PosePresetToggle;
public ScrollRect SelectedHandlesPanel;
public List<UIToolbarPanel> TopbarPanels;
public UIPanels.UIToolbarPanel TogglesContent;
public UIPanels.UISaveLoadPanel SaveLoadPanel;
public UIPanels.UICameraSettingsPanel CameraSettingsPanel;
public ProgressBar ProgressBar;
public Canvas MainCanvas;
public RectTransform Tooltip;
public TMPro.TextMeshProUGUI TooltipText;
private Vector2 _previousResolution = Vector2.zero;
private int _resolutionUpdateCountdown;
public static ModelViewerInterface GetInstance()
{
return _mainInstance;
}
public static T GetInstance<T>() where T : ModelViewerInterface
{
return _mainInstance as T;
}
protected virtual void Awake()
{
_mainInstance = this;
}
protected void Update()
{
var resolution = new Vector2(Screen.width, Screen.height);
if (resolution != _previousResolution)
{
_previousResolution = resolution;
_resolutionUpdateCountdown = 10;
}
if (_resolutionUpdateCountdown > 0)
{
if (--_resolutionUpdateCountdown == 0)
{
var draggables = GameObject.FindObjectsOfType<UIElementDragger>();
foreach (var draggable in draggables)
{
draggable.transform.position = draggable.RecalculatePosition(draggable.transform.position);
};
}
}
}
public static void SetTooltip(int index, string tooltip)
{
var tooltips = GetInstance().TooltipLabels;
if(tooltips.Length > index)
{
tooltips[index].SetText(tooltip);
}
}
public static void ToggleVisible(GameObject go)
{
ToggleVisible(go, false);
}
public static void ToggleVisible(GameObject go, bool force = false, bool forceValue = false)
{
if (force)
{
go.SetActive(forceValue);
}
else
{
go.SetActive(!go.activeSelf);
}
}
public static void SetDropdownData(TMPro.TMP_Dropdown dd, List<string> values, bool nullValue = false, bool sortValues = false)
{
dd.ClearOptions();
if (nullValue)
dd.AddOptions(new List<string>() { Strings.NoValueSelectedString });
if (values != null)
{
if (sortValues)
{
values = new List<string>(values);
values.Sort();
}
dd.AddOptions(values);
}
}
public static void DropdownPrevious(TMPro.TMP_Dropdown dropdown)
{
Error.Log(Color.red, "Remove this");
dropdown.value = dropdown.value - 1 < 0 ? dropdown.options.Count - 1 : dropdown.value - 1;
}
public static void DropdownNext(TMPro.TMP_Dropdown dropdown)
{
Error.Log(Color.red, "Remove this");
dropdown.value = dropdown.value + 1 >= dropdown.options.Count ? 0 : dropdown.value + 1;
}
}