1 /*
2     Copyright (c) 2008-2009 NetAllied Systems GmbH
3 
4     This file is part of MayaDataModel.
5 
6     Licensed under the MIT Open Source License,
7     for details please see LICENSE file or the website
8     http://www.opensource.org/licenses/mit-license.php
9 */
10 #ifndef __MayaDM_TRIPLESHADINGSWITCH_H__
11 #define __MayaDM_TRIPLESHADINGSWITCH_H__
12 #include "MayaDMTypes.h"
13 #include "MayaDMConnectables.h"
14 #include "MayaDMBaseShadingSwitch.h"
15 namespace MayaDM
16 {
17 class TripleShadingSwitch : public BaseShadingSwitch
18 {
19 public:
20 	struct Input{
21 		float3 inTriple;
writeInput22 		void write(FILE* file) const
23 		{
24 			inTriple.write(file);
25 			fprintf(file, " ");
26 		}
27 	};
28 public:
29 
TripleShadingSwitch()30 	TripleShadingSwitch():BaseShadingSwitch(){}
31 	TripleShadingSwitch(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
32 		:BaseShadingSwitch(file, name, parent, "tripleShadingSwitch", shared, create){}
~TripleShadingSwitch()33 	virtual ~TripleShadingSwitch(){}
34 
setInput(size_t i_i,const Input & i_)35 	void setInput(size_t i_i,const Input& i_)
36 	{
37 		fprintf(mFile,"\tsetAttr \".i[%i]\" ",i_i);
38 		i_.write(mFile);
39 		fprintf(mFile,";\n");
40 	}
setInput(size_t i_start,size_t i_end,Input * i_)41 	void setInput(size_t i_start,size_t i_end,Input* i_)
42 	{
43 		fprintf(mFile,"\tsetAttr \".i[%i:%i]\" ", i_start,i_end);
44 		size_t size = (i_end-i_start)*1+1;
45 		for(size_t i=0;i<size;++i)
46 		{
47 			i_[i].write(mFile);
48 			fprintf(mFile,"\n");
49 		}
50 		fprintf(mFile,";\n");
51 	}
startInput(size_t i_start,size_t i_end)52 	void startInput(size_t i_start,size_t i_end)const
53 	{
54 		fprintf(mFile,"\tsetAttr \".i[%i:%i]\"",i_start,i_end);
55 		fprintf(mFile," -type \"Input\" ");
56 	}
appendInput(const Input & i)57 	void appendInput(const Input& i)const
58 	{
59 		fprintf(mFile," ");
60 		i.write(mFile);
61 	}
endInput()62 	void endInput()const
63 	{
64 		fprintf(mFile,";\n");
65 	}
setInTriple(size_t i_i,const float3 & it)66 	void setInTriple(size_t i_i,const float3& it)
67 	{
68 		fprintf(mFile,"\tsetAttr \".i[%i].it\" -type \"float3\" ",i_i);
69 		it.write(mFile);
70 		fprintf(mFile,";\n");
71 	}
setInComp1(size_t i_i,float ic1)72 	void setInComp1(size_t i_i,float ic1)
73 	{
74 		if(ic1 == 0.0) return;
75 		fprintf(mFile,"\tsetAttr \".i[%i].it.ic1\" %f;\n", i_i,ic1);
76 	}
setInComp2(size_t i_i,float ic2)77 	void setInComp2(size_t i_i,float ic2)
78 	{
79 		if(ic2 == 0.0) return;
80 		fprintf(mFile,"\tsetAttr \".i[%i].it.ic2\" %f;\n", i_i,ic2);
81 	}
setInComp3(size_t i_i,float ic3)82 	void setInComp3(size_t i_i,float ic3)
83 	{
84 		if(ic3 == 0.0) return;
85 		fprintf(mFile,"\tsetAttr \".i[%i].it.ic3\" %f;\n", i_i,ic3);
86 	}
setDefault(const float3 & def)87 	void setDefault(const float3& def)
88 	{
89 		if(def == float3(0.8f,0.8f,0.8f)) return;
90 		fprintf(mFile,"\tsetAttr \".def\" -type \"float3\" ");
91 		def.write(mFile);
92 		fprintf(mFile,";\n");
93 	}
setDefComp1(float dc1)94 	void setDefComp1(float dc1)
95 	{
96 		if(dc1 == 0.0) return;
97 		fprintf(mFile,"\tsetAttr \".def.dc1\" %f;\n", dc1);
98 	}
setDefComp2(float dc2)99 	void setDefComp2(float dc2)
100 	{
101 		if(dc2 == 0.0) return;
102 		fprintf(mFile,"\tsetAttr \".def.dc2\" %f;\n", dc2);
103 	}
setDefComp3(float dc3)104 	void setDefComp3(float dc3)
105 	{
106 		if(dc3 == 0.0) return;
107 		fprintf(mFile,"\tsetAttr \".def.dc3\" %f;\n", dc3);
108 	}
getInput(size_t i_i)109 	void getInput(size_t i_i)const
110 	{
111 		fprintf(mFile,"\"%s.i[%i]\"",mName.c_str(),i_i);
112 	}
getInput()113 	void getInput()const
114 	{
115 
116 		fprintf(mFile,"\"%s.i\"",mName.c_str());
117 	}
getInTriple(size_t i_i)118 	void getInTriple(size_t i_i)const
119 	{
120 		fprintf(mFile,"\"%s.i[%i].it\"",mName.c_str(),i_i);
121 	}
getInTriple()122 	void getInTriple()const
123 	{
124 
125 		fprintf(mFile,"\"%s.i.it\"",mName.c_str());
126 	}
getInComp1(size_t i_i)127 	void getInComp1(size_t i_i)const
128 	{
129 		fprintf(mFile,"\"%s.i[%i].it.ic1\"",mName.c_str(),i_i);
130 	}
getInComp1()131 	void getInComp1()const
132 	{
133 
134 		fprintf(mFile,"\"%s.i.it.ic1\"",mName.c_str());
135 	}
getInComp2(size_t i_i)136 	void getInComp2(size_t i_i)const
137 	{
138 		fprintf(mFile,"\"%s.i[%i].it.ic2\"",mName.c_str(),i_i);
139 	}
getInComp2()140 	void getInComp2()const
141 	{
142 
143 		fprintf(mFile,"\"%s.i.it.ic2\"",mName.c_str());
144 	}
getInComp3(size_t i_i)145 	void getInComp3(size_t i_i)const
146 	{
147 		fprintf(mFile,"\"%s.i[%i].it.ic3\"",mName.c_str(),i_i);
148 	}
getInComp3()149 	void getInComp3()const
150 	{
151 
152 		fprintf(mFile,"\"%s.i.it.ic3\"",mName.c_str());
153 	}
getInShape(size_t i_i)154 	void getInShape(size_t i_i)const
155 	{
156 		fprintf(mFile,"\"%s.i[%i].is\"",mName.c_str(),i_i);
157 	}
getInShape()158 	void getInShape()const
159 	{
160 
161 		fprintf(mFile,"\"%s.i.is\"",mName.c_str());
162 	}
getDefault()163 	void getDefault()const
164 	{
165 		fprintf(mFile,"\"%s.def\"",mName.c_str());
166 	}
getDefComp1()167 	void getDefComp1()const
168 	{
169 		fprintf(mFile,"\"%s.def.dc1\"",mName.c_str());
170 	}
getDefComp2()171 	void getDefComp2()const
172 	{
173 		fprintf(mFile,"\"%s.def.dc2\"",mName.c_str());
174 	}
getDefComp3()175 	void getDefComp3()const
176 	{
177 		fprintf(mFile,"\"%s.def.dc3\"",mName.c_str());
178 	}
getOutput()179 	void getOutput()const
180 	{
181 		fprintf(mFile,"\"%s.out\"",mName.c_str());
182 	}
getOutComp1()183 	void getOutComp1()const
184 	{
185 		fprintf(mFile,"\"%s.out.oc1\"",mName.c_str());
186 	}
getOutComp2()187 	void getOutComp2()const
188 	{
189 		fprintf(mFile,"\"%s.out.oc2\"",mName.c_str());
190 	}
getOutComp3()191 	void getOutComp3()const
192 	{
193 		fprintf(mFile,"\"%s.out.oc3\"",mName.c_str());
194 	}
195 protected:
196 	TripleShadingSwitch(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
BaseShadingSwitch(file,name,parent,nodeType,shared,create)197 		:BaseShadingSwitch(file, name, parent, nodeType, shared, create) {}
198 
199 };
200 }//namespace MayaDM
201 #endif//__MayaDM_TRIPLESHADINGSWITCH_H__
202