Code Search for Developers
 
 
  

kcamera.h from Spatial Knowledge Experiments at Krugle


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

Spatial Knowledge Experiments

A simulation of 3D virtual worlds for psychological experiments

Project homepage: http://sourceforge.net/projects/ske
Programming language(s): C,C++,Perl
License: other

  isense/
  joystick/
  Jamfile
  KImageCardinalDirection.h
  SKE.cpp
  SKE.h
  eulerangles.c
  eulerangles.h
  ikdraggable.cpp
  ikdraggable.h
  ikdraghandler.h
  ikmission.h
  ikxmlreader.h
  ikxmlwriter.h
  kappstate.cpp
  kappstate.h
  kbasedraggable.cpp
  kbasedraggable.h
  kbasedraghandler.cpp
  kbasedraghandler.h
  kblock.cpp
  kblock.h
  kblockId.h
  kblockid.cpp
  kcamera.cpp
  kcamera.h
  kcollision.cpp
  kcommandprocessor.cpp
  kcommandprocessor.h
  kconstant.cpp
  kconstant.h
  kcursor3d.cpp
  kcursor3d.h
  kdata.cpp
  kdata.h
  kdatalist.cpp
  kdatalist.h
  kdragmanager.cpp
  kdragmanager.h
  keventhandlermanager.cpp
  keventhandlermanager.h
  kflags.cpp
  kflags.h
  kimagecardinaldirection.cpp
  kkeys.cpp
  kkeys.h
  kkeystate.cpp
  kkeystate.h
  klandmark.cpp
  klandmark.h
  klandmarklist.cpp
  klandmarklist.h
  klight.cpp
  klight.h
  klightlist.cpp
  klightlist.h
  kmap.cpp
  kmap.h
  kmission.cpp
  kmission.h
  kmissiontype.cpp
  kmissiontype.h
  kmode.cpp
  kmode.h
  kmousemanager.cpp
  kmousemanager.h
  kobject3d.cpp
  kobject3d.h
  korientation.cpp
  korientation.h
  kpath.cpp
  kpath.h
  kpathfollower.cpp
  kpathfollower.h
  kplayer.cpp
  kplayer.h
  kposition.cpp
  kposition.h
  kquaternion.cpp
  kquaternion.h
  ksaveddatamanager.cpp
  ksaveddatamanager.h
  ksegment3.h
  ksign.cpp
  ksign.h
  ksprite3d.cpp
  ksprite3d.h
  ksprite3dlist.cpp
  ksprite3dlist.h
  kterrain.cpp
  kterrain.h
  kthing.cpp
  kthing.h
  kutil.cpp
  kutil.h
  kwireframe.cpp
  kwireframe.h
  kxmlhelper.h
  movement1d.h
  movement3d.h
  quattypes.h