// // Node initialize method. We configure node // attributes here. Static method so // *this is not available. // MStatus rockingTransformNode::initialize() { MFnNumericAttribute numFn; aRockInX = numFn.create("RockInX", "rockx", MFnNumericData::kDouble, 0.0); numFn.setKeyable(true); numFn.setAffectsWorldSpace(true); addAttribute(aRockInX); MStatus stat; MFnNumericAttribute numAttr; aframe = numAttr.create( "currentTime", "ct", MFnNumericData::kDouble, 1.0 ); numAttr.setStorable(true); numAttr.setKeyable(true); addAttribute( aframe ); aminframe = numAttr.create( "minFrame", "mnf", MFnNumericData::kInt, 1 ); numAttr.setStorable(true); numAttr.setKeyable(true); addAttribute( aminframe ); amaxframe = numAttr.create( "maxFrame", "mxf", MFnNumericData::kInt, 24 ); numAttr.setStorable(true); numAttr.setKeyable(true); addAttribute( amaxframe ); MFnTypedAttribute stringAttr; acachename = stringAttr.create( "cachePath", "cp", MFnData::kString ); stringAttr.setStorable(true); stringAttr.setInternal(true); addAttribute( acachename ); ameshname = stringAttr.create( "meshName", "mn", MFnData::kString ); stringAttr.setStorable(true); stringAttr.setInternal(true); addAttribute(ameshname); // This is required so that the validateAndSet method is called //mustCallValidateAndSet(aRockInX); mustCallValidateAndSet(aframe); return MS::kSuccess; }