LIBOMV-686 Implements new event patterns based on the Microsoft Framework Design Guidelines in ObjectManager

LIBOMV-726 Adds stubs in LindenMessages for new WebFetchInventoryDescendents Capability

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3175 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
Jim Radford
2009-10-26 06:03:26 +00:00
parent 8a845c9b22
commit 17468b5f76
17 changed files with 761 additions and 451 deletions

View File

@@ -9,20 +9,12 @@ namespace OpenMetaverse.TestClient
{
public class PlayAnimationCommand : Command
{
private Dictionary<UUID, string> m_BuiltInAnimations = new Dictionary<UUID, string>();
private Dictionary<UUID, string> m_BuiltInAnimations = new Dictionary<UUID, string>(Animations.ToDictionary());
public PlayAnimationCommand(TestClient testClient)
{
Name = "play";
Description = "Attempts to play an animation";
Category = CommandCategory.Appearance;
Type t = typeof(Animations);
FieldInfo[] f = t.GetFields(BindingFlags.Public | BindingFlags.Static);
foreach (FieldInfo field in f)
{
m_BuiltInAnimations.Add((UUID)field.GetValue(t), field.Name);
}
Console.WriteLine(f);
Category = CommandCategory.Appearance;
}
private string Usage()

View File

@@ -19,7 +19,7 @@ namespace OpenMetaverse.TestClient.Commands.Movement
Description = "Fly the avatar toward the specified position for a maximum of seconds. Usage: FlyTo x y z [seconds]";
Category = CommandCategory.Movement;
client.Objects.OnObjectUpdated += new ObjectManager.ObjectUpdatedCallback(Objects_OnObjectUpdated);
client.Objects.ObjectUpdated += Objects_OnObjectUpdated;
}
public override string Execute(string[] args, UUID fromAgentID)
@@ -54,10 +54,10 @@ namespace OpenMetaverse.TestClient.Commands.Movement
return string.Format("flying to {0} in {1} seconds", target.ToString(), duration / 1000);
}
private void Objects_OnObjectUpdated(Simulator simulator, ObjectUpdate update, ulong regionHandle, ushort timeDilation)
private void Objects_OnObjectUpdated(object sender, ObjectUpdatedEventArgs e)
{
if (startTime == 0) return;
if (update.LocalID == Client.Self.LocalID)
if (e.Update.LocalID == Client.Self.LocalID)
{
XYMovement();
ZMovement();

View File

@@ -13,8 +13,8 @@ namespace OpenMetaverse.TestClient
private int PermCount;
public ChangePermsCommand(TestClient testClient)
{
testClient.Objects.OnObjectProperties += new ObjectManager.ObjectPropertiesCallback(Objects_OnObjectProperties);
{
testClient.Objects.ObjectProperties += new EventHandler<ObjectPropertiesEventArgs>(Objects_OnObjectProperties);
Name = "changeperms";
Description = "Recursively changes all of the permissions for child and task inventory objects. Usage prim-uuid [copy] [mod] [xfer]";
@@ -152,11 +152,11 @@ namespace OpenMetaverse.TestClient
return "Set permissions to " + Perms.ToString() + " on " + localIDs.Count + " objects and " + taskItems + " inventory items";
}
void Objects_OnObjectProperties(Simulator simulator, Primitive.ObjectProperties properties)
void Objects_OnObjectProperties(object sender, ObjectPropertiesEventArgs e)
{
if (PermsSent)
{
if (Objects.ContainsKey(properties.ObjectID))
if (Objects.ContainsKey(e.Properties.ObjectID))
{
// FIXME: Confirm the current operation against properties.Permissions.NextOwnerMask

View File

@@ -21,14 +21,15 @@ namespace OpenMetaverse.TestClient
public ExportCommand(TestClient testClient)
{
testClient.Objects.OnObjectPropertiesFamily += new ObjectManager.ObjectPropertiesFamilyCallback(Objects_OnObjectPropertiesFamily);
testClient.Objects.OnObjectProperties += new ObjectManager.ObjectPropertiesCallback(Objects_OnObjectProperties);
testClient.Objects.ObjectPropertiesFamily += new EventHandler<ObjectPropertiesFamilyEventArgs>(Objects_OnObjectPropertiesFamily);
testClient.Objects.ObjectProperties += new EventHandler<ObjectPropertiesEventArgs>(Objects_OnObjectProperties);
testClient.Avatars.ViewerEffectPointAt += new EventHandler<ViewerEffectPointAtEventArgs>(Avatars_ViewerEffectPointAt);
Name = "export";
Description = "Exports an object to an xml file. Usage: export uuid outputfile.xml";
Category = CommandCategory.Objects;
}
}
void Avatars_ViewerEffectPointAt(object sender, ViewerEffectPointAtEventArgs e)
{
@@ -220,20 +221,19 @@ namespace OpenMetaverse.TestClient
}
}
void Objects_OnObjectPropertiesFamily(Simulator simulator, Primitive.ObjectProperties properties,
ReportType type)
void Objects_OnObjectPropertiesFamily(object sender, ObjectPropertiesFamilyEventArgs e)
{
Properties = new Primitive.ObjectProperties();
Properties.SetFamilyProperties(properties);
Properties.SetFamilyProperties(e.Properties);
GotPermissions = true;
GotPermissionsEvent.Set();
}
void Objects_OnObjectProperties(Simulator simulator, Primitive.ObjectProperties properties)
void Objects_OnObjectProperties(object sender, ObjectPropertiesEventArgs e)
{
lock (PrimsWaiting)
{
PrimsWaiting.Remove(properties.ObjectID);
PrimsWaiting.Remove(e.Properties.ObjectID);
if (PrimsWaiting.Count == 0)
AllPropertiesReceived.Set();

View File

@@ -14,7 +14,7 @@ namespace OpenMetaverse.TestClient
public FindObjectsCommand(TestClient testClient)
{
testClient.Objects.OnObjectProperties += new ObjectManager.ObjectPropertiesCallback(Objects_OnObjectProperties);
testClient.Objects.ObjectProperties += new EventHandler<ObjectPropertiesEventArgs>(Objects_OnObjectProperties);
Name = "findobjects";
Description = "Finds all objects, which name contains search-string. " +
@@ -83,16 +83,16 @@ namespace OpenMetaverse.TestClient
return AllPropertiesReceived.WaitOne(2000 + msPerRequest * objects.Count, false);
}
void Objects_OnObjectProperties(Simulator simulator, Primitive.ObjectProperties properties)
void Objects_OnObjectProperties(object sender, ObjectPropertiesEventArgs e)
{
lock (PrimsWaiting)
{
Primitive prim;
if (PrimsWaiting.TryGetValue(properties.ObjectID, out prim))
if (PrimsWaiting.TryGetValue(e.Properties.ObjectID, out prim))
{
prim.Properties = properties;
prim.Properties = e.Properties;
}
PrimsWaiting.Remove(properties.ObjectID);
PrimsWaiting.Remove(e.Properties.ObjectID);
if (PrimsWaiting.Count == 0)
AllPropertiesReceived.Set();

View File

@@ -46,8 +46,8 @@ namespace OpenMetaverse.TestClient
Name = "import";
Description = "Import prims from an exported xml file. Usage: import inputfile.xml [usegroup]";
Category = CommandCategory.Objects;
testClient.Objects.OnNewPrim += new ObjectManager.NewPrimCallback(Objects_OnNewPrim);
testClient.Objects.NewPrim += Objects_OnNewPrim;
}
public override string Execute(string[] args, UUID fromAgentID)
@@ -182,8 +182,10 @@ namespace OpenMetaverse.TestClient
return "Import complete.";
}
void Objects_OnNewPrim(Simulator simulator, Primitive prim, ulong regionHandle, ushort timeDilation)
void Objects_OnNewPrim(object sender, PrimEventArgs e)
{
Primitive prim = e.Prim;
if ((prim.Flags & PrimFlags.CreateSelected) == 0)
return; // We received an update for an object we didn't create
@@ -197,23 +199,23 @@ namespace OpenMetaverse.TestClient
{
Console.WriteLine("Setting properties for " + prim.LocalID);
// TODO: Is there a way to set all of this at once, and update more ObjectProperties stuff?
Client.Objects.SetPosition(simulator, prim.LocalID, currentPosition);
Client.Objects.SetTextures(simulator, prim.LocalID, currentPrim.Textures);
Client.Objects.SetPosition(e.Simulator, prim.LocalID, currentPosition);
Client.Objects.SetTextures(e.Simulator, prim.LocalID, currentPrim.Textures);
if (currentPrim.Light.Intensity > 0) {
Client.Objects.SetLight(simulator, prim.LocalID, currentPrim.Light);
Client.Objects.SetLight(e.Simulator, prim.LocalID, currentPrim.Light);
}
Client.Objects.SetFlexible(simulator, prim.LocalID, currentPrim.Flexible);
Client.Objects.SetFlexible(e.Simulator, prim.LocalID, currentPrim.Flexible);
if (currentPrim.Sculpt.SculptTexture != UUID.Zero) {
Client.Objects.SetSculpt(simulator, prim.LocalID, currentPrim.Sculpt);
Client.Objects.SetSculpt(e.Simulator, prim.LocalID, currentPrim.Sculpt);
}
if (!String.IsNullOrEmpty(currentPrim.Properties.Name))
Client.Objects.SetName(simulator, prim.LocalID, currentPrim.Properties.Name);
Client.Objects.SetName(e.Simulator, prim.LocalID, currentPrim.Properties.Name);
if (!String.IsNullOrEmpty(currentPrim.Properties.Description))
Client.Objects.SetDescription(simulator, prim.LocalID, currentPrim.Properties.Description);
Client.Objects.SetDescription(e.Simulator, prim.LocalID, currentPrim.Properties.Description);
primsCreated.Add(prim);
primDone.Set();

View File

@@ -57,21 +57,22 @@ namespace OpenMetaverse.TestClient
}
AutoResetEvent propsEvent = new AutoResetEvent(false);
ObjectManager.ObjectPropertiesCallback propsCallback =
delegate(Simulator simulator, Primitive.ObjectProperties props)
EventHandler<ObjectPropertiesEventArgs> propsCallback =
delegate(object sender, ObjectPropertiesEventArgs e)
{
Logger.Log(String.Format(
"Category: {0}\nFolderID: {1}\nFromTaskID: {2}\nInventorySerial: {3}\nItemID: {4}\nCreationDate: {5}",
props.Category, props.FolderID, props.FromTaskID, props.InventorySerial, props.ItemID, props.CreationDate), Helpers.LogLevel.Info);
e.Properties.Category, e.Properties.FolderID, e.Properties.FromTaskID, e.Properties.InventorySerial,
e.Properties.ItemID, e.Properties.CreationDate), Helpers.LogLevel.Info);
propsEvent.Set();
};
Client.Objects.OnObjectProperties += propsCallback;
Client.Objects.ObjectProperties += propsCallback;
Client.Objects.SelectObject(Client.Network.CurrentSim, target.LocalID, true);
propsEvent.WaitOne(1000 * 10, false);
Client.Objects.OnObjectProperties -= propsCallback;
Client.Objects.ObjectProperties -= propsCallback;
return "Done.";
}

View File

@@ -17,9 +17,9 @@ namespace OpenMetaverse.TestClient
Name = "textures";
Description = "Turns automatic texture downloading on or off. Usage: textures [on/off]";
Category = CommandCategory.Objects;
testClient.Objects.OnNewPrim += new ObjectManager.NewPrimCallback(Objects_OnNewPrim);
testClient.Objects.OnNewAvatar += new ObjectManager.NewAvatarCallback(Objects_OnNewAvatar);
testClient.Objects.NewPrim += new EventHandler<PrimEventArgs>(Objects_OnNewPrim);
testClient.Objects.NewAvatar += Objects_OnNewAvatar;
}
public override string Execute(string[] args, UUID fromAgentID)
@@ -43,8 +43,9 @@ namespace OpenMetaverse.TestClient
}
}
void Objects_OnNewAvatar(Simulator simulator, Avatar avatar, ulong regionHandle, ushort timeDilation)
void Objects_OnNewAvatar(object sender, NewAvatarEventArgs e)
{
Avatar avatar = e.Avatar;
if (enabled)
{
// Search this avatar for textures
@@ -79,8 +80,10 @@ namespace OpenMetaverse.TestClient
}
}
void Objects_OnNewPrim(Simulator simulator, Primitive prim, ulong regionHandle, ushort timeDilation)
void Objects_OnNewPrim(object sender, PrimEventArgs e)
{
Primitive prim = e.Prim;
if (enabled)
{
// Search this prim for textures