rendered paste body/*
WiiMotion Plus Mouse v 2010.01.14
by lednerg <- thanks, you!
Emulates the basic functionality of a Gyration Air Mouse.
Requires GlovePIE version .42 or higher.
Leave the Wiimote on your desk when starting so it can calibrate.
Hold B to move, A = Left-Click, + = Right-Click, Down = Middle-Click.
*/
/* modified by pierut */
/* controls are similar as above.. hold b to look around, A to jump.. left and right to cycle inventory...
press up to access the inventory and the top nunchuck button to click.. RAWRR.
the directional pad thing on the nunchuck to move. top nunchuck button to attack/chop/usually the left mouse button.
bottom button to place blocks/open chest/things done with right mouse button.
I think that's it.. could use some tweaking, i'm sure.
*/
var.MoveButton = wiimote.B
Mouse.LeftButton = Nunchuk.C
Mouse.RightButton = Nunchuk.Z
mouse.MiddleButton = wiimote.Down
var.Speed = 85 // 0 to 100
PIE.FrameRate = 120hz
if wiimote.HasMotionPlus = false then debug = "WiiMotion Plus NOT DETECTED!"
if wiimote.HasMotionPlus = true and var.MoveButton = true {
var.YawSpeed = wiimote.MotionPlus.YawSpeed
var.PitchSpeed = wiimote.MotionPlus.PitchSpeed
if SameValue( Smooth(wiimote.SmoothRoll, 10), wiimote.SmoothRoll, 10) then var.Roll = Smooth(wiimote.SmoothRoll, 10) else var.Roll = wiimote.SmoothRoll
if var.Roll < 0 and var.Roll >= -90 {
var.XYswap = 1 - EnsureMapRange(var.Roll, -90, 0, 0, 1)
var.RightDown = -1
var.TopUp = 1
}
if var.Roll <= 90 and var.Roll >= 0 {
var.XYswap = 1 - EnsureMapRange(var.Roll, 90, 0, 0, 1)
var.RightDown = 1
var.TopUp = 1
}
if var.Roll > 90 and var.Roll <= 180 {
var.XYswap = 1 - EnsureMapRange(var.Roll, 90, 180, 0, 1)
var.RightDown = 1
var.TopUp = -1
}
if var.Roll < -90 and var.Roll >= -180 {
var.XYswap = 1 - EnsureMapRange(var.Roll, -90, -180, 0, 1)
var.RightDown = -1
var.TopUp = -1
}
var.SpeedX = var.TopUp * var.YawSpeed - ( var.TopUp * var.YawSpeed * var.XYswap ) + ( var.RightDown * var.PitchSpeed * var.XYswap )
var.SpeedY = var.TopUp * var.PitchSpeed - ( var.TopUp * var.PitchSpeed * var.XYswap) + ( -var.RightDown * var.YawSpeed * var.XYswap )
mouse.DirectInputX = int(var.MouseX)
mouse.DirectInputY = int(var.MouseY)
var.MouseX = var.MouseX + ( var.SpeedX / (10500000 - EnsureMapRange(var.Speed, 0, 100, 0, 10000000) ) )
var.MouseY = var.MouseY - ( var.SpeedY / (10500000 - EnsureMapRange(var.Speed, 0, 100, 0, 10000000) ) )
/* // for mouse.x and mouse.y instead
mouse.x = var.MouseX
mouse.y = var.MouseY
var.MouseX = var.MouseX + ( var.SpeedX / (20500 - EnsureMapRange(var.Speed, 0, 100, 0, 20000) ) )
var.MouseY = var.MouseY - ( var.SpeedY / (20500 - EnsureMapRange(var.Speed, 0, 100, 0, 20000) ) )
*/
}
if var.MoveButton = false {
var.MouseX = mouse.DirectInputX
var.MouseY = mouse.DirectInputY
/* // for mouse.x and mouse.y instead
var.MouseX = mouse.x
var.MouseY = mouse.y
*/
}
/* i added this hurr */
Key.W = Nunchuk.Up
Key.A = Nunchuk.Left
Key.D = Nunchuk.Right
Key.Space = Wiimote.A
Key.R = Wiimote.Up
Mouse.WheelUp = Wiimote.Left
Mouse.WheelDown = Wiimote.Right
Key.S = DoubleClicked(Nunchuk.Down)