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_GRAVITYFIELD_H__
11 #define __MayaDM_GRAVITYFIELD_H__
12 #include "MayaDMTypes.h"
13 #include "MayaDMConnectables.h"
14 #include "MayaDMField.h"
15 namespace MayaDM
16 {
17 class GravityField : public Field
18 {
19 public:
20 	struct Direction{
21 		double directionX;
22 		double directionY;
23 		double directionZ;
writeDirection24 		void write(FILE* file) const
25 		{
26 			fprintf(file,"%f ", directionX);
27 			fprintf(file,"%f ", directionY);
28 			fprintf(file,"%f", directionZ);
29 		}
30 	};
31 public:
32 
GravityField()33 	GravityField():Field(){}
34 	GravityField(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
35 		:Field(file, name, parent, "gravityField", shared, create){}
~GravityField()36 	virtual ~GravityField(){}
37 
setDirection(const Direction & d)38 	void setDirection(const Direction& d)
39 	{
40 		fprintf(mFile,"\tsetAttr \".d\" ");
41 		d.write(mFile);
42 		fprintf(mFile,";\n");
43 	}
setDirectionX(double dx)44 	void setDirectionX(double dx)
45 	{
46 		if(dx == 0.0) return;
47 		fprintf(mFile,"\tsetAttr \".d.dx\" %f;\n", dx);
48 	}
setDirectionY(double dy)49 	void setDirectionY(double dy)
50 	{
51 		if(dy == 0.0) return;
52 		fprintf(mFile,"\tsetAttr \".d.dy\" %f;\n", dy);
53 	}
setDirectionZ(double dz)54 	void setDirectionZ(double dz)
55 	{
56 		if(dz == 0.0) return;
57 		fprintf(mFile,"\tsetAttr \".d.dz\" %f;\n", dz);
58 	}
getDirection()59 	void getDirection()const
60 	{
61 		fprintf(mFile,"\"%s.d\"",mName.c_str());
62 	}
getDirectionX()63 	void getDirectionX()const
64 	{
65 		fprintf(mFile,"\"%s.d.dx\"",mName.c_str());
66 	}
getDirectionY()67 	void getDirectionY()const
68 	{
69 		fprintf(mFile,"\"%s.d.dy\"",mName.c_str());
70 	}
getDirectionZ()71 	void getDirectionZ()const
72 	{
73 		fprintf(mFile,"\"%s.d.dz\"",mName.c_str());
74 	}
75 protected:
76 	GravityField(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
Field(file,name,parent,nodeType,shared,create)77 		:Field(file, name, parent, nodeType, shared, create) {}
78 
79 };
80 }//namespace MayaDM
81 #endif//__MayaDM_GRAVITYFIELD_H__
82