#!BPY
""" Released under the Blender Artistic Licence (BAL)
Name: 'Displace Verts'
Blender: 237
Group: 'Mesh'
Tooltip: 'Displaces selected verts only.'
"""
__author__ = "pat"
__version__ = "1.0a - 01/10/05 -"
__email__ = ('Author, pat:psycho3d*de')
__url__ = ("Author's website, www.psycho3d.de")
__bpydoc__ ="""\
This script displaces the selected verts only. It should be called from EditMode.
"""

import Blender
from Blender.Draw import *
from Blender.BGL import *
from random import randint

### config ###
master = Create(0.)
displaceX = Create(0.)
displaceY = Create(0.)
displaceZ = Create(0.)

def displace():
	ob=Blender.Object.GetSelected()[0]
	Blender.Window.EditMode(0)
	me = ob.getData()
	for vert in me.verts:
	   if (vert.sel == 1):
	      vert.co[0] += randint(-1000,1000)/1000. * displaceX.val
	      vert.co[1] += randint(-1000,1000)/1000. * displaceY.val
	      vert.co[2] += randint(-1000,1000)/1000. * displaceZ.val
	me.update()
	Blender.Window.EditMode(1)

def gui():
	global displaceX, displaceY, displaceZ, master
	col = Blender.Window.Theme.Get()[0].get("buts").back
	glClearColor(col[0]/255., col[1]/255., col[2]/255., col[3]/255.)
	glClear(GL_COLOR_BUFFER_BIT)
	master = Number("Master: ", 4, 10, 180, 100, 20, master.val, 0., 5.)
	displaceX = Number("X: ", 2, 10, 150, 100, 20, displaceX.val, 0., 5.)
	displaceY = Number("Y: ", 2, 10, 120, 100, 20, displaceY.val, 0., 5.)
	displaceZ = Number("Z: ", 2, 10, 90, 100, 20, displaceZ.val, 0., 5.)
	Button("Displace", 3, 10, 60, 100, 20, "Die eingestellten Werte auf die ausgewählten Verts anwenden.")
	Button("Beenden", 1, 10, 30, 100, 20, "Selbsterklärend :)")
  
def event(evt, val):
	if (evt == QKEY and not val): Exit()
def bevent(evt):
	if (evt == 1): Exit()
	elif evt == 3:
		displace()
	elif (evt == 4):
		displaceX.val=master.val
		displaceY.val=master.val
		displaceZ.val=master.val
		Redraw()

Register(gui, event, bevent)