Skip to content

Instantly share code, notes, and snippets.

@schuster-rainer
Created December 19, 2010 22:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save schuster-rainer/747774 to your computer and use it in GitHub Desktop.
Save schuster-rainer/747774 to your computer and use it in GitHub Desktop.
Use reactive framework with wiimotelib to create triggers from data stream. Hopefully, extension methods are implemented the right way into the next release of IronPython
import clr
clr.AddReferenceToFileAndPath(r"c:\shared\lib\wiimote\v4\wiimotelib.dll")
clr.AddReference("System.CoreEx")
clr.AddReference("System.Reactive")
clr.AddReference("System.Interactive")
from System.Linq import *
from WiimoteLib import *
from System.Reactive import *
# setup Wiimote
wii = Wiimote()
wii.SetReportType(InputReport.Buttons, True)
wii.Connect()
# create reactive event trigger
data_stream = Observable.FromEvent[WiimoteChangedEventArgs](wii, "WiimoteChanged")
a_button_pressed = Observable.Select(
Observable.Where( data_stream,
lambda data : data.EventArgs.WiimoteState.ButtonState.A == True),
lambda data: data.EventArgs.WiimoteState.ButtonState.A
)
def on_data(args):
print args
trigger_observer = Observer.Create(on_data)
a_button_pressed.Subscribe(trigger_observer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment