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 struct 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 1.4.1 by doxygen 1.7.1