WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   selection of multiple properties, code help? (https://forum.worldviz.com/showthread.php?t=2214)

GiudiceLab 08-18-2009 12:43 PM

selection of multiple properties, code help?
 
I am trying to modify some sound object properties on the fly, so I can hear the differences as I make changes. I know the changes will be updated without restarting the script, because I can make this work with presets.

I want to be able to select the property I want to change from a list and then use an input value to update the property.

Code:

def modifySettings(gr):
        settings = ['Environment','EnvSize','EnvDiffusion','RoomHF','RoomLF','DecayTime','DecayHFRatio','DecayLFRatio',
'Reflections','ReflectionsDelay','ReflectionsPan','Reverb','ReverbDelay','ReverbPan','EchoTime','EchoDepth',
'ModulationTime','ModulationDepth','AirAbsorptionHF','HFReference','LFReference','RoomRolloffFactor','Flags']
        select = viz.choose('Modify which setting?',settings)
        set = viz.input('Set '+settings[select]+' to')
        if settings[select] == 'Environment':
                gr.Environment = set
(twenty more elifs...)
        else:
                print 'I cannot change that setting'

Basically, I don't want to write a bunch of if statements unless I have to, so is there a simple way of doing this? Something that would be kind of like:
Code:

gr.settings[select] = set

farshizzo 08-18-2009 12:54 PM

There are a few ways to accomplish this. If all the choice strings exactly match the attribute name on the gr object, then you can use the following code:
Code:

def modifySettings(gr):
        settings = ['Environment','EnvSize','EnvDiffusion','RoomHF','RoomLF','DecayTime','DecayHFRatio','DecayLFRatio',
'Reflections','ReflectionsDelay','ReflectionsPan','Reverb','ReverbDelay','ReverbPan','EchoTime','EchoDepth',
'ModulationTime','ModulationDepth','AirAbsorptionHF','HFReference','LFReference','RoomRolloffFactor','Flags']
        name = settings[viz.choose('Modify which setting?',settings)]
        value = viz.input('Set '+name+' to')
        setattr(gr,name,value)


GiudiceLab 08-19-2009 03:45 PM

Sweet. Worked like a charm. Thanks!


All times are GMT -7. The time now is 03:36 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC