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 _COLLADAMODEL_H 00013 #define _COLLADAMODEL_H 00014 00015 #include "Template.h" 00016 #include "Logger.h" 00017 #include "Scene.h" 00018 #include "COLLADATemplate.h" 00019 #include "Model.h" 00020 00021 00022 class CSLModel; 00023 class CSLAmbience; 00024 class CSLAngle; 00025 class CSLCoordinateSystem; 00026 class CSLFileInfo; 00027 class CSLSceneInfo; 00028 class CSLEnvelopeList; 00029 class CSLMaterialLibrary; 00030 class CSLFog; 00031 class CSLActionFCurve; 00032 class CSLFCurve; 00033 class CSLTransform; 00034 class CSLAction; 00035 class CSLShapeAnimation; 00036 class CSLVisibility; 00037 class CSLXSIMaterial; 00038 class CSLImageLibrary; 00039 class CSLImage; 00040 class CSLXSIShader; 00041 class CSLBaseMaterial; 00042 00048 class XSIEXPORT CSLCOLLADAModel : public CSLModel 00049 { 00050 public: 00052 // Construction/destruction 00054 00061 CSLCOLLADAModel(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00062 00064 virtual ~CSLCOLLADAModel(); 00065 00066 00070 virtual SI_Error Fix(); 00071 00075 virtual SI_Error Synchronize(); 00076 00080 virtual CSLModel* AddModel(); 00081 00085 virtual CSLModel* AddPointLight(); 00086 00090 virtual CSLModel* AddDirectionalLight(); 00091 00095 virtual CSLModel* AddInfiniteLight(); 00096 00100 virtual CSLModel* AddSpotLight(); 00101 00105 virtual CSLModel* AddCamera(); 00106 00110 virtual CSLModel* AddXSIMesh(); 00111 00115 virtual CSLModel* AddXSICamera(); 00116 00120 virtual CSLModel* AddInstance(); 00121 00126 CCOLLADATemplate* FindInstanceMaterial(char *in_pName); 00127 00132 virtual const SI_Char* GetParameterName(CSLAnimatableType* in_pParameter); 00133 00138 const char* GetInstanceTarget(char* in_pSymbol); 00139 00144 const char* GetInstanceSymbol(char* in_pTarget); 00145 00149 virtual CSLMixer* CreateMixer(); 00150 00154 void SetTechniqueCommon(CCOLLADATemplate* in_pTechniqueCommon) 00155 { 00156 m_pTechniqueCommon = in_pTechniqueCommon; 00157 } 00158 00163 void AddInstanceMaterialSymbol(char* in_pSymbol, char* in_pTarget); 00164 00165 protected: 00166 00167 private: 00168 // private structure for symbol->target association in instance_material elements 00169 struct COLLADAInstanceMaterial 00170 { 00171 SI_Char* m_Symbol; 00172 SI_Char* m_Target; 00173 }; 00174 00175 CSLTemplate::ERotationOrder GetRotationOrder(CdotXSITemplates* in_pRotations); 00176 00177 CCOLLADATemplate* AddInstanceMaterial(CCOLLADATemplate *in_pTechniqueCommon, CSLBaseMaterial* in_pMaterial); 00178 CCOLLADATemplate* AddInstanceMaterialName(CCOLLADATemplate *in_pTechniqueCommon, CSIBCString in_szMaterialName); 00179 00180 00181 CCOLLADATemplate* m_pTechniqueCommon; 00182 CSIBCArray<COLLADAInstanceMaterial> m_InstanceMaterialSymbols; 00183 }; 00184 00185 #endif