Files

81 lines
2.1 KiB
C#
Raw Permalink Normal View History

using UnityEngine;
using System.Collections;
namespace VRSDK
{
public class VR_UIHighlight : VR_Highlight
{
#region INSPECTOR
[SerializeField] private Canvas canvas = null;
[SerializeField] private Transform grabbableMarker = null;
[SerializeField] private float scaleTime = 0.2f;
[SerializeField] private float radius = 0.2f;
#endregion
private Coroutine scaleCoroutine = null;
private void Update()
{
LookAtCamera();
if (CanHighlight())
{
if (!canvas.gameObject.activeInHierarchy)
canvas.gameObject.SetActive( true );
}
else
{
if (canvas.gameObject.activeInHierarchy)
canvas.gameObject.SetActive( false );
grabbableMarker.localScale = Vector3.one;
}
}
private void LookAtCamera()
{
canvas.transform.position = canvas.transform.parent.position + ( ( Camera.main.transform.position - transform.position ).normalized * radius );
}
public override void Highlight(VR_Controller controller)
{
ScaleTween( 1.2f );
}
public override void UnHighlight(VR_Controller controller)
{
ScaleTween( 1.0f );
}
private void ScaleTween(float scale)
{
if (scaleCoroutine != null)
StopCoroutine( scaleCoroutine );
scaleCoroutine = StartCoroutine( ScaleRoutine( scale ) );
}
private IEnumerator ScaleRoutine(float scale)
{
float currentTime = 0.0f;
while (currentTime <= scaleTime)
{
currentTime += Time.deltaTime;
grabbableMarker.transform.localScale = Vector3.Lerp( grabbableMarker.transform.localScale , Vector3.one * scale , currentTime / scaleTime );
yield return new WaitForEndOfFrame();
}
grabbableMarker.transform.localScale = Vector3.one * scale;
}
}
}