* Moved MainAvatar delegates and enums in to the MainAvatar.cs file * TestClient now stores prims in per-sim dictionaries * TestClient throttles the connection at login * OnTeleport callback passes a reference to the current Simulator * Removed unneeded typecasts to Packet * AutoPilotLocal() doesn't need the GridRegionData reference * Disconnects and packets resent multiple times are handled better * OnNewAvatar is fired for our own avatar as well, and our avatar position is updated all the time now, as well as confirming it's our avatar by UUID instead of name git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@721 52acb1d6-8a22-11de-b505-999d5b087335
53 lines
1.5 KiB
C#
53 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using libsecondlife;
|
|
using libsecondlife.Packets;
|
|
|
|
namespace libsecondlife.TestClient
|
|
{
|
|
public class SitCommand: Command
|
|
{
|
|
public SitCommand()
|
|
{
|
|
Name = "sit";
|
|
Description = "Attempt to sit on the closest prim";
|
|
}
|
|
|
|
public override string Execute(SecondLife Client, string[] args, LLUUID fromAgentID)
|
|
{
|
|
PrimObject closest = null;
|
|
double closestDistance = Double.MaxValue;
|
|
|
|
lock (TestClient.SimPrims)
|
|
{
|
|
if (TestClient.SimPrims.ContainsKey(Client.Network.CurrentSim))
|
|
{
|
|
foreach (PrimObject p in TestClient.SimPrims[Client.Network.CurrentSim].Values)
|
|
{
|
|
float distance = Helpers.VecDist(Client.Self.Position, p.Position);
|
|
|
|
if (closest == null || distance < closestDistance)
|
|
{
|
|
closest = p;
|
|
closestDistance = distance;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (closest != null)
|
|
{
|
|
Client.Self.RequestSit(closest.ID, LLVector3.Zero);
|
|
Client.Self.Sit();
|
|
|
|
return "Sat on " + closest.ID + ". Distance: " + closestDistance;
|
|
}
|
|
else
|
|
{
|
|
return "Couldn't find a nearby prim to sit on";
|
|
}
|
|
}
|
|
}
|
|
}
|