Partager via


Structure DIEFFECTATTRIBUTES (dinputd.h)

La structure DIEFFECTATTRIBUTES décrit les informations contenues dans la valeur « Attributes » de la clé de Registre pour chaque effet pris en charge par un appareil de retour de force.

Syntaxe

typedef struct DIEFFECTATTRIBUTES {
  DWORD dwEffectId;
  DWORD dwEffType;
  DWORD dwStaticParams;
  DWORD dwDynamicParams;
  DWORD dwCoords;
} DIEFFECTATTRIBUTES, *LPDIEFFECTATTRIBUTES;

Membres

dwEffectId

Spécifie une valeur arbitraire de 32 bits qui est passée au pilote pour identifier l’effet. Le pilote reçoit cette valeur en tant que paramètre dwEffectID pour la méthode IDirectInputEffectDriver ::D ownloadEffect .

dwEffType

Décrit la catégorie et les fonctionnalités de l’effet. Ce membre doit se composer de l’une des valeurs suivantes :

DIEFT_CONSTANTFORCE

L’effet représente un effet de force constante. Lors de la création ou de la modification d’un effet de force constant, le membre lpvTypeSpecificParams de la structure DIEFFECT pointe vers une structure DICONSTANTFORCE et le membre cbTypeSpecificParams de la structure DIEFFECT est défini sur sizeof(DICONSTANTFORCE).

DIEFT_RAMPFORCE

L’effet représente un effet ramp-force. Lors de la création ou de la modification d’un effet ramp-force, le membre lpvTypeSpecificParams de la structure DIEFFECT pointe vers une structure DIRAMPFORCE et le membre cbTypeSpecificParams de la structure DIEFFECT est défini sur sizeof(DIRAMPFORCE).

DIEFT_PERIODIC

L’effet représente un effet périodique. Lors de la création ou de la modification d’un effet périodique, le membre lpvTypeSpecificParams de la structure DIEFFECT pointe vers une structure DIPERIODIC et le membre cbTypeSpecificParams de la structure DIEFFECT est défini sur sizeof(DIPERIODIC).

DIEFT_CONDITION

L’effet représente une condition. Lors de la création ou de la modification d’une condition, le membre lpvTypeSpecificParams de la structure DIEFFECT pointe vers un tableau de structures DICONDITION (une structure DICONDITION exactement ou une structure DICONDITION par axe) et le membre cbTypeSpecificParams de la structure DIEFFECT est défini sur sizeof(DICONDITION) ou cAxis * sizeof(DICONDITION), respectivement. Si cbTypeSpecificParams a la valeur sizeof(DICONDITION), l’effet représente une condition à axe unique qui peut être pivotée. Si cbTypeSpecificParams a la valeur cAxis * sizeof(DICONDITION), l’effet représente une condition à plusieurs axes, chaque structure DICONDITION s’appliquant à l’axe respectif dans la liste rgdwAxes.

DIEFT_CUSTOMFORCE

L’effet représente un effet de force personnalisé. Lors de la création ou de la modification d’un effet de force personnalisé, le membre lpvTypeSpecificParams de la structure DIEFFECT pointe vers une structure DICUSTOMFORCE et le membre cbTypeSpecificParams de la structure DIEFFECT est défini sur sizeof(DICUSTOMFORCE).

DIEFT_HARDWARE

L’effet représente un effet spécifique au matériel. Le fournisseur de matériel doit fournir une documentation supplémentaire au enregistreur d’application sur la façon dont l’effet doit être utilisé. En plus du code de catégorie, le membre dwEffTtype peut également contenir zéro, un ou plusieurs des indicateurs suivants qui décrivent les fonctionnalités de l’effet :

DIEFT_FFATTACK

Le générateur d’effet pour cet effet prend en charge le paramètre d’enveloppe d’attaque. Si le générateur d’effet ne prend pas en charge l’attaque, les paramètres de niveau d’attaque et de temps d’attaque de la structure DIENVELOPE sont ignorés par l’effet.

DIEFT_FFFADE

Le générateur d’effet pour cet effet prend en charge le paramètre fondu. Si le générateur d’effet ne prend pas en charge le fondu, les paramètres de niveau de fondu et de temps de fondu de la structure DIENVELOPE sont ignorés par l’effet. Si DIEFT_FFATTACK ou DIEFT_FFFADE n’est pas défini, l’effet ne prend pas en charge une enveloppe et toute enveloppe fournie est ignorée.

DIEFT_SATURATION

Le générateur d’effets pour cet effet prend en charge la saturation des effets de condition. Si le générateur d’effet ne prend pas en charge la saturation, la force générée par une condition est limitée uniquement par la force maximale que l’appareil peut générer.

DIEFT_POSNEGCOEFFICIENTS

Le générateur d’effet pour cet effet prend en charge deux valeurs de coefficient pour les conditions : une pour le déplacement positif de l’axe et une pour le déplacement négatif de l’axe. Si l’appareil ne prend pas en charge les deux coefficients, le coefficient négatif dans la structure DICONDITION est ignoré et le coefficient positif est utilisé dans les deux sens.

DIEFT_POSNEGSATURATION

Le générateur d’effet pour l’effet prend en charge une saturation maximale pour la sortie de force positive et négative. Si l’appareil ne prend pas en charge les deux valeurs de saturation, la saturation négative dans la structure DICONDITION est ignorée et la saturation positive est utilisée dans les deux sens.

dwStaticParams

Décrit les paramètres pris en charge par l’effet. Par exemple, si DIEP_ENVELOPE est défini, l’effet prend en charge une enveloppe. Tous les effets doivent prendre en charge au moins DIEP_DURATION, DIEP_AXES et DIEP_TYPESPECIFICPARAMS. Il ne s’agit pas d’une erreur pour qu’une application tente d’utiliser des paramètres d’effet qui ne sont pas pris en charge par l’appareil. Les paramètres non pris en charge sont simplement ignorés. Cette valeur peut être zéro, un ou plusieurs des indicateurs suivants :

DIEP_DURATION

Indique que le pilote prend en charge la modification de la dwDuration (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture.

DIEP_SAMPLEPERIOD

Indique que le pilote prend en charge la modification de dwSamplePeriod (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture.

DIEP_GAIN

Indique que le pilote prend en charge la modification de la dwGain (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture.

DIEP_TRIGGERBUTTON

Indique que le pilote prend en charge la modification de dwTriggerButton (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas légé.

DIEP_TRIGGERREPEATINTERVAL

Indique que le pilote prend en charge la modification de dwTriggerRepeatInterval (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture.

DIEP_AXES

Indique que le pilote prend en charge la modification des cAxes et des rgdwAxes (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture.

DIEP_DIRECTION

Indique que le pilote prend en charge la modification des cAxes et rglDirection (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture. (Le membre dwFlags de la structure DIEFFECT spécifie, par DIEFF_CARTESIAN ou DIEFF_POLAR, le système de coordonnées dans lequel les valeurs doivent être interprétées.)

DIEP_ENVELOPE

Indique que le pilote prend en charge la modification de lpEnvelope (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture.

DIEP_TYPESPECIFICPARAMS

Indique que le pilote prend en charge la modification des paramètres cbTypeSpecificParams et lpTypeSpecificParams (voir la structure DIEFFECT) d’un effet lorsque l’effet n’est pas en cours de lecture. Notez que la mémoire tampon pointée vers par le membre lpTypeSpecificParams de la structure DIEFFECT doit rester valide pendant toute la durée de vie de l’effet (ou jusqu’à ce que le paramètre spécifique au type soit défini sur une nouvelle valeur). DirectInput n’effectue pas de copie privée de la mémoire tampon.

dwDynamicParams

Décrit les paramètres de l’effet qui peuvent être modifiés pendant la lecture de l’effet. Si une application tente de modifier un paramètre pendant la lecture de l’effet et que le pilote ne prend pas en charge la modification dynamique de cet effet, le pilote retourne DIERR_EFFECTPLAYING. Ce membre utilise les mêmes indicateurs que le membre dwStaticParams , sauf que les indicateurs sont interprétés comme décrivant si le pilote peut modifier les paramètres d’un effet pendant la lecture de l’effet plutôt que pendant qu’il n’est pas en cours de lecture.

dwCoords

Un ou plusieurs indicateurs de système de coordonnées (DIEFF_CARTESIAN, DIEFF_POLAR, DIEFF_SPHERICAL) indiquant les systèmes de coordonnées pris en charge par l’effet. Au moins un système de coordonnées doit être pris en charge. Si une application tente de définir une direction dans un système de coordonnées non pris en charge, DirectInput la convertit automatiquement en système de coordonnées pris en charge par l’appareil.

Remarques

Pour plus d’informations sur les structures DIEFFECT, DICONSTANTFORCE, DIRAMPFORCE, DIPERIODIC, DICONDITION, DICUSTOMFORCE et DIENVELOPE, consultez la section DirectInput du SDK DirectX.

Configuration requise

Condition requise Valeur
En-tête dinputd.h