Ссылка ForceFeedback.h
Открытые интерфейсы к реализации Обратной связи Силы в OS X.
Обратная связь Силы API позволяет разработчикам управлять устройствами Обратной связи Силы, присоединенными к системе. Это - дистиллированная версия функциональности Обратной связи Силы, найденной в DirectInput Microsoft API. Разработчики, знакомые с тем API, должны найти, что этот API подобен.
Включенные заголовки
<CoreFoundation/CoreFoundation.h>
<CoreFoundation/CFPlugInCOM.h>
<MacTypes.h>
<IOKit/IOTypes.h>
<ForceFeedback/ForceFeedbackConstants.h>
-
Создает новый объект устройства API из объекта OS в подготовке для использования устройства для обратной связи силы.
Объявление
Swift
func FFCreateDevice(_
hidDevice
: io_service_t, _pdeviceReference
: UnsafeMutablePointer<FFDeviceObjectReference>) -> HRESULTObjective C
HRESULT FFCreateDevice ( io_service_t hidDevice, FFDeviceObjectReference *pDeviceReference );
Параметры
hidDevice
Указатель на объект устройства HID.
pdeviceReference
Адрес переменной для получения непрозрачного ссылочного дескриптора к новому объекту устройства. Эта ссылка может привыкнуть в последующих вызовах к FFDevice* функции
Возвращаемое значение
Если метод успешно выполняется, и устройство поддерживает FF, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOINTERFACE
FFERR_OUTOFMEMORY
FFERR_INTERNAL
Обсуждение
Когда Вы закончены с устройством, FFReleaseDevice нужно вызвать на ссылке, полученной в этой функции для избавления от объекта устройства API.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Создает и инициализирует экземпляр эффекта, идентифицированного эффектом UUID на устройстве.
Объявление
Swift
func FFDeviceCreateEffect(_
deviceReference
: FFDeviceObjectReference, _uuidRef
: CFUUID!, _pEffectDefinition
: UnsafeMutablePointer<FFEFFECT>, _pEffectReference
: UnsafeMutablePointer<FFEffectObjectReference>) -> HRESULTПараметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства. Это получено от предыдущего вызова до FFCreateDevice.
uuidRef
Ссылка на UUID идентификация эффекта, который будет создаваться. Только предопределенный эффект UUIDs принят. Следующий стандартный эффект UUIDs определяется:
kFFEffectType_ConstantForce_ID
kFFEffectType_RampForce_ID
kFFEffectType_Square_ID
kFFEffectType_Sine_ID
kFFEffectType_Triangle_ID
kFFEffectType_SawtoothUp_ID
kFFEffectType_SawtoothDown_ID
kFFEffectType_Spring_ID
kFFEffectType_Damper_ID
kFFEffectType_Inertia_ID
kFFEffectType_Friction_ID
kFFEffectType_CustomForce_ID
pEffectDefinition
Указатель на структуру FFEFFECT, обеспечивающую параметры для создаваемого эффекта. Этот параметр является дополнительным. Если это - NULL, объект эффекта создается без параметров. Приложение должно тогда вызвать функцию FFEffectSetParameters для установки параметров эффекта, прежде чем это сможет загрузить эффект.
pEffectReference
Адрес переменной для получения непрозрачного ссылочного дескриптора к новому объекту эффекта. Эта ссылка может привыкнуть в последующих вызовах к FFEffect* функции.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_UNSUPPORTEDAXIS
FFERR_OUTOFMEMORY
FFERR_DEVICEPAUSED
FFERR_DEVICEFULL
FFERR_INVALIDDOWNLOADID
FFERR_INTERNAL
FFERR_EFFECTTYPEMISMATCH
Обсуждение
Когда Вы закончены с эффектом, FFReleaseEffect нужно вызвать на ссылке, полученной в этой функции для избавления от объекта эффекта API.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Отправляет специфичную для аппаратных средств команду в устройство.
Объявление
Swift
func FFDeviceEscape(_
deviceReference
: FFDeviceObjectReference, _pFFEffectEscape
: UnsafeMutablePointer<FFEFFESCAPE>) -> HRESULTObjective C
HRESULT FFDeviceEscape ( FFDeviceObjectReference deviceReference, FFEFFESCAPE *pFFEffectEscape );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства. Это получено от предыдущего вызова до FFCreateDevice.
pFFEffectEscape
Указатель на структуру FFEFFESCAPE, описывающую команду, которая будет отправлена. На успехе cbOutBuffer элемент содержит число байтов используемого буфера вывода.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_UNSUPPORTED
Обсуждение
Поскольку каждый драйвер реализует различные Escape, это - ответственность приложения гарантировать, что это отправляет Escape в корректный драйвер.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Получает возможности обратной связи силы устройства.
Объявление
Swift
func FFDeviceGetForceFeedbackCapabilities(_
deviceReference
: FFDeviceObjectReference, _pFFCapabilities
: UnsafeMutablePointer<FFCAPABILITIES>) -> HRESULTObjective C
HRESULT FFDeviceGetForceFeedbackCapabilities ( FFDeviceObjectReference deviceReference, FFCAPABILITIES *pFFCapabilities );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.
pFFCapabilities
Указатель на структуру FFCAPABILITIES, которая должна быть заполнена в этим вызовом.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Получает свойства, определяющие поведение устройства.
Объявление
Swift
func FFDeviceGetForceFeedbackProperty(_
deviceReference
: FFDeviceObjectReference, _property
: FFProperty, _pValue
: UnsafeMutablePointer<Void>, _valueSize
: IOByteCount) -> HRESULTObjective C
HRESULT FFDeviceGetForceFeedbackProperty ( FFDeviceObjectReference deviceReference, FFProperty property, void *pValue, IOByteCount valueSize );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.
property
Следующие значения свойств определяются для устройства FF (см. FFDeviceSetForceFeedbackProperty для подробных данных):
FFPROP_AUTOCENTER
FFPROP_FFGAIN
pValue
Адрес расположения, где должно быть сохранено значение, связанное со свойством. GetForceFeedbackProperty предполагает, что указатель допустим, несмотря на то, что это выполнит проверку размера прежде, чем записать данные в pValue
valueSize
На размер, в байтах, области данных указывает pValue. Если несоответствие происходит, размер по сравнению с ожидаемым размером свойства, и функциональными сбоями.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK или FFERR_UNSUPPORTED. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Получает состояние системы с обратной связью силы устройства.
Объявление
Swift
func FFDeviceGetForceFeedbackState(_
deviceReference
: FFDeviceObjectReference, _pFFState
: UnsafeMutablePointer<FFState>) -> HRESULTObjective C
HRESULT FFDeviceGetForceFeedbackState ( FFDeviceObjectReference deviceReference, FFState *pFFState );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства. Это получено от предыдущего вызова до FFCreateDevice.
pFFState
Расположение для флагов, описывающих текущее состояние системы с обратной связью силы устройства. Значение является комбинацией следующих констант:
ФФГФФС_ЭКТУЭТОРСОФФ
Приводы обратной связи силы устройства отключены.
ФФГФФС_ЭКТУЭТОРСОН
Приводы обратной связи силы устройства включены.
FFGFFS_DEVICELOST
Устройство перенесло неожиданный отказ и находится в неопределенном состоянии. Это должно быть сброшено или путем неполучения и переполучения устройства, или путем отправки команды FFSFFC_RESET.
FFGFFS_EMPTY
Устройство не имеет никаких загруженных эффектов.
FFGFFS_PAUSED
Воспроизведение всех активных эффектов было приостановлено.
ФФГФФС_ПАУЭРОФФ
Система с обратной связью силы не в настоящее время доступна. Если устройство не может сообщить о состоянии электропитания, ни FFGFFS_POWERON, ни ФФГФФС_ПАУЭРОФФ не возвращаются.
FFGFFS_POWERON
Питание к системе с обратной связью силы в настоящее время доступно. Если устройство не может сообщить о состоянии электропитания, ни FFGFFS_POWERON, ни ФФГФФС_ПАУЭРОФФ не возвращаются.
ФФГФФС_СЭФЕТИСВИЧОФФ
Предохранительный выключатель в настоящее время выключен; т.е. устройство не может работать. Если устройство не может сообщить о состоянии предохранительного выключателя, ни FFGFFS_SAFETYSWITCHON, ни ФФГФФС_СЭФЕТИСВИЧОФФ не возвращаются.
FFGFFS_SAFETYSWITCHON
Предохранительный выключатель в настоящее время включен; т.е. устройство может работать. Если устройство не может сообщить о состоянии предохранительного выключателя, ни FFGFFS_SAFETYSWITCHON, ни ФФГФФС_СЭФЕТИСВИЧОФФ не возвращаются.
FFGFFS_STOPPED
Никакие эффекты не играют, и устройство не приостанавливается.
ФФГФФС_ЮЗРФФСВИЧОФФ
Пользовательский переключатель обратной связи силы в настоящее время выключен; т.е. устройство не может работать. Если устройство не может сообщить о состоянии пользовательского переключателя обратной связи силы, ни FFGFFS_USERFFSWITCHON, ни ФФГФФС_ЮЗРФФСВИЧОФФ не возвращаются.
FFGFFS_USERFFSWITCHON
Пользовательский переключатель обратной связи силы в настоящее время включен; т.е. устройство может работать. Если устройство не может сообщить о состоянии пользовательского переключателя обратной связи силы, ни FFGFFS_USERFFSWITCHON, ни ФФГФФС_ЮЗРФФСВИЧОФФ не возвращаются.
Будущие версии могут определить дополнительные флаги. Приложения должны проигнорировать любые в настоящее время не определяющиеся флаги.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Избавляется от объекта эффекта API, создаваемого с FFDeviceCreateEffect.
Объявление
Swift
func FFDeviceReleaseEffect(_
deviceReference
: FFDeviceObjectReference, _effectReference
: FFEffectObjectReference) -> HRESULTObjective C
HRESULT FFDeviceReleaseEffect ( FFDeviceObjectReference deviceReference, FFEffectObjectReference effectReference );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.
effectReference
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOTDOWNLOADED
FFERR_GENERIC
FFERR_INTERNAL
FFERR_INVALIDDOWNLOADID
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Отправляет команду в систему с обратной связью силы устройства.
Объявление
Swift
func FFDeviceSendForceFeedbackCommand(_
deviceReference
: FFDeviceObjectReference, _flags
: FFCommandFlag) -> HRESULTObjective C
HRESULT FFDeviceSendForceFeedbackCommand ( FFDeviceObjectReference deviceReference, FFCommandFlag flags );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.
flags
Единственное значение, указывающее желаемое изменение в состоянии. Значение может быть одним из следующего:
FFSFFC_CONTINUE
Приостановленное воспроизведение всех активных эффектов должно продолжаться. Когда устройство не находится в приостановленном состоянии, это - ошибка отправить эту команду.
FFSFFC_PAUSE
Воспроизведение всех активных эффектов должно быть приостановлено. Эта команда также останавливает отмечать время прихода на работу эффекты так, чтобы они продолжали играть к их полной продолжительности, когда перезапущено.
В то время как устройство приостанавливается, новые эффекты не могут быть запущены, и существующие не могут быть изменены. Выполнение так может заставить последующей команде FFSFFC_CONTINUE не удаваться выполнить должным образом.
Чтобы отказаться от паузы и остановить все эффекты, используйте команды FFSFFC_STOPALL или FFSFCC_RESET.
FFSFFC_RESET
Система с обратной связью силы устройства должна быть помещена в ее состояние запуска. Все эффекты удалены из устройства, больше не действительны, и должны быть воссозданы, если они должны использоваться снова. Приводы устройства отключены.
ФФСФФК_СЕТЭКТУЭТОРСОФФ
Приводы обратной связи силы устройства должны быть отключены. В то время как приводы выключены, эффекты продолжают играть, но проигнорированы устройством. Используя аналогию устройства воспроизведения звука, они отключены звук, а не приостановлены.
ФФСФФК_СЕТЭКТУЭТОРСОН
Приводы обратной связи силы устройства должны быть включены.
FFSFFC_STOPALL
Воспроизведение любых активных эффектов должно быть остановлено. Все активные эффекты сбрасываются, но все еще сохраняются устройством и все еще допустимы. Если устройство находится в приостановленном состоянии, то состояние потеряно.
Эта команда эквивалентна вызову метода FFEffect_Stop для каждой игры эффекта.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_INTERNAL
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Функция не реализована в версии 1.0 этого API
Объявление
Swift
func FFDeviceSetCooperativeLevel(_
deviceReference
: FFDeviceObjectReference, _taskIdentifier
: UnsafeMutablePointer<Void>, _flags
: FFCooperativeLevelFlag) -> HRESULTObjective C
HRESULT FFDeviceSetCooperativeLevel ( FFDeviceObjectReference deviceReference, void *taskIdentifier, FFCooperativeLevelFlag flags );
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Получает возможности обратной связи силы устройства.
Объявление
Swift
func FFDeviceSetForceFeedbackProperty(_
deviceReference
: FFDeviceObjectReference, _property
: FFProperty, _pValue
: UnsafeMutablePointer<Void>) -> HRESULTObjective C
HRESULT FFDeviceSetForceFeedbackProperty ( FFDeviceObjectReference deviceReference, FFProperty property, void *pValue );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.
property
Следующие значения свойств определяются для устройства FF:
FFPROP_AUTOCENTER
Указывает, самоцентрируются ли приводимые в действие оси FF. Это свойство управляет «центрирующей пружиной устройства по умолчанию».
pValue задействованные точки к UInt32 могут быть одним из следующих значений.
0 - OFF: устройство не должно автоматически центрироваться когда разъединения абонентом устройство. Приложение, применяющее силу обратная связь, должно отключить автоцентрирование перед игрением эффектов.
1 - ON: устройство должно автоматически центрироваться когда разъединения абонентом устройство.
Не все устройства поддерживают автоцентральное свойство.
FFPROP_FFGAIN
Устанавливает усиление для устройства.
pValue элемент указывает на UInt32, содержащий значение усиления, применяющееся ко всем эффектам, создаваемым на устройстве. Значение является целым числом в диапазоне от 0 до 10,000, указывая сумму, которой величины эффекта должны масштабироваться для устройства. Например, значение 10 000 указывает, что все величины эффекта должны быть взяты по номиналу. Значение 9 000 указывает, что все величины эффекта должны быть сокращены до 90% их номинальных величин.
Когда приложение хочет уменьшить масштаб силы всех эффектов обратной связи силы унифицированно, на основе пользовательских настроек, установка значения усиления полезна.
pValue
Адрес расположения, где должно быть считано значение свойства. SetForceFeedbackProperty предположит, что данные допустимы, и корректного типа.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK или FFERR_UNSUPPORTED. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Помещает эффект на устройство. Если эффект уже находится на устройстве, существующий эффект обновляется для соответствия значений, установленных методом FFEffectSetParameters.
Объявление
Swift
func FFEffectDownload(_
efffectRef
: FFEffectObjectReference) -> HRESULTObjective C
HRESULT FFEffectDownload ( FFEffectObjectReference effectReference );
Параметры
efffectRef
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK или S_FALSE. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_DEVICEPAUSED
FFERR_DEVICEFULL
FFERR_INVALIDDOWNLOADID
FFERR_INTERNAL
FFERR_EFFECTTYPEMISMATCH
Если метод возвращает S_FALSE, эффект был уже загружен на устройство.
Обсуждение
Это допустимо для обновления эффекта, в то время как это играет. Семантика такой работы объяснена в ссылке для FFEffectSetParameters.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Отправляет специфичную для аппаратных средств команду в драйвер.
Объявление
Swift
func FFEffectEscape(_
effectReference
: FFEffectObjectReference, _pFFEffectEscape
: UnsafeMutablePointer<FFEFFESCAPE>) -> HRESULTObjective C
HRESULT FFEffectEscape ( FFEffectObjectReference effectReference, FFEFFESCAPE *pFFEffectEscape );
Параметры
effectReference
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
pFFEffectEscape
Структура FFEFFESCAPE, описывающая команду, которая будет отправлена. На успехе cbOutBuffer элемент содержит число байтов используемого буфера вывода.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOTDOWNLOADED
FFERR_UNSUPPORTED
Другие специфичные для устройства коды ошибки также возможны. Попросите у производителя оборудования подробных данных
Обсуждение
Поскольку каждый драйвер реализует различные Escape, это - ответственность приложения гарантировать, что это отправляет Escape в корректный драйвер.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Отправляет специфичную для аппаратных средств команду в драйвер.
Объявление
Swift
func FFEffectGetEffectStatus(_
effectReference
: FFEffectObjectReference, _pFlags
: UnsafeMutablePointer<FFEffectStatusFlag>) -> HRESULTObjective C
HRESULT FFEffectGetEffectStatus ( FFEffectObjectReference effectReference, FFEffectStatusFlag *pFlags );
Параметры
effectReference
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
pFlags
Указатель на состояние отмечает для эффекта. Значение может быть 0 включая всех правопреемников следующих констант:
FFEGES_PLAYING
Эффект играет.
FFEGES_EMULATED
Эффект эмулирован.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOTDOWNLOADED
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Получает информацию об эффекте.
Объявление
Swift
func FFEffectGetParameters(_
efffectRef
: FFEffectObjectReference, _pFFEffect
: UnsafeMutablePointer<FFEFFECT>, _flags
: FFEffectParameterFlag) -> HRESULTObjective C
HRESULT FFEffectGetParameters ( FFEffectObjectReference effectReference, FFEFFECT *pFFEffect, FFEffectParameterFlag flags );
Параметры
efffectRef
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
pFFEffect
Адрес структуры FFEFFECT, получающей информацию об эффекте. dwSize элемент должен быть переполнен в приложением прежде, чем вызвать этот метод.
flags
Флаги, указывающие, какие части информации об эффекте должны быть получены. Значение может быть 0 включая всех правопреемников следующих констант:
FFEP_ALLPARAMS
Объединение всех других флагов FFEP_*, указывая, что требуют все элементы структуры FFEFFECT.
FFEP_AXES
cAxes и rgdwAxes элементы должны получить данные. cAxes элемент на записи содержит размер (в DWORDs) буфера, на который указывает rgdwAxes элемент. Если буфер является слишком маленьким, метод возвращает FFERR_MOREDATA и устанавливает cAxes в необходимый размер буфера.
FFEP_DIRECTION
cAxes и rglDirection элементы должны получить данные. cAxes элемент на записи содержит размер (в DWORDs) буфера, на который указывает rglDirection элемент. Если буфер является слишком маленьким, метод GetParameters возвращает FFERR_MOREDATA и устанавливает cAxes в необходимый размер буфера.
dwFlags элемент должен включать по крайней мере один из флагов системы координат (FFEFF_CARTESIAN, FFEFF_POLAR или FFEFF_SPHERICAL). API возвращает направление эффекта в одной из систем координат, которые Вы указали, преобразовав между системами координат по мере необходимости. На выходе точно один из флагов системы координат установлен в dwFlags элементе, указав, какую систему координат FF API использовал. В частности передача всех трех флагов системы координат получает координаты в точно том же формате, в котором они были установлены.
FFEP_DURATION
dwDuration элемент должен получить данные.
FFEP_ENVELOPE
lpEnvelope элемент указывает на структуру FFENVELOPE, которая должна получить данные. Если эффекту не связывали конверт с ним, lpEnvelope элемент устанавливается в NULL.
FFEP_GAIN
dwGain элемент должен получить данные.
FFEP_SAMPLEPERIOD
dwSamplePeriod элемент должен получить данные.
FFEP_STARTDELAY
dwStartDelay элемент должен получить данные.
FFEP_TRIGGERBUTTON
dwTriggerButton элемент должен получить данные.
FFEP_TRIGGERREPEATINTERVAL
dwTriggerRepeatInterval элемент должен получить данные.
FFEP_TYPESPECIFICPARAMS
lpvTypeSpecificParams элемент указывает на буфер, размер которого указан cbTypeSpecificParams элементом. По возврату буфер заполнен в специфичными для типа данными, связанными с эффектом, и cbTypeSpecificParams элемент содержит число скопированных байтов. Если буфер, предоставленный приложением, является слишком маленьким для содержания всех специфичных для типа данных, метод возвращает FFERR_MOREDATA, и cbTypeSpecificParams элемент содержит требуемый размер буфера в байтах.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOTDOWNLOADED
FFERR_MOREDATA
Обсуждение
Распространенные ошибки, приводящие к ошибке FFERR_INVALIDPARAM, включают не установку dwSize элемента структуры FFEFFECT, передавая недопустимые флаги, или не настраивая элементы в структуре FFEFFECT должным образом в подготовке к получению информации об эффекте.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Устанавливает характеристики эффекта.
Объявление
Swift
func FFEffectSetParameters(_
efffectRef
: FFEffectObjectReference, _pFFEffect
: UnsafeMutablePointer<FFEFFECT>, _flags
: FFEffectParameterFlag) -> HRESULTObjective C
HRESULT FFEffectSetParameters ( FFEffectObjectReference effectReference, FFEFFECT *pFFEffect, FFEffectParameterFlag flags );
Параметры
efffectRef
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
pFFEffect
Адрес структуры FFEFFECT, содержащей информацию об эффекте. dwSize элемент должен быть переполнен в приложением прежде, чем вызвать этот метод, а также любые элементы, указанные соответствующими битами в параметре флагов.
flags
Флаги, указывающие, какие части информации об эффекте должны быть установлены и как должна быть обработана загрузка параметров. Значение может быть 0 включая всех правопреемников следующих констант:
FFEP_AXES
cAxes и rgdwAxes элементы содержат данные.
FFEP_DIRECTION
cAxes и rglDirection элементы содержат данные. dwFlags элемент указывает (с FFEFF_CARTESIAN или FFEFF_POLAR) систему координат, в которой должны быть интерпретированы значения.
FFEP_DURATION
dwDuration элемент содержит данные.
FFEP_ENVELOPE
lpEnvelope элемент указывает на структуру FFENVELOPE, содержащую данные. Для отсоединения любого существующего конверта от эффекта передайте этот флаг и установите lpEnvelope элемент в NULL.
FFEP_GAIN
dwGain элемент содержит данные.
FFEP_NODOWNLOAD
Подавите автоматический FFEffect_Download, обычно выполняющийся после того, как параметры обновляются.
FFEP_NORESTART
Подавите остановку и перезапуск эффекта изменить параметры. Посмотрите Комментарии.
FFEP_SAMPLEPERIOD
dwSamplePeriod элемент содержит данные.
FFEP_START
Эффект состоит в том, чтобы быть запущен (или перезапущен, если он в настоящее время играет) после того, как обновляются параметры. По умолчанию состояние игры эффекта не изменено.
FFEP_STARTDELAY
dwStartDelay элемент содержит данные.
FFEP_TRIGGERBUTTON
dwTriggerButton элемент содержит данные.
dwTriggerRepeatInterval элемент содержит данные.
FFEP_TYPESPECIFICPARAMS
lpvTypeSpecificParams и cbTypeSpecificParams элементы структуры FFEFFECT содержат адрес и размер специфичных для типа данных для эффекта.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_UNSUPPORTEDAXIS
FFERR_OUTOFMEMORY
FFERR_DEVICEPAUSED
FFERR_DEVICEFULL
FFERR_INVALIDDOWNLOADID
FFERR_INTERNAL
FFERR_EFFECTTYPEMISMATCH
Обсуждение
Метод FFEffectSetParameters автоматически загружает эффект, но это поведение может быть подавлено путем установки флага FFEP_NODOWNLOAD. Если автоматическая загрузка была подавлена, можно вручную загрузить эффект путем вызова метода FFEffectDownload.
Если эффект играет, в то время как параметры изменяются, новые параметры вступают в силу, как будто они были параметрами, когда запустился эффект.
Например, предположите, что запускается периодический эффект с продолжительностью трех секунд. После двух секунд изменено направление эффекта. Эффект тогда продолжается в течение одной дополнительной секунды в новом направлении. Конверт, фаза, амплитуда и другие параметры эффекта продолжаются гладко, как будто не изменилось направление.
В той же ситуации, если бы после двух секунд продолжительность эффекта была изменена на 1,5 секунды, остановился бы эффект.
Обычно, если драйвер не может обновить параметры эффекта игры, драйверу разрешают остановить эффект, обновить параметры, и затем перезапустить эффект. Передача флага FFEP_NORESTART подавляет это поведение. Если драйвер не может обновить параметры эффекта, в то время как он играет, код ошибки, FFERR_EFFECTPLAYING возвращается, и параметры не обновляются.
Не больше, чем один из FFEP_NODOWNLOAD, FFEP_START и флагов FFEP_NORESTART должен быть установлен. (Это также допустимо для передачи ни одного из них.)
Эти три флага управляют поведением загрузки и воспроизведения следующим образом:
Если FFEP_NODOWNLOAD установлен, параметры эффекта обновляются, но не загружаются на устройство.
Если флаг FFEP_START установлен, параметры эффекта обновляются и загружаются на устройство, и эффект запускается так же, как если бы метод FFEffect_Start вызвали с dwIterations набором параметра к 1 и без флагов. (Объединение обновления с FFEP_START немного быстрее, чем вызов Запускается отдельно, потому что это запрашивает меньше информации, которая будет передана к устройству.)
Если ни FFEP_NODOWNLOAD, ни FFEP_START не установлены, и эффект не играет, параметры обновляются и загружаются на устройство.
Если ни FFEP_NODOWNLOAD, ни FFEP_START не установлены, и эффект играет, параметры обновляются, если устройство поддерживает на лету обновление. Иначе поведение зависит от состояния флага FFEP_NORESTART. Если это установлено, код ошибки, FFERR_EFFECTPLAYING возвращается. Если это ясно, эффект останавливается, параметры обновляются, и эффект перезапущен.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Начинает играть эффект. Если эффект уже играет, он перезапущен с начала. Если эффект не был загружен или был изменен начиная с его последней загрузки он загружается прежде чем быть запущенным. Это поведение по умолчанию может быть подавлено путем передачи флага FFES_NODOWNLOAD.
Объявление
Swift
func FFEffectStart(_
efffectReference
: FFEffectObjectReference, _iterations
: UInt32, _flags
: FFEffectStartFlag) -> HRESULTObjective C
HRESULT FFEffectStart ( FFEffectObjectReference effectReference, UInt32 iterations, FFEffectStartFlag flags );
Параметры
efffectReference
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
iterations
Число раз для игры эффекта в последовательности. Конверт повторно ясно сформулирован с каждой итерацией.
Для игры эффекта точно один раз передайте 1. Для игры эффекта неоднократно, пока явно не остановлено передайте INFINITE. Для игры эффекта, пока явно не остановлено, не повторно ясно формулируя конверт измените параметры эффекта с методом FFEffect_SetParameters и измените dwDuration элемент на INFINITE.
flags
Флаги, описывающие, как эффект должен играться устройством. Значение может быть 0 включая всех правопреемников следующих значений:
FFES_SOLO
Все другие эффекты на устройство должны быть остановлены, прежде чем указанный эффект играется. Если этот флаг опущен, эффект смешан с существующими эффектами, уже запустился на устройстве.
FFES_NODOWNLOAD
Автоматически не загружайте эффект.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_DEVICEPAUSED
FFERR_DEVICEFULL
FFERR_INVALIDDOWNLOADID
FFERR_INTERNAL
FFERR_EFFECTTYPEMISMATCH
FFERR_GENERIC
Обсуждение
Не все устройства поддерживают многократные итерации.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Остановки играя эффект.
Объявление
Swift
func FFEffectStop(_
effectReference
: FFEffectObjectReference) -> HRESULTObjective C
HRESULT FFEffectStop ( FFEffectObjectReference effectReference );
Параметры
effectReference
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOTDOWNLOADED
FFERR_GENERIC
FFERR_INTERNAL
FFERR_INVALIDDOWNLOADID
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Удаляет эффект из устройства. Если эффект играет, он автоматически останавливается, прежде чем он будет разгружен.
Объявление
Swift
func FFEffectUnload(_
effectReference
: FFEffectObjectReference) -> HRESULTObjective C
HRESULT FFEffectUnload ( FFEffectObjectReference effectReference );
Параметры
effectReference
Непрозрачный ссылочный дескриптор к объекту эффекта. Это получено от предыдущего вызова до FFDeviceCreateEffect.
Возвращаемое значение
Если метод успешно выполняется, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOTDOWNLOADED
FFERR_GENERIC
FFERR_INTERNAL
FFERR_INVALIDDOWNLOADID
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Используемый, чтобы определить, является ли определенное устройство, предоставленное менеджером по HID, устройством обратной связи силы.
Объявление
Swift
func FFIsForceFeedback(_
hidDevice
: io_service_t) -> HRESULTObjective C
HRESULT FFIsForceFeedback ( io_service_t hidDevice );
Параметры
hidDevice
Указатель на устройство HID возражает, чтобы быть протестированным на поддержку обратной связи силы.
Возвращаемое значение
Если метод успешно выполняется, и устройство поддерживает FF, возвращаемое значение является FF_OK. Если метод успешно выполняется, и устройство не поддерживает FF, возвращаемое значение является FFERR_NOINTERFACE. Если метод перестал работать, возвращаемое значение является FFERR_INVALIDPARAM
Обсуждение
Когда Вы закончены с устройством, FFReleaseDevice нужно вызвать на ссылке, полученной в этой функции для избавления от объекта устройства API.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Избавляется от объекта устройства API, создаваемого с FFCreateDevice.
Объявление
Swift
func FFReleaseDevice(_
deviceReference
: FFDeviceObjectReference) -> HRESULTObjective C
HRESULT FFReleaseDevice ( FFDeviceObjectReference deviceReference );
Параметры
deviceReference
Непрозрачный ссылочный дескриптор к объекту устройства, который является быть избавленным. Этот дескриптор получен от предыдущего вызова до FFCreateDevice.
Возвращаемое значение
Если метод успешно выполняется, и устройство поддерживает FF, возвращаемое значение является FF_OK. Если метод перестал работать, возвращаемое значение может быть одним из следующих ошибочных значений:
FFERR_INVALIDPARAM
FFERR_NOINTERFACE
FFERR_OUTOFMEMORY
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
См. Обзор для документации уровня заголовка.
-
Используемый методом FFDeviceGetForceFeedbackCapabilities для получения возможностей обратной связи силы устройства.
Объявление
Swift
struct FFCAPABILITIES { var ffSpecVer: NumVersion var supportedEffects: UInt32 var emulatedEffects: UInt32 var subType: UInt32 var numFfAxes: UInt32 var ffAxes: (UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8) var storageCapacity: UInt32 var playbackCapacity: UInt32 var firmwareVer: NumVersion var hardwareVer: NumVersion var driverVer: NumVersion }
Objective C
typedef struct FFCAPABILITIES FFCAPABILITIES;
Обсуждение
Эта структура не имеет никакого эквивалентного DirectInput.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Содержит специфичную для типа информацию для следующих эффектов.
SPRING
УВЛАЖНИТЕЛЬ
ИНЕРЦИЯ
ТРЕНИЕ
Объявление
Swift
struct FFCONDITION { var lOffset: LONG var lPositiveCoefficient: LONG var lNegativeCoefficient: LONG var dwPositiveSaturation: DWORD var dwNegativeSaturation: DWORD var lDeadBand: LONG }
Objective C
typedef struct FFCONDITION FFCONDITION;
Обсуждение
Указатель на массив структур FFCONDITION для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Число элементов в массиве должно быть или один, или равно числу осей, связанных с эффектом.
Различные типы условий интерпретируют параметры по-другому, но основная идея состоит в том, что сила, следующая из условия, равна (q - q0), где A является масштабным коэффициентом, q является некоторой метрикой, и q0 является нейтральным значением для той метрики.
Если ненулевая мертвая зона предоставлена, предыдущая упрощенная формула должна быть скорректирована. Если метрика является меньше, чем lOffset - lDeadBand, получающаяся сила дана следующей формулой:
вызовите = lNegativeCoefficient * (q - (lOffset - lDeadBand))
Точно так же, если метрика больше, чем lOffset + lDeadBand, получающаяся сила дана следующей формулой:
вызовите = lPositiveCoefficient * (q - (lOffset + lDeadBand))
Пружинное условие использует позицию оси как метрика.
Условие увлажнителя использует скорость оси в качестве метрики.
Условие инерции использует ускорение оси в качестве метрики.
Если число структур FFCONDITION в массиве равно числу осей для эффекта, первая структура применяется к первой оси, второе применяется к второй оси и т.д. Например, пружинное условие с двумя осями с набором lOffset к 0 в обоих структуры FFCONDITION имело бы тот же эффект как самоцентрирующая пружина джойстика. Когда условие определяется для каждой оси таким образом, эффект не должен быть повернут.
Если существует единственная структура FFCONDITION для эффекта больше чем с одной осью, направление, вдоль которого имеют силу параметры структуры FFCONDITION, определяется параметрами направления, переданными в rglDirection поле структуры FFEFFECT. Например, условие трения вращалось, 45 градусов (в полярных координатах) будут сопротивляться движению джойстика в северо-восточно-юго-западном направлении, но не имели бы никакого эффекта на движение джойстика в северо-западно-юго-восточном направлении.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Содержит специфичную для типа информацию для эффекта CONSTANTFORCE.
Объявление
Swift
struct FFCONSTANTFORCE { var lMagnitude: LONG }
Objective C
typedef struct FFCONSTANTFORCE FFCONSTANTFORCE;
Обсуждение
Указатель на единственную структуру FFCONSTANTFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Содержит специфичную для типа информацию для эффекта CUSTOMFORCE.
Объявление
Swift
struct FFCUSTOMFORCE { var cChannels: DWORD var dwSamplePeriod: DWORD var cSamples: DWORD var rglForceData: LPLONG }
Objective C
typedef struct FFCUSTOMFORCE FFCUSTOMFORCE;
Обсуждение
Указатель на единственную структуру FFCUSTOMFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.
Структура описывает пользовательскую или определяемую пользователем силу.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
UsUsed методом FFDeviceCreateEffect для инициализации нового объекта эффекта. Это также используется функциями FFEffectSetParameters и FFEffectGetParameters.
Объявление
Swift
struct FFEFFECT { var dwSize: DWORD var dwFlags: DWORD var dwDuration: DWORD var dwSamplePeriod: DWORD var dwGain: DWORD var dwTriggerButton: DWORD var dwTriggerRepeatInterval: DWORD var cAxes: DWORD var rgdwAxes: LPDWORD var rglDirection: LPLONG var lpEnvelope: PFFENVELOPE var cbTypeSpecificParams: DWORD var lpvTypeSpecificParams: UnsafeMutablePointer<Void> var dwStartDelay: DWORD }
Objective C
typedef struct FFEFFECT FFEFFECT;
Обсуждение
OBJECT IDS не может использоваться, чтобы идентифицировать кнопки запуска в dwTriggerButton и вывести оси в rgdwAxes [. Используйте объектные смещения (константы FFJOFS_*), единственный поддерживаемый метод.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Структура FFEFFESCAPE передает специфичные для аппаратных средств данные непосредственно плагину Обратной связи Силы.
Объявление
Swift
struct FFEFFESCAPE { var dwSize: DWORD var dwCommand: DWORD var lpvInBuffer: UnsafeMutablePointer<Void> var cbInBuffer: DWORD var lpvOutBuffer: UnsafeMutablePointer<Void> var cbOutBuffer: DWORD }
Objective C
typedef struct FFEFFESCAPE FFEFFESCAPE;
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Используемый структурой FFEFFECT для указания дополнительных параметров конверта для эффекта.
Объявление
Swift
struct FFENVELOPE { var dwSize: DWORD var dwAttackLevel: DWORD var dwAttackTime: DWORD var dwFadeLevel: DWORD var dwFadeTime: DWORD }
Objective C
typedef struct FFENVELOPE FFENVELOPE;
Обсуждение
Выдержать уровень для конверта представлен dwMagnitude элементом структуры FFPERIODIC и lMagnitude элементом структуры FFCONSTANTFORCE. Выдержать время представлено dwDuration элементом структуры FFEFFECT
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Содержит специфичную для типа информацию для следующих эффектов.
СИНУС
КВАДРАТ
ТРЕУГОЛЬНИК
SAWTOOTHUP
SAWTOOTHDOWN
Объявление
Swift
struct FFPERIODIC { var dwMagnitude: DWORD var lOffset: LONG var dwPhase: DWORD var dwPeriod: DWORD }
Objective C
typedef struct FFPERIODIC FFPERIODIC;
Обсуждение
Указатель на единственную структуру FFPERIODIC для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Плагин Обратной связи Силы не может предоставить поддержку для всех значений в dwPhase элементе. В этом случае значение округляется до самого близкого поддерживаемого значения.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Содержит специфичную для типа информацию для эффекта RAMPFORCE.
Объявление
Swift
struct FFRAMPFORCE { var lStart: LONG var lEnd: LONG }
Objective C
typedef struct FFRAMPFORCE FFRAMPFORCE;
Обсуждение
Указатель на единственную структуру FFRAMPFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.
dwDuration для эффекта силы ската не может быть FF_INFINITE.
Оператор импорта
Objective C
@import ForceFeedback;
Swift
import ForceFeedback
Доступность
Доступный в OS X v10.2 и позже.
-
Используемый методом FFDeviceGetForceFeedbackCapabilities для получения возможностей обратной связи силы устройства.
Объявление
Objective C
struct FFCAPABILITIES { NumVersion ffSpecVer; UInt32 supportedEffects; UInt32 emulatedEffects; UInt32 subType; UInt32 numFfAxes; UInt8 ffAxes[32]; UInt32 storageCapacity; UInt32 playbackCapacity; NumVersion firmwareVer; NumVersion hardwareVer; NumVersion driverVer; };
Поля
ffSpecVer
Указывает номер версии спецификации API FF, поддерживаемой этим плагином. Это должно быть указано с помощью полей структуры NumVersion. Первая версия спецификации API FF 1.0.0f0.
supportedEffects
Флаги FFCapabilitiesEffectType, идентифицирующие все типы эффекта, поддерживаемые плагином/устройством (включая эмулированные драйвером эффекты). Это значение может быть комбинацией один или больше следующих значений:
FFCAP_ET_CONSTANTFORCE
Постоянный тип эффекта Силы поддерживается этим устройством.
...
FFCAP_ET_*
Посмотрите заголовочный файл ForceFeedbackConstants.h для полного списка флагов FFCapabilitiesEffectType.
emulatedEffects
Флаги FFCapabilitiesEffectType, идентифицирующие все типы эффекта, не непосредственно поддерживаемые устройством, но эмулированные плагином. Эмулированные флаги эффектов должны также появиться в supportedEffects элементе. Это значение может быть комбинацией один или больше следующих значений:
FFCAP_ET_*
Посмотрите заголовочный файл ForceFeedbackConstants.h для полного списка флагов FFCapabilitiesEffectType.
subType
Подкатегория обратной связи силы, лучше всего идентифицирующая возможности FF устройства. Это значение может быть одним из следующего:
FFCAP_ST_KINESTHETIC
Кинестетическое устройство обратной связи силы является тем, которое может произвести «основанные» силы на основе позиции контроллера. Это поддерживает временные эффекты обратной связи силы (периодические колебания), а также направленный (постоянная сила) и основанный на позиции (пружина, увлажнитель) силы. Большинство джойстиков обратной связи силы более высокого качества и рулей попадают в эту категорию.
FFCAP_ST_VIBRATION
Устройство обратной связи силы вибрации является тем, которое может только произвести неоснованные временные эффекты обратной связи силы (периодические колебания). Игровые планшеты консоли Most и некоторые низкокачественные джойстики попадают в эту категорию.
Подтип обратной связи силы должен быть предоставлен и может только быть одним из вышеупомянутых значений.
numFfAxes
Число осей контроллера, обеспечивающих обратную связь силы. Указывает число допустимых элементов в факсах.
ffAxes
Массив значений, что decribe оси, на которых присутствует обратная связь силы. Число допустимых элементов в массиве указано в numFfAxes. Каждый элемент массива может содержать одно из следующих значений:
FFJOFS_X
Ось X приводится в действие силой-обратной связью.
FFJOFS_Y
Ось Y приводится в действие силой-обратной связью.
FFJOFS_Z
Ось Z приводится в действие силой-обратной связью.
Для устройств подтипа FFCAP_ST_VIBRATION рекомендуется что numFfAxes = 1, и что ffAxes[0] = FFJOFS_X.
storageCapacity
Максимальное количество эффектов, которые могут быть созданы через вызовы к FFDeviceCreateEffect и сосуществовать в любой момент. Это может или может не отличаться от playbackCapacity, в зависимости от сложности драйвера устройства.
playbackCapacity
Максимальное количество создаваемых эффектов, которые могут одновременно играться через вызовы к FFEffectStart. Это число всегда будет равно или меньше, чем storageCapacity. Драйвер устройства может позволить большему количеству эффектов создаваться, чем физическое устройство может фактически обработать. Поэтому это число является важным параметром для разработчиков FF.
driverVer
Указывает номер версии драйвера устройства обратной связи силы, с помощью структуры NumVersion.
firmwareVer
Указывает микропрограммную версию устройства, с помощью структуры NumVersion.
hardwareVer
Указывает версию оборудования устройства, с помощью структуры NumVersion.
Обсуждение
Эта структура не имеет никакого эквивалентного DirectInput.
-
Содержит специфичную для типа информацию для следующих эффектов.
SPRING
УВЛАЖНИТЕЛЬ
ИНЕРЦИЯ
ТРЕНИЕ
Объявление
Objective C
struct FFCONDITION { LONG lOffset; LONG lPositiveCoefficient; LONG lNegativeCoefficient; DWORD dwPositiveSaturation; DWORD dwNegativeSaturation; LONG lDeadBand; };
Поля
lOffset
Смещение для условия, в диапазоне от-10 000 до 10,000.
lPositiveCoefficient
Коэффициент, постоянный на положительной стороне смещения, в диапазоне от-10 000 до 10,000.
lNegativeCoefficient
Коэффициент, постоянный на отрицательной стороне смещения, в диапазоне от-10 000 до 10,000.
Если устройство не поддерживает отдельные положительные и отрицательные коэффициенты, значение lNegativeCoefficient проигнорировано, и значение lPositiveCoefficient используется и в качестве положительных и в качестве отрицательных коэффициентов.
dwPositiveSaturation
Максимальный вывод силы на положительной стороне смещения, в диапазоне от 0 до 10,000.
Если устройство не поддерживает насыщенность силы, значение этого элемента проигнорировано.
dwNegativeSaturation
Максимальный вывод силы на отрицательной стороне смещения, в диапазоне от 0 до 10,000.
Если устройство не поддерживает насыщенность силы, значение этого элемента проигнорировано.
Если устройство не поддерживает отдельную положительную и отрицательную насыщенность, значение dwNegativeSaturation проигнорировано, и значение dwPositiveSaturation используется и в качестве положительной и в качестве отрицательной насыщенности.
lDeadBand
Область вокруг lOffset, в котором условие не активно в диапазоне от 0 до 10,000. Другими словами, условие не активно между lOffset минус lDeadBand и lOffset плюс lDeadBand.
Обсуждение
Указатель на массив структур FFCONDITION для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Число элементов в массиве должно быть или один, или равно числу осей, связанных с эффектом.
Различные типы условий интерпретируют параметры по-другому, но основная идея состоит в том, что сила, следующая из условия, равна (q - q0), где A является масштабным коэффициентом, q является некоторой метрикой, и q0 является нейтральным значением для той метрики.
Если ненулевая мертвая зона предоставлена, предыдущая упрощенная формула должна быть скорректирована. Если метрика является меньше, чем lOffset - lDeadBand, получающаяся сила дана следующей формулой:
вызовите = lNegativeCoefficient * (q - (lOffset - lDeadBand))
Точно так же, если метрика больше, чем lOffset + lDeadBand, получающаяся сила дана следующей формулой:
вызовите = lPositiveCoefficient * (q - (lOffset + lDeadBand))
Пружинное условие использует позицию оси как метрика.
Условие увлажнителя использует скорость оси в качестве метрики.
Условие инерции использует ускорение оси в качестве метрики.
Если число структур FFCONDITION в массиве равно числу осей для эффекта, первая структура применяется к первой оси, второе применяется к второй оси и т.д. Например, пружинное условие с двумя осями с набором lOffset к 0 в обоих структуры FFCONDITION имело бы тот же эффект как самоцентрирующая пружина джойстика. Когда условие определяется для каждой оси таким образом, эффект не должен быть повернут.
Если существует единственная структура FFCONDITION для эффекта больше чем с одной осью, направление, вдоль которого имеют силу параметры структуры FFCONDITION, определяется параметрами направления, переданными в rglDirection поле структуры FFEFFECT. Например, условие трения вращалось, 45 градусов (в полярных координатах) будут сопротивляться движению джойстика в северо-восточно-юго-западном направлении, но не имели бы никакого эффекта на движение джойстика в северо-западно-юго-восточном направлении.
-
Содержит специфичную для типа информацию для эффекта CONSTANTFORCE.
Объявление
Objective C
struct FFCONSTANTFORCE { LONG lMagnitude; };
Поля
lMagnitude
Величина эффекта, в диапазоне от-10 000 до 10,000. Если конверт применяется с этой целью, значение представляет величину выдержания. Если никакой конверт не применяется, значение представляет амплитуду всего эффекта.
Обсуждение
Указатель на единственную структуру FFCONSTANTFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.
-
Содержит специфичную для типа информацию для эффекта CUSTOMFORCE.
Объявление
Objective C
struct FFCUSTOMFORCE { DWORD cChannels; DWORD dwSamplePeriod; DWORD cSamples; LPLONG rglForceData; };
Поля
cChannels
Число каналов (оси) затронуто этой силой.
Первый канал применяется к первой оси, связанной с эффектом, вторым к второму, и т.д. Если существует меньше каналов, чем оси, ничто не связано с дополнительными осями.
Если существует только единственный канал, эффект повернут в направлении, указанном rglDirection элементом структуры FFEFFECT. Если существует больше чем один канал, вращение не позволяется.
Не все устройства поддерживают вращение пользовательских эффектов.
dwSamplePeriod
Период дискретизации, в микросекундах.
cSamples
Общее количество выборок в rglForceData. Это должно быть интегральное кратное число каналов.
rglForceData
Указатель на массив значений силы, представляющих пользовательскую силу. Если многократные каналы предоставлены, значения чередованы. Например, если каналы равняются 3, первый элемент массива принадлежит первому каналу, второму к второму, и третье к третьему.
Обсуждение
Указатель на единственную структуру FFCUSTOMFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.
Структура описывает пользовательскую или определяемую пользователем силу.
-
UsUsed методом FFDeviceCreateEffect для инициализации нового объекта эффекта. Это также используется функциями FFEffectSetParameters и FFEffectGetParameters.
Объявление
Objective C
struct FFEFFECT { DWORD dwSize; DWORD dwFlags; DWORD dwDuration; DWORD dwSamplePeriod; DWORD dwGain; DWORD dwTriggerButton; DWORD dwTriggerRepeatInterval; DWORD cAxes; LPDWORD rgdwAxes; LPLONG rglDirection; PFFENVELOPE lpEnvelope; DWORD cbTypeSpecificParams; void *lpvTypeSpecificParams; DWORD dwStartDelay; };
Поля
dwSize
Размер, в байтах, этой структуры. Этот элемент должен быть инициализирован, прежде чем структура используется.
dwFlags
Флаги связались с эффектом. Это значение может быть комбинацией один или больше следующих значений:
FFEFF_CARTESIAN
Значения rglDirection должны быть интерпретированы как Декартовы координаты.
FFEFF_OBJECTOFFSETS
Значения dwTriggerButton и rgdwAxes являются смещениями формата данных, константами FFJOFS_*. Этот флаг не необходим, поскольку принят формат. Метод OBJECTIDS указания dwTriggerButton и rgdwAxes не поддерживается - константы FFJOFS_* MUST использоваться.
FFEFF_POLAR
Значения rglDirection должны быть интерпретированы как полярные координаты.
FFEFF_SPHERICAL
Значения rglDirection должны быть интерпретированы как сферические координаты.
dwDuration
Общая продолжительность эффекта, в микросекундах. Если это значение является FF_INFINITE, эффект имеет бесконечную продолжительность. Если конверт был применен к эффекту, атака применяется, сопровождается большим количеством, выдерживают.
dwSamplePeriod
Период, в который устройство должно воспроизвести эффект в микросекундах. Значение 0 указывает, что должна использоваться частота дискретизации воспроизведения по умолчанию.
Если устройство не способно к воспроизведению эффекта на указанном уровне, это выбирает поддерживаемый уровень, который является самым близким к требуемому значению.
Установка пользовательского dwSamplePeriod может использоваться для специальных эффектов. Например, игра синусоидальной волны в искусственно период большой выборки приводит к более грубой текстуре.
dwGain
Усиление, которое будет применено к эффекту в диапазоне от 0 до 10,000. Усиление является масштабным коэффициентом, применился ко всем величинам эффекта и его конверта.
dwTriggerButton
Идентификатор или смещение кнопки, которая будет использоваться для инициирования воспроизведения эффекта. Флаги FFJOFS_* должны использоваться для указания значения. Если этот элемент установлен в FFEB_NOTRIGGER, никакая кнопка запуска не связана с эффектом.
dwTriggerRepeatInterval
Интервал, в микросекундах, между концом одного воспроизведения и запуском следующего, когда эффект инициирован нажатием кнопки и кнопкой, удерживается. Установка этого значения к FF_INFINITE подавляет повторение.
cAxes
Число осей, вовлеченных в эффект. Этот элемент должен быть переполнен в вызывающей стороной при изменении или установке списка оси или списка направления.
Число осей для эффекта не может быть изменено, как только оно было установлено.
rgdwAxes
Указатель на массив DWORD (cAxes элементов) содержащий идентификаторы или смещения, идентифицирующие оси, к которым состоит в том, чтобы быть применен эффект. Флаги FFJOFS_* должны использоваться для указания значений в массиве.
Список осей, связанных с эффектом, не может быть изменен, как только он был установлен.
Не больше, чем 32 оси могут быть связаны с единственным эффектом.
rglDirection
Указатель на массив LONG (cAxes элементов) содержащий или Декартовы координаты, полярные координаты или сферические координаты. Флаги FFEFF_CARTESIAN, FFEFF_POLAR и FFEFF_SPHERICAL определяют семантику значений в массиве.
Если Декартов, каждое значение в rglDirection связано с соответствующей осью в rgdwAxes.
Если полярный, угол измеряется в сотых частях градусов от (0,-1) направление, повернутое в направлении (1, 0). Это обычно означает, что север вдали от пользователя, и восток к праву пользователя. Последний элемент не используется.
Если сферический, первый угол измеряется в сотых частях градуса от (1, 0) направление, повернутое в направлении (0, 1). Второй угол (если число осей равняется трем или больше) измеряется в сотых частях градуса к (0, 0, 1). Третий угол (если число осей равняется четырем или больше) измеряется в сотых частях градуса к (0, 0, 0, 1), и т.д. Последний элемент не используется.
Примечание: Даже если полярные или сферические координаты даны, массив rglDirection должен содержать cAxes записи. В этих случаях последний элемент в массиве rglDirection резервируется для будущего использования и должен быть 0.
lpEnvelope
Дополнительный указатель на структуру FFENVELOPE, описывающую конверт, который будет использоваться этим эффектом. Не весь эффект вводит конверты использования. Если никакой конверт не должен быть применен, элемент должен быть установлен в NULL.
cbTypeSpecificParams
Число байтов дополнительных специфичных для типа параметров для соответствующего типа эффекта.
lpvTypeSpecificParams
TPointer к специфичным для типа параметрам или NULL, при отсутствии специфичных для типа параметров.
Если эффект имеет тип FFEFT_CONDITION, этот элемент содержит указатель на массив структур FFCONDITION, определяющих параметры для условия. Единственная структура может использоваться, когда условие применяется в направлении, указанном в массиве rglDirection. Иначе, должна быть одна структура для каждой оси в том же порядке как оси в массиве rgdwAxes. Если структура предоставляется для каждой оси, эффект не должен быть повернут; необходимо использовать следующие значения в массиве rglDirection:
FFEFF_SPHERICAL: 0, 0...
FFEFF_POLAR: 9000, 0...
FFEFF_CARTESIAN: 1, 0...
Если эффект имеет тип FFEFT_CUSTOMFORCE, этот элемент содержит указатель на структуру FFCUSTOMFORCE, определяющую параметры для пользовательской силы.
Если эффект имеет тип FFEFT_PERIODIC, этот элемент содержит указатель на структуру FFPERIODIC, определяющую параметры для эффекта.
Если эффект имеет тип FFEFT_CONSTANTFORCE, этот элемент содержит указатель на структуру FFCONSTANTFORCE, определяющую параметры для постоянной силы.
Если эффект имеет тип FFEFT_RAMPFORCE, этот элемент содержит указатель на структуру FFRAMPFORCE, определяющую параметры для силы ската.
dwStartDelay
Время (в микросекундах), что устройство должно ожидать после вызова FFEffectStart прежде, чем играть эффект. Если это значение 0, воспроизведение эффекта сразу начинается.
Обсуждение
OBJECT IDS не может использоваться, чтобы идентифицировать кнопки запуска в dwTriggerButton и вывести оси в rgdwAxes [. Используйте объектные смещения (константы FFJOFS_*), единственный поддерживаемый метод.
-
Структура FFEFFESCAPE передает специфичные для аппаратных средств данные непосредственно плагину Обратной связи Силы.
Объявление
Objective C
struct FFEFFESCAPE { DWORD dwSize; DWORD dwCommand; void *lpvInBuffer; DWORD cbInBuffer; void *lpvOutBuffer; DWORD cbOutBuffer; };
Поля
dwSize
Размер, в байтах, этой структуры. Этот элемент должен быть инициализирован, прежде чем структура используется.
dwCommand
Указывает сменное определенное число команды. Свяжитесь с поставщиком оборудования для списка допустимых команд и их параметров.
lpvInBuffer
Буфер, содержащий данные, требуемые выполнять работу.
cbInBuffer
Указывает размер, в байтах, буфера lpvInBuffer.
lpvOutBuffer
Буфер, в котором выходные данные работы возвращается.
cbOutBuffer
На записи, указывает размер, в байтах, буфера lpvOutBuffer. На выходе, указывает число байтов, фактически произведенных командой.
-
Используемый структурой FFEFFECT для указания дополнительных параметров конверта для эффекта.
Объявление
Objective C
struct FFENVELOPE { DWORD dwSize; DWORD dwAttackLevel; DWORD dwAttackTime; DWORD dwFadeLevel; DWORD dwFadeTime; };
Поля
dwSize
Размер, в байтах, этой структуры. Этот элемент должен быть инициализирован, прежде чем структура используется.
dwAttackLevel
Амплитуда для запуска конверта, относительно базовой линии, в диапазоне от 0 до 10,000. Если специфичные для типа данные эффекта не указывают базовую линию, амплитуда относительно 0.
dwAttackTime
Время, в микросекундах, для достижения выдержать уровня.
dwFadeLevel
Амплитуда для конца конверта, относительно базовой линии, в диапазоне от 0 до 10,000. Если специфичные для типа данные эффекта не указывают базовую линию, амплитуда относительно 0.
dwFadeTime
Время, в микросекундах, для достижения исчезнуть уровня.
Обсуждение
Выдержать уровень для конверта представлен dwMagnitude элементом структуры FFPERIODIC и lMagnitude элементом структуры FFCONSTANTFORCE. Выдержать время представлено dwDuration элементом структуры FFEFFECT
-
Содержит специфичную для типа информацию для следующих эффектов.
СИНУС
КВАДРАТ
ТРЕУГОЛЬНИК
SAWTOOTHUP
SAWTOOTHDOWN
Объявление
Objective C
struct FFPERIODIC { DWORD dwMagnitude; LONG lOffset; DWORD dwPhase; DWORD dwPeriod; };
Поля
dwMagnitude
Величина эффекта, в диапазоне от 0 до 10,000. Если конверт применяется с этой целью, значение представляет величину выдержания. Если никакой конверт не применяется, значение представляет амплитуду всего эффекта.
lOffset
Смещение эффекта. Диапазон сил, сгенерированных эффектом, является lOffset минус dwMagnitude к lOffset плюс dwMagnitude. Значение lOffset элемента является также базовой линией для любого конверта, применяющегося к эффекту.
dwPhase
Позиция в цикле периодического эффекта, в котором воспроизведение начинается в диапазоне от 0 до 35,999.
dwPeriod
Период эффекта, в микросекундах.
Обсуждение
Указатель на единственную структуру FFPERIODIC для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT. Плагин Обратной связи Силы не может предоставить поддержку для всех значений в dwPhase элементе. В этом случае значение округляется до самого близкого поддерживаемого значения.
-
Содержит специфичную для типа информацию для эффекта RAMPFORCE.
Объявление
Objective C
struct FFRAMPFORCE { LONG lStart; LONG lEnd; };
Поля
lMagnitude
Величина в начале эффекта, в диапазоне от-10 000 до 10,000.
lEnd
Величина в конце эффекта, в диапазоне от-10 000 до 10,000.
Обсуждение
Указатель на единственную структуру FFRAMPFORCE для эффекта передается в lpvTypeSpecificParams элементе структуры FFEFFECT.
dwDuration для эффекта силы ската не может быть FF_INFINITE.
См. Обзор для документации уровня заголовка.
-
Объявление
Objective C
enum { kFFAPIMajorRev = 1, kFFAPIMinorAndBugRev = 0, kFFAPIStage = finalStage, kFFAPINonRelRev = 0 };
Обсуждение
Это отсылает Платформу Обратной связи Силы API (а не сменный API).