Here's the main problem: I have my program set so when the left mosue button is held down it goes inot a free camera look mode thingy. When I let go and turn the object that I base my camera off of left or right, the camera and object X angle resets to 0. Does anybody know why this happens? Here is my code:
`=================
` MATRIX EDITOR
`=================
`By The SITHSPAWN
`-----------------
`BEGINNING STUFF
SYNC ON
AUTOCAM OFF
`NEW WINDOW STUFF
ALWAYS ACTIVE ON
SET WINDOW ON
SET WINDOW TITLE "Matrix Editor 0.1"
SET DISPLAY MODE 800,600,16
`CAMERA STUFF
POSITION CAMERA 0,30,0
SET CAMERA VIEW 0,0,320,240
`SET UP OBJECT TO BASE CAMERA OFF OF
MAKE OBJECT SPHERE 1,0
POSITION OBJECT 1,0,30,0
`MAKE MATRIX
MAKE MATRIX 1,1000,1000,50,50
`DEFINED VARIABLES
CAMVIEWX=320
CAMVIEWY=240
`MAIN LOOP
DO
` MOVING 3D WINDOW
IF MOUSECLICK()=1 AND MOUSEX()>CAMVIEWX-5 AND MOUSEX()<CAMVIEWX+5 AND MOUSEY()>CAMVIEWY-5 and MOUSEY()<CAMVIEWY+5
CAMVIEW=1
ENDIF
IF MOUSECLICK()=1 AND CAMVIEW=1
CAMVIEWX=MOUSEX()
CAMVIEWY=MOUSEY()
IF CAMVIEWX=0 THEN CAMVIEWX=1
IF CAMVIEWY=0 THEN CAMVIEWY=1
IF CAMVIEWX>=800 THEN CAMVIEWX=799
IF CAMVIEWY>=600 THEN CAMVIEWY=599
SET CAMERA VIEW 0,0,CAMVIEWX,CAMVIEWY
ELSE
CAMVIEW=0
ENDIF
` CAMERA MOVEMENT
IF MOUSECLICK()=2
XROTATE OBJECT 1,CAMERA ANGLE X()
HIDE MOUSE
GOSUB MLOOK
MOUSESHOW=0
ELSE
IF MOUSESHOW=0
SHOW MOUSE
MOUSESHOW=1
ENDIF
ENDIF
IF UPKEY()=1 THEN MOVE OBJECT 1,10.0
IF DOWNKEY()=1 THEN MOVE OBJECT 1,-10.0
IF MOUSESHOW=1
IF LEFTKEY()=1 THEN TURN OBJECT LEFT 1,10
IF RIGHTKEY()=1 THEN TURN OBJECT RIGHT 1,10
ENDIF
POSITION CAMERA OBJECT POSITION X(1),OBJECT POSITION Y(1),OBJECT POSITION Z(1)
ROTATE CAMERA OBJECT ANGLE X(1),OBJECT ANGLE Y(1),OBJECT ANGLE Z(1)
SET CURSOR 0,0
PRINT "OBJECT ANGLE X: ",OBJECT ANGLE X(1)
PRINT "OBJECT ANGLE Y: ",OBJECT ANGLE Y(1)
PRINT "OBJECT ANGLE Z: ",OBJECT ANGLE Z(1)
PRINT "CAMERA ANGLE X: ",CAMERA ANGLE X()
SYNC
LOOP
`FREELOOK WHEN RIGHT MOUSE CLICKED
MLOOK:
POSITION MOUSE CAMVIEWX/2,CAMVIEWY/2
MLOOKX#=WRAPVALUE(MLOOKX#+MOUSEMOVEY())
MLOOKY#=WRAPVALUE(MLOOKY#+MOUSEMOVEX())
MLOOKZ#=WRAPVALUE(MLOOKZ#+MOUSEMOVEZ())
IF MLOOKX#>180 AND MLOOKX#<270 THEN MLOOKX#=270
IF MLOOKX#<180 AND MLOOKX#>90 THEN MLOOKX#=90
ROTATE OBJECT 1,MLOOKX#,MLOOKY#,MLOOKZ#
RETURN
Thanks for your help.
"It's against my programming to impersonate a deity!"~C-3P0