8 using System.Collections;
10 namespace Valve.VR.InteractionSystem
15 public Material highLightMaterial;
16 public bool fireHapticsOnHightlight =
true;
20 private MeshRenderer bodyMeshRenderer;
21 private MeshRenderer trackingHatMeshRenderer;
23 private bool renderModelLoaded =
false;
30 hand = GetComponentInParent<Hand>();
37 renderModelLoadedAction = SteamVR_Events.RenderModelLoadedAction( OnRenderModelLoaded );
44 renderModelLoadedAction.enabled =
true;
51 renderModelLoadedAction.enabled =
false;
56 private void OnHandInitialized(
int deviceIndex )
59 renderModel.SetDeviceIndex( deviceIndex );
60 renderModel.updateDynamically =
false;
67 if ( renderModel != this.renderModel )
72 Transform bodyTransform = transform.Find(
"body" );
73 if ( bodyTransform != null )
75 bodyTransform.gameObject.layer = gameObject.layer;
76 bodyTransform.gameObject.tag = gameObject.tag;
77 bodyMeshRenderer = bodyTransform.GetComponent<MeshRenderer>();
78 bodyMeshRenderer.material = highLightMaterial;
79 bodyMeshRenderer.enabled =
false;
82 Transform trackingHatTransform = transform.Find(
"trackhat" );
83 if ( trackingHatTransform != null )
85 trackingHatTransform.gameObject.layer = gameObject.layer;
86 trackingHatTransform.gameObject.tag = gameObject.tag;
87 trackingHatMeshRenderer = trackingHatTransform.GetComponent<MeshRenderer>();
88 trackingHatMeshRenderer.material = highLightMaterial;
89 trackingHatMeshRenderer.enabled =
false;
92 foreach ( Transform child
in transform )
94 if ( ( child.name !=
"body" ) && ( child.name !=
"trackhat" ) )
96 Destroy( child.gameObject );
100 renderModelLoaded =
true;
105 private void OnParentHandHoverBegin(
Interactable other )
107 if ( !this.isActiveAndEnabled )
112 if ( other.transform.parent != transform.parent )
127 private void OnParentHandInputFocusAcquired()
129 if ( !this.isActiveAndEnabled )
134 if ( hand.hoveringInteractable && hand.hoveringInteractable.transform.parent != transform.parent )
142 private void OnParentHandInputFocusLost()
149 public void ShowHighlight()
151 if ( renderModelLoaded ==
false )
156 if ( fireHapticsOnHightlight )
158 hand.controller.TriggerHapticPulse( 500 );
161 if ( bodyMeshRenderer != null )
163 bodyMeshRenderer.enabled =
true;
166 if ( trackingHatMeshRenderer != null )
168 trackingHatMeshRenderer.enabled =
true;
174 public void HideHighlight()
176 if ( renderModelLoaded ==
false )
181 if ( fireHapticsOnHightlight )
183 hand.controller.TriggerHapticPulse( 300 );
186 if ( bodyMeshRenderer != null )
188 bodyMeshRenderer.enabled =
false;
191 if ( trackingHatMeshRenderer != null )
193 trackingHatMeshRenderer.enabled =
false;