CoordinateSystem.h

00001 //***************************************************************************************
00002 //
00003 // File supervisor: Softimage 3D Games & 3D Bridge team
00004 //
00005 // (c) Copyright 2001-2002 Avid Technology, Inc. . All rights reserved.
00006 //
00007 //***************************************************************************************
00008 
00009 /****************************************************************************************
00010 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS".
00011 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE
00012 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
00013 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00014 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
00015 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE .
00016 
00017 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 
00018 
00019 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 
00020 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other
00021 trademarks contained herein are the property of their respective owners. 
00022 ****************************************************************************************/
00023 
00024 #ifndef _COORDINATESYSTEM_H
00025 #define _COORDINATESYSTEM_H
00026 
00027 #include "Template.h"
00028 
00029 
00031 class XSIEXPORT CSLCoordinateSystem
00032     : public CSLTemplate
00033 {
00034 public:
00038     enum EHandRotation
00039     {
00040         SI_LEFT_HANDED,     
00041         SI_RIGHT_HANDED,    
00042     };
00043 
00047     enum EUOrientation
00048     {
00049         SI_RIGHT_U,         
00050         SI_LEFT_U,          
00051     };
00052 
00056     enum EVOrientation
00057     {
00058         SI_DOWN_V,          
00059         SI_UP_V,            
00060     };
00061 
00065     enum EAxisOrientation
00066     {
00067         SI_RIGHT,           
00068         SI_LEFT,            
00069         SI_UP,              
00070         SI_DOWN,            
00071         SI_IN,              
00072         SI_OUT,             
00073     };
00074 
00078     enum ECoordinateSystemStyle
00079     {
00080         SI_SOFTIMAGE_3D,
00081         SI_D3D,
00082         SI_PLAYSTATION,
00083         SI_NINTENDO,
00084     };
00085 
00092     CSLCoordinateSystem(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00093 
00096     virtual ~CSLCoordinateSystem();
00097 
00101     EHandRotation           GetHandRotation() { return m_HandRotation; }
00102 
00107     SI_Void                 SetHandRotation(EHandRotation in_Type) { m_HandRotation = in_Type; }
00108 
00112     EUOrientation           GetUAxisOrientation() { return m_UAxis; }
00113 
00118     SI_Void                 SetUAxisOrientation(EUOrientation in_Type) { m_UAxis = in_Type; }
00119 
00123     EVOrientation           GetVAxisOrientation() { return m_VAxis; }
00124 
00129     SI_Void                 SetVAxisOrientation(EVOrientation in_Type) { m_VAxis = in_Type; }
00130 
00134     EAxisOrientation        GetXAxisOrientation() { return m_XAxis; }
00135 
00140     SI_Void                 SetXAxisOrientation(EAxisOrientation in_Type) { m_XAxis = in_Type; }
00141 
00145     EAxisOrientation        GetYAxisOrientation() { return m_YAxis; }
00146 
00151     SI_Void                 SetYAxisOrientation(EAxisOrientation in_Type) { m_YAxis = in_Type; }
00152 
00156     EAxisOrientation        GetZAxisOrientation() { return m_ZAxis; }
00157 
00162     SI_Void                 SetZAxisOrientation(EAxisOrientation in_Type) { m_ZAxis = in_Type; }
00163 
00168     SI_Void                 SetCoordinateSystemStyle(ECoordinateSystemStyle in_Style);
00169 
00173     virtual ETemplateType   Type() { return SI_COORDINATE_SYSTEM; }
00174 
00175 private:
00176     CSLEnumProxy<EHandRotation, SI_RIGHT_HANDED>    m_HandRotation;
00177     CSLEnumProxy<EUOrientation, SI_LEFT>            m_UAxis;
00178     CSLEnumProxy<EVOrientation, SI_UP>              m_VAxis;
00179     CSLEnumProxy<EAxisOrientation, SI_OUT>          m_XAxis;
00180     CSLEnumProxy<EAxisOrientation, SI_OUT>          m_YAxis;
00181     CSLEnumProxy<EAxisOrientation, SI_OUT>          m_ZAxis;
00182 };
00183 
00184 #endif