Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ALLEGRO_HAPTIC_EFFECT(3)   Library Functions Manual   ALLEGRO_HAPTIC_EFFECT(3)

NAME
       ALLEGRO_HAPTIC_EFFECT - Allegro 5 API

SYNOPSIS
	      #include <allegro5/allegro.h>

	      struct ALLEGRO_HAPTIC_EFFECT

DESCRIPTION
       This  struct  models a particular haptic	or vibration effect.  It needs
       to be filled in correctly and uploaded to a haptic  device  before  the
       device can play it back.

       Fields:

       type   The  type	 of the	haptic effect.	May be one of the ALLEGRO_HAP-
	      TIC_CONSTANTS constants between or equal to  ALLEGRO_HAPTIC_RUM-
	      BLE and ALLEGRO_HAPTIC_RAMP.

	      	If  type is set	to ALLEGRO_HAPTIC_RUMBLE, then the effect is a
		simple "rumble"	or vibration effect that  shakes  the  device.
		In  some cases,	such as	on a mobile platform, the whole	device
		may shake.

	      	If type	is set to ALLEGRO_HAPTIC_PERIODIC,  the	 effect	 is  a
		shake  or  vibration of	which the intensity is a periodic wave
		form.

	      	If type	is set to ALLEGRO_HAPTIC_CONSTANT,  the	 effect	 is  a
		constant  pressure, motion or push-back	in a certain direction
		of the axes of the device.

	      	If type	is set	to  ALLEGRO_HAPTIC_SPRING,  the	 effect	 is  a
		springy	 kind  of resistance against motion of the axes	of the
		haptic device.

	      	If type	is set to ALLEGRO_HAPTIC_FRICTION,  the	 effect	 is  a
		friction  kind of resistance against motion of the axes	of the
		haptic device.

	      	If type	is set	to  ALLEGRO_HAPTIC_DAMPER,  the	 effect	 is  a
		damper	kind  of  resistance against motion of the axes	of the
		haptic device.

	      	If type	is set to ALLEGRO_HAPTIC_INERTIA,  the	effect	causes
		inertia	 or  slowness of motions on the	axes of	the haptic de-
		vice.

	      	If type	is set to ALLEGRO_HAPTIC_RAMP,	the  effect  causes  a
		pressure  or  push-back	that ramps up or down depending	on the
		position of the	axis.

       direction
	      The direction of location	in 3D space where the effect should be
	      played.  Allegro haptic devices model directions in 3D space us-
	      ing spherical coordinates.  However, the haptic device  may  not
	      support  localized  effects,  or	may not	support	all coordinate
	      components.

	      In Allegro's coordinate system, the value	in direction.angle de-
	      termines the planar angle	between	the effect and	the  direction
	      of  the  user  who holds the device, expressed in	radians.  This
	      angle increases clockwise	away from the  user.   So,  an	effect
	      with  an	angle  0.0 takes place in the direction	of the user of
	      the haptic device, an angle of /2	is to the left of the user, an
	      angle of	means the direction away from the user,	and  an	 angle
	      of 3/2 means to the right	of the user.

	      If al_get_haptic_capabilities(3) has the flag ALLEGRO_HAPTIC_AN-
	      GLE  set,	then setting direction.angle is	supported.  Otherwise,
	      it is unsupported, and you should	set it to 0.

	      The value	in direction.radius is a relative  value  between  0.0
	      and 1.0 that determines the relative distance from the center of
	      the  haptic  device at which the effect will play	back.  A value
	      of 0 means that the effect should	play back at the center	of the
	      device.  A value of 1.0 means that the effect should  play  back
	      away from	the center as far as is	possible.

	      If al_get_haptic_capabilities(3) has the flag ALLEGRO_HAPTIC_RA-
	      DIUS  set,  then	setting	direction.radius is supported.	Other-
	      wise, it is unsupported, and you should set it to	0.

	      The value	in direction.azimuth determines	 the  elevation	 angle
	      between  the  effect  and	the plane in which the user is holding
	      the device, expressed in radians.	 An effect with	an azimuth 0.0
	      plays back in the	plane in which the user	is holding the device,
	      an azimuth +/2 means the effect plays back vertically above  the
	      user  plane, and an azimuth -/2 means the	effect plays back ver-
	      tically below the	user plane.

	      If al_get_haptic_capabilities(3) has the flag ALLEGRO_HAPTIC_AZ-
	      IMUTH set, then setting direction.azimuth	is supported.	Other-
	      wise, it is unsupported, and you should set it to	0.

       replay Determines  how the effect should	be played back.	 replay.length
	      is the duration in seconds of the	effect,	 and  replay.delay  is
	      the  time	 in seconds that the effect playback should be delayed
	      when playback is started with al_play_haptic_effect(3).

       data   Determines in detail the parameters of the haptic	effect to play
	      back.

	      If  type	is  set	 to  ALLEGRO_HAPTIC_RUMBLE,   then   data.rum-
	      ble.strong_magnitude must	be set to a relative magnitude between
	      0.0  and 1.0 to determine	how intensely the "large" rumble motor
	      of the haptic device will	vibrate,  and  data.rumble.weak_magni-
	      tude  must  be  set to relative magnitude	between	0.0 and	1.0 to
	      determine	how intensely the "weak" ruble motor of	the haptic de-
	      vice will	vibrate.  Not all devices  have	 a  "weak"  motor,  in
	      which  case  the value set in data.rumble.weak_magnitude will be
	      ignored.

	      If type  is  set	to  ALLEGRO_HAPTIC_PERIODIC,  then  data.peri-
	      odic.waveform must be set	to one of ALLEGRO_HAPTIC_SQUARE, ALLE-
	      GRO_HAPTIC_TRIANGLE, ALLEGRO_HAPTIC_SINE,	ALLEGRO_HAPTIC_SAW_UP,
	      ALLEGRO_HAPTIC_SAW_DOWN,	ALLEGRO_HAPTIC_CUSTOM.	This will then
	      determine	the wave form of the vibration	effect	that  will  be
	      played on	the haptic device.

	      In  these	 cases,	data.periodic.period must be set to the	period
	      in seconds of the	wave form.  The	field  data.periodic.magnitude
	      must  be set to the relative magnitude of	intensity between -1.0
	      and 1.0 at which the wave	form of	the vibration will  be	played
	      back.  The field data.periodic.offset must be filled in with the
	      offset from origin in seconds of the wave	form of	vibration, and
	      the  field  data.periodic.phase is the phase of the wave form of
	      vibration	in seconds.

	      If data.periodic.waveform	is set to ALLEGRO_HAPTIC_CUSTOM,  then
	      data.periodic.custom_data	 must  point to	an array of data.peri-
	      odic.custom_len doubles, each with values	between	-1.0 and  1.0.
	      This  value  array  will determine the shape of the wave form of
	      the haptic effect.  ALLEGRO_HAPTIC_CUSTOM	is  not	 supported  on
	      some platforms, so use al_get_haptic_capabilities(3) to check if
	      it's  available.	 If  it	 isn't,	 you  may  want	to play	back a
	      non-custom wave effect as	a substitute instead.

	      If  type	is  set	 to  ALLEGRO_HAPTIC_CONSTANT,  then  data.con-
	      stant.level  must	 be  set to a relative intensity value between
	      0.0 and 1.0 to determine the intensity of	the effect.

	      If type is set to	 any  of  ALLEGRO_HAPTIC_SPRING,  ALLEGRO_HAP-
	      TIC_FRICTION, ALLEGRO_HAPTIC_DAMPER, ALLEGRO_HAPTIC_INERTIA, AL-
	      LEGRO_HAPTIC_RAMP,  then	the  data.condition  struct  should be
	      filled in.  To explain this better, it's best to	keep  in  mind
	      that  these  kinds of effects are	most useful for	steering-wheel
	      kind of devices, where resistance	or inertia should  be  applied
	      when  turning  the device's wheel	a certain distance to the left
	      or right.

	      The field	data.condition.right_saturation	must be	filled in with
	      a	relative magnitude between -1.0	and 1.0	to determine  the  in-
	      tensity  of  resistance  or  inertia  on the "right" side	of the
	      axis.  Likewise, data.condition.left_saturation must  be	filled
	      in  with	a relative magnitude between -1.0 and 1.0 to determine
	      the intensity of resistance or inertia on	the "left" side	of the
	      axis.

	      The field	data.condition.deadband	must be	filled in with a rela-
	      tive value between 0.0 and 1.0 to	determine the  relative	 width
	      of the "dead band" of the	haptic effect.	As long	as the axis of
	      the  haptic  device  remains in the "dead	band" area, the	effect
	      will not be applied.  A value of 0.0  means  there  is  no  dead
	      band,  and  a value of 1.0 means it applied over the whole range
	      of the axis in question.

	      The field	data.condition.center must be filled in	with  a	 rela-
	      tive  value between -1.0 and 1.0 to determine the	relative posi-
	      tion of the "center" of the effect around	which the dead band is
	      centered.	 It should be set to 0.0 in case the center should not
	      be shifted.

	      The    field    data.condition.right_coef	   and	   data.condi-
	      tion.right_left_coef  must  be filled in with a relative coeffi-
	      cient, that will determine how quickly the effect	 ramps	up  on
	      the right	and left side.	If set to 1.0, then the	effect will be
	      immediately at full intensity when outside of the	dead band.  If
	      set to 0.0 the effect will not be	felt at	all.

	      If     type     is     set    to	  ALLEGRO_HAPTIC_RAMP,	  then
	      data.ramp.start_level should be  set  to	a  relative  magnitude
	      value between -1.0 and 1.0 to determine the initial intensity of
	      the  haptic effect.  The field data.ramp.end_level should	be set
	      to a relative magnitude value between -1.0 and 1.0 to  determine
	      the final	intensity of the haptic	effect at the end of playback.

	      If  type	is set to any of ALLEGRO_HAPTIC_PERIODIC, ALLEGRO_HAP-
	      TIC_CONSTANT, ALLEGRO_HAPTIC_RAMP, then data.envelope determines
	      the "envelope" of	the effect.  That is, it determines the	 dura-
	      tion  and	 intensity for the ramp-up attack or "fade in" and the
	      ramp-down	or "fade out" of the effect.

	      In these cases the field data.envelope.attack_level must be  set
	      to  a relative value between 0.0 and 1.0 that determines the in-
	      tensity the effect should	have when it starts playing (after re-
	      play.delay seconds have passed since the playback	was  started).
	      The field	data.envelope.attack_length must be set	to the time in
	      seconds  that the	effect should ramp up to the maximum intensity
	      as set by	the other parameters.  If  data.envelope.attack_length
	      is 0, then the effect will play immediately at full intensity.

	      The  field  data.envelope.fade_level  must  be set to a relative
	      value between 0.0	and 1.0	that determines	the intensity the  ef-
	      fect should have when it stops playing after replay.length + re-
	      play.delay  seconds have passed since the	playback of the	effect
	      started.	The field data.envelope.fade_length must be set	to the
	      time in seconds that the effect should fade out before  it  fin-
	      ishes  playing.  If data.envelope.fade_length is 0, then the ef-
	      fect will	not fade out.

	      If you don't want	to use an envelope, then set all  four	fields
	      of data.envelope to 0.0.	The effect will	then play back at full
	      intensity	throughout its playback.

SINCE
       5.1.8

	      [Unstable	 API]: Perhaps could be	simplified due to limited sup-
	      port for all the exposed features	across all of  the  platforms.
	      Awaiting feedback	from users.

Allegro	reference manual			      ALLEGRO_HAPTIC_EFFECT(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ALLEGRO_HAPTIC_EFFECT&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help