Creating a simple DzERCLink between two new parameters
3dcheapskate
Posts: 2,719
My script creates two brand new parameters.
I want to connect them using an ERCLink, with a predefined scaling factor (old-school 'deltaAddDelta' with a factor of 0.5).
But how ? (Read the bottom part of the code to see my problem)
Here's the basics:
// Set up the master property var oProperty1 = new DzIntProperty(); oProperty1.name = "Texture Column (0 or 1)" oProperty1.setLabel( "Texture Column (0 or 1)" ); oProperty1.setPath( "Book Selection" ); oProperty1.setIsUserProperty( true ); oProperty1.setNew( true ); oProperty1.setMin(0); oProperty1.setMax(1); oProperty1.setIsClamped(true); oProperty1.setSensitivity(1); oProperty1.setValue(0); oNode.addProperty( oProperty1 ); //Set up the slave property var oProperty2 = new DzFloatProperty(); oProperty2.name = "Horizontal Offset" oProperty2.setLabel( "Horizontal Offset" ); oProperty2.setPath( "Book Selection/Material Tiling Proxies" ); oProperty2.setIsUserProperty( true ); oProperty2.setNew( true ); oProperty2.setDisplayAsPercent( false ); var oPropertyAlreadyThere = findElementProperty( oNode, oProperty2.name ); oNode.addProperty( oProperty2 ); // Create a new DzERCLink (which inherits from DzNumericController and DzController) // It appears that both the constructor and 'setProperty()' connect the master... oERCLink = new DzERCLink(oProperty) // I assume that this is the master ? It doesn't appear to be the slave. oERCLink.setProperty(oProperty1) // "Sets the property that drives this link. " i.e. the master // So I assume that to set upthe slave I now have to add oERCLink as a 'controller' to oProperty2 // DzProperty includes lots of '~~~~Controllers()' methods but I can't see any for ADDING a controller // ??? BUT HOW ???
This is related to my Creating dependencies between settings on the Surfaces tab and Parameters tab thread
Post edited by 3dcheapskate on
Comments
This is snipped from a very old script of mine:
which looks right by the current refs.
Thanks Richard, DzNumericProperty::insertController() does the trick - I can't see how I overlooked it !
This works...
...but I want to set the multiplier to 0.5.
So I tried a different constructor (sidenote: yours isn't listed in the documentation)
My script errorss and the log file gives me...
WARNING: ReferenceError: Can't find variable: ERCDeltaAdd
I just cannot work out how to use the ERCType enumeration ! (Yes,I'm very rusty)
Obviously not just ERCDeltaAdd. Nor does it appear to be ERCType.ERCDeltaAdd (that appears to be the Java jive)...
I've rummaged around in the DAZ Script basics to no avail. I've Googled 'qtscript enum' and 'ecmascript enum' and that just confused me even more.Anyway, here' are the relevant bits of documentation:
Try DzERCLink.ERCDeltaAdd - the enumerations belong to the object, they are not globals.
Thanks again Richard !