예제 #1
0
        public override void Tick(double delta)
        {
            if (!game.World.HasBlocks)
            {
                return;
            }
            StepSize = Hacks.FullBlockStep && Hacks.Enabled && Hacks.CanAnyHacks &&
                       Hacks.CanSpeed ? 1 : 0.5f;
            OldVelocity = Velocity;
            float xMoving = 0, zMoving = 0;

            interp.AdvanceState();
            bool wasOnGround = onGround;

            HandleInput(ref xMoving, ref zMoving);
            if (!Hacks.Floating && Hacks.CanBePushed)
            {
                physics.DoEntityPush();
            }

            // Immediate stop in noclip mode
            if (!Hacks.NoclipSlide && (Hacks.Noclip && xMoving == 0 && zMoving == 0))
            {
                Velocity = Vector3.Zero;
            }
            physics.UpdateVelocityState();
            physics.PhysicsTick(GetHeadingVelocity(zMoving, xMoving));

            interp.next.Pos = Position; Position = interp.prev.Pos;
            anim.UpdateAnimState(interp.prev.Pos, interp.next.Pos, delta);
            tilt.UpdateAnimState(delta);

            CheckSkin();
            sound.Tick(wasOnGround);
        }
        public override void Tick(double delta)
        {
            if (game.World.IsNotLoaded)
            {
                return;
            }
            StepSize = Hacks.FullBlockStep && Hacks.Enabled && Hacks.CanAnyHacks &&
                       Hacks.CanSpeed ? 1 : 0.5f;
            OldVelocity = Velocity;
            float xMoving = 0, zMoving = 0;

            lastPos   = Position = nextPos;
            lastYaw   = nextYaw;
            lastPitch = nextPitch;
            bool wasOnGround = onGround;

            HandleInput(ref xMoving, ref zMoving);
            physics.DoEntityPush(ref xMoving, ref zMoving);
            physics.UpdateVelocityState(xMoving, zMoving);
            physics.PhysicsTick(xMoving, zMoving);

            nextPos  = Position;
            Position = lastPos;
            anim.UpdateAnimState(lastPos, nextPos, delta);

            CheckSkin();
            sound.Tick(wasOnGround);
            UpdateCurrentBodyYaw();
        }
예제 #3
0
        public override void Tick(double delta)
        {
            if (!game.World.HasBlocks)
            {
                return;
            }
            StepSize    = Hacks.FullBlockStep && Hacks.Enabled && Hacks.CanAnyHacks && Hacks.CanSpeed ? 1 : 0.5f;
            OldVelocity = Velocity;
            float xMoving = 0, zMoving = 0;

            interp.AdvanceState();
            bool wasOnGround = onGround;

            HandleInput(ref xMoving, ref zMoving);
            Hacks.Floating = Hacks.Noclip || Hacks.Flying;
            if (!Hacks.Floating && Hacks.CanBePushed)
            {
                physics.DoEntityPush();
            }

            // Immediate stop in noclip mode
            if (!Hacks.NoclipSlide && (Hacks.Noclip && xMoving == 0 && zMoving == 0))
            {
                Velocity = Vector3.Zero;
            }

            physics.UpdateVelocityState();
            Vector3 headingVelocity = Utils.RotateY(xMoving, 0, zMoving, HeadYRadians);

            physics.PhysicsTick(headingVelocity);

            // Fixes high jump, when holding down a movement key, jump, fly, then let go of fly key
            if (Hacks.Floating)
            {
                Velocity.Y = 0.0f;
            }

            interp.next.Pos = Position; Position = interp.prev.Pos;
            anim.UpdateAnimState(interp.prev.Pos, interp.next.Pos, delta);
            tilt.UpdateAnimState(delta);

            CheckSkin();
            sound.Tick(wasOnGround);
        }