1118OPSSNew/Assets/Samples/Mixed Reality Toolkit Examples/2.5.0/Demos - HandTracking/Scripts/HandInteractionTouch.cs

87 lines
2.8 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.UI;
using UnityEngine;
namespace Microsoft.MixedReality.Toolkit.Examples.Demos
{
[AddComponentMenu("Scripts/MRTK/Examples/HandInteractionTouch")]
public class HandInteractionTouch : MonoBehaviour, IMixedRealityTouchHandler
{
[SerializeField]
private TextMesh debugMessage = null;
[SerializeField]
private TextMesh debugMessage2 = null;
#region Event handlers
public TouchEvent OnTouchCompleted;
public TouchEvent OnTouchStarted;
public TouchEvent OnTouchUpdated;
#endregion
private Renderer TargetRenderer;
private Color originalColor;
private Color highlightedColor;
protected float duration = 1.5f;
protected float t = 0;
private void Start()
{
TargetRenderer = GetComponentInChildren<Renderer>();
if ((TargetRenderer != null) && (TargetRenderer.sharedMaterial != null))
{
originalColor = TargetRenderer.sharedMaterial.color;
highlightedColor = new Color(originalColor.r + 0.2f, originalColor.g + 0.2f, originalColor.b + 0.2f);
}
}
void IMixedRealityTouchHandler.OnTouchCompleted(HandTrackingInputEventData eventData)
{
OnTouchCompleted.Invoke(eventData);
if (debugMessage != null)
{
debugMessage.text = "OnTouchCompleted: " + Time.unscaledTime.ToString();
}
if ((TargetRenderer != null) && (TargetRenderer.material != null))
{
TargetRenderer.material.color = originalColor;
}
}
void IMixedRealityTouchHandler.OnTouchStarted(HandTrackingInputEventData eventData)
{
OnTouchStarted.Invoke(eventData);
if (debugMessage != null)
{
debugMessage.text = "OnTouchStarted: " + Time.unscaledTime.ToString();
}
if (TargetRenderer != null)
{
TargetRenderer.sharedMaterial.color = Color.Lerp(originalColor, highlightedColor, 2.0f);
}
}
void IMixedRealityTouchHandler.OnTouchUpdated(HandTrackingInputEventData eventData)
{
OnTouchUpdated.Invoke(eventData);
if (debugMessage2 != null)
{
debugMessage2.text = "OnTouchUpdated: " + Time.unscaledTime.ToString();
}
if ((TargetRenderer != null) && (TargetRenderer.material != null))
{
TargetRenderer.material.color = Color.Lerp(Color.green, Color.red, t);
t = Mathf.PingPong(Time.time, duration) / duration;
}
}
}
}