comparison Orchestland/Assets/LeapMotion/Widgets/Scripts/Button/ButtonToggleBase.cs @ 1:f7675884f2a1

Add Orchestland project
author Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2015 23:09:20 +0900
parents
children
comparison
equal deleted inserted replaced
0:347d21cdfc22 1:f7675884f2a1
1 using UnityEngine;
2 using System.Collections;
3
4 namespace LMWidgets
5 {
6 public abstract class ButtonToggleBase : ButtonBase, BinaryInteractionHandler<bool>, IDataBoundWidget<ButtonToggleBase, bool> {
7 protected DataBinderToggle m_dataBinder;
8
9 protected bool m_toggleState = true;
10
11 public abstract void ButtonTurnsOn();
12 public abstract void ButtonTurnsOff();
13
14 /// <summary>
15 /// Gets or sets the current state of the toggle button.
16 /// </summary>
17 public bool ToggleState {
18 get { return m_toggleState; }
19 set {
20 if ( m_toggleState == value ) { return; }
21 setButtonState(value);
22 if ( m_dataBinder != null ) { m_dataBinder.SetCurrentData(m_toggleState); } // Update externally linked data
23 }
24 }
25
26 protected override void Start() {
27 if ( m_dataBinder != null ) {
28 setButtonState(m_dataBinder.GetCurrentData(), true); // Initilize widget value
29 }
30 else {
31 setButtonState(false, true);
32 }
33 }
34
35 public void SetWidgetValue(bool value) {
36 if ( State == LeapPhysicsState.Interacting ) { return; } // Don't worry about state changes during interaction.
37 setButtonState (value);
38 }
39
40 // Stop listening to any previous data binder and start listening to the new one.
41 public void RegisterDataBinder(LMWidgets.DataBinder<LMWidgets.ButtonToggleBase, bool> dataBinder) {
42 if (dataBinder == null) {
43 return;
44 }
45
46 UnregisterDataBinder ();
47 m_dataBinder = dataBinder as DataBinderToggle;
48 setButtonState(m_dataBinder.GetCurrentData());
49 }
50
51 // Stop listening to any previous data binder.
52 public void UnregisterDataBinder() {
53 m_dataBinder = null;
54 }
55
56 private void setButtonState(bool toggleState, bool force = false) {
57 if ( toggleState == m_toggleState && !force ) { return; } // Don't do anything if there's no change
58 m_toggleState = toggleState;
59 if (m_toggleState == true)
60 ButtonTurnsOn();
61 else
62 ButtonTurnsOff();
63 }
64
65 protected override void buttonReleased()
66 {
67 base.FireButtonEnd(m_toggleState);
68 if ( m_dataBinder != null ) {
69 setButtonState(m_dataBinder.GetCurrentData()); // Update once we're done interacting
70 }
71 }
72
73 protected override void buttonPressed()
74 {
75 if (m_toggleState == false)
76 ButtonTurnsOn();
77 else
78 ButtonTurnsOff();
79 ToggleState = !ToggleState;
80 base.FireButtonStart(m_toggleState);
81 }
82 }
83 }