Nu fik vi langt om længe implementeret et (billigt) mouselook. Vi har udviddet Structen i IMouse klassen så der i mousemovedeventarg er kommet dx og dy på (efter kyndig vejledning fra Ian), og når denne løsning på et tidspunkt bliver officielt implementeret skulle det være meget let at patche vores kode. Er vi blevet lovet.
Det betyder at vores kamerahandler nu bliver kaldt med et mousemovedeventarg i stedet for ijkl til at rottere om kameraets akser. Det betyder også at vi ikke rotterer i chunks mere, men direkte anvender den afstand musen flytter sig, og det bør give et kønnere resultat, og vi kan også dreje på flere akser samtidig.

Vi prøvede at lave muse-centrering vha. SDL efter hvert movedevent blev sendt til kamera handleren, men det gik ikke så godt - Værdierne bliver forvrænget, "tilsyneladende" rammer vi den state i SDL som bliver brugt til at opbevare den præcise museplacering fra sidste cycle. Den bliver anvendt til at beregne næste cycles relative muse-bevægelser, og når den så bliver flyttet midt i at de relative bevægelser er ved at blive optaget, så sker der noget uventet (og grimt). Hvornår det er sikkert at kalde mouse-wrap funktionen så det ikke får side-effekter kan vi ikke umiddelbart overskue, så vi har droppet centreringen til en start og i stedet skal man holde venstre museknap inde for at kamerahandleren reagerer på de mouse-events den får tilsendt.
Vi har også lagt planer for hvordan et "rigtigt" fps-style kamera kan implementeres. Kameraets evne til automatisk at lave translates og rotations til een transformationsmatrix vil her være rigtig god, idet der bare skal opbevares en lille smule state i kameraet for at den horizontale og vertikale rotation kan foretages som det sker i for eksempel half life.
Det var mouselook - det næste er, at vi har fået vores kode til at virke sammen med den udleverede. Sådan da. Vores texturekode er ikke så køn som vi gerne ville ha, og den er vidst ikke engang aktiv lige pt. Til gengæld virker shaders nu.
Og vi har lavet en implementation af transformationnode; Den tager imod transformationsmatrixen som ligger i noden og omskriver den til en matrix som opengl kan forstå, og så bliver den applied (de andre på holdet må lige kommentere hvis det ikke er helt korrekt formuleret).




Ingen kommentarer:
Send en kommentar