/*****************************************************************************
 * $LastChangedDate: 2009-12-12 11:43:48 -0500 (Sat, 12 Dec 2009) $
 * @file
 * @author  Jim E. Brooks  http://www.palomino3d.org
 * @brief   Input header file.
 * @namespace input
 * @brief input module
 *//*
 * LEGAL:   COPYRIGHT (C) 2007 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
 *****************************************************************************/

#ifndef INPUT_MODULE_HH
#define INPUT_MODULE_HH 1

//------------------------------------------------------------------------------
// See base/module.hh

namespace input {

void Init( const base::InitArgs& initArgs );

void Start( void );

} // namespace input

//------------------------------------------------------------------------------

#include "base/module.hh"
#include "base/time.hh"
using namespace base;

#include "input/device_keyboard.hh"
#include "input/device_joystick.hh"
#include "input/device_mouse.hh"

// System-specific KeyboardDevice class.
#if COMPILE_OSG
#   define INPUT_DEVICE_KEYBOARD_CLASS KeyboardDeviceOSG
#   include "input/device_keyboard_osg.hh"
#else
#   error
#endif

// System-specific JoystickDevice class.
// Joystick::GetInstance() is responsible, in part, for choosing which Joystick object.
#if COMPILE_SDL  // don't write if/else to compile every possible driver
#   include "input/device_joystick_sdl.hh"
#endif
#if COMPILE_LINUX_JOYSTICK
// FreeBSD's devel/linux-js port emulates a Linux joystick driver.
#   include "input/device_joystick_linux.hh"
#endif
#if OS_WINDOWS
#   include "input/device_joystick_windows.hh"
#endif
#include "input/device_joystick_nop.hh"  // always

// System-specific Mouse class.
#if COMPILE_OSG
#   define INPUT_DEVICE_MOUSE_CLASS MouseDeviceOSG
#   include "input/device_mouse_osg.hh"
#endif

#endif // INPUT_MODULE_HH
