Scripted Modifier Animation Question

I have a modifier I am working on that is almost fully functional. I cannot figure out how to get the value of an animated slider to return a command on each frame of animation.

on xxxxx set val do xxxxx does work unless I manually update the value on each frame.

Is there a better way to detect that a parameter has changed and to fire a command because of it?


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
PowerCreative's picture

Grow Selection With Invert Modifier

Below is the code I am working through. I have gotten closer, but now none of the ButtonOp commands work with an extended edit_poly or poly_select. Below is my current code with edit_poly extended. It is so close to functional.

plugin modifier PowerGrowSelMod
classID:#(0xd5b9689, 0x5de6b389)
extends:Edit_Poly replaceUI:false version:2
function  growsel = (
 --print "growsel properly defined"  --FUNCTIONS PROPERLY
 frameInterval = this.frameInterval   --FUNCTIONS PROPERLY
 polySourceID = this.polySourceID  --FUNCTIONS PROPERLY
 invCb = this.invCb  --FUNCTIONS PROPERLY
 theLoopCount = (currentTime as integer)/TicksPerFrame --FUNCTIONS PROPERLY
 delegate.setSelection #Face #{} --clearSelection  --FUNCTIONS PROPERLY
 delegate.Select #Face #{polySourceID}
 for i = 1 to theLoopCount by frameInterval do ( --grow selection based off time and intervals
	--print ("CALL COUNT "+i as string)   --FUNCTIONS PROPERLY
	 delegate.ButtonOp #GrowSelection -- grow selection from stack
 if (invCb == true) then delegate.setSelection #Face -(delegate.getSelection #Face)  --FUNCTIONS PROPERLY INVERTS SELECTION
 delegate.ButtonOp #UnhideAllFace
 delegate.ButtonOp #HideFace
  parameters main rollout:params
    frameInterval type:#integer animatable:true ui:frameInterval default:1
	polySourceID  type:#integer animatable:true ui:polySourceID  default:1 
	invCb type:#boolean animatable:true ui:invCb default:false
    on frameInterval set val do  growsel() 
	on polySourceID  set val do  growsel()  
	on invCb set val do  growsel() 
rollout params "Power GrowSelection Params"
	spinner frameInterval "FrameInterval: " range:[1,999999,1] type:#integer
	spinner polySourceID  "SourcePoly#: " range:[1,999999,1] type:#integer
	checkbox invCb "InvertSelection" checked:false
on create do
delegate.SetEPolySelLevel #Face
--callbacks.removeScripts #modPanelObjPostChange id:#PowerGrowSelCB1
--callbacks.addScript #modPanelObjPostChange "growsel()"  id:#PowerGrowSelCB1 persistent:true 
--callbacks.addscript #filePostOpen "growsel(frameInterval polySourceID  invCb)" persistent:true
unregisterTimeCallback growsel
registerTimeCallback growsel

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.