FlightGear next
FGMouseInput.hxx
Go to the documentation of this file.
1// FGMouseInput.hxx -- handle user input from mouse devices
2//
3// Written by Torsten Dreyer, started August 2009
4// Based on work from David Megginson, started May 2001.
5//
6// Copyright (C) 2009 Torsten Dreyer, Torsten (at) t3r _dot_ de
7// Copyright (C) 2001 David Megginson, david@megginson.com
8//
9// This program is free software; you can redistribute it and/or
10// modify it under the terms of the GNU General Public License as
11// published by the Free Software Foundation; either version 2 of the
12// License, or (at your option) any later version.
13//
14// This program is distributed in the hope that it will be useful, but
15// WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17// General Public License for more details.
18//
19// You should have received a copy of the GNU General Public License
20// along with this program; if not, write to the Free Software
21// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22//
23// $Id$
24
25
26#ifndef _FGMOUSEINPUT_HXX
27#define _FGMOUSEINPUT_HXX
28
29#include "FGCommonInput.hxx"
30
31#include <memory>
32
33#include <simgear/structure/subsystem_mgr.hxx>
34
35// forward decls
36namespace osgGA { class GUIEventAdapter; }
37
39// The Mouse Input Class
41class FGMouseInput : public SGSubsystem,
43{
44public:
46 virtual ~FGMouseInput() = default;
47
48 // Subsystem API.
49 void init() override;
50 void reinit() override;
51 void shutdown() override;
52 void update(double dt) override;
53
54 // Subsystem identification.
55 static const char* staticSubsystemClassId() { return "input-mouse"; }
56
57 void doMouseClick (int b, int updown, int x, int y, bool mainWindow, const osgGA::GUIEventAdapter* ea);
58 void doMouseMotion (int x, int y, const osgGA::GUIEventAdapter*);
59
65 bool isRightDragToLookEnabled() const;
66
70 bool isActiveModePassThrough() const;
71
72private:
73 void processMotion(int x, int y, const osgGA::GUIEventAdapter* ea);
74
75 bool isRightDragLookActive() const;
76
77 class FGMouseInputPrivate;
78 std::unique_ptr<FGMouseInputPrivate> d;
79};
80
81#endif
void doMouseMotion(int x, int y, const osgGA::GUIEventAdapter *)
void reinit() override
void update(double dt) override
virtual ~FGMouseInput()=default
bool isActiveModePassThrough() const
check if the active mode passes clicks through to the UI or not
bool isRightDragToLookEnabled() const
isRightDragToLookEnabled - test if we're in right-mouse-drag to adjust the view direction/position mo...
static const char * staticSubsystemClassId()
void shutdown() override
void doMouseClick(int b, int updown, int x, int y, bool mainWindow, const osgGA::GUIEventAdapter *ea)
void init() override