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