AR Design
UBC EML collab with UBC SALA - visualizing IoT data in AR
MeshButton.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 UnityEngine;
5 using System;
6 using System.Collections;
7 
8 namespace HoloToolkit.Unity.Buttons
9 {
13  [RequireComponent(typeof(MeshFilter))]
14  [RequireComponent(typeof(Animator))]
15  [RequireComponent(typeof(MeshRenderer))]
16  [RequireComponent(typeof(BoxCollider))]
17  public class MeshButton : Button
18  {
22  public bool UseAnimator = false;
23 
27  [Header("Mesh Button")]
28  [Tooltip("Button State information")]
32 
36  private MeshRenderer _renderer;
37 
41  private MeshFilter _meshFilter;
42 
46  private Animator _animator;
47 
51  public override void OnStateChange(ButtonStateEnum newState)
52  {
53  MeshButtonDatum stateDatum = ButtonStates[(int)newState];
54 
55  // if filter or renderer are null set them
56  if (_meshFilter == null)
57  _meshFilter = this.GetComponent<MeshFilter>();
58 
59  if (_renderer == null)
60  _renderer = this.GetComponent<MeshRenderer>();
61 
62 
63  if (_animator == null)
64  _animator = this.GetComponent<Animator>();
65 
66  // Play animator state
67  if (UseAnimator)
68  _animator.Play(stateDatum.Name);
69 
70  // Set the color from the datum
71  if (_renderer != null)
72  _renderer.material.color = stateDatum.StateColor;
73 
74  base.OnStateChange(newState);
75  }
76  }
77 }
ButtonStateEnum
State enum for buttons.
override void OnStateChange(ButtonStateEnum newState)
On state change swap out the active mesh based on the state
Definition: MeshButton.cs:51
Color StateColor
Button mesh color to use in active state
Mesh button is a mesh renderer interactable with state data for button state
Definition: MeshButton.cs:17
string Name
Name string for datum entry