All pastes #966361 Raw Edit

Someone

public text v1 · immutable
·published 2008-04-01 18:10 UTC
rendered paste body
using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
using libsecondlife;

namespace SLeek
{
    public class SleekMovement
    {
        private SecondLife client;
        private Timer timer;
        private float angle;
        private LLVector3 forward = new LLVector3(1, 0, 0);
        private bool turningLeft = false;
        private bool turningRight = false;
        private bool movingForward = false;
        private bool movingBackward = false;

        public bool TurningLeft
        {
            get {
                return turningLeft;
            }
            set {
                turningLeft = value;
                if (value) {
                    timer_Elapsed(null, null);
                    timer.Enabled = true;
                } else {
                    timer.Enabled = false;
                    client.Self.Movement.TurnLeft = false;
                    client.Self.Movement.SendUpdate();
                }
            }
        }

        public bool TurningRight
        {
            get
            {
                return turningRight;
            }
            set
            {
                turningRight = value;
                if (value) {
                    timer_Elapsed(null, null);
                    timer.Enabled = true;
                } else {
                    timer.Enabled = false;
                    client.Self.Movement.TurnRight = false;
                    client.Self.Movement.SendUpdate();
                }
            }
        }

        public bool MovingForward
        {
            get
            {
                return movingForward;
            }
            set
            {
                movingForward = value;
                if (value) {
                    client.Self.Movement.AtPos = true;
                    client.Self.Movement.SendUpdate();
                } else {
                    client.Self.Movement.AtPos = false;
                    client.Self.Movement.SendUpdate();
                }
            }
        }

        public bool MovingBackward
        {
            get
            {
                return movingBackward;
            }
            set
            {
                movingBackward = value;
                if (value) {
                    client.Self.Movement.AtNeg = true;
                    client.Self.Movement.SendUpdate();
                } else {
                    client.Self.Movement.AtNeg = false;
                    client.Self.Movement.SendUpdate();
                }
            }
        }

        public SleekMovement(SecondLife c)
        {
            client = c;
            angle = client.Self.Movement.BodyRotation.Z;
            client.Self.Movement.AutoResetControls = false;
            timer = new System.Timers.Timer(250);
            timer.Elapsed +=new ElapsedEventHandler(timer_Elapsed);
            timer.Enabled = false;
        }

        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            if (turningLeft) {
                client.Self.Movement.TurnLeft = true;
                angle += 0.2f;
                if (angle > 1.0f) {
                    angle = -1.0f;
                }
                client.Self.Movement.BodyRotation = new LLQuaternion(0, 0, angle);
                System.Console.WriteLine(client.Self.Movement.BodyRotation.ToString());
                client.Self.Movement.SendUpdate(true);
            } else if (turningRight) {
                client.Self.Movement.TurnRight = true;
                angle -= 0.2f;
                if (angle < -1.0f) {
                    angle = 1.0f;
                }
                client.Self.Movement.BodyRotation = new LLQuaternion(0, 0, angle);
                System.Console.WriteLine(client.Self.Movement.BodyRotation.ToString());
                client.Self.Movement.SendUpdate(true);
            }
        }


    }
}