70 import maya.OpenMaya 
as OpenMaya
 
   71 import maya.OpenMayaMPx 
as OpenMayaMPx
 
   73 kPluginName = 
"spBlindDoubleData" 
   82     stream=OpenMaya.MStreamUtils.stdOutStream()
 
   83     OpenMaya.MStreamUtils.writeCharBuffer(stream,msg)
 
   86 class blindDoubleData(OpenMayaMPx.MPxData):
 
   88         OpenMayaMPx.MPxData.__init__(self)
 
   90         fValueDictionary[OpenMayaMPx.asHashable(self)]=self.__fValue
 
   92     def readASCII(self, args, lastParsedElement):
 
   95                 parsedIndex = OpenMaya.MScriptUtil.getUint(lastParsedElement)
 
   96                 self.__fValue = args.asDouble( parsedIndex )
 
   98                 OpenMaya.MScriptUtil.setUint(lastParsedElement,parsedIndex)
 
   99                 fValueDictionary[OpenMayaMPx.asHashable(self)]=self.__fValue
 
  101             sys.stderr.write(
"Failed to read ASCII value.")
 
  104     def readBinary(self, inStream, length):
 
  105         readParam = OpenMaya.MScriptUtil(0.0)
 
  106         readPtr = readParam.asDoublePtr()
 
  107         OpenMaya.MStreamUtils.readDouble(inStream, readPtr, 
True )
 
  108         self.__fValue = readParam.getDouble(readPtr)
 
  110     def writeASCII(self, out):
 
  112             OpenMaya.MStreamUtils.writeDouble(out, self.__fValue, 
False)
 
  114             sys.stderr.write(
"Failed to write ASCII value.")
 
  117     def writeBinary(self, out):
 
  119             OpenMaya.MStreamUtils.writeDouble(out, self.__fValue, 
True)
 
  121             sys.stderr.write(
"Failed to write binary value.")
 
  124     def copy(self, other):
 
  127         self.__fValue = fValueDictionary[OpenMayaMPx.asHashable(other)]
 
  138     def setValue(self, newVal):
 
  139         self.__fValue = newVal
 
  142 class blindDoubleDataCmd(OpenMayaMPx.MPxCommand):
 
  144         OpenMayaMPx.MPxCommand.__init__(self)
 
  147     def doIt(self, args):
 
  157             sys.stderr.write(err)
 
  162         while not self.__iter.isDone():
 
  167                 self.__iter.getDependNode(dependNode)   
 
  169                 error(
"Error getting the dependency node")
 
  175                 error(
"Error creating MFnDependencyNode")
 
  181             newAttr = fnAttr.create(
"blindDoubleData", 
"BDD", kPluginDataId)
 
  185             fnDN.addAttribute(newAttr, OpenMaya.MFnDependencyNode.kLocalDynamicAttr)
 
  193             newData = OpenMayaMPx.asMPxPtr(blindDoubleData())
 
  194             newData.setValue(3.2)
 
  198             plug.setMPxData(newData)
 
  203                 sData = plug.asMObject()
 
  205                 error(
"Error getting value off plug")
 
  211             data = pdFn.constData()
 
  216                 error(
"Error: failed to retrieve data.")
 
  224     def isUndoable(self):
 
  233     return OpenMayaMPx.asMPxPtr(blindDoubleDataCmd())
 
  236     return OpenMayaMPx.asMPxPtr(blindDoubleData())
 
  239 def initializePlugin(mobject):
 
  240     mplugin = OpenMayaMPx.MFnPlugin(mobject, 
"Autodesk", 
"1.0", 
"Any")
 
  242         mplugin.registerData(kPluginName, kPluginDataId, dataCreator)
 
  244         sys.stderr.write(
"Failed to register new data type: %s\n" % kPluginName)
 
  248         mplugin.registerCommand(kPluginName, cmdCreator)
 
  250         sys.stderr.write(
"Failed to register command: %s\n" % kPluginName)
 
  255 def uninitializePlugin(mobject):
 
  256     mplugin = OpenMayaMPx.MFnPlugin(mobject)
 
  258         mplugin.deregisterCommand(kPluginName)
 
  260         sys.stderr.write(
"Failed to unregister command: %s\n" % kPluginName)
 
  264         mplugin.deregisterData(kPluginDataId)
 
  266         sys.stderr.write(
"Failed to unregister data type: %s\n" % kPluginName)