[GELÖST]move mouse problem unter linux

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Boris1993

Betreff: [GELÖST]move mouse problem unter linux

BeitragDi, Dez 04, 2012 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Ich nutze seit neustem Linux statt Windows und hab nun einige Probleme am Hals. Zum Beispiel funktioniert mein Kamera Type nicht mehr so wie er soll. Das liegt wahrscheinlich an MouseXYSpeed oder MoveMouse mein Code für die Kameradrehung lautet so:

Code: [AUSKLAPPEN]
      mxs = MouseXSpeed()
      mys = MouseYSpeed()
      mzs = MouseZSpeed()
      
      MoveMouse w/2, h/2
      
      MouseXSpeed()
      MouseYSpeed()


unter Windows hat das immer geklappt. Warum jetzt nichtmehr? Ausserdem wenn sich das Fenster öffnet befindet es sich irgendwo am Bildschirmrand und ich kann es ja nicht wirklich rumschieben da das Programm mit movemouse arbeitet. Der Vollbildmodus klappt auch nicht mit GLGraphics w, h, 32, 60 wie unter Windows.
Das wärs erstmal mit Problemen glaub ich Laughing

Was ich noch komisch finde ist die IDE unter Linux. Sie sieht echt komisch aus und ist auch nicht so gut funktionsfähig kennt da einer vielleicht alternativen?

Schonmal Danke im vorraus
  • Zuletzt bearbeitet von Boris1993 am So, Dez 09, 2012 17:11, insgesamt 4-mal bearbeitet

blackgecko

BeitragMi, Dez 05, 2012 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Die IDE ist in der Tat nicht so nett, aber es gibt Alternativen.
Fullscreen funktioniert bei mir. Hast dus mal mit Graphics w,h,1 versucht?
Und zu deinem Kamera-Dings: was klappt denn nicht mehr. Bzw was hat vorher geklappt, was macht dein Kameratyp eigentlich? Wir kennen deinen weder deinen Code noch dein Programm.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

Boris1993

BeitragMi, Dez 05, 2012 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
jo fullscreen funktioniert doch mit w, h, 1 Very Happy aber warum steht in der dokumentation das der parameter nach h die farbtiefe ist?
Danke für den Hinweis mit der Ide

Das mit der Kamera ist so man rotiert sie mit der Maus wie bei den meisten First Person Spielen. Damit die Maus nicht aus dem Fenster rauskommt wird die Maus immer wieder in die Mitte bewegt sonst könnte man ja die Kamera immer nur ein Stück drehen und dann wäre die Maus wieder außerhalb des Fensters. Eigentlich sollte der MouseXSpeed und MouseYSpeed aufruf nach dem MoveMouse die werte abfangen damit sich nur die eigene bewegung der maus auf die Kamera überträgt, doch unter Linux funktioniert das irgendwie nicht und die Kamera bleibt Quasi stecken und lässt sihc nur minimal bewegen und kehrt dann wieder zu ihrem ausgangspunkt zurück. Ich habs auch schon mit FlushMouse versucht geht leider auch nicht. Gibt es vielleicht eine alternative zu MoveMouse?

BladeRunner

Moderator

BeitragDo, Dez 06, 2012 7:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Code den Du gepostet hast macht ja was anderes. Der speichert erst mal die Bewegung zwischen, setzt dann die Maus in die Mitte und ermittelt dann erneut die Bewegung, ohne sie jedoch zu speichern. Wenn das dein gesamter Code ist dafür kann es nicht funktionieren. Wenn nicht: Poste den gesamten Cameracode.
EDIT: Die Doku ist da in der Tat unvollständig. Der Parameter gibt die Farbtiefe an, wird jedoch 1 genommen, übernimmt Max die Farbtiefe des Systems für den Vollbildmodus.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

PhillipK

BeitragDo, Dez 06, 2012 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Jep, Bladerunner hat recht.

Ich rate einfach mal ins blinde, und sage, gehe 20 zeilen von "Type TKamera" nach unten und lösche sie, dann funzt es!
Mal ehrlich, wir brauchen schon ein wenig mehr Razz

Das einzige was man in deinem Code sehen kann, ist das du die MouseSpeed sache (seit dem letzen aufruf -> mausbewegung) speicherst. Danach vollführst du eine MoveMouse sache, was wiederrum den aufruf von MouseXSpeed() und Y erklärt -> Würdest du es nicht tun, bewegt sich einfach garnichts. Also, wenn dein code vorher so funktionierte, sollte er diesmal immernoch funktionieren, da du das aufhebeln des Speedwertes ja schon umgehst. Und das ist der einzige fehler, den man vermuten kann, ohne mehr zu wissen Smile
 

Boris1993

BeitragDo, Dez 06, 2012 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe den ganzen Code nicht gepostet, weil ich dachte, dass er irrelevant sei. Das wo Move Mouse nicht zwischengespeichert wird dient dem abfangen der Mausbewegung die durch MoveMouse verursacht wird. Ich hab das schon einmal zum testen rausgenommen, da konnte man die Kamera richtig rotieren nur war dann halt die Mausposition nicht in der Mitte gefreezed. Das muss denk ich mal an Linux liegen da es ja voher geklappt hat

Falls ihr den Code trozdem braucht:
Code: [AUSKLAPPEN]
Type Camera
   Const x:Byte = 0
   Const y:Byte = 1
   Const z:Byte = 2
   
   Field pos:Float[3]
   Field tar:Float[3]
   Field rot:Float[3]
   Field speed:Float
   Field fov:Float
   Field cull:Byte
   Field wireframe:Byte
   Field mindist:Float
   Field maxdist:Float
   
   Function CreateCamera:Camera(sx:Float = 0, sy:Float = 0, sz:Float = 0, mindist:Float = 0.1, maxdist:Float = 10000.0)         
      Local cam:Camera = New Camera
      
      cam.pos[x] = sx
      cam.pos[y] = sy
      cam.pos[z] = sz
      cam.speed = 0.02
      cam.fov = 45.0
      cam.cull = True
      cam.mindist = mindist
      cam.maxdist = maxdist
      
      Return cam
   End Function
   
   
   Method Control(delta:Int)
      Local mxs:Float
      Local mys:Float
      Local mzs:Float
      
         
      mxs = MouseXSpeed()
      mys = MouseYSpeed()
      mzs = MouseZSpeed()
      
      MoveMouse w/2, h/2
      
      MouseXSpeed()
      MouseYSpeed()
      
      
      
      speed:+mzs/100
      If speed < 0.01 Then speed = 0.01
      
      rot[x]:-mys/20
      rot[y]:+mxs/20
         
      If rot[x] > 80 Then rot[x] = 80
      If rot[x] <-80 Then rot[x] =-80
      If rot[y] > 360 Then rot[y] =-360
      If rot[y] <-360 Then rot[y] = 360

      If KeyDown(KEY_W) Then
         pos[x]:+(tar[x]-pos[x])*speed*delta
         pos[y]:+(tar[y]-pos[y])*speed*delta
         pos[z]:+(tar[z]-pos[z])*speed*delta
      End If
      If KeyDown(KEY_S) Then
         pos[x]:-(tar[x]-pos[x])*speed*delta
         pos[y]:-(tar[y]-pos[y])*speed*delta
         pos[z]:-(tar[z]-pos[z])*speed*delta
      End If
      If KeyDown(KEY_D) Then
         pos[x]:+Cos(rot[y])*speed*delta
         pos[z]:+Sin(rot[y])*speed*delta
      End If
      If KeyDown(KEY_A) Then
         pos[x]:-Cos(rot[y])*speed*delta
         pos[z]:-Sin(rot[y])*speed*delta
      End If
      If KeyDown(KEY_R) Then pos[y]:+1*speed*delta
      If KeyDown(KEY_F) Then pos[y]:-1*speed*delta
      If KeyDown(KEY_Q) Then fov:+0.02*delta
      If KeyDown(KEY_E) Then fov:-0.02*delta
      If KeyHit(KEY_X) Then wireframe = Not wireframe
      If KeyHit(KEY_C) Then cull = Not cull
   End Method
   
   Method Update()   
      tar[x] = pos[x]+1*Sin(rot[y])*Cos(rot[x])
      tar[y] = pos[y]+1*Sin(rot[x])
      tar[z] = pos[z]-2*Cos(rot[y])*Cos(rot[x])

      If cull = True Then
         glEnable GL_CULL_FACE
      Else
         glDisable GL_CULL_FACE
      End If
      
      If wireframe = True Then
         glPolygonMode GL_FRONT_AND_BACK, GL_LINE
      Else
         glPolygonMode GL_FRONT_AND_BACK, GL_FILL
      End If
      
      glMatrixMode GL_PROJECTION
      glLoadIdentity()
      gluPerspective fov, w/h, mindist, maxdist
      glMatrixMode GL_MODELVIEW
      
      glLoadIdentity()                           
      gluLookAt pos[x], pos[y], pos[z], tar[x], tar[y], tar[z], 0, 1, 0
   End Method
End Type



Ich habe mir jetzt die Community IDE runtergeladen und die gefällt mir schon ganz gut nur hätte ich gerne die Hintergrund Farbe und die Schrift der Normalen IDE kann mir jemand die rgb werte und den namen der font nennen?
Achja und hat einer auch das Problem unter Linux, das der Cursor nicht Blinkt in der IDE? also dieser cursor der anzeigt wo man grad am schreiben ist der wird als son komischer balken angezeigt der wie ne römische 1 aussieht^^

Edit:
Hab das Problem gelöst^^ Ich hab einfach mal statt MouseXSpeed MouseX verwendet der Code sieht jetzt so aus und benötigt auch nichtmehr das abfangen:

Code: [AUSKLAPPEN]
       mxs = MouseX()-w/2
      mys = MouseY()-h/2
      mzs = MouseZSpeed()
      
      MoveMouse w/2, h/2


Ich frage mich trotzdem warum es unter windows funktioniert hat und unter linux nicht

Vielen Dank für die Hilfsbereitschaft Smile

blackgecko

BeitragFr, Dez 07, 2012 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Farbwerte und sonstige Konfiguration stehen in der Datei ide.ini im Ordner *BlitzMaxOrdner*/cfg/
Oder du klickst dich durch das Dialog-Fenster, dass du kriegst, wenn du File>IDE Options anklickst.
Dass der Cursor nicht blinkt liegt an der MaxGUI, bzw an FLTK, das unter Linux dafür benutzt wird. Das ist halt so.

Schön, dass dein Problem gelöst ist, woran es lag kann ich dir leider nicht sagen, ich hatte mit MouseSpeed noch nie Probleme.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group