00001 /**************************************************************************************** 00002 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS". 00003 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 00004 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 00005 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 00006 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 00007 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 00008 00009 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 00010 00011 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 00012 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other 00013 trademarks contained herein are the property of their respective owners. 00014 ****************************************************************************************/ 00015 00016 #ifndef _COLLADAMODEL_H 00017 #define _COLLADAMODEL_H 00018 00019 #include "Template.h" 00020 #include "Logger.h" 00021 #include "Scene.h" 00022 #include "COLLADATemplate.h" 00023 #include "Model.h" 00024 00025 00026 class CSLModel; 00027 class CSLAmbience; 00028 class CSLAngle; 00029 class CSLCoordinateSystem; 00030 class CSLFileInfo; 00031 class CSLSceneInfo; 00032 class CSLEnvelopeList; 00033 class CSLMaterialLibrary; 00034 class CSLFog; 00035 class CSLActionFCurve; 00036 class CSLFCurve; 00037 class CSLTransform; 00038 class CSLAction; 00039 class CSLShapeAnimation; 00040 class CSLVisibility; 00041 class CSLXSIMaterial; 00042 class CSLImageLibrary; 00043 class CSLImage; 00044 class CSLXSIShader; 00045 class CSLBaseMaterial; 00046 00052 class XSIEXPORT CSLCOLLADAModel : public CSLModel 00053 { 00054 public: 00056 // Construction/destruction 00058 00065 CSLCOLLADAModel(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00066 00068 virtual ~CSLCOLLADAModel(); 00069 00070 00074 virtual SI_Error Fix(); 00075 00079 virtual SI_Error Synchronize(); 00080 00084 virtual CSLModel* AddModel(); 00085 00089 virtual CSLModel* AddPointLight(); 00090 00094 virtual CSLModel* AddDirectionalLight(); 00095 00099 virtual CSLModel* AddInfiniteLight(); 00100 00104 virtual CSLModel* AddSpotLight(); 00105 00109 virtual CSLModel* AddCamera(); 00110 00114 virtual CSLModel* AddXSIMesh(); 00115 00119 virtual CSLModel* AddXSICamera(); 00120 00124 virtual CSLModel* AddInstance(); 00125 00130 CCOLLADATemplate* FindInstanceMaterial(char *in_pName); 00131 00136 virtual const SI_Char* GetParameterName(CSLAnimatableType* in_pParameter); 00137 00142 const char* GetInstanceTarget(char* in_pSymbol); 00143 00148 const char* GetInstanceSymbol(char* in_pTarget); 00149 00153 virtual CSLMixer* CreateMixer(); 00154 00158 void SetTechniqueCommon(CCOLLADATemplate* in_pTechniqueCommon) 00159 { 00160 m_pTechniqueCommon = in_pTechniqueCommon; 00161 } 00162 00167 void AddInstanceMaterialSymbol(char* in_pSymbol, char* in_pTarget); 00168 00169 protected: 00170 00171 private: 00172 // private structure for symbol->target association in instance_material elements 00173 struct COLLADAInstanceMaterial 00174 { 00175 SI_Char* m_Symbol; 00176 SI_Char* m_Target; 00177 }; 00178 00179 CSLTemplate::ERotationOrder GetRotationOrder(CdotXSITemplates* in_pRotations); 00180 00181 CCOLLADATemplate* AddInstanceMaterial(CCOLLADATemplate *in_pTechniqueCommon, CSLBaseMaterial* in_pMaterial); 00182 CCOLLADATemplate* AddInstanceMaterialName(CCOLLADATemplate *in_pTechniqueCommon, CSIBCString in_szMaterialName); 00183 00184 00185 CCOLLADATemplate* m_pTechniqueCommon; 00186 CSIBCArray<COLLADAInstanceMaterial> m_InstanceMaterialSymbols; 00187 }; 00188 00189 #endif