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