| ?/TD> |
| Microsoft DirectX 9.0 |
A constant force is a force with a defined magnitude and duration.
You can apply an envelope to a constant force to give it shape. For example, suppose you have an effect with a nominal magnitude of 2,000 and a duration of 2 seconds. Then you apply an envelope with the following values:
| Parameter | Value |
|---|---|
| Attack time | 0.5 second |
| Initial attack level | 5,000 |
| Fade time | 1 second |
| Fade level | 0 |
When you play the effect, you get the following:
| Elapsed time | Magnitude |
|---|---|
| 0.0 | 5,000 |
| 0.1 | 4,400 |
| 0.2 | 3,800 |
| 0.3 | 3,200 |
| 0.4 | 2,600 |
| 0.5 | 2,000 |
| (Duration of sustain) | 2,000 |
| 1.0: | 2,000 |
| 1.1 | 1,800 |
| 1.2 | 1,600 |
| 1.3 | 1,400 |
| 1.4 | 1,200 |
| 1.5 | 1,000 |
| 1.6 | 800 |
| 1.7 | 600 |
| 1.8 | 400 |
| 1.9 | 200 |
| 2.0 | 0 |
You cannot apply an offset to a constant force.
To create a constant force, pass GUID_ConstantForce to the IDirectInputDevice8::CreateEffect method. You can also pass any other globally unique identifier (GUID) obtained by the IDirectInputDevice8::EnumEffects method, provided the low byte of the dwEffType member of the DIEFFECTINFO structure (DIEFT_GETTYPE(dwEffType)) is equal to DIEFT_CONSTANTFORCE. In this way, you can use hardware-specific forces designed by the manufacturer such as a "constant" force that actually varies in magnitude in a seemingly random fashion to simulate turbulence.
A constant force uses a DICONSTANTFORCE structure to define the magnitude. A negative magnitude has the effect of reversing the direction of the force.