GLBasic forum

Main forum => Bug Reports => Topic started by: Schranz0r on 2012-Apr-17

Title: Hat sich Mouseaxis geändert?
Post by: Schranz0r on 2012-Apr-17
Hi!
Sagt mal, hat sich Mouseaxis geändert?

Wenn ich jetzt mit dem Mauszeiger aus dem Fenster komme bewegt ich mich nicht mehr...
Das war doch früher auch nicht so :(


Code (glbasic) Select
SYSTEMPOINTER TRUE

GLOBAL phi_xy%, phi_xz%, x#, y#, z#=100



WHILE TRUE
X_MAKE3D 1,1000,45
X_CAMERA x,y,z, x+SIN(phi_xz),y+COS(-phi_xy),z+COS(phi_xz)


INC phi_xy, MOUSEAXIS(1)
DEC phi_xz, MOUSEAXIS(0)

IF phi_xz > 359 THEN phi_xz = 0
IF phi_xz < 0 THEN phi_xz = 359

IF phi_xy < 0 THEN phi_xy = 0
IF phi_xy > 179  THEN phi_xy = 179

FOR i = 0 TO 10

X_DRAWAXES 0,0,i*100

NEXT


X_MAKE2D

PRINT "Phi_XY: "+phi_xy+" | Phi_xz : "+phi_xz, 10,10


SHOWSCREEN
WEND
END




Wie soll man da ein 3D-Movement machen... ?

Mouseaxis sollte immer im Fenstermittelpunkt "gepinnt" sein und dann die geschwindigkeit abfragen !
Title: Re: Hat sich Mouseaxis geändert?
Post by: backslider on 2012-Apr-17
Versuch's mal mit...
Code (glbasic) Select

LOCAL center_x, center_y
GETSCREENSIZE center_x, center_y
center_x = sx / 2
center_y = sy / 2
//...
SETMOUSE center_x, center_y
Title: Re: Hat sich Mouseaxis geändert?
Post by: Schranz0r on 2012-Apr-17
Es gibt ein SETMOUSE? ... xD

OK dann gehts natürlich wieder, aber dennoch hat sich MOUSEAXIS geändert...
Title: Re: Hat sich Mouseaxis geändert?
Post by: backslider on 2012-Apr-17
Jap, das habe ich auch schon gemerkt...
Und SETMOUSE habe ich auch nur durch Zufall gefunden, weil ich geguckt habe, obs gehilighted wird. xD

In der Hilfe kann ich davon nichts finden. :(
Title: Re: Hat sich Mouseaxis geändert?
Post by: Schranz0r on 2012-Apr-17
Doch ist in der Hilfe drin... habs aber noch nie bemerkt :D

Danke für den Tip ;)

an was arbeitest du grade?
Title: Re: Hat sich Mouseaxis geändert?
Post by: backslider on 2012-Apr-17
Okay,

dann sollte ich nochmal Hilfe lesen lernen...  :good:
Vielleicht fehlt's auch nur in der Online-Hilfe, weil ich die eben genutzt hab.^^

Zurzeit überlege ich, was ich cooles programmieren könnte (bis auf meine Projekte bei der Arbeit :P ).
Und Du?
Können ja sonst per PM schreiben... Oder Skype, wenn du hast. Schick mir dann per PM deinen Nick, dann kann ich dich adden. ;)
Title: Re: Hat sich Mouseaxis geändert?
Post by: Schranz0r on 2012-Apr-17
Hab kein Skype installiert :D

Ich sammel grade dafür : http://www.glbasic.com/forum/index.php?topic=7950.0
will unbedingt ein 3D-Projekt pushen für GLB :D
Title: Re: Hat sich Mouseaxis geändert?
Post by: backslider on 2012-Apr-17
Jo, ich mach eigl. auch nur noch 3D in GLBasic... :D Aber halt noch nichts "richtiges" bis jetzt gemacht...
Ja, hab deinen Thread schon gesehen. :)
Title: Re: Hat sich Mouseaxis geändert?
Post by: Schranz0r on 2012-Apr-17
Dann teste doch mit mir mit :D
Title: Re: Hat sich Mouseaxis geändert?
Post by: backslider on 2012-Apr-17
Mal sehen,

erstmal LD48 am WE! :D Hoffe, ich krieg da was gerissen. :P
Nimm doch auch teil.
Title: Re: Hat sich Mouseaxis geändert?
Post by: Schranz0r on 2012-Apr-17
ne net wirklich :)
Title: Re: Hat sich Mouseaxis geändert?
Post by: Markus on 2012-Apr-17
Ich habe den Beitrag heute Mittag schon gesehen .
Das erste Beispiel was ich gerade im Samples Ordner finde und starte
ist 3d Maze wo man sich nicht mehr umgucken kann :-)

EDIT:
Ich beömmel mich grad über Croco Game  <3
(das geht leider auch nicht mit dem drehen  :'()
Title: Re: Hat sich Mouseaxis geändert?
Post by: kanonet on 2012-Apr-18
Wie schon richtig gesagt wurde, schreib einfach ein SETMOUSE an Beginn oder Ende der Mainloop (bspw. vor das SHOWSCREEN) und schon geht wieder alles.
Title: Re: Hat sich Mouseaxis geändert?
Post by: Markus on 2012-Apr-18
SETMOUSE in einer Schleife könnte Probleme mit sich bringen z.B. wenn man den Hardware Cursor auch sehen will oder die Mausgeschwindigkeit wird falsch berechnet.
Mein Tipp wäre den nur wieder in die Mitte zu setzen wenn der weiter als xxx Pixel von der Mitte entfernt ist
oder wenn der am Rand kommt auf die andere Seite zu setzen.


Title: Re: Hat sich Mouseaxis geändert?
Post by: kanonet on 2012-Apr-18
Ich würde SETMOUSE nur gemeinsam mit SYSTEMPOINTER FALSE verwenden.

Wenn man einen Mauszeiger sehen will, würde ich auch immer SYSTEMPOINTER TRUE verwenden und keinen eigenen zeichnen (bring zum Beispiel Probleme mit Tablets). Wenn man einen Mauszeiger braucht, dann verwendet man ohnehin sehr selten die Mausgeschwindigkeit (und am besten nie SETMOUSE in der Loop), oder hat zumindest kein Problem damit, dass außerhalb des Fensters nichts mehr angezeigt wird, schließlich will man ja nicht, dass der Spieler die Maus aus dem Fenster bewegen muss, um bestimmte Aktionen auszuführen. Es sollte also sehr selten zu Problemen kommen, lässt man den Mauszeiger anzeigen.

Sollte also fast immer ohne Probleme lösbar sein. ;)
Title: Re: Hat sich Mouseaxis geändert?
Post by: Markus on 2012-Apr-18
Schön wäre wenn die Mausgeschwindigkeit unabhängig der Pos. ist.
In der Maus ist ja nur ein Taktzähler und mit diesem wird die Pos. verändert.
Ob es die Windows API zu läßt weiß ich aber nicht.

Man könnte zum Beispiel bei einer eigenen Scrollbar den Mauszeiger an der geklickten Pos.
stehen lassen/fest halten und trotzdem mit hoch runter den Balken schubsen.

Title: Re: Hat sich Mouseaxis geändert?
Post by: kanonet on 2012-Apr-18
Gerade getestet und festgestellt: MOUSEAXIS funktioniert bei mir, auch außerhalb des Fensters, jedoch nur mit SYSTEMPOINTER TRUE. Aber egal, ob mit oder ohne Systempointer, es ist manchmal etwas hackelig (vorallem wenn sich kein MOUSESTATE in der Loop befindet), aber das könnte auch am Programm liegen.
Title: Re: Hat sich Mouseaxis geändert?
Post by: Markus on 2012-Apr-18
Mein Workaround , nicht schön aber selten  :x

Code (glbasic) Select

// --------------------------------- //
// Project: MausTest
// MR 18.04.2012
// IDE Version: 10.283

//SETSCREEN 1920,1080,1

SYSTEMPOINTER FALSE //mit TRUE geht nicht

ALLOWESCAPE TRUE
AUTOPAUSE TRUE

LOCAL mx,my,b1,b2
LOCAL vx,vy
REPEAT
//0=X - Geschwindigkeit
//1=Y - Geschwindigkeit
//2=Rad (1 auf, -1 ab)
//3=linke Maustaste
//4=rechte Maustaste
//5=mittlere Maustaste
    vx=MOUSEAXIS(0)
    vy=MOUSEAXIS(1)

MOUSESTATE mx,my,b1,b2 //löscht wohl auch MouseAxis darum ist das drüber

FreeMouse(mx,my)
SETPIXEL mx,my,RGB(255,255,255)

PRINT "X="+mx+" Y="+my,0,0
PRINT "VX="+vx+" VY="+vy,0,20

//PRINT "ViewW="+vieww,0,40

SHOWSCREEN
UNTIL FALSE

END

FUNCTION FreeMouse: mx,my

LOCAL viewx , viewy , vieww , viewh
GETVIEWPORT viewx, viewy, vieww, viewh

//Auf die andere Seite setzen
IF mx<8
mx=mx+vieww-8;SETMOUSE mx,my
ELSEIF mx>vieww-8
mx=mx-vieww+8;SETMOUSE mx,my
ELSEIF my<8
my=my+viewh-8;SETMOUSE mx,my
ELSEIF my>viewh-8
my=my-viewh+8;SETMOUSE mx,my
ENDIF

ENDFUNCTION
Title: Re: Hat sich Mouseaxis geändert?
Post by: Schranz0r on 2012-Apr-19
Quote from: kanonet on 2012-Apr-18
Gerade getestet und festgestellt: MOUSEAXIS funktioniert bei mir, auch außerhalb des Fensters, jedoch nur mit SYSTEMPOINTER TRUE. Aber egal, ob mit oder ohne Systempointer, es ist manchmal etwas hackelig (vorallem wenn sich kein MOUSESTATE in der Loop befindet), aber das könnte auch am Programm liegen.


Wenn in Y-Richtung über oder unter dem Fenster geht Y-Richtung nimmer das gleiche in in X  links und rechts ;)
War früher nicht der Fall!
Title: Re: Hat sich Mouseaxis geändert?
Post by: kanonet on 2012-Apr-20
Hmm stimmt. Da es nur so selektiv auftritt, würde ich vermuten, dass es ein Bug ist und kein Feature.