rockingTransformCheck.h
#include "rockingTransform.h"
#define kRockingTransformCheckNodeID 0x8101D
#define kRockingTransformCheckMatrixID 0x8101E
#define ReturnOnError(status)                      \
                if (MS::kSuccess != status) {      \
                        return status;                            \
                }
class rockingTransformCheckMatrix : public rockingTransformMatrix
{
        
        
        
        
        
        
        public:
                rockingTransformCheckMatrix();
                static void *creator();
                                
                static  MTypeId idCheck;
        private:                
                typedef rockingTransformCheckMatrix ParentClass;
};
class rockingTransformCheckNode : public rockingTransformNode 
{
        public:
                
                rockingTransformCheckNode();
                rockingTransformCheckNode(MPxTransformationMatrix *);
                virtual ~rockingTransformCheckNode();
                virtual MPxTransformationMatrix *createTransformationMatrix();
                                                                                
                
                rockingTransformCheckMatrix *getRockingTransformCheckMatrix();
                                
                const char* className();
                static  void *  creator();
                
                static  MTypeId idCheck;
                
        protected:
                virtual MEulerRotation applyRotationLocks(const MEulerRotation &toTest,
                                                                                        const MEulerRotation &savedR,
                                                                                        MStatus *ReturnStatus = NULL);
                virtual MEulerRotation applyRotationLimits(const MEulerRotation &unclampedR,
                                                                                          MDataBlock &block,
                                                                                          MStatus *ReturnStatus = NULL);
                virtual MStatus checkAndSetRotation(MDataBlock &block,
                                                                                        const MPlug&,
                                                                                        const MEulerRotation&, 
                                                                                        MSpace::Space = MSpace::kTransform);  
        
        private:
                typedef rockingTransformNode ParentClass;
};