note
	description: "[
							A GAME_HAPTIC_EFFECT that play on a periodic strength.
							A periodic effect consists of a wave-shaped effect that
							repeats itself over time. Example:
		
							button         period
							press          |     |
							  ||      __    __    __    __    __    _
							  ||     |  |  |  |  |  |  |  |  |  |   magnitude   __ Offset
							  \/     |  |__|  |__|  |__|  |__|  |   _
							    -----
							      |
							    delay          phase >>
							
							-------------------------------------
							              length
							===================================================
							                      interval
	]"
	author: "Louis Marchand"
	date: "Tue, 03 Mar 2015 14:16:22 +0000"
	revision: "2.0"

class interface
	GAME_HAPTIC_PERIODIC_EFFECT

create 
	make_sine,
	make_square,
	make_triangle,
	make_sawtooth_up,
	make_sawtooth_down

feature -- Access

	direction: GAME_HAPTIC_DIRECTION assign set_direction
			-- The orientation that the force of Current come from
		require
			exists: exists

	set_direction (a_direction: GAME_HAPTIC_DIRECTION)
			-- assign direction with the values of a_direction
		require
			exists: exists
		ensure
			is_assign: direction ~ a_direction

	length: NATURAL_32 assign set_length
			-- Duration of Current (in millisecond)

	set_length (a_length: NATURAL_32)
			-- Assign length with the value of a_length

	delay: NATURAL_16 assign set_delay
			-- delay before starting Current (in millisecond)

	set_delay (a_delay: NATURAL_16)
			-- Assign delay with the value of a_delay

	interval: NATURAL_16 assign set_interval
			-- how soon before effect can be triggered again (in millisecond)

	set_interval (a_interval: NATURAL_16)
			-- Assign interval with the value of a_interval

	period: NATURAL_16 assign set_period
			-- Time (in millisecond) between two wave.
		require
			exists: exists

	set_period (a_period: NATURAL_16)
			-- Assign period with the value of a_period
		require
			exists: exists
			period_valid: a_period <= 32767
		ensure
			is_assign: period = a_period

	magnitude: INTEGER_16 assign set_magnitude
			-- peak value; if negative, equivalent to 180 degrees extra phase shift
		require
			exists: exists

	set_magnitude (a_magnitude: INTEGER_16)
			-- Assign magnitude with the value of a_magnitude
		require
			exists: exists
			magnitude_valid: a_magnitude <= 32767
		ensure
			is_assign: magnitude = a_magnitude

	offset: INTEGER_16 assign set_offset
			-- Mean value of the wave
		require
			exists: exists

	set_offset (a_offset: INTEGER_16)
			-- Assign offset with the value of a_offset
		require
			exists: exists
			offset_valid: a_offset <= 32767
		ensure
			is_assign: offset = a_offset

	phase: NATURAL_16 assign set_phase
			-- Time (in millisecond) between two wave.
		require
			exists: exists

	set_phase (a_phase: NATURAL_16)
			-- Assign phase with the value of a_phase
		require
			exists: exists
			phase_valid: a_phase <= 32767
		ensure
			is_assign: phase = a_phase

	fade_in_level: NATURAL_16 assign set_fade_in_level
			-- level at the start of the fade in

	set_fade_in_level (a_fade_in_level: NATURAL_16)
			-- Assign fade_in_level with the value of a_fade_in_level

	fade_in_length: NATURAL_16 assign set_fade_in_length
			-- length of the fade in

	set_fade_in_length (a_fade_in_length: NATURAL_16)
			-- Assign fade_in_length with the value of a_fade_in_length

	fade_out_level: NATURAL_16 assign set_fade_out_level
			-- level at the start of the fade out

	set_fade_out_level (a_fade_out_level: NATURAL_16)
			-- Assign fade_out_level with the value of a_fade_out_level

	fade_out_length: NATURAL_16 assign set_fade_out_length
			-- length of the fade out

	set_fade_out_length (a_fade_out_length: NATURAL_16)
			-- Assign fade_out_length with the value of a_fade_out_length
	
end -- class GAME_HAPTIC_PERIODIC_EFFECT

Generated by ISE EiffelStudio