aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs33
1 files changed, 23 insertions, 10 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 4668dae..c0779f2 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -45,7 +45,7 @@ using OSD = OpenMetaverse.StructuredData.OSD;
45 45
46namespace OpenSim.Region.Environment.Scenes 46namespace OpenSim.Region.Environment.Scenes
47{ 47{
48 enum ScriptControlled : int 48 enum ScriptControlled : uint
49 { 49 {
50 CONTROL_ZERO = 0, 50 CONTROL_ZERO = 0,
51 CONTROL_FWD = 1, 51 CONTROL_FWD = 1,
@@ -85,6 +85,7 @@ namespace OpenSim.Region.Environment.Scenes
85 private Dictionary<UUID, ScriptControllers> scriptedcontrols = new Dictionary<UUID, ScriptControllers>(); 85 private Dictionary<UUID, ScriptControllers> scriptedcontrols = new Dictionary<UUID, ScriptControllers>();
86 private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO; 86 private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO;
87 private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO; 87 private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO;
88 private bool MouseDown = false;
88 private SceneObjectGroup proxyObjectGroup = null; 89 private SceneObjectGroup proxyObjectGroup = null;
89 //private SceneObjectPart proxyObjectPart = null; 90 //private SceneObjectPart proxyObjectPart = null;
90 91
@@ -3341,6 +3342,27 @@ namespace OpenSim.Region.Environment.Scenes
3341 3342
3342 ScriptControlled allflags = ScriptControlled.CONTROL_ZERO; 3343 ScriptControlled allflags = ScriptControlled.CONTROL_ZERO;
3343 3344
3345 if (MouseDown)
3346 {
3347 allflags = LastCommands & (ScriptControlled.CONTROL_ML_LBUTTON | ScriptControlled.CONTROL_LBUTTON);
3348 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP) != 0 || (flags & unchecked((uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_UP)) != 0)
3349 {
3350 allflags = ScriptControlled.CONTROL_ZERO;
3351 MouseDown = true;
3352 }
3353 }
3354
3355 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0)
3356 {
3357 allflags |= ScriptControlled.CONTROL_ML_LBUTTON;
3358 MouseDown = true;
3359 }
3360 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0)
3361 {
3362 allflags |= ScriptControlled.CONTROL_LBUTTON;
3363 MouseDown = true;
3364 }
3365
3344 // find all activated controls, whether the scripts are interested in them or not 3366 // find all activated controls, whether the scripts are interested in them or not
3345 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0) 3367 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0)
3346 { 3368 {
@@ -3374,15 +3396,6 @@ namespace OpenSim.Region.Environment.Scenes
3374 { 3396 {
3375 allflags |= ScriptControlled.CONTROL_ROT_LEFT; 3397 allflags |= ScriptControlled.CONTROL_ROT_LEFT;
3376 } 3398 }
3377 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0)
3378 {
3379 allflags |= ScriptControlled.CONTROL_ML_LBUTTON;
3380 }
3381 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0)
3382 {
3383 allflags |= ScriptControlled.CONTROL_LBUTTON;
3384 }
3385
3386 // optimization; we have to check per script, but if nothing is pressed and nothing changed, we can skip that 3399 // optimization; we have to check per script, but if nothing is pressed and nothing changed, we can skip that
3387 if (allflags != ScriptControlled.CONTROL_ZERO || allflags != LastCommands) 3400 if (allflags != ScriptControlled.CONTROL_ZERO || allflags != LastCommands)
3388 { 3401 {