Структура 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 |