Camera.h

00001 //***************************************************************************************
00002 //
00003 // File supervisor: Crosswalk team
00004 //
00005 // Copyright 2008 Autodesk, Inc.  All rights reserved.
00006 // Use of this software is subject to the terms of the Autodesk license agreement
00007 // provided at the time of installation or download, or which otherwise accompanies
00008 // this software in either electronic or hard copy form.
00009 //
00010 //***************************************************************************************
00011 
00012 #ifndef _CAMERA_H
00013 #define _CAMERA_H
00014 
00015 #include "Primitive.h"
00016 #include "ConstrainableType.h"
00017 
00021 class XSIEXPORT CSLCamera
00022     : public CSLPrimitive, public CSLConstrainableType
00023 {
00024 public:
00025 
00031     CSLCamera(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00032 
00035     virtual ~CSLCamera();
00036 
00040     SI_Float GetFarPlane();
00041 
00045     SI_Void SetFarPlane(SI_Float in_fValue);
00046 
00050     SI_Float GetFieldOfView();
00051 
00055     SI_Void SetFieldOfView(SI_Float in_fValue);
00056 
00060     CSIBCVector3D GetInterestPosition();
00061 
00065     SI_Void SetInterestPosition(CSIBCVector3D& in_rValue);
00066 
00070     CSIBCVector3D GetPosition();
00071 
00075     SI_Void SetPosition(CSIBCVector3D& in_rValue);
00076 
00080     SI_Float GetNearPlane();
00081 
00085     SI_Void SetNearPlane(SI_Float in_fValue);
00086 
00090     virtual SI_Float GetRoll();
00091 
00095     virtual SI_Void SetRoll(SI_Float in_fValue);
00096 
00101     CSLConstraint* AddConstraint(CSLConstraint::EConstraintType in_ConstraintType);
00102 
00103     virtual SI_Error Synchronize();
00104     virtual ETemplateType Type();
00105     virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00106 
00139     virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00140 
00141     CSLVector3DProxy* GetInterestPositionProxy() { return &m_InterestPosition;};
00142     CSLVector3DProxy* GetPositionProxy() { return &m_Position;};
00143     CSLFloatProxy* GetRollProxy() { return &m_Roll;};
00144     CSLFloatProxy* GetFOVProxy() { return &m_FieldOfView;};
00145     CSLFloatProxy* GetNearPlaneProxy() { return &m_NearPlane;};
00146     CSLFloatProxy* GetFarPlaneProxy() { return &m_FarPlane;};
00147 
00148 private:
00149     CSLVector3DProxy m_InterestPosition;
00150     CSLVector3DProxy m_Position;
00151     CSLFloatProxy m_Roll;
00152     CSLFloatProxy m_FieldOfView;
00153     CSLFloatProxy m_NearPlane;
00154     CSLFloatProxy m_FarPlane;
00155 
00156     void *m_pReserved;  // reserved for future extension
00157 };
00158 
00159 #endif