macroscript SpringLink category:"Bobo_s Tools"
(

--SpringLink
--Version 0.1
--Started: 12/29/99
--Edited:  12/29/99
--by Borislav Petrov
--http://gfxcentral.com/bobo/
--------------------------------------------------

global child_o 
fn filter_child obj = ( findstring obj.name "SL_" == undefined)
fn filter_parent obj = ( (findstring obj.name "SL_" == undefined) and (obj != child_o) )

txt = "Select CHILD Object..."
child_o = pickobject message:txt prompt:txt filter:filter_child 
txt = "Select PARENT Object..."
parent_o = pickobject message:txt prompt:txt filter:filter_parent



vert_array = #()
append vert_array child_o.pos
append vert_array (parent_o.pos-[5,0,0])
append vert_array (parent_o.pos+[5,0,0])
face_array = #([1,2,3])

Spring_o = mesh vertices:vert_array faces:face_array
Spring_o.name = (uniquename ("SL_"+parent_o.name+"_"+child_o.name+"_"))
Spring_o.renderable = false

Spring_o.pivot = parent_o.pos
addmodifier Spring_o (flex center:Parent_o.pos flex:5)
Spring_o.parent = parent_o
if classof child_o.position.controller != position_list then
(
child_o.pos = [0,0,0]
child_o.position.controller = position_list() 
child_o.position.controller.available.controller = position_script() 
)

pos_list = getsubanimnames child_o.position.controller
pos_script = findItem pos_list #position_script
txt = "try(getvert $"+Spring_o.name+" 1)\n"
txt += "catch([0,0,0])\n"
child_o.position.controller[pos_script].script = txt

select Spring_o
max modify mode
)