CoordinateSystem.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 _COORDINATESYSTEM_H
00013 #define _COORDINATESYSTEM_H
00014 
00015 #include "Template.h"
00016 
00017 
00021 class XSIEXPORT CSLCoordinateSystem
00022     : public CSLTemplate
00023 {
00024 public:
00028     enum EHandRotation
00029     {
00030         SI_LEFT_HANDED,     
00031         SI_RIGHT_HANDED,    
00032     };
00033 
00037     enum EUOrientation
00038     {
00039         SI_RIGHT_U,         
00040         SI_LEFT_U,          
00041     };
00042 
00046     enum EVOrientation
00047     {
00048         SI_DOWN_V,          
00049         SI_UP_V,            
00050     };
00051 
00055     enum EAxisOrientation
00056     {
00057         SI_RIGHT,           
00058         SI_LEFT,            
00059         SI_UP,              
00060         SI_DOWN,            
00061         SI_IN,              
00062         SI_OUT,             
00063     };
00064 
00068     enum ECoordinateSystemStyle
00069     {
00070         SI_SOFTIMAGE_3D,
00071         SI_D3D,
00072         SI_PLAYSTATION,
00073         SI_NINTENDO,
00074     };
00075 
00082     CSLCoordinateSystem(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00083 
00086     virtual ~CSLCoordinateSystem();
00087 
00091     EHandRotation           GetHandRotation() { return m_HandRotation; }
00092 
00097     SI_Void                 SetHandRotation(EHandRotation in_Type) { m_HandRotation = in_Type; }
00098 
00102     EUOrientation           GetUAxisOrientation() { return m_UAxis; }
00103 
00108     SI_Void                 SetUAxisOrientation(EUOrientation in_Type) { m_UAxis = in_Type; }
00109 
00113     EVOrientation           GetVAxisOrientation() { return m_VAxis; }
00114 
00119     SI_Void                 SetVAxisOrientation(EVOrientation in_Type) { m_VAxis = in_Type; }
00120 
00124     EAxisOrientation        GetXAxisOrientation() { return m_XAxis; }
00125 
00130     SI_Void                 SetXAxisOrientation(EAxisOrientation in_Type) { m_XAxis = in_Type; }
00131 
00135     EAxisOrientation        GetYAxisOrientation() { return m_YAxis; }
00136 
00141     SI_Void                 SetYAxisOrientation(EAxisOrientation in_Type) { m_YAxis = in_Type; }
00142 
00146     EAxisOrientation        GetZAxisOrientation() { return m_ZAxis; }
00147 
00152     SI_Void                 SetZAxisOrientation(EAxisOrientation in_Type) { m_ZAxis = in_Type; }
00153 
00158     SI_Void                 SetCoordinateSystemStyle(ECoordinateSystemStyle in_Style);
00159 
00163     virtual ETemplateType   Type() { return SI_COORDINATE_SYSTEM; }
00164 
00165 private:
00166     CSLEnumProxy<EHandRotation, SI_RIGHT_HANDED>    m_HandRotation;
00167     CSLEnumProxy<EUOrientation, SI_LEFT>            m_UAxis;
00168     CSLEnumProxy<EVOrientation, SI_UP>              m_VAxis;
00169     CSLEnumProxy<EAxisOrientation, SI_OUT>          m_XAxis;
00170     CSLEnumProxy<EAxisOrientation, SI_OUT>          m_YAxis;
00171     CSLEnumProxy<EAxisOrientation, SI_OUT>          m_ZAxis;
00172 };
00173 
00174 #endif