Transform.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 _TRANSFORM_H
00013 #define _TRANSFORM_H
00014 
00015 #include "Template.h"
00016 
00022 class XSIEXPORT CSLTransform
00023     : public CSLTemplate
00024 {
00025 public:
00026     CSLTransform(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00027     virtual ~CSLTransform();
00028 
00032     CSIBCMatrix4x4 GetMatrix();
00033 
00038     SI_Void SetMatrix(CSIBCMatrix4x4 &in_rValue);
00039 
00043     CSIBCVector3D GetEulerRotation();
00044 
00049     SI_Void SetEulerRotation(CSIBCVector3D &in_rValue);
00050 
00054     CSIBCVector3D GetScale();
00055 
00060     SI_Void SetScale(CSIBCVector3D &in_rValue);
00061 
00065     CSIBCVector3D GetTranslation();
00066 
00071     SI_Void SetTranslation(CSIBCVector3D &in_rValue);
00072 
00076     SI_Error ComputeLocalMatrix();
00077 
00081     SI_Error ComputeGlobalMatrix();
00082 
00086     CSIBCMatrix4x4 &GetGlobalMatrix();
00087 
00092     SI_Void SetGlobalMatrix(CSIBCMatrix4x4 &in_rValue);
00093 
00094     virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00095     virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00096     virtual ETemplateType Type();
00097 
00098 private:
00099     CSLVector3DProxy m_Scale;
00100     CSLVector3DProxy m_Rotation;
00101     CSLVector3DProxy m_Translation;
00102     CSIBCMatrix4x4 m_TransformMatrix;
00103     CSIBCMatrix4x4 m_GlobalMatrix;
00104 
00105     void *m_pReserved;  // reserved for future extension
00106 };
00107 
00108 #endif