Platform SDK: DirectX |
The DirectInputEffect.SetParameters method sets the characteristics of an effect.
object.SetParameters(effectinfo As DIEFFECT, flags As CONST_DIEPFLAGS)
If the method fails, an error is raised and Err.Number may be set to one of the following:
DIERR_NOTINITIALIZED |
DIERR_INCOMPLETEEFFECT |
DIERR_INPUTLOST |
DIERR_INVALIDPARAM |
DIERR_EFFECTPLAYING |
To determine which parameters can be dynamically updated while the effect is playing, use the DirectInputEnumEffects.GetDynamicParams method.
The DirectInputEffect.SetParameters method automatically downloads the effect, but this behavior can be suppressed by setting the DIEP_NODOWNLOAD flag. If automatic download has been suppressed, then you can manually download the effect by calling DirectInputEffect.Download.
If the effect is playing while the parameters are changed, then the new parameters take effect as if they were the parameters when the effect started.
For example, suppose a periodic effect with a duration of three seconds is started. After two seconds, the direction of the effect is changed. The effect will then continue for one additional second in the new direction. The envelope, phase, amplitude, and other parameters of the effect continue smoothly as if the direction had not changed.
In the same scenario, if after two seconds the duration of the effect were changed to 1.5 seconds, then the effect would stop.
Normally, if the driver cannot update the parameters of a playing effect, the driver is permitted to stop the effect, update the parameters, and then restart the effect. Passing the DIEP_NORESTART flag suppresses this behavior. If the driver cannot update the parameters of an effect while it is playing, the error code DIERR_EFFECTPLAYING is returned and the parameters are not updated.
No more than one of the DIEP_NODOWNLOAD, DIEP_START, and DIEP_NORESTART flags should be set. (It is also valid to pass none of them.)
These three flags control download and playback behavior as follows:
If DIEP_NODOWNLOAD is set, the effect parameters are updated but not downloaded to the device.
If the DIEP_START flag is set, the effect parameters are updated and downloaded to the device, and the effect is started just as if the DirectInputEffect.Start method had been called with the iterations parameter set to 1 and with no flags. (Combining the update with DIEP_START is slightly faster than calling Start separately, because it requires less information to be transmitted to the device.)
If neither DIEP_NODOWNLOAD nor DIEP_START is set and the effect is not playing, then the parameters are updated and downloaded to the device.
If neither DIEP_NODOWNLOAD nor DIEP_START is set and the effect is playing, then the parameters are updated if the device supports on-the-fly updating. Otherwise the behavior depends on the state of the DIEP_NORESTART flag. If it is set, the error code DIERR_EFFECTPLAYING is returned. If it is clear, the effect is stopped, the parameters are updated, and the effect is restarted.