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