PageRenderTime 24ms CodeModel.GetById 18ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/src/ois/includes/win32/Win32ForceFeedback.h

https://bitbucket.org/cabalistic/ogredeps/
C++ Header | 108 lines | 41 code | 19 blank | 48 comment | 0 complexity | f701c54318d22cf4619b27efeea7692d MD5 | raw file
  1/*
  2The zlib/libpng License
  3
  4Copyright (c) 2005-2007 Phillip Castaneda (pjcast -- www.wreckedgames.com)
  5
  6This software is provided 'as-is', without any express or implied warranty. In no event will
  7the authors be held liable for any damages arising from the use of this software.
  8
  9Permission is granted to anyone to use this software for any purpose, including commercial 
 10applications, and to alter it and redistribute it freely, subject to the following
 11restrictions:
 12
 13    1. The origin of this software must not be misrepresented; you must not claim that 
 14		you wrote the original software. If you use this software in a product, 
 15		an acknowledgment in the product documentation would be appreciated but is 
 16		not required.
 17
 18    2. Altered source versions must be plainly marked as such, and must not be 
 19		misrepresented as being the original software.
 20
 21    3. This notice may not be removed or altered from any source distribution.
 22*/
 23#ifndef OIS_Win32ForceFeedBack_H
 24#define OIS_Win32ForceFeedBack_H
 25
 26#include "OISPrereqs.h"
 27#include "OISForceFeedback.h"
 28#include "win32/Win32Prereqs.h"
 29
 30namespace OIS
 31{
 32	class Win32ForceFeedback : public ForceFeedback
 33	{
 34		Win32ForceFeedback() {}
 35	public:
 36		Win32ForceFeedback(IDirectInputDevice8* pDIJoy, const DIDEVCAPS* pDIJoyCaps);
 37		~Win32ForceFeedback();
 38
 39		/** @copydoc ForceFeedback::upload */
 40		void upload( const Effect* effect );
 41
 42		/** @copydoc ForceFeedback::modify */
 43		void modify( const Effect* effect );
 44
 45		/** @copydoc ForceFeedback::remove */
 46		void remove( const Effect* effect );
 47
 48		/** @copydoc ForceFeedback::setMasterGain */
 49		void setMasterGain( float level );
 50		
 51		/** @copydoc ForceFeedback::setAutoCenterMode */
 52		void setAutoCenterMode( bool auto_on );
 53
 54		/** @copydoc ForceFeedback::getFFAxesNumber */
 55		short getFFAxesNumber();
 56
 57		/** @copydoc ForceFeedback::getFFMemoryLoad */
 58		unsigned short getFFMemoryLoad();
 59
 60		/**
 61			@remarks
 62			Internal use.. Used during enumeration to build a list of a devices
 63			support effects.
 64		*/
 65		void _addEffectSupport( LPCDIEFFECTINFO pdei );
 66
 67		/**
 68			@remarks
 69			Internal use.. Used during axis enumeration to get number of FF axes
 70			support effects.
 71		*/
 72		void _addFFAxis();
 73
 74	protected:
 75
 76		//Specific Effect Settings
 77		void _updateConstantEffect( const Effect* effect );
 78		void _updateRampEffect( const Effect* effect );
 79		void _updatePeriodicEffect( const Effect* effect );
 80		void _updateConditionalEffect( const Effect* effect );
 81		void _updateCustomEffect( const Effect* effect );
 82
 83		//Sets the common properties to all effects
 84		void _setCommonProperties( DIEFFECT* diEffect, DWORD* rgdwAxes,
 85									LONG* rglDirection, DIENVELOPE* diEnvelope, DWORD struct_size, 
 86									LPVOID struct_type, const Effect* effect, const Envelope* envelope );
 87		//Actually do the upload
 88		void _upload( GUID, DIEFFECT*, const Effect* );
 89
 90		// Map of currently uploaded effects (handle => effect)
 91		typedef std::map<int,LPDIRECTINPUTEFFECT> EffectList;
 92		EffectList mEffectList;
 93
 94		//Simple unique handle creation - allows for upto 2+ billion effects
 95		//during the lifetime of application. Hopefully, that is enough.
 96		int mHandles;
 97
 98		// Joystick device descriptor.
 99		IDirectInputDevice8* mJoyStick;
100		
101		// Joystick capabilities.
102		const DIDEVCAPS* mpDIJoyCaps;
103
104		// Number of axis supporting FF.
105		short mFFAxes;
106	};
107}
108#endif //OIS_Win32ForceFeedBack_H