namespace VRTK.Examples
|
|
{
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
using System.Collections;
|
|
|
|
public class UI_Interactions : MonoBehaviour
|
|
{
|
|
private const int EXISTING_CANVAS_COUNT = 4;
|
|
|
|
public void Button_Red()
|
|
{
|
|
VRTK_Logger.Info("Red Button Clicked");
|
|
}
|
|
|
|
public void Button_Pink()
|
|
{
|
|
VRTK_Logger.Info("Pink Button Clicked");
|
|
}
|
|
|
|
public void Toggle(bool state)
|
|
{
|
|
VRTK_Logger.Info("The toggle state is " + (state ? "on" : "off"));
|
|
}
|
|
|
|
public void Dropdown(int value)
|
|
{
|
|
VRTK_Logger.Info("Dropdown option selected was ID " + value);
|
|
}
|
|
|
|
public void SetDropText(BaseEventData data)
|
|
{
|
|
var pointerData = data as PointerEventData;
|
|
var textObject = GameObject.Find("ActionText");
|
|
if (textObject)
|
|
{
|
|
var text = textObject.GetComponent<Text>();
|
|
text.text = pointerData.pointerDrag.name + " Dropped On " + pointerData.pointerEnter.name;
|
|
}
|
|
}
|
|
|
|
public void CreateCanvas()
|
|
{
|
|
StartCoroutine(CreateCanvasOnNextFrame());
|
|
}
|
|
|
|
private IEnumerator CreateCanvasOnNextFrame()
|
|
{
|
|
yield return null;
|
|
|
|
var canvasCount = FindObjectsOfType<Canvas>().Length - EXISTING_CANVAS_COUNT;
|
|
var newCanvasGO = new GameObject("TempCanvas");
|
|
newCanvasGO.layer = 5;
|
|
var canvas = newCanvasGO.AddComponent<Canvas>();
|
|
var canvasRT = canvas.GetComponent<RectTransform>();
|
|
canvasRT.position = new Vector3(-4f, 2f, 3f + canvasCount);
|
|
canvasRT.sizeDelta = new Vector2(300f, 400f);
|
|
canvasRT.localScale = new Vector3(0.005f, 0.005f, 0.005f);
|
|
canvasRT.eulerAngles = new Vector3(0f, 270f, 0f);
|
|
|
|
var newButtonGO = new GameObject("TempButton", typeof(RectTransform));
|
|
newButtonGO.transform.SetParent(newCanvasGO.transform);
|
|
newButtonGO.layer = 5;
|
|
|
|
var buttonRT = newButtonGO.GetComponent<RectTransform>();
|
|
buttonRT.position = new Vector3(0f, 0f, 0f);
|
|
buttonRT.anchoredPosition = new Vector3(0f, 0f, 0f);
|
|
buttonRT.localPosition = new Vector3(0f, 0f, 0f);
|
|
buttonRT.sizeDelta = new Vector2(180f, 60f);
|
|
buttonRT.localScale = new Vector3(1f, 1f, 1f);
|
|
buttonRT.localEulerAngles = new Vector3(0f, 0f, 0f);
|
|
|
|
newButtonGO.AddComponent<Image>();
|
|
var canvasButton = newButtonGO.AddComponent<Button>();
|
|
var buttonColourBlock = canvasButton.colors;
|
|
buttonColourBlock.highlightedColor = Color.red;
|
|
canvasButton.colors = buttonColourBlock;
|
|
|
|
var newTextGO = new GameObject("BtnText", typeof(RectTransform));
|
|
newTextGO.transform.SetParent(newButtonGO.transform);
|
|
newTextGO.layer = 5;
|
|
|
|
var textRT = newTextGO.GetComponent<RectTransform>();
|
|
textRT.position = new Vector3(0f, 0f, 0f);
|
|
textRT.anchoredPosition = new Vector3(0f, 0f, 0f);
|
|
textRT.localPosition = new Vector3(0f, 0f, 0f);
|
|
textRT.sizeDelta = new Vector2(180f, 60f);
|
|
textRT.localScale = new Vector3(1f, 1f, 1f);
|
|
textRT.localEulerAngles = new Vector3(0f, 0f, 0f);
|
|
|
|
var txt = newTextGO.AddComponent<Text>();
|
|
txt.text = "New Button";
|
|
txt.color = Color.black;
|
|
txt.font = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
|
|
|
|
newCanvasGO.AddComponent<VRTK_UICanvas>();
|
|
}
|
|
}
|
|
}
|