AR Design
UBC EML collab with UBC SALA - visualizing IoT data in AR
MeshCursor.cs
Go to the documentation of this file.
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // Licensed under the MIT License. See LICENSE in the project root for license information.
3 
4 using System;
5 using UnityEngine;
6 
7 namespace HoloToolkit.Unity.InputModule
8 {
12  public class MeshCursor : Cursor
13  {
14  [Serializable]
15  public struct MeshCursorDatum
16  {
17  public string Name;
19  public Mesh CursorMesh;
20  public Vector3 LocalScale;
21  public Vector3 LocalOffset;
22  }
23 
24  [SerializeField]
26 
30  public MeshRenderer TargetRenderer;
31 
35  protected override void OnEnable()
36  {
37  if(TargetRenderer == null)
38  {
39  TargetRenderer = GetComponentInChildren<MeshRenderer>();
40  }
41 
42  base.OnEnable();
43  }
44 
50  public override void OnCursorStateChange(CursorStateEnum state)
51  {
52  base.OnCursorStateChange(state);
53 
54  if (state != CursorStateEnum.Contextual)
55  {
56  for (int i = 0; i < CursorStateData.Length; i++)
57  {
58  if (CursorStateData[i].CursorState == state)
59  {
60  SetCursorState(CursorStateData[i]);
61  }
62  }
63  }
64  }
65 
70  private void SetCursorState(MeshCursorDatum stateDatum)
71  {
72  // Return if we do not have an animator
73  if (TargetRenderer != null)
74  {
75  MeshFilter mf = TargetRenderer.gameObject.GetComponent<MeshFilter>();
76  if(mf != null && stateDatum.CursorMesh != null)
77  {
78  mf.mesh = stateDatum.CursorMesh;
79  }
80 
81  TargetRenderer.transform.localPosition = stateDatum.LocalOffset;
82  TargetRenderer.transform.localScale = stateDatum.LocalScale;
83  }
84  }
85  }
86 }
override void OnCursorStateChange(CursorStateEnum state)
Override OnCursorState change to set the correct animation state for the cursor
Definition: MeshCursor.cs:50
Object that represents a cursor in 3D space controlled by gaze.
Definition: MeshCursor.cs:12
override void OnEnable()
On enable look for a sprite renderer on children
Definition: MeshCursor.cs:35
CursorStateEnum
Enum for current cursor state
MeshRenderer TargetRenderer
Sprite renderer to change. If null find one in children
Definition: MeshCursor.cs:30