CEL

Public API Reference

propclass/newcamera.h
00001 /*
00002     Crystal Space Entity Layer
00003     Copyright (C) 2001 by Jorrit Tyberghein
00004     Copyright (C) 2007 by Dariusz Dawidowski
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public
00017     License along with this library; if not, write to the Free
00018     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00019 */
00020 
00021 #ifndef __CEL_PF_NEW_CAMERA__
00022 #define __CEL_PF_NEW_CAMERA__
00023 
00024 #include "cstypes.h"
00025 #include "iutil/comp.h"
00026 #include "iutil/eventh.h"
00027 #include "csutil/scf.h"
00028 #include "csutil/weakref.h"
00029 #include "csutil/weakrefarr.h"
00030 #include "csutil/refarr.h"
00031 #include "physicallayer/propclas.h"
00032 #include "physicallayer/propfact.h"
00033 #include "physicallayer/facttmpl.h"
00034 #include "celtool/stdpcimp.h"
00035 #include "celtool/stdparams.h"
00036 #include "celtool/camera.h"
00037 #include "propclass/region.h"
00038 #include "propclass/mesh.h"
00039 
00040 struct iCelEntity;
00041 struct iObjectRegistry;
00042 struct iGraphics3D;
00043 struct iEngine;
00044 struct iVirtualClock;
00045 struct iKeyboardDriver;
00046 struct iMouseDriver;
00047 struct iCollideSystem;
00048 struct iView;
00049 class csView;
00050 class celPcNewCamera;
00051 class csReversibleTransform;
00052 class csOrthoTransform;
00053 struct iPcZoneManager;
00054 
00055 struct iPcNewCamera;
00056 
00057 namespace iPcmNewCamera
00058 {
00059 struct General : public virtual iBase
00060 {
00061   SCF_INTERFACE (General, 0, 1, 0);
00062 
00067   virtual void SetParentCamera (iPcNewCamera* camera) = 0;
00068 
00069   CS_DEPRECATED_METHOD_MSG("Use UseSpringOrigin () instead")
00075   virtual bool UseSpringPos () const = 0;
00076 
00082   virtual bool UseSpringOrigin () const = 0;
00083 
00089   virtual bool UseSpringTarget () const = 0;
00090 
00096   virtual bool UseSpringUp () const = 0;
00097 
00098   CS_DEPRECATED_METHOD_MSG("Use GetCollisionDetection () instead")
00104   virtual bool AllowCollisionDetection () const = 0;
00105 
00111   virtual bool GetCollisionDetection () const = 0;
00112 
00118   virtual bool DrawAttachedMesh () const = 0;
00119 
00124   virtual float GetSpringCoefficient () const = 0;
00125 
00130   virtual void SetSpringCoefficient (float s) = 0;
00131 
00137   virtual void SetOriginSpringCoefficient (float springCoef) = 0;
00138 
00143   virtual float GetOriginSpringCoefficient () const = 0;
00144 
00150   virtual void SetTargetSpringCoefficient (float springCoef) = 0;
00151 
00156   virtual float GetTargetSpringCoefficient () const = 0;
00157 
00163   virtual void SetUpSpringCoefficient (float springCoef) = 0;
00164 
00169   virtual float GetUpSpringCoefficient () const = 0;
00170 
00171   CS_DEPRECATED_METHOD_MSG("Use GetOrigin () instead")
00176   virtual const csVector3& GetPosition () const = 0;
00177 
00182   virtual const csVector3& GetOrigin () const = 0;
00183 
00188   virtual const csVector3& GetTarget () const = 0;
00189 
00194   virtual const csVector3& GetUp () const = 0;
00195 
00201   virtual bool DecideCameraState () = 0;
00202 };
00203 
00213 struct Tracking : public virtual General
00214 {
00215   SCF_INTERFACE (Tracking, 0, 0, 1);
00216 
00221   virtual bool ResetCamera () = 0;
00222 
00223   enum TargetState
00224   {
00225     TARGET_BASE = 0,
00226     TARGET_OBJ,
00227     TARGET_NONE
00228   };
00229 
00234   virtual bool SetTargetEntity (const char* name) = 0;
00235 
00242   virtual void SetTargetState (TargetState targetstate) = 0;
00243 
00247   virtual TargetState GetTargetState () = 0;
00248 
00253   virtual void SetTargetYOffset (float targetyoffset) = 0;
00254 };
00255 } // iPcmNewCamera
00256 
00257 typedef iPcmNewCamera::General iCelCameraMode;
00258 
00262 struct iPcNewCamera : public virtual iPcCamera
00263 {
00264   SCF_INTERFACE (iPcNewCamera, 0, 1, 0);
00265 
00266   CS_DEPRECATED_METHOD_MSG("Use GetBaseOrigin () instead")
00271   virtual const csVector3& GetBasePos () const = 0;
00272 
00277   virtual const csVector3& GetBaseOrigin () const = 0;
00278 
00283   virtual const csVector3& GetBaseDir () const = 0;
00284 
00289   virtual const csVector3& GetBaseUp () const = 0;
00290 
00295   virtual const csReversibleTransform& GetBaseTrans () const = 0;
00296 
00297   CS_DEPRECATED_METHOD_MSG("Use GetOrigin () instead")
00302   virtual const csVector3& GetPos () const = 0;
00303 
00308   virtual const csVector3& GetOrigin () const = 0;
00309 
00314   virtual const csVector3& GetTarget () const = 0;
00315 
00320   virtual const csVector3& GetUp () const = 0;
00321 
00322   CS_DEPRECATED_METHOD_MSG("Use SetTargetPositionOffset () instead")
00328   virtual void SetPositionOffset (const csVector3& offset) = 0;
00329 
00336   virtual void SetTargetPositionOffset (const csVector3& offset) = 0;
00337 
00341   virtual void SetTargetMinimumOffset (float minoff) = 0;
00342 
00349   virtual void SetCameraPositionOffset (const csVector3& offset) = 0;
00350 
00356   virtual void SetSpringCoefficient (float springCoef) = 0;
00357 
00362   virtual float GetSpringCoefficient () const = 0;
00363 
00369   virtual void SetOriginSpringCoefficient (float springCoef) = 0;
00370 
00375   virtual float GetOriginSpringCoefficient () const = 0;
00376 
00382   virtual void SetTargetSpringCoefficient (float springCoef) = 0;
00383 
00388   virtual float GetTargetSpringCoefficient () const = 0;
00389 
00395   virtual void SetUpSpringCoefficient (float springCoef) = 0;
00396 
00401   virtual float GetUpSpringCoefficient () const = 0;
00402 
00403   CS_DEPRECATED_METHOD_MSG("Use GetCollisionDetection () instead")
00409   virtual bool DetectCollisions () const = 0;
00410 
00416   virtual void SetCollisionDetection (bool detectCollisions) = 0;
00417 
00423   virtual bool GetCollisionDetection () const = 0;
00424 
00428   virtual void SetCollisionYFocusOffset (float yoff) = 0;
00429 
00433   virtual float GetCollisionYFocusOffset () const = 0;
00434 
00443   virtual void SetCollisionCorrection (float corr) = 0;
00444 
00448   virtual float GetCollisionCorrection () const = 0;
00449 
00455   virtual void SetCollisionAvoidanceRadiusSq (float radsq) = 0;
00456 
00460   virtual float GetCollisionAvoidanceRadiusSq () const = 0;
00461 
00466   virtual void SetCollisionYAvoidance (float yavoid) = 0;
00467 
00471   virtual float GetCollisionYAvoidance () const = 0;
00472 
00477   virtual void SetCollisionAvoidanceInterpolation (float aint) = 0;
00478 
00482   virtual float GetCollisionAvoidanceInterpolation () const = 0;
00483 
00488   CS_DEPRECATED_METHOD_MSG("Non existant. Use the new collision detection system.")
00489   virtual void SetCollisionSpringCoefficient (float springCoef) = 0;
00490 
00495   CS_DEPRECATED_METHOD_MSG("Non existant. Use the new collision detection system.")
00496   virtual float GetCollisionSpringCoefficient () const = 0;
00497 
00503   virtual bool InCameraTransition () const = 0;
00504 
00505   CS_DEPRECATED_METHOD_MSG("Use SetTransitionTime (float) instead.")
00511   virtual void SetTransitionSpringCoefficient (float springCoef) = 0;
00512 
00513   CS_DEPRECATED_METHOD_MSG("Use SetTransitionTime (float) instead.")
00519   virtual float GetTransitionSpringCoefficient () const = 0;
00520 
00521   CS_DEPRECATED_METHOD_MSG("Use GetTransitionTime () instead.")
00531   virtual void SetTransitionCutoffDistance (float cutOffOriginDist,
00532         float cutOffTargetDist) = 0;
00533 
00534   CS_DEPRECATED_METHOD_MSG("Use GetTransitionTime () instead.")
00540   virtual float GetTransitionCutoffPosDistance () const = 0;
00541 
00542   CS_DEPRECATED_METHOD_MSG("Use GetTransitionTime () instead.")
00548   virtual float GetTransitionCutoffOriginDistance () const = 0;
00549 
00550   CS_DEPRECATED_METHOD_MSG("Use GetTransitionTime () instead.")
00556   virtual float GetTransitionCutoffTargetDistance () const = 0;
00557 
00562   virtual void SetTransitionTime (float time) = 0;
00563 
00567   virtual float GetTransitionTime () const = 0;
00568 
00574   virtual size_t AttachCameraMode (iCelCameraMode* mode) = 0;
00575 
00576   enum CEL_CAMERA_MODE
00577   {
00578     CCM_FIRST_PERSON = 0,
00579     CCM_THIRD_PERSON,
00580     CCM_TRACKING,
00581     CCM_HORIZONTAL,
00582     CCM_ISOMETRIC,
00583     CCM_COUNT
00584   };
00585 
00591   virtual size_t AttachCameraMode (CEL_CAMERA_MODE modetype) = 0;
00592 
00597   virtual size_t GetCurrentCameraModeIndex () const = 0;
00598 
00603   virtual iCelCameraMode* GetCurrentCameraMode () = 0;
00604 
00610   virtual bool SetCurrentCameraMode (size_t modeIndex) = 0;
00611 
00615   virtual void NextCameraMode () = 0;
00616 
00620   virtual void PrevCameraMode () = 0;
00621 
00625   virtual void Draw () = 0;
00626 
00632   virtual const csOrthoTransform &GetTransform () = 0;
00633 
00639   virtual iCelCameraMode* GetCameraMode (int idx = -1) = 0;
00640 
00648   template <typename T>
00649   csPtr<T> QueryModeInterface (int idx = -1)
00650   {
00651     iBase* cmode = GetCameraMode (idx);
00652     if (!cmode)
00653       return 0;
00654     return scfQueryInterface<T> (cmode);
00655   }
00656 
00660   virtual bool Reset () = 0;
00661 };
00662 
00663 #endif // __CEL_PF_NEW_CAMERA__

Generated for CEL: Crystal Entity Layer 2.0 by doxygen 1.7.6.1