using System; using System.Collections.Generic; using System.Text; using libsecondlife; using libsecondlife.Packets; namespace libsecondlife.TestClient { public class GotoCommand: Command { private bool EstateLookupFinished = false; public GotoCommand(TestClient testClient) { Name = "goto"; Description = "Teleport to a location (e.g. \"goto Hooper/100/100/30\")"; } public override string Execute(string[] args, LLUUID fromAgentID) { if (args.Length < 1) return "usage: Destination should be specified as sim/x/y/z"; string destination = ""; // 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: Destination should be specified as sim/x/y/z"; string sim = tokens[0]; float x = Client.Self.Position.X; float y = Client.Self.Position.Y; float z = Client.Self.Position.Z; float.TryParse(tokens[1], out x); float.TryParse(tokens[2], out y); float.TryParse(tokens[3], out z); if (!EstateLookupFinished) { Client.Grid.RequestEstateSims(GridManager.MapLayerType.Objects); System.Threading.Thread.Sleep(3000); EstateLookupFinished = true; } Client.Self.Teleport(sim, new LLVector3(x, y, z)); return "Attempted to teleport to " + sim + " {" + x + "," + y + "," + z + "}"; } } }