--unhideobjects rollout roll_unhide "Unhide By Movement" ( local ListOfObjects = #() local ListOfNames = #() local ListOfVisible = #() local ControlObject pickbutton pcbControlObject "Pick Control Object" autoDisplay:true width:150 height:25 align:#center spinner spnRadius "Radius" range:[0.001,1000000,10] width:150 align:#left tooltip:"Unhide in radius" checkbox chbX "X" across:3 checked:true checkbox chbY "Y" selected:true checked:true checkbox chbZ "Z" selected:true checked:true button btnAddObjects "Add Slaves" width:150 height:25 align:#center tooltip:"Add Selected" multilistbox mlbObjects width:150 height:10 align:#center label lblNumberOfObjects "no objects" spinner spnFadeIn "Fade in over" range:[0,1000,5] tooltip:"number of frames" type:#integer spinner spnFrom "From" across:2 type:#integer fieldwidth:35 range:[0,100000,0] spinner spnTo "To" type:#integer fieldwidth:35 range:[1,100000,100] button btnAnimate "Animatie visibility" width:150 height:25 on pcbControlObject picked arg do ( ControlObject = arg if classOf ControlObject == Sphere do spnRadius.value = ControlObject.radius ) on btnAddObjects pressed do ( for obj in selection do appendIfUnique ListOfObjects obj ListOfNames = for obj in ListOfObjects collect obj.name mlbObjects.items = ListOfNames lblNumberOfObjects.text = ListOfObjects.count as string + " objects" ) on mlbObjects doubleClicked index do ( ListOfObjects = deleteItem ListOfObjects index ListOfNames = deleteItem ListOfNames index mlbObjects.items = ListOfNames lblNumberOfObjects.text = ListOfObjects.count as string + " objects" ) on btnAnimate pressed do ( if ControlObject != undefined and IsDeleted ControlObject == false do ( --assign visibility track for each slave for obj in ListOfObjects do ( if obj[1].controller == undefined do obj.visibility = bezier_float() key = addNewKey obj[1].controller currentTime key.value = 0 key.outTangentType = #step ) for f=1 to ListOfObjects.count do ListOfVisible[f] = false for i = spnFrom.value to spnTo.value do ( sliderTime = i --check for every objects if its in range for o=1 to ListOfObjects.count do ( if ListOfVisible[o] == false do ( sPos = Point3 0 0 0 mPos = Point3 0 0 0 if chbX.checked == true do (sPos.x = ListOfObjects[o].pos.x;mPos.x = ControlObject.pos.x) if chbY.checked == true do (sPos.y = ListOfObjects[o].pos.y;mPos.y = ControlObject.pos.y) if chbZ.checked == true do (sPos.z = ListOfObjects[o].pos.z;mPos.z = ControlObject.pos.z) if (distance mPos sPos) < spnRadius.value do ( if spnFadeIn.value != 0 then ( key = addNewKey ListOfObjects[o][1].controller currentTime key.value = 0 key.outTangentType = #slow key = addNewKey ListOfObjects[o][1].controller (currentTime+spnFadeIn.value) key.value = 1 key.outTangentType = #slow ListOfVisible[o] = true ) else ( key = addNewKey ListOfObjects[o][1].controller currentTime key.value = 1 key.outTangentType = #step ListOfVisible[o] = true ) ) ) ) ) ) ) ) createDialog roll_unhide width:150 style:#(#style_toolwindow,#style_sysmenu)