rendered paste bodyimport Blender
from Blender import *
global slider1
global button1
global slider2
global button2
global slider3
global button3
def event(evt, val): # the function to handle input events
if not val: # val = 0: it's a key/mbutton release
Draw.Redraw(1)
return
def whichButton(evt):
if evt == 1:
setIpoCurveVal("ObIpo", "LocX", slider1.val)
if evt == 2:
removeKey("ObIpo", "LocX")
if evt == 3:
setIpoCurveVal("ObIpo", "LocY", slider2.val)
if evt == 4:
removeKey("ObIpo", "LocY")
if evt == 5:
setIpoCurveVal("ObIpo", "LocZ", slider3.val)
if evt == 6:
removeKey("ObIpo", "LocZ")
def gui():
global slider1
global button1
global slider2
global button2
global slider3
global button3
posx = 10
posy = 300
width = 200
height = 20
slider1.val = getIpoCurveVal("ObIpo", "LocX")
slider1 = Draw.Number("custom attr 1: ", 1, posx, posy, width, height, slider1.val, -100.0, 100.0, "")
button1 = Draw.PushButton("Remove Key", 2, posx + width + 20, posy, 100, height, "Remove Key")
posy -= 20
slider2.val = getIpoCurveVal("ObIpo", "LocY")
slider2 = Draw.Number("custom attr 2: ", 3, posx, posy, width, height, slider2.val, -100.0, 100.0, "")
button2 = Draw.PushButton("Remove Key", 4, posx + width + 20, posy, 100, height, "Remove Key")
posy -= 20
slider3.val = getIpoCurveVal("ObIpo", "LocZ")
slider3 = Draw.Number("custom attr 3: ", 5, posx, posy, width, height, slider3.val, -100.0, 100.0, "")
button3 = Draw.PushButton("Remove Key", 6, posx + width + 20, posy, 100, height, "Remove Key")
Draw.Redraw(1)
def reallyUpdate():
Blender.Redraw()
Blender.Set("curframe", Blender.Get("curframe") + 1)
Blender.Redraw()
Blender.Set("curframe", Blender.Get("curframe") - 1)
Blender.Redraw()
def getIpoCurveVal(ipoName, ipoCurveName):
ipo = Ipo.Get(ipoName)
for x in range(len(ipo.curves)):
if ipo.curves[x].name == ipoCurveName:
foundCurve = ipo.curves[x]
break
return foundCurve[Blender.Get("curframe")]
def setIpoCurveVal(ipoName, ipoCurveName, val):
ipo = Ipo.Get(ipoName)
for x in range(len(ipo.curves)):
if ipo.curves[x].name == ipoCurveName:
foundCurve = ipo.curves[x]
break
foundCurve.append((Blender.Get("curframe"), val))
foundCurve.recalc()
reallyUpdate()
def removeKey(ipoName, ipoCurveName):
ipo = Ipo.Get(ipoName)
for x in range(len(ipo.curves)):
if ipo.curves[x].name == ipoCurveName:
foundCurve = ipo.curves[x]
break
bezPoints = foundCurve.bezierPoints
for incr in range(len(bezPoints)):
if abs(bezPoints[incr].pt[0] - Blender.Get("curframe")) < 0.001:
foundCurve.delBezier(incr)
reallyUpdate()
break
slider1 = Draw.Create(getIpoCurveVal("ObIpo", "LocX"))
slider2 = Draw.Create(getIpoCurveVal("ObIpo", "LocY"))
slider3 = Draw.Create(getIpoCurveVal("ObIpo", "LocZ"))
button1 = Draw.Create(0)
button2 = Draw.Create(0)
button3 = Draw.Create(0)
Draw.Register(gui, event, whichButton)