00001 #ifndef X3DTK_X3D_COORDINATEDEFORMER 00002 #define X3DTK_X3D_COORDINATEDEFORMER 00003 00004 #include "X3DTypes.h" 00005 #include "X3D_X3DGroupingNode.h" 00006 #include "X3D_X3DBoundedObject.h" 00007 00008 namespace X3DTK { 00009 namespace X3D { 00010 00019 class CoordinateDeformer : public X3DGroupingNode, public X3DBoundedObject 00020 { 00021 public: 00023 CoordinateDeformer(); 00025 CoordinateDeformer(const MFVec3f &controlPoint, 00026 const MFNode &inputCoord, 00027 const MFNode &inputTransform, 00028 const MFNode &outputCoord, 00029 const MFFloat &weight); 00031 virtual SFNode clone() const; 00033 virtual ~CoordinateDeformer(); 00034 00036 virtual MFNode getChildList() const; 00037 00039 virtual bool addChild(const SFNode &N); 00041 virtual bool setChild(const SFNode &N); 00042 00044 void setControlPoint(const MFVec3f &controlPoint); 00046 void setInputCoord(const MFNode &inputCoord); 00048 void setInputTransform(const MFNode &inputTransform); 00050 void setOutputCoord(const MFNode &outputCoord); 00052 void setWeight(const MFFloat &weight); 00053 00055 inline const MFVec3f &getControlPoint() const {return _controlPoint;}; 00057 inline const MFNode &getInputCoord() const {return _inputCoord;}; 00059 inline const MFNode &getInputTransform() const {return _inputTransform;}; 00061 inline const MFNode &getOutputCoord() const {return _outputCoord;}; 00063 inline const MFFloat &getWeight() const {return _weight;}; 00064 00066 virtual void load(const X3DFileElement *element); 00068 virtual SFString &write(SFString &output) const; 00069 00070 protected: 00072 CoordinateDeformer(const CoordinateDeformer &N); 00073 00074 private: 00076 MFVec3f _controlPoint; 00078 MFNode _inputCoord; 00080 MFNode _inputTransform; 00082 MFNode _outputCoord; 00084 MFFloat _weight; 00086 SFInt32 _uDimension; 00088 MFDouble _uKnot; 00090 SFInt32 _uOrder; 00092 SFInt32 _vDimension; 00094 MFDouble _vKnot; 00096 SFInt32 _vOrder; 00098 SFInt32 _wDimension; 00100 MFDouble _wKnot; 00102 SFInt32 _wOrder; 00103 }; 00104 00105 } 00106 } 00107 00108 #endif