Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Julia Lohmann1 Direct Input. Julia Lohmann2 Möglichkeiten Umgang mit Tastaturen Zeigegeräten (Mäuse CAD) Joysticks (alles andere) Zuweisung einer Globally.

Ähnliche Präsentationen


Präsentation zum Thema: "Julia Lohmann1 Direct Input. Julia Lohmann2 Möglichkeiten Umgang mit Tastaturen Zeigegeräten (Mäuse CAD) Joysticks (alles andere) Zuweisung einer Globally."—  Präsentation transkript:

1 Julia Lohmann1 Direct Input

2 Julia Lohmann2 Möglichkeiten Umgang mit Tastaturen Zeigegeräten (Mäuse CAD) Joysticks (alles andere) Zuweisung einer Globally Unique ID (GUID) Unterscheidung zwischen Knöpfen und Achsen Mehrere Geräte können gleichzeitig aktiv sein

3 Julia Lohmann3 Vorbereitung DirectInput8Create → Objekt erstellen Instanz des Programms DirectX-Versionsnummer (0x0800) ANSI oder Unicode (Schnittstellenversion) Adresszuweisung per Zeiger Letzter Parameter unwichtig

4 Julia Lohmann4 Vorbereitung IDirectInput8::EnumDevices Einschränkung auf bestimmte Geräteklassen Zeiger auf die Rückruffunktion Übergebener Wert an die Rückruffunktion (meist unnötig) Einschränkung der Auflistung

5 Julia Lohmann5 Vorbereitung Rückruffunktion Alle Informationen des aktuellen Geräts abrufbar Rückgabewert bestimmt Fortsetzung → return DIENUM_CONTINUE → return DIENUM_STOP Übergebener Wert eigentlich unwichtig

6 Julia Lohmann6 Zugriff auf Geräte IDirectInputDevice8::SetDataFormat Zeiger auf ein vordefiniertes Format 1xTastatur, 2xMaus, 2xJoystick IDirectInputDevice8::SetCooperationLevel Fensterbeobachtung Zugriffsbestimmung IDirectInputDevice8::Aquire/Unaquire Zugriff aktivieren/deaktivieren

7 Julia Lohmann7 Tastatur Gerät nur mit ”Knöpfen” 265 Bytes – 1 Byte pro Taste Vordefinierte Tastenidizes DirectInput Key ”DIK_” → amerikanische Tastatur

8 Julia Lohmann8 Tastatur Initialisierung per CreateDevice SetDataFormat SetCooperationLevel Tastaturdaten abfragen Allgemeine Daten der Tastatur Durchgehen der einzelnen Tasten → gedrückt, wenn (Key[x] & 0x80) = 1

9 Julia Lohmann9 Tastatur Grenze der Tastatur 2-7 Tasten maximal gleichzeitig Anzahl je nach Lage der Tasten Lösbar durch Vorbelegung verschiedener Tasten Belegung durch Spieler

10 Julia Lohmann10 Maus Datenformate c_dfDIMouse und c_dfDIMouse2 3 Achsen (z = Rädchen) 4 bzw 8 Knöpfe abfragbar Achsen immer relativ Startposition muss festgelegt werden Ständige Positionsprüfung nötig

11 Julia Lohmann11 Maus Tasten analog zur Tastatur Individueller Mauszeiger für Anwendung möglich Kein Windows-Mauszeiger Andere Fenster können nicht benutzt werden (solange Anwendungsfenster aktiv)

12 Julia Lohmann12 Joystick Datenformate c_dfDIJoystick und c_dfDIJoystick2 6 Achsen 2 Schieberegler 4 Möglichkeiten für den Perspektivenregler (POV) 32 bzw 128 Knöpfe Extra Geschwindigkeit der Achsen und Schieberegler Ebenso Beschleunigung

13 Julia Lohmann13 Joystick Achsen immer absolut Achsen kehren automatisch zurück Ebenso der Perspektivenregler Besonderheit Schieberegler Kehren nicht in Ursprung zurück Hauptsächlich für Schubkontrolle verwendet

14 Julia Lohmann14 Joystick IDirectInputDevice8::EnumObjects Ähnlich wie IdirectInput8::EnumDevices Zeiger auf Rückruffunktion Benutzerdefinierter Wert Einschränkung der Auflistung Rückruffunktion Erhält Zeiger auf Objektdaten Wichtig: dwType-Wert (Verhaltensregulierung möglich)

15 Julia Lohmann15 Joystick IDirectInputDevice8::SetProperty Achseneinstellung Zeiger auf Struktur → Teil jeder eigenschaftsspezifischen Struktur Struktur einer Achseneinstellung Größe der eigenschaftsspezifischen Struktur in Bytes Gesamte Strukturgröße in Bytes Zu veränderndes Objekt Interpretation des Objekts

16 Julia Lohmann16 Joystick Achsenmodus → Absoluter oder relativer Modus Achsenskalierung → Gerätdatenumwandlung in passendes Schema Die tote Zone → Bereichdefinition für Bewegungsreaktion Sättigung → Maximalwertdefinition vor physischer Grenze

17 Julia Lohmann17 Datenmöglichkeiten Gepufferte Daten Verspeichern jeglicher Aktionen drücken/loslassen von Knöpfen, Bewegen der Achsen etc Direkte Daten Stand zum Zeitpunkt der Abfrage Aktionen zwischen Abfragen werden ignoriert Akzeptable Spielgeschwindigkeit

18 Julia Lohmann18 (vorläufiges Ende des Themas)

19 Julia Lohmann19 Zusammenfassung Im Normalfall werden alle Geräte durchsucht Jedes Gerät muss anders behandelt werden Kein Problem, wenn das zu benutzende Gerät festgelegt ist Freie Belegung problematisch → Joystick nicht mit Maus einfach austauschbar

20 Julia Lohmann20 Freie Belegung - Theorie Analoge Knöpfe definieren variiert immer zwischen 1 und 0 Achsen werden in links und rechts aufgeteilt Schieberegler müssen wieder auf 0 gesetzt werden, sobald Bewegung abbricht POV wird in vier Knöpfe umgewandelt trotzdem Vordefinition aller Knöpfe unabhängige Abfrage aller Knöpfe

21 Julia Lohmann21 Initialisieren Maus und Tastatur ohne Rückruffunktion Platzreservierung für 121 Knöpfe (Tastatur: 107; Maus: 14) und für 2 Geräte (einfachere Ansteuerung) Durchzählen der Joysticks Mithilfe einer Rückruffunktion und Variablenübergabe Geräteinformationen per Zahlenindex verspeichert

22 Julia Lohmann22 Initialisieren Rückruffunktion überprüft Gerätetyp bei identifiziertem Typ, wird dieser initialisiert InitKeybord normal per CreateDevice Index ist per Standard 0 InitMouse ebenfalls Index ist per Standard 1

23 Julia Lohmann23 Initialisieren InitJoystick Benötigten Speicherplatz erweitern (tbMemReAlloc) Achsen kalibrieren Variablen für max. 2 Positionen eines Schiebereglers Schreibarbeit bei allen: Definition der möglichen analogen Knöpfe

24 Julia Lohmann24 Abfrage tbDirectInput::GetState ruft die Gerätespezifischen Abfragen auf Index muss übergeben werden bei Joysticks muss auch die Nummer angegeben werden (1. Joystick = Index-2) GetKeybordState kennt mehr Knöpfe, als zugewiesen (256 ↔ 107) → eigene zu testende Tabelle anlegen (andere werden ignoriert)

25 Julia Lohmann25 Abfrage GetMouseState Achsen in links und rechts geteilt Bewegung nach rechts setzt ”x-Achse-positiv” auf 1 → Berechnung: Position / -15 GetJoystickState ”erweiterte Maus” → Schieberegler → POV-Controller

26 Julia Lohmann26 Abfrage Schieberegler Differenz zwischen alter und neuer Position wichtig Variable auf beliebigen negativen Wert setzen → wichtig für erstes Abfragen → muss negativ sein, damit es auf 0 skaliert wird absolute Position feststellen und verspeichern

27 Julia Lohmann27 Abfrage POV-Controller Richtungsbedingte Controller wie Achsen umwandeln frei drehbare mit sin und cos → Grad in Rad umrechnen (TB_DEG_TO_RAD) → sin und cos berechnen (sinf(fAngle) ← beides float) → Unterteilung in vier Bewegungsbereiche

28 Julia Lohmann28 Zuweisen tbDirectInput::WaitForButton Startverzögerung → Zeit vor erster Abfrage von GetPressedButton() maximale Zeit für eine Eingabe → wenn sie abgelaufen ist und GetPressedButton() nichts gefunden hat, wird -1 zurück gegeben

29 Julia Lohmann29 Vielen Dank.


Herunterladen ppt "Julia Lohmann1 Direct Input. Julia Lohmann2 Möglichkeiten Umgang mit Tastaturen Zeigegeräten (Mäuse CAD) Joysticks (alles andere) Zuweisung einer Globally."

Ähnliche Präsentationen


Google-Anzeigen