00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_CAMPOS_H__
00020 #define __CS_CAMPOS_H__
00021
00022 #include "csutil/csobject.h"
00023 #include "csutil/nobjvec.h"
00024 #include "csgeom/vector3.h"
00025 #include "csengine/camera.h"
00026 #include "iengine/campos.h"
00027
00028 struct iEngine;
00029 struct iCamera;
00030
00038 class csCameraPosition : public csObject
00039 {
00040 private:
00042 virtual ~csCameraPosition ();
00043
00044 public:
00046 char *Sector;
00048 csVector3 Position;
00050 csVector3 Forward;
00052 csVector3 Upward;
00053
00055 csCameraPosition (const char *iName, const char *iSector,
00056 const csVector3 &iPosition,
00057 const csVector3 &iForward, const csVector3 &iUpward);
00058
00060 void Set (const char *iSector, const csVector3 &iPosition,
00061 const csVector3 &iForward, const csVector3 &iUpward);
00062
00064 bool Load (iCamera*, iEngine*);
00065
00066 SCF_DECLARE_IBASE_EXT (csObject);
00067
00068
00069 struct CameraPosition : public iCameraPosition
00070 {
00071 SCF_DECLARE_EMBEDDED_IBASE(csCameraPosition);
00072
00073 virtual iObject *QueryObject()
00074 { return scfParent; }
00075 virtual const char *GetSector()
00076 { return scfParent->Sector; }
00077 virtual csVector3 GetPosition()
00078 { return scfParent->Position; }
00079 virtual csVector3 GetUpwardVector()
00080 { return scfParent->Upward; }
00081 virtual csVector3 GetForwardVector()
00082 { return scfParent->Forward; }
00083 virtual bool Load (iCamera *c, iEngine *e)
00084 { return scfParent->Load (c, e); }
00085 virtual void Set (const char *sector, const csVector3 &pos,
00086 const csVector3 &forward, const csVector3 &upward)
00087 {
00088 scfParent->Set (sector, pos, forward, upward);
00089 }
00090 } scfiCameraPosition;
00091 friend struct CameraPosition;
00092 };
00093
00094 #endif // __CS_CAMPOS_H__