public virtual void Update(float dt)
        {
            //footsteps
            try
            {
                if (footsoundDescriptor != null)
                {
                    footsoundDescriptor.Position = (Vector3)character.Position;
                }
            }
            catch (NullReferenceException)
            {
                //zdarza sie...
            }
            if (character.HasGroundContact && Velocity != 0 && footsoundDescriptor == null)
            {
                footsoundDescriptor = SoundSystem.SoundEngine.StartSteps(SoundSystem.Enums.SoundTypes.stepsInside1, (Vector3)character.Position);
            }

            //strafing
            if (strafeX * maxStrafeSpeed != strafeSpeedX)
            {
                //strafeSpeedX -= Math.Sign(strafeSpeedX - strafeX * maxStrafeSpeed) *
                //    Math.Min(dt * strafeAcc, Math.Abs(strafeSpeedX - strafeX * maxStrafeSpeed));
                strafeSpeedX = maxStrafeSpeed * strafeX;

            }

            if (turnX * maxTurnSpeed != turnSpeedX)
            {
                //turnSpeedX -= Math.Sign(turnSpeedX - turnX * maxTurnSpeed) *
                //    Math.Min(dt * turnAcc, Math.Abs(turnSpeedX - turnX * maxTurnSpeed));
                turnSpeedX = turnX * maxTurnSpeed;

            }
            if (turnY * maxTurnSpeed != turnSpeedY)
            {
                //turnSpeedY -= Math.Sign(turnSpeedY - turnY * maxTurnSpeed) *
                //    Math.Min(dt * turnAcc, Math.Abs(turnSpeedY - turnY * maxTurnSpeed));
                turnSpeedY = turnY * maxTurnSpeed;

            }

            Update(dt, turnSpeedX, turnSpeedY, strafeSpeedX, 0);
        }
        public virtual void Jump()
        {
            if (character.HasGroundContact)
            {

                if (footsoundDescriptor != null)
                {
                    SoundSystem.SoundEngine.StopSteps(footsoundDescriptor);
                    footsoundDescriptor = null;
                }
                character.Player.Jumped = true;

                MyVector v = character.Velocity;
                v.Y += GameSettings.Default.JumpSpeed;
                character.Velocity = v;
                character.HasGroundContact = false;
                if (character.CharacterClass.GameTeam == GameTeam.Assassins)
                    SoundSystem.SoundEngine.PlaySound(SoundSystem.Enums.SoundTypes.assassinJah, (Vector3)this.character.Position);
                else if (character.CharacterClass.GameTeam == GameTeam.Knights)
                    SoundSystem.SoundEngine.PlaySound(SoundSystem.Enums.SoundTypes.knightHou, (Vector3)this.character.Position);
            }
        }