40 lines
1 KiB
Text
40 lines
1 KiB
Text
(load "@lib/openGl.l")
|
|
|
|
(setq *JoyX 0.0 *JoyY 0.0)
|
|
|
|
(glutInit)
|
|
(glutInitDisplayMode (| GLUT_RGBA GLUT_DOUBLE GLUT_ALPHA GLUT_DEPTH))
|
|
(glutInitWindowSize 400 400)
|
|
(glutCreateWindow "Joystick")
|
|
|
|
(glClearColor 0.3 0.3 0.5 0)
|
|
|
|
(displayPrg
|
|
(glClear GL_COLOR_BUFFER_BIT)
|
|
(glBegin GL_LINES)
|
|
(glVertex2f *JoyX (- *JoyY 0.1)) # Draw crosshair
|
|
(glVertex2f *JoyX (+ *JoyY 0.1))
|
|
(glVertex2f (- *JoyX 0.1) *JoyY)
|
|
(glVertex2f (+ *JoyX 0.1) *JoyY)
|
|
(glEnd)
|
|
(glFlush)
|
|
(glutSwapBuffers) )
|
|
|
|
# Track joystick position
|
|
(native `*GlutLib "glutJoystickFunc" NIL
|
|
(lisp 'joystickFunc
|
|
'((Btn X Y Z)
|
|
(msg # Display buttons
|
|
(make
|
|
(for (B 1 (n0 Btn) (inc B))
|
|
(and (bit? 1 Btn) (link B))
|
|
(setq Btn (>> 1 Btn)) ) ) )
|
|
(setq # Move crosshair
|
|
*JoyX (*/ X 1.0 1000)
|
|
*JoyY (*/ Y 1.0 1000) )
|
|
(glutPostRedisplay) ) )
|
|
100 )
|
|
|
|
# Exit upon mouse click
|
|
(mouseFunc '((Btn State X Y) (bye)))
|
|
(glutMainLoop)
|