Поделиться через


Структура DIEFFECTATTRIBUTES (dinputd.h)

Структура DIEFFECTATTRIBUTES описывает сведения, содержащиеся в значении "Атрибуты" раздела реестра для каждого эффекта, поддерживаемого устройством принудительной обратной связи.

Синтаксис

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

Члены

dwEffectId

Задает произвольное 32-разрядное значение, которое передается драйверу для определения эффекта. Драйвер получает это значение в качестве параметра dwEffectID для метода IDirectInputEffectDriver::D ownloadEffect .

dwEffType

Описывает категорию и возможности эффекта. Этот элемент должен состоять из одного из следующих значений:

DIEFT_CONSTANTFORCE

Эффект представляет постоянный эффект силы. При создании или изменении постоянного эффекта силы член lpvTypeSpecificParams структуры DIEFFECT указывает на структуру DICONSTANTFORCE, а члену cbTypeSpecificParams структуры DIEFFECT присваивается значение sizeof(DICONSTANTFORCE).

DIEFT_RAMPFORCE

Эффект представляет собой эффект силы рампы. При создании или изменении эффекта ramp-force член lpvTypeSpecificParams структуры DIEFFECT указывает на структуру DIRAMPFORCE, а члену cbTypeSpecificParams структуры DIEFFECT присваивается значение sizeof(DIRAMPFORCE).

DIEFT_PERIODIC

Эффект представляет периодический эффект. При создании или изменении периодического эффекта член lpvTypeSpecificParams структуры DIEFFECT указывает на структуру DIPERIODIC, а член cbTypeSpecificParams структуры DIEFFECT имеет значение sizeof(DIPERIODIC).

DIEFT_CONDITION

Эффект представляет условие. При создании или изменении условия член lpvTypeSpecificParams структуры DIEFFECT указывает на массив структур DICONDITION (либо одну структуру DICONDITION, либо одну структуру DICONDITION на ось), а члену cbTypeSpecificParams структуры DIEFFECT присваивается значение sizeof(DICONDITION) или cAxis * sizeof(DICONDITION) соответственно. Если для параметра cbTypeSpecificParams задано значение sizeof(DICONDITION), то эффект представляет одноосное условие, которое можно повернуть. Если для cbTypeSpecificParams задано значение cAxis * sizeof(DICONDITION), то эффект представляет условие с несколькими осями, при этом каждая структура DICONDITION применяется к соответствующей оси в списке rgdwAxes.

DIEFT_CUSTOMFORCE

Эффект представляет пользовательский принудительный эффект. При создании или изменении настраиваемого эффекта силы член lpvTypeSpecificParams структуры DIEFFECT указывает на структуру DICUSTOMFORCE, а члену cbTypeSpecificParams структуры DIEFFECT присваивается значение sizeof(DICUSTOMFORCE).

DIEFT_HARDWARE

Эффект представляет аппаратный эффект. Поставщик оборудования должен предоставить дополнительную документацию для модуля записи приложений о том, как следует использовать эффект. В дополнение к коду категории член dwEffTtype также может содержать ноль, один или несколько следующих флагов, описывающих возможности эффекта:

DIEFT_FFATTACK

Генератор эффектов для этого эффекта поддерживает параметр конверта атаки. Если генератор эффектов не поддерживает атаку, то параметры уровня атаки и времени атаки структуры DIENVELOPE игнорируются эффектом.

DIEFT_FFFADE

Генератор эффектов для этого эффекта поддерживает параметр исчезания. Если генератор эффектов не поддерживает затухание, параметры уровня затухания и времени затухания структуры DIENVELOPE игнорируются эффектом. Если DIEFT_FFATTACK или DIEFT_FFFADE не задано, эффект не поддерживает конверт и любой предоставленный конверт игнорируется.

DIEFT_SATURATION

Генератор эффектов для этого эффекта поддерживает насыщенность эффектов условий. Если генератор эффектов не поддерживает насыщенность, то сила, созданная условием, ограничивается только максимальной силой, которую может создать устройство.

DIEFT_POSNEGCOEFFICIENTS

Генератор эффектов для этого эффекта поддерживает два значения коэффициентов для условий: одно для положительного смещения оси и другое для отрицательного смещения оси. Если устройство не поддерживает оба коэффициента, отрицательный коэффициент в структуре DICONDITION игнорируется и положительный коэффициент используется в обоих направлениях.

DIEFT_POSNEGSATURATION

Генератор эффектов для эффекта поддерживает максимальную насыщенность как для положительных, так и для отрицательных выходных данных силы. Если устройство не поддерживает оба значения насыщенности, отрицательная насыщенность в структуре DICONDITION игнорируется, а положительная насыщенность используется в обоих направлениях.

dwStaticParams

Описывает параметры, поддерживаемые эффектом. Например, если задано DIEP_ENVELOPE, эффект поддерживает конверт. Все эффекты должны поддерживать по крайней мере DIEP_DURATION, DIEP_AXES и DIEP_TYPESPECIFICPARAMS. Попытка приложения использовать параметры эффекта, которые не поддерживаются устройством, не является ошибкой. Неподдерживаемые параметры просто игнорируются. Это значение может быть равно нулю, одному или нескольким из следующих флагов:

DIEP_DURATION

Указывает, что драйвер поддерживает изменение dwDuration (см. структуру DIEFFECT) эффекта, когда эффект не воспроизводит.

DIEP_SAMPLEPERIOD

Указывает, что драйвер поддерживает изменение dwSamplePeriod (см. структуру DIEFFECT) эффекта, когда эффект не воспроизводился.

DIEP_GAIN

Указывает, что драйвер поддерживает изменение dwGain (см. структуру DIEFFECT) эффекта, если эффект не воспроизводим.

DIEP_TRIGGERBUTTON

Указывает, что драйвер поддерживает изменение dwTriggerButton (см. структуру DIEFFECT) эффекта, когда эффект не воспроизводит.

DIEP_TRIGGERREPEATINTERVAL

Указывает, что драйвер поддерживает изменение dwTriggerRepeatInterval (см. структуру DIEFFECT) эффекта, если эффект не воспроизводим.

DIEP_AXES

Указывает, что драйвер поддерживает изменение cAxes и rgdwAxes (см. структуру DIEFFECT) эффекта, если эффект не воспроизводился.

DIEP_DIRECTION

Указывает, что драйвер поддерживает изменение cAxes и rglDirection (см. структуру DIEFFECT) эффекта, если эффект не воспроизводим. (Член dwFlags структуры DIEFFECT определяет через DIEFF_CARTESIAN или DIEFF_POLAR систему координат, в которой следует интерпретировать значения.)

DIEP_ENVELOPE

Указывает, что драйвер поддерживает изменение lpEnvelope (см. структуру DIEFFECT) эффекта, когда эффект не воспроизводит.

DIEP_TYPESPECIFICPARAMS

Указывает, что драйвер поддерживает изменение cbTypeSpecificParams и lpTypeSpecificParams (см. структуру DIEFFECT) эффекта, если эффект не воспроизводим. Обратите внимание, что буфер, на который указывает элемент lpTypeSpecificParams структуры DIEFFECT, должен оставаться действительным в течение времени существования эффекта (или до тех пор, пока для параметра типа не будет задано новое значение). DirectInput не делает частную копию буфера.

dwDynamicParams

Описывает параметры эффекта, которые можно изменить во время воспроизведения эффекта. Если приложение пытается изменить параметр во время воспроизведения эффекта, а драйвер не поддерживает динамическое изменение этого эффекта, драйвер вернет DIERR_EFFECTPLAYING. Этот элемент использует те же флаги, что и член dwStaticParams , за исключением того, что флаги интерпретируются как описывающие, может ли драйвер изменять параметры эффекта во время воспроизведения эффекта, а не во время его воспроизведения.

dwCoords

Один или несколько флагов системы координат (DIEFF_CARTESIAN, DIEFF_POLAR DIEFF_SPHERICAL), указывающих, какие системы координат поддерживаются эффектом. Должна поддерживаться по крайней мере одна система координат. Если приложение пытается задать направление в неподдерживаемой системе координат, DirectInput автоматически преобразует его в систему координат, поддерживаемую устройством.

Комментарии

Сведения о структурах DIEFFECT, DICONSTANTFORCE, DIRAMPFORCE, DIPERIODIC, DICONDITION, DICUSTOMFORCE и DIENVELOPE см. в разделе DirectInput пакета SDK для DirectX.

Требования

Требование Значение
Заголовок dinputd.h