|
From: <cn...@us...> - 2010-01-11 19:24:36
|
Revision: 651
http://hgengine.svn.sourceforge.net/hgengine/?rev=651&view=rev
Author: cnlohr
Date: 2010-01-11 19:24:25 +0000 (Mon, 11 Jan 2010)
Log Message:
-----------
transition to values for all things that really should be using. I don't think anything else should be transitioned... ever. But, this does finally open the door to making Cu2 pretty serious.
Modified Paths:
--------------
Mercury2/modules/Cu2.cpp
Mercury2/modules/Cu2.h
Mercury2/src/Camera.cpp
Mercury2/src/Camera.h
Mercury2/src/Mercury2.cpp
Mercury2/src/MercuryInput.cpp
Mercury2/src/MercuryValue.h
Mercury2/src/MercuryWindow.cpp
Mercury2/src/MercuryWindow.h
Mercury2/src/X11Window.cpp
Modified: Mercury2/modules/Cu2.cpp
===================================================================
--- Mercury2/modules/Cu2.cpp 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/modules/Cu2.cpp 2010-01-11 19:24:25 UTC (rev 651)
@@ -241,6 +241,9 @@
///////////////////////////////////////COPPER 2 ROOT///////////////////////////////////////
+
+MVRefBool Cu2Root::CursorGrabbed( "Input.CursorGrabbed" );
+
Cu2Root::Cu2Root()
{
g_pCurrentInstance = this;
@@ -255,15 +258,14 @@
void Cu2Root::SetHidden( bool bHide )
{
- MercuryWindow::GetCurrentWindow()->SetGrabbedMouseMode( bHide );
-
+ CursorGrabbed.Set( bHide );
MercuryNode::SetHidden( bHide );
}
void Cu2Root::LoadFromXML(const XMLNode& node)
{
Cu2Element::LoadFromXML( node );
- MercuryWindow::GetCurrentWindow()->SetGrabbedMouseMode( IsHidden() );
+ CursorGrabbed.Set( IsHidden() );
}
Modified: Mercury2/modules/Cu2.h
===================================================================
--- Mercury2/modules/Cu2.h 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/modules/Cu2.h 2010-01-11 19:24:25 UTC (rev 651)
@@ -2,6 +2,7 @@
#define _CU2_H
#include <TransformNode.h>
+#include <MercuryValue.h>
///All the mouse actions Cu2 can transmit.
enum Cu2Action
@@ -133,6 +134,8 @@
void HandleMouseInput(const MessageData& data);
void HandleKeyboardInput(const MessageData& data);
+ static MVRefBool CursorGrabbed;
+
GENRTTI( Cu2Root );
private:
static Cu2Root * g_pCurrentInstance;
Modified: Mercury2/src/Camera.cpp
===================================================================
--- Mercury2/src/Camera.cpp 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/Camera.cpp 2010-01-11 19:24:25 UTC (rev 651)
@@ -5,6 +5,8 @@
#include <Shader.h>
+MVRefBool CameraNode::CursorGrabbed( "Input.CursorGrabbed" );
+
REGISTER_NODE_TYPE(CameraNode);
CameraNode::CameraNode()
@@ -82,7 +84,11 @@
void CameraNode::HandleMouseInput(const MessageData& data)
{
const MouseInput& m( dynamic_cast<const MouseInput&>( data ) );
-
+
+ //First find out if cursor is grabbed. If it isn't then we shouldn't be responding to the input.
+ if( !CursorGrabbed.Get() )
+ return;
+
m_y += m.dy/1200.0f;
m_x += m.dx/1200.0f;
Modified: Mercury2/src/Camera.h
===================================================================
--- Mercury2/src/Camera.h 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/Camera.h 2010-01-11 19:24:25 UTC (rev 651)
@@ -2,6 +2,7 @@
#define CAMERA_H
#include <TransformNode.h>
+#include <MercuryValue.h>
#include <MQuaternion.h>
class CameraNode : public TransformNode
@@ -19,6 +20,8 @@
GENRTTI(CameraNode);
private:
+ static MVRefBool CursorGrabbed;
+
MercuryVertex m_origionalPosition;
MercuryVector m_lookAt;
float m_x, m_y;
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/Mercury2.cpp 2010-01-11 19:24:25 UTC (rev 651)
@@ -211,12 +211,12 @@
public:
TestMouse()
{
- MESSAGEMAN.GetValue( "Input.CursorDeltaX" )->AttachModifyDelegate( (ValueDelegate)&TestMouse::ChangeX, (MessageHandler*)this );
+ MESSAGEMAN.GetValue( "Input.CursorGrabbed" )->AttachModifyDelegate( (ValueDelegate)&TestMouse::ChangeX, (MessageHandler*)this );
}
void ChangeX( MValue * v )
{
- printf( "Changed: %f\n", v->GetFloat() );
+ printf( "Changed: %d\n", v->GetBool() );
}
} TM;
///XXXXXXX REMOVE THIS CODE BEFORE ANY RELEASE XXXXXXXXXXx
Modified: Mercury2/src/MercuryInput.cpp
===================================================================
--- Mercury2/src/MercuryInput.cpp 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/MercuryInput.cpp 2010-01-11 19:24:25 UTC (rev 651)
@@ -1,8 +1,9 @@
#include <MercuryInput.h>
#include <MercuryMessageManager.h>
-MVRefFloat GlobalMouseX_Set( "Input.CursorDeltaX" );
-MVRefFloat GlobalMouseY_Set( "Input.CursorDeltaY" );
+MVRefFloat GlobalMouseX_Set( "Input.CursorX" );
+MVRefFloat GlobalMouseY_Set( "Input.CursorY" );
+MVRefInt GlobalMouseB_Set( "Input.CursorButtons" );
MouseInput::MouseInput()
:MessageData(), dx(0), dy(0)
@@ -26,6 +27,7 @@
GlobalMouseX_Set.Set( dx );
GlobalMouseY_Set.Set( dy );
+ GlobalMouseB_Set.Set( currentButtonMasks.data );
POST_MESSAGE( INPUTEVENT_MOUSE, mi, 0 );
}
Modified: Mercury2/src/MercuryValue.h
===================================================================
--- Mercury2/src/MercuryValue.h 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/MercuryValue.h 2010-01-11 19:24:25 UTC (rev 651)
@@ -3,6 +3,8 @@
#include <MSemaphore.h>
+class MessageHandler;
+
///Types for the values
enum MVType
{
@@ -160,6 +162,17 @@
void Set( int iv ) { mv->SetInt( iv ); }
};
+///Value Reference for Bool objects.
+class MVRefBool : public MVRefBase
+{
+public:
+ MVRefBool( MValue * m ) : MVRefBase( m ) { }
+ MVRefBool( const MString & p ) : MVRefBase( p ) { }
+
+ int Get() { return mv->GetBool(); }
+ void Set( int iv ) { mv->SetBool( iv ); }
+};
+
///Value Reference for Float objects.
class MVRefFloat : public MVRefBase
{
Modified: Mercury2/src/MercuryWindow.cpp
===================================================================
--- Mercury2/src/MercuryWindow.cpp 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/MercuryWindow.cpp 2010-01-11 19:24:25 UTC (rev 651)
@@ -1,9 +1,11 @@
#include "MercuryWindow.h"
+#include "MercuryMessageManager.h"
MercuryWindow::MercuryWindow(const MString& title, int width, int height, int bits, int depthBits, bool fullscreen)
:m_title(title), m_width(width), m_height(height), m_bits(bits), m_depthBits(depthBits), m_fullscreen(fullscreen),
- m_bGrabbed(true),m_iLastMouseX(0),m_iLastMouseY(0),m_inFocus(false)
+ m_iLastMouseX(0),m_iLastMouseY(0),m_inFocus(false)
{
+ MESSAGEMAN.GetValue( "Input.CursorGrabbed" )->SetBool( true );
}
MercuryWindow::~MercuryWindow()
Modified: Mercury2/src/MercuryWindow.h
===================================================================
--- Mercury2/src/MercuryWindow.h 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/MercuryWindow.h 2010-01-11 19:24:25 UTC (rev 651)
@@ -32,9 +32,6 @@
inline int Width() const { return m_width; }
inline int Height() const { return m_height; }
- void SetGrabbedMouseMode( bool bGrabbed ) { m_bGrabbed = bGrabbed; }
- bool GetGrabbedMouseMode( ) { return m_bGrabbed; }
-
inline bool InFocus() const { return m_inFocus; }
protected:
@@ -45,7 +42,6 @@
int m_width, m_height;
uint8_t m_bits, m_depthBits;
bool m_fullscreen;
- bool m_bGrabbed;
int m_iLastMouseX;
int m_iLastMouseY;
Modified: Mercury2/src/X11Window.cpp
===================================================================
--- Mercury2/src/X11Window.cpp 2010-01-11 08:43:17 UTC (rev 650)
+++ Mercury2/src/X11Window.cpp 2010-01-11 19:24:25 UTC (rev 651)
@@ -11,6 +11,8 @@
#define MOUSE_BTN_SCROLL_UP 4
#define MOUSE_BTN_SCROLL_DOWN 5
+MVRefBool GlobalMouseGrabbed_Set( "Input.CursorGrabbed" );
+
// Use X11_MASK(MOUSE_BTN_SCROLL_UP) to generate the token Button4Mask
#define X11_MASK(x) _X11_MASK(x)
// Sigh... second #define needed, because otherwise x doesn't get evaluated.
@@ -266,7 +268,7 @@
{
//XFocusChangeEvent*e = (XFocusChangeEvent*)&event;
m_inFocus = (event.type == FocusIn);
- if (m_inFocus && m_bGrabbed ) XWarpPointer(m_display, None, m_window, 0,0,0,0,m_width/2,m_height/2);
+ if (m_inFocus && GlobalMouseGrabbed_Set.Get() ) XWarpPointer(m_display, None, m_window, 0,0,0,0,m_width/2,m_height/2);
break;
}
}
@@ -317,7 +319,7 @@
center = e->state & X11_MASK(MOUSE_BTN_CENTER);
su = e->state & X11_MASK(MOUSE_BTN_SCROLL_UP);
sd = e->state & X11_MASK(MOUSE_BTN_SCROLL_DOWN);
- if( m_bGrabbed )
+ if( GlobalMouseGrabbed_Set.Get() )
{
x = m_width/2 - e->x;
y = m_height/2 - e->y;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|