Mercurial > hg > Game > Games
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 } |