69 import maya.OpenMaya 
as OpenMaya
 
   70 import maya.OpenMayaAnim 
as OpenMayaAnim
 
   71 import maya.OpenMayaMPx 
as OpenMayaMPx
 
   72 import maya.cmds 
as cmds
 
   74 kPluginNodeTypeName = 
"spyTwistNode" 
   78 kApiVersion = cmds.about(apiVersion=
True)
 
   79 if kApiVersion < 201600:
 
   80     outputGeom = OpenMayaMPx.cvar.MPxDeformerNode_outputGeom
 
   81     envelope = OpenMayaMPx.cvar.MPxDeformerNode_envelope
 
   83     outputGeom = OpenMayaMPx.cvar.MPxGeometryFilter_outputGeom
 
   84     envelope = OpenMayaMPx.cvar.MPxGeometryFilter_envelope
 
   87 class yTwistNode(OpenMayaMPx.MPxDeformerNode):
 
   92         OpenMayaMPx.MPxDeformerNode.__init__(self)
 
   94     def deform(self,dataBlock,geomIter,matrix,multiIndex):
 
   97         angleHandle = dataBlock.inputValue( self.angle )
 
   98         angleValue = angleHandle.asDouble()
 
  101         envelopeHandle = dataBlock.inputValue( envelope )
 
  102         envelopeValue = envelopeHandle.asFloat()
 
  105         while geomIter.isDone() == 
False:
 
  106             point = geomIter.position()
 
  107             ff = angleValue * point.y * envelopeValue
 
  111                 tt= point.x*cct-point.z*cst
 
  112                 point.z= point.x*cst + point.z*cct
 
  114             geomIter.setPosition( point )
 
  119     return OpenMayaMPx.asMPxPtr( yTwistNode() )
 
  122 def nodeInitializer():
 
  125     yTwistNode.angle = nAttr.create( 
"angle", 
"fa", OpenMaya.MFnNumericData.kDouble, 0.0 )
 
  127     nAttr.setKeyable(
True)
 
  130         yTwistNode.addAttribute( yTwistNode.angle )
 
  131         yTwistNode.attributeAffects( yTwistNode.angle, outputGeom )
 
  133         sys.stderr.write( 
"Failed to create attributes of %s node\n", kPluginNodeTypeName )
 
  136 def initializePlugin(mobject):
 
  137     mplugin = OpenMayaMPx.MFnPlugin(mobject)
 
  139         mplugin.registerNode( kPluginNodeTypeName, yTwistNodeId, nodeCreator, nodeInitializer, OpenMayaMPx.MPxNode.kDeformerNode )
 
  141         sys.stderr.write( 
"Failed to register node: %s\n" % kPluginNodeTypeName )
 
  144 def uninitializePlugin(mobject):
 
  145     mplugin = OpenMayaMPx.MFnPlugin(mobject)
 
  147         mplugin.deregisterNode( yTwistNodeId )
 
  149         sys.stderr.write( 
"Failed to unregister node: %s\n" % kPluginNodeTypeName )