1 /* 2 Copyright (c) 2008-2009 NetAllied Systems GmbH 3 4 This file is part of COLLADAMaya. 5 6 Portions of the code are: 7 Copyright (c) 2005-2007 Feeling Software Inc. 8 Copyright (c) 2005-2007 Sony Computer Entertainment America 9 Copyright (c) 2004-2005 Alias Systems Corp. 10 11 Licensed under the MIT Open Source License, 12 for details please see LICENSE file or the website 13 http://www.opensource.org/licenses/mit-license.php 14 */ 15 16 #ifndef __COLLADA_MAYA_SHADERFX_SHADER_EXPORTER_H__ 17 #define __COLLADA_MAYA_SHADERFX_SHADER_EXPORTER_H__ 18 19 #if MAYA_API_VERSION >= 201500 20 21 #include "COLLADAMayaPrerequisites.h" 22 #include "COLLADAMayaDocumentExporter.h" 23 24 #include "COLLADASWEffectProfile.h" 25 26 #include <maya/MFnDependencyNode.h> 27 #include <maya/MFnNumericData.h> 28 29 namespace COLLADAMaya 30 { 31 32 class ShaderFXShaderExporter 33 { 34 friend class ShaderFXAttributeExporter; 35 friend class ShaderFXSamplerAndSurfaceExporter; 36 37 private: 38 39 /** Document exporter */ 40 DocumentExporter& mDocumentExporter; 41 42 /** Stream writer */ 43 COLLADASW::StreamWriter & mStreamWriter; 44 45 /** The currently used collada effect profile to write the data. */ 46 COLLADASW::EffectProfile& mEffectProfile; 47 48 /** Current texture index */ 49 int mTextureIndex; 50 51 /** Current effect id */ 52 String mEffectId; 53 54 public: 55 56 ShaderFXShaderExporter(DocumentExporter & documentExporter, COLLADASW::EffectProfile & effectProfile, const String & effectId); 57 ~ShaderFXShaderExporter()58 virtual ~ShaderFXShaderExporter() {} 59 60 /** Export a ShaderFX shader node. */ 61 void exportShaderFXShader(MObject & shaderObject ); 62 63 64 private: 65 66 template<typename Method> 67 void parseAttributes(const MFnDependencyNode & node, Method method); 68 69 void exportSamplerAndSurface(const MFnDependencyNode & node, const MObject & attr); 70 void exportSamplerAndSurfaceInner(const MString & filename); 71 void exportTexture(const MString & filename); 72 }; 73 } 74 #endif // #if MAYA_API_VERSION >= 201500 75 76 #endif // __COLLADA_MAYA_SHADERFX_SHADER_EXPORTER_H__ 77