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