import sys
import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx
kPluginIdNumber = 0x00077777
kPluginNodeTypeName = "jooDGScaffold"
kCreate2ColorSetsByNameId = OpenMaya.MTypeId(kPluginIdNumber)
# The actual node
class jooDGScaffold(OpenMayaMPx.MPxNode):
input1 = OpenMaya.MObject()
input2 = OpenMaya.MObject()
output = OpenMaya.MObject()
def __init__(self):
OpenMayaMPx.MPxNode.__init__(self)
# Calculate result based on what is being asked as output
def compute(self,plug,dataBlock):
if (plug == jooDGScaffold.output):
in1Handle = dataBlock.inputValue( jooDGScaffold.input1 )
in2Handle = dataBlock.inputValue( jooDGScaffold.input2 )
outHandle = dataBlock.outputValue( jooDGScaffold.output )
in1 = in1Handle.asFloat()
in2 = in2Handle.asFloat()
result = (in1 + in2) * 2
outHandle.setFloat( result )
dataBlock.setClean( plug )
else:
return OpenMaya.kUnknownParameter
# Declarations on what kinds of attributes the node has and how they affect
# output. You need to change this part
def nodeInitializer():
# input connections
nAttr = OpenMaya.MFnNumericAttribute()
jooDGScaffold.input1 = nAttr.create("input1", "in1",
OpenMaya.MFnNumericData.kFloat, 0.0)
nAttr.setStorable(1)
nAttr = OpenMaya.MFnNumericAttribute()
jooDGScaffold.input2 = nAttr.create("input2", "in2",
OpenMaya.MFnNumericData.kFloat, 0.0)
nAttr.setStorable(1)
# output connections
nAttr = OpenMaya.MFnNumericAttribute()
jooDGScaffold.output = nAttr.create("out", "o",
OpenMaya.MFnNumericData.kFloat, 0.0)
nAttr.setStorable(1)
nAttr.setWritable(1)
# finaly add defined attributes and describe how they affect each other
jooDGScaffold.addAttribute( jooDGScaffold.input1 )
jooDGScaffold.addAttribute( jooDGScaffold.input2 )
jooDGScaffold.addAttribute( jooDGScaffold.output )
jooDGScaffold.attributeAffects(jooDGScaffold.input1, jooDGScaffold.output)
jooDGScaffold.attributeAffects(jooDGScaffold.input2, jooDGScaffold.output)
############### boilerplate follows ####################
def nodeCreator():
return OpenMayaMPx.asMPxPtr( jooDGScaffold() )
def initializePlugin(mobject):
mplugin = OpenMayaMPx.MFnPlugin(mobject)
if kPluginIdNumber <= 0x0007ffff:
msg = """\
WARNING %s: Node id needs to be changed if you want
to distribute this node. contact autodesk for an id""" % kPluginNodeTypeName
sys.stderr.write( msg )
try:
mplugin.registerNode( kPluginNodeTypeName,
kCreate2ColorSetsByNameId,
nodeCreator, nodeInitializer )
except:
sys.stderr.write( "Failed to register node: %s" % kPluginNodeTypeName )
raise
def uninitializePlugin(mobject):
mplugin = OpenMayaMPx.MFnPlugin(mobject)
try:
mplugin.deregisterNode( kCreate2ColorSetsByNameId )
except:
sys.stderr.write("Failed to deregister node: %s" % kPluginNodeTypeName)
raise