- Main Page
- Related Pages
- Modules
- Classes
- Examples

# rockingTransformCheck.h

    //-
    // ==========================================================================
    // Copyright 1995,2006,2008 Autodesk, Inc. All rights reserved.
    //
    // Use of this software is subject to the terms of the Autodesk
    // license agreement provided at the time of installation or download,
    // or which otherwise accompanies this software in either electronic
    // or hard copy form.
    // ==========================================================================
    //+

    //
    // Define declarations
    //

    #include "rockingTransform.h"

    #define kRockingTransformCheckNodeID 0x8101D
    #define kRockingTransformCheckMatrixID 0x8101E

    #define ReturnOnError(status)              \
            if (MS::kSuccess != status) {      \
                return status;                \
            }

    //
    // Class declarations -- matrix and transform
    // NOTE: that we derive from the rockingTransform base
    // classes so that we avoid code duplication.
    //

    class rockingTransformCheckMatrix : public rockingTransformMatrix
    {
        // A really simple implementation of MPxTransformationMatrix.
        // The methods include:
        // - Two accessor methods for getting and setting the
        // rock
        // - The virtual asMatrix() method which passes the matrix
        // back to Maya when the command "xform -q -ws -m" is invoked

        public:
            rockingTransformCheckMatrix();
            static void *creator();

            static  MTypeId idCheck;
        private:
            typedef rockingTransformCheckMatrix ParentClass;
    };

    class rockingTransformCheckNode : public rockingTransformNode
    {
        public:
            // A really simple custom transform.
            rockingTransformCheckNode();
            rockingTransformCheckNode(MPxTransformationMatrix *);
            virtual ~rockingTransformCheckNode();

            virtual MPxTransformationMatrix *createTransformationMatrix();

            // Utility for getting the related rock matrix pointer
            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;
    };