COLLADAModel.h

Go to the documentation of this file.
00001 //***************************************************************************************
00002 // File supervisor: Crosswalk team
00012 //***************************************************************************************
00013 
00014 #ifndef _COLLADAMODEL_H
00015 #define _COLLADAMODEL_H
00016 
00017 #include "Template.h"
00018 #include "Logger.h"
00019 #include "Scene.h"
00020 #include "COLLADATemplate.h"
00021 #include "Model.h"
00022 
00023 
00024 class CSLModel;
00025 class CSLAmbience;
00026 class CSLAngle;
00027 class CSLCoordinateSystem;
00028 class CSLFileInfo;
00029 class CSLSceneInfo;
00030 class CSLEnvelopeList;
00031 class CSLMaterialLibrary;
00032 class CSLFog;
00033 class CSLActionFCurve;
00034 class CSLFCurve;
00035 class CSLTransform;
00036 class CSLAction;
00037 class CSLShapeAnimation;
00038 class CSLVisibility;
00039 class CSLXSIMaterial;
00040 class CSLImageLibrary;
00041 class CSLImage;
00042 class CSLXSIShader;
00043 class CSLBaseMaterial;
00044 
00047 class XSIEXPORT CSLCOLLADAModel : public CSLModel
00048 {
00049 public:
00051     // Construction/destruction
00053 
00060     CSLCOLLADAModel(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00061 
00063     virtual ~CSLCOLLADAModel();
00064 
00065 
00069     virtual SI_Error Fix();
00070 
00074     virtual SI_Error Synchronize();
00075 
00079     virtual CSLModel*   AddModel();
00080 
00084     virtual CSLModel*   AddPointLight();
00085 
00089     virtual CSLModel*   AddDirectionalLight();
00090 
00094     virtual CSLModel*   AddInfiniteLight();
00095 
00099     virtual CSLModel*   AddSpotLight();
00100 
00104     virtual CSLModel*   AddCamera();
00105 
00109     virtual CSLModel*   AddXSIMesh();
00110 
00114     virtual CSLModel*   AddXSICamera();
00115 
00119     virtual CSLModel*   AddInstance();
00120 
00125     CCOLLADATemplate*   FindInstanceMaterial(char *in_pName);
00126 
00131     virtual const SI_Char* GetParameterName(CSLAnimatableType* in_pParameter);
00132 
00137     const char* GetInstanceTarget(char* in_pSymbol);
00138 
00143     const char* GetInstanceSymbol(char* in_pTarget);
00144 
00148     virtual CSLMixer* CreateMixer();
00149 
00153     void SetTechniqueCommon(CCOLLADATemplate* in_pTechniqueCommon)
00154     {
00155         m_pTechniqueCommon = in_pTechniqueCommon;
00156     }
00157 
00162     void AddInstanceMaterialSymbol(char* in_pSymbol, char* in_pTarget);
00163 
00164 protected:
00165 
00166 private:
00167     // private structure for symbol->target association in instance_material elements
00168     struct COLLADAInstanceMaterial
00169     {
00170         SI_Char* m_Symbol;
00171         SI_Char* m_Target;
00172     };
00173 
00174     CSLTemplate::ERotationOrder GetRotationOrder(CdotXSITemplates* in_pRotations);
00175 
00176     CCOLLADATemplate* AddInstanceMaterial(CCOLLADATemplate *in_pTechniqueCommon, CSLBaseMaterial* in_pMaterial);
00177     CCOLLADATemplate* AddInstanceMaterialName(CCOLLADATemplate *in_pTechniqueCommon, CSIBCString in_szMaterialName);
00178 
00179 
00180     CCOLLADATemplate* m_pTechniqueCommon;
00181     CSIBCArray<COLLADAInstanceMaterial>  m_InstanceMaterialSymbols;
00182 };
00183 
00184 #endif