#include <Camera.h>
Öffentliche Typen | |
| enum | STEP_DIR { STOP, STEP_FORWARD, STEP_BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, STEP_LEFT, STEP_RIGHT, STEP_UP, STEP_DOWN, ROTATE_LEFT, ROTATE_RIGHT } |
Öffentliche Methoden | |
| virtual | ~Camera () |
| Destruktor. | |
| void | action () |
| Wird in der Gameloop vor jedem Frame aufgerufen um die Kameraposition neu zu berechnen. | |
| void | move (STEP_DIR step) |
| Setter fuer die auszufuehrende Vorwaerts-/Rueckwaertsbewegeung. | |
| STEP_DIR | isMoving () |
| Getter fuer die auszufuehrende Vorwaerts-/Rueckwaertsbewegeung. | |
| void | lift (STEP_DIR step) |
| Setter fuer die auszufuehrende Hoch-/Runterbewegeung. | |
| STEP_DIR | isLifting () |
| Getter fuer die auszufuehrende Hoch-/Runterbewegeung. | |
| void | strafe (STEP_DIR step) |
| Setter fuer die auszufuehrende Seitwaertsbewegeung. | |
| STEP_DIR | isStrafing () |
| Getter fuer die auszufuehrende Seitwaertsbewegeung. | |
| void | rotate (STEP_DIR step) |
| Setter fuer die auszufuehrende Drehbewegung. | |
| STEP_DIR | isRotating () |
| Getter fuer die auszufuehrende Drehbewegung. | |
| int | getZone () |
| Liefert die aktuelle Zone zurueck, in der sich die Camera befindet. | |
| void | setZone (int zone) |
| Setzt die Zone in der sich die Camera befindet. | |
| void | setPos (float x, float y, float z) |
| Setter fuer die Position der Camera im 3D Raum. | |
| void | setDir (float x, float y, float z) |
| Setter fuer die Blickrichtung der Camera im 3D Raum. | |
| Vec & | getPos () |
| Getter fuer die Position der Camera im 3D Raum. | |
| Vec & | getDir () |
| Getter fuer die Blickrichtung der Camera im 3D Raum. | |
| void | stepForward () |
| Ein Step nach vorne (inkl. Kollisionserkennung). | |
| void | stepBackward () |
| Ein Step zurueck (inkl. Kollisionserkennung). | |
| void | stepStrafeRight () |
| Ein Step nach Rechts (inkl. Kollisionserkennung). | |
| void | stepStrafeLeft () |
| Ein Step nach Links (inkl. Kollisionserkennung). | |
| void | stepUp () |
| Ein Step nach Oben. | |
| void | stepDown () |
| Ein Step nach Unten. | |
| void | stepTurnRight () |
| Nach rechts drehen. | |
| void | stepTurnLeft () |
| Nach links drehen. | |
| void | aimUp () |
| Nach oben blicken. | |
| void | aimDown () |
| Nach unten blicken. | |
| void | incMove () |
| Pendelbewegung beim laufen simulieren: Beim gehen und laufen bewegt sich auch das Auge des Spielers/Camera auf und ab. Dies wird hier durch eine Sinusfunktion simuliert. Die Wahl der Parameter steps und alti sind durch ausprobieren festgelegt worden. Alles andere sieht wie das Gehen mit einem Holzbein aus... | |
| bool | collision (int typ, int dir) |
| Testet auf eine Kollision. | |
| float | getLevel () |
| getLevel - Keine Ahnung mehr, was das macht... | |
| void | dump () |
| Obligatorische Dump-Methode fuer debuging. | |
| void | load (DataInputStream &dataIn) |
| Liest das Camera-Objekt aus dem Inputstream. | |
| void | save (DataOutputStream &dataOut) |
| Serialisiert das Camera-Objekt in den Outputstream. | |
Öffentliche, statische Methoden | |
| static Camera * | getInstance () |
| Liefert die Singleton-Instanz. | |
Geschützte Methoden | |
| Camera () | |
| Konstruktor. | |
Private Attribute | |
| STEP_DIR | m_moving |
| STEP_DIR | m_lifting |
| STEP_DIR | m_strafing |
| STEP_DIR | m_rotating |
| Vec | m_vecPos |
| Vec | m_vecDir |
| Vec | m_vecPosNext |
| Vec | m_vecDirNext |
| Vec | m_vecPosColl |
| Vec | m_vecDirColl |
| float | m_stepColl |
| float | m_stepAnim |
| float | m_step |
| int | m_turn |
| int | m_zone |
| int | m_HOG |
| int | m_moverCount |
| float | m_moverDeltaY |
Statische private Attribute | |
| static Camera * | _instance = 0 |
Ausserdem testet die Camera vor jedem Move, ob der Spieler gegen eine Wand gerannt ist:
Bei den Kollsisionsabfragen wird aus dem aktuellen Standpunkt und dem naechsten Standpunkt ein Strahl ermittelt. Schneidet dieser Strahl eine Tile, so hat eine Kollision stattgefunden. Die Kamera darf sich dann NICHT zu diesem neuen Standpunkt bewegen (man koennte dann ja durch Waende gehen) Um eine rel. langsame und weiche Bewegung im Raum zu erreichen, ist die Distanz pro Step recht kurz. Daraus folgt, das die Camera sich auch sehr nah an eine WALL annaehern kann, was aber zu Render- bzw. Clippingproblemen fuehrt. Deshalb wird fuer die Collisionsabfrage eine groessere Distanz gefordert. Dazu gibt es hier die m_vecPosColl, m_vecDirColl und m_stepColl. Fuer die Kollision gegen ein PORTAL muss allerdings wieder die normale Schrittweite genommen werden, da sonst ein Portaluebergang zu frueh angezeigt wird, obwohl die Camera sich mit dem naechsten Step noch in der alten Zone befindet.
MOVE_FORWARD MOVE_BACKWARD MOVE_STOP MOVE_DOWN MOVE_UP MOVE_STOP STRAFE_LEFT STRAFE_RIGHT STRAFE_STOP ROTATE_LEFT ROTATE_RIGHT ROTATE_STOP
| enum Camera::STEP_DIR |
| Camera::Camera | ( | ) | [protected] |
Konstruktor.
| Camera::~Camera | ( | ) | [virtual] |
Destruktor.
| Camera * Camera::getInstance | ( | ) | [static] |
Liefert die Singleton-Instanz.
| void Camera::action | ( | ) |
Wird in der Gameloop vor jedem Frame aufgerufen um die Kameraposition neu zu berechnen.
| void Camera::move | ( | STEP_DIR | step | ) |
Setter fuer die auszufuehrende Vorwaerts-/Rueckwaertsbewegeung.
| step | STOP, STEP_FORWARD, STEP_BACKWARD |
| Camera::STEP_DIR Camera::isMoving | ( | ) |
Getter fuer die auszufuehrende Vorwaerts-/Rueckwaertsbewegeung.
| void Camera::lift | ( | STEP_DIR | step | ) |
Setter fuer die auszufuehrende Hoch-/Runterbewegeung.
| step | STOP, STEP_UP, STEP_DOWN |
| Camera::STEP_DIR Camera::isLifting | ( | ) |
Getter fuer die auszufuehrende Hoch-/Runterbewegeung.
| void Camera::strafe | ( | STEP_DIR | step | ) |
Setter fuer die auszufuehrende Seitwaertsbewegeung.
| step | STOP, STRAFE_LEFT, STRAFE_RIGHT |
| Camera::STEP_DIR Camera::isStrafing | ( | ) |
Getter fuer die auszufuehrende Seitwaertsbewegeung.
| void Camera::rotate | ( | Camera::STEP_DIR | step | ) |
Setter fuer die auszufuehrende Drehbewegung.
| step | STOP, ROTATE_LEFT, ROTATE_RIGHT |
| Camera::STEP_DIR Camera::isRotating | ( | ) |
Getter fuer die auszufuehrende Drehbewegung.
| int Camera::getZone | ( | ) |
| void Camera::setPos | ( | float | x, | |
| float | y, | |||
| float | z | |||
| ) |
| void Camera::setDir | ( | float | x, | |
| float | y, | |||
| float | z | |||
| ) |
| Vec & Camera::getPos | ( | ) |
| Vec & Camera::getDir | ( | ) |
| void Camera::stepForward | ( | ) |
Ein Step nach vorne (inkl. Kollisionserkennung).
| void Camera::stepBackward | ( | ) |
Ein Step zurueck (inkl. Kollisionserkennung).
| void Camera::stepStrafeRight | ( | ) |
Ein Step nach Rechts (inkl. Kollisionserkennung).
| void Camera::stepStrafeLeft | ( | ) |
Ein Step nach Links (inkl. Kollisionserkennung).
| void Camera::stepUp | ( | ) |
Ein Step nach Oben.
| void Camera::stepDown | ( | ) |
Ein Step nach Unten.
| void Camera::stepTurnRight | ( | ) |
Nach rechts drehen.
| void Camera::stepTurnLeft | ( | ) |
Nach links drehen.
| void Camera::aimUp | ( | ) |
Nach oben blicken.
| void Camera::aimDown | ( | ) |
Nach unten blicken.
| void Camera::incMove | ( | ) |
Pendelbewegung beim laufen simulieren: Beim gehen und laufen bewegt sich auch das Auge des Spielers/Camera auf und ab. Dies wird hier durch eine Sinusfunktion simuliert. Die Wahl der Parameter steps und alti sind durch ausprobieren festgelegt worden. Alles andere sieht wie das Gehen mit einem Holzbein aus...
| bool Camera::collision | ( | int | typ, | |
| int | dir | |||
| ) |
Testet auf eine Kollision.
| typ | forward, backward, ... | |
| dir | Bewegungsrichtung |
| float Camera::getLevel | ( | ) |
getLevel - Keine Ahnung mehr, was das macht...
| void Camera::dump | ( | ) |
Obligatorische Dump-Methode fuer debuging.
| void Camera::load | ( | DataInputStream & | dataIn | ) |
| void Camera::save | ( | DataOutputStream & | dataOut | ) |
Serialisiert das Camera-Objekt in den Outputstream.
| dataOut | DataOutputStream |
| IOException |
Camera * Camera::_instance = 0 [static, private] |
STEP_DIR Camera::m_moving [private] |
STEP_DIR Camera::m_lifting [private] |
STEP_DIR Camera::m_strafing [private] |
STEP_DIR Camera::m_rotating [private] |
Vec Camera::m_vecPos [private] |
Vec Camera::m_vecDir [private] |
Vec Camera::m_vecPosNext [private] |
Vec Camera::m_vecDirNext [private] |
Vec Camera::m_vecPosColl [private] |
Vec Camera::m_vecDirColl [private] |
float Camera::m_stepColl [private] |
float Camera::m_stepAnim [private] |
float Camera::m_step [private] |
int Camera::m_turn [private] |
int Camera::m_zone [private] |
int Camera::m_HOG [private] |
int Camera::m_moverCount [private] |
float Camera::m_moverDeltaY [private] |
1.5.5