From 592fe80ad9e0ce9fc10f3a8331f2795433236c3f Mon Sep 17 00:00:00 2001 From: Revolution Smythe Date: Sat, 30 Jul 2011 00:48:19 +0000 Subject: [PATCH] Make a change as suggested by lkalif to wait to jump in seconds, instead of frames and fix behavior with the home key, so that if it is held down, it only changes the fly status once, as in the Second Life viewer. Add some commented out code for making left-click touch work (with touch() event code). git-svn-id: https://radegast.googlecode.com/svn/trunk@1038 f7a694da-4d33-11de-9ad6-1127a62b9fcd --- Radegast/GUI/Rendering/Rendering.cs | 41 ++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/Radegast/GUI/Rendering/Rendering.cs b/Radegast/GUI/Rendering/Rendering.cs index 2ac30e0..e68c0a0 100644 --- a/Radegast/GUI/Rendering/Rendering.cs +++ b/Radegast/GUI/Rendering/Rendering.cs @@ -745,6 +745,23 @@ namespace Radegast.Rendering dragging = true; downX = dragX = e.X; downY = dragY = e.Y; + object picked; + RenderPrimitive LeftclickedObject = null; + int LeftclickedFaceID; + //TODO: Needs (probably) to be moved into the render loop, then checked for movement so that we can send grabUpdate properly + /*if(TryPick(e.X, e.Y, out picked, out LeftclickedFaceID)) + { + if(picked is RenderPrimitive) + { + LeftclickedObject = (RenderPrimitive)picked; + if((LeftclickedObject.Prim.Flags & PrimFlags.Touch) != 0) + { + Client.Self.Grab(LeftclickedObject.Prim.LocalID, Vector3.Zero, Vector3.Zero, Vector3.Zero, RightclickedFaceID, Vector3.Zero, Vector3.Zero, Vector3.Zero); + Client.Self.GrabUpdate(LeftclickedObject.Prim.ID, Vector3.Zero); + Client.Self.DeGrab(LeftclickedObject.Prim.LocalID); + } + } + }*/ } else if (e.Button == MouseButtons.Right) { @@ -1676,11 +1693,12 @@ namespace Radegast.Rendering #endregion avatars #region Keyboard - private int upKeyHeld = 0; + private float upKeyHeld = 0; + private bool isHoldingHome = false; /// - ///The time before we fly instead of trying to jump + ///The time before we fly instead of trying to jump (in seconds) /// - private const int upKeyHeldBeforeFly = 100; + private const float upKeyHeldBeforeFly = 0.5f; void CheckKeyboard(float time) { @@ -1712,12 +1730,22 @@ namespace Radegast.Rendering Client.Self.Movement.UpNeg = Instance.Keyboard.IsKeyDown(Keys.PageDown); } if(Instance.Keyboard.IsKeyDown(Keys.Home))//Flip fly settings - Client.Self.Movement.Fly = !Client.Self.Movement.Fly; + { + //Holding the home key only makes it change once, + // not flip over and over, so keep track of it + if(!isHoldingHome) + { + Client.Self.Movement.Fly = !Client.Self.Movement.Fly; + isHoldingHome = true; + } + } + else + isHoldingHome = false; if(!Client.Self.Movement.Fly && Instance.Keyboard.IsKeyDown(Keys.PageUp)) { - upKeyHeld++; + upKeyHeld += time; if(upKeyHeld > upKeyHeldBeforeFly)//Wait for a bit before we fly, they may be trying to jump Client.Self.Movement.Fly = true; } @@ -2748,6 +2776,9 @@ namespace Radegast.Rendering if (!(obj is RenderPrimitive)) continue; RenderPrimitive prim = (RenderPrimitive)obj; + if(obj.BasePrim.LocalID == 0) + continue; + foreach (var face in prim.Faces) { if (face.UserData == null) continue; -- 2.11.0