import maya.cmds as cmds
import unittest
import MASH.api as mapi
reload(mapi)
import maya.mel as mel
import time
import MASH.dynamicsUtils as dynamics

cmds.file(force=True, new=True)

cmds.setAttr('persp.translateX', 35)
cmds.setAttr('persp.translateY', 20)
cmds.setAttr('persp.translateZ', 35)
cmds.setAttr('persp.rotateX', -30)
cmds.setAttr('persp.rotateY', 45)

cmds.polyPlane()

#create a new MASH network
mashNetwork = mapi.Network()
mashNetwork.createNetwork("DymamicsNetwork")

cmds.setAttr( mashNetwork.distribute+".arrangement", 2)
cmds.setAttr( mashNetwork.distribute+".pointCount", 30)
replicantsNode = mashNetwork.addNode("MASH_Replicator")
cmds.setAttr( replicantsNode.name+".replicants", 4)
cmds.setAttr( replicantsNode.name+".offsetPositionZ", -1.5)

dynamicsNode = mashNetwork.addNode("MASH_Dynamics")
constraintNode = mashNetwork.addConstraint(dynamicsNode)
cmds.setAttr( constraintNode.name+".constraintBreakable", 1)
cmds.setAttr( constraintNode.name+".constraintDistance", 2.5)

channelRandom = mashNetwork.addChannelRandom(constraintNode)
cmds.setAttr( channelRandom.name+".dynamicsChannelName", 0)
cmds.setAttr( channelRandom.name+".constraintChannelName", 3)
cmds.setAttr( channelRandom.name+".startValue", 30)
falloff = channelRandom.addFalloff()
cmds.setAttr( falloff+".falloffShape", 2)
cmds.setAttr( falloff+".innerRadius", 1)
cmds.setAttr( falloff+".falloffRamp[0].falloffRamp_FloatValue", 0.9)
falloffParent = cmds.listRelatives(falloff, parent=True)[0]
cmds.setAttr( falloffParent+".invertFalloff", 1)
cmds.setAttr( falloffParent+".translateY", -10)
cmds.setAttr( falloffParent+".translateZ", -3)

solver = cmds.ls(type="MASH_BulletSolver")[0]
cmds.setAttr( solver+".displayConstraints", 1)

#playblast
cmds.playbackOptions( maxTime='10sec')
cmds.playblast(format="qt", viewer=True, p=100 )
