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_HAIRCONSTRAINT_H__
11 #define __MayaDM_HAIRCONSTRAINT_H__
12 #include "MayaDMTypes.h"
13 #include "MayaDMConnectables.h"
14 #include "MayaDMShape.h"
15 namespace MayaDM
16 {
17 class HairConstraint : public Shape
18 {
19 public:
20 public:
21 
HairConstraint()22 	HairConstraint():Shape(){}
23 	HairConstraint(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
24 		:Shape(file, name, parent, "hairConstraint", shared, create){}
~HairConstraint()25 	virtual ~HairConstraint(){}
26 
setCurveIndices(size_t cin_i,int cin)27 	void setCurveIndices(size_t cin_i,int cin)
28 	{
29 		if(cin == 0) return;
30 		fprintf(mFile,"\tsetAttr \".cin[%i]\" %i;\n", cin_i,cin);
31 	}
setCurveIndices(size_t cin_start,size_t cin_end,int * cin)32 	void setCurveIndices(size_t cin_start,size_t cin_end,int* cin)
33 	{
34 		fprintf(mFile,"\tsetAttr \".cin[%i:%i]\" ", cin_start,cin_end);
35 		size_t size = (cin_end-cin_start)*1+1;
36 		for(size_t i=0;i<size;++i)
37 		{
38 			fprintf(mFile,"%i",cin[i]);
39 			if(i+1<size) fprintf(mFile," ");
40 		}
41 		fprintf(mFile,";\n");
42 	}
startCurveIndices(size_t cin_start,size_t cin_end)43 	void startCurveIndices(size_t cin_start,size_t cin_end)const
44 	{
45 		fprintf(mFile,"\tsetAttr \".cin[%i:%i]\"",cin_start,cin_end);
46 	}
appendCurveIndices(int cin)47 	void appendCurveIndices(int cin)const
48 	{
49 		fprintf(mFile," %i",cin);
50 	}
endCurveIndices()51 	void endCurveIndices()const
52 	{
53 		fprintf(mFile,";\n");
54 	}
setConstraintMethod(unsigned int cm)55 	void setConstraintMethod(unsigned int cm)
56 	{
57 		if(cm == 1) return;
58 		fprintf(mFile,"\tsetAttr \".cm\" %i;\n", cm);
59 	}
setPointMethod(unsigned int pmt)60 	void setPointMethod(unsigned int pmt)
61 	{
62 		if(pmt == 0) return;
63 		fprintf(mFile,"\tsetAttr \".pmt\" %i;\n", pmt);
64 	}
setStiffness(double stf)65 	void setStiffness(double stf)
66 	{
67 		if(stf == 0.5) return;
68 		fprintf(mFile,"\tsetAttr \".stf\" %f;\n", stf);
69 	}
setGlueStrength(double gst)70 	void setGlueStrength(double gst)
71 	{
72 		if(gst == 1.0) return;
73 		fprintf(mFile,"\tsetAttr \".gst\" %f;\n", gst);
74 	}
setUParameter(double upr)75 	void setUParameter(double upr)
76 	{
77 		if(upr == 1.0) return;
78 		fprintf(mFile,"\tsetAttr \".upr\" %f;\n", upr);
79 	}
setUDistance(double udi)80 	void setUDistance(double udi)
81 	{
82 		if(udi == 1.0) return;
83 		fprintf(mFile,"\tsetAttr \".udi\" %f;\n", udi);
84 	}
getCurveIndices(size_t cin_i)85 	void getCurveIndices(size_t cin_i)const
86 	{
87 		fprintf(mFile,"\"%s.cin[%i]\"",mName.c_str(),cin_i);
88 	}
getCurveIndices()89 	void getCurveIndices()const
90 	{
91 
92 		fprintf(mFile,"\"%s.cin\"",mName.c_str());
93 	}
getConstraintMethod()94 	void getConstraintMethod()const
95 	{
96 		fprintf(mFile,"\"%s.cm\"",mName.c_str());
97 	}
getPointMethod()98 	void getPointMethod()const
99 	{
100 		fprintf(mFile,"\"%s.pmt\"",mName.c_str());
101 	}
getStiffness()102 	void getStiffness()const
103 	{
104 		fprintf(mFile,"\"%s.stf\"",mName.c_str());
105 	}
getGlueStrength()106 	void getGlueStrength()const
107 	{
108 		fprintf(mFile,"\"%s.gst\"",mName.c_str());
109 	}
getUParameter()110 	void getUParameter()const
111 	{
112 		fprintf(mFile,"\"%s.upr\"",mName.c_str());
113 	}
getUDistance()114 	void getUDistance()const
115 	{
116 		fprintf(mFile,"\"%s.udi\"",mName.c_str());
117 	}
getOutPin(size_t opn_i)118 	void getOutPin(size_t opn_i)const
119 	{
120 		fprintf(mFile,"\"%s.opn[%i]\"",mName.c_str(),opn_i);
121 	}
getOutPin()122 	void getOutPin()const
123 	{
124 
125 		fprintf(mFile,"\"%s.opn\"",mName.c_str());
126 	}
127 protected:
128 	HairConstraint(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
Shape(file,name,parent,nodeType,shared,create)129 		:Shape(file, name, parent, nodeType, shared, create) {}
130 
131 };
132 }//namespace MayaDM
133 #endif//__MayaDM_HAIRCONSTRAINT_H__
134