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_POLYAPPENDVERTEX_H__ 11 #define __MayaDM_POLYAPPENDVERTEX_H__ 12 #include "MayaDMTypes.h" 13 #include "MayaDMConnectables.h" 14 #include "MayaDMPolyModifier.h" 15 namespace MayaDM 16 { 17 class PolyAppendVertex : public PolyModifier 18 { 19 public: 20 public: 21 PolyAppendVertex()22 PolyAppendVertex():PolyModifier(){} 23 PolyAppendVertex(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true) 24 :PolyModifier(file, name, parent, "polyAppendVertex", shared, create){} ~PolyAppendVertex()25 virtual ~PolyAppendVertex(){} 26 setVertices(size_t v_i,const float3 & v)27 void setVertices(size_t v_i,const float3& v) 28 { 29 fprintf(mFile,"\tsetAttr \".v[%i]\" -type \"float3\" ",v_i); 30 v.write(mFile); 31 fprintf(mFile,";\n"); 32 } setVertices(size_t v_start,size_t v_end,float * v)33 void setVertices(size_t v_start,size_t v_end,float* v) 34 { 35 fprintf(mFile,"\tsetAttr \".v[%i:%i]\" ", v_start,v_end); 36 size_t size = (v_end-v_start)*3+3; 37 for(size_t i=0;i<size;++i) 38 { 39 fprintf(mFile,"%f",v[i]); 40 if(i+1<size) fprintf(mFile," "); 41 } 42 fprintf(mFile,";\n"); 43 } startVertices(size_t v_start,size_t v_end)44 void startVertices(size_t v_start,size_t v_end)const 45 { 46 fprintf(mFile,"\tsetAttr \".v[%i:%i]\"",v_start,v_end); 47 } appendVertices(float v)48 void appendVertices(float v)const 49 { 50 fprintf(mFile," %f",v); 51 } endVertices()52 void endVertices()const 53 { 54 fprintf(mFile,";\n"); 55 } setVtxx(size_t v_i,float vx)56 void setVtxx(size_t v_i,float vx) 57 { 58 if(vx == 0) return; 59 fprintf(mFile,"\tsetAttr \".v[%i].vx\" %f;\n", v_i,vx); 60 } setVtxy(size_t v_i,float vy)61 void setVtxy(size_t v_i,float vy) 62 { 63 if(vy == 0) return; 64 fprintf(mFile,"\tsetAttr \".v[%i].vy\" %f;\n", v_i,vy); 65 } setVtxz(size_t v_i,float vz)66 void setVtxz(size_t v_i,float vz) 67 { 68 if(vz == 0) return; 69 fprintf(mFile,"\tsetAttr \".v[%i].vz\" %f;\n", v_i,vz); 70 } setDesc(size_t d_i,int d)71 void setDesc(size_t d_i,int d) 72 { 73 if(d == 0) return; 74 fprintf(mFile,"\tsetAttr \".d[%i]\" %i;\n", d_i,d); 75 } setDesc(size_t d_start,size_t d_end,int * d)76 void setDesc(size_t d_start,size_t d_end,int* d) 77 { 78 fprintf(mFile,"\tsetAttr \".d[%i:%i]\" ", d_start,d_end); 79 size_t size = (d_end-d_start)*1+1; 80 for(size_t i=0;i<size;++i) 81 { 82 fprintf(mFile,"%i",d[i]); 83 if(i+1<size) fprintf(mFile," "); 84 } 85 fprintf(mFile,";\n"); 86 } startDesc(size_t d_start,size_t d_end)87 void startDesc(size_t d_start,size_t d_end)const 88 { 89 fprintf(mFile,"\tsetAttr \".d[%i:%i]\"",d_start,d_end); 90 } appendDesc(int d)91 void appendDesc(int d)const 92 { 93 fprintf(mFile," %i",d); 94 } endDesc()95 void endDesc()const 96 { 97 fprintf(mFile,";\n"); 98 } setTexture(unsigned int tx)99 void setTexture(unsigned int tx) 100 { 101 if(tx == 0) return; 102 fprintf(mFile,"\tsetAttr \".tx\" %i;\n", tx); 103 } getVertices(size_t v_i)104 void getVertices(size_t v_i)const 105 { 106 fprintf(mFile,"\"%s.v[%i]\"",mName.c_str(),v_i); 107 } getVertices()108 void getVertices()const 109 { 110 111 fprintf(mFile,"\"%s.v\"",mName.c_str()); 112 } getVtxx(size_t v_i)113 void getVtxx(size_t v_i)const 114 { 115 fprintf(mFile,"\"%s.v[%i].vx\"",mName.c_str(),v_i); 116 } getVtxx()117 void getVtxx()const 118 { 119 120 fprintf(mFile,"\"%s.v.vx\"",mName.c_str()); 121 } getVtxy(size_t v_i)122 void getVtxy(size_t v_i)const 123 { 124 fprintf(mFile,"\"%s.v[%i].vy\"",mName.c_str(),v_i); 125 } getVtxy()126 void getVtxy()const 127 { 128 129 fprintf(mFile,"\"%s.v.vy\"",mName.c_str()); 130 } getVtxz(size_t v_i)131 void getVtxz(size_t v_i)const 132 { 133 fprintf(mFile,"\"%s.v[%i].vz\"",mName.c_str(),v_i); 134 } getVtxz()135 void getVtxz()const 136 { 137 138 fprintf(mFile,"\"%s.v.vz\"",mName.c_str()); 139 } getDesc(size_t d_i)140 void getDesc(size_t d_i)const 141 { 142 fprintf(mFile,"\"%s.d[%i]\"",mName.c_str(),d_i); 143 } getDesc()144 void getDesc()const 145 { 146 147 fprintf(mFile,"\"%s.d\"",mName.c_str()); 148 } getTexture()149 void getTexture()const 150 { 151 fprintf(mFile,"\"%s.tx\"",mName.c_str()); 152 } 153 protected: 154 PolyAppendVertex(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true) PolyModifier(file,name,parent,nodeType,shared,create)155 :PolyModifier(file, name, parent, nodeType, shared, create) {} 156 157 }; 158 }//namespace MayaDM 159 #endif//__MayaDM_POLYAPPENDVERTEX_H__ 160