From 8b2875f0d726d3953bddac8132d953c28f2f7763 Mon Sep 17 00:00:00 2001 From: Date: Sun, 12 Oct 2008 16:17:45 +0000 Subject: [PATCH] Simian: Fixed "bouncing" when jump button is held. A new jump is now started each time the avatar lands. git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2297 52acb1d6-8a22-11de-b505-999d5b087335 --- Programs/Simian/Extensions/Movement.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Programs/Simian/Extensions/Movement.cs b/Programs/Simian/Extensions/Movement.cs index dc374678..c4d543fb 100644 --- a/Programs/Simian/Extensions/Movement.cs +++ b/Programs/Simian/Extensions/Movement.cs @@ -98,7 +98,7 @@ namespace Simian.Extensions // is the avatar trying to move? bool moving = move != Vector3.Zero; - bool jumping = agent.TickJump > 0; + bool jumping = agent.TickJump != 0; // 2-dimensional speed multipler float speed = seconds * (flying ? FLY_SPEED : agent.Running && !jumping ? RUN_SPEED : WALK_SPEED); @@ -113,7 +113,7 @@ namespace Simian.Extensions // least possible distance from avatar to the ground // TODO: calculate to get rid of "bot squat" - float lowerLimit = newFloor + agent.Avatar.Scale.Z / 2; + float lowerLimit = newFloor + agent.Avatar.Scale.Z / 2; // Z acceleration resulting from gravity float gravity = 0f; @@ -242,12 +242,22 @@ namespace Simian.Extensions } else if (Environment.TickCount - agent.TickJump > PREJUMP_DELAY * 1000) { //start actual jump + + if (agent.TickJump == -1) + { + //already jumping! end current jump + agent.TickJump = 0; + return; + } + if (server.Avatars.SetDefaultAnimation(agent, Animations.JUMP)) animsChanged = true; - agent.Avatar.Velocity.Z = JUMP_IMPULSE_VERTICAL * seconds; agent.Avatar.Velocity.X += agent.Avatar.Acceleration.X * JUMP_IMPULSE_HORIZONTAL; agent.Avatar.Velocity.Y += agent.Avatar.Acceleration.Y * JUMP_IMPULSE_HORIZONTAL; + agent.Avatar.Velocity.Z = JUMP_IMPULSE_VERTICAL * seconds; + + agent.TickJump = -1; //flag that we are currently jumping } else move.Z = 0; //override Z control }