aboutsummaryrefslogtreecommitdiff
path: root/cvs/cvsweb.cgi/~checkout~/code/client/Attic/move_listener.h?rev=1.2&content-type=text/plain&hideattic=0&sortby=date/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'cvs/cvsweb.cgi/~checkout~/code/client/Attic/move_listener.h?rev=1.2&content-type=text/plain&hideattic=0&sortby=date/index.html')
-rw-r--r--cvs/cvsweb.cgi/~checkout~/code/client/Attic/move_listener.h?rev=1.2&content-type=text/plain&hideattic=0&sortby=date/index.html163
1 files changed, 163 insertions, 0 deletions
diff --git a/cvs/cvsweb.cgi/~checkout~/code/client/Attic/move_listener.h?rev=1.2&content-type=text/plain&hideattic=0&sortby=date/index.html b/cvs/cvsweb.cgi/~checkout~/code/client/Attic/move_listener.h?rev=1.2&content-type=text/plain&hideattic=0&sortby=date/index.html
new file mode 100644
index 00000000..8fc3444c
--- /dev/null
+++ b/cvs/cvsweb.cgi/~checkout~/code/client/Attic/move_listener.h?rev=1.2&content-type=text/plain&hideattic=0&sortby=date/index.html
@@ -0,0 +1,163 @@
+/** \file move_listener.h
+ * <File description>
+ *
+ * $Id: move_listener.h,v 1.2 2000/12/04 17:58:09 coutelas Exp $
+ */
+
+/* Copyright, 2000 Nevrax Ltd.
+ *
+ * This file is part of NEVRAX NEL.
+ * NEVRAX NEL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+
+ * NEVRAX NEL is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with NEVRAX NEL; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifndef NL_MOVE_LISTENER_H
+#define NL_MOVE_LISTENER_H
+
+#include "nel/misc/types_nl.h"
+#include "nel/misc/event_listener.h"
+#include "nel/misc/matrix.h"
+#include "nel/3d/viewport.h"
+#include "nel/3d/scene.h"
+#include "nel/3d/camera.h"
+
+
+
+namespace NL3D
+{
+
+
+/**
+ * CMoveListener is a listener that handle a 3d matrix with mouse events.
+ * \author Stephane Coutelas
+ * \author Nevrax France
+ * \date 2000
+ */
+class CMoveListener : public NLMISC::IEventListener
+{
+public:
+
+ /**
+ * TMoveMode.
+ * moving modes
+ */
+ enum TMoveMode
+ {
+ WALK,
+ FREE
+ };
+
+ /**
+ * Constructor.
+ * You should call init then.
+ */
+ CMoveListener();
+
+
+ /**
+ * Constructor.
+ * You should call init then.
+ * \param scene the scene
+ * \param w screen width in pixels
+ * \param h screen height in pixels
+ * \param camera the camera
+ */
+ void init(CScene * scene, uint w, uint h, const class CCamera& camera)
+ {
+ _Scene = scene;
+ _Width = w;
+ _Height = h;
+
+ _Viewport = scene->getViewport();
+
+ float dummy;
+ _ViewMatrix = camera.getMatrix ();
+ camera.getFrustum (_Left, _Right, _Bottom, _Top, _Depth, dummy);
+ }
+
+ /**
+ * Set the moving mode
+ * \param m the moving mode
+ */
+ void setMode(TMoveMode m)
+ {
+ _Mode = m;
+ }
+
+ /**
+ * Register the listener to the server.
+ */
+ void addToServer (NLMISC::CEventServer& server);
+
+ /**
+ * Unregister the listener to the server.
+ */
+ void removeFromServer (NLMISC::CEventServer& server);
+
+
+private:
+
+ /// Internal use
+ virtual void operator()(const NLMISC::CEvent& event);
+
+ /// moving mode
+ TMoveMode _Mode;
+
+ /// view matrix
+ NLMISC::CMatrix _ViewMatrix;
+
+ /// viewport
+ NL3D::CViewport _Viewport;
+
+ /// true if previous mouse move event was re-centering cursor
+ bool _CursorReset;
+
+ CScene * _Scene;
+
+ /// screen width
+ uint _Width;
+
+ /// screen height
+ uint _Height;
+
+ ///frustum parameters
+ float _Top;
+ float _Bottom;
+ float _Left;
+ float _Right;
+ float _Depth;
+
+ /// current position
+ CVector _Pos;
+
+ ///current rotation z angle
+ float _RotZ;
+
+ ///current rotation x angle
+ float _RotX;
+
+ /// step for translation
+ static const float _StepTrans;
+
+ /// step for rotation
+ static const float _StepRot;
+
+}; // NL3D
+
+}
+
+#endif // NL_MOVE_LISTENER_H
+
+/* End of move_listener.h */