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_MOTIONPATH_H__ 11 #define __MayaDM_MOTIONPATH_H__ 12 #include "MayaDMTypes.h" 13 #include "MayaDMConnectables.h" 14 #include "MayaDMDependNode.h" 15 namespace MayaDM 16 { 17 class MotionPath : public DependNode 18 { 19 public: 20 public: 21 MotionPath()22 MotionPath():DependNode(){} 23 MotionPath(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true) 24 :DependNode(file, name, parent, "motionPath", shared, create){} ~MotionPath()25 virtual ~MotionPath(){} 26 setUValue(double u)27 void setUValue(double u) 28 { 29 if(u == 0) return; 30 fprintf(mFile,"\tsetAttr \".u\" %f;\n", u); 31 } setFrontTwist(double ft)32 void setFrontTwist(double ft) 33 { 34 if(ft == 0) return; 35 fprintf(mFile,"\tsetAttr \".ft\" %f;\n", ft); 36 } setUpTwist(double ut)37 void setUpTwist(double ut) 38 { 39 if(ut == 0) return; 40 fprintf(mFile,"\tsetAttr \".ut\" %f;\n", ut); 41 } setSideTwist(double st)42 void setSideTwist(double st) 43 { 44 if(st == 0) return; 45 fprintf(mFile,"\tsetAttr \".st\" %f;\n", st); 46 } setRotateOrder(unsigned int ro)47 void setRotateOrder(unsigned int ro) 48 { 49 if(ro == 0) return; 50 fprintf(mFile,"\tsetAttr \".ro\" %i;\n", ro); 51 } setPositionMarkerTime(size_t pmt_i,double pmt)52 void setPositionMarkerTime(size_t pmt_i,double pmt) 53 { 54 if(pmt == 0) return; 55 fprintf(mFile,"\tsetAttr \".pmt[%i]\" %f;\n", pmt_i,pmt); 56 } setPositionMarkerTime(size_t pmt_start,size_t pmt_end,double * pmt)57 void setPositionMarkerTime(size_t pmt_start,size_t pmt_end,double* pmt) 58 { 59 fprintf(mFile,"\tsetAttr \".pmt[%i:%i]\" ", pmt_start,pmt_end); 60 size_t size = (pmt_end-pmt_start)*1+1; 61 for(size_t i=0;i<size;++i) 62 { 63 fprintf(mFile,"%f",pmt[i]); 64 if(i+1<size) fprintf(mFile," "); 65 } 66 fprintf(mFile,";\n"); 67 } startPositionMarkerTime(size_t pmt_start,size_t pmt_end)68 void startPositionMarkerTime(size_t pmt_start,size_t pmt_end)const 69 { 70 fprintf(mFile,"\tsetAttr \".pmt[%i:%i]\"",pmt_start,pmt_end); 71 } appendPositionMarkerTime(double pmt)72 void appendPositionMarkerTime(double pmt)const 73 { 74 fprintf(mFile," %f",pmt); 75 } endPositionMarkerTime()76 void endPositionMarkerTime()const 77 { 78 fprintf(mFile,";\n"); 79 } setOrientationMarkerTime(size_t omt_i,double omt)80 void setOrientationMarkerTime(size_t omt_i,double omt) 81 { 82 if(omt == 0) return; 83 fprintf(mFile,"\tsetAttr \".omt[%i]\" %f;\n", omt_i,omt); 84 } setOrientationMarkerTime(size_t omt_start,size_t omt_end,double * omt)85 void setOrientationMarkerTime(size_t omt_start,size_t omt_end,double* omt) 86 { 87 fprintf(mFile,"\tsetAttr \".omt[%i:%i]\" ", omt_start,omt_end); 88 size_t size = (omt_end-omt_start)*1+1; 89 for(size_t i=0;i<size;++i) 90 { 91 fprintf(mFile,"%f",omt[i]); 92 if(i+1<size) fprintf(mFile," "); 93 } 94 fprintf(mFile,";\n"); 95 } startOrientationMarkerTime(size_t omt_start,size_t omt_end)96 void startOrientationMarkerTime(size_t omt_start,size_t omt_end)const 97 { 98 fprintf(mFile,"\tsetAttr \".omt[%i:%i]\"",omt_start,omt_end); 99 } appendOrientationMarkerTime(double omt)100 void appendOrientationMarkerTime(double omt)const 101 { 102 fprintf(mFile," %f",omt); 103 } endOrientationMarkerTime()104 void endOrientationMarkerTime()const 105 { 106 fprintf(mFile,";\n"); 107 } setFollow(bool f)108 void setFollow(bool f) 109 { 110 if(f == false) return; 111 fprintf(mFile,"\tsetAttr \".f\" %i;\n", f); 112 } setNormal(bool nr)113 void setNormal(bool nr) 114 { 115 if(nr == false) return; 116 fprintf(mFile,"\tsetAttr \".nr\" %i;\n", nr); 117 } setInverseUp(bool iu)118 void setInverseUp(bool iu) 119 { 120 if(iu == false) return; 121 fprintf(mFile,"\tsetAttr \".iu\" %i;\n", iu); 122 } setInverseFront(bool if_)123 void setInverseFront(bool if_) 124 { 125 if(if_ == false) return; 126 fprintf(mFile,"\tsetAttr \".if\" %i;\n", if_); 127 } setFrontAxis(unsigned int fa)128 void setFrontAxis(unsigned int fa) 129 { 130 if(fa == 1) return; 131 fprintf(mFile,"\tsetAttr \".fa\" %i;\n", fa); 132 } setUpAxis(unsigned int ua)133 void setUpAxis(unsigned int ua) 134 { 135 if(ua == 2) return; 136 fprintf(mFile,"\tsetAttr \".ua\" %i;\n", ua); 137 } setWorldUpType(unsigned int wut)138 void setWorldUpType(unsigned int wut) 139 { 140 if(wut == 3) return; 141 fprintf(mFile,"\tsetAttr \".wut\" %i;\n", wut); 142 } setWorldUpVector(const double3 & wu)143 void setWorldUpVector(const double3& wu) 144 { 145 fprintf(mFile,"\tsetAttr \".wu\" -type \"double3\" "); 146 wu.write(mFile); 147 fprintf(mFile,";\n"); 148 } setWorldUpVectorX(double wux)149 void setWorldUpVectorX(double wux) 150 { 151 if(wux == 0.0) return; 152 fprintf(mFile,"\tsetAttr \".wu.wux\" %f;\n", wux); 153 } setWorldUpVectorY(double wuy)154 void setWorldUpVectorY(double wuy) 155 { 156 if(wuy == 1.0) return; 157 fprintf(mFile,"\tsetAttr \".wu.wuy\" %f;\n", wuy); 158 } setWorldUpVectorZ(double wuz)159 void setWorldUpVectorZ(double wuz) 160 { 161 if(wuz == 0.0) return; 162 fprintf(mFile,"\tsetAttr \".wu.wuz\" %f;\n", wuz); 163 } setWorldUpMatrix(const matrix & wum)164 void setWorldUpMatrix(const matrix& wum) 165 { 166 if(wum == identity) return; 167 fprintf(mFile,"\tsetAttr \".wum\" -type \"matrix\" "); 168 wum.write(mFile); 169 fprintf(mFile,";\n"); 170 } setBank(bool b)171 void setBank(bool b) 172 { 173 if(b == false) return; 174 fprintf(mFile,"\tsetAttr \".b\" %i;\n", b); 175 } setBankScale(double bs)176 void setBankScale(double bs) 177 { 178 if(bs == 1.0) return; 179 fprintf(mFile,"\tsetAttr \".bs\" %f;\n", bs); 180 } setBankLimit(double bl)181 void setBankLimit(double bl) 182 { 183 if(bl == 9) return; 184 fprintf(mFile,"\tsetAttr \".bl\" %f;\n", bl); 185 } setFractionMode(bool fm)186 void setFractionMode(bool fm) 187 { 188 if(fm == false) return; 189 fprintf(mFile,"\tsetAttr \".fm\" %i;\n", fm); 190 } getUValue()191 void getUValue()const 192 { 193 fprintf(mFile,"\"%s.u\"",mName.c_str()); 194 } getFrontTwist()195 void getFrontTwist()const 196 { 197 fprintf(mFile,"\"%s.ft\"",mName.c_str()); 198 } getUpTwist()199 void getUpTwist()const 200 { 201 fprintf(mFile,"\"%s.ut\"",mName.c_str()); 202 } getSideTwist()203 void getSideTwist()const 204 { 205 fprintf(mFile,"\"%s.st\"",mName.c_str()); 206 } getAllCoordinates()207 void getAllCoordinates()const 208 { 209 fprintf(mFile,"\"%s.ac\"",mName.c_str()); 210 } getXCoordinate()211 void getXCoordinate()const 212 { 213 fprintf(mFile,"\"%s.ac.xc\"",mName.c_str()); 214 } getYCoordinate()215 void getYCoordinate()const 216 { 217 fprintf(mFile,"\"%s.ac.yc\"",mName.c_str()); 218 } getZCoordinate()219 void getZCoordinate()const 220 { 221 fprintf(mFile,"\"%s.ac.zc\"",mName.c_str()); 222 } getOrientMatrix()223 void getOrientMatrix()const 224 { 225 fprintf(mFile,"\"%s.om\"",mName.c_str()); 226 } getRotate()227 void getRotate()const 228 { 229 fprintf(mFile,"\"%s.r\"",mName.c_str()); 230 } getRotateX()231 void getRotateX()const 232 { 233 fprintf(mFile,"\"%s.r.rx\"",mName.c_str()); 234 } getRotateY()235 void getRotateY()const 236 { 237 fprintf(mFile,"\"%s.r.ry\"",mName.c_str()); 238 } getRotateZ()239 void getRotateZ()const 240 { 241 fprintf(mFile,"\"%s.r.rz\"",mName.c_str()); 242 } getRotateOrder()243 void getRotateOrder()const 244 { 245 fprintf(mFile,"\"%s.ro\"",mName.c_str()); 246 } getFlowNode()247 void getFlowNode()const 248 { 249 fprintf(mFile,"\"%s.fn\"",mName.c_str()); 250 } getGeometryPath()251 void getGeometryPath()const 252 { 253 fprintf(mFile,"\"%s.gp\"",mName.c_str()); 254 } getPositionMarkerTime(size_t pmt_i)255 void getPositionMarkerTime(size_t pmt_i)const 256 { 257 fprintf(mFile,"\"%s.pmt[%i]\"",mName.c_str(),pmt_i); 258 } getPositionMarkerTime()259 void getPositionMarkerTime()const 260 { 261 262 fprintf(mFile,"\"%s.pmt\"",mName.c_str()); 263 } getOrientationMarkerTime(size_t omt_i)264 void getOrientationMarkerTime(size_t omt_i)const 265 { 266 fprintf(mFile,"\"%s.omt[%i]\"",mName.c_str(),omt_i); 267 } getOrientationMarkerTime()268 void getOrientationMarkerTime()const 269 { 270 271 fprintf(mFile,"\"%s.omt\"",mName.c_str()); 272 } getNormal()273 void getNormal()const 274 { 275 fprintf(mFile,"\"%s.nr\"",mName.c_str()); 276 } getInverseUp()277 void getInverseUp()const 278 { 279 fprintf(mFile,"\"%s.iu\"",mName.c_str()); 280 } getInverseFront()281 void getInverseFront()const 282 { 283 fprintf(mFile,"\"%s.if\"",mName.c_str()); 284 } getFrontAxis()285 void getFrontAxis()const 286 { 287 fprintf(mFile,"\"%s.fa\"",mName.c_str()); 288 } getUpAxis()289 void getUpAxis()const 290 { 291 fprintf(mFile,"\"%s.ua\"",mName.c_str()); 292 } getWorldUpType()293 void getWorldUpType()const 294 { 295 fprintf(mFile,"\"%s.wut\"",mName.c_str()); 296 } getWorldUpVector()297 void getWorldUpVector()const 298 { 299 fprintf(mFile,"\"%s.wu\"",mName.c_str()); 300 } getWorldUpVectorX()301 void getWorldUpVectorX()const 302 { 303 fprintf(mFile,"\"%s.wu.wux\"",mName.c_str()); 304 } getWorldUpVectorY()305 void getWorldUpVectorY()const 306 { 307 fprintf(mFile,"\"%s.wu.wuy\"",mName.c_str()); 308 } getWorldUpVectorZ()309 void getWorldUpVectorZ()const 310 { 311 fprintf(mFile,"\"%s.wu.wuz\"",mName.c_str()); 312 } getWorldUpMatrix()313 void getWorldUpMatrix()const 314 { 315 fprintf(mFile,"\"%s.wum\"",mName.c_str()); 316 } getBank()317 void getBank()const 318 { 319 fprintf(mFile,"\"%s.b\"",mName.c_str()); 320 } getBankScale()321 void getBankScale()const 322 { 323 fprintf(mFile,"\"%s.bs\"",mName.c_str()); 324 } getBankLimit()325 void getBankLimit()const 326 { 327 fprintf(mFile,"\"%s.bl\"",mName.c_str()); 328 } 329 protected: 330 MotionPath(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true) DependNode(file,name,parent,nodeType,shared,create)331 :DependNode(file, name, parent, nodeType, shared, create) {} 332 333 }; 334 }//namespace MayaDM 335 #endif//__MayaDM_MOTIONPATH_H__ 336