Files
libremetaverse/libsecondlife-cs/examples/TestClient/Commands/SitCommand.cs
John Hurliman f55b8c8d18 libsecondlife:
* 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
2006-11-28 07:48:43 +00:00

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))
);
}
}
}