Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/camera.h @ 7013

Last change on this file since 7013 was 7013, checked in by bensch, 18 years ago

trunk: better interface to CameraDistance

File size: 2.3 KB
Line 
1/*!
2 * @file camera.h
3 * Viewpoint controlling class definitions
4*/
5
6#ifndef _CAMERA_H
7#define _CAMERA_H
8
9#include "p_node.h"
10#include "event_listener.h"
11#include "plane.h"
12
13class World;
14class CameraTarget;
15class Event;
16
17//! an enumerator for different types of view
18typedef enum ViewMode
19{
20  VIEW_NORMAL,
21  VIEW_BEHIND,
22  VIEW_FRONT,
23  VIEW_LEFT,
24  VIEW_RIGHT,
25  VIEW_TOP
26};
27
28//! Camera
29/**
30 * This class controls the viewpoint from which the World is rendered.
31*/
32class Camera : public PNode, public EventListener
33{
34 public:
35  Camera();
36  virtual ~Camera();
37
38  void lookAt(PNode* target);
39  PNode* getTarget();
40
41  void setAspectRatio(float aspectRatio);
42  void setFovy(float fovy);
43  void setClipRegion(float nearClip, float farClip);
44
45  void setViewMode(ViewMode mode);
46  inline const Vector& getViewVector() const { return this->viewVector; }
47  inline const Vector& getUpVector() const { return this->upVector; }
48  inline const Plane& getViewFrustum() const { return this->frustumPlane; }
49
50  inline float distance(const Vector& distance) const { return this->frustumPlane.distancePoint(distance); }
51  inline float distance(const PNode* node) const { return distance(node->getAbsCoor()); }
52
53  void tick(float dt);
54  void apply ();
55
56  void process(const Event &event);
57
58 private:
59  CameraTarget*     target;          //!< The Target of the Camera (where this Camera Looks at)
60
61  float             fovy;            //!< The field of view Angle (in degrees).
62  float             aspectRatio;     //!< The aspect ratio (width / height).
63  float             nearClip;        //!< The near clipping plane.
64  float             farClip;         //!< The far clipping plane.
65
66  float             toFovy;          //!< The fovy-mode to iterate to.
67  ViewMode          currentMode;     //!< The ViewMode the camera is in
68
69  Vector            delay;
70  Plane             frustumPlane;    //!< plane that marks the view frustum
71  Vector            viewVector;      //!< the direction of the camera view
72  Vector            upVector;        //!< direction of the up vector
73};
74
75//! A CameraTarget is where the Camera is looking at.
76class CameraTarget : public PNode
77{
78  friend class Camera;             //! The CameraTarget is a friend of Camera. noone else needs a CameraTarget, so noone else can create it.
79
80 private:
81  CameraTarget();
82
83 public:
84};
85
86
87#endif /* _CAMERA_H */
Note: See TracBrowser for help on using the repository browser.