WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Joystick controlled virtual mouse (https://forum.worldviz.com/showthread.php?t=5647)

Seadna 02-25-2016 09:21 AM

Joystick controlled virtual mouse
 
Hi folks,

I have been working on code to control the canvas mouse cursor using a joystick. Below is the code i have come up with. The issues i'm having are that I cannot figure out how to bind the mouse click to a button on the joystick. Also i'm sure my beginners code needs tidying up but i cannot figure out where. For some reason when making a 'psoitive' movement (i.e. x+ and y+) the cursor movement seems to jump a little and is not smooth however in reverse when move towarsd 0,0 on the canvas it works perfectly smooth. I cannot see what i need to change in my code. Can hear my brain sizzling at this stage!!

Any help is super appreciated!

Code:

jx = 0.000
jy = 0.000
def UpdateJoystickMovement():
                e = viz.elapsed()
                x,y,z = joystick.getPosition()
                print 'Cursor is at ' + str(canvas.getCursorPosition())
                print 'XY: ' + str(x) + '-' + str(y)
                global jx
                global jy
               
                if x > 0:
                                if x < jx:
                                                jx = jx
                                else:
                                                jx = (x+jx/1000)
                elif x < 0:
                                if x > jx:
                                                jx = jx
                                else:
                                                jx = (jx+x/1000)
                                               
                if y > 0:
                                if y < jy:
                                                jy = jy
                                else:
                                                jy = (y+jy/1000)
                elif y < 0:
                                if y > jy:
                                                jy = jy
                                else:
                                                jy = (jy+y/1000)

                canvas.setCursorPosition([jx,jy])
vizact.ontimer(0, UpdateJoystickMovement)


Seadna 02-25-2016 09:25 AM

I figured the smoothness issue out less than a minute after original post!

I needed to change jx = (x+jx/1000) to jx = (jx+x/1000)

Had been looking at it for hours and didnt see it! I'm still not sure how to replicate the mouse click however.

Seadna 02-26-2016 02:56 AM

I have tried using pyautogui library for the left-click but it does not work when the mouse is captured in the canvas. I get an error 'Specified procedure could not be found'

I'm going to look up if there is another way maybe using windows API's, hopefully it is not too complicated to implement.

Seadna 02-26-2016 03:29 AM

I eventually found the .sendMouseButtonEvent :) don't know why it took me so long to find it in the help file!

JasmineJasmine 02-29-2016 03:18 PM

I don't believe that you are making the right interface decisions if you require a joystick controlled by the mouse. If you are porting a mobile game to PC redesigning the interface to match the Keyboard/Mouse paradigm will be a better overall experience for the player. If you could give us more information as to what this Joystick is controlling that would help a lot as well.


All times are GMT -7. The time now is 01:58 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC