* Publically exposed the Simulator reference to SecondLife * SecondLife.Debug = false; actually works now * All incoming packets are added to the simulator inbox now, and the inbox size has been cut in half to 100 TestClient: * Completely revamped to support multiple clients * Added login/logout Commands * Added the all prefix for IM commands to send the command to all logged in bots git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@645 52acb1d6-8a22-11de-b505-999d5b087335
80 lines
2.1 KiB
C#
80 lines
2.1 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 = "Sit on closest touchable prim.";
|
|
}
|
|
|
|
public string Sit(SecondLife Client, LLUUID target)
|
|
{
|
|
AgentRequestSitPacket sitPacket = new AgentRequestSitPacket();
|
|
|
|
sitPacket.AgentData.AgentID = Client.Network.AgentID;
|
|
sitPacket.AgentData.SessionID = Client.Network.SessionID;
|
|
|
|
sitPacket.TargetObject.TargetID = target;
|
|
sitPacket.TargetObject.Offset = new LLVector3();
|
|
|
|
Client.Network.SendPacket(sitPacket);
|
|
|
|
// SitTime = DateTime.Now;
|
|
|
|
return String.Empty;
|
|
}
|
|
|
|
public override string Execute(SecondLife Client, string[] args, LLUUID fromAgentID)
|
|
{
|
|
PrimObject closest = null;
|
|
double closestDistance = Double.MaxValue;
|
|
|
|
lock (TestClient.Prims)
|
|
{
|
|
foreach (PrimObject p in TestClient.Prims.Values)
|
|
{
|
|
if ((p.Flags & ObjectFlags.Touch) > 0)
|
|
{
|
|
double distance = QuadranceBetween(Client.Self.Position, p.Position);
|
|
if (closest == null || distance < closestDistance)
|
|
{
|
|
closest = p;
|
|
closestDistance = distance;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (closest != null)
|
|
{
|
|
Sit(Client, closest.ID);
|
|
return TestClient.Prims.Count + " prims. Sat on " + closest.ID + ". Distance: " + closestDistance;
|
|
}
|
|
|
|
return String.Empty;
|
|
}
|
|
|
|
//string sitTimeCommand(string[] args, LLUUID fromAgentID)
|
|
//{
|
|
// return "Sitting Since: " + SitTime + " (" + (DateTime.Now - SitTime) + ")";
|
|
//}
|
|
|
|
public static double QuadranceBetween(LLVector3 a, LLVector3 b)
|
|
{
|
|
return
|
|
(
|
|
((a.X - b.X) * (a.X - b.X))
|
|
+ ((a.Y - b.Y) * (a.Y - b.Y))
|
|
+ ((a.Z - b.Z) * (a.Z - b.Z))
|
|
);
|
|
}
|
|
}
|
|
}
|