IMHOTEP Framework
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Pages
DistanceHaptics.cs
1 //======= Copyright (c) Valve Corporation, All rights reserved. ===============
2 //
3 // Purpose: Triggers haptic pulses based on distance between 2 positions
4 //
5 //=============================================================================
6 
7 using UnityEngine;
8 using System.Collections;
9 
10 namespace Valve.VR.InteractionSystem
11 {
12  //-------------------------------------------------------------------------
13  public class DistanceHaptics : MonoBehaviour
14  {
15  public Transform firstTransform;
16  public Transform secondTransform;
17 
18  public AnimationCurve distanceIntensityCurve = AnimationCurve.Linear( 0.0f, 800.0f, 1.0f, 800.0f );
19  public AnimationCurve pulseIntervalCurve = AnimationCurve.Linear( 0.0f, 0.01f, 1.0f, 0.0f );
20 
21  //-------------------------------------------------
22  IEnumerator Start()
23  {
24  while ( true )
25  {
26  float distance = Vector3.Distance( firstTransform.position, secondTransform.position );
27 
28  SteamVR_TrackedObject trackedObject = GetComponentInParent<SteamVR_TrackedObject>();
29  if ( trackedObject )
30  {
31  float pulse = distanceIntensityCurve.Evaluate( distance );
32  SteamVR_Controller.Input( (int)trackedObject.index ).TriggerHapticPulse( (ushort)pulse );
33  }
34 
35  float nextPulse = pulseIntervalCurve.Evaluate( distance );
36 
37  yield return new WaitForSeconds( nextPulse );
38  }
39 
40  }
41  }
42 }