Show kcamera.h syntax highlighted
/*
Copyright (C) 2003, 2004 by Luca Cappa
Written by Luca Cappa groton@users.sourceforge.net
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __KCAMERA_H__
#define __KCAMERA_H__
#include "csutil/scf.h"
#include "csgeom/transfrm.h"
#include "iengine/camera.h"
#include "movement1d.h"
struct iEngine;
struct iLoader;
struct iGraphics2D;
struct iGraphics3D;
struct iKeyboardDriver;
struct iSector;
struct iView;
struct iVirtualClock;
struct iObjectRegistry;
struct iEvent;
struct iSector;
struct iConsoleOutput;
struct iFont;
struct iString;
struct iMeshWrapper;
struct iPolygon3D;
struct iMaterialWrapper;
struct iCollideSystem;
struct iTerrFuncState;
class csVector3;
class Intertrax2;
class WorldMap;
struct iDynamics;
struct iDynamicSystem;
struct iRigidBody;
struct KSprite3D;
class KPlayer;
class KAppState;
class SkyBox;
class Simple;
class Movement1D;
enum{EDITING=0,FIRST,THIRD,POINTINGBEFOREWALKING};
class KCamera
{
private:
csRef<iEngine> mEngine;///<
csRef<iGraphics3D> mG3d;///<
csRef<iView> m_view;
csRef<iCamera> mCamera;
csRef<iKeyboardDriver> m_kbd;
csRef<iJoystickDriver> m_joy;
csRef<iVirtualClock> m_vc;
csRef<iConsoleOutput> m_consoleOutput;
int m_state;//EDITING,THIRD,FIRST, POINTINGBEFOREWALKING.
csRef<KPlayer> m_tracked;//player tracked.
//Datas for editing (EDITING).
float m_xAngle;//the unit is radiant.
float m_yAngle;//the unit is radiant.
float m_zAngle;//the unit is radiant.
float m_distance;
csVector3 mCameraVel;
csVector3 mCameraAcc;
csVector3 m_pos;
float m_friction;// = 1.8f;
float m_accK;// = 3.7f;
bool m_zoomingIn;
bool m_zoomingOut;
int m_rotateX;
int m_rotateY;
int m_rotateZ;
Movement1D m_mov1d;
void HandleRotation (float p_timePassed);
public:
KCamera ();
virtual ~KCamera ();
void KCamera::ZoomIn (bool);
void KCamera::ZoomOut (bool);
void setViewport (csVector2 const& pPoint, csVector2 const& pSize);
//------------------------------------------------------------
protected:
bool mPanoramic;
public:
void SetPanoramic (bool pPan);
bool IsPanoramic () const;
//------------------------------------------------------------
void Draw ();
int GetState();
void SetState(int p_state);
int SwitchPersonState ();
void MoveForward (bool);
void MoveBack (bool);
void MoveLeft (bool);
void MoveRight (bool);
void RotateX (int);
void RotateY (int);
void RotateZ (int);
void UpdatePosition(float);
void SetDistance (float p_distance);
void SetAngles (float p_xAngle, float p_yAngle, float p_zAngle);
void SetSector(iSector* p_sector);
void SetPositionRotation (const csVector3& p_vector,
const csMatrix3& p_matrix);
void SetTracked (KPlayer* p_player);
void SetFOVAngle(float p_angle, int p_width);
iCamera* GetCamera();
};
#endif
See more files for this project here