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_PARENTCONSTRAINT_H__
11 #define __MayaDM_PARENTCONSTRAINT_H__
12 #include "MayaDMTypes.h"
13 #include "MayaDMConnectables.h"
14 #include "MayaDMConstraint.h"
15 namespace MayaDM
16 {
17 class ParentConstraint : public Constraint
18 {
19 public:
20 	struct Target{
21 		matrix targetParentMatrix;
22 		double targetWeight;
23 		double3 targetRotateCached;
24 		double3 targetTranslate;
25 		double3 targetRotatePivot;
26 		double3 targetRotateTranslate;
27 		double3 targetOffsetTranslate;
28 		double3 targetRotate;
29 		unsigned int targetRotateOrder;
30 		double3 targetJointOrient;
31 		double3 targetOffsetRotate;
32 		double3 targetScale;
writeTarget33 		void write(FILE* file) const
34 		{
35 			targetParentMatrix.write(file);
36 			fprintf(file, " ");
37 			fprintf(file,"%f ", targetWeight);
38 			targetRotateCached.write(file);
39 			fprintf(file, " ");
40 			targetTranslate.write(file);
41 			fprintf(file, " ");
42 			targetRotatePivot.write(file);
43 			fprintf(file, " ");
44 			targetRotateTranslate.write(file);
45 			fprintf(file, " ");
46 			targetOffsetTranslate.write(file);
47 			fprintf(file, " ");
48 			targetRotate.write(file);
49 			fprintf(file, " ");
50 			fprintf(file,"%i ", targetRotateOrder);
51 			targetJointOrient.write(file);
52 			fprintf(file, " ");
53 			targetOffsetRotate.write(file);
54 			fprintf(file, " ");
55 			targetScale.write(file);
56 		}
57 	};
58 public:
59 
ParentConstraint()60 	ParentConstraint():Constraint(){}
61 	ParentConstraint(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
62 		:Constraint(file, name, parent, "parentConstraint", shared, create){}
~ParentConstraint()63 	virtual ~ParentConstraint(){}
64 
setTarget(size_t tg_i,const Target & tg)65 	void setTarget(size_t tg_i,const Target& tg)
66 	{
67 		fprintf(mFile,"\tsetAttr \".tg[%i]\" ",tg_i);
68 		tg.write(mFile);
69 		fprintf(mFile,";\n");
70 	}
setTarget(size_t tg_start,size_t tg_end,Target * tg)71 	void setTarget(size_t tg_start,size_t tg_end,Target* tg)
72 	{
73 		fprintf(mFile,"\tsetAttr \".tg[%i:%i]\" ", tg_start,tg_end);
74 		size_t size = (tg_end-tg_start)*1+1;
75 		for(size_t i=0;i<size;++i)
76 		{
77 			tg[i].write(mFile);
78 			fprintf(mFile,"\n");
79 		}
80 		fprintf(mFile,";\n");
81 	}
startTarget(size_t tg_start,size_t tg_end)82 	void startTarget(size_t tg_start,size_t tg_end)const
83 	{
84 		fprintf(mFile,"\tsetAttr \".tg[%i:%i]\"",tg_start,tg_end);
85 		fprintf(mFile," -type \"Target\" ");
86 	}
appendTarget(const Target & tg)87 	void appendTarget(const Target& tg)const
88 	{
89 		fprintf(mFile," ");
90 		tg.write(mFile);
91 	}
endTarget()92 	void endTarget()const
93 	{
94 		fprintf(mFile,";\n");
95 	}
setTargetParentMatrix(size_t tg_i,const matrix & tpm)96 	void setTargetParentMatrix(size_t tg_i,const matrix& tpm)
97 	{
98 		if(tpm == identity) return;
99 		fprintf(mFile,"\tsetAttr \".tg[%i].tpm\" -type \"matrix\" ",tg_i);
100 		tpm.write(mFile);
101 		fprintf(mFile,";\n");
102 	}
setTargetWeight(size_t tg_i,double tw)103 	void setTargetWeight(size_t tg_i,double tw)
104 	{
105 		if(tw == 1.0) return;
106 		fprintf(mFile,"\tsetAttr \".tg[%i].tw\" %f;\n", tg_i,tw);
107 	}
setTargetRotateCached(size_t tg_i,const double3 & ctr)108 	void setTargetRotateCached(size_t tg_i,const double3& ctr)
109 	{
110 		fprintf(mFile,"\tsetAttr \".tg[%i].ctr\" -type \"double3\" ",tg_i);
111 		ctr.write(mFile);
112 		fprintf(mFile,";\n");
113 	}
setTargetRotateCachedX(size_t tg_i,double ctrx)114 	void setTargetRotateCachedX(size_t tg_i,double ctrx)
115 	{
116 		if(ctrx == 0) return;
117 		fprintf(mFile,"\tsetAttr \".tg[%i].ctr.ctrx\" %f;\n", tg_i,ctrx);
118 	}
setTargetRotateCachedY(size_t tg_i,double ctry)119 	void setTargetRotateCachedY(size_t tg_i,double ctry)
120 	{
121 		if(ctry == 0) return;
122 		fprintf(mFile,"\tsetAttr \".tg[%i].ctr.ctry\" %f;\n", tg_i,ctry);
123 	}
setTargetRotateCachedZ(size_t tg_i,double ctrz)124 	void setTargetRotateCachedZ(size_t tg_i,double ctrz)
125 	{
126 		if(ctrz == 0) return;
127 		fprintf(mFile,"\tsetAttr \".tg[%i].ctr.ctrz\" %f;\n", tg_i,ctrz);
128 	}
setTargetTranslate(size_t tg_i,const double3 & tt)129 	void setTargetTranslate(size_t tg_i,const double3& tt)
130 	{
131 		fprintf(mFile,"\tsetAttr \".tg[%i].tt\" -type \"double3\" ",tg_i);
132 		tt.write(mFile);
133 		fprintf(mFile,";\n");
134 	}
setTargetTranslateX(size_t tg_i,double ttx)135 	void setTargetTranslateX(size_t tg_i,double ttx)
136 	{
137 		if(ttx == 0) return;
138 		fprintf(mFile,"\tsetAttr \".tg[%i].tt.ttx\" %f;\n", tg_i,ttx);
139 	}
setTargetTranslateY(size_t tg_i,double tty)140 	void setTargetTranslateY(size_t tg_i,double tty)
141 	{
142 		if(tty == 0) return;
143 		fprintf(mFile,"\tsetAttr \".tg[%i].tt.tty\" %f;\n", tg_i,tty);
144 	}
setTargetTranslateZ(size_t tg_i,double ttz)145 	void setTargetTranslateZ(size_t tg_i,double ttz)
146 	{
147 		if(ttz == 0) return;
148 		fprintf(mFile,"\tsetAttr \".tg[%i].tt.ttz\" %f;\n", tg_i,ttz);
149 	}
setTargetRotatePivot(size_t tg_i,const double3 & trp)150 	void setTargetRotatePivot(size_t tg_i,const double3& trp)
151 	{
152 		fprintf(mFile,"\tsetAttr \".tg[%i].trp\" -type \"double3\" ",tg_i);
153 		trp.write(mFile);
154 		fprintf(mFile,";\n");
155 	}
setTargetRotatePivotX(size_t tg_i,double trpx)156 	void setTargetRotatePivotX(size_t tg_i,double trpx)
157 	{
158 		if(trpx == 0) return;
159 		fprintf(mFile,"\tsetAttr \".tg[%i].trp.trpx\" %f;\n", tg_i,trpx);
160 	}
setTargetRotatePivotY(size_t tg_i,double trpy)161 	void setTargetRotatePivotY(size_t tg_i,double trpy)
162 	{
163 		if(trpy == 0) return;
164 		fprintf(mFile,"\tsetAttr \".tg[%i].trp.trpy\" %f;\n", tg_i,trpy);
165 	}
setTargetRotatePivotZ(size_t tg_i,double trpz)166 	void setTargetRotatePivotZ(size_t tg_i,double trpz)
167 	{
168 		if(trpz == 0) return;
169 		fprintf(mFile,"\tsetAttr \".tg[%i].trp.trpz\" %f;\n", tg_i,trpz);
170 	}
setTargetRotateTranslate(size_t tg_i,const double3 & trt)171 	void setTargetRotateTranslate(size_t tg_i,const double3& trt)
172 	{
173 		fprintf(mFile,"\tsetAttr \".tg[%i].trt\" -type \"double3\" ",tg_i);
174 		trt.write(mFile);
175 		fprintf(mFile,";\n");
176 	}
setTargetRotateTranslateX(size_t tg_i,double trtx)177 	void setTargetRotateTranslateX(size_t tg_i,double trtx)
178 	{
179 		if(trtx == 0) return;
180 		fprintf(mFile,"\tsetAttr \".tg[%i].trt.trtx\" %f;\n", tg_i,trtx);
181 	}
setTargetRotateTranslateY(size_t tg_i,double trty)182 	void setTargetRotateTranslateY(size_t tg_i,double trty)
183 	{
184 		if(trty == 0) return;
185 		fprintf(mFile,"\tsetAttr \".tg[%i].trt.trty\" %f;\n", tg_i,trty);
186 	}
setTargetRotateTranslateZ(size_t tg_i,double trtz)187 	void setTargetRotateTranslateZ(size_t tg_i,double trtz)
188 	{
189 		if(trtz == 0) return;
190 		fprintf(mFile,"\tsetAttr \".tg[%i].trt.trtz\" %f;\n", tg_i,trtz);
191 	}
setTargetOffsetTranslate(size_t tg_i,const double3 & tot)192 	void setTargetOffsetTranslate(size_t tg_i,const double3& tot)
193 	{
194 		fprintf(mFile,"\tsetAttr \".tg[%i].tot\" -type \"double3\" ",tg_i);
195 		tot.write(mFile);
196 		fprintf(mFile,";\n");
197 	}
setTargetOffsetTranslateX(size_t tg_i,double totx)198 	void setTargetOffsetTranslateX(size_t tg_i,double totx)
199 	{
200 		if(totx == 0) return;
201 		fprintf(mFile,"\tsetAttr \".tg[%i].tot.totx\" %f;\n", tg_i,totx);
202 	}
setTargetOffsetTranslateY(size_t tg_i,double toty)203 	void setTargetOffsetTranslateY(size_t tg_i,double toty)
204 	{
205 		if(toty == 0) return;
206 		fprintf(mFile,"\tsetAttr \".tg[%i].tot.toty\" %f;\n", tg_i,toty);
207 	}
setTargetOffsetTranslateZ(size_t tg_i,double totz)208 	void setTargetOffsetTranslateZ(size_t tg_i,double totz)
209 	{
210 		if(totz == 0) return;
211 		fprintf(mFile,"\tsetAttr \".tg[%i].tot.totz\" %f;\n", tg_i,totz);
212 	}
setTargetRotate(size_t tg_i,const double3 & tr)213 	void setTargetRotate(size_t tg_i,const double3& tr)
214 	{
215 		fprintf(mFile,"\tsetAttr \".tg[%i].tr\" -type \"double3\" ",tg_i);
216 		tr.write(mFile);
217 		fprintf(mFile,";\n");
218 	}
setTargetRotateX(size_t tg_i,double trx)219 	void setTargetRotateX(size_t tg_i,double trx)
220 	{
221 		if(trx == 0) return;
222 		fprintf(mFile,"\tsetAttr \".tg[%i].tr.trx\" %f;\n", tg_i,trx);
223 	}
setTargetRotateY(size_t tg_i,double try_)224 	void setTargetRotateY(size_t tg_i,double try_)
225 	{
226 		if(try_ == 0) return;
227 		fprintf(mFile,"\tsetAttr \".tg[%i].tr.try\" %f;\n", tg_i,try_);
228 	}
setTargetRotateZ(size_t tg_i,double trz)229 	void setTargetRotateZ(size_t tg_i,double trz)
230 	{
231 		if(trz == 0) return;
232 		fprintf(mFile,"\tsetAttr \".tg[%i].tr.trz\" %f;\n", tg_i,trz);
233 	}
setTargetRotateOrder(size_t tg_i,unsigned int tro)234 	void setTargetRotateOrder(size_t tg_i,unsigned int tro)
235 	{
236 		if(tro == 0) return;
237 		fprintf(mFile,"\tsetAttr \".tg[%i].tro\" %i;\n", tg_i,tro);
238 	}
setTargetJointOrient(size_t tg_i,const double3 & tjo)239 	void setTargetJointOrient(size_t tg_i,const double3& tjo)
240 	{
241 		fprintf(mFile,"\tsetAttr \".tg[%i].tjo\" -type \"double3\" ",tg_i);
242 		tjo.write(mFile);
243 		fprintf(mFile,";\n");
244 	}
setTargetJointOrientX(size_t tg_i,double tjox)245 	void setTargetJointOrientX(size_t tg_i,double tjox)
246 	{
247 		if(tjox == 0) return;
248 		fprintf(mFile,"\tsetAttr \".tg[%i].tjo.tjox\" %f;\n", tg_i,tjox);
249 	}
setTargetJointOrientY(size_t tg_i,double tjoy)250 	void setTargetJointOrientY(size_t tg_i,double tjoy)
251 	{
252 		if(tjoy == 0) return;
253 		fprintf(mFile,"\tsetAttr \".tg[%i].tjo.tjoy\" %f;\n", tg_i,tjoy);
254 	}
setTargetJointOrientZ(size_t tg_i,double tjoz)255 	void setTargetJointOrientZ(size_t tg_i,double tjoz)
256 	{
257 		if(tjoz == 0) return;
258 		fprintf(mFile,"\tsetAttr \".tg[%i].tjo.tjoz\" %f;\n", tg_i,tjoz);
259 	}
setTargetOffsetRotate(size_t tg_i,const double3 & tor)260 	void setTargetOffsetRotate(size_t tg_i,const double3& tor)
261 	{
262 		fprintf(mFile,"\tsetAttr \".tg[%i].tor\" -type \"double3\" ",tg_i);
263 		tor.write(mFile);
264 		fprintf(mFile,";\n");
265 	}
setTargetOffsetRotateX(size_t tg_i,double torx)266 	void setTargetOffsetRotateX(size_t tg_i,double torx)
267 	{
268 		if(torx == 0) return;
269 		fprintf(mFile,"\tsetAttr \".tg[%i].tor.torx\" %f;\n", tg_i,torx);
270 	}
setTargetOffsetRotateY(size_t tg_i,double tory)271 	void setTargetOffsetRotateY(size_t tg_i,double tory)
272 	{
273 		if(tory == 0) return;
274 		fprintf(mFile,"\tsetAttr \".tg[%i].tor.tory\" %f;\n", tg_i,tory);
275 	}
setTargetOffsetRotateZ(size_t tg_i,double torz)276 	void setTargetOffsetRotateZ(size_t tg_i,double torz)
277 	{
278 		if(torz == 0) return;
279 		fprintf(mFile,"\tsetAttr \".tg[%i].tor.torz\" %f;\n", tg_i,torz);
280 	}
setTargetScale(size_t tg_i,const double3 & ts)281 	void setTargetScale(size_t tg_i,const double3& ts)
282 	{
283 		fprintf(mFile,"\tsetAttr \".tg[%i].ts\" -type \"double3\" ",tg_i);
284 		ts.write(mFile);
285 		fprintf(mFile,";\n");
286 	}
setTargetScaleX(size_t tg_i,double tsx)287 	void setTargetScaleX(size_t tg_i,double tsx)
288 	{
289 		if(tsx == 1.0) return;
290 		fprintf(mFile,"\tsetAttr \".tg[%i].ts.tsx\" %f;\n", tg_i,tsx);
291 	}
setTargetScaleY(size_t tg_i,double tsy)292 	void setTargetScaleY(size_t tg_i,double tsy)
293 	{
294 		if(tsy == 1.0) return;
295 		fprintf(mFile,"\tsetAttr \".tg[%i].ts.tsy\" %f;\n", tg_i,tsy);
296 	}
setTargetScaleZ(size_t tg_i,double tsz)297 	void setTargetScaleZ(size_t tg_i,double tsz)
298 	{
299 		if(tsz == 1.0) return;
300 		fprintf(mFile,"\tsetAttr \".tg[%i].ts.tsz\" %f;\n", tg_i,tsz);
301 	}
setConstraintParentInverseMatrix(const matrix & cpim)302 	void setConstraintParentInverseMatrix(const matrix& cpim)
303 	{
304 		if(cpim == identity) return;
305 		fprintf(mFile,"\tsetAttr \".cpim\" -type \"matrix\" ");
306 		cpim.write(mFile);
307 		fprintf(mFile,";\n");
308 	}
setLastTargetRotate(const double3 & lr)309 	void setLastTargetRotate(const double3& lr)
310 	{
311 		fprintf(mFile,"\tsetAttr \".lr\" -type \"double3\" ");
312 		lr.write(mFile);
313 		fprintf(mFile,";\n");
314 	}
setLastTargetRotateX(double lrx)315 	void setLastTargetRotateX(double lrx)
316 	{
317 		if(lrx == 0) return;
318 		fprintf(mFile,"\tsetAttr \".lr.lrx\" %f;\n", lrx);
319 	}
setLastTargetRotateY(double lry)320 	void setLastTargetRotateY(double lry)
321 	{
322 		if(lry == 0) return;
323 		fprintf(mFile,"\tsetAttr \".lr.lry\" %f;\n", lry);
324 	}
setLastTargetRotateZ(double lrz)325 	void setLastTargetRotateZ(double lrz)
326 	{
327 		if(lrz == 0) return;
328 		fprintf(mFile,"\tsetAttr \".lr.lrz\" %f;\n", lrz);
329 	}
setConstraintRotatePivot(const double3 & crp)330 	void setConstraintRotatePivot(const double3& crp)
331 	{
332 		fprintf(mFile,"\tsetAttr \".crp\" -type \"double3\" ");
333 		crp.write(mFile);
334 		fprintf(mFile,";\n");
335 	}
setConstraintRotatePivotX(double crpx)336 	void setConstraintRotatePivotX(double crpx)
337 	{
338 		if(crpx == 0) return;
339 		fprintf(mFile,"\tsetAttr \".crp.crpx\" %f;\n", crpx);
340 	}
setConstraintRotatePivotY(double crpy)341 	void setConstraintRotatePivotY(double crpy)
342 	{
343 		if(crpy == 0) return;
344 		fprintf(mFile,"\tsetAttr \".crp.crpy\" %f;\n", crpy);
345 	}
setConstraintRotatePivotZ(double crpz)346 	void setConstraintRotatePivotZ(double crpz)
347 	{
348 		if(crpz == 0) return;
349 		fprintf(mFile,"\tsetAttr \".crp.crpz\" %f;\n", crpz);
350 	}
setConstraintRotateTranslate(const double3 & crt)351 	void setConstraintRotateTranslate(const double3& crt)
352 	{
353 		fprintf(mFile,"\tsetAttr \".crt\" -type \"double3\" ");
354 		crt.write(mFile);
355 		fprintf(mFile,";\n");
356 	}
setConstraintRotateTranslateX(double crtx)357 	void setConstraintRotateTranslateX(double crtx)
358 	{
359 		if(crtx == 0) return;
360 		fprintf(mFile,"\tsetAttr \".crt.crtx\" %f;\n", crtx);
361 	}
setConstraintRotateTranslateY(double crty)362 	void setConstraintRotateTranslateY(double crty)
363 	{
364 		if(crty == 0) return;
365 		fprintf(mFile,"\tsetAttr \".crt.crty\" %f;\n", crty);
366 	}
setConstraintRotateTranslateZ(double crtz)367 	void setConstraintRotateTranslateZ(double crtz)
368 	{
369 		if(crtz == 0) return;
370 		fprintf(mFile,"\tsetAttr \".crt.crtz\" %f;\n", crtz);
371 	}
setRestTranslate(const double3 & rst)372 	void setRestTranslate(const double3& rst)
373 	{
374 		if(rst == double3(0.0, 0.0, 0.0)) return;
375 		fprintf(mFile,"\tsetAttr \".rst\" -type \"double3\" ");
376 		rst.write(mFile);
377 		fprintf(mFile,";\n");
378 	}
setRestTranslateX(double rtx)379 	void setRestTranslateX(double rtx)
380 	{
381 		if(rtx == 0) return;
382 		fprintf(mFile,"\tsetAttr \".rst.rtx\" %f;\n", rtx);
383 	}
setRestTranslateY(double rty)384 	void setRestTranslateY(double rty)
385 	{
386 		if(rty == 0) return;
387 		fprintf(mFile,"\tsetAttr \".rst.rty\" %f;\n", rty);
388 	}
setRestTranslateZ(double rtz)389 	void setRestTranslateZ(double rtz)
390 	{
391 		if(rtz == 0) return;
392 		fprintf(mFile,"\tsetAttr \".rst.rtz\" %f;\n", rtz);
393 	}
setConstraintRotateOrder(unsigned int cro)394 	void setConstraintRotateOrder(unsigned int cro)
395 	{
396 		if(cro == 0) return;
397 		fprintf(mFile,"\tsetAttr \".cro\" %i;\n", cro);
398 	}
setConstraintJointOrient(const double3 & cjo)399 	void setConstraintJointOrient(const double3& cjo)
400 	{
401 		fprintf(mFile,"\tsetAttr \".cjo\" -type \"double3\" ");
402 		cjo.write(mFile);
403 		fprintf(mFile,";\n");
404 	}
setConstraintJointOrientX(double cjox)405 	void setConstraintJointOrientX(double cjox)
406 	{
407 		if(cjox == 0) return;
408 		fprintf(mFile,"\tsetAttr \".cjo.cjox\" %f;\n", cjox);
409 	}
setConstraintJointOrientY(double cjoy)410 	void setConstraintJointOrientY(double cjoy)
411 	{
412 		if(cjoy == 0) return;
413 		fprintf(mFile,"\tsetAttr \".cjo.cjoy\" %f;\n", cjoy);
414 	}
setConstraintJointOrientZ(double cjoz)415 	void setConstraintJointOrientZ(double cjoz)
416 	{
417 		if(cjoz == 0) return;
418 		fprintf(mFile,"\tsetAttr \".cjo.cjoz\" %f;\n", cjoz);
419 	}
setRestRotate(const double3 & rsrr)420 	void setRestRotate(const double3& rsrr)
421 	{
422 		fprintf(mFile,"\tsetAttr \".rsrr\" -type \"double3\" ");
423 		rsrr.write(mFile);
424 		fprintf(mFile,";\n");
425 	}
setRestRotateX(double rrx)426 	void setRestRotateX(double rrx)
427 	{
428 		if(rrx == 0) return;
429 		fprintf(mFile,"\tsetAttr \".rsrr.rrx\" %f;\n", rrx);
430 	}
setRestRotateY(double rry)431 	void setRestRotateY(double rry)
432 	{
433 		if(rry == 0) return;
434 		fprintf(mFile,"\tsetAttr \".rsrr.rry\" %f;\n", rry);
435 	}
setRestRotateZ(double rrz)436 	void setRestRotateZ(double rrz)
437 	{
438 		if(rrz == 0) return;
439 		fprintf(mFile,"\tsetAttr \".rsrr.rrz\" %f;\n", rrz);
440 	}
setInterpType(unsigned int int_)441 	void setInterpType(unsigned int int_)
442 	{
443 		if(int_ == 1) return;
444 		fprintf(mFile,"\tsetAttr \".int\" %i;\n", int_);
445 	}
setInterpCache(int inc)446 	void setInterpCache(int inc)
447 	{
448 		if(inc == 0) return;
449 		fprintf(mFile,"\tsetAttr \".inc\" %i;\n", inc);
450 	}
getTarget(size_t tg_i)451 	void getTarget(size_t tg_i)const
452 	{
453 		fprintf(mFile,"\"%s.tg[%i]\"",mName.c_str(),tg_i);
454 	}
getTarget()455 	void getTarget()const
456 	{
457 
458 		fprintf(mFile,"\"%s.tg\"",mName.c_str());
459 	}
getTargetParentMatrix(size_t tg_i)460 	void getTargetParentMatrix(size_t tg_i)const
461 	{
462 		fprintf(mFile,"\"%s.tg[%i].tpm\"",mName.c_str(),tg_i);
463 	}
getTargetParentMatrix()464 	void getTargetParentMatrix()const
465 	{
466 
467 		fprintf(mFile,"\"%s.tg.tpm\"",mName.c_str());
468 	}
getTargetWeight(size_t tg_i)469 	void getTargetWeight(size_t tg_i)const
470 	{
471 		fprintf(mFile,"\"%s.tg[%i].tw\"",mName.c_str(),tg_i);
472 	}
getTargetWeight()473 	void getTargetWeight()const
474 	{
475 
476 		fprintf(mFile,"\"%s.tg.tw\"",mName.c_str());
477 	}
getTargetRotateCached(size_t tg_i)478 	void getTargetRotateCached(size_t tg_i)const
479 	{
480 		fprintf(mFile,"\"%s.tg[%i].ctr\"",mName.c_str(),tg_i);
481 	}
getTargetRotateCached()482 	void getTargetRotateCached()const
483 	{
484 
485 		fprintf(mFile,"\"%s.tg.ctr\"",mName.c_str());
486 	}
getTargetRotateCachedX(size_t tg_i)487 	void getTargetRotateCachedX(size_t tg_i)const
488 	{
489 		fprintf(mFile,"\"%s.tg[%i].ctr.ctrx\"",mName.c_str(),tg_i);
490 	}
getTargetRotateCachedX()491 	void getTargetRotateCachedX()const
492 	{
493 
494 		fprintf(mFile,"\"%s.tg.ctr.ctrx\"",mName.c_str());
495 	}
getTargetRotateCachedY(size_t tg_i)496 	void getTargetRotateCachedY(size_t tg_i)const
497 	{
498 		fprintf(mFile,"\"%s.tg[%i].ctr.ctry\"",mName.c_str(),tg_i);
499 	}
getTargetRotateCachedY()500 	void getTargetRotateCachedY()const
501 	{
502 
503 		fprintf(mFile,"\"%s.tg.ctr.ctry\"",mName.c_str());
504 	}
getTargetRotateCachedZ(size_t tg_i)505 	void getTargetRotateCachedZ(size_t tg_i)const
506 	{
507 		fprintf(mFile,"\"%s.tg[%i].ctr.ctrz\"",mName.c_str(),tg_i);
508 	}
getTargetRotateCachedZ()509 	void getTargetRotateCachedZ()const
510 	{
511 
512 		fprintf(mFile,"\"%s.tg.ctr.ctrz\"",mName.c_str());
513 	}
getTargetTranslate(size_t tg_i)514 	void getTargetTranslate(size_t tg_i)const
515 	{
516 		fprintf(mFile,"\"%s.tg[%i].tt\"",mName.c_str(),tg_i);
517 	}
getTargetTranslate()518 	void getTargetTranslate()const
519 	{
520 
521 		fprintf(mFile,"\"%s.tg.tt\"",mName.c_str());
522 	}
getTargetTranslateX(size_t tg_i)523 	void getTargetTranslateX(size_t tg_i)const
524 	{
525 		fprintf(mFile,"\"%s.tg[%i].tt.ttx\"",mName.c_str(),tg_i);
526 	}
getTargetTranslateX()527 	void getTargetTranslateX()const
528 	{
529 
530 		fprintf(mFile,"\"%s.tg.tt.ttx\"",mName.c_str());
531 	}
getTargetTranslateY(size_t tg_i)532 	void getTargetTranslateY(size_t tg_i)const
533 	{
534 		fprintf(mFile,"\"%s.tg[%i].tt.tty\"",mName.c_str(),tg_i);
535 	}
getTargetTranslateY()536 	void getTargetTranslateY()const
537 	{
538 
539 		fprintf(mFile,"\"%s.tg.tt.tty\"",mName.c_str());
540 	}
getTargetTranslateZ(size_t tg_i)541 	void getTargetTranslateZ(size_t tg_i)const
542 	{
543 		fprintf(mFile,"\"%s.tg[%i].tt.ttz\"",mName.c_str(),tg_i);
544 	}
getTargetTranslateZ()545 	void getTargetTranslateZ()const
546 	{
547 
548 		fprintf(mFile,"\"%s.tg.tt.ttz\"",mName.c_str());
549 	}
getTargetRotatePivot(size_t tg_i)550 	void getTargetRotatePivot(size_t tg_i)const
551 	{
552 		fprintf(mFile,"\"%s.tg[%i].trp\"",mName.c_str(),tg_i);
553 	}
getTargetRotatePivot()554 	void getTargetRotatePivot()const
555 	{
556 
557 		fprintf(mFile,"\"%s.tg.trp\"",mName.c_str());
558 	}
getTargetRotatePivotX(size_t tg_i)559 	void getTargetRotatePivotX(size_t tg_i)const
560 	{
561 		fprintf(mFile,"\"%s.tg[%i].trp.trpx\"",mName.c_str(),tg_i);
562 	}
getTargetRotatePivotX()563 	void getTargetRotatePivotX()const
564 	{
565 
566 		fprintf(mFile,"\"%s.tg.trp.trpx\"",mName.c_str());
567 	}
getTargetRotatePivotY(size_t tg_i)568 	void getTargetRotatePivotY(size_t tg_i)const
569 	{
570 		fprintf(mFile,"\"%s.tg[%i].trp.trpy\"",mName.c_str(),tg_i);
571 	}
getTargetRotatePivotY()572 	void getTargetRotatePivotY()const
573 	{
574 
575 		fprintf(mFile,"\"%s.tg.trp.trpy\"",mName.c_str());
576 	}
getTargetRotatePivotZ(size_t tg_i)577 	void getTargetRotatePivotZ(size_t tg_i)const
578 	{
579 		fprintf(mFile,"\"%s.tg[%i].trp.trpz\"",mName.c_str(),tg_i);
580 	}
getTargetRotatePivotZ()581 	void getTargetRotatePivotZ()const
582 	{
583 
584 		fprintf(mFile,"\"%s.tg.trp.trpz\"",mName.c_str());
585 	}
getTargetRotateTranslate(size_t tg_i)586 	void getTargetRotateTranslate(size_t tg_i)const
587 	{
588 		fprintf(mFile,"\"%s.tg[%i].trt\"",mName.c_str(),tg_i);
589 	}
getTargetRotateTranslate()590 	void getTargetRotateTranslate()const
591 	{
592 
593 		fprintf(mFile,"\"%s.tg.trt\"",mName.c_str());
594 	}
getTargetRotateTranslateX(size_t tg_i)595 	void getTargetRotateTranslateX(size_t tg_i)const
596 	{
597 		fprintf(mFile,"\"%s.tg[%i].trt.trtx\"",mName.c_str(),tg_i);
598 	}
getTargetRotateTranslateX()599 	void getTargetRotateTranslateX()const
600 	{
601 
602 		fprintf(mFile,"\"%s.tg.trt.trtx\"",mName.c_str());
603 	}
getTargetRotateTranslateY(size_t tg_i)604 	void getTargetRotateTranslateY(size_t tg_i)const
605 	{
606 		fprintf(mFile,"\"%s.tg[%i].trt.trty\"",mName.c_str(),tg_i);
607 	}
getTargetRotateTranslateY()608 	void getTargetRotateTranslateY()const
609 	{
610 
611 		fprintf(mFile,"\"%s.tg.trt.trty\"",mName.c_str());
612 	}
getTargetRotateTranslateZ(size_t tg_i)613 	void getTargetRotateTranslateZ(size_t tg_i)const
614 	{
615 		fprintf(mFile,"\"%s.tg[%i].trt.trtz\"",mName.c_str(),tg_i);
616 	}
getTargetRotateTranslateZ()617 	void getTargetRotateTranslateZ()const
618 	{
619 
620 		fprintf(mFile,"\"%s.tg.trt.trtz\"",mName.c_str());
621 	}
getTargetOffsetTranslate(size_t tg_i)622 	void getTargetOffsetTranslate(size_t tg_i)const
623 	{
624 		fprintf(mFile,"\"%s.tg[%i].tot\"",mName.c_str(),tg_i);
625 	}
getTargetOffsetTranslate()626 	void getTargetOffsetTranslate()const
627 	{
628 
629 		fprintf(mFile,"\"%s.tg.tot\"",mName.c_str());
630 	}
getTargetOffsetTranslateX(size_t tg_i)631 	void getTargetOffsetTranslateX(size_t tg_i)const
632 	{
633 		fprintf(mFile,"\"%s.tg[%i].tot.totx\"",mName.c_str(),tg_i);
634 	}
getTargetOffsetTranslateX()635 	void getTargetOffsetTranslateX()const
636 	{
637 
638 		fprintf(mFile,"\"%s.tg.tot.totx\"",mName.c_str());
639 	}
getTargetOffsetTranslateY(size_t tg_i)640 	void getTargetOffsetTranslateY(size_t tg_i)const
641 	{
642 		fprintf(mFile,"\"%s.tg[%i].tot.toty\"",mName.c_str(),tg_i);
643 	}
getTargetOffsetTranslateY()644 	void getTargetOffsetTranslateY()const
645 	{
646 
647 		fprintf(mFile,"\"%s.tg.tot.toty\"",mName.c_str());
648 	}
getTargetOffsetTranslateZ(size_t tg_i)649 	void getTargetOffsetTranslateZ(size_t tg_i)const
650 	{
651 		fprintf(mFile,"\"%s.tg[%i].tot.totz\"",mName.c_str(),tg_i);
652 	}
getTargetOffsetTranslateZ()653 	void getTargetOffsetTranslateZ()const
654 	{
655 
656 		fprintf(mFile,"\"%s.tg.tot.totz\"",mName.c_str());
657 	}
getTargetRotate(size_t tg_i)658 	void getTargetRotate(size_t tg_i)const
659 	{
660 		fprintf(mFile,"\"%s.tg[%i].tr\"",mName.c_str(),tg_i);
661 	}
getTargetRotate()662 	void getTargetRotate()const
663 	{
664 
665 		fprintf(mFile,"\"%s.tg.tr\"",mName.c_str());
666 	}
getTargetRotateX(size_t tg_i)667 	void getTargetRotateX(size_t tg_i)const
668 	{
669 		fprintf(mFile,"\"%s.tg[%i].tr.trx\"",mName.c_str(),tg_i);
670 	}
getTargetRotateX()671 	void getTargetRotateX()const
672 	{
673 
674 		fprintf(mFile,"\"%s.tg.tr.trx\"",mName.c_str());
675 	}
getTargetRotateY(size_t tg_i)676 	void getTargetRotateY(size_t tg_i)const
677 	{
678 		fprintf(mFile,"\"%s.tg[%i].tr.try\"",mName.c_str(),tg_i);
679 	}
getTargetRotateY()680 	void getTargetRotateY()const
681 	{
682 
683 		fprintf(mFile,"\"%s.tg.tr.try\"",mName.c_str());
684 	}
getTargetRotateZ(size_t tg_i)685 	void getTargetRotateZ(size_t tg_i)const
686 	{
687 		fprintf(mFile,"\"%s.tg[%i].tr.trz\"",mName.c_str(),tg_i);
688 	}
getTargetRotateZ()689 	void getTargetRotateZ()const
690 	{
691 
692 		fprintf(mFile,"\"%s.tg.tr.trz\"",mName.c_str());
693 	}
getTargetRotateOrder(size_t tg_i)694 	void getTargetRotateOrder(size_t tg_i)const
695 	{
696 		fprintf(mFile,"\"%s.tg[%i].tro\"",mName.c_str(),tg_i);
697 	}
getTargetRotateOrder()698 	void getTargetRotateOrder()const
699 	{
700 
701 		fprintf(mFile,"\"%s.tg.tro\"",mName.c_str());
702 	}
getTargetJointOrient(size_t tg_i)703 	void getTargetJointOrient(size_t tg_i)const
704 	{
705 		fprintf(mFile,"\"%s.tg[%i].tjo\"",mName.c_str(),tg_i);
706 	}
getTargetJointOrient()707 	void getTargetJointOrient()const
708 	{
709 
710 		fprintf(mFile,"\"%s.tg.tjo\"",mName.c_str());
711 	}
getTargetJointOrientX(size_t tg_i)712 	void getTargetJointOrientX(size_t tg_i)const
713 	{
714 		fprintf(mFile,"\"%s.tg[%i].tjo.tjox\"",mName.c_str(),tg_i);
715 	}
getTargetJointOrientX()716 	void getTargetJointOrientX()const
717 	{
718 
719 		fprintf(mFile,"\"%s.tg.tjo.tjox\"",mName.c_str());
720 	}
getTargetJointOrientY(size_t tg_i)721 	void getTargetJointOrientY(size_t tg_i)const
722 	{
723 		fprintf(mFile,"\"%s.tg[%i].tjo.tjoy\"",mName.c_str(),tg_i);
724 	}
getTargetJointOrientY()725 	void getTargetJointOrientY()const
726 	{
727 
728 		fprintf(mFile,"\"%s.tg.tjo.tjoy\"",mName.c_str());
729 	}
getTargetJointOrientZ(size_t tg_i)730 	void getTargetJointOrientZ(size_t tg_i)const
731 	{
732 		fprintf(mFile,"\"%s.tg[%i].tjo.tjoz\"",mName.c_str(),tg_i);
733 	}
getTargetJointOrientZ()734 	void getTargetJointOrientZ()const
735 	{
736 
737 		fprintf(mFile,"\"%s.tg.tjo.tjoz\"",mName.c_str());
738 	}
getTargetOffsetRotate(size_t tg_i)739 	void getTargetOffsetRotate(size_t tg_i)const
740 	{
741 		fprintf(mFile,"\"%s.tg[%i].tor\"",mName.c_str(),tg_i);
742 	}
getTargetOffsetRotate()743 	void getTargetOffsetRotate()const
744 	{
745 
746 		fprintf(mFile,"\"%s.tg.tor\"",mName.c_str());
747 	}
getTargetOffsetRotateX(size_t tg_i)748 	void getTargetOffsetRotateX(size_t tg_i)const
749 	{
750 		fprintf(mFile,"\"%s.tg[%i].tor.torx\"",mName.c_str(),tg_i);
751 	}
getTargetOffsetRotateX()752 	void getTargetOffsetRotateX()const
753 	{
754 
755 		fprintf(mFile,"\"%s.tg.tor.torx\"",mName.c_str());
756 	}
getTargetOffsetRotateY(size_t tg_i)757 	void getTargetOffsetRotateY(size_t tg_i)const
758 	{
759 		fprintf(mFile,"\"%s.tg[%i].tor.tory\"",mName.c_str(),tg_i);
760 	}
getTargetOffsetRotateY()761 	void getTargetOffsetRotateY()const
762 	{
763 
764 		fprintf(mFile,"\"%s.tg.tor.tory\"",mName.c_str());
765 	}
getTargetOffsetRotateZ(size_t tg_i)766 	void getTargetOffsetRotateZ(size_t tg_i)const
767 	{
768 		fprintf(mFile,"\"%s.tg[%i].tor.torz\"",mName.c_str(),tg_i);
769 	}
getTargetOffsetRotateZ()770 	void getTargetOffsetRotateZ()const
771 	{
772 
773 		fprintf(mFile,"\"%s.tg.tor.torz\"",mName.c_str());
774 	}
getTargetScale(size_t tg_i)775 	void getTargetScale(size_t tg_i)const
776 	{
777 		fprintf(mFile,"\"%s.tg[%i].ts\"",mName.c_str(),tg_i);
778 	}
getTargetScale()779 	void getTargetScale()const
780 	{
781 
782 		fprintf(mFile,"\"%s.tg.ts\"",mName.c_str());
783 	}
getTargetScaleX(size_t tg_i)784 	void getTargetScaleX(size_t tg_i)const
785 	{
786 		fprintf(mFile,"\"%s.tg[%i].ts.tsx\"",mName.c_str(),tg_i);
787 	}
getTargetScaleX()788 	void getTargetScaleX()const
789 	{
790 
791 		fprintf(mFile,"\"%s.tg.ts.tsx\"",mName.c_str());
792 	}
getTargetScaleY(size_t tg_i)793 	void getTargetScaleY(size_t tg_i)const
794 	{
795 		fprintf(mFile,"\"%s.tg[%i].ts.tsy\"",mName.c_str(),tg_i);
796 	}
getTargetScaleY()797 	void getTargetScaleY()const
798 	{
799 
800 		fprintf(mFile,"\"%s.tg.ts.tsy\"",mName.c_str());
801 	}
getTargetScaleZ(size_t tg_i)802 	void getTargetScaleZ(size_t tg_i)const
803 	{
804 		fprintf(mFile,"\"%s.tg[%i].ts.tsz\"",mName.c_str(),tg_i);
805 	}
getTargetScaleZ()806 	void getTargetScaleZ()const
807 	{
808 
809 		fprintf(mFile,"\"%s.tg.ts.tsz\"",mName.c_str());
810 	}
getConstraintParentInverseMatrix()811 	void getConstraintParentInverseMatrix()const
812 	{
813 		fprintf(mFile,"\"%s.cpim\"",mName.c_str());
814 	}
getLastTargetRotate()815 	void getLastTargetRotate()const
816 	{
817 		fprintf(mFile,"\"%s.lr\"",mName.c_str());
818 	}
getLastTargetRotateX()819 	void getLastTargetRotateX()const
820 	{
821 		fprintf(mFile,"\"%s.lr.lrx\"",mName.c_str());
822 	}
getLastTargetRotateY()823 	void getLastTargetRotateY()const
824 	{
825 		fprintf(mFile,"\"%s.lr.lry\"",mName.c_str());
826 	}
getLastTargetRotateZ()827 	void getLastTargetRotateZ()const
828 	{
829 		fprintf(mFile,"\"%s.lr.lrz\"",mName.c_str());
830 	}
getConstraintRotatePivot()831 	void getConstraintRotatePivot()const
832 	{
833 		fprintf(mFile,"\"%s.crp\"",mName.c_str());
834 	}
getConstraintRotatePivotX()835 	void getConstraintRotatePivotX()const
836 	{
837 		fprintf(mFile,"\"%s.crp.crpx\"",mName.c_str());
838 	}
getConstraintRotatePivotY()839 	void getConstraintRotatePivotY()const
840 	{
841 		fprintf(mFile,"\"%s.crp.crpy\"",mName.c_str());
842 	}
getConstraintRotatePivotZ()843 	void getConstraintRotatePivotZ()const
844 	{
845 		fprintf(mFile,"\"%s.crp.crpz\"",mName.c_str());
846 	}
getConstraintRotateTranslate()847 	void getConstraintRotateTranslate()const
848 	{
849 		fprintf(mFile,"\"%s.crt\"",mName.c_str());
850 	}
getConstraintRotateTranslateX()851 	void getConstraintRotateTranslateX()const
852 	{
853 		fprintf(mFile,"\"%s.crt.crtx\"",mName.c_str());
854 	}
getConstraintRotateTranslateY()855 	void getConstraintRotateTranslateY()const
856 	{
857 		fprintf(mFile,"\"%s.crt.crty\"",mName.c_str());
858 	}
getConstraintRotateTranslateZ()859 	void getConstraintRotateTranslateZ()const
860 	{
861 		fprintf(mFile,"\"%s.crt.crtz\"",mName.c_str());
862 	}
getConstraintTranslate()863 	void getConstraintTranslate()const
864 	{
865 		fprintf(mFile,"\"%s.ct\"",mName.c_str());
866 	}
getConstraintTranslateX()867 	void getConstraintTranslateX()const
868 	{
869 		fprintf(mFile,"\"%s.ct.ctx\"",mName.c_str());
870 	}
getConstraintTranslateY()871 	void getConstraintTranslateY()const
872 	{
873 		fprintf(mFile,"\"%s.ct.cty\"",mName.c_str());
874 	}
getConstraintTranslateZ()875 	void getConstraintTranslateZ()const
876 	{
877 		fprintf(mFile,"\"%s.ct.ctz\"",mName.c_str());
878 	}
getRestTranslate()879 	void getRestTranslate()const
880 	{
881 		fprintf(mFile,"\"%s.rst\"",mName.c_str());
882 	}
getRestTranslateX()883 	void getRestTranslateX()const
884 	{
885 		fprintf(mFile,"\"%s.rst.rtx\"",mName.c_str());
886 	}
getRestTranslateY()887 	void getRestTranslateY()const
888 	{
889 		fprintf(mFile,"\"%s.rst.rty\"",mName.c_str());
890 	}
getRestTranslateZ()891 	void getRestTranslateZ()const
892 	{
893 		fprintf(mFile,"\"%s.rst.rtz\"",mName.c_str());
894 	}
getConstraintRotateOrder()895 	void getConstraintRotateOrder()const
896 	{
897 		fprintf(mFile,"\"%s.cro\"",mName.c_str());
898 	}
getConstraintJointOrient()899 	void getConstraintJointOrient()const
900 	{
901 		fprintf(mFile,"\"%s.cjo\"",mName.c_str());
902 	}
getConstraintJointOrientX()903 	void getConstraintJointOrientX()const
904 	{
905 		fprintf(mFile,"\"%s.cjo.cjox\"",mName.c_str());
906 	}
getConstraintJointOrientY()907 	void getConstraintJointOrientY()const
908 	{
909 		fprintf(mFile,"\"%s.cjo.cjoy\"",mName.c_str());
910 	}
getConstraintJointOrientZ()911 	void getConstraintJointOrientZ()const
912 	{
913 		fprintf(mFile,"\"%s.cjo.cjoz\"",mName.c_str());
914 	}
getConstraintRotate()915 	void getConstraintRotate()const
916 	{
917 		fprintf(mFile,"\"%s.cr\"",mName.c_str());
918 	}
getConstraintRotateX()919 	void getConstraintRotateX()const
920 	{
921 		fprintf(mFile,"\"%s.cr.crx\"",mName.c_str());
922 	}
getConstraintRotateY()923 	void getConstraintRotateY()const
924 	{
925 		fprintf(mFile,"\"%s.cr.cry\"",mName.c_str());
926 	}
getConstraintRotateZ()927 	void getConstraintRotateZ()const
928 	{
929 		fprintf(mFile,"\"%s.cr.crz\"",mName.c_str());
930 	}
getRestRotate()931 	void getRestRotate()const
932 	{
933 		fprintf(mFile,"\"%s.rsrr\"",mName.c_str());
934 	}
getRestRotateX()935 	void getRestRotateX()const
936 	{
937 		fprintf(mFile,"\"%s.rsrr.rrx\"",mName.c_str());
938 	}
getRestRotateY()939 	void getRestRotateY()const
940 	{
941 		fprintf(mFile,"\"%s.rsrr.rry\"",mName.c_str());
942 	}
getRestRotateZ()943 	void getRestRotateZ()const
944 	{
945 		fprintf(mFile,"\"%s.rsrr.rrz\"",mName.c_str());
946 	}
getInterpType()947 	void getInterpType()const
948 	{
949 		fprintf(mFile,"\"%s.int\"",mName.c_str());
950 	}
getInterpCache()951 	void getInterpCache()const
952 	{
953 		fprintf(mFile,"\"%s.inc\"",mName.c_str());
954 	}
955 protected:
956 	ParentConstraint(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
Constraint(file,name,parent,nodeType,shared,create)957 		:Constraint(file, name, parent, nodeType, shared, create) {}
958 
959 };
960 }//namespace MayaDM
961 #endif//__MayaDM_PARENTCONSTRAINT_H__
962