00001
00002
00004
00005 #ifndef COORDINATEDEFORMER
00006 #define COORDINATEDEFORMER
00007
00008 #include "X3DTypes.h"
00009 #include "X3DGroupingNode.h"
00010 #include "X3DBoundedObject.h"
00011
00012 namespace X3DTK {
00013 namespace X3D {
00014
00019
00020 class CoordinateDeformer : public X3DGroupingNode, public X3DBoundedObject
00021 {
00022 public:
00024 CoordinateDeformer();
00026 CoordinateDeformer(const MFVec3f &controlPoint,
00027 const MFNode &inputCoord,
00028 const MFNode &inputTransform,
00029 const MFNode &outputCoord,
00030 const MFFloat &weight);
00032 virtual SFNode clone() const;
00034 virtual ~CoordinateDeformer();
00035
00037 virtual bool addChild(const SFAbstractNode &N);
00039 virtual bool setChild(const SFAbstractNode &N);
00040
00042 void setControlPoint(const MFVec3f &controlPoint);
00044 void setInputCoord(const MFNode &inputCoord);
00046 void setInputTransform(const MFNode &inputTransform);
00048 void setOutputCoord(const MFNode &outputCoord);
00050 void setWeight(const MFFloat &weight);
00051
00053 inline const MFVec3f &getControlPoint() const {return _controlPoint;};
00055 inline const MFNode &getInputCoord() const {return _inputCoord;};
00057 inline const MFNode &getInputTransform() const {return _inputTransform;};
00059 inline const MFNode &getOutputCoord() const {return _outputCoord;};
00061 inline const MFFloat &getWeight() const {return _weight;};
00062
00064 virtual void load(const X3DFileElement *element);
00066 virtual SFString write() const;
00067
00068 protected:
00070 CoordinateDeformer(const CoordinateDeformer &N);
00071
00072 private:
00074 MFVec3f _controlPoint;
00076 MFNode _inputCoord;
00078 MFNode _inputTransform;
00080 MFNode _outputCoord;
00082 MFFloat _weight;
00084 SFInt32 _uDimension;
00086 MFDouble _uKnot;
00088 SFInt32 _uOrder;
00090 SFInt32 _vDimension;
00092 MFDouble _vKnot;
00094 SFInt32 _vOrder;
00096 SFInt32 _wDimension;
00098 MFDouble _wKnot;
00100 SFInt32 _wOrder;
00101 };
00102
00103 }
00104 }
00105
00106 #endif