diff --git a/OpenMetaverse.GUI/AvatarList.cs b/OpenMetaverse.GUI/AvatarList.cs index d71fa6bc..16ade57a 100644 --- a/OpenMetaverse.GUI/AvatarList.cs +++ b/OpenMetaverse.GUI/AvatarList.cs @@ -157,8 +157,9 @@ namespace OpenMetaverse.GUI _Client.Avatars.UUIDNameReply += new EventHandler(Avatars_UUIDNameReply); _Client.Grid.CoarseLocationUpdate += Grid_CoarseLocationUpdate; _Client.Network.OnCurrentSimChanged += new NetworkManager.CurrentSimChangedCallback(Network_OnCurrentSimChanged); - _Client.Objects.NewAvatar += Objects_OnNewAvatar; - _Client.Objects.ObjectUpdated += Objects_OnObjectUpdated; + _Client.Objects.AvatarUpdate += Objects_OnNewAvatar; + _Client.Objects.TerseObjectUpdate += Objects_OnObjectUpdated; + } void Avatars_UUIDNameReply(object sender, UUIDNameReplyEventArgs e) @@ -446,12 +447,12 @@ namespace OpenMetaverse.GUI ClearItems(); } - void Objects_OnNewAvatar(object sender, NewAvatarEventArgs e) + void Objects_OnNewAvatar(object sender, AvatarUpdateEventArgs e) { UpdateAvatar(e.Avatar); } - void Objects_OnObjectUpdated(object sender, ObjectUpdatedEventArgs e) + void Objects_OnObjectUpdated(object sender, TerseObjectUpdateEventArgs e) { lock (_TrackedAvatars) { diff --git a/OpenMetaverse/ObjectManager.cs b/OpenMetaverse/ObjectManager.cs index d8f45c93..0fdd941b 100644 --- a/OpenMetaverse/ObjectManager.cs +++ b/OpenMetaverse/ObjectManager.cs @@ -126,7 +126,7 @@ namespace OpenMetaverse /// Contains the variables sent in an object update packet for objects. /// Used to track position and movement of prims and avatars /// - public struct ObjectUpdate + public struct ObjectMovementUpdate { /// public bool Avatar; @@ -163,51 +163,51 @@ namespace OpenMetaverse #region Delegates /// The event subscribers, null of no subscribers - private EventHandler m_NewPrim; + private EventHandler m_ObjectUpdate; - ///Raises the NewPrim Event - /// A NewPrimEventArgs object containing + ///Raises the ObjectUpdate Event + /// A ObjectUpdateEventArgs object containing /// the data sent from the simulator - protected virtual void OnNewPrim(PrimEventArgs e) + protected virtual void OnObjectUpdate(PrimEventArgs e) { - EventHandler handler = m_NewPrim; + EventHandler handler = m_ObjectUpdate; if (handler != null) handler(this, e); } /// Thread sync lock object - private readonly object m_NewPrimLock = new object(); + private readonly object m_ObjectUpdateLock = new object(); /// Raised when the simulator sends us data containing - /// A new Primitive, or Foliage - public event EventHandler NewPrim + /// A Primitive or Foliage updates + public event EventHandler ObjectUpdate { - add { lock (m_NewPrimLock) { m_NewPrim += value; } } - remove { lock (m_NewPrimLock) { m_NewPrim -= value; } } + add { lock (m_ObjectUpdateLock) { m_ObjectUpdate += value; } } + remove { lock (m_ObjectUpdateLock) { m_ObjectUpdate -= value; } } } /// The event subscribers, null of no subscribers - private EventHandler m_NewAttachment; + private EventHandler m_AttachmentUpdate; - ///Raises the NewAttachment Event - /// A NewAttachmentEventArgs object containing + ///Raises the AttachmentUpdate Event + /// A AttachmentUpdateEventArgs object containing /// the data sent from the simulator - protected virtual void OnNewAttachment(PrimEventArgs e) + protected virtual void OnAttachmentUpdate(PrimEventArgs e) { - EventHandler handler = m_NewAttachment; + EventHandler handler = m_AttachmentUpdate; if (handler != null) handler(this, e); } /// Thread sync lock object - private readonly object m_NewAttachmentLock = new object(); + private readonly object m_AttachmentUpdateLock = new object(); /// Raised when the simulator sends us data containing /// a new primitive that is an Attachment - public event EventHandler NewAttachment + public event EventHandler AttachmentUpdate { - add { lock (m_NewAttachmentLock) { m_NewAttachment += value; } } - remove { lock (m_NewAttachmentLock) { m_NewAttachment -= value; } } + add { lock (m_AttachmentUpdateLock) { m_AttachmentUpdate += value; } } + remove { lock (m_AttachmentUpdateLock) { m_AttachmentUpdate -= value; } } } /// The event subscribers, null of no subscribers @@ -251,7 +251,7 @@ namespace OpenMetaverse private readonly object m_ObjectPropertiesUpdatedLock = new object(); /// Raised when the simulator sends us data containing - /// ... + /// Primitive.ObjectProperties for an object we are currently tracking public event EventHandler ObjectPropertiesUpdated { add { lock (m_ObjectPropertiesUpdatedLock) { m_ObjectPropertiesUpdated += value; } } @@ -283,75 +283,75 @@ namespace OpenMetaverse } /// The event subscribers, null of no subscribers - private EventHandler m_NewAvatar; + private EventHandler m_AvatarUpdate; - ///Raises the NewAvatar Event - /// A NewAvatarEventArgs object containing + ///Raises the AvatarUpdate Event + /// A AvatarUpdateEventArgs object containing /// the data sent from the simulator - protected virtual void OnNewAvatar(NewAvatarEventArgs e) + protected virtual void OnAvatarUpdate(AvatarUpdateEventArgs e) { - EventHandler handler = m_NewAvatar; + EventHandler handler = m_AvatarUpdate; if (handler != null) handler(this, e); } /// Thread sync lock object - private readonly object m_NewAvatarLock = new object(); + private readonly object m_AvatarUpdateLock = new object(); /// Raised when the simulator sends us data containing /// ... - public event EventHandler NewAvatar + public event EventHandler AvatarUpdate { - add { lock (m_NewAvatarLock) { m_NewAvatar += value; } } - remove { lock (m_NewAvatarLock) { m_NewAvatar -= value; } } + add { lock (m_AvatarUpdateLock) { m_AvatarUpdate += value; } } + remove { lock (m_AvatarUpdateLock) { m_AvatarUpdate -= value; } } } - /// The event subscribers, null of no subscribers - private EventHandler m_ObjectUpdated; + ///// The event subscribers, null of no subscribers + //private EventHandler m_ObjectMovementUpdated; - ///Raises the ObjectUpdated Event - /// A ObjectUpdatedEventArgs object containing - /// the data sent from the simulator - protected virtual void OnObjectUpdated(ObjectUpdatedEventArgs e) - { - EventHandler handler = m_ObjectUpdated; - if (handler != null) - handler(this, e); - } + /////Raises the ObjectUpdated Event + ///// A ObjectUpdatedEventArgs object containing + ///// the data sent from the simulator + //protected virtual void OnObjectMovementUpdated(ObjectMovementUpdatedEventArgs e) + //{ + // EventHandler handler = m_ObjectMovementUpdated; + // if (handler != null) + // handler(this, e); + //} - /// Thread sync lock object - private readonly object m_ObjectUpdatedLock = new object(); + ///// Thread sync lock object + //private readonly object m_ObjectUpdatedLock = new object(); - /// Raised when the simulator sends us data containing - /// ... - public event EventHandler ObjectUpdated - { - add { lock (m_ObjectUpdatedLock) { m_ObjectUpdated += value; } } - remove { lock (m_ObjectUpdatedLock) { m_ObjectUpdated -= value; } } - } + ///// Raised when the simulator sends us data containing + ///// an object that has moved + //public event EventHandler ObjectMovementUpdated + //{ + // add { lock (m_ObjectUpdatedLock) { m_ObjectMovementUpdated += value; } } + // remove { lock (m_ObjectUpdatedLock) { m_ObjectMovementUpdated -= value; } } + //} /// The event subscribers, null of no subscribers - private EventHandler m_ObjectUpdatedTerse; + private EventHandler m_TerseObjectUpdate; - ///Raises the ObjectUpdatedTerse Event - /// A ObjectUpdatedTerseEventArgs object containing + ///Raises the TerseObjectUpdate Event + /// A TerseObjectUpdateEventArgs object containing /// the data sent from the simulator - protected virtual void OnObjectUpdatedTerse(ObjectUpdatedTerseEventArgs e) + protected virtual void OnTerseObjectUpdate(TerseObjectUpdateEventArgs e) { - EventHandler handler = m_ObjectUpdatedTerse; + EventHandler handler = m_TerseObjectUpdate; if (handler != null) handler(this, e); } /// Thread sync lock object - private readonly object m_ObjectUpdatedTerseLock = new object(); + private readonly object m_TerseObjectUpdateLock = new object(); /// Raised when the simulator sends us data containing /// ... - public event EventHandler ObjectUpdatedTerse + public event EventHandler TerseObjectUpdate { - add { lock (m_ObjectUpdatedTerseLock) { m_ObjectUpdatedTerse += value; } } - remove { lock (m_ObjectUpdatedTerseLock) { m_ObjectUpdatedTerse -= value; } } + add { lock (m_TerseObjectUpdateLock) { m_TerseObjectUpdate += value; } } + remove { lock (m_TerseObjectUpdateLock) { m_TerseObjectUpdate -= value; } } } /// The event subscribers, null of no subscribers @@ -1588,7 +1588,7 @@ namespace OpenMetaverse { ObjectUpdatePacket.ObjectDataBlock block = update.ObjectData[b]; - ObjectUpdate objectupdate = new ObjectUpdate(); + ObjectMovementUpdate objectupdate = new ObjectMovementUpdate(); //Vector4 collisionPlane = Vector4.Zero; //Vector3 position; //Vector3 velocity; @@ -1610,11 +1610,11 @@ namespace OpenMetaverse case PCode.Tree: case PCode.NewTree: case PCode.Prim: - if (m_NewPrim == null) continue; + if (m_ObjectUpdate == null) continue; break; case PCode.Avatar: // Make an exception for updates about our own agent - if (block.FullID != Client.Self.AgentID && m_NewAvatar == null) continue; + if (block.FullID != Client.Self.AgentID && m_AvatarUpdate == null) continue; break; case PCode.ParticleSystem: continue; // TODO: Do something with these @@ -1881,12 +1881,9 @@ namespace OpenMetaverse #endregion if (attachment) - OnNewAttachment(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); + OnAttachmentUpdate(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); else - OnNewPrim(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); - - // FireOnNewPrim(simulator, prim, update.RegionData.RegionHandle, - // update.RegionData.TimeDilation); + OnObjectUpdate(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); break; #endregion Prim and Foliage @@ -1948,7 +1945,7 @@ namespace OpenMetaverse #endregion Create an Avatar from the decoded data - OnNewAvatar(new NewAvatarEventArgs(simulator, avatar, update.RegionData.TimeDilation)); + OnAvatarUpdate(new AvatarUpdateEventArgs(simulator, avatar, update.RegionData.TimeDilation)); break; #endregion Avatar @@ -2029,15 +2026,14 @@ namespace OpenMetaverse // Check if we are interested in this update if (!Client.Settings.ALWAYS_DECODE_OBJECTS && localid != Client.Self.localID - && m_ObjectUpdated == null - && m_ObjectUpdatedTerse == null) + && m_TerseObjectUpdate == null) { continue; } #region Decode update data - ObjectUpdate update = new ObjectUpdate(); + ObjectMovementUpdate update = new ObjectMovementUpdate(); // LocalID update.LocalID = localid; @@ -2092,7 +2088,7 @@ namespace OpenMetaverse (Primitive)GetPrimitive(simulator, update.LocalID, UUID.Zero); // Fire the pre-emptive notice (before we stomp the object) - OnObjectUpdatedTerse(new ObjectUpdatedTerseEventArgs(simulator, obj, update, terse.RegionData.TimeDilation)); + OnTerseObjectUpdate(new TerseObjectUpdateEventArgs(simulator, obj, update, terse.RegionData.TimeDilation)); #region Update Client.Self if (update.LocalID == Client.Self.localID) @@ -2104,19 +2100,7 @@ namespace OpenMetaverse Client.Self.relativeRotation = update.Rotation; Client.Self.angularVelocity = update.AngularVelocity; } - #endregion Update Client.Self - - obj.Acceleration = update.Acceleration; - obj.AngularVelocity = update.AngularVelocity; - obj.CollisionPlane = update.CollisionPlane; - obj.Position = update.Position; - obj.Rotation = update.Rotation; - obj.Velocity = update.Velocity; - if (update.Textures != null) - obj.Textures = update.Textures; - - // Fire the callback - OnObjectUpdated(new ObjectUpdatedEventArgs(simulator, update, terse.RegionData.TimeDilation)); + #endregion Update Client.Self } catch (Exception e) { @@ -2160,7 +2144,7 @@ namespace OpenMetaverse case PCode.Tree: case PCode.NewTree: case PCode.Prim: - if (m_NewPrim == null) continue; + if (m_ObjectUpdate == null) continue; break; } } @@ -2368,11 +2352,11 @@ namespace OpenMetaverse if ((flags & CompressedFlags.HasNameValues) != 0 && prim.ParentID != 0) { - OnNewAttachment(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); + OnAttachmentUpdate(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); } else { - OnNewPrim(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); + OnObjectUpdate(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation)); } #endregion @@ -2556,6 +2540,7 @@ namespace OpenMetaverse } } + protected void ObjectPropertiesFamilyHandler(Packet p, Simulator sim) { ObjectPropertiesFamilyPacket op = (ObjectPropertiesFamilyPacket)p; @@ -2983,16 +2968,19 @@ namespace OpenMetaverse if (InterpolationTimer != null) { InterpolationTimer.Change(delay, Timeout.Infinite); - } - } + } + + } } #region EventArgs classes - /// Provides data for the and events - /// The event occurs when the simulator sends - /// an containing a Primitive, Foliage data or Attachment data - /// Note 1: The event will not be raised when the object is an Avatar - /// Note 2: It is possible for the or to be + /// Provides data for the and events + /// The event occurs when the simulator sends + /// an containing a Primitive or Foliage data + /// The event occurs when the simulator sends + /// an containing a Primitive data which is attached to an avatar + /// Note 1: The event will not be raised when the object is an Avatar + /// Note 2: It is possible for the or to be /// raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or /// if an Avatar crosses the border into a new simulator and returns to the current simulator /// @@ -3001,26 +2989,26 @@ namespace OpenMetaverse /// properties to display new Primitives and Attachments on the window. /// /// // Subscribe to the event that gives us new prims and foliage - /// Client.Objects.NewPrim += Objects_NewPrim; + /// Client.Objects.ObjectUpdate += Objects_ObjectUpdate; /// /// // Subscribe to the event that gives us new Attachments worn /// // by yours or another agent - /// Client.Objects.NewAttachment += Objects_NewAttachment; + /// Client.Objects.AttachmentUpdate += Objects_AttachmentUpdate; /// - /// private void Objects_NewAttachment(object sender, PrimEventArgs e) + /// private void Objects_AttachmentUpdate(object sender, PrimEventArgs e) /// { - /// Console.WriteLine("New Attachment {0} {1} in {2}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name); + /// Console.WriteLine("Attachment {0} {1} in {2}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name); /// } /// - /// private void Objects_NewPrim(object sender, PrimEventArgs e) + /// private void Objects_ObjectUpdate(object sender, PrimEventArgs e) /// { - /// Console.WriteLine("New Attachment {0} {1} in {2}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name); + /// Console.WriteLine("Primitive {0} {1} in {2}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name); /// } /// /// - /// - /// - /// + /// + /// + /// public class PrimEventArgs : EventArgs { private readonly Simulator m_Simulator; @@ -3048,6 +3036,77 @@ namespace OpenMetaverse } } + /// Provides data for the event + /// The event occurs when the simulator sends + /// an containing Avatar data + /// Note 1: The event will not be raised when the object is an Avatar + /// Note 2: It is possible for the to be + /// raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator + /// + /// + /// The following code example uses the property to make a request for the top picks + /// using the method in the class to display the names + /// of our own agents picks listings on the window. + /// + /// // subscribe to the AvatarUpdate event to get our information + /// Client.Objects.AvatarUpdate += Objects_AvatarUpdate; + /// Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; + /// + /// private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + /// { + /// // we only want our own data + /// if (e.Avatar.LocalID == Client.Self.LocalID) + /// { + /// // Unsubscribe from the avatar update event to prevent a loop + /// // where we continually request the picks every time we get an update for ourselves + /// Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; + /// // make the top picks request through AvatarManager + /// Client.Avatars.RequestAvatarPicks(e.Avatar.ID); + /// } + /// } + /// + /// private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) + /// { + /// // we'll unsubscribe from the AvatarPicksReply event since we now have the data + /// // we were looking for + /// Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; + /// // loop through the dictionary and extract the names of the top picks from our profile + /// foreach (var pickName in e.Picks.Values) + /// { + /// Console.WriteLine(pickName); + /// } + /// } + /// + /// + /// + /// + /// + public class AvatarUpdateEventArgs : EventArgs + { + private readonly Simulator m_Simulator; + private readonly Avatar m_Avatar; + private readonly ushort m_TimeDilation; + + /// Get the simulator the object originated from + public Simulator Simulator { get { return m_Simulator; } } + /// Get the data + public Avatar Avatar { get { return m_Avatar; } } + /// Get the simulator time dilation + public ushort TimeDilation { get { return m_TimeDilation; } } + + /// + /// Construct a new instance of the AvatarUpdateEventArgs class + /// + /// The simulator the packet originated from + /// The data + /// The simulator time dilation + public AvatarUpdateEventArgs(Simulator simulator, Avatar avatar, ushort timeDilation) + { + this.m_Simulator = simulator; + this.m_Avatar = avatar; + this.m_TimeDilation = timeDilation; + } + } /// Provides additional primitive data for the event /// The event occurs when the simulator sends @@ -3063,11 +3122,11 @@ namespace OpenMetaverse /// /// // Subscribe to the event that gives us new Attachments worn /// // by yours or another agent - /// Client.Objects.NewAttachment += Objects_NewAttachment; + /// Client.Objects.AttachmentUpdate += Objects_AttachmentUpdate; /// // Subscribe to the event that provides additional primitive details /// Client.Objects.ObjectProperties += Objects_ObjectProperties; /// - /// private void Objects_NewAttachment(object sender, PrimEventArgs e) + /// private void Objects_AttachmentUpdate(object sender, PrimEventArgs e) /// { /// Console.WriteLine("New Attachment {0} {1} in {2}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name); /// // send a request that causes the simulator to send us back the ObjectProperties @@ -3139,14 +3198,24 @@ namespace OpenMetaverse } } + /// Provides additional primitive data, permissions and sale info for the event + /// The event occurs when the simulator sends + /// an containing additional details for a Primitive, Foliage data or Attachment. This includes + /// Permissions, Sale info, and other basic details on an object + /// The event is also raised when a request is + /// made, the viewer equivalent is hovering the mouse cursor over an object + /// public class ObjectPropertiesFamilyEventArgs : EventArgs { private readonly Simulator m_Simulator; private readonly Primitive.ObjectProperties m_Properties; private readonly ReportType m_Type; - public Simulator Simulator { get { return m_Simulator; } } + /// Get the simulator the object is located + public Simulator Simulator { get { return m_Simulator; } } + /// public Primitive.ObjectProperties Properties { get { return m_Properties; } } + /// public ReportType Type { get { return m_Type; } } public ObjectPropertiesFamilyEventArgs(Simulator simulator, Primitive.ObjectProperties props, ReportType type) @@ -3156,56 +3225,27 @@ namespace OpenMetaverse this.m_Type = type; } } - - public class NewAvatarEventArgs : EventArgs - { - private readonly Simulator m_Simulator; - private readonly Avatar m_Avatar; - private readonly ushort m_TimeDilation; - public Simulator Simulator { get { return m_Simulator; } } - public Avatar Avatar { get { return m_Avatar; } } - public ushort TimeDilation { get { return m_TimeDilation; } } - - public NewAvatarEventArgs(Simulator simulator, Avatar avatar, ushort timeDilation) - { - this.m_Simulator = simulator; - this.m_Avatar = avatar; - this.m_TimeDilation = timeDilation; - } - } - - public class ObjectUpdatedEventArgs : EventArgs - { - private readonly Simulator m_Simulator; - private readonly ObjectUpdate m_Update; - private readonly ushort m_TimeDilation; - - public Simulator Simulator { get { return m_Simulator; } } - public ObjectUpdate Update { get { return m_Update; } } - public ushort TimeDilation { get { return m_TimeDilation; } } - - public ObjectUpdatedEventArgs(Simulator simulator, ObjectUpdate update, ushort timeDilation) - { - this.m_Simulator = simulator; - this.m_Update = update; - this.m_TimeDilation = timeDilation; - } - } - - public class ObjectUpdatedTerseEventArgs : EventArgs + /// Provides primitive data containing updated location, velocity, rotation, textures for the event + /// The event occurs when the simulator sends updated location, velocity, rotation, etc + /// + public class TerseObjectUpdateEventArgs : EventArgs { private readonly Simulator m_Simulator; private readonly Primitive m_Prim; - private readonly ObjectUpdate m_Update; + private readonly ObjectMovementUpdate m_Update; private readonly ushort m_TimeDilation; + /// Get the simulator the object is located public Simulator Simulator { get { return m_Simulator; } } + /// Get the primitive details public Primitive Prim { get { return m_Prim; } } - public ObjectUpdate Update { get { return m_Update; } } + /// + public ObjectMovementUpdate Update { get { return m_Update; } } + /// public ushort TimeDilation { get { return m_TimeDilation; } } - public ObjectUpdatedTerseEventArgs(Simulator simulator, Primitive prim, ObjectUpdate update, ushort timeDilation) + public TerseObjectUpdateEventArgs(Simulator simulator, Primitive prim, ObjectMovementUpdate update, ushort timeDilation) { this.m_Simulator = simulator; this.m_Prim = prim; @@ -3213,25 +3253,34 @@ namespace OpenMetaverse this.m_TimeDilation = timeDilation; } } - + + /// + /// + /// public class ObjectDataBlockUpdateEventArgs : EventArgs { private readonly Simulator m_Simulator; private readonly Primitive m_Prim; private readonly Primitive.ConstructionData m_ConstructionData; private readonly ObjectUpdatePacket.ObjectDataBlock m_Block; - private readonly ObjectUpdate m_Update; + private readonly ObjectMovementUpdate m_Update; private readonly NameValue[] m_NameValues; - public Simulator Simulator { get { return m_Simulator; } } + /// Get the simulator the object is located + public Simulator Simulator { get { return m_Simulator; } } + /// Get the primitive details public Primitive Prim { get { return m_Prim; } } + /// public Primitive.ConstructionData ConstructionData { get { return m_ConstructionData; } } + /// public ObjectUpdatePacket.ObjectDataBlock Block { get { return m_Block; } } - public ObjectUpdate Update { get { return m_Update; } } + /// + public ObjectMovementUpdate Update { get { return m_Update; } } + /// public NameValue[] NameValues { get { return m_NameValues; } } public ObjectDataBlockUpdateEventArgs(Simulator simulator, Primitive prim, Primitive.ConstructionData constructionData, - ObjectUpdatePacket.ObjectDataBlock block, ObjectUpdate objectupdate, NameValue[] nameValues) + ObjectUpdatePacket.ObjectDataBlock block, ObjectMovementUpdate objectupdate, NameValue[] nameValues) { this.m_Simulator = simulator; this.m_Prim = prim; @@ -3242,12 +3291,17 @@ namespace OpenMetaverse } } + /// + /// + /// public class KillObjectEventArgs : EventArgs { private readonly Simulator m_Simulator; private readonly uint m_ObjectLocalID; - public Simulator Simulator { get { return m_Simulator; } } + /// Get the simulator the object is located + public Simulator Simulator { get { return m_Simulator; } } + /// public uint ObjectLocalID { get { return m_ObjectLocalID; } } public KillObjectEventArgs(Simulator simulator, uint objectID) @@ -3257,6 +3311,9 @@ namespace OpenMetaverse } } + /// + /// + /// public class AvatarSitChangedEventArgs : EventArgs { private readonly Simulator m_Simulator; @@ -3264,9 +3321,13 @@ namespace OpenMetaverse private readonly uint m_SittingOn; private readonly uint m_OldSeat; + /// Get the simulator the object is located public Simulator Simulator { get { return m_Simulator; } } + /// public Avatar Avatar { get { return m_Avatar; } } + /// public uint SittingOn { get { return m_SittingOn; } } + /// public uint OldSeat { get { return m_OldSeat; } } public AvatarSitChangedEventArgs(Simulator simulator, Avatar avatar, uint sittingOn, uint oldSeat) @@ -3278,6 +3339,9 @@ namespace OpenMetaverse } } + /// + /// + /// public class PayPriceReplyEventArgs : EventArgs { private readonly Simulator m_Simulator; @@ -3285,9 +3349,13 @@ namespace OpenMetaverse private readonly int m_DefaultPrice; private readonly int[] m_ButtonPrices; + /// Get the simulator the object is located public Simulator Simulator { get { return m_Simulator; } } + /// public UUID ObjectID { get { return m_ObjectID; } } + /// public int DefaultPrice { get { return m_DefaultPrice; } } + /// public int[] ButtonPrices { get { return m_ButtonPrices; } } public PayPriceReplyEventArgs(Simulator simulator, UUID objectID, int defaultPrice, int[] buttonPrices) diff --git a/OpenMetaverse/Primitives/Primitive.cs b/OpenMetaverse/Primitives/Primitive.cs index 303091cb..cbf38238 100644 --- a/OpenMetaverse/Primitives/Primitive.cs +++ b/OpenMetaverse/Primitives/Primitive.cs @@ -1259,7 +1259,7 @@ namespace OpenMetaverse TextColor = prim.TextColor; MediaURL = prim.MediaURL; Joint = prim.Joint; - JointPivot = prim.JointPivot; + JointPivot = prim.JointPivot; JointAxisOrAnchor = prim.JointAxisOrAnchor; if (prim.NameValues != null) { diff --git a/Programs/PrimWorkshop/frmBrowser.cs b/Programs/PrimWorkshop/frmBrowser.cs index 9e7f946a..8c6aa412 100644 --- a/Programs/PrimWorkshop/frmBrowser.cs +++ b/Programs/PrimWorkshop/frmBrowser.cs @@ -161,7 +161,7 @@ namespace PrimWorkshop Client.Network.OnDisconnected += new NetworkManager.DisconnectedCallback(Network_OnDisconnected); Client.Network.OnCurrentSimChanged += new NetworkManager.CurrentSimChangedCallback(Network_OnCurrentSimChanged); Client.Network.OnEventQueueRunning += new NetworkManager.EventQueueRunningCallback(Network_OnEventQueueRunning); - Client.Objects.NewPrim += Objects_OnNewPrim; + Client.Objects.ObjectUpdate += Objects_OnNewPrim; Client.Terrain.OnLandPatch += new TerrainManager.LandPatchCallback(Terrain_OnLandPatch); Client.Parcels.SimParcelsDownloaded += new EventHandler(Parcels_SimParcelsDownloaded); diff --git a/Programs/examples/TestClient/Commands/Agent/BotsCommand.cs b/Programs/examples/TestClient/Commands/Agent/BotsCommand.cs index c3022112..ab673d9e 100644 --- a/Programs/examples/TestClient/Commands/Agent/BotsCommand.cs +++ b/Programs/examples/TestClient/Commands/Agent/BotsCommand.cs @@ -14,14 +14,13 @@ namespace OpenMetaverse.TestClient { Name = "bots"; Description = "detects avatars that appear to be bots."; - Category = CommandCategory.Other; - + Category = CommandCategory.Other; testClient.Avatars.ViewerEffect += new EventHandler(Avatars_ViewerEffect); testClient.Avatars.ViewerEffectLookAt += new EventHandler(Avatars_ViewerEffectLookAt); testClient.Avatars.ViewerEffectPointAt += new EventHandler(Avatars_ViewerEffectPointAt); } - - void Avatars_ViewerEffectPointAt(object sender, ViewerEffectPointAtEventArgs e) + + private void Avatars_ViewerEffectPointAt(object sender, ViewerEffectPointAtEventArgs e) { lock (m_AgentList) { @@ -32,7 +31,7 @@ namespace OpenMetaverse.TestClient } } - void Avatars_ViewerEffectLookAt(object sender, ViewerEffectLookAtEventArgs e) + private void Avatars_ViewerEffectLookAt(object sender, ViewerEffectLookAtEventArgs e) { lock (m_AgentList) { @@ -43,7 +42,7 @@ namespace OpenMetaverse.TestClient } } - void Avatars_ViewerEffect(object sender, ViewerEffectEventArgs e) + private void Avatars_ViewerEffect(object sender, ViewerEffectEventArgs e) { lock (m_AgentList) { diff --git a/Programs/examples/TestClient/Commands/Movement/FlyToCommand.cs b/Programs/examples/TestClient/Commands/Movement/FlyToCommand.cs index 193dfb14..5d1044a9 100644 --- a/Programs/examples/TestClient/Commands/Movement/FlyToCommand.cs +++ b/Programs/examples/TestClient/Commands/Movement/FlyToCommand.cs @@ -13,13 +13,12 @@ namespace OpenMetaverse.TestClient.Commands.Movement int startTime = 0; int duration = 10000; - public FlyToCommand(TestClient client) + public FlyToCommand(TestClient Client) { Name = "FlyTo"; Description = "Fly the avatar toward the specified position for a maximum of seconds. Usage: FlyTo x y z [seconds]"; Category = CommandCategory.Movement; - - client.Objects.ObjectUpdated += Objects_OnObjectUpdated; + Client.Objects.TerseObjectUpdate += Objects_OnObjectUpdated; } public override string Execute(string[] args, UUID fromAgentID) @@ -45,16 +44,11 @@ namespace OpenMetaverse.TestClient.Commands.Movement Client.Self.Movement.AtNeg = false; ZMovement(); Client.Self.Movement.TurnToward(target); - //System.Threading.Thread.Sleep(100); - - //XYMovement(); - //ZMovement(); - //Client.Self.Movement.SendUpdate(false); return string.Format("flying to {0} in {1} seconds", target.ToString(), duration / 1000); } - private void Objects_OnObjectUpdated(object sender, ObjectUpdatedEventArgs e) + private void Objects_OnObjectUpdated(object sender, TerseObjectUpdateEventArgs e) { if (startTime == 0) return; if (e.Update.LocalID == Client.Self.LocalID) @@ -98,14 +92,7 @@ namespace OpenMetaverse.TestClient.Commands.Movement if (diff >= 10.0) { Client.Self.Movement.AtPos = true; - // Client.Self.Movement.AtNeg = false; - //if (Math.Abs(diff - olddiff) > 1.5) { - // Client.Self.Movement.AtPos = diff < olddiff; - // Client.Self.Movement.AtNeg = diff > olddiff; - //} else if (!Client.Self.Movement.AtPos && !Client.Self.Movement.AtNeg) { - // Client.Self.Movement.AtPos = true; - // Client.Self.Movement.AtNeg = false; - //} + res = true; } else if (diff >= 2 && vel < 5) diff --git a/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs b/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs index d01de4b1..76608fbe 100644 --- a/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs +++ b/Programs/examples/TestClient/Commands/Prims/ImportCommand.cs @@ -47,7 +47,7 @@ namespace OpenMetaverse.TestClient Description = "Import prims from an exported xml file. Usage: import inputfile.xml [usegroup]"; Category = CommandCategory.Objects; - testClient.Objects.NewPrim += Objects_OnNewPrim; + testClient.Objects.ObjectUpdate += Objects_OnNewPrim; } public override string Execute(string[] args, UUID fromAgentID) diff --git a/Programs/examples/TestClient/Commands/Prims/PrimInfoCommand.cs b/Programs/examples/TestClient/Commands/Prims/PrimInfoCommand.cs index e07ac9f6..675933de 100644 --- a/Programs/examples/TestClient/Commands/Prims/PrimInfoCommand.cs +++ b/Programs/examples/TestClient/Commands/Prims/PrimInfoCommand.cs @@ -28,6 +28,10 @@ namespace OpenMetaverse.TestClient if (target != null) { + if (target.Text != String.Empty) + { + Logger.Log("Text: " + target.Text, Helpers.LogLevel.Info, Client); + } if(target.Light != null) Logger.Log("Light: " + target.Light.ToString(), Helpers.LogLevel.Info, Client); diff --git a/Programs/examples/TestClient/Commands/Prims/TexturesCommand.cs b/Programs/examples/TestClient/Commands/Prims/TexturesCommand.cs index 48de3c13..ffed3937 100644 --- a/Programs/examples/TestClient/Commands/Prims/TexturesCommand.cs +++ b/Programs/examples/TestClient/Commands/Prims/TexturesCommand.cs @@ -18,8 +18,8 @@ namespace OpenMetaverse.TestClient Description = "Turns automatic texture downloading on or off. Usage: textures [on/off]"; Category = CommandCategory.Objects; - testClient.Objects.NewPrim += new EventHandler(Objects_OnNewPrim); - testClient.Objects.NewAvatar += Objects_OnNewAvatar; + testClient.Objects.ObjectUpdate += new EventHandler(Objects_OnNewPrim); + testClient.Objects.AvatarUpdate += Objects_OnNewAvatar; } public override string Execute(string[] args, UUID fromAgentID) @@ -43,7 +43,7 @@ namespace OpenMetaverse.TestClient } } - void Objects_OnNewAvatar(object sender, NewAvatarEventArgs e) + void Objects_OnNewAvatar(object sender, AvatarUpdateEventArgs e) { Avatar avatar = e.Avatar; if (enabled) diff --git a/Programs/importprimscript/importprimscript.cs b/Programs/importprimscript/importprimscript.cs index 1ee96747..91ed0c22 100644 --- a/Programs/importprimscript/importprimscript.cs +++ b/Programs/importprimscript/importprimscript.cs @@ -65,7 +65,7 @@ namespace importprimscript } // Add callback handlers for asset uploads finishing. new prims spotted, and logging - Client.Objects.NewPrim += new EventHandler(Objects_OnNewPrim); + Client.Objects.ObjectUpdate += new EventHandler(Objects_OnNewPrim); Logger.OnLogMessage += new Logger.LogCallback(Client_OnLogMessage); // Optimize the connection for our purposes