Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <blender@erwincoumans.com>2005-08-17 18:29:58 +0400
committerErwin Coumans <blender@erwincoumans.com>2005-08-17 18:29:58 +0400
commit72d60d7b6371fa0b3426ea0db3aecb45b9ae7a4a (patch)
tree4f5d4709bbc52d64b4b069e82419e03f0f65fc27 /source/gameengine
parent8b060dd5adfe5d56f558e4a600717f2b755d8559 (diff)
added the "mouse over any", makes the sensor more useful
Diffstat (limited to 'source/gameengine')
-rw-r--r--source/gameengine/Converter/KX_ConvertSensors.cpp8
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.h9
3 files changed, 15 insertions, 11 deletions
diff --git a/source/gameengine/Converter/KX_ConvertSensors.cpp b/source/gameengine/Converter/KX_ConvertSensors.cpp
index 450f4c0b523..4bd1e3d5469 100644
--- a/source/gameengine/Converter/KX_ConvertSensors.cpp
+++ b/source/gameengine/Converter/KX_ConvertSensors.cpp
@@ -422,7 +422,7 @@ void BL_ConvertSensors(struct Object* blenderobject,
case SENS_MOUSE:
{
int keytype = SCA_MouseSensor::KX_MOUSESENSORMODE_NODEF;
- bool trackfocus = false;
+ int trackfocus = 0;
bMouseSensor *bmouse = (bMouseSensor *)sens->data;
/* There are two main types of mouse sensors. If there is
@@ -455,8 +455,12 @@ void BL_ConvertSensors(struct Object* blenderobject,
keytype = SCA_MouseSensor::KX_MOUSESENSORMODE_MOVEMENT;
break;
case BL_SENS_MOUSE_MOUSEOVER:
- trackfocus = true;
+ trackfocus = 1;
break;
+ case BL_SENS_MOUSE_MOUSEOVER_ANY:
+ trackfocus = 2;
+ break;
+
default:
; /* error */
}
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
index b42c66fc4f9..107e8ebc185 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
@@ -62,7 +62,7 @@ KX_MouseFocusSensor::KX_MouseFocusSensor(SCA_MouseManager* eventmgr,
int startx,
int starty,
short int mousemode,
- bool focusmode,
+ int focusmode,
RAS_ICanvas* canvas,
KX_Scene* kxscene,
SCA_IObject* gameobj,
@@ -72,8 +72,7 @@ KX_MouseFocusSensor::KX_MouseFocusSensor(SCA_MouseManager* eventmgr,
m_gp_canvas(canvas),
m_kxscene(kxscene)
{
- /* Or postpone? I think a sumo scene and kx scene go pretty much
- * together, so it should be safe to do it here. */
+
m_mouse_over_in_previous_frame = false;
m_positive_event = false;
m_hitObject = 0;
@@ -134,7 +133,7 @@ bool KX_MouseFocusSensor::RayHit(KX_ClientObjectInfo* client_info, MT_Point3& hi
* self-hits are excluded by setting the correct ignore-object.)
* Hitspots now become valid. */
KX_GameObject* thisObj = (KX_GameObject*) GetParent();
- if (hitKXObj != thisObj)
+ if ((m_focusmode == 2) || hitKXObj == thisObj)
{
m_hitObject = hitKXObj;
m_hitPosition = hit_point;
@@ -150,7 +149,7 @@ bool KX_MouseFocusSensor::RayHit(KX_ClientObjectInfo* client_info, MT_Point3& hi
bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
{
-
+ m_hitObject = 0;
m_hitPosition = MT_Vector3(0,0,0);
m_hitNormal = MT_Vector3(1,0,0);
MT_Point3 resultpoint;
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.h b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
index ff69c570d53..94b2fc72e6d 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.h
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
@@ -54,7 +54,7 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
int startx,
int starty,
short int mousemode,
- bool focusmode,
+ int focusmode,
RAS_ICanvas* canvas,
KX_Scene* kxscene,
SCA_IObject* gameobj,
@@ -98,9 +98,9 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
private:
/**
- * The focus mode. True for handling focus, false for not handling
- * it. */
- bool m_focusmode;
+ * The focus mode. 1 for handling focus, 0 for not handling, 2 for focus on any object
+ */
+ int m_focusmode;
/**
* Flags whether the previous test showed a mouse-over.
@@ -146,6 +146,7 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
* scene. */
class KX_KetsjiEngine* m_engine;
+
/**
* The active canvas. The size of this canvas determines a part of
* the start position of the picking ray. */