// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. using UnityEngine; using System.Collections; using HoloToolkit.Examples.Prototyping; using System; namespace HoloToolkit.Examples.InteractiveElements { /// <summary> /// updates the button position based on the button theme /// </summary> public class PositionThemeWidget : InteractiveThemeWidget { [Tooltip("A tag for finding the theme in the scene")] public string ThemeTag = "defaultPosition"; [Tooltip("Move to Position, a component for animating position")] public MoveToPosition MovePositionTweener; private Vector3InteractiveTheme mPositionTheme; private string mCheckThemeTag = ""; /// <summary> /// Get Move to Position /// </summary> private void Awake() { if (MovePositionTweener == null) { MovePositionTweener = GetComponent<MoveToPosition>(); } } /// <summary> /// Get the theme /// </summary> private void Start() { if (mPositionTheme == null) { SetTheme(); } RefreshIfNeeded(); } public override void SetTheme() { mPositionTheme = GetVector3Theme(ThemeTag); mCheckThemeTag = ThemeTag; } /// <summary> /// Set the position /// </summary> /// <param name="state"></param> public override void SetState(Interactive.ButtonStateEnum state) { base.SetState(state); if (mPositionTheme != null) { if (MovePositionTweener != null) { MovePositionTweener.TargetValue = mPositionTheme.GetThemeValue(state); MovePositionTweener.StartRunning(); } else { transform.localPosition = mPositionTheme.GetThemeValue(state); } } } private void Update() { if (!mCheckThemeTag.Equals(ThemeTag)) { SetTheme(); RefreshIfNeeded(); } } } }