Share via


Constant Forces

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 (DIDFT_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.