SceneInfo.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 _SCENEINFO_H
00013 #define _SCENEINFO_H
00014 
00015 #include "Template.h"
00016 
00019 class XSIEXPORT CSLSceneInfo
00020     : public CSLTemplate
00021 {
00022 // Methods
00023 public:
00024 
00026     typedef enum ETimingType
00027     {
00028         SI_SECONDS, //*< Timing is in seconds */
00029         SI_FRAMES   //*< Timing is in frames */
00030     };
00031 
00033 
00039     CSLSceneInfo
00040     (
00041         CSLScene* in_pScene,
00042         CSLModel* in_pModel,
00043         CdotXSITemplate *in_pTemplate,
00044         ETimingType in_DefaultETimingType = SI_FRAMES
00045     );
00046 
00048     virtual ~CSLSceneInfo();
00049 
00051 
00054     void SetEnd( SI_Float in_nEnd );
00055 
00057 
00060     SI_Float GetEnd();
00061 
00063 
00066     void SetFrameRate( SI_Float in_fFrameRate );
00067 
00069 
00072     SI_Float GetFrameRate();
00073 
00075 
00078     void SetStart( SI_Float in_nStart );
00079 
00081 
00084     SI_Float GetStart();
00085 
00087 
00090     void SetTimingType( ETimingType in_Type ) ;
00091 
00092 
00094 
00097     ETimingType GetTimingType();
00098 
00099     virtual CSLTemplate::ETemplateType Type();
00100     virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00101 
00102     CSLFloatProxy*                              GetStartProxy() { return &m_nStart;};
00103     CSLFloatProxy*                              GetEndProxy() { return &m_nEnd;};
00104     CSLFloatProxy*                              GetFrameRateProxy() { return &m_fFrameRate;};
00105     CSLStrEnumProxy<ETimingType, SI_FRAMES>*    GetTimingTypeProxy() { return &m_TimingType;};
00106 
00107 // Members
00108 private:
00109     CSLStrEnumProxy<ETimingType, SI_FRAMES> m_TimingType;
00110     CSLFloatProxy m_nStart;
00111     CSLFloatProxy m_nEnd;
00112     CSLFloatProxy m_fFrameRate;
00113 
00114     // This member is here to allow future improvement of the class.
00115     SI_Void *m_pReserved;
00116 };
00117 
00118 #endif
00119