corrade-vassal – Rev 1

Subversion Repositories:
Rev:
using System;
using System.Collections.Generic;
using System.Text;
using OpenMetaverse;
using OpenMetaverse.Packets;

namespace OpenMetaverse.TestClient
{
    public class GotoCommand: Command
    {
        public GotoCommand(TestClient testClient)
                {
                        Name = "goto";
                        Description = "Teleport to a location (e.g. \"goto Hooper/100/100/30\")";
            Category = CommandCategory.Movement;
                }

        public override string Execute(string[] args, UUID fromAgentID)
                {
                        if (args.Length < 1)
                return "Usage: goto sim/x/y/z";

            string destination = String.Empty;

            // Handle multi-word sim names by combining the arguments
            foreach (string arg in args)
            {
                destination += arg + " ";
            }
            destination = destination.Trim();

            string[] tokens = destination.Split(new char[] { '/' });
            if (tokens.Length != 4)
                return "Usage: goto sim/x/y/z";

            string sim = tokens[0];
            float x, y, z;
            if (!float.TryParse(tokens[1], out x) ||
                !float.TryParse(tokens[2], out y) ||
                !float.TryParse(tokens[3], out z))
            {
                return "Usage: goto sim/x/y/z";
            }

            if (Client.Self.Teleport(sim, new Vector3(x, y, z)))
                return "Teleported to " + Client.Network.CurrentSim;
            else
                return "Teleport failed: " + Client.Self.TeleportMessage;
                }
    }
}