Author Topic: Wii MotionPlus & IR Mouse (script) - Updated: March 09, 2011  (Read 60345 times)

Offline superawesomecoolman

  • *
  • Posts: 2
  • Karma: +0/-0
    • View Profile
Reply #15 on: April 18, 2011, 09:10:23 PM
Hey, I'm very new to glove PIE scripting, and I have one small problem. This code works PERFECTLY once it is callibrated well, which does not take long. All I want to be able to do is freely move the remote to control the cursor without needing to hold B on the wiimote. Could i get some help?

Code: [Select]
    WiiMotion Plus Mouse                                  v 2010.01.14
    by lednerg

    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.
*/

var.MoveButton = wiimote.B
mouse.LeftButton = wiimote.A
mouse.RightButton = wiimote.Plus
mouse.MiddleButton = wiimote.Down

var.Speed = 75   // 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
*/
}



Offline sleeper420za

  • *
  • Posts: 2
  • Karma: +0/-0
    • View Profile
Can't wait for the FPS script to be finished. Thanks for all your time and effort Lednerg.  :)



Offline kykkus

  • *
  • Posts: 1
  • Karma: +0/-0
    • View Profile
Hi, there is a bug... i'm using 2 monitor and i can't move to second monitor with wiimote... how can i solve?