From 5715545c57c81a8bfe2c2bac414b2c4bddafa7e5 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:10 +0100 Subject: Revert "Replaced OpenMetaverse dlls with ones compiled in Windows." This reverts commit eb0cde7959a03ccbf3551b725cd6b559071857fb. --- bin/OpenMetaverse.StructuredData.XML | 398 +- bin/OpenMetaverse.StructuredData.dll | Bin 102400 -> 95232 bytes bin/OpenMetaverse.XML | 36404 +++++++++++++++++---------------- bin/OpenMetaverse.dll | Bin 1712128 -> 1768960 bytes bin/OpenMetaverse.dll.config | 14 +- bin/OpenMetaverseTypes.XML | 3175 +-- bin/OpenMetaverseTypes.dll | Bin 114688 -> 105984 bytes 7 files changed, 20432 insertions(+), 19559 deletions(-) diff --git a/bin/OpenMetaverse.StructuredData.XML b/bin/OpenMetaverse.StructuredData.XML index a8e314f..927e960 100644 --- a/bin/OpenMetaverse.StructuredData.XML +++ b/bin/OpenMetaverse.StructuredData.XML @@ -1,333 +1,363 @@ - OpenMetaverse.StructuredData + /home/root/libopenmetaverse/bin/OpenMetaverse.StructuredData - + - + + - + + - - + - - - - + - - - - + - - - - + - - - - + - - - + - - - - - + - - - - - + - - - - - + - - - - + - - - - + - - - - + - + Uses reflection to create an SDMap from all of the SD + serializable types in an object - - + Class or struct containing serializable types + An SDMap holding the serialized values from the + container object - + - + Uses reflection to deserialize member variables in an object from + an SDMap - - + Reference to an object to fill with deserialized + values + Serialized values to put in the target + object - + - - - - + - - - - + - - - - + - - - - + - - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - - - - - - - - - - - - - - + - - - - + + + + - + - + + + + - - + + + + + + + - - + + + + + + + - - + + + + + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + + + - - + + + + + + + - - + + + + + + + - - + + + + + + + - - + + + + + + + - + - + + + + - + - + + + + - + - Uses reflection to create an SDMap from all of the SD - serializable types in an object - Class or struct containing serializable types - An SDMap holding the serialized values from the - container object + + + + + + - + - Uses reflection to deserialize member variables in an object from - an SDMap - Reference to an object to fill with deserialized - values - Serialized values to put in the target - object + + + + + + + + - + - + + + + + + - + - + + + + + + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + - + + + + - + - + + + + + + - + - + + + + diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index 45a72ec..27ccfbc 100644 Binary files a/bin/OpenMetaverse.StructuredData.dll and b/bin/OpenMetaverse.StructuredData.dll differ diff --git a/bin/OpenMetaverse.XML b/bin/OpenMetaverse.XML index 639bc20..fa1057a 100644 --- a/bin/OpenMetaverse.XML +++ b/bin/OpenMetaverse.XML @@ -1,25026 +1,25794 @@ - OpenMetaverse + /home/root/libopenmetaverse/bin/OpenMetaverse - + - Represents an LSL Text object containing a string of UTF encoded characters + Permission request flags, asked when a script wants to control an Avatar - - - Base class for all Asset types - + + Placeholder for empty values, shouldn't ever see this - - A byte array containing the raw asset data + + Script wants ability to take money from you - - True if the asset it only stored on the server temporarily + + Script wants to take camera controls for you - - A unique ID + + Script wants to remap avatars controls - - - Construct a new Asset object - + + Script wants to trigger avatar animations + This function is not implemented on the grid - - - Construct a new Asset object - - A unique specific to this asset - A byte array containing the raw asset data + + Script wants to attach or detach the prim or primset to your avatar - - - Regenerates the AssetData byte array from the properties - of the derived class. - + + Script wants permission to release ownership + This function is not implemented on the grid + The concept of "public" objects does not exist anymore. - - - Decodes the AssetData, placing it in appropriate properties of the derived - class. - - True if the asset decoding succeeded, otherwise false + + Script wants ability to link/delink with other prims - - The assets unique ID + + Script wants permission to change joints + This function is not implemented on the grid - - - The "type" of asset, Notecard, Animation, etc - + + Script wants permissions to change permissions + This function is not implemented on the grid - - A string of characters represting the script contents + + Script wants to track avatars camera position and rotation - - Initializes a new AssetScriptText object + + Script wants to control your camera - + - Initializes a new AssetScriptText object with parameters + Special commands used in Instant Messages - A unique specific to this asset - A byte array containing the raw asset data - - - Encode a string containing the scripts contents into byte encoded AssetData - + + Indicates a regular IM from another agent - - - Decode a byte array containing the scripts contents into a string - - true if decoding is successful + + Simple notification box with an OK button - - Override the base classes AssetType + + You've been invited to join a group. - - - - + + Inventory offer - - The event subscribers, null of no subscribers + + Accepted inventory offer - - Raises the AttachedSound Event - A AttachedSoundEventArgs object containing - the data sent from the simulator + + Declined inventory offer - - Thread sync lock object + + Group vote - - The event subscribers, null of no subscribers + + An object is offering its inventory - - Raises the AttachedSoundGainChange Event - A AttachedSoundGainChangeEventArgs object containing - the data sent from the simulator + + Accept an inventory offer from an object - - Thread sync lock object + + Decline an inventory offer from an object - - The event subscribers, null of no subscribers + + Unknown - - Raises the SoundTrigger Event - A SoundTriggerEventArgs object containing - the data sent from the simulator + + Start a session, or add users to a session - - Thread sync lock object + + Start a session, but don't prune offline users - - The event subscribers, null of no subscribers + + Start a session with your group - - Raises the PreloadSound Event - A PreloadSoundEventArgs object containing - the data sent from the simulator + + Start a session without a calling card (finder or objects) - - Thread sync lock object + + Send a message to a session - - - Construct a new instance of the SoundManager class, used for playing and receiving - sound assets - - A reference to the current GridClient instance + + Leave a session - - - Plays a sound in the current region at full volume from avatar position - - UUID of the sound to be played + + Indicates that the IM is from an object - - - Plays a sound in the current region at full volume - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. + + Sent an IM to a busy user, this is the auto response - - - Plays a sound in the current region - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 + + Shows the message in the console and chat history - - - Plays a sound in the specified sim - - UUID of the sound to be played. - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 + + Send a teleport lure - - - Play a sound asset - - UUID of the sound to be played. - handle id for the sim to be played in. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 + + Response sent to the agent which inititiated a teleport invitation - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Response sent to the agent which inititiated a teleport invitation - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Only useful if you have Linden permissions - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + A placeholder type for future expansion, currently not + used - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + IM to tell the user to go to an URL - - Raised when the simulator sends us data containing - sound + + IM for help - - Raised when the simulator sends us data containing - ... + + IM sent automatically on call for help, sends a lure + to each Helper reached - - Raised when the simulator sends us data containing - ... + + Like an IM but won't go to email - - Raised when the simulator sends us data containing - ... + + IM from a group officer to all group members - - Provides data for the event - The event occurs when the simulator sends - the sound data which emits from an agents attachment - - The following code example shows the process to subscribe to the event - and a stub to handle the data passed from the simulator - - // Subscribe to the AttachedSound event - Client.Sound.AttachedSound += Sound_AttachedSound; - - // process the data raised in the event here - private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) - { - // ... Process AttachedSoundEventArgs here ... - } - - + + Unknown - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The volume level - The + + Unknown - - Simulator where the event originated + + Accept a group invitation - - Get the sound asset id + + Decline a group invitation - - Get the ID of the owner + + Unknown - - Get the ID of the Object + + An avatar is offering you friendship - - Get the volume level + + An avatar has accepted your friendship offer - - Get the + + An avatar has declined your friendship offer - - Provides data for the event - The event occurs when an attached sound - changes its volume level + + Indicates that a user has started typing - + + Indicates that a user has stopped typing + + - Construct a new instance of the AttachedSoundGainChangedEventArgs class + Flag in Instant Messages, whether the IM should be delivered to + offline avatars as well - Simulator where the event originated - The ID of the Object - The new volume level - - - Simulator where the event originated - - - Get the ID of the Object - - Get the volume level + + Only deliver to online avatars - - Provides data for the event - The event occurs when the simulator forwards - a request made by yourself or another agent to play either an asset sound or a built in sound - - Requests to play sounds where the is not one of the built-in - will require sending a request to download the sound asset before it can be played - - - The following code example uses the , - and - properties to display some information on a sound request on the window. - - // subscribe to the event - Client.Sound.SoundTrigger += Sound_SoundTrigger; - - // play the pre-defined BELL_TING sound - Client.Sound.SendSoundTrigger(Sounds.BELL_TING); - - // handle the response data - private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) - { - Console.WriteLine("{0} played the sound {1} at volume {2}", - e.OwnerID, e.SoundID, e.Gain); - } - - + + If the avatar is offline the message will be held until + they login next, and possibly forwarded to their e-mail account - + - Construct a new instance of the SoundTriggerEventArgs class + Conversion type to denote Chat Packet types in an easier-to-understand format - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The ID of the objects parent - The volume level - The regionhandle - The source position - - Simulator where the event originated - - - Get the sound asset id + + Whisper (5m radius) - - Get the ID of the owner + + Normal chat (10/20m radius), what the official viewer typically sends - - Get the ID of the Object + + Shouting! (100m radius) - - Get the ID of the objects parent + + Event message when an Avatar has begun to type - - Get the volume level + + Event message when an Avatar has stopped typing - - Get the regionhandle + + Send the message to the debug channel - - Get the source position + + Event message when an object uses llOwnerSay - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - + + Special value to support llRegionSay, never sent to the client - + - Construct a new instance of the PreloadSoundEventArgs class + Identifies the source of a chat message - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - Get the ID of the Object - - - Sort by name - - - Sort by date + + Chat from the grid or simulator - - Sort folders by name, regardless of whether items are - sorted by name or date + + Chat from another avatar - - Place system folders at the top + + Chat from an object - + - Possible destinations for DeRezObject request - - - - - Copy from in-world to agent inventory - - - Derez to TaskInventory - - - - - - Take Object - - - - - - Delete Object - - - Put an avatar attachment into agent inventory - - - - - - Return an object back to the owner's inventory - - - Return a deeded object back to the last owner's inventory - - + - Upper half of the Flags field for inventory items - - Indicates that the NextOwner permission will be set to the - most restrictive set of permissions found in the object set - (including linkset items and object inventory items) on next rez - - - Indicates that the object sale information has been - changed - - - If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez - - - Indicates whether this object is composed of multiple - items or not - - - Indicates that the asset is only referenced by this - inventory item. If this item is deleted or updated to reference a - new assetID, the asset can be deleted - - + - Base Class for Inventory Items - - of item/folder - - - of parent folder - - - Name of item/folder + + + - - Item/Folder Owners + + + Effect type used in ViewerEffect packets + - + - Constructor, takes an itemID as a parameter - The of the item - + - - - + - - - + - Generates a number corresponding to the value of the object to support the use of a hash table, - suitable for use in hashing algorithms and data structures such as a hash table - A Hashcode of all the combined InventoryBase fields - + - Determine whether the specified object is equal to the current object - InventoryBase object to compare against - true if objects are the same - + - Determine whether the specified object is equal to the current object - InventoryBase object to compare against - true if objects are the same - + - An Item in Inventory - - The of this item - - - The combined of this item - - - The type of item from - - - The type of item from the enum - - - The of the creator of this item - - - A Description of this item + + Project a beam from a source to a destination, such as + the one used when editing an object - - The s this item is set to or owned by + + + - - If true, item is owned by a group + + + - - The price this item can be purchased for + + + - - The type of sale from the enum + + Create a swirl of particles around an object - - Combined flags from + + + - - Time and date this inventory item was created, stored as - UTC (Coordinated Universal Time) + + + - - Used to update the AssetID in requests sent to the server + + Cause an avatar to look at an object - - The of the previous owner of the item + + Cause an avatar to point at an object - + - Construct a new InventoryItem object + The action an avatar is doing when looking at something, used in + ViewerEffect packets for the LookAt effect - The of the item - + - Construct a new InventoryItem object of a specific Type - The type of item from - of the item - + - Indicates inventory item is a link - True if inventory item is a link to another inventory item - + - - - + - - - + - Generates a number corresponding to the value of the object to support the use of a hash table. - Suitable for use in hashing algorithms and data structures such as a hash table - A Hashcode of all the combined InventoryItem fields - + - Compares an object - The object to compare - true if comparison object matches - + + Deprecated + + - Determine whether the specified object is equal to the current object - The object to compare against - true if objects are the same - + - Determine whether the specified object is equal to the current object - The object to compare against - true if objects are the same - + - InventoryTexture Class representing a graphical image - - + - Construct an InventoryTexture object - A which becomes the - objects AssetUUID - + - Construct an InventoryTexture object from a serialization stream + The action an avatar is doing when pointing at something, used in + ViewerEffect packets for the PointAt effect - + - InventorySound Class representing a playable sound - + - Construct an InventorySound object - A which becomes the - objects AssetUUID - + - Construct an InventorySound object from a serialization stream - + - InventoryCallingCard Class, contains information on another avatar - + - Construct an InventoryCallingCard object + Money transaction types - A which becomes the - objects AssetUUID - + - Construct an InventoryCallingCard object from a serialization stream - + - InventoryLandmark Class, contains details on a specific location - + - Construct an InventoryLandmark object - A which becomes the - objects AssetUUID - + - Construct an InventoryLandmark object from a serialization stream - + - Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited - + - InventoryObject Class contains details on a primitive or coalesced set of primitives - + - Construct an InventoryObject object - A which becomes the - objects AssetUUID - + - Construct an InventoryObject object from a serialization stream - + - Gets or sets the upper byte of the Flags value - + - Gets or sets the object attachment point, the lower byte of the Flags value - + - InventoryNotecard Class, contains details on an encoded text document - + - Construct an InventoryNotecard object - A which becomes the - objects AssetUUID - + - Construct an InventoryNotecard object from a serialization stream - + - InventoryCategory Class - TODO: Is this even used for anything? - + - Construct an InventoryCategory object - A which becomes the - objects AssetUUID - + - Construct an InventoryCategory object from a serialization stream - + - InventoryLSL Class, represents a Linden Scripting Language object - + - Construct an InventoryLSL object - A which becomes the - objects AssetUUID - + - Construct an InventoryLSL object from a serialization stream - + - InventorySnapshot Class, an image taken with the viewer - + - Construct an InventorySnapshot object - A which becomes the - objects AssetUUID - + - Construct an InventorySnapshot object from a serialization stream - + - InventoryAttachment Class, contains details on an attachable object - + - Construct an InventoryAttachment object - A which becomes the - objects AssetUUID - + - Construct an InventoryAttachment object from a serialization stream - + - Get the last AttachmentPoint this object was attached to - + - InventoryWearable Class, details on a clothing item or body part - + - Construct an InventoryWearable object - A which becomes the - objects AssetUUID - + - Construct an InventoryWearable object from a serialization stream - + - The , Skin, Shape, Skirt, Etc - + - InventoryAnimation Class, A bvh encoded object which animates an avatar - + - Construct an InventoryAnimation object - A which becomes the - objects AssetUUID - + - Construct an InventoryAnimation object from a serialization stream - + - InventoryGesture Class, details on a series of animations, sounds, and actions - + - Construct an InventoryGesture object - A which becomes the - objects AssetUUID - + - Construct an InventoryGesture object from a serialization stream - + - A folder contains s and has certain attributes specific - to itself - - The Preferred for a folder. + + + - - The Version of this folder + + + - - Number of child items this folder contains. + + + - + - Constructor - UUID of the folder - + - - - + - Get Serilization data for this InventoryFolder object - + - Construct an InventoryFolder object from a serialization stream - + - - - + - - - - + - - - - + - - - - + - Tools for dealing with agents inventory - - Used for converting shadow_id to asset_id - - - The event subscribers, null of no subscribers - - - Raises the ItemReceived Event - A ItemReceivedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the FolderUpdated Event - A FolderUpdatedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the InventoryObjectOffered Event - A InventoryObjectOfferedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the TaskItemReceived Event - A TaskItemReceivedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the FindObjectByPath Event - A FindObjectByPathEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the TaskInventoryReply Event - A TaskInventoryReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SaveAssetToInventory Event - A SaveAssetToInventoryEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ScriptRunningReply Event - A ScriptRunningReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Partial mapping of AssetTypes to folder names - - + - Default constructor - Reference to the GridClient object - + - Fetch an inventory item from the dataserver - The items - The item Owners - a integer representing the number of milliseconds to wait for results - An object on success, or null if no item was found - Items will also be sent to the event - + - Request A single inventory item - The items - The item Owners - - + - Request inventory items - Inventory items to request - Owners of the inventory items - - + - Get contents of a folder - The of the folder to search - The of the folders owner - true to retrieve folders - true to retrieve items - sort order to return results in - a integer representing the number of milliseconds to wait for results - A list of inventory items matching search criteria within folder - - InventoryFolder.DescendentCount will only be accurate if both folders and items are - requested - + - Request the contents of an inventory folder - The folder to search - The folder owners - true to return s contained in folder - true to return s containd in folder - the sort order to return items in - - + - Returns the UUID of the folder (category) that defaults to - containing 'type'. The folder is not necessarily only for that - type - This will return the root folder if one does not exist - - The UUID of the desired folder if found, the UUID of the RootFolder - if not found, or UUID.Zero on failure - + - Find an object in inventory using a specific path to search - The folder to begin the search in - The object owners - A string path to search - milliseconds to wait for a reply - Found items or if - timeout occurs or item is not found - + - Find inventory items by path - The folder to begin the search in - The object owners - A string path to search, folders/objects separated by a '/' - Results are sent to the event - + - Search inventory Store object for an item or folder - The folder to begin the search in - An array which creates a path to search - Number of levels below baseFolder to conduct searches - if True, will stop searching after first match is found - A list of inventory items found - + - Move an inventory item or folder to a new location - The item or folder to move - The to move item or folder to - + - Move an inventory item or folder to a new location and change its name - The item or folder to move - The to move item or folder to - The name to change the item or folder to - + - Move and rename a folder - The source folders - The destination folders - The name to change the folder to - + - Update folder properties - of the folder to update - Sets folder's parent to - Folder name - Folder type - + - Move a folder - The source folders - The destination folders - + - Move multiple folders, the keys in the Dictionary parameter, - to a new parents, the value of that folder's key. + Flags sent when a script takes or releases a control - A Dictionary containing the - of the source as the key, and the - of the destination as the value + NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, - - - Move an inventory item to a new folder - - The of the source item to move - The of the destination folder + + No Flags set - - - Move and rename an inventory item - - The of the source item to move - The of the destination folder - The name to change the folder to + + Forward (W or up Arrow) - - - Move multiple inventory items to new locations - - A Dictionary containing the - of the source item as the key, and the - of the destination folder as the value + + Back (S or down arrow) - - - Remove descendants of a folder - - The of the folder + + Move left (shift+A or left arrow) - - - Remove a single item from inventory - - The of the inventory item to remove + + Move right (shift+D or right arrow) - - - Remove a folder from inventory - - The of the folder to remove + + Up (E or PgUp) - - - Remove multiple items or folders from inventory - - A List containing the s of items to remove - A List containing the s of the folders to remove + + Down (C or PgDown) - + + Rotate left (A or left arrow) + + + Rotate right (D or right arrow) + + + Left Mouse Button + + + Left Mouse button in MouseLook + + - Empty the Lost and Found folder + Currently only used to hide your group title - + + No flags set + + + Hide your group title + + - Empty the Trash folder + Action state of the avatar, which can currently be typing and + editing - + - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - + - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - + - Creates a new inventory folder - ID of the folder to put this folder in - Name of the folder to create - The UUID of the newly created folder - + - Creates a new inventory folder + Current teleport status - ID of the folder to put this folder in - Name of the folder to create - Sets this folder as the default folder - for new assets of the specified type. Use AssetType.Unknown - to create a normal folder, otherwise it will likely create a - duplicate of an existing folder type - The UUID of the newly created folder - If you specify a preferred type of AsseType.Folder - it will create a new root folder which may likely cause all sorts - of strange problems - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Delegate that will receive feedback on success or failure + + Unknown status - + + Teleport initialized + + + Teleport in progress + + + Teleport failed + + + Teleport completed + + + Teleport cancelled + + - Create an inventory item and upload asset data - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Permission of the newly created item - (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) - Delegate that will receive feedback on success or failure - + + No flags set, or teleport failed + + + Set when newbie leaves help island for first time + + - Creates inventory link to another inventory item or folder - Put newly created link in folder with this UUID - Inventory item or folder - Method to call upon creation of the link - + + Via Lure + + + Via Landmark + + + Via Location + + + Via Home + + + Via Telehub + + + Via Login + + + Linden Summoned + + + Linden Forced me + + - Creates inventory link to another inventory item - Put newly created link in folder with this UUID - Original inventory item - Method to call upon creation of the link - + + Agent Teleported Home via Script + + - Creates inventory link to another inventory folder - Put newly created link in folder with this UUID - Original inventory folder - Method to call upon creation of the link - + - Creates inventory link to another inventory item or folder - Put newly created link in folder with this UUID - Original item's UUID - Name - Description - Asset Type - Inventory Type - Transaction UUID - Method to call upon creation of the link - + - - - - - - + + forced to new location for example when avatar is banned or ejected + + + Teleport Finished via a Lure + + + Finished, Sim Changed + + + Finished, Same Sim + + - - - - - - - + - - - - - - - + - Request a copy of an asset embedded within a notecard - Usually UUID.Zero for copying an asset from a notecard - UUID of the notecard to request an asset from - Target folder for asset to go to in your inventory - UUID of the embedded asset - callback to run when item is copied to inventory - + - - - + - - - + - - - - + - - - - - + - Save changes to notecard embedded in object contents - Encoded notecard asset data - Notecard UUID - Object's UUID - Called upon finish of the upload with status information - + - Upload new gesture asset for an inventory gesture item - Encoded gesture asset - Gesture inventory UUID - Callback whick will be called when upload is complete - + - Update an existing script in an agents Inventory + Instant Message - A byte[] array containing the encoded scripts contents - the itemID of the script - if true, sets the script content to run on the mono interpreter - - + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Print the struct data as a string + A string containing the field name, and field value + + - Update an existing script in an task Inventory + Manager class for our own avatar - A byte[] array containing the encoded scripts contents - the itemID of the script - UUID of the prim containting the script - if true, sets the script content to run on the mono interpreter - if true, sets the script to running - - + - Rez an object from inventory + Constructor, setup callbacks for packets related to our avatar - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details + A reference to the Class - + - Rez an object from inventory + Agent movement and camera control + Agent movement is controlled by setting specific + After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags + This is most easily accomplished by setting one or more of the AgentMovement properties + Movement of an avatar is always based on a compass direction, for example AtPos will move the + agent from West to East or forward on the X Axis, AtNeg will of course move agent from + East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis + The Z axis is Up, finer grained control of movements can be done using the Nudge properties - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - + + Default constructor + + - Rez an object from inventory + Camera controls for the agent, mostly a thin wrapper around + CoordinateFrame. This class is only responsible for state + tracking and math, it does not send any packets - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - User defined queryID to correlate replies - If set to true, the CreateSelected flag - will be set on the rezzed object - + - DeRez an object from the simulator to the agents Objects folder in the agents Inventory + Default constructor - The simulator Local ID of the object - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - + - DeRez an object from the simulator and return to inventory - The simulator Local ID of the object - The type of destination from the enum - The destination inventory folders -or- - if DeRezzing object to a tasks Inventory, the Tasks - The transaction ID for this request which - can be used to correlate this request with other packets - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - + + The camera is a local frame of reference inside of + the larger grid space. This is where the math happens + + - Rez an item from inventory to its previous simulator location - - - - - + - Give an inventory item to another avatar - The of the item to give - The name of the item - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - + - Give an inventory Folder with contents to another avatar - The of the Folder to give - The name of the folder - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - + - Copy or move an from agent inventory to a task (primitive) inventory - The target object - The item to copy or move from inventory - - For items with copy permissions a copy of the item is placed in the tasks inventory, - for no-copy items the object is moved to the tasks inventory - + + Agent camera controls + + + Currently only used for hiding your group title + + + Action state of the avatar, which can currently be + typing and editing + + - Retrieve a listing of the items contained in a task (Primitive) - The tasks - The tasks simulator local ID - milliseconds to wait for reply from simulator - A list containing the inventory items inside the task or null - if a timeout occurs - This request blocks until the response from the simulator arrives - or timeoutMS is exceeded - + - Request the contents of a tasks (primitives) inventory from the - current simulator - The LocalID of the object - - + - Request the contents of a tasks (primitives) inventory - The simulator Local ID of the object - A reference to the simulator object that contains the object - - + - Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory - LocalID of the object in the simulator - UUID of the task item to move - The ID of the destination folder in this agents inventory - Simulator Object - Raises the event - + - Remove an item from an objects (Prim) Inventory - LocalID of the object in the simulator - UUID of the task item to remove - Simulator Object - You can confirm the removal by comparing the tasks inventory serial before and after the - request with the request combined with - the event - - - Copy an InventoryScript item from the Agents Inventory into a primitives task inventory - - An unsigned integer representing a primitive being simulated - An which represents a script object from the agents inventory - true to set the scripts running state to enabled - A Unique Transaction ID - - The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory - and assumes the script exists in the agents inventory. - - uint primID = 95899503; // Fake prim ID - UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory - - Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, - false, true, InventorySortOrder.ByName, 10000); - - Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); - - + + + - + - Request the running status of a script contained in a task (primitive) inventory - The ID of the primitive containing the script - The ID of the script - The event can be used to obtain the results of the - request - - + - Send a request to set the running state of a script contained in a task (primitive) inventory - The ID of the primitive containing the script - The ID of the script - true to set the script running, false to stop a running script - To verify the change you can use the method combined - with the event - + - Create a CRC from an InventoryItem - The source InventoryItem - A uint representing the source InventoryItem as a CRC - + + Timer for sending AgentUpdate packets + + + Move agent positive along the X axis + + + Move agent negative along the X axis + + + Move agent positive along the Y axis + + + Move agent negative along the Y axis + + + Move agent positive along the Z axis + + + Move agent negative along the Z axis + + - Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id - Obfuscated shadow_id value - Deobfuscated asset_id value - + - Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id - asset_id value to obfuscate - Obfuscated shadow_id value - + - Wrapper for creating a new object - The type of item from the enum - The of the newly created object - An object with the type and id passed - + - Parse the results of a RequestTaskInventory() response - A string which contains the data from the task reply - A List containing the items contained within the tasks inventory - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - + - UpdateCreateInventoryItem packets are received when a new inventory item - is created. This may occur when an object that's rezzed in world is - taken into inventory, when an item is created using the CreateInventoryItem - packet, or when an object is purchased - The sender - The EventArgs object containing the packet data - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Causes simulator to make agent fly - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Stop movement - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Finish animation - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Stand up from a sit - - Raised when the simulator sends us data containing - ... + + Tells simulator to sit agent on ground - - Raised when the simulator sends us data containing - ... + + Place agent into mouselook mode - - Raised when the simulator sends us data containing - an inventory object sent by another avatar or primitive + + Nudge agent positive along the X axis - - Raised when the simulator sends us data containing - ... + + Nudge agent negative along the X axis - - Raised when the simulator sends us data containing - ... + + Nudge agent positive along the Y axis - - Raised when the simulator sends us data containing - ... + + Nudge agent negative along the Y axis - - Raised when the simulator sends us data containing - ... + + Nudge agent positive along the Z axis - - Raised when the simulator sends us data containing - ... + + Nudge agent negative along the Z axis - + - Get this agents Inventory data - + - Callback for inventory item creation finishing - Whether the request to create an inventory - item succeeded or not - Inventory item being created. If success is - false this will be null - + + Tell simulator to mark agent as away + + - Callback for an inventory item being create from an uploaded asset - true if inventory item creation was successful - - - - + - - - + - Reply received when uploading an inventory asset - Has upload been successful - Error message if upload failed - Inventory asset UUID - New asset UUID - + - Delegate that is invoked when script upload is completed - Has upload succeded (note, there still might be compile errors) - Upload status message - Is compilation successful - If compilation failed, list of error messages, null on compilation success - Script inventory UUID - Script's new asset UUID - - - Set to true to accept offer, false to decline it - - - The folder to accept the inventory into, if null default folder for will be used - + - Callback when an inventory object is accepted and received from a - task inventory. This is the callback in which you actually get - the ItemID, as in ObjectOfferedCallback it is null when received - from a task. + Returns "always run" value, or changes it by sending a SetAlwaysRunPacket - + + The current value of the agent control flags + + + Gets or sets the interval in milliseconds at which + AgentUpdate packets are sent to the current simulator. Setting + this to a non-zero value will also enable the packet sending if + it was previously off, and setting it to zero will disable + + + Gets or sets whether AgentUpdate packets are sent to + the current simulator + + + Reset movement controls every time we send an update + + - Throttles the network traffic for various different traffic types. - Access this class through GridClient.Throttle + Send an AgentUpdate with the camera set at the current agent + position and pointing towards the heading specified + Camera rotation in radians + Whether to send the AgentUpdate reliable + or not - + - Default constructor, uses a default high total of 1500 KBps (1536000) + Rotates the avatar body and camera toward a target position. + This will also anchor the camera position on the avatar + Region coordinates to turn toward - + - Constructor that decodes an existing AgentThrottle packet in to - individual values + Send new AgentUpdate packet to update our current camera + position and rotation - Reference to the throttle data in an AgentThrottle - packet - Offset position to start reading at in the - throttle data - This is generally not needed in clients as the server will - never send a throttle packet to the client - + - Send an AgentThrottle packet to the current server using the - current values + Send new AgentUpdate packet to update our current camera + position and rotation + Whether to require server acknowledgement + of this packet - + - Send an AgentThrottle packet to the specified server using the - current values + Send new AgentUpdate packet to update our current camera + position and rotation + Whether to require server acknowledgement + of this packet + Simulator to send the update to - + - Convert the current throttle values to a byte array that can be put - in an AgentThrottle packet + Builds an AgentUpdate packet entirely from parameters. This + will not touch the state of Self.Movement or + Self.Movement.Camera in any way - Byte array containing all the throttle values + + + + + + + + + + + + + + + + + + + + + + - - Maximum bits per second for resending unacknowledged packets + + + Used to specify movement actions for your agent + - - Maximum bits per second for LayerData terrain + + Empty flag - - Maximum bits per second for LayerData wind data + + Move Forward (SL Keybinding: W/Up Arrow) - - Maximum bits per second for LayerData clouds + + Move Backward (SL Keybinding: S/Down Arrow) - - Unknown, includes object data + + Move Left (SL Keybinding: Shift-(A/Left Arrow)) - - Maximum bits per second for textures + + Move Right (SL Keybinding: Shift-(D/Right Arrow)) - - Maximum bits per second for downloaded assets + + Not Flying: Jump/Flying: Move Up (SL Keybinding: E) - - Maximum bits per second the entire connection, divided up - between invidiual streams using default multipliers + + Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) - - - Level of Detail mesh - + + Unused - - - Sent to the client to indicate a teleport request has completed - + + Unused - + + Unused + + + Unused + + + ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + + Fly + + - Interface requirements for Messaging system - - The of the agent + + Finish our current animation - - + + Stand up from the ground or a prim seat - - The simulators handle the agent teleported to + + Sit on the ground at our current location - - A Uri which contains a list of Capabilities the simulator supports + + Whether mouselook is currently enabled - - Indicates the level of access required - to access the simulator, or the content rating, or the simulators - map status + + Legacy, used if a key was pressed for less than a certain amount of time - - The IP Address of the simulator + + Legacy, used if a key was pressed for less than a certain amount of time - - The UDP Port the simulator will listen for UDP traffic on + + Legacy, used if a key was pressed for less than a certain amount of time - - Status flags indicating the state of the Agent upon arrival, Flying, etc. + + Legacy, used if a key was pressed for less than a certain amount of time - - - Serialize the object - - An containing the objects data + + Legacy, used if a key was pressed for less than a certain amount of time - - - Deserialize the message - - An containing the data + + Legacy, used if a key was pressed for less than a certain amount of time - + - Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. - + - Serialize the object - An containing the objects data - - - Deserialize the message - - An containing the data + + Set when the avatar is idled or set to away. Note that the away animation is + activated separately from setting this flag - + - Serialize the object - An containing the objects data - + - Deserialize the message - An containing the data - + - Serialize the object - An containing the objects data - + - Deserialize the message - An containing the data - + - A message sent to the client which indicates a teleport request has failed - and contains some information on why it failed + Called once attachment resource usage information has been collected + Indicates if operation was successfull + Attachment resource usage information - - + + The event subscribers. null if no subcribers - - A string key of the reason the teleport failed e.g. CouldntTPCloser - Which could be used to look up a value in a dictionary or enum + + Thread sync lock object - - The of the Agent + + The event subscribers. null if no subcribers - - A string human readable message containing the reason - An example: Could not teleport closer to destination + + Thread sync lock object - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers - - - Deserialize the message - - An containing the data + + Thread sync lock object - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers - - - Deserialize the message - - An containing the data + + Thread sync lock object - - - Contains a list of prim owner information for a specific parcel in a simulator - - - A Simulator will always return at least 1 entry - If agent does not have proper permission the OwnerID will be UUID.Zero - If agent does not have proper permission OR there are no primitives on parcel - the DataBlocksExtended map will not be sent from the simulator - + + The event subscribers. null if no subcribers - - An Array of objects + + Thread sync lock object - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers - - - Deserialize the message - - An containing the data + + Thread sync lock object - - - Prim ownership information for a specified owner on a single parcel - + + The event subscribers. null if no subcribers - - The of the prim owner, - UUID.Zero if agent has no permission to view prim owner information + + Thread sync lock object - - The total number of prims + + The event subscribers. null if no subcribers - - True if the OwnerID is a + + Thread sync lock object - - True if the owner is online - This is no longer used by the LL Simulators + + The event subscribers. null if no subcribers - - The date the most recent prim was rezzed + + Thread sync lock object - - - The details of a single parcel in a region, also contains some regionwide globals - + + The event subscribers. null if no subcribers - - Simulator-local ID of this parcel + + Thread sync lock object - - Maximum corner of the axis-aligned bounding box for this - parcel + + The event subscribers. null if no subcribers - - Minimum corner of the axis-aligned bounding box for this - parcel + + Thread sync lock object - - Total parcel land area + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - Key of authorized buyer + + The event subscribers. null if no subcribers - - Bitmap describing land layout in 4x4m squares across the - entire region + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - Date land was claimed + + Thread sync lock object - - Appears to always be zero + + The event subscribers. null if no subcribers - - Parcel Description + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - Total number of primitives owned by the parcel group on - this parcel + + The event subscribers. null if no subcribers - - Whether the land is deeded to a group or not + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - Maximum number of primitives this parcel supports + + Thread sync lock object - - The Asset UUID of the Texture which when applied to a - primitive will display the media + + The event subscribers. null if no subcribers - - A URL which points to any Quicktime supported media type + + Thread sync lock object - - A byte, if 0x1 viewer should auto scale media to fit object + + The event subscribers. null if no subcribers - - URL For Music Stream + + Thread sync lock object - - Parcel Name + + Reference to the GridClient instance - - Autoreturn value in minutes for others' objects + + Used for movement and camera tracking - - + + Currently playing animations for the agent. Can be used to + check the current movement status such as walking, hovering, aiming, + etc. by checking against system animations found in the Animations class - - Total number of other primitives on this parcel + + Dictionary containing current Group Chat sessions and members - - UUID of the owner of this parcel + + Raised when a scripted object or agent within range sends a public message - - Total number of primitives owned by the parcel owner on - this parcel + + Raised when a scripted object sends a dialog box containing possible + options an agent can respond to - - + + Raised when an object requests a change in the permissions an agent has permitted - - How long is pass valid for + + Raised when a script requests an agent open the specified URL - - Price for a temporary pass + + Raised when an agents currency balance is updated - - + + Raised when a transaction occurs involving currency such as a land purchase - - + + Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from + private messaging to friendship offers. The Dialog field defines what type of message has arrived - - + + Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times + for each teleport indicating the progress of the request - - + + Raised when a simulator sends agent specific information for our avatar. - - True if the region denies access to age unverified users + + Raised when our agents animation playlist changes - - + + Raised when an object or avatar forcefully collides with our agent - - This field is no longer used + + Raised when our agent crosses a region border into another region - - The result of a request for parcel properties + + Raised when our agent succeeds or fails to join a group chat session - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it + + Raised when a simulator sends an urgent message usually indication the recent failure of + another action we have attempted to take such as an attempt to enter a parcel where we are denied access - - - Number of primitives your avatar is currently - selecting and sitting on in this parcel - + + Raised when a script attempts to take or release specified controls for our agent - - + + Raised when the simulator detects our agent is trying to view something + beyond its limits - - - A number which increments by 1, starting at 0 for each ParcelProperties request. - Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. - a Negative number indicates the action in has occurred. - + + Raised when a script sensor reply is received from a simulator - - Maximum primitives across the entire simulator + + Raised in response to a request - - Total primitives across the entire simulator + + Raised when an avatar enters a group chat session we are participating in - - + + Raised when an agent exits a group chat session we are participating in - - Key of parcel snapshot + + Your (client) avatars + "client", "agent", and "avatar" all represent the same thing - - Parcel ownership status + + Temporary assigned to this session, used for + verifying our identity in packets - - Total number of primitives on this parcel + + Shared secret that is never sent over the wire - - + + Your (client) avatar ID, local to the current region/sim - - + + Where the avatar started at login. Can be "last", "home" + or a login - - A description of the media - - - An Integer which represents the height of the media + + The access level of this agent, usually M or PG - - An integer which represents the width of the media + + The CollisionPlane of Agent - - A boolean, if true the viewer should loop the media + + An representing the velocity of our agent - - A string which contains the mime type of the media + + An representing the acceleration of our agent - - true to obscure (hide) media url + + A which specifies the angular speed, and axis about which an Avatar is rotating. - - true to obscure (hide) music url + + Position avatar client will goto when login to 'home' or during + teleport request to 'home' region. - - - Serialize the object - - An containing the objects data + + LookAt point saved/restored with HomePosition - - - Deserialize the message - - An containing the data + + Avatar First Name (i.e. Philip) - - A message sent from the viewer to the simulator to updated a specific parcels settings + + Avatar Last Name (i.e. Linden) - - The of the agent authorized to purchase this - parcel of land or a NULL if the sale is authorized to anyone + + Avatar Full Name (i.e. Philip Linden) - - true to enable auto scaling of the parcel media + + Gets the health of the agent - - The category of this parcel used when search is enabled to restrict - search results + + Gets the current balance of the agent - - A string containing the description to set + + Gets the local ID of the prim the agent is sitting on, + zero if the avatar is not currently sitting - - The of the which allows for additional - powers and restrictions. + + Gets the of the agents active group. - - The which specifies how avatars which teleport - to this parcel are handled + + Gets the Agents powers in the currently active group - - The LocalID of the parcel to update settings on + + Current status message for teleporting - - A string containing the description of the media which can be played - to visitors + + Current position of the agent as a relative offset from + the simulator, or the parent object if we are sitting on something - - + + Current rotation of the agent as a relative rotation from + the simulator, or the parent object if we are sitting on something - - + + Current position of the agent in the simulator - - + + + A representing the agents current rotation + - - + + Returns the global grid position of the avatar - - + + Raises the ChatFromSimulator event + A ChatEventArgs object containing the + data returned from the data server - - + + Raises the ScriptDialog event + A SctriptDialogEventArgs object containing the + data returned from the data server - - + + Raises the ScriptQuestion event + A ScriptQuestionEventArgs object containing the + data returned from the data server - - + + Raises the LoadURL event + A LoadUrlEventArgs object containing the + data returned from the data server - - + + Raises the MoneyBalance event + A BalanceEventArgs object containing the + data returned from the data server - - + + Raises the MoneyBalanceReply event + A MoneyBalanceReplyEventArgs object containing the + data returned from the data server - - + + Raises the IM event + A InstantMessageEventArgs object containing the + data returned from the data server - - + + Raises the TeleportProgress event + A TeleportEventArgs object containing the + data returned from the data server - - + + Raises the AgentDataReply event + A AgentDataReplyEventArgs object containing the + data returned from the data server - - + + Raises the AnimationsChanged event + A AnimationsChangedEventArgs object containing the + data returned from the data server - - + + Raises the MeanCollision event + A MeanCollisionEventArgs object containing the + data returned from the data server - - + + Raises the RegionCrossed event + A RegionCrossedEventArgs object containing the + data returned from the data server - - + + Raises the GroupChatJoined event + A GroupChatJoinedEventArgs object containing the + data returned from the data server - - - Deserialize the message - - An containing the data + + Raises the AlertMessage event + A AlertMessageEventArgs object containing the + data returned from the data server - - - Serialize the object - - An containing the objects data + + Raises the ScriptControlChange event + A ScriptControlEventArgs object containing the + data returned from the data server - - Base class used for the RemoteParcelRequest message + + Raises the CameraConstraint event + A CameraConstraintEventArgs object containing the + data returned from the data server - - - A message sent from the viewer to the simulator to request information - on a remote parcel - + + Raises the ScriptSensorReply event + A ScriptSensorReplyEventArgs object containing the + data returned from the data server - - Local sim position of the parcel we are looking up + + Raises the AvatarSitResponse event + A AvatarSitResponseEventArgs object containing the + data returned from the data server - - Region handle of the parcel we are looking up + + Raises the ChatSessionMemberAdded event + A ChatSessionMemberAddedEventArgs object containing the + data returned from the data server - - Region of the parcel we are looking up + + Raises the ChatSessionMemberLeft event + A ChatSessionMemberLeftEventArgs object containing the + data returned from the data server - + - Serialize the object + Send a text message from the Agent to the Simulator - An containing the objects data + A containing the message + The channel to send the message on, 0 is the public channel. Channels above 0 + can be used however only scripts listening on the specified channel will see the message + Denotes the type of message being sent, shout, whisper, etc. - + - Deserialize the message + Request any instant messages sent while the client was offline to be resent. - An containing the data - + - A message sent from the simulator to the viewer in response to a - which will contain parcel information + Send an Instant Message to another Avatar + The recipients + A containing the message to send - - The grid-wide unique parcel ID - - + - Serialize the object + Send an Instant Message to an existing group chat or conference chat - An containing the objects data + The recipients + A containing the message to send + IM session ID (to differentiate between IM windows) - + - Deserialize the message + Send an Instant Message - An containing the data + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + IDs of sessions for a conference - + - A message containing a request for a remote parcel from a viewer, or a response - from the simulator to that request + Send an Instant Message + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + Type of instant message to send + Whether to IM offline avatars as well + Senders Position + RegionID Sender is In + Packed binary data that is specific to + the dialog type - - The request or response details block - - + - Serialize the object + Send an Instant Message to a group - An containing the objects data + + of the group to send message to + Text Message being sent. - + - Deserialize the message + Send an Instant Message to a group the agent is a member of - An containing the data + The name this IM will show up as being from + + of the group to send message to + Text message being sent - + - Serialize the object + Send a request to join a group chat session - An containing the objects data + + of Group to leave - + - Deserialize the message + Exit a group chat session. This will stop further Group chat messages + from being sent until session is rejoined. - An containing the data + + of Group chat session to leave - + - Serialize the object + Reply to script dialog questions. - An containing the objects data + Channel initial request came on + Index of button you're "clicking" + Label of button you're "clicking" + + of Object that sent the dialog request + - + - Deserialize the message + Accept invite for to a chatterbox session - An containing the data + + of session to accept invite to - + - A message sent from the simulator to an agent which contains - the groups the agent is in + Start a friends conference + + List of UUIDs to start a conference with + the temportary session ID returned in the callback> - - The Agent receiving the message - - - An array containing information - for each the agent is a member of - - - An array containing information - for each the agent is a member of - - + - Serialize the object + Start a particle stream between an agent and an object - An containing the objects data + + Key of the source agent + + Key of the target object + + + The type from the enum + A unique for this effect - + - Deserialize the message + Start a particle stream between an agent and an object - An containing the data - - - Group Details specific to the agent - - - true of the agent accepts group notices - - - The agents tier contribution to the group - - - The Groups - - - The of the groups insignia - - - The name of the group - - - The aggregate permissions the agent has in the group for all roles the agent - is assigned - - - An optional block containing additional agent specific information - - - true of the agent allows this group to be - listed in their profile + + Key of the source agent + + Key of the target object + A representing the beams offset from the source + A which sets the avatars lookat animation + + of the Effect - + - A message sent from the viewer to the simulator which - specifies the language and permissions for others to detect - the language specified + Create a particle beam between an avatar and an primitive + The ID of source avatar + The ID of the target primitive + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + - - A string containng the default language - to use for the agent - - - true of others are allowed to - know the language setting - - + - Serialize the object + Create a particle swirl around a target position using a packet - An containing the objects data + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam - + - Deserialize the message + Sends a request to sit on the specified object - An containing the data + + of the object to sit on + Sit at offset - + - An EventQueue message sent from the simulator to an agent when the agent - leaves a group + Follows a call to to actually sit on the object - + + Stands up from sitting on a prim or the ground + true of AgentUpdate was sent + + - An Array containing the AgentID and GroupID + Does a "ground sit" at the avatar's current position - + - Serialize the object + Starts or stops flying - An containing the objects data + True to start flying, false to stop flying - + - Deserialize the message + Starts or stops crouching - An containing the data - - - An object containing the Agents UUID, and the Groups UUID - - - The ID of the Agent leaving the group - - - The GroupID the Agent is leaving - - - Base class for Asset uploads/results via Capabilities + True to start crouching, false to stop crouching - + - The request state + Starts a jump (begin holding the jump key) - + - Serialize the object + Use the autopilot sim function to move the avatar to a new + position. Uses double precision to get precise movements - An containing the objects data + The z value is currently not handled properly by the simulator + Global X coordinate to move to + Global Y coordinate to move to + Z coordinate to move to - + - Deserialize the message + Use the autopilot sim function to move the avatar to a new position - An containing the data + The z value is currently not handled properly by the simulator + Integer value for the global X coordinate to move to + Integer value for the global Y coordinate to move to + Floating-point value for the Z coordinate to move to - + - A message sent from the viewer to the simulator to request a temporary upload capability - which allows an asset to be uploaded + Use the autopilot sim function to move the avatar to a new position + The z value is currently not handled properly by the simulator + Integer value for the local X coordinate to move to + Integer value for the local Y coordinate to move to + Floating-point value for the Z coordinate to move to - - The Capability URL sent by the simulator to upload the baked texture to + + Macro to cancel autopilot sim function + Not certain if this is how it is really done + true if control flags were set and AgentUpdate was sent to the simulator - + - A message sent from the simulator that will inform the agent the upload is complete, - and the UUID of the uploaded asset + Grabs an object + an unsigned integer of the objects ID within the simulator + - - The uploaded texture asset ID - - + - A message sent from the viewer to the simulator to request a temporary - capability URI which is used to upload an agents baked appearance textures + Overload: Grab a simulated object + an unsigned integer of the objects ID within the simulator + + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - - Object containing request or response - - + - Serialize the object + Drag an object - An containing the objects data + + of the object to drag + Drag target in region coordinates - + - Deserialize the message + Overload: Drag an object - An containing the data + + of the object to drag + Drag target in region coordinates + + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - + - A message sent from the simulator which indicates the minimum version required for - using voice chat + Release a grabbed object + The Objects Simulator Local ID + + + - - Major Version Required - - - Minor version required - - - The name of the region sending the version requrements + + + Release a grabbed object + + The Objects Simulator Local ID + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - + - Serialize the object + Touches an object - An containing the objects data + an unsigned integer of the objects ID within the simulator + - + - Deserialize the message + Request the current L$ balance - An containing the data - + - A message sent from the simulator to the viewer containing the - voice server URI + Give Money to destination Avatar + UUID of the Target Avatar + Amount in L$ - - The Parcel ID which the voice server URI applies - - - The name of the region - - - A uri containing the server/channel information - which the viewer can utilize to participate in voice conversations - - + - Serialize the object + Give Money to destination Avatar - An containing the objects data + UUID of the Target Avatar + Amount in L$ + Description that will show up in the + recipients transaction history - + - Deserialize the message + Give L$ to an object - An containing the data + object to give money to + amount of L$ to give + name of object - + - + Give L$ to a group + group to give money to + amount of L$ to give - - - - - - - + - Serialize the object + Give L$ to a group - An containing the objects data + group to give money to + amount of L$ to give + description of transaction - + - Deserialize the message + Pay texture/animation upload fee - An containing the data - + - A message sent by the viewer to the simulator to request a temporary - capability for a script contained with in a Tasks inventory to be updated + Pay texture/animation upload fee + description of the transaction - - Object containing request or response - - + - Serialize the object + Give Money to destination Object or Avatar - An containing the objects data + UUID of the Target Object/Avatar + Amount in L$ + Reason (Optional normally) + The type of transaction + Transaction flags, mostly for identifying group + transactions - + - Deserialize the message + Plays a gesture - An containing the data + Asset of the gesture - + - A message sent from the simulator to the viewer to indicate - a Tasks scripts status. + Mark gesture active + Inventory of the gesture + Asset of the gesture - - The Asset ID of the script - - - True of the script is compiled/ran using the mono interpreter, false indicates it - uses the older less efficient lsl2 interprter - - - The Task containing the scripts - - - true of the script is in a running state - - + - Serialize the object + Mark gesture inactive - An containing the objects data + Inventory of the gesture - + - Deserialize the message + Send an AgentAnimation packet that toggles a single animation on - An containing the data + The of the animation to start playing + Whether to ensure delivery of this packet or not - + - A message containing the request/response used for updating a gesture - contained with an agents inventory + Send an AgentAnimation packet that toggles a single animation off + The of a + currently playing animation to stop playing + Whether to ensure delivery of this packet or not - - Object containing request or response - - + - Serialize the object + Send an AgentAnimation packet that will toggle animations on or off - An containing the objects data + A list of animation s, and whether to + turn that animation on or off + Whether to ensure delivery of this packet or not - + - Deserialize the message + Teleports agent to their stored home location - An containing the data + true on successful teleport to home location - + - A message request/response which is used to update a notecard contained within - a tasks inventory + Teleport agent to a landmark + + of the landmark to teleport agent to + true on success, false on failure - - The of the Task containing the notecard asset to update - - - The notecard assets contained in the tasks inventory - - + - Serialize the object + Attempt to look up a simulator name and teleport to the discovered + destination - An containing the objects data + Region name to look up + Position to teleport to + True if the lookup and teleport were successful, otherwise + false - + - Deserialize the message + Attempt to look up a simulator name and teleport to the discovered + destination - An containing the data + Region name to look up + Position to teleport to + Target to look at + True if the lookup and teleport were successful, otherwise + false - + - A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability - which is used to update an asset in an agents inventory + Teleport agent to another region + handle of region to teleport agent to + + position in destination sim to teleport to + true on success, false on failure + This call is blocking - + - The Notecard AssetID to replace + Teleport agent to another region + handle of region to teleport agent to + + position in destination sim to teleport to + + direction in destination sim agent will look at + true on success, false on failure + This call is blocking - + - Serialize the object + Request teleport to a another simulator - An containing the objects data + handle of region to teleport agent to + + position in destination sim to teleport to - + - Deserialize the message + Request teleport to a another simulator - An containing the data + handle of region to teleport agent to + + position in destination sim to teleport to + + direction in destination sim agent will look at - + - A message containing the request/response used for updating a notecard - contained with an agents inventory + Teleport agent to a landmark + + of the landmark to teleport agent to - - Object containing request or response - - + - Serialize the object + Send a teleport lure to another avatar with default "Join me in ..." invitation message - An containing the objects data + target avatars to lure - + - Deserialize the message + Send a teleport lure to another avatar with custom invitation message - An containing the data + target avatars to lure + custom message to send with invitation - + - Serialize the object + Respond to a teleport lure by either accepting it and initiating + the teleport, or denying it - An containing the objects data + + of the avatar sending the lure + true to accept the lure, false to decline it - + - Deserialize the message + Update agent profile - An containing the data + + struct containing updated + profile information - + - A message sent from the simulator to the viewer which indicates - an error occurred while attempting to update a script in an agents or tasks - inventory + Update agents profile interests + selection of interests from struct - - true of the script was successfully compiled by the simulator - - - A string containing the error which occured while trying - to update the script - - - A new AssetID assigned to the script - - + - A message sent from the viewer to the simulator - requesting the update of an existing script contained - within a tasks inventory + Set the height and the width of the client window. This is used + by the server to build a virtual camera frustum for our avatar + New height of the viewer window + New width of the viewer window - - if true, set the script mode to running - - - The scripts InventoryItem ItemID to update - - - A lowercase string containing either "mono" or "lsl2" which - specifies the script is compiled and ran on the mono runtime, or the older - lsl runtime - - - The tasks which contains the script to update - - + - Serialize the object + Request the list of muted objects and avatars for this agent - An containing the objects data - + - Deserialize the message + Sets home location to agents current position - An containing the data + will fire an AlertMessage () with + success or failure message - + - A message containing either the request or response used in updating a script inside - a tasks inventory + Move an agent in to a simulator. This packet is the last packet + needed to complete the transition in to a new simulator + + Object - - Object containing request or response - - + - Serialize the object + Reply to script permissions request - An containing the objects data + + Object + + of the itemID requesting permissions + + of the taskID requesting permissions + + list of permissions to allow - + - Deserialize the message + Respond to a group invitation by either accepting or denying it - An containing the data + UUID of the group (sent in the AgentID field of the invite message) + IM Session ID from the group invitation message + Accept the group invitation or deny it - + - Response from the simulator to notify the viewer the upload is completed, and - the UUID of the script asset and its compiled status + Requests script detection of objects and avatars + name of the object/avatar to search for + UUID of the object or avatar to search for + Type of search from ScriptSensorTypeFlags + range of scan (96 max?) + the arc in radians to search within + an user generated ID to correlate replies with + Simulator to perform search in - - The uploaded texture asset ID - - - true of the script was compiled successfully - - + - A message sent from a viewer to the simulator requesting a temporary uploader capability - used to update a script contained in an agents inventory + Create or update profile pick + UUID of the pick to update, or random UUID to create a new pick + Is this a top pick? (typically false) + UUID of the parcel (UUID.Zero for the current parcel) + Name of the pick + Global position of the pick landmark + UUID of the image displayed with the pick + Long description of the pick - - The existing asset if of the script in the agents inventory to replace - - - The language of the script - Defaults to lsl version 2, "mono" might be another possible option - - + - Serialize the object + Delete profile pick - An containing the objects data + UUID of the pick to delete - + - Deserialize the message + Create or update profile Classified - An containing the data + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Global position of the classified landmark + Name of the classified + Long description of the classified + if true, auto renew classified after expiration - + - A message containing either the request or response used in updating a script inside - an agents inventory + Create or update profile Classified + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Name of the classified + Long description of the classified + if true, auto renew classified after expiration - - Object containing request or response - - + - Serialize the object + Delete a classified ad - An containing the objects data + The classified ads ID - + - Deserialize the message + Fetches resource usage by agents attachmetns - An containing the data + Called when the requested information is collected - + - Serialize the object + Take an incoming ImprovedInstantMessage packet, auto-parse, and if + OnInstantMessage is defined call that with the appropriate arguments - An containing the objects data + The sender + The EventArgs object containing the packet data - + - Deserialize the message + Take an incoming Chat packet, auto-parse, and if OnChat is defined call + that with the appropriate arguments. - An containing the data - - - Base class for Map Layers via Capabilities - - - + The sender + The EventArgs object containing the packet data - + - Serialize the object + Used for parsing llDialogs - An containing the objects data + The sender + The EventArgs object containing the packet data - + - Deserialize the message + Used for parsing llRequestPermissions dialogs - An containing the data + The sender + The EventArgs object containing the packet data - + - Sent by an agent to the capabilities server to request map layers + Handles Script Control changes when Script with permissions releases or takes a control + The sender + The EventArgs object containing the packet data - + - A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates + Used for parsing llLoadURL Dialogs + The sender + The EventArgs object containing the packet data - - An array containing LayerData items - - + - Serialize the object + Update client's Position, LookAt and region handle from incoming packet - An containing the objects data + The sender + The EventArgs object containing the packet data + This occurs when after an avatar moves into a new sim - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + - Deserialize the message + Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. - An containing the data + The Message Key + An IMessage object Deserialized from the recieved message event + The simulator originating the event message - + - An object containing map location details + Process TeleportFinish from Event Queue and pass it onto our TeleportHandler + The message system key for this event + IMessage object containing decoded data from OSD + The simulator originating the event message - - The Asset ID of the regions tile overlay - - - The grid location of the southern border of the map tile - - - The grid location of the western border of the map tile - - - The grid location of the eastern border of the map tile + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The grid location of the northern border of the map tile + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Object containing request or response + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + - Serialize the object + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. - An containing the objects data + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet - - - Deserialize the message - - An containing the data + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + This packet is now being sent via the EventQueue - + - New as of 1.23 RC1, no details yet. + Group Chat event handler + The capability Key + IMessage object containing decoded data from OSD + + - + - Serialize the object + Response from request to join a group chat - An containing the objects data + + + IMessage object containing decoded data from OSD + + - + - Deserialize the message + Someone joined or left group chat - An containing the data + + + IMessage object containing decoded data from OSD + + - + - Serialize the object + Handle a group chat Invitation - An containing the objects data + Caps Key + IMessage object containing decoded data from OSD + Originating Simulator - + - Deserialize the message + Moderate a chat session - An containing the data + the of the session to moderate, for group chats this will be the groups UUID + the of the avatar to moderate + Either "voice" to moderate users voice, or "text" to moderate users text session + true to moderate (silence user), false to allow avatar to speak - - A string containing the method used + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - A request sent from an agent to the Simulator to begin a new conference. - Contains a list of Agents which will be included in the conference - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - An array containing the of the agents invited to this conference + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The conferences Session ID + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + - Serialize the object - An containing the objects data - + - Deserialize the message + Construct a new instance of the ChatEventArgs object - An containing the data + Sim from which the message originates + The message sent + The audible level of the message + The type of message sent: whisper, shout, etc + The source type of the message sender + The name of the agent or object sending the message + The ID of the agent or object sending the message + The ID of the object owner, or the agent ID sending the message + The position of the agent or object sending the message - - - A moderation request sent from a conference moderator - Contains an agent and an optional action to take - + + Get the simulator sending the message - - The Session ID + + Get the message sent - - + + Get the audible level of the message - - A list containing Key/Value pairs, known valid values: - key: text value: true/false - allow/disallow specified agents ability to use text in session - key: voice value: true/false - allow/disallow specified agents ability to use voice in session - - "text" or "voice" + + Get the type of message sent: whisper, shout, etc - - + + Get the source type of the message sender - - - Serialize the object - - An containing the objects data + + Get the name of the agent or object sending the message - - - Deserialize the message - - An containing the data + + Get the ID of the agent or object sending the message - - - A message sent from the agent to the simulator which tells the - simulator we've accepted a conference invitation - + + Get the ID of the object owner, or the agent ID sending the message - - The conference SessionID + + Get the position of the agent or object sending the message - - - Serialize the object - - An containing the objects data + + Contains the data sent when a primitive opens a dialog with this agent - + - Deserialize the message + Construct a new instance of the ScriptDialogEventArgs - An containing the data + The dialog message + The name of the object that sent the dialog request + The ID of the image to be displayed + The ID of the primitive sending the dialog + The first name of the senders owner + The last name of the senders owner + The communication channel the dialog was sent on + The string labels containing the options presented in this dialog - - - Serialize the object - - An containing the objects data + + Get the dialog message - - - Deserialize the message - - An containing the data + + Get the name of the object that sent the dialog request - - - Serialize the object - - An containing the objects data + + Get the ID of the image to be displayed - - - Deserialize the message - - An containing the data + + Get the ID of the primitive sending the dialog - - - Serialize the object - - An containing the objects data + + Get the first name of the senders owner - + + Get the last name of the senders owner + + + Get the communication channel the dialog was sent on, responses + should also send responses on this same channel + + + Get the string labels containing the options presented in this dialog + + + Contains the data sent when a primitive requests debit or other permissions + requesting a YES or NO answer + + - Deserialize the message + Construct a new instance of the ScriptQuestionEventArgs - An containing the data + The simulator containing the object sending the request + The ID of the script making the request + The ID of the primitive containing the script making the request + The name of the primitive making the request + The name of the owner of the object making the request + The permissions being requested - - Key of sender + + Get the simulator containing the object sending the request - - Name of sender + + Get the ID of the script making the request - - Key of destination avatar + + Get the ID of the primitive containing the script making the request - - ID of originating estate + + Get the name of the primitive making the request - - Key of originating region + + Get the name of the owner of the object making the request - - Coordinates in originating region + + Get the permissions being requested - - Instant message type + + Contains the data sent when a primitive sends a request + to an agent to open the specified URL - - Group IM session toggle + + + Construct a new instance of the LoadUrlEventArgs + + The name of the object sending the request + The ID of the object sending the request + The ID of the owner of the object sending the request + True if the object is owned by a group + The message sent with the request + The URL the object sent - - Key of IM session, for Group Messages, the groups UUID + + Get the name of the object sending the request - - Timestamp of the instant message + + Get the ID of the object sending the request - - Instant message text + + Get the ID of the owner of the object sending the request - - Whether this message is held for offline avatars + + True if the object is owned by a group - - Context specific packed data + + Get the message sent with the request - - Is this invitation for voice group/conference chat + + Get the URL the object sent - - - Serialize the object - - An containing the objects data + + The date received from an ImprovedInstantMessage - + - Deserialize the message + Construct a new instance of the InstantMessageEventArgs object - An containing the data + the InstantMessage object + the simulator where the InstantMessage origniated - - - Sent from the simulator to the viewer. - - When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including - a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate - this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" - - During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are - excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with - the string "ENTER" or "LEAVE" respectively. - + + Get the InstantMessage object - - - Serialize the object - - An containing the objects data + + Get the simulator where the InstantMessage origniated - - - Deserialize the message - - An containing the data + + Contains the currency balance - + - An EventQueue message sent when the agent is forcibly removed from a chatterbox session + Construct a new BalanceEventArgs object + The currenct balance - + - A string containing the reason the agent was removed + Get the currenct balance - - - The ChatterBoxSession's SessionID - + + Contains the transaction summary when an item is purchased, + money is given, or land is purchased - + - Serialize the object + Construct a new instance of the MoneyBalanceReplyEventArgs object - An containing the objects data + The ID of the transaction + True of the transaction was successful + The current currency balance + The meters credited + The meters comitted + A brief description of the transaction - - - Deserialize the message - - An containing the data + + Get the ID of the transaction - - - Serialize the object - - An containing the objects data + + True of the transaction was successful - - - Deserialize the message - - An containing the data + + Get the remaining currency balance - - - Serialize the object - - An containing the objects data + + Get the meters credited - - - Deserialize the message - - An containing the data + + Get the meters comitted - - - Serialize the object - - An containing the objects data + + Get the description of the transaction - - - Deserialize the message - - An containing the data + + Data sent from the simulator containing information about your agent and active group information - + - Serialize the object + Construct a new instance of the AgentDataReplyEventArgs object - An containing the objects data + The agents first name + The agents last name + The agents active group ID + The group title of the agents active group + The combined group powers the agent has in the active group + The name of the group the agent has currently active - - - Deserialize the message - - An containing the data + + Get the agents first name - - - - + + Get the agents last name - - - Serialize the object - - An containing the objects data + + Get the active group ID of your agent - - - Deserialize the message - - An containing the data + + Get the active groups title of your agent - - - Serialize the object - - An containing the objects data + + Get the combined group powers of your agent - - - Deserialize the message - - An containing the data + + Get the active group name of your agent - - - Serialize the object - - An containing the objects data + + Data sent by the simulator to indicate the active/changed animations + applied to your agent - + - Deserialize the message + Construct a new instance of the AnimationsChangedEventArgs class - An containing the data + The dictionary that contains the changed animations - - - A message sent from the viewer to the simulator which - specifies that the user has changed current URL - of the specific media on a prim face - + + Get the dictionary that contains the changed animations - + - New URL + Data sent from a simulator indicating a collision with your agent - + - Prim UUID where navigation occured + Construct a new instance of the MeanCollisionEventArgs class + The type of collision that occurred + The ID of the agent or object that perpetrated the agression + The ID of the Victim + The strength of the collision + The Time the collision occurred - - - Face index - + + Get the Type of collision - - - Serialize the object - - An containing the objects data + + Get the ID of the agent or object that collided with your agent - - - Deserialize the message - - An containing the data + + Get the ID of the agent that was attacked - - Base class used for the ObjectMedia message + + A value indicating the strength of the collision - - - Message used to retrive prim media data - + + Get the time the collision occurred - - - Prim UUID - + + Data sent to your agent when it crosses region boundaries - + - Requested operation, either GET or UPDATE + Construct a new instance of the RegionCrossedEventArgs class + The simulator your agent just left + The simulator your agent is now in - - - Serialize object - - Serialized object as OSDMap + + Get the simulator your agent just left - - - Deserialize the message - - An containing the data + + Get the simulator your agent is now in - - - Message used to update prim media data - + + Data sent from the simulator when your agent joins a group chat session - + - Prim UUID + Construct a new instance of the GroupChatJoinedEventArgs class + The ID of the session + The name of the session + A temporary session id used for establishing new sessions + True of your agent successfully joined the session - + + Get the ID of the group chat session + + + Get the name of the session + + + Get the temporary session ID used for establishing new sessions + + + True if your agent successfully joined the session + + + Data sent by the simulator containing urgent messages + + - Array of media entries indexed by face number + Construct a new instance of the AlertMessageEventArgs class + The alert message - + + Get the alert message + + + Data sent by a script requesting to take or release specified controls to your agent + + - Media version string + Construct a new instance of the ScriptControlEventArgs class + The controls the script is attempting to take or release to the agent + True if the script is passing controls back to the agent + True if the script is requesting controls be released to the script - + + Get the controls the script is attempting to take or release to the agent + + + True if the script is passing controls back to the agent + + + True if the script is requesting controls be released to the script + + - Serialize object + Data sent from the simulator to an agent to indicate its view limits - Serialized object as OSDMap - + - Deserialize the message + Construct a new instance of the CameraConstraintEventArgs class - An containing the data + The collision plane - + + Get the collision plane + + - Message used to update prim media data + Data containing script sensor requests which allow an agent to know the specific details + of a primitive sending script sensor requests - + - Prim UUID - - - - - Array of media entries indexed by face number - - - - - Requested operation, either GET or UPDATE - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message for setting or getting per face MediaEntry + Construct a new instance of the ScriptSensorReplyEventArgs + The ID of the primitive sending the sensor + The ID of the group associated with the primitive + The name of the primitive sending the sensor + The ID of the primitive sending the sensor + The ID of the owner of the primitive sending the sensor + The position of the primitive sending the sensor + The range the primitive specified to scan + The rotation of the primitive sending the sensor + The type of sensor the primitive sent + The velocity of the primitive sending the sensor - - The request or response details block + + Get the ID of the primitive sending the sensor - - - Serialize the object - - An containing the objects data + + Get the ID of the group associated with the primitive - - - Deserialize the message - - An containing the data + + Get the name of the primitive sending the sensor - - Details about object resource usage + + Get the ID of the primitive sending the sensor - - Object UUID + + Get the ID of the owner of the primitive sending the sensor - - Object name + + Get the position of the primitive sending the sensor - - Indicates if object is group owned + + Get the range the primitive specified to scan - - Locatio of the object + + Get the rotation of the primitive sending the sensor - - Object owner + + Get the type of sensor the primitive sent - - Resource usage, keys are resource names, values are resource usage for that specific resource + + Get the velocity of the primitive sending the sensor - - - Deserializes object from OSD - - An containing the data + + Contains the response data returned from the simulator in response to a - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data + + Construct a new instance of the AvatarSitResponseEventArgs object - - Details about parcel resource usage + + Get the ID of the primitive the agent will be sitting on - - Parcel UUID + + True if the simulator Autopilot functions were involved - - Parcel local ID + + Get the camera offset of the agent when seated - - Parcel name + + Get the camera eye offset of the agent when seated - - Indicates if parcel is group owned + + True of the agent will be in mouselook mode when seated - - Parcel owner + + Get the position of the agent when seated - - Array of containing per object resource usage + + Get the rotation of the agent when seated - - - Deserializes object from OSD - - An containing the data + + Data sent when an agent joins a chat session your agent is currently participating in - + - Makes an instance based on deserialized data + Construct a new instance of the ChatSessionMemberAddedEventArgs object - serialized data - Instance containg deserialized data - - - Resource usage base class, both agent and parcel resource - usage contains summary information + The ID of the chat session + The ID of the agent joining - - Summary of available resources, keys are resource names, - values are resource usage for that specific resource + + Get the ID of the chat session - - Summary resource usage, keys are resource names, - values are resource usage for that specific resource + + Get the ID of the agent that joined - - - Serializes object - - serialized data + + Data sent when an agent exits a chat session your agent is currently participating in - + - Deserializes object from OSD + Construct a new instance of the ChatSessionMemberLeftEventArgs object - An containing the data + The ID of the chat session + The ID of the Agent that left - - Agent resource usage + + Get the ID of the chat session - - Per attachment point object resource usage + + Get the ID of the agent that left - + - Deserializes object from OSD + Throttles the network traffic for various different traffic types. + Access this class through GridClient.Throttle - An containing the data - + - Makes an instance based on deserialized data + Default constructor, uses a default high total of 1500 KBps (1536000) - serialized data - Instance containg deserialized data - + - Detects which class handles deserialization of this message + Constructor that decodes an existing AgentThrottle packet in to + individual values - An containing the data - Object capable of decoding this message + Reference to the throttle data in an AgentThrottle + packet + Offset position to start reading at in the + throttle data + This is generally not needed in clients as the server will + never send a throttle packet to the client - - Request message for parcel resource usage + + Maximum bits per second for resending unacknowledged packets - - UUID of the parel to request resource usage info + + Maximum bits per second for LayerData terrain - - - Serializes object - - serialized data + + Maximum bits per second for LayerData wind data - - - Deserializes object from OSD - - An containing the data + + Maximum bits per second for LayerData clouds - - Response message for parcel resource usage + + Unknown, includes object data - - URL where parcel resource usage details can be retrieved + + Maximum bits per second for textures - - URL where parcel resource usage summary can be retrieved + + Maximum bits per second for downloaded assets - - - Serializes object - - serialized data + + Maximum bits per second the entire connection, divided up + between invidiual streams using default multipliers - + - Deserializes object from OSD + Send an AgentThrottle packet to the current server using the + current values - An containing the data - + - Detects which class handles deserialization of this message + Send an AgentThrottle packet to the specified server using the + current values - An containing the data - Object capable of decoding this message - - - Parcel resource usage - - - Array of containing per percal resource usage - + - Deserializes object from OSD + Convert the current throttle values to a byte array that can be put + in an AgentThrottle packet - An containing the data + Byte array containing all the throttle values - + - Abstract base for rendering plugins + Static pre-defined animations available to all agents - - - Generates a basic mesh structure from a primitive - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh + + Agent with afraid expression on face - - - Generates a basic mesh structure from a sculpted primitive and - texture - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh + + Agent aiming a bazooka (right handed) - - - Generates a series of faces, each face containing a mesh and - metadata - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh + + Agent aiming a bow (left handed) - - - Generates a series of faces for a sculpted prim, each face - containing a mesh and metadata - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh + + Agent aiming a hand gun (right handed) - - - Apply texture coordinate modifications from a - to a list of vertices - - Vertex list to modify texture coordinates for - Center-point of the face - Face texture parameters + + Agent aiming a rifle (right handed) - - - Capability to load TGAs to Bitmap - + + Agent with angry expression on face - - - Represents a Wearable Asset, Clothing, Hair, Skin, Etc - + + Agent hunched over (away) - - A string containing the name of the asset + + Agent doing a backflip - - A string containing a short description of the asset + + Agent laughing while holding belly - - The Assets WearableType + + Agent blowing a kiss - - The For-Sale status of the object + + Agent with bored expression on face - - An Integer representing the purchase price of the asset + + Agent bowing to audience - - The of the assets creator + + Agent brushing himself/herself off - - The of the assets current owner + + Agent in busy mode - - The of the assets prior owner + + Agent clapping hands - - The of the Group this asset is set to + + Agent doing a curtsey bow - - True if the asset is owned by a + + Agent crouching - - The Permissions mask of the asset + + Agent crouching while walking - - A Dictionary containing Key/Value pairs of the objects parameters + + Agent crying - - A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures + + Agent unanimated with arms out (e.g. setting appearance) - - Initializes a new instance of an AssetWearable object + + Agent re-animated after set appearance finished - - Initializes a new instance of an AssetWearable object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + Agent dancing - - - Decode an assets byte encoded data to a string - - true if the asset data was decoded successfully + + Agent dancing - - - Encode the assets string represantion into a format consumable by the asset server - + + Agent dancing - - - The InternalDictionary class is used through the library for storing key/value pairs. - It is intended to be a replacement for the generic Dictionary class and should - be used in its place. It contains several methods for allowing access to the data from - outside the library that are read only and thread safe. - - - Key - Value + + Agent dancing - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - on this member + + Agent dancing - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); - - + + Agent dancing - - - Initializes a new instance of the Class - with the specified key/value, has its initial valies copied from the specified - - - - to copy initial values from - - - // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. - // populates with copied values from example KeyNameCache Dictionary. - - // create source dictionary - Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); - KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); - KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); - - // Initialize new dictionary. - public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); - - + + Agent dancing - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); - - + + Agent dancing - - - Try to get entry from with specified key - - Key to use for lookup - Value returned - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - + + Agent on ground unanimated - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - + + Agent boozing it up - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - + + Agent with embarassed expression on face - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - + + Agent with afraid expression on face - - Perform an on each entry in an - to perform - - - // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. - Client.Network.CurrentSim.ObjectsPrimitives.ForEach( - delegate(Primitive prim) - { - if (prim.Text != null) - { - Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", - prim.PropertiesFamily.Name, prim.ID, prim.Text); - } - }); - - + + Agent with angry expression on face - - Perform an on each key of an - to perform + + Agent with bored expression on face - - - Perform an on each KeyValuePair of an - - to perform + + Agent crying - - Check if Key exists in Dictionary - Key to check for - if found, otherwise + + Agent showing disdain (dislike) for something - - Check if Value exists in Dictionary - Value to check for - if found, otherwise + + Agent with embarassed expression on face - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - - The key - The value + + Agent with frowning expression on face - - - Removes the specified key, dictionary locking is not performed - - The key. - if successful, otherwise + + Agent with kissy face - - - Gets the number of Key/Value pairs contained in the - - - - - Indexer for the dictionary - - The key - The value - - - - Temporary code to produce a tar archive in tar v7 format - - - - - Binary writer for the underlying stream - + + Agent expressing laughgter - - - Write a directory entry to the tar archive. We can only handle one path level right now! - - + + Agent with open mouth - - - Write a file to the tar archive - - - + + Agent with repulsed expression on face - - - Write a file to the tar archive - - - + + Agent expressing sadness - - - Finish writing the raw tar archive data to a stream. The stream will be closed on completion. - + + Agent shrugging shoulders - - - Write a particular entry - - - - + + Agent with a smile - - - Temporary code to do the bare minimum required to read a tar archive for our purposes - + + Agent expressing surprise - - - Binary reader for the underlying stream - + + Agent sticking tongue out - - - Used to trim off null chars - + + Agent with big toothy smile - - - Used to trim off space chars - + + Agent winking - - - Generate a tar reader which reads from the given stream. - - + + Agent expressing worry - - - Read the next entry in the tar file. - - - - the data for the entry. Returns null if there are no more entries + + Agent falling down - - - Read the next 512 byte chunk of data as a tar header. - - A tar header struct. null if we have reached the end of the archive. + + Agent walking (feminine version) - - - Read data following a header - - - + + Agent wagging finger (disapproval) - - - Convert octal bytes to a decimal representation - - - - - + + I'm not sure I want to know - - - The current status of a texture request as it moves through the pipeline or final result of a texture request. - + + Agent in superman position - - The initial state given to a request. Requests in this state - are waiting for an available slot in the pipeline + + Agent in superman position - - A request that has been added to the pipeline and the request packet - has been sent to the simulator + + Agent greeting another - - A request that has received one or more packets back from the simulator + + Agent holding bazooka (right handed) - - A request that has received all packets back from the simulator + + Agent holding a bow (left handed) - - A request that has taken longer than - to download OR the initial packet containing the packet information was never received + + Agent holding a handgun (right handed) - - The texture request was aborted by request of the agent + + Agent holding a rifle (right handed) - - The simulator replied to the request that it was not able to find the requested texture + + Agent throwing an object (right handed) - - - A callback fired to indicate the status or final state of the requested texture. For progressive - downloads this will fire each time new asset data is returned from the simulator. - - The indicating either Progress for textures not fully downloaded, - or the final result of the request after it has been processed through the TexturePipeline - The object containing the Assets ID, raw data - and other information. For progressive rendering the will contain - the data from the beginning of the file. For failed, aborted and timed out requests it will contain - an empty byte array. + + Agent in static hover - - - Texture request download handler, allows a configurable number of download slots which manage multiple - concurrent texture downloads from the - - This class makes full use of the internal - system for full texture downloads. + + Agent hovering downward - - A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID - and also the Asset Texture ID, and the value is an object containing the current state of the request and also - the asset data as it is being re-assembled + + Agent hovering upward - - Holds the reference to the client object + + Agent being impatient - - Maximum concurrent texture requests allowed at a time + + Agent jumping - - An array of objects used to manage worker request threads + + Agent jumping with fervor - - An array of worker slots which shows the availablity status of the slot + + Agent point to lips then rear end - - The primary thread which manages the requests. + + Agent landing from jump, finished flight, etc - - true if the TexturePipeline is currently running + + Agent laughing - - A synchronization object used by the primary thread + + Agent landing from jump, finished flight, etc - - A refresh timer used to increase the priority of stalled requests + + Agent sitting on a motorcycle - + - Default constructor, Instantiates a new copy of the TexturePipeline class - Reference to the instantiated object - - - Initialize callbacks required for the TexturePipeline to operate - + + Agent moving head side to side - - - Shutdown the TexturePipeline and cleanup any callbacks or transfers - + + Agent moving head side to side with unhappy expression - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request + + Agent taunting another - + - Sends the actual request packet to the simulator - The image to download - Type of the image to download, either a baked - avatar texture or a normal texture - Priority level of the download. Default is - 1,013,000.0f - Number of quality layers to discard. - This controls the end marker of the data sent - Packet number to start the download at. - This controls the start marker of the data sent - Sending a priority of 0 and a discardlevel of -1 aborts - download - - - Cancel a pending or in process texture request - - The texture assets unique ID + + Agent giving peace sign - - - Master Download Thread, Queues up downloads in the threadpool - + + Agent pointing at self - - - The worker thread that sends the request and handles timeouts - - A object containing the request details + + Agent pointing at another - - - Handle responses from the simulator that tell us a texture we have requested is unable to be located - or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use - - The sender - The EventArgs object containing the packet data + + Agent preparing for jump (bending knees) - - - Handles the remaining Image data that did not fit in the initial ImageData packet - - The sender - The EventArgs object containing the packet data + + Agent punching with left hand - - - Handle the initial ImageDataPacket sent from the simulator - - The sender - The EventArgs object containing the packet data + + Agent punching with right hand - - Current number of pending and in-process transfers + + Agent acting repulsed - - - A request task containing information and status of a request as it is processed through the - + + Agent trying to be Chuck Norris - - The current which identifies the current status of the request + + Rocks, Paper, Scissors 1, 2, 3 - - The Unique Request ID, This is also the Asset ID of the texture being requested + + Agent with hand flat over other hand - - The slot this request is occupying in the threadpoolSlots array + + Agent with fist over other hand - - The ImageType of the request. + + Agent with two fingers spread over other hand - - The callback to fire when the request is complete, will include - the and the - object containing the result data + + Agent running - - If true, indicates the callback will be fired whenever new data is returned from the simulator. - This is used to progressively render textures as portions of the texture are received. + + Agent appearing sad - - An object that maintains the data of an request thats in-process. + + Agent saluting - - X position of this patch + + Agent shooting bow (left handed) - - Y position of this patch + + Agent cupping mouth as if shouting - - A 16x16 array of floats holding decompressed layer data + + Agent shrugging shoulders - - - Creates a LayerData packet for compressed land data given a full - simulator heightmap and an array of indices of patches to compress - - A 256 * 256 array of floating point values - specifying the height at each meter in the simulator - Array of indexes in the 16x16 grid of patches - for this simulator. For example if 1 and 17 are specified, patches - x=1,y=0 and x=1,y=1 are sent - + + Agent in sit position - - - Add a patch of terrain to a BitPacker - - BitPacker to write the patch to - Heightmap of the simulator, must be a 256 * - 256 float array - X offset of the patch to create, valid values are - from 0 to 15 - Y offset of the patch to create, valid values are - from 0 to 15 + + Agent in sit position (feminine) - + + Agent in sit position (generic) + + + Agent sitting on ground + + + Agent sitting on ground + + - - + + Agent sleeping on side + + + Agent smoking + + + Agent inhaling smoke + + - - - + + Agent taking a picture - - + + Agent standing - - + + Agent standing up - - + + Agent standing - - + + Agent standing - - + + Agent standing - - - - + + Agent standing - - - - + + Agent stretching - - - Initialize the UDP packet handler in server mode - - Port to listening for incoming UDP packets on + + Agent in stride (fast walk) - - - Initialize the UDP packet handler in client mode - - Remote UDP server to connect to + + Agent surfing - - - - + + Agent acting surprised - - - - + + Agent striking with a sword - - - - + + Agent talking (lips moving) - - - Type of return to use when returning objects from a parcel - + + Agent throwing a tantrum - - + + Agent throwing an object (right handed) - - Return objects owned by parcel owner + + Agent trying on a shirt - - Return objects set to group + + Agent turning to the left - - Return objects not owned by parcel owner or set to group + + Agent turning to the right - - Return a specific list of objects on parcel + + Agent typing - - Return objects that are marked for-sale + + Agent walking - - - Blacklist/Whitelist flags used in parcels Access List - + + Agent whispering - - Agent is denied access + + Agent whispering with fingers in mouth - - Agent is granted access + + Agent winking - - - The result of a request for parcel properties - + + Agent winking - - No matches were found for the request + + Agent worried - - Request matched a single parcel + + Agent nodding yes - - Request matched multiple parcels + + Agent nodding yes with happy face - + + Agent floating with legs and arms crossed + + - Flags used in the ParcelAccessListRequest packet to specify whether - we want the access list (whitelist), ban list (blacklist), or both + A dictionary containing all pre-defined animations + A dictionary containing the pre-defined animations, + where the key is the animations ID, and the value is a string + containing a name to identify the purpose of the animation - - Request the access list + + + Index of TextureEntry slots for avatar appearances + - - Request the ban list - - - Request both White and Black lists - - + - Sequence ID in ParcelPropertiesReply packets (sent when avatar - tries to cross a parcel border) + Bake layers for avatar appearance - - Parcel is currently selected - - - Parcel restricted to a group the avatar is not a - member of - - - Avatar is banned from the parcel - - - Parcel is restricted to an access list that the - avatar is not on - - - Response to hovering over a parcel - - + - The tool to use when modifying terrain levels + Default constructor + A reference to our agent - - Level the terrain + + + Contains information about a wearable inventory item + - - Raise the terrain + + Inventory ItemID of the wearable - - Lower the terrain + + AssetID of the wearable asset - - Smooth the terrain + + WearableType of the wearable - - Add random noise to the terrain + + AssetType of the wearable - - Revert terrain to simulator default + + Asset data for the wearable - + - The tool size to use when changing terrain levels + Data collected from visual params for each wearable + needed for the calculation of the color - - Small - - - Medium - - - Large - - + - Reasons agent is denied access to a parcel on the simulator + Holds a texture assetID and the data needed to bake this layer into + an outfit texture. Used to keep track of currently worn textures + and baking data - - Agent is not denied, access is granted + + A texture AssetID - - Agent is not a member of the group set for the parcel, or which owns the parcel + + Asset data for the texture - - Agent is not on the parcels specific allow list + + Collection of alpha masks that needs applying - - Agent is on the parcels ban list + + Tint that should be applied to the texture - - Unknown + + Maximum number of concurrent downloads for wearable assets and textures - - Agent is not age verified and parcel settings deny access to non age verified avatars + + Maximum number of concurrent uploads for baked textures - - - Parcel overlay type. This is used primarily for highlighting and - coloring which is why it is a single integer instead of a set of - flags - - These values seem to be poorly thought out. The first three - bits represent a single value, not flags. For example Auction (0x05) is - not a combination of OwnedByOther (0x01) and ForSale(0x04). However, - the BorderWest and BorderSouth values are bit flags that get attached - to the value stored in the first three bits. Bits four, five, and six - are unused + + Timeout for fetching inventory listings - - Public land + + Timeout for fetching a single wearable, or receiving a single packet response - - Land is owned by another avatar + + Timeout for fetching a single texture - - Land is owned by a group + + Timeout for uploading a single baked texture - - Land is owned by the current avatar + + Number of times to retry bake upload - - Land is for sale + + When changing outfit, kick off rebake after + 20 seconds has passed since the last change - - Land is being auctioned + + Total number of wearables for each avatar - - To the west of this area is a parcel border + + Total number of baked textures on each avatar - - To the south of this area is a parcel border + + Total number of wearables per bake layer - - - Various parcel properties - + + Total number of textures on an avatar, baked or not - - No flags set + + Mapping between BakeType and AvatarTextureIndex - - Allow avatars to fly (a client-side only restriction) + + Map of what wearables are included in each bake - - Allow foreign scripts to run + + Magic values to finalize the cache check hashes for each + bake - - This parcel is for sale + + Default avatar texture, used to detect when a custom + texture is not set for a face - - Allow avatars to create a landmark on this parcel + + The event subscribers. null if no subcribers - - Allows all avatars to edit the terrain on this parcel + + Thread sync lock object - - Avatars have health and can take damage on this parcel. - If set, avatars can be killed and sent home here + + The event subscribers. null if no subcribers - - Foreign avatars can create objects here + + Thread sync lock object - - All objects on this parcel can be purchased + + The event subscribers. null if no subcribers - - Access is restricted to a group + + Thread sync lock object - - Access is restricted to a whitelist + + The event subscribers. null if no subcribers - - Ban blacklist is enabled + + Thread sync lock object - - Unknown + + A cache of wearables currently being worn - - List this parcel in the search directory + + A cache of textures currently being worn - - Allow personally owned parcels to be deeded to group + + Incrementing serial number for AgentCachedTexture packets - - If Deeded, owner contributes required tier to group parcel is deeded to + + Incrementing serial number for AgentSetAppearance packets - - Restrict sounds originating on this parcel to the - parcel boundaries + + Indicates whether or not the appearance thread is currently + running, to prevent multiple appearance threads from running + simultaneously - - Objects on this parcel are sold when the land is - purchsaed + + Reference to our agent - - Allow this parcel to be published on the web + + + Timer used for delaying rebake on changing outfit + - - The information for this parcel is mature content + + + Main appearance thread + - - The media URL is an HTML page + + Triggered when an AgentWearablesUpdate packet is received, + telling us what our avatar is currently wearing + request. - - The media URL is a raw HTML string + + Raised when an AgentCachedTextureResponse packet is + received, giving a list of cached bakes that were found on the + simulator + request. - - Restrict foreign object pushes + + + Raised when appearance data is sent to the simulator, also indicates + the main appearance thread is finished. + + request. + + + Triggered when the simulator requests the agent rebake its appearance. + + - - Ban all non identified/transacted avatars + + + Returns true if AppearanceManager is busy and trying to set or change appearance will fail + - - Allow group-owned scripts to run + + Raises the AgentWearablesReply event + An AgentWearablesReplyEventArgs object containing the + data returned from the data server - - Allow object creation by group members or group - objects + + Raises the CachedBakesReply event + An AgentCachedBakesReplyEventArgs object containing the + data returned from the data server AgentCachedTextureResponse - - Allow all objects to enter this parcel + + Raises the AppearanceSet event + An AppearanceSetEventArgs object indicating if the operatin was successfull - - Only allow group and owner objects to enter this parcel + + Raises the RebakeAvatarRequested event + An RebakeAvatarTexturesEventArgs object containing the + data returned from the data server - - Voice Enabled on this parcel + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + - - Use Estate Voice channel for Voice on this parcel + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + Unused parameter - - Deny Age Unverified Users + + + Starts the appearance setting thread + - + - Parcel ownership status + Starts the appearance setting thread + True to force rebaking, otherwise false - - Placeholder + + + Ask the server what textures our agent is currently wearing + - - Parcel is leased (owned) by an avatar or group + + + Build hashes out of the texture assetIDs for each baking layer to + ask the simulator whether it has cached copies of each baked texture + - - Parcel is in process of being leased (purchased) by an avatar or group + + + Returns the AssetID of the asset that is currently being worn in a + given WearableType slot + + WearableType slot to get the AssetID for + The UUID of the asset being worn in the given slot, or + UUID.Zero if no wearable is attached to the given slot or wearables + have not been downloaded yet - - Parcel has been abandoned back to Governor Linden + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit - + - Category parcel is listed in under search + Add a list of wearables to the current outfit and set appearance + List of wearable inventory items to + be added to the outfit - - No assigned category + + + Remove a wearable from the current outfit and set appearance + + Wearable to be removed from the outfit - - Linden Infohub or public area + + + Removes a list of wearables from the current outfit and set appearance + + List of wearable inventory items to + be removed from the outfit - - Adult themed area + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit - - Arts and Culture + + + Checks if an inventory item is currently being worn + + The inventory item to check against the agent + wearables + The WearableType slot that the item is being worn in, + or WearbleType.Invalid if it is not currently being worn - - Business + + + Returns a copy of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time - - Educational + + + Calls either or + depending on the value of + replaceItems + + List of wearable inventory items to add + to the outfit or become a new outfit + True to replace existing items with the + new list of items, false to add these items to the existing outfit - - Gaming + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + first - - Hangout or Club + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + to attach the item to - - Newcomer friendly + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + to attach the item to - - Parks and Nature + + + Detach an item from our agent using an object + + An object - - Residential + + + Detach an item from our agent + + The inventory itemID of the item to detach - - Shopping + + + Inform the sim which wearables are part of our current outfit + - - Not Used? + + + Replaces the Wearables collection with a list of new wearable items + + Wearable items to replace the Wearables collection with - - Other + + + Calculates base color/tint for a specific wearable + based on its params + + All the color info gathered from wearable's VisualParams + passed as list of ColorParamInfo tuples + Base color/tint for the wearable - - Not an actual category, only used for queries + + + Blocking method to populate the Wearables dictionary + + True on success, otherwise false - + - Type of teleport landing for a parcel + Blocking method to populate the Textures array with cached bakes + True on success, otherwise false - - Unset, simulator default + + + Populates textures and visual params from a decoded asset + + Wearable to decode - - Specific landing point set for this parcel + + + Blocking method to download and parse currently worn wearable assets + + True on success, otherwise false - - No landing point set, direct teleports enabled for - this parcel + + + Get a list of all of the textures that need to be downloaded for a + single bake layer + + Bake layer to get texture AssetIDs for + A list of texture AssetIDs to download - + - Parcel Media Command used in ParcelMediaCommandMessage + Helper method to lookup the TextureID for a single layer and add it + to a list if it is not already present + + + + - - Stop the media stream and go back to the first frame - - - Pause the media stream (stop playing but stay on current frame) - - - Start the current media stream playing and stop when the end is reached - - - Start the current media stream playing, - loop to the beginning when the end is reached and continue to play - - - Specifies the texture to replace with video - If passing the key of a texture, it must be explicitly typecast as a key, - not just passed within double quotes. - - - Specifies the movie URL (254 characters max) + + + Blocking method to download all of the textures needed for baking + the given bake layers + + A list of layers that need baking + No return value is given because the baking will happen + whether or not all textures are successfully downloaded - - Specifies the time index at which to begin playing + + + Blocking method to create and upload baked textures for all of the + missing bakes + + True on success, otherwise false - - Specifies a single agent to apply the media command to + + + Blocking method to create and upload a baked texture for a single + bake layer + + Layer to bake + True on success, otherwise false - - Unloads the stream. While the stop command sets the texture to the first frame of the movie, - unload resets it to the real texture that the movie was replacing. + + + Blocking method to upload a baked texture + + Five channel JPEG2000 texture data to upload + UUID of the newly created asset on success, otherwise UUID.Zero - - Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties - (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. + + + Creates a dictionary of visual param values from the downloaded wearables + + A dictionary of visual param indices mapping to visual param + values for our agent that can be fed to the Baker class - - Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). - Use "text/html" for HTML. + + + Create an AgentSetAppearance packet from Wearables data and the + Textures array and send it + - - Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). - This might still not be working + + + Converts a WearableType to a bodypart or clothing WearableType + + A WearableType + AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown - - Sets a description for the media being displayed (1.19.1 RC0 and later only). + + + Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + + A BakeType + The AvatarTextureIndex slot that holds the given BakeType - + - Some information about a parcel of land returned from a DirectoryManager search + Gives the layer number that is used for morph mask + >A BakeType + Which layer number as defined in BakeTypeToTextures is used for morph mask - - Global Key of record + + + Converts a BakeType to a list of the texture slots that make up that bake + + A BakeType + A list of texture slots that are inputs for the given bake - - Parcel Owners + + Contains the Event data returned from the data server from an AgentWearablesRequest - - Name field of parcel, limited to 128 characters + + Construct a new instance of the AgentWearablesReplyEventArgs class - - Description field of parcel, limited to 256 characters + + Contains the Event data returned from the data server from an AgentCachedTextureResponse - - Total Square meters of parcel + + Construct a new instance of the AgentCachedBakesReplyEventArgs class - - Total area billable as Tier, for group owned land this will be 10% less than ActualArea + + Contains the Event data returned from an AppearanceSetRequest - - True of parcel is in Mature simulator + + + Triggered when appearance data is sent to the sim and + the main appearance thread is done. + Indicates whether appearance setting was successful - - Grid global X position of parcel + + Indicates whether appearance setting was successful - - Grid global Y position of parcel + + Contains the Event data returned from the data server from an RebakeAvatarTextures - - Grid global Z position of parcel (not used) + + + Triggered when the simulator sends a request for this agent to rebake + its appearance + + The ID of the Texture Layer to bake - - Name of simulator parcel is located in + + The ID of the Texture Layer to bake - - Texture of parcels display picture + + + Class that handles the local asset cache + - - Float representing calculated traffic based on time spent on parcel by avatars + + + Default constructor + + A reference to the GridClient object - - Sale price of parcel (not used) + + + Helper class for sorting files by their last accessed time + - - Auction ID of parcel + + + Allows setting weather to periodicale prune the cache if it grows too big + Default is enabled, when caching is enabled + - + - Parcel Media Information + How long (in ms) between cache checks (default is 5 min.) - - A byte, if 0x1 viewer should auto scale media to fit object + + + Disposes cleanup timer + - - A boolean, if true the viewer should loop the media + + + Only create timer when needed + - - The Asset UUID of the Texture which when applied to a - primitive will display the media + + + Return bytes read from the local asset cache, null if it does not exist + + UUID of the asset we want to get + Raw bytes of the asset, or null on failure - - A URL which points to any Quicktime supported media type + + + Returns ImageDownload object of the + image from the local image cache, null if it does not exist + + UUID of the image we want to get + ImageDownload object containing the image, or null on failure - - A description of the media + + + Constructs a file name of the cached asset + + UUID of the asset + String with the file name of the cahced asset - - An Integer which represents the height of the media + + + Saves an asset to the local cache + + UUID of the asset + Raw bytes the asset consists of + Weather the operation was successfull - - An integer which represents the width of the media + + + Get the file name of the asset stored with gived UUID + + UUID of the asset + Null if we don't have that UUID cached on disk, file name if found in the cache folder - - A string which contains the mime type of the media + + + Checks if the asset exists in the local cache + + UUID of the asset + True is the asset is stored in the cache, otherwise false - + - Parcel of land, a portion of virtual real estate in a simulator + Wipes out entire cache - - The total number of contiguous 4x4 meter blocks your agent owns within this parcel + + + Brings cache size to the 90% of the max size + - - The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own + + + Asynchronously brings cache size to the 90% of the max size + - - Deprecated, Value appears to always be 0 + + + Adds up file sizes passes in a FileInfo array + - - Simulator-local ID of this parcel + + + Checks whether caching is enabled + - - UUID of the owner of this parcel - - - Whether the land is deeded to a group or not - - - - - - Date land was claimed - - - Appears to always be zero - - - This field is no longer used - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Bitmap describing land layout in 4x4m squares across the - entire region + + + Periodically prune the cache + - - Total parcel land area + + + Nicely formats file sizes + + Byte size we want to output + String with humanly readable file size - - + + + - - Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used + + OK - - Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel - owned by the agent or group that owns this parcel + + Transfer completed - - Maximum number of primitives this parcel supports + + + - - Total number of primitives on this parcel + + + - - For group-owned parcels this indicates the total number of prims deeded to the group, - for parcels owned by an individual this inicates the number of prims owned by the individual + + Unknown error occurred - - Total number of primitives owned by the parcel group on - this parcel, or for parcels owned by an individual with a group set the - total number of prims set to that group. + + Equivalent to a 404 error - - Total number of prims owned by other avatars that are not set to group, or not the parcel owner + + Client does not have permission for that resource - - A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect - the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed + + Unknown status - - Autoreturn value in minutes for others' objects + + + - - + + + - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it + + Unknown - - Parcel Name + + Virtually all asset transfers use this channel - - Parcel Description + + + - - URL For Music Stream + + + - - + + Asset from the asset server - - Price for a temporary pass + + Inventory item - - How long is pass valid for + + Estate asset, such as an estate covenant - - + + + - - Key of authorized buyer + + + - - Key of parcel snapshot + + + - - The landing point location + + + - - The landing point LookAt + + + - - The type of landing enforced from the enum + + + - - + + + - - + + + Image file format + - - + + + - - Access list of who is whitelisted on this - parcel + + Number of milliseconds passed since the last transfer + packet was received - - Access list of who is blacklisted on this - parcel + + + - - TRUE of region denies access to age unverified users + + + - - true to obscure (hide) media url + + + - - true to obscure (hide) music url + + + - - A struct containing media details + + + - + - Displays a parcel object in string format - string containing key=value pairs of a parcel object + + + + + + + + - + - Defalt constructor - Local ID of this parcel - + - Update the simulator with any local changes to this Parcel object + Default constructor - Simulator to send updates to - Whether we want the simulator to confirm - the update with a reply packet or not + A reference to the GridClient object - + - Set Autoreturn time + Callback used for various asset download requests - Simulator to send the update to + Transfer information + Downloaded asset, null on fail - + - Parcel (subdivided simulator lots) subsystem + Callback used upon competition of baked texture upload + Asset UUID of the newly uploaded baked texture - - The event subscribers. null if no subcribers + + Number of milliseconds to wait for a transfer header packet if out of order data was received - - Raises the ParcelDwellReply event - A ParcelDwellReplyEventArgs object containing the - data returned from the simulator + + The event subscribers. null if no subcribers - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ParcelInfoReply event - A ParcelInfoReplyEventArgs object containing the - data returned from the simulator - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ParcelProperties event - A ParcelPropertiesEventArgs object containing the - data returned from the simulator - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ParcelAccessListReply event - A ParcelAccessListReplyEventArgs object containing the - data returned from the simulator - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ParcelObjectOwnersReply event - A ParcelObjectOwnersReplyEventArgs object containing the - data returned from the simulator - - + Thread sync lock object - - The event subscribers. null if no subcribers - - - Raises the SimParcelsDownloaded event - A SimParcelsDownloadedEventArgs object containing the - data returned from the simulator + + Texture download cache - - Thread sync lock object + + Raised when the simulator responds sends - - The event subscribers. null if no subcribers + + Raised during upload completes - - Raises the ForceSelectObjectsReply event - A ForceSelectObjectsReplyEventArgs object containing the - data returned from the simulator + + Raised during upload with progres update - - Thread sync lock object + + Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files - - The event subscribers. null if no subcribers + + Fired when a texture is in the process of being downloaded by the TexturePipeline class - - Raises the ParcelMediaUpdateReply event - A ParcelMediaUpdateReplyEventArgs object containing the + + Raises the XferReceived event + A XferReceivedEventArgs object containing the data returned from the simulator - - Thread sync lock object + + Raises the AssetUploaded event + A AssetUploadedEventArgs object containing the + data returned from the simulator - - The event subscribers. null if no subcribers + + Raises the UploadProgress event + A UploadProgressEventArgs object containing the + data returned from the simulator - - Raises the ParcelMediaCommand event - A ParcelMediaCommandEventArgs object containing the + + Raises the InitiateDownload event + A InitiateDownloadEventArgs object containing the data returned from the simulator - - Thread sync lock object + + Raises the ImageReceiveProgress event + A ImageReceiveProgressEventArgs object containing the + data returned from the simulator - + - Default constructor + Request an asset download - A reference to the GridClient object + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + The callback to fire when the simulator responds with the asset data - + - Request basic information for a single parcel + Request an asset download - Simulator-local ID of the parcel + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + The callback to fire when the simulator responds with the asset data - + - Request properties of a single parcel + Request an asset download - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - multiple simultaneous requests + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data - + - Request the access list for a single parcel + Request an asset download through the almost deprecated Xfer system - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelAccessList reply, useful for distinguishing between - multiple simultaneous requests - + Filename of the asset to request + Whether or not to delete the asset + off the server after it is retrieved + Use large transfer packets or not + UUID of the file to request, if filename is + left empty + Asset type of vFileID, or + AssetType.Unknown if filename is not empty + Sets the FilePath in the request to Cache + (4) if true, otherwise Unknown (0) is used + + - + - Request properties of parcels using a bounding box selection - Simulator containing the parcel - Northern boundary of the parcel selection - Eastern boundary of the parcel selection - Southern boundary of the parcel selection - Western boundary of the parcel selection - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - different types of parcel property requests - A boolean that is returned with the - ParcelProperties reply, useful for snapping focus to a single - parcel + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + The item ID of this asset in the inventory + Use UUID.Zero if you are not requesting an + asset from an object inventory + The owner of this asset + Asset type + Whether to prioritize this asset download or not + + - + - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) + Used to force asset data into the PendingUpload property, ie: for raw terrain uploads - Simulator to request parcels from (must be connected) + An AssetUpload object containing the data to upload to the simulator - + - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) + Request an asset be uploaded to the simulator - Simulator to request parcels from (must be connected) - If TRUE, will force a full refresh - Number of milliseconds to pause in between each request + The Object containing the asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired - + - Request the dwell value for a parcel + Request an asset be uploaded to the simulator - Simulator containing the parcel - Simulator-local ID of the parcel + The of the asset being uploaded + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired - + - Send a request to Purchase a parcel of land + Request an asset be uploaded to the simulator - The Simulator the parcel is located in - The parcels region specific local ID - true if this parcel is being purchased by a group - The groups - true to remove tier contribution if purchase is successful - The parcels size - The purchase price of the parcel - + + + Asset type to upload this data as + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired - + - Reclaim a parcel of land + Initiate an asset upload - The simulator the parcel is in - The parcels region specific local ID + The ID this asset will have if the + upload succeeds + Asset type to upload this data as + Raw asset data to upload + Whether to store this asset on the local + simulator or the grid-wide asset server + The tranaction id for the upload + The transaction ID of this transfer - + - Deed a parcel to a group + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - The simulator the parcel is in - The parcels region specific local ID - The groups + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress + transfer. + A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority + indicating an off-by-one error. + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + Request an image and fire a callback when the request is complete + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + + Request an image and use an inline anonymous method to handle the downloaded texture data + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + ); + + Request a texture, decode the texture to a bitmap image and apply it to a imagebox + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + ManagedImage imgData; + Image bitmap; + if (state == TextureRequestState.Finished) + { + OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); + picInsignia.Image = bitmap; + } + } + } + - + - Request prim owners of a parcel of land. + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - Simulator parcel is in - The parcels region specific local ID + The of the texture asset to download + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data - + - Return objects from a parcel + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - Simulator parcel is in - The parcels region specific local ID - the type of objects to return, - A list containing object owners s to return + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data - - - Subdivide (split) a parcel - - - - - - - - - - Join two parcels of land creating a single parcel - - - - - - - - - - Get a parcels LocalID - - Simulator parcel is in - Vector3 position in simulator (Z not used) - 0 on failure, or parcel LocalID on success. - A call to Parcels.RequestAllSimParcels is required to populate map and - dictionary. - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - Height at which the terraform operation is acting at - - - - Sends a request to the simulator to return a list of objects owned by specific owners - - Simulator local ID of parcel - Owners, Others, Etc - List containing keys of avatars objects to select; - if List is null will return Objects of type selectType - Response data is returned in the event - - - - Eject and optionally ban a user from a parcel - - target key of avatar to eject - true to also ban target - - - - Freeze or unfreeze an avatar over your land - - target key to freeze - true to freeze, false to unfreeze - - + - Abandon a parcel of land + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - Simulator parcel is in - Simulator local ID of parcel + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request - + - Requests the UUID of the parcel in a remote region at a specified location + Cancel a texture request - Location of the parcel in the remote region - Remote region handle - Remote region UUID - If successful UUID of the remote parcel, UUID.Zero otherwise + The texture assets - + - Retrieves information on resources used by the parcel + Lets TexturePipeline class fire the progress event - UUID of the parcel - Should per object resource usage be requested - Callback invoked when the request is complete + The texture ID currently being downloaded + the number of bytes transferred + the total number of bytes expected - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - Raises the event - - - Raised when the simulator responds to a request - - Raised when the simulator responds to a request + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Raised when the simulator responds to a request + + Xfer data - - Raised when the simulator responds to a request + + Upload data - - Raised when the simulator responds to a request + + Filename used on the simulator - - Raised when the simulator responds to a request + + Filename used by the client - - Raised when the simulator responds to a request + + UUID of the image that is in progress - - Raised when the simulator responds to a Parcel Update request + + Number of bytes received so far - - Raised when the parcel your agent is located sends a ParcelMediaCommand + + Image size in bytes - + - Parcel Accesslist + Avatar profile flags - - Agents - - - + + + Represents an avatar (other than your own) + - - Flags for specific entry in white/black lists + + + Default constructor + - + - Owners of primitives on parcel + Positive and negative ratings - - Prim Owners + + Positive ratings for Behavior - - True of owner is group + + Negative ratings for Behavior - - Total count of prims owned by OwnerID + + Positive ratings for Appearance - - true of OwnerID is currently online and is not a group + + Negative ratings for Appearance - - The date of the most recent prim left by OwnerID + + Positive ratings for Building - - - Called once parcel resource usage information has been collected - - Indicates if operation was successfull - Parcel resource usage information + + Negative ratings for Building - - Contains a parcels dwell data returned from the simulator in response to an + + Positive ratings given by this avatar - + + Negative ratings given by this avatar + + - Construct a new instance of the ParcelDwellReplyEventArgs class + Avatar properties including about text, profile URL, image IDs and + publishing settings - The global ID of the parcel - The simulator specific ID of the parcel - The calculated dwell for the parcel - - - Get the global ID of the parcel - - Get the simulator specific ID of the parcel - - - Get the calculated dwell + + First Life about text - - Contains basic parcel information data returned from the - simulator in response to an request + + First Life image ID - + - Construct a new instance of the ParcelInfoReplyEventArgs class - The object containing basic parcel info - - Get the object containing basic parcel info + + + - - Contains basic parcel information data returned from the simulator in response to an request + + + - + - Construct a new instance of the ParcelPropertiesEventArgs class - The object containing the details - The object containing the details - The result of the request - The number of primitieves your agent is - currently selecting and or sitting on in this parcel - The user assigned ID used to correlate a request with - these results - TODO: - - - Get the simulator the parcel is located in - - Get the object containing the details - If Result is NoData, this object will not contain valid data + + Profile image ID - - Get the result of the request + + Flags of the profile - - Get the number of primitieves your agent is - currently selecting and or sitting on in this parcel + + Web URL for this profile - - Get the user assigned ID used to correlate a request with - these results + + Should this profile be published on the web - - TODO: + + Avatar Online Status - - Contains blacklist and whitelist data returned from the simulator in response to an request + + Is this a mature profile - + - Construct a new instance of the ParcelAccessListReplyEventArgs class - The simulator the parcel is located in - The user assigned ID used to correlate a request with - these results - The simulator specific ID of the parcel - TODO: - The list containing the white/blacklisted agents for the parcel - - - Get the simulator the parcel is located in - - - Get the user assigned ID used to correlate a request with - these results - - Get the simulator specific ID of the parcel - - - TODO: + + + - - Get the list containing the white/blacklisted agents for the parcel + + + Avatar interests including spoken languages, skills, and "want to" + choices + - - Contains blacklist and whitelist data returned from the - simulator in response to an request + + Languages profile field - + - Construct a new instance of the ParcelObjectOwnersReplyEventArgs class - The simulator the parcel is located in - The list containing prim ownership counts - - - Get the simulator the parcel is located in - - Get the list containing prim ownership counts + + + - - Contains the data returned when all parcel data has been retrieved from a simulator + + + - + - Construct a new instance of the SimParcelsDownloadedEventArgs class - The simulator the parcel data was retrieved from - The dictionary containing the parcel data - The multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - Get the simulator the parcel data was retrieved from + + Groups that this avatar is a member of - - A dictionary containing the parcel data where the key correlates to the ParcelMap entry + + Positive and negative ratings - - Get the multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. + + Avatar properties including about text, profile URL, image IDs and + publishing settings - - Contains the data returned when a request + + Avatar interests including spoken languages, skills, and "want to" + choices - + + Movement control flags for avatars. Typically not set or used by + clients. To move your avatar, use Client.Self.Movement instead + + - Construct a new instance of the ForceSelectObjectsReplyEventArgs class + Contains the visual parameters describing the deformation of the avatar - The simulator the parcel data was retrieved from - The list of primitive IDs - true if the list is clean and contains the information - only for a given request - - Get the simulator the parcel data was retrieved from + + First name - - Get the list of primitive IDs + + Last name - - true if the list is clean and contains the information - only for a given request + + Full name - - Contains data when the media data for a parcel the avatar is on changes + + Active group - + - Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + Holds group information for Avatars such as those you might find in a profile - the simulator the parcel media data was updated in - The updated media information - - - Get the simulator the parcel media data was updated in - - - Get the updated media information - - Contains the media command for a parcel the agent is currently on + + true of Avatar accepts group notices - - - Construct a new instance of the ParcelMediaCommandEventArgs class - - The simulator the parcel media command was issued in - - - The media command that was sent - + + Groups Key - - Get the simulator the parcel media command was issued in + + Texture Key for groups insignia - - + + Name of the group - - + + Powers avatar has in the group - - Get the media command that was sent + + Avatars Currently selected title - - + + true of Avatar has chosen to list this in their profile - + - Singleton logging class for the entire library + Contains an animation currently being played by an agent - - log4net logging engine + + The ID of the animation asset - - - Default constructor - + + A number to indicate start order of currently playing animations + On Linden Grids this number is unique per region, with OpenSim it is per client - + - Send a log message to the logging engine - The log message - The severity of the log entry - + - Send a log message to the logging engine + Holds group information on an individual profile pick - The log message - The severity of the log entry - Instance of the client - + - Send a log message to the logging engine + Retrieve friend status notifications, and retrieve avatar names and + profiles - The log message - The severity of the log entry - Exception that was raised - + - Send a log message to the logging engine + Represents other avatars - The log message - The severity of the log entry - Instance of the client - Exception that was raised + + - - - If the library is compiled with DEBUG defined, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine + + The event subscribers, null of no subscribers - - - If the library is compiled with DEBUG defined and - GridClient.Settings.DEBUG is true, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - Instance of the client + + Thread sync lock object - - Triggered whenever a message is logged. If this is left - null, log messages will go to the console + + The event subscribers, null of no subscribers - - - Callback used for client apps to receive log messages from - the library - - Data being logged - The severity of the log entry from + + Thread sync lock object - - - Map layer request type - + + The event subscribers, null of no subscribers - - Objects and terrain are shown + + Thread sync lock object - - Only the terrain is shown, no objects + + The event subscribers, null of no subscribers - - Overlay showing land for sale and for auction + + Thread sync lock object - - - Type of grid item, such as telehub, event, populator location, etc. - + + The event subscribers, null of no subscribers - - Telehub + + Thread sync lock object - - PG rated event + + The event subscribers, null of no subscribers - - Mature rated event + + Thread sync lock object - - Popular location + + The event subscribers, null of no subscribers - - Locations of avatar groups in a region + + Thread sync lock object - - Land for sale + + The event subscribers, null of no subscribers - - Classified ad + + Thread sync lock object - - Adult rated event + + The event subscribers, null of no subscribers - - Adult land for sale + + Thread sync lock object - - - Information about a region on the grid map - + + The event subscribers, null of no subscribers - - Sim X position on World Map + + Thread sync lock object - - Sim Y position on World Map + + The event subscribers, null of no subscribers - - Sim Name (NOTE: In lowercase!) + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - Appears to always be zero (None) + + Thread sync lock object - - Sim's defined Water Height + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - UUID of the World Map image + + The event subscribers, null of no subscribers - - Unique identifier for this region, a combination of the X - and Y position + + Thread sync lock object - - - - - + + Raised when the simulator sends us data containing + an agents animation playlist - - - - - + + Raised when the simulator sends us data containing + the appearance information for an agent - - - - - - + + Raised when the simulator sends us data containing + agent names/id values - - - Visual chunk of the grid map - + + Raised when the simulator sends us data containing + the interests listed in an agents profile - - - Base class for Map Items - + + Raised when the simulator sends us data containing + profile property information for an agent - - The Global X position of the item + + Raised when the simulator sends us data containing + the group membership an agent is a member of - - The Global Y position of the item + + Raised when the simulator sends us data containing + name/id pair - - Get the Local X position of the item + + Raised when the simulator sends us data containing + the objects and effect when an agent is pointing at - - Get the Local Y position of the item + + Raised when the simulator sends us data containing + the objects and effect when an agent is looking at - - Get the Handle of the region + + Raised when the simulator sends us data containing + an agents viewer effect information - - - Represents an agent or group of agents location - + + Raised when the simulator sends us data containing + the top picks from an agents profile - + + Raised when the simulator sends us data containing + the Pick details + + + Raised when the simulator sends us data containing + the classified ads an agent has placed + + + Raised when the simulator sends us data containing + the details of a classified ad + + + Raises the AvatarAnimation Event + An AvatarAnimationEventArgs object containing + the data sent from the simulator + + + Raises the AvatarAppearance Event + A AvatarAppearanceEventArgs object containing + the data sent from the simulator + + + Raises the UUIDNameReply Event + A UUIDNameReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarInterestsReply Event + A AvatarInterestsReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarPropertiesReply Event + A AvatarPropertiesReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarGroupsReply Event + A AvatarGroupsReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarPickerReply Event + A AvatarPickerReplyEventArgs object containing + the data sent from the simulator + + + Raises the ViewerEffectPointAt Event + A ViewerEffectPointAtEventArgs object containing + the data sent from the simulator + + + Raises the ViewerEffectLookAt Event + A ViewerEffectLookAtEventArgs object containing + the data sent from the simulator + + + Raises the ViewerEffect Event + A ViewerEffectEventArgs object containing + the data sent from the simulator + + + Raises the AvatarPicksReply Event + A AvatarPicksReplyEventArgs object containing + the data sent from the simulator + + + Raises the PickInfoReply Event + A PickInfoReplyEventArgs object containing + the data sent from the simulator + + + Raises the AvatarClassifiedReply Event + A AvatarClassifiedReplyEventArgs object containing + the data sent from the simulator + + + Raises the ClassifiedInfoReply Event + A ClassifiedInfoReplyEventArgs object containing + the data sent from the simulator + + + Tracks the specified avatar on your map + Avatar ID to track + + - Represents a Telehub location + Request a single avatar name + The avatar key to retrieve a name for - + - Represents a non-adult parcel of land for sale + Request a list of avatar names + The avatar keys to retrieve names for - + - Represents an Adult parcel of land for sale + Start a request for Avatar Properties + + - + - Represents a PG Event + Search for an avatar (first name, last name) + The name to search for + An ID to associate with this query - + - Represents a Mature event + Start a request for Avatar Picks + UUID of the avatar - + - Represents an Adult event + Start a request for Avatar Classifieds + UUID of the avatar - + - Manages grid-wide tasks such as the world map + Start a request for details of a specific profile pick + UUID of the avatar + UUID of the profile pick - - The event subscribers. null if no subcribers - - - Raises the CoarseLocationUpdate event - A CoarseLocationUpdateEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridRegion event - A GridRegionEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridLayer event - A GridLayerEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridItems event - A GridItemEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the RegionHandleReply event - A RegionHandleReplyEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - A dictionary of all the regions, indexed by region name - - - A dictionary of all the regions, indexed by region handle - - - - Constructor - - Instance of GridClient object to associate with this GridManager instance - - - - - - - - + - Request a map layer + Start a request for details of a specific profile classified - The name of the region - The type of layer + UUID of the avatar + UUID of the profile classified - - - - - - - - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - - - - - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - - - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Request data for all mainland (Linden managed) simulators - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Request the region handle for the specified region UUID - - UUID of the region to look up + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + - Get grid region information using the region name, this function - will block until it can find the region or gives up + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. - Name of sim you're looking for - Layer that you are requesting - Will contain a GridRegion for the sim you're - looking for if successful, otherwise an empty structure - True if the GridRegion was successfully fetched, otherwise - false + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - Raised when the simulator sends a - containing the location of agents in the simulator - - - Raised when the simulator sends a Region Data in response to - a Map request - - - Raised when the simulator sends GridLayer object containing - a map tile coordinates and texture information + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Raised when the simulator sends GridItems object containing - details on events, land sales at a specific location + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Raised in response to a Region lookup + + Provides data for the event + The event occurs when the simulator sends + the animation playlist for an agent + + The following code example uses the and + properties to display the animation playlist of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; + private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) + { + // create a dictionary of "known" animations from the Animations class using System.Reflection + Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); + Type type = typeof(Animations); + System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + foreach (System.Reflection.FieldInfo field in fields) + { + systemAnimations.Add((UUID)field.GetValue(type), field.Name); + } + // find out which animations being played are known animations and which are assets + foreach (Animation animation in e.Animations) + { + if (systemAnimations.ContainsKey(animation.AnimationID)) + { + Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, + systemAnimations[animation.AnimationID], animation.AnimationSequence); + } + else + { + Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, + animation.AnimationID, animation.AnimationSequence); + } + } + } + - - Unknown + + + Construct a new instance of the AvatarAnimationEventArgs class + + The ID of the agent + The list of animations to start - - Current direction of the sun + + Get the ID of the agent - - Current angular velocity of the sun + + Get the list of animations to start - - Current world time + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + - + - Particle system specific enumerators, flags and methods. + Construct a new instance of the AvatarAppearanceEventArgs class + The simulator request was from + The ID of the agent + true of the agent is a trial account + The default agent texture + The agents appearance layer textures + The for the agent - - - - - + + Get the Simulator this request is from of the agent - - + + Get the ID of the agent - - + + true if the agent is a trial account - - + + Get the default agent texture - - + + Get the agents appearance layer textures - - Foliage type for this primitive. Only applicable if this - primitive is foliage + + Get the for the agent - - Unknown + + Represents the interests from the profile of an agent - - + + Get the ID of the agent - - + + The properties of an agent - - + + Get the ID of the agent - - + + Get the ID of the agent - - + + Get the ID of the agent - - + + Get the ID of the avatar - - - - - - - - - - - - - - - - - - - - Identifies the owner if audio or a particle system is - active - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - Default constructor + Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. - + - Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters in to signed eight bit values + Searialize an animation asset into it's joints/keyframes/meta data - Floating point parameter to pack - Signed eight bit value containing the packed parameter + + - + - Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters from signed eight bit integers to floating point values + Rotation Keyframe count (used internally) - Signed eight bit value to unpack - Unpacked floating point value - - - - + - Current version of the media data for the prim + Position Keyframe count (used internally) - + - Array of media entries indexed by face number + Animation Priority - - - - - - - - Uses basic heuristics to estimate the primitive shape - - + - Parameters used to construct a visual representation of a primitive + The animation length in seconds. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Attachment point to an avatar - - - - - - - - - - - - - - + - Information on the flexible properties of a primitive + Expression set in the client. Null if [None] is selected - - - - - - - - + + + The time in seconds to start the animation + - - + + + The time in seconds to end the animation + - - + + + Loop the animation + - - + + + Meta data. Ease in Seconds. + - + - Default constructor + Meta data. Ease out seconds. - + - + Meta Data for the Hand Pose - - - + - + Number of joints defined in the animation - - + - + Contains an array of joints - - + - Information on the light properties of a primitive + Variable length strings seem to be null terminated in the animation asset.. but.. + use with caution, home grown. + advances the index. + The animation asset byte array + The offset to start reading + a string - - + + + Read in a Joint from an animation asset byte array + Variable length Joint fields, yay! + Advances the index + + animation asset byte array + Byte Offset of the start of the joint + The Joint data serialized into the binBVHJoint structure - - + + + Read Keyframes of a certain type + advance i + + Animation Byte array + Offset in the Byte Array. Will be advanced + Number of Keyframes + Scaling Min to pass to the Uint16ToFloat method + Scaling Max to pass to the Uint16ToFloat method + + - - + + + A Joint and it's associated meta data and keyframes + - - + + + Name of the Joint. Matches the avatar_skeleton.xml in client distros + - - + + + Joint Animation Override? Was the same as the Priority in testing.. + - + - Default constructor + Array of Rotation Keyframes in order from earliest to latest - + - + Array of Position Keyframes in order from earliest to latest + This seems to only be for the Pelvis? - - - + - + A Joint Keyframe. This is either a position or a rotation. - - + - + Either a Vector3 position or a Vector3 Euler rotation - - + - Information on the sculpt properties of a sculpted primitive + Poses set in the animation metadata for the hands. - + - Default constructor + Wrapper around a byte array that allows bit to be packed and unpacked + one at a time or by a variable amount. Useful for very tightly packed + data like LayerData packets - + - + Default constructor, initialize the bit packer / bit unpacker + with a byte array and starting position - - + Byte array to pack bits in to or unpack from + Starting position in the byte array - + - Render inside out (inverts the normals). - + - Render an X axis mirror of the sculpty. - + - Extended properties to describe an object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + Pack a floating point value in to the data + + Floating point value to pack - - + + + Pack part or all of an integer in to the data + + Integer containing the data to pack + Number of bits of the integer to pack - - + + + Pack part or all of an unsigned integer in to the data + + Unsigned integer containing the data to pack + Number of bits of the integer to pack - - + + + Pack a single bit in to the data + + Bit to pack - - + + + + + + + + + + + - - + + + + + - - + + + + + - - + + + Unpacking a floating point value from the data + + Unpacked floating point value - - + + + Unpack a variable number of bits from the data in to integer format + + Number of bits to unpack + An integer containing the unpacked bits + This function is only useful up to 32 bits - - + + + Unpack a variable number of bits from the data in to unsigned + integer format + + Number of bits to unpack + An unsigned integer containing the unpacked bits + This function is only useful up to 32 bits - - + + + Unpack a 16-bit signed integer + + 16-bit signed integer - - + + + Unpack a 16-bit unsigned integer + + 16-bit unsigned integer - - + + + Unpack a 32-bit signed integer + + 32-bit signed integer - + - Default constructor + Unpack a 32-bit unsigned integer + 32-bit unsigned integer - + - Set the properties that are set in an ObjectPropertiesFamily packet + Capabilities is the name of the bi-directional HTTP REST protocol + used to communicate non real-time transactions such as teleporting or + group messaging - that has - been partially filled by an ObjectPropertiesFamily packet - + - Complete structure for the particle system + Default constructor + + + + - - Particle Flags - There appears to be more data packed in to this area - for many particle systems. It doesn't appear to be flag values - and serialization breaks unless there is a flag for every - possible bit so it is left as an unsigned integer + + + Triggered when an event is received via the EventQueueGet + capability + + Event name + Decoded event data + The simulator that generated the event - - pattern of particles + + Reference to the simulator this system is connected to - - A representing the maximimum age (in seconds) particle will be displayed - Maximum value is 30 seconds + + Capabilities URI this system was initialized with - - A representing the number of seconds, - from when the particle source comes into view, - or the particle system's creation, that the object will emits particles; - after this time period no more particles are emitted + + Whether the capabilities event queue is connected and + listening for incoming events - - A in radians that specifies where particles will not be created + + + Request the URI of a named capability + + Name of the capability to request + The URI of the requested capability, or String.Empty if + the capability does not exist - - A in radians that specifies where particles will be created + + + Process any incoming events, check to see if we have a message created for the event, + + + + + - - A representing the number of seconds between burts. + + + Attempts to convert an LLSD structure to a known Packet type + + Event name, this must match an actual + packet name for a Packet to be successfully built + LLSD to convert to a Packet + A Packet on success, otherwise null - - A representing the number of meters - around the center of the source where particles will be created. + + Origin position of this coordinate frame - - A representing in seconds, the minimum speed between bursts of new particles - being emitted + + X axis of this coordinate frame, or Forward/At in grid terms - - A representing in seconds the maximum speed of new particles being emitted. + + Y axis of this coordinate frame, or Left in grid terms - - A representing the maximum number of particles emitted per burst + + Z axis of this coordinate frame, or Up in grid terms - - A which represents the velocity (speed) from the source which particles are emitted + + + + Looking direction, must be a normalized vector + Up direction, must be a normalized vector - - A which represents the Acceleration from the source which particles are emitted + + + Align the coordinate frame X and Y axis with a given rotation + around the Z axis in radians + + Absolute rotation around the Z axis in + radians - - The Key of the texture displayed on the particle + + + Access to the data server which allows searching for land, events, people, etc + - - The Key of the specified target object or avatar particles will follow + + + Constructs a new instance of the DirectoryManager class + + An instance of GridClient - - Flags of particle from + + Classified Ad categories - - Max Age particle system will emit particles for + + Classified is listed in the Any category - - The the particle has at the beginning of its lifecycle + + Classified is shopping related - - The the particle has at the ending of its lifecycle + + Classified is - - A that represents the starting X size of the particle - Minimum value is 0, maximum value is 4 + + + - - A that represents the starting Y size of the particle - Minimum value is 0, maximum value is 4 + + + - - A that represents the ending X size of the particle - Minimum value is 0, maximum value is 4 + + + - - A that represents the ending Y size of the particle - Minimum value is 0, maximum value is 4 + + + - + - Decodes a byte[] array into a ParticleSystem Object - ParticleSystem object - Start position for BitPacker - + - Generate byte[] array from particle data - Byte array - + - Particle source pattern - - None - - - Drop particles from source position with no force - - - "Explode" particles in all directions - - - Particles shoot across a 2D area - - - Particles shoot across a 3D Cone - - - Inverse of AngleCone (shoot particles everywhere except the 3D cone defined + + Event Categories - + - Particle Data Flags - - None - - - Interpolate color and alpha from start to end - - - Interpolate scale from start to end + + + - - Bounce particles off particle sources Z height + + + - - velocity of particles is dampened toward the simulators wind + + + - - Particles follow the source + + + - - Particles point towards the direction of source's velocity + + + - - Target of the particles + + + - - Particles are sent in a straight line + + + - - Particles emit a glow + + + - - used for point/grab/touch + + + - + - Particle Flags Enum - - None + + + - - Acceleration and velocity for particles are - relative to the object rotation + + + Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. + Flags can be combined using the | (pipe) character, not all flags are available in all queries + - - Particles use new 'correct' angle parameters + + Query the People database - + - Texture animation mode - - Disable texture animation + + + - - Enable texture animation + + Query the Groups database - - Loop when animating textures + + Query the Events database - - Animate in reverse direction + + Query the land holdings database for land owned by the currently connected agent - - Animate forward then reverse + + + - - Slide texture smoothly instead of frame-stepping + + Query the land holdings database for land which is owned by a Group - - Rotate texture instead of using frames + + Specifies the query should pre sort the results based upon traffic + when searching the Places database - - Scale texture instead of using frames + + + - + - A single textured face. Don't instantiate this class yourself, use the - methods in TextureEntry - + - Contains the definition for individual faces - - + - - - - + + Specifies the query should pre sort the results in an ascending order when searching the land sales database. + This flag is only used when searching the land sales database - - + + Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. + This flag is only used when searching the land sales database - - + + Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. + This flag is only used when searching the land sales database - - + + Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. + This flag is only used when searching the land sales database - - + + Specifies the query should pre sort the results using the Name field when searching the land sales database. + This flag is only used when searching the land sales database - - + + When set, only parcels less than the specified Price will be included when searching the land sales database. + This flag is only used when searching the land sales database - - + + When set, only parcels greater than the specified Size will be included when searching the land sales database. + This flag is only used when searching the land sales database - - + + + - - + + + - - + + Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases - - In the future this will specify whether a webpage is - attached to this face + + Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases - - + + Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases - + - Represents all of the texturable faces for an object - Grid objects have infinite faces, with each face - using the properties of the default face unless set otherwise. So if - you have a TextureEntry with a default texture uuid of X, and face 18 - has a texture UUID of Y, every face would be textured with X except for - face 18 that uses Y. In practice however, primitives utilize a maximum - of nine faces - - - - - - - + - Constructor that takes a default texture UUID + Land types to search dataserver for - Texture UUID to use as the default texture - + + Search Auction, Mainland and Estate + + + Land which is currently up for auction + + + Parcels which are on the mainland (Linden owned) continents + + + Parcels which are on privately owned simulators + + - Constructor that takes a TextureEntryFace for the - default face + The content rating of the event - Face to use as the default face - + + Event is PG + + + Event is Mature + + + Event is Adult + + - Constructor that creates the TextureEntry class from a byte array + Classified Ad Options - Byte array containing the TextureEntry field - Starting position of the TextureEntry field in - the byte array - Length of the TextureEntry field, in bytes + There appear to be two formats the flags are packed in. + This set of flags is for the newer style - + - This will either create a new face if a custom face for the given - index is not defined, or return the custom face for that index if - it already exists - The index number of the face to create or - retrieve - A TextureEntryFace containing all the properties for that - face - + - - - - + - - - + - - - + - - - + - Controls the texture animation of a particular prim + Classified ad query options - - + + Include all ads in results - - + + Include PG ads in results - - + + Include Mature ads in results - - + + Include Adult ads in results - - + + + The For Sale flag in PlacesReplyData + - - + + Parcel is not listed for sale - - + + Parcel is For Sale - + - + A classified ad on the grid - - - - - - - + + UUID for this ad, useful for looking up detailed + information about it - - - Represents a Sound Asset - + + The title of this classified ad - - Initializes a new instance of an AssetSound object + + Flags that show certain options applied to the classified - - Initializes a new instance of an AssetSound object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + Creation date of the ad - - - TODO: Encodes a sound file - + + Expiration date of the ad - - - TODO: Decode a sound file - - true + + Price that was paid for this ad - - Override the base classes AssetType + + Print the struct data as a string + A string containing the field name, and field value - + - A linkset asset, containing a parent primitive and zero or more children + A parcel retrieved from the dataserver such as results from the + "For-Sale" listings or "Places" Search - - Initializes a new instance of an AssetPrim object + + The unique dataserver parcel ID + This id is used to obtain additional information from the entry + by using the method - - - Initializes a new instance of an AssetPrim object - - A unique specific to this asset - A byte array containing the raw asset data + + A string containing the name of the parcel - - - - + + The size of the parcel + This field is not returned for Places searches - - - - - + + The price of the parcel + This field is not returned for Places searches - - Override the base classes AssetType + + If True, this parcel is flagged to be auctioned - - - Only used internally for XML serialization/deserialization - + + If true, this parcel is currently set for sale - - - The deserialized form of a single primitive in a linkset asset - + + Parcel traffic - - - Operation to apply when applying color to texture - + + Print the struct data as a string + A string containing the field name, and field value - + - Information needed to translate visual param value to RGBA color + An Avatar returned from the dataserver - - - Construct VisualColorParam - - Operation to apply when applying color to texture - Colors + + Online status of agent + This field appears to be obsolete and always returns false - + + The agents first name + + + The agents last name + + + The agents + + + Print the struct data as a string + A string containing the field name, and field value + + - Represents alpha blending and bump infor for a visual parameter - such as sleive length + Response to a "Groups" Search - - Stregth of the alpha to apply + + The Group ID - - File containing the alpha channel + + The name of the group - - Skip blending if parameter value is 0 + + The current number of members - - Use miltiply insted of alpha blending + + Print the struct data as a string + A string containing the field name, and field value - + - Create new alhpa information for a visual param + Parcel information returned from a request + + Represents one of the following: + A parcel of land on the grid that has its Show In Search flag set + A parcel of land owned by the agent making the request + A parcel of land owned by a group the agent making the request is a member of + + In a request for Group Land, the First record will contain an empty record + + Note: This is not the same as searching the land for sale data source - Stregth of the alpha to apply - File containing the alpha channel - Skip blending if parameter value is 0 - Use miltiply insted of alpha blending - - - A single visual characteristic of an avatar mesh, such as eyebrow height - + + The ID of the Agent of Group that owns the parcel - - Index of this visual param + + The name - - Internal name + + The description - - Group ID this parameter belongs to + + The Size of the parcel - - Name of the wearable this parameter belongs to + + The billable Size of the parcel, for mainland + parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller + than the ActualArea. For Estate land this will always be 0 - - Displayable label of this characteristic + + Indicates the ForSale status of the parcel - - Displayable label for the minimum value of this characteristic + + The Gridwide X position - - Displayable label for the maximum value of this characteristic + + The Gridwide Y position - - Default value + + The Z position of the parcel, or 0 if no landing point set - - Minimum value + + The name of the Region the parcel is located in - - Maximum value + + The Asset ID of the parcels Snapshot texture - - Is this param used for creation of bump layer? + + The calculated visitor traffic - - Alpha blending/bump info + + The billing product SKU + Known values are: + 023Mainland / Full Region024Estate / Full Region027Estate / Openspace029Estate / Homestead129Mainland / Homestead (Linden Owned) - - Color information + + No longer used, will always be 0 - - Array of param IDs that are drivers for this parameter + + Get a SL URL for the parcel + A string, containing a standard SLURL - + + Print the struct data as a string + A string containing the field name, and field value + + - Set all the values through the constructor + An "Event" Listing summary - Index of this visual param - Internal name - - - Displayable label of this characteristic - Displayable label for the minimum value of this characteristic - Displayable label for the maximum value of this characteristic - Default value - Minimum value - Maximum value - Is this param used for creation of bump layer? - Array of param IDs that are drivers for this parameter - Alpha blending/bump info - Color information - - - Holds the Params array of all the avatar appearance parameters - + + The ID of the event creator - - - NetworkManager is responsible for managing the network layer of - OpenMetaverse. It tracks all the server connections, serializes - outgoing traffic and deserializes incoming traffic, and provides - instances of delegates for network-related events. - + + The name of the event + + + The events ID + + + A string containing the short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) + + + The events maturity rating + + + Print the struct data as a string + A string containing the field name, and field value + + - Login Routines + The details of an "Event" - - The event subscribers, null of no subscribers + + The events ID - - Raises the PacketSent Event - A PacketSentEventArgs object containing - the data sent from the simulator + + The ID of the event creator - - Thread sync lock object + + The name of the event - - The event subscribers, null of no subscribers + + The category - - Raises the LoggedOut Event - A LoggedOutEventArgs object containing - the data sent from the simulator + + The events description - - Thread sync lock object + + The short date/time the event will begin - - The event subscribers, null of no subscribers + + The event start time in Unixtime (seconds since epoch) UTC adjusted - - Raises the SimConnecting Event - A SimConnectingEventArgs object containing - the data sent from the simulator + + The length of the event in minutes - - Thread sync lock object + + 0 if no cover charge applies - - The event subscribers, null of no subscribers + + The cover charge amount in L$ if applicable - - Raises the SimConnected Event - A SimConnectedEventArgs object containing - the data sent from the simulator + + The name of the region where the event is being held - - Thread sync lock object + + The gridwide location of the event - - The event subscribers, null of no subscribers + + The maturity rating - - Raises the SimDisconnected Event - A SimDisconnectedEventArgs object containing - the data sent from the simulator + + Get a SL URL for the parcel where the event is hosted + A string, containing a standard SLURL - + + Print the struct data as a string + A string containing the field name, and field value + + + The event subscribers. null if no subcribers + + Thread sync lock object - - The event subscribers, null of no subscribers + + The event subscribers. null if no subcribers - - Raises the Disconnected Event - A DisconnectedEventArgs object containing - the data sent from the simulator + + Thread sync lock object - + + The event subscribers. null if no subcribers + + Thread sync lock object - - The event subscribers, null of no subscribers + + The event subscribers. null if no subcribers - - Raises the SimChanged Event - A SimChangedEventArgs object containing - the data sent from the simulator + + Thread sync lock object - + + The event subscribers. null if no subcribers + + Thread sync lock object - - The event subscribers, null of no subscribers + + The event subscribers. null if no subcribers - - Raises the EventQueueRunning Event - A EventQueueRunningEventArgs object containing - the data sent from the simulator + + Thread sync lock object - + + The event subscribers. null if no subcribers + + Thread sync lock object - - All of the simulators we are currently connected to + + The event subscribers. null if no subcribers - - Handlers for incoming capability events + + Thread sync lock object - - Handlers for incoming packets + + Raised when the data server responds to a request. - - Incoming packets that are awaiting handling + + Raised when the data server responds to a request. - - Outgoing packets that are awaiting handling + + Raised when the data server responds to a request. - - - Default constructor - - Reference to the GridClient object + + Raised when the data server responds to a request. - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received + + Raised when the data server responds to a request. - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - True if the callback should be ran - asynchronously. Only set this to false (synchronous for callbacks - that will always complete quickly) - If any callback for a packet type is marked as - asynchronous, all callbacks for that packet type will be fired - asynchronously + + Raised when the data server responds to a request. - - - Unregister an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type this callback is registered with - Callback to stop firing events for + + Raised when the data server responds to a request. - - - Register a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event to register a handler for - Callback to fire when a CAPS event is received + + Raised when the data server responds to a request. - - - Unregister a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event this callback is - registered with - Callback to stop firing events for + + Raises the EventInfoReply event + An EventInfoReplyEventArgs object containing the + data returned from the data server - - - Send a packet to the simulator the avatar is currently occupying - - Packet to send + + Raises the DirEventsReply event + An DirEventsReplyEventArgs object containing the + data returned from the data server - - - Send a packet to a specified simulator - - Packet to send - Simulator to send the packet to + + Raises the PlacesReply event + A PlacesReplyEventArgs object containing the + data returned from the data server - - - Connect to a simulator - - IP address to connect to - Port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null + + Raises the DirPlacesReply event + A DirPlacesReplyEventArgs object containing the + data returned from the data server - + + Raises the DirClassifiedsReply event + A DirClassifiedsReplyEventArgs object containing the + data returned from the data server + + + Raises the DirGroupsReply event + A DirGroupsReplyEventArgs object containing the + data returned from the data server + + + Raises the DirPeopleReply event + A DirPeopleReplyEventArgs object containing the + data returned from the data server + + + Raises the DirLandReply event + A DirLandReplyEventArgs object containing the + data returned from the data server + + - Connect to a simulator + Query the data server for a list of classified ads containing the specified string. + Defaults to searching for classified placed in any category, and includes PG, Adult and Mature + results. + Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + The event is raised when a response is received from the simulator - IP address and port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null + A string containing a list of keywords to search for + A UUID to correlate the results when the event is raised - + - Initiate a blocking logout request. This will return when the logout - handshake has completed or when Settings.LOGOUT_TIMEOUT - has expired and the network layer is manually shut down + Query the data server for a list of classified ads which contain specified keywords (Overload) + The event is raised when a response is received from the simulator + A string containing a list of keywords to search for + The category to search + A set of flags which can be ORed to modify query options + such as classified maturity rating. + A UUID to correlate the results when the event is raised + + Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature + + UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); + + + Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + - + - Initiate the logout process. Check if logout succeeded with the - OnLogoutReply event, and if this does not fire the - Shutdown() function needs to be manually called + Starts search for places (Overloaded) + The event is raised when a response is received from the simulator + Search text + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised - + - Close a connection to the given simulator + Queries the dataserver for parcels of land which are flagged to be shown in search + The event is raised when a response is received from the simulator - - + A string containing a list of keywords to search for separated by a space character + A set of flags which can be ORed to modify query options + such as classified maturity rating. + The category to search + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult + + UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); + + + Additional information on the results can be obtained by using the ParcelManager.InfoRequest method + - + - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout + Starts a search for land sales using the directory + The event is raised when a response is received from the simulator - Type of shutdown + What type of land to search for. Auction, + estate, mainland, "first land", etc + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. - + - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout + Starts a search for land sales using the directory + The event is raised when a response is received from the simulator - Type of shutdown - Shutdown message + What type of land to search for. Auction, + estate, mainland, "first land", etc + Maximum price to search for + Maximum area to search for + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. - + - Searches through the list of currently connected simulators to find - one attached to the given IPEndPoint + Send a request to the data server for land sales listings - IPEndPoint of the Simulator to search for - A Simulator reference on success, otherwise null + Flags sent to specify query options + Available flags: + Specify the parcel rating with one or more of the following: + IncludePG IncludeMature IncludeAdult + Specify the field to pre sort the results with ONLY ONE of the following: + PerMeterSort NameSort AreaSort PricesSort + Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order + SortAsc + Specify additional filters to limit the results with one or both of the following: + LimitByPrice LimitByArea + Flags can be combined by separating them with the | (pipe) character + Additional details can be found in + What type of land to search for. Auction, + Estate or Mainland + Maximum price to search for when the + DirFindFlags.LimitByPrice flag is specified in findFlags + Maximum area to search for when the + DirFindFlags.LimitByArea flag is specified in findFlags + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + + The event will be raised with the response from the simulator + There is no way to determine how many results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each reply. + Any land set for sale to either anybody or specific to the connected agent will be included in the + results if the land is included in the query + + + + // request all mainland, any maturity rating that is larger than 512 sq.m + StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); + + - + - Fire an event when an event queue connects for capabilities + Search for Groups - Simulator the event queue is attached to + The name or portion of the name of the group you wish to search for + Start from the match number + + - + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + Search flags + + + + + + Search the People directory for other avatars + + The name or portion of the name of the avatar you wish to search for + + + + + + + + Search Places for parcels of land you personally own + + + + + Searches Places for land owned by the specified group + + ID of the group you want to recieve land list for (You must be a member of the group) + Transaction (Query) ID which can be associated with results from your request. + + + + Search the Places directory for parcels that are listed in search and contain the specified keywords + + A string containing the keywords to search for + Transaction (Query) ID which can be associated with results from your request. + + + + Search Places - All Options + + One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. + One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer + A string containing a list of keywords to search for separated by a space character + String Simulator Name to search in + LLUID of group you want to recieve results for + Transaction (Query) ID which can be associated with results from your request. + Transaction (Query) ID which can be associated with results from your request. + + + + Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + + A string containing a list of keywords to search for separated by a space character + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + UUID of query to correlate results in callback. + + + + Search Events + + A string containing a list of keywords to search for separated by a space character + One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult + from the Enum + Multiple flags can be combined by separating the flags with the | (pipe) character + "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled + For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + EventCategory event is listed under. + UUID of query to correlate results in callback. + + + Requests Event Details + ID of Event returned from the method + + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - The event subscribers, null of no subscribers + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Raises the LoginProgress Event - A LoginProgressEventArgs object containing - the data sent from the simulator + + Contains the Event data returned from the data server from an EventInfoRequest - - Thread sync lock object + + Construct a new instance of the EventInfoReplyEventArgs class + A single EventInfo object containing the details of an event - - Seed CAPS URL returned from the login server + + + A single EventInfo object containing the details of an event + - - A list of packets obtained during the login process which - networkmanager will log but not process - - - - Generate sane default values for a login request - - Account first name - Account last name - Account password - Client application name - Client application version - A populated struct containing - sane defaults - - - - Simplified login that takes the most common and required fields - - Account first name - Account last name - Account password - Client application name - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Simplified login that takes the most common fields along with a - starting location URI, and can accept an MD5 string instead of a - plaintext password - - Account first name - Account last name - Account password or MD5 hash of the password - such as $1$1682a1e45e9f957dcdf0bb56eb43319c - Client application name - Starting location URI that can be built with - StartLocation() - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error + + Contains the "Event" detail data returned from the data server - - - Login that takes a struct of all the values that will be passed to - the login server - - The values that will be passed to the login - server, all fields must be set even if they are String.Empty - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error + + Construct a new instance of the DirEventsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Events" returned by the search query - - - Build a start location URI for passing to the Login function - - Name of the simulator to start in - X coordinate to start at - Y coordinate to start at - Z coordinate to start at - String with a URI that can be used to login to a specified - location + + The ID returned by - - - Handles response from XML-RPC login replies - + + A list of "Events" returned by the data server - - - Handle response from LLSD login replies - - - - + + Contains the "Event" list data returned from the data server - - - Get current OS - - Either "Win" or "Linux" + + Construct a new instance of PlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Places" returned by the data server query - - - Get clients default Mac Address - - A string containing the first found Mac Address + + The ID returned by - - Raised when the simulator sends us data containing - ... + + A list of "Places" returned by the data server - - Raised when the simulator sends us data containing - ... + + Contains the places data returned from the data server - - Raised when the simulator sends us data containing - ... + + Construct a new instance of the DirPlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing land data returned by the data server - - Raised when the simulator sends us data containing - ... + + The ID returned by - - Raised when the simulator sends us data containing - ... + + A list containing Places data returned by the data server - - Raised when the simulator sends us data containing - ... + + Contains the classified data returned from the data server - - Raised when the simulator sends us data containing - ... + + Construct a new instance of the DirClassifiedsReplyEventArgs class + A list of classified ad data returned from the data server - - Raised when the simulator sends us data containing - ... + + A list containing Classified Ads returned by the data server - - Unique identifier associated with our connections to - simulators + + Contains the group data returned from the data server - - The simulator that the logged in avatar is currently - occupying + + Construct a new instance of the DirGroupsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of groups data returned by the data server - - Shows whether the network layer is logged in to the - grid or not + + The ID returned by - - Number of packets in the incoming queue + + A list containing Groups data returned by the data server - - Number of packets in the outgoing queue + + Contains the people data returned from the data server - - Raised when the simulator sends us data containing - ... + + Construct a new instance of the DirPeopleReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of people data returned by the data server - - Called when a reply is received from the login server, the - login sequence will block until this event returns + + The ID returned by - - Current state of logging in + + A list containing People data returned by the data server - - Upon login failure, contains a short string key for the - type of login error that occurred + + Contains the land sales data returned from the data server - - The raw XML-RPC reply from the login server, exactly as it - was received (minus the HTTP header) + + Construct a new instance of the DirLandReplyEventArgs class + A list of parcels for sale returned by the data server - - During login this contains a descriptive version of - LoginStatusCode. After a successful login this will contain the - message of the day, and after a failed login a descriptive error - message will be returned + + A list containing land forsale data returned by the data server - + - Explains why a simulator or the grid disconnected from us + Represends individual HTTP Download request - - The client requested the logout or simulator disconnect + + Default constructor - - The server notified us that it is disconnecting + + Constructor - - Either a socket was closed or network traffic timed out + + URI of the item to fetch - - The last active simulator shut down + + Timout specified in milliseconds - - - Holds a simulator reference and a decoded packet, these structs are put in - the packet inbox for event handling - + + Download progress callback - - Reference to the simulator that this packet came from + + Download completed callback - - Packet that needs to be processed + + Accept the following content type - + - Holds a simulator reference and a serialized packet, these structs are put in - the packet outbox for sending + Manages async HTTP downloads with a limit on maximum + concurrent downloads - - Reference to the simulator this packet is destined for + + Default constructor - - Packet that needs to be sent + + Maximum number of parallel downloads from a single endpoint - - Sequence number of the wrapped packet + + Client certificate - - Number of times this packet has been resent + + Cleanup method - - Environment.TickCount when this packet was last sent over the wire + + Setup http download request - - - - - - - - - + + Check the queue for pending work - - - Static helper functions and global variables - - - - This header flag signals that ACKs are appended to the packet - - - This header flag signals that this packet has been sent before - - - This header flags signals that an ACK is expected for this packet - - - This header flag signals that the message is compressed using zerocoding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Given an X/Y location in absolute (grid-relative) terms, a region - handle is returned along with the local X/Y location in that region - - The absolute X location, a number such as - 255360.35 - The absolute Y location, a number such as - 255360.35 - The sim-local X position of the global X - position, a value from 0.0 to 256.0 - The sim-local Y position of the global Y - position, a value from 0.0 to 256.0 - A 64-bit region handle that can be used to teleport to - - - - Converts a floating point number to a terse string format used for - transmitting numbers in wearable asset files - - Floating point number to convert to a string - A terse string representation of the input number + + Enqueue a new HTPP download - - - Convert a variable length field (byte array) to a string, with a - field name prepended to each line of the output - - If the byte array has unprintable characters in it, a - hex dump will be written instead - The StringBuilder object to write to - The byte array to convert to a string - A field name to prepend to each line of output + + Describes tasks returned in LandStatReply - + - Decode a zerocoded byte array, used to decompress packets marked - with the zerocoded flag + Estate level administration and utilities - Any time a zero is encountered, the next byte is a count - of how many zeroes to expand. One zero is encoded with 0x00 0x01, - two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The - first four bytes are copied directly to the output buffer. - - The byte array to decode - The length of the byte array to decode. This - would be the length of the packet up to (but not including) any - appended ACKs - The output byte array to decode to - The length of the output buffer - + - Encode a byte array with zerocoding. Used to compress packets marked - with the zerocoded flag. Any zeroes in the array are compressed down - to a single zero byte followed by a count of how many zeroes to expand - out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, - three zeroes becomes 0x00 0x03, etc. The first four bytes are copied - directly to the output buffer. + Constructor for EstateTools class - The byte array to encode - The length of the byte array to encode - The output byte array to encode to - The length of the output buffer + + - - - Calculates the CRC (cyclic redundancy check) needed to upload inventory. - - Creation date - Sale type - Inventory type - Type - Asset ID - Group ID - Sale price - Owner ID - Creator ID - Item ID - Folder ID - Everyone mask (permissions) - Flags - Next owner mask (permissions) - Group mask (permissions) - Owner mask (permissions) - The calculated CRC + + Used in the ReportType field of a LandStatRequest - - - Attempts to load a file embedded in the assembly - - The filename of the resource to load - A Stream for the requested file, or null if the resource - was not successfully loaded + + Used by EstateOwnerMessage packets - - - Attempts to load a file either embedded in the assembly or found in - a given search path - - The filename of the resource to load - An optional path that will be searched if - the asset is not found embedded in the assembly - A Stream for the requested file, or null if the resource - was not successfully loaded + + Used by EstateOwnerMessage packets - + - Converts a list of primitives to an object that can be serialized - with the LLSD system - Primitives to convert to a serializable object - An object that can be serialized with LLSD - - - Deserializes OSD in to a list of primitives - - Structure holding the serialized primitive list, - must be of the SDMap type - A list of deserialized primitives + + No flags set - - - Converts a struct or class object containing fields only into a key value separated string - - The struct object - A string containing the struct fields as the keys, and the field value as the value separated - - - // Add the following code to any struct or class containing only fields to override the ToString() - // method to display the values of the passed object - - /// Print the struct data as a string - ///A string containing the field name, and field value - public override string ToString() - { - return Helpers.StructToString(this); - } - - + + Only return targets scripted objects - - - Passed to Logger.Log() to identify the severity of a log entry - + + Only return targets objects if on others land - - No logging information will be output + + Returns target's scripted objects and objects on other parcels - - Non-noisy useful information, may be helpful in - debugging a problem + + Ground texture settings for each corner of the region - - A non-critical error occurred. A warning will not - prevent the rest of the library from operating as usual, - although it may be indicative of an underlying issue + + Used by GroundTextureHeightSettings - - A critical error has occurred. Generally this will - be followed by the network layer shutting down, although the - stability of the library after an error is uncertain + + The high and low texture thresholds for each corner of the sim - - Used for internal testing, this logging level can - generate very noisy (long and/or repetitive) messages. Don't - pass this to the Log() function, use DebugLog() instead. - + + Textures for each of the four terrain height levels - - - Access to the data server which allows searching for land, events, people, etc - + + Upper/lower texture boundaries for each corner of the sim - + The event subscribers. null if no subcribers - - Raises the EventInfoReply event - An EventInfoReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the DirEventsReply event - An DirEventsReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the PlacesReply event - A PlacesReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the DirPlacesReply event - A DirPlacesReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the DirClassifiedsReply event - A DirClassifiedsReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the DirGroupsReply event - A DirGroupsReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the DirPeopleReply event - A DirPeopleReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the DirLandReply event - A DirLandReplyEventArgs object containing the + + Thread sync lock object + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raises the TopCollidersReply event + A TopCollidersReplyEventArgs object containing the data returned from the data server - - Thread sync lock object + + Raises the TopScriptsReply event + A TopScriptsReplyEventArgs object containing the + data returned from the data server - - - Constructs a new instance of the DirectoryManager class - - An instance of GridClient + + Raises the EstateUsersReply event + A EstateUsersReplyEventArgs object containing the + data returned from the data server - + + Raises the EstateGroupsReply event + A EstateGroupsReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateManagersReply event + A EstateManagersReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateBansReply event + A EstateBansReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateCovenantReply event + A EstateCovenantReplyEventArgs object containing the + data returned from the data server + + + Raises the EstateUpdateInfoReply event + A EstateUpdateInfoReplyEventArgs object containing the + data returned from the data server + + - Query the data server for a list of classified ads containing the specified string. - Defaults to searching for classified placed in any category, and includes PG, Adult and Mature - results. - - Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - The event is raised when a response is received from the simulator + Requests estate information such as top scripts and colliders - A string containing a list of keywords to search for - A UUID to correlate the results when the event is raised + + + + + + + + - + + Requests estate settings, including estate manager and access/ban lists + + + Requests the "Top Scripts" list for the current region + + + Requests the "Top Colliders" list for the current region + + - Query the data server for a list of classified ads which contain specified keywords (Overload) - - The event is raised when a response is received from the simulator + Set several estate specific configuration variables - A string containing a list of keywords to search for - The category to search - A set of flags which can be ORed to modify query options - such as classified maturity rating. - A UUID to correlate the results when the event is raised - - Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature - - UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); - - - - Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - + The Height of the waterlevel over the entire estate. Defaults to 20 + The maximum height change allowed above the baked terrain. Defaults to 4 + The minimum height change allowed below the baked terrain. Defaults to -4 + true to use + if True forces the sun position to the position in SunPosition + The current position of the sun on the estate, or when FixedSun is true the static position + the sun will remain. 6.0 = Sunrise, 30.0 = Sunset - + - Starts search for places (Overloaded) - - The event is raised when a response is received from the simulator + Request return of objects owned by specified avatar - Search text - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised + The Agents owning the primitives to return + specify the coverage and type of objects to be included in the return + true to perform return on entire estate - + - Queries the dataserver for parcels of land which are flagged to be shown in search - - The event is raised when a response is received from the simulator - A string containing a list of keywords to search for separated by a space character - A set of flags which can be ORed to modify query options - such as classified maturity rating. - The category to search - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult - - UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); - - - - Additional information on the results can be obtained by using the ParcelManager.InfoRequest method - + + + + - + - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator + Used for setting and retrieving various estate panel settings - What type of land to search for. Auction, - estate, mainland, "first land", etc - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. + EstateOwnerMessage Method field + List of parameters to include - + - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator + Kick an avatar from an estate - What type of land to search for. Auction, - estate, mainland, "first land", etc - Maximum price to search for - Maximum area to search for - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. + Key of Agent to remove - + - Send a request to the data server for land sales listings - - - Flags sent to specify query options - - Available flags: - Specify the parcel rating with one or more of the following: - IncludePG IncludeMature IncludeAdult - - Specify the field to pre sort the results with ONLY ONE of the following: - PerMeterSort NameSort AreaSort PricesSort - - Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order - SortAsc - - Specify additional filters to limit the results with one or both of the following: - LimitByPrice LimitByArea - - Flags can be combined by separating them with the | (pipe) character - - Additional details can be found in - - What type of land to search for. Auction, - Estate or Mainland - Maximum price to search for when the - DirFindFlags.LimitByPrice flag is specified in findFlags - Maximum area to search for when the - DirFindFlags.LimitByArea flag is specified in findFlags - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - The event will be raised with the response from the simulator - - There is no way to determine how many results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each reply. - - Any land set for sale to either anybody or specific to the connected agent will be included in the - results if the land is included in the query - - - // request all mainland, any maturity rating that is larger than 512 sq.m - StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); - + Ban an avatar from an estate + Key of Agent to remove + Ban user from this estate and all others owned by the estate owner - + + Unban an avatar from an estate + Key of Agent to remove + /// Unban user from this estate and all others owned by the estate owner + - Search for Groups + Send a message dialog to everyone in an entire estate - The name or portion of the name of the group you wish to search for - Start from the match number - + Message to send all users in the estate - + - Search for Groups + Send a message dialog to everyone in a simulator - The name or portion of the name of the group you wish to search for - Start from the match number - Search flags - + Message to send all users in the simulator - + - Search the People directory for other avatars + Send an avatar back to their home location - The name or portion of the name of the avatar you wish to search for - - + Key of avatar to send home - + - Search Places for parcels of land you personally own + Begin the region restart process - + - Searches Places for land owned by the specified group + Cancels a region restart - ID of the group you want to recieve land list for (You must be a member of the group) - Transaction (Query) ID which can be associated with results from your request. - + + Estate panel "Region" tab settings + + + Estate panel "Debug" tab settings + + + Used for setting the region's terrain textures for its four height levels + + + + + + + + + + + Used for setting sim terrain texture heights + + + Requests the estate covenant + + - Search the Places directory for parcels that are listed in search and contain the specified keywords + Upload a terrain RAW file - A string containing the keywords to search for - Transaction (Query) ID which can be associated with results from your request. + A byte array containing the encoded terrain data + The name of the file being uploaded + The Id of the transfer request - + - Search Places - All Options + Teleports all users home in current Estate - One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. - One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer - A string containing a list of keywords to search for separated by a space character - String Simulator Name to search in - LLUID of group you want to recieve results for - Transaction (Query) ID which can be associated with results from your request. - Transaction (Query) ID which can be associated with results from your request. - + - Search All Events with specifid searchText in all categories, includes PG, Mature and Adult - - A string containing a list of keywords to search for separated by a space character - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - UUID of query to correlate results in callback. + Remove estate manager + Key of Agent to Remove + removes manager to this estate and all others owned by the estate owner - + - Search Events - - A string containing a list of keywords to search for separated by a space character - One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult - from the Enum - - Multiple flags can be combined by separating the flags with the | (pipe) character - "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled - For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - EventCategory event is listed under. - UUID of query to correlate results in callback. - - - Requests Event Details - ID of Event returned from the method - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from + Add estate manager + Key of Agent to Add + Add agent as manager to this estate and all others owned by the estate owner - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Add's an agent to the estate Allowed list + Key of Agent to Add + Add agent as an allowed reisdent to All estates if true - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Removes an agent from the estate Allowed list + Key of Agent to Remove + Removes agent as an allowed reisdent from All estates if true - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from + + + Add's a group to the estate Allowed list + Key of Group to Add + Add Group as an allowed group to All estates if true - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Removes a group from the estate Allowed list + Key of Group to Remove + Removes Group as an allowed Group from All estates if true - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - Raised when the data server responds to a request. + + Raised on LandStatReply when the report type is for "top colliders" - - Raised when the data server responds to a request. + + Construct a new instance of the TopCollidersReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply - - Raised when the data server responds to a request. + + + The number of returned items in LandStatReply + - - Raised when the data server responds to a request. + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + - - Raised when the data server responds to a request. + + Raised on LandStatReply when the report type is for "top Scripts" - - Raised when the data server responds to a request. + + Construct a new instance of the TopScriptsReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply - - Raised when the data server responds to a request. + + + The number of scripts returned in LandStatReply + - - Raised when the data server responds to a request. + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + - - Classified Ad categories + + Returned, along with other info, upon a successful .RequestInfo() - - Classified is listed in the Any category + + Construct a new instance of the EstateBansReplyEventArgs class + The estate's identifier on the grid + The number of returned items in LandStatReply + User UUIDs banned - - Classified is shopping related + + + The identifier of the estate + - - Classified is + + + The number of returned itmes + - - + + + List of UUIDs of Banned Users + - - + + Returned, along with other info, upon a successful .RequestInfo() - - + + Construct a new instance of the EstateUsersReplyEventArgs class + The estate's identifier on the grid + The number of users + Allowed users UUIDs - - + + + The identifier of the estate + - - + + + The number of returned items + - - + + + List of UUIDs of Allowed Users + - - + + Returned, along with other info, upon a successful .RequestInfo() - - Event Categories + + Construct a new instance of the EstateGroupsReplyEventArgs class + The estate's identifier on the grid + The number of Groups + Allowed Groups UUIDs - - + + + The identifier of the estate + - - + + + The number of returned items + - - + + + List of UUIDs of Allowed Groups + - - + + Returned, along with other info, upon a successful .RequestInfo() - - + + Construct a new instance of the EstateManagersReplyEventArgs class + The estate's identifier on the grid + The number of Managers + Managers UUIDs - - + + + The identifier of the estate + - - + + + The number of returned items + - - + + + List of UUIDs of the Estate's Managers + - - + + Returned, along with other info, upon a successful .RequestInfo() - - + + Construct a new instance of the EstateCovenantReplyEventArgs class + The Covenant ID + The timestamp + The estate's name + The Estate Owner's ID (can be a GroupID) - - + + + The Covenant + - - + + + The timestamp + - + - Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. - - Flags can be combined using the | (pipe) character, not all flags are available in all queries + The Estate name - - Query the People database + + + The Estate Owner's ID (can be a GroupID) + - - + + Returned, along with other info, upon a successful .RequestInfo() - - + + Construct a new instance of the EstateUpdateInfoReplyEventArgs class + The estate's name + The Estate Owners ID (can be a GroupID) + The estate's identifier on the grid + + - - Query the Groups database - - - Query the Events database + + + The estate's name + - - Query the land holdings database for land owned by the currently connected agent + + + The Estate Owner's ID (can be a GroupID) + - - + + + The identifier of the estate on the grid + - - Query the land holdings database for land which is owned by a Group + + + - - Specifies the query should pre sort the results based upon traffic - when searching the Places database + + + Registers, unregisters, and fires events generated by incoming packets + - - + + + Default constructor + + + - - + + + Object that is passed to worker threads in the ThreadPool for + firing packet callbacks + - - + + Callback to fire for this packet - - + + Reference to the simulator that this packet came from - - Specifies the query should pre sort the results in an ascending order when searching the land sales database. - This flag is only used when searching the land sales database + + The packet that needs to be processed - - Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. - This flag is only used when searching the land sales database + + Reference to the GridClient object - - Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. - This flag is only used when searching the land sales database + + + Register an event handler + + Use PacketType.Default to fire this event on every + incoming packet + Packet type to register the handler for + Callback to be fired + True if this callback should be ran + asynchronously, false to run it synchronous - - Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. - This flag is only used when searching the land sales database + + + Unregister an event handler + + Packet type to unregister the handler for + Callback to be unregistered - - Specifies the query should pre sort the results using the Name field when searching the land sales database. - This flag is only used when searching the land sales database + + + Fire the events registered for this packet type + + Incoming packet type + Incoming packet + Simulator this packet was received from - - When set, only parcels less than the specified Price will be included when searching the land sales database. - This flag is only used when searching the land sales database + + + Registers, unregisters, and fires events generated by the Capabilities + event queue + - - When set, only parcels greater than the specified Size will be included when searching the land sales database. - This flag is only used when searching the land sales database + + + Default constructor + + Reference to the GridClient object - - + + + Object that is passed to worker threads in the ThreadPool for + firing CAPS callbacks + - - + + Callback to fire for this packet - - Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases + + Name of the CAPS event - - Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases + + Strongly typed decoded data - - Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases + + Reference to the simulator that generated this event - - + + Reference to the GridClient object - + - Land types to search dataserver for + Register an new event handler for a capabilities event sent via the EventQueue + Use String.Empty to fire this event on every CAPS event + Capability event name to register the + handler for + Callback to fire - - Search Auction, Mainland and Estate - - - Land which is currently up for auction + + + Unregister a previously registered capabilities handler + + Capability event name unregister the + handler for + Callback to unregister - - Parcels which are on the mainland (Linden owned) continents + + + Fire the events registered for this event type synchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event - - Parcels which are on privately owned simulators + + + Fire the events registered for this event type asynchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event - + - The content rating of the event - - Event is PG + + The avatar has no rights - - Event is Mature + + The avatar can see the online status of the target avatar - - Event is Adult + + The avatar can see the location of the target avatar on the map - + + The avatar can modify the ojects of the target avatar + + - Classified Ad Options + This class holds information about an avatar in the friends list. There are two ways + to interface to this class. The first is through the set of boolean properties. This is the typical + way clients of this class will use it. The second interface is through two bitflag properties, + TheirFriendsRights and MyFriendsRights - There appear to be two formats the flags are packed in. - This set of flags is for the newer style - - - - - - - - + + + Used internally when building the initial list of friends at login time + + System ID of the avatar being prepesented + Rights the friend has to see you online and to modify your objects + Rights you have to see your friend online and to modify their objects - - + + + System ID of the avatar + - - + + + full name of the avatar + - + - Classified ad query options + True if the avatar is online - - Include all ads in results + + + True if the friend can see if I am online + - - Include PG ads in results + + + True if the friend can see me on the map + - - Include Mature ads in results + + + True if the freind can modify my objects + - - Include Adult ads in results + + + True if I can see if my friend is online + - + - The For Sale flag in PlacesReplyData + True if I can see if my friend is on the map - - Parcel is not listed for sale + + + True if I can modify my friend's objects + - - Parcel is For Sale + + + My friend's rights represented as bitmapped flags + - + - A classified ad on the grid + My rights represented as bitmapped flags - - UUID for this ad, useful for looking up detailed - information about it - - - The title of this classified ad - - - Flags that show certain options applied to the classified - - - Creation date of the ad - - - Expiration date of the ad - - - Price that was paid for this ad - - - Print the struct data as a string - A string containing the field name, and field value - - + - A parcel retrieved from the dataserver such as results from the - "For-Sale" listings or "Places" Search + FriendInfo represented as a string + A string reprentation of both my rights and my friends rights - - The unique dataserver parcel ID - This id is used to obtain additional information from the entry - by using the method + + + This class is used to add and remove avatars from your friends list and to manage their permission. + - - A string containing the name of the parcel + + + Internal constructor + + A reference to the GridClient Object - - The size of the parcel - This field is not returned for Places searches + + The event subscribers. null if no subcribers - - The price of the parcel - This field is not returned for Places searches + + Thread sync lock object - - If True, this parcel is flagged to be auctioned + + The event subscribers. null if no subcribers - - If true, this parcel is currently set for sale + + Thread sync lock object - - Parcel traffic + + The event subscribers. null if no subcribers - - Print the struct data as a string - A string containing the field name, and field value + + Thread sync lock object - - - An Avatar returned from the dataserver - + + The event subscribers. null if no subcribers - - Online status of agent - This field appears to be obsolete and always returns false + + Thread sync lock object - - The agents first name + + The event subscribers. null if no subcribers - - The agents last name + + Thread sync lock object - - The agents + + The event subscribers. null if no subcribers - - Print the struct data as a string - A string containing the field name, and field value + + Thread sync lock object - - - Response to a "Groups" Search - + + The event subscribers. null if no subcribers - - The Group ID + + Thread sync lock object - - The name of the group + + The event subscribers. null if no subcribers - - The current number of members + + Thread sync lock object - - Print the struct data as a string - A string containing the field name, and field value + + + A dictionary of key/value pairs containing known friends of this avatar. + The Key is the of the friend, the value is a + object that contains detailed information including permissions you have and have given to the friend + - + - Parcel information returned from a request - - Represents one of the following: - A parcel of land on the grid that has its Show In Search flag set - A parcel of land owned by the agent making the request - A parcel of land owned by a group the agent making the request is a member of - - - In a request for Group Land, the First record will contain an empty record - - Note: This is not the same as searching the land for sale data source + A Dictionary of key/value pairs containing current pending frienship offers. + The key is the of the avatar making the request, + the value is the of the request which is used to accept + or decline the friendship offer - - The ID of the Agent of Group that owns the parcel + + Raised when the simulator sends notification one of the members in our friends list comes online - - The name + + Raised when the simulator sends notification one of the members in our friends list goes offline - - The description + + Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions - - The Size of the parcel + + Raised when the simulator sends us the names on our friends list - - The billable Size of the parcel, for mainland - parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller - than the ActualArea. For Estate land this will always be 0 + + Raised when the simulator sends notification another agent is offering us friendship - - Indicates the ForSale status of the parcel + + Raised when a request we sent to friend another agent is accepted or declined - - The Gridwide X position + + Raised when the simulator sends notification one of the members in our friends list has terminated + our friendship - - The Gridwide Y position + + Raised when the simulator sends the location of a friend we have + requested map location info for - - The Z position of the parcel, or 0 if no landing point set + + Raises the FriendOnline event + A FriendInfoEventArgs object containing the + data returned from the data server - - The name of the Region the parcel is located in + + Raises the FriendOffline event + A FriendInfoEventArgs object containing the + data returned from the data server - - The Asset ID of the parcels Snapshot texture + + Raises the FriendRightsUpdate event + A FriendInfoEventArgs object containing the + data returned from the data server - - The calculated visitor traffic + + Raises the FriendNames event + A FriendNamesEventArgs object containing the + data returned from the data server - - The billing product SKU - Known values are: - - 023Mainland / Full Region - 024Estate / Full Region - 027Estate / Openspace - 029Estate / Homestead - 129Mainland / Homestead (Linden Owned) - - + + Raises the FriendshipOffered event + A FriendshipOfferedEventArgs object containing the + data returned from the data server - - No longer used, will always be 0 + + Raises the FriendshipResponse event + A FriendshipResponseEventArgs object containing the + data returned from the data server - - Get a SL URL for the parcel - A string, containing a standard SLURL + + Raises the FriendshipTerminated event + A FriendshipTerminatedEventArgs object containing the + data returned from the data server - - Print the struct data as a string - A string containing the field name, and field value + + Raises the FriendFoundReply event + A FriendFoundReplyEventArgs object containing the + data returned from the data server - + - An "Event" Listing summary + Accept a friendship request + agentID of avatatar to form friendship with + imSessionID of the friendship request message - - The ID of the event creator - - - The name of the event - - - The events ID - - - A string containing the short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) - - - The events maturity rating - - - Print the struct data as a string - A string containing the field name, and field value + + + Decline a friendship request + + + of friend + imSessionID of the friendship request message - + - The details of an "Event" + Overload: Offer friendship to an avatar. + System ID of the avatar you are offering friendship to - - The events ID - - - The ID of the event creator - - - The name of the event - - - The category - - - The events description - - - The short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) UTC adjusted - - - The length of the event in minutes - - - 0 if no cover charge applies - - - The cover charge amount in L$ if applicable - - - The name of the region where the event is being held - - - The gridwide location of the event - - - The maturity rating - - - Get a SL URL for the parcel where the event is hosted - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value + + + Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + A message to send with the request - - Contains the Event data returned from the data server from an EventInfoRequest + + + Terminate a friendship with an avatar + + System ID of the avatar you are terminating the friendship with - - Construct a new instance of the EventInfoReplyEventArgs class - A single EventInfo object containing the details of an event + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + - A single EventInfo object containing the details of an event + Change the rights of a friend avatar. + the of the friend + the new rights to give the friend + This method will implicitly set the rights to those passed in the rights parameter. - - Contains the "Event" detail data returned from the data server + + + Use to map a friends location on the grid. + + Friends UUID to find + + + - - Construct a new instance of the DirEventsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Events" returned by the search query + + + Use to track a friends movement on the grid + + Friends Key - - The ID returned by + + + Ask for a notification of friend's online status + + Friend's UUID - - A list of "Events" returned by the data server + + + This handles the asynchronous response of a RequestAvatarNames call. + + + + names cooresponding to the the list of IDs sent the the RequestAvatarNames call. - - Contains the "Event" list data returned from the data server + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Construct a new instance of PlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Places" returned by the data server query + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The ID returned by + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - A list of "Places" returned by the data server + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Contains the places data returned from the data server + + + Populate FriendList with data from the login reply + + true if login was successful + true if login request is requiring a redirect + A string containing the response to the login request + A string containing the reason for the request + A object containing the decoded + reply from the login server - - Construct a new instance of the DirPlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing land data returned by the data server + + Contains information on a member of our friends list - - The ID returned by + + + Construct a new instance of the FriendInfoEventArgs class + + The FriendInfo - - A list containing Places data returned by the data server + + Get the FriendInfo - - Contains the classified data returned from the data server + + Contains Friend Names - - Construct a new instance of the DirClassifiedsReplyEventArgs class - A list of classified ad data returned from the data server + + + Construct a new instance of the FriendNamesEventArgs class + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name - - A list containing Classified Ads returned by the data server + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name - - Contains the group data returned from the data server + + Sent when another agent requests a friendship with our agent - - Construct a new instance of the DirGroupsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of groups data returned by the data server + + + Construct a new instance of the FriendshipOfferedEventArgs class + + The ID of the agent requesting friendship + The name of the agent requesting friendship + The ID of the session, used in accepting or declining the + friendship offer - - The ID returned by + + Get the ID of the agent requesting friendship - - A list containing Groups data returned by the data server + + Get the name of the agent requesting friendship - - Contains the people data returned from the data server + + Get the ID of the session, used in accepting or declining the + friendship offer - - Construct a new instance of the DirPeopleReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of people data returned by the data server + + A response containing the results of our request to form a friendship with another agent - - The ID returned by + + + Construct a new instance of the FriendShipResponseEventArgs class + + The ID of the agent we requested a friendship with + The name of the agent we requested a friendship with + true if the agent accepted our friendship offer - - A list containing People data returned by the data server + + Get the ID of the agent we requested a friendship with - - Contains the land sales data returned from the data server + + Get the name of the agent we requested a friendship with - - Construct a new instance of the DirLandReplyEventArgs class - A list of parcels for sale returned by the data server + + true if the agent accepted our friendship offer - - A list containing land forsale data returned by the data server + + Contains data sent when a friend terminates a friendship with us - + - Capabilities is the name of the bi-directional HTTP REST protocol - used to communicate non real-time transactions such as teleporting or - group messaging + Construct a new instance of the FrindshipTerminatedEventArgs class + The ID of the friend who terminated the friendship with us + The name of the friend who terminated the friendship with us - - Reference to the simulator this system is connected to + + Get the ID of the agent that terminated the friendship with us - - - Default constructor - - - + + Get the name of the agent that terminated the friendship with us - + - Request the URI of a named capability + Data sent in response to a request which contains the information to allow us to map the friends location - Name of the capability to request - The URI of the requested capability, or String.Empty if - the capability does not exist - + - Process any incoming events, check to see if we have a message created for the event, + Construct a new instance of the FriendFoundReplyEventArgs class - - + The ID of the agent we have requested location information for + The region handle where our friend is located + The simulator local position our friend is located - - Capabilities URI this system was initialized with + + Get the ID of the agent we have received location information for - - Whether the capabilities event queue is connected and - listening for incoming events + + Get the region handle where our mapped friend is located - + + Get the simulator local position where our friend is located + + - Triggered when an event is received via the EventQueueGet - capability + Main class to expose grid functionality to clients. All of the + classes needed for sending and receiving data are accessible through + this class. - Event name - Decoded event data - The simulator that generated the event + + + // Example minimum code required to instantiate class and + // connect to a simulator. + using System; + using System.Collections.Generic; + using System.Text; + using OpenMetaverse; + namespace FirstBot + { + class Bot + { + public static GridClient Client; + static void Main(string[] args) + { + Client = new GridClient(); // instantiates the GridClient class + // to the global Client object + // Login to Simulator + Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); + // Wait for a Keypress + Console.ReadLine(); + // Logout of simulator + Client.Network.Logout(); + } + } + } + + - + - Permission request flags, asked when a script wants to control an Avatar + Default constructor - - Placeholder for empty values, shouldn't ever see this + + Networking subsystem - - Script wants ability to take money from you + + Settings class including constant values and changeable + parameters for everything - - Script wants to take camera controls for you + + Parcel (subdivided simulator lots) subsystem - - Script wants to remap avatars controls + + Our own avatars subsystem - - Script wants to trigger avatar animations - This function is not implemented on the grid + + Other avatars subsystem - - Script wants to attach or detach the prim or primset to your avatar + + Estate subsystem - - Script wants permission to release ownership - This function is not implemented on the grid - The concept of "public" objects does not exist anymore. + + Friends list subsystem - - Script wants ability to link/delink with other prims + + Grid (aka simulator group) subsystem - - Script wants permission to change joints - This function is not implemented on the grid + + Object subsystem - - Script wants permissions to change permissions - This function is not implemented on the grid + + Group subsystem - - Script wants to track avatars camera position and rotation + + Asset subsystem - - Script wants to control your camera + + Appearance subsystem - - - Special commands used in Instant Messages - + + Inventory subsystem - - Indicates a regular IM from another agent + + Directory searches including classifieds, people, land + sales, etc - - Simple notification box with an OK button + + Handles land, wind, and cloud heightmaps - - You've been invited to join a group. + + Handles sound-related networking - - Inventory offer + + Throttling total bandwidth usage, or allocating bandwidth + for specific data stream types - - Accepted inventory offer + + + Return the full name of this instance + + Client avatars full name - - Declined inventory offer + + + Map layer request type + - - Group vote + + Objects and terrain are shown - - An object is offering its inventory + + Only the terrain is shown, no objects - - Accept an inventory offer from an object + + Overlay showing land for sale and for auction - - Decline an inventory offer from an object + + + Type of grid item, such as telehub, event, populator location, etc. + - - Unknown + + Telehub - - Start a session, or add users to a session + + PG rated event - - Start a session, but don't prune offline users + + Mature rated event - - Start a session with your group + + Popular location - - Start a session without a calling card (finder or objects) + + Locations of avatar groups in a region - - Send a message to a session + + Land for sale - - Leave a session + + Classified ad - - Indicates that the IM is from an object + + Adult rated event - - Sent an IM to a busy user, this is the auto response + + Adult land for sale - - Shows the message in the console and chat history + + + Information about a region on the grid map + - - Send a teleport lure + + Sim X position on World Map - - Response sent to the agent which inititiated a teleport invitation + + Sim Y position on World Map - - Response sent to the agent which inititiated a teleport invitation + + Sim Name (NOTE: In lowercase!) - - Only useful if you have Linden permissions + + + - - A placeholder type for future expansion, currently not - used + + Appears to always be zero (None) - - IM to tell the user to go to an URL + + Sim's defined Water Height - - IM for help + + + - - IM sent automatically on call for help, sends a lure - to each Helper reached + + UUID of the World Map image - - Like an IM but won't go to email + + Unique identifier for this region, a combination of the X + and Y position - - IM from a group officer to all group members + + + + + - - Unknown + + + + + - - Unknown + + + + + + + - - Accept a group invitation + + + Visual chunk of the grid map + - - Decline a group invitation + + + Base class for Map Items + - - Unknown + + The Global X position of the item - - An avatar is offering you friendship - - - An avatar has accepted your friendship offer + + The Global Y position of the item - - An avatar has declined your friendship offer + + Get the Local X position of the item - - Indicates that a user has started typing + + Get the Local Y position of the item - - Indicates that a user has stopped typing + + Get the Handle of the region - + - Flag in Instant Messages, whether the IM should be delivered to - offline avatars as well + Represents an agent or group of agents location - - Only deliver to online avatars - - - If the avatar is offline the message will be held until - they login next, and possibly forwarded to their e-mail account - - + - Conversion type to denote Chat Packet types in an easier-to-understand format + Represents a Telehub location - - Whisper (5m radius) - - - Normal chat (10/20m radius), what the official viewer typically sends - - - Shouting! (100m radius) - - - Event message when an Avatar has begun to type - - - Event message when an Avatar has stopped typing - - - Send the message to the debug channel - - - Event message when an object uses llOwnerSay - - - Special value to support llRegionSay, never sent to the client - - + - Identifies the source of a chat message + Represents a non-adult parcel of land for sale - - Chat from the grid or simulator - - - Chat from another avatar - - - Chat from an object + + + Represents an Adult parcel of land for sale + - + - + Represents a PG Event - - + + + Represents a Mature event + - - + + + Represents an Adult event + - - + + + Manages grid-wide tasks such as the world map + - + - Effect type used in ViewerEffect packets + Constructor + Instance of GridClient object to associate with this GridManager instance - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - Project a beam from a source to a destination, such as - the one used when editing an object + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + A dictionary of all the regions, indexed by region name - - Create a swirl of particles around an object + + A dictionary of all the regions, indexed by region handle - - + + Raised when the simulator sends a + containing the location of agents in the simulator - - + + Raised when the simulator sends a Region Data in response to + a Map request - - Cause an avatar to look at an object + + Raised when the simulator sends GridLayer object containing + a map tile coordinates and texture information - - Cause an avatar to point at an object + + Raised when the simulator sends GridItems object containing + details on events, land sales at a specific location - - - The action an avatar is doing when looking at something, used in - ViewerEffect packets for the LookAt effect - + + Raised in response to a Region lookup - - + + Unknown - - + + Current direction of the sun - - + + Current angular velocity of the sun - - + + Current world time - - + + Raises the CoarseLocationUpdate event + A CoarseLocationUpdateEventArgs object containing the + data sent by simulator - - + + Raises the GridRegion event + A GridRegionEventArgs object containing the + data sent by simulator - - Deprecated + + Raises the GridLayer event + A GridLayerEventArgs object containing the + data sent by simulator - - + + Raises the GridItems event + A GridItemEventArgs object containing the + data sent by simulator - - + + Raises the RegionHandleReply event + A RegionHandleReplyEventArgs object containing the + data sent by simulator - - + + + + + - - + + + Request a map layer + + The name of the region + The type of layer - + - The action an avatar is doing when pointing at something, used in - ViewerEffect packets for the PointAt effect + + + + + + + + + + + + - - + + + + + + + + + + + + + - - + + + + + + + + + - - + + + Request data for all mainland (Linden managed) simulators + - - + + + Request the region handle for the specified region UUID + + UUID of the region to look up - + - Money transaction types + Get grid region information using the region name, this function + will block until it can find the region or gives up + Name of sim you're looking for + Layer that you are requesting + Will contain a GridRegion for the sim you're + looking for if successful, otherwise an empty structure + True if the GridRegion was successfully fetched, otherwise + false - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + + Avatar group management + - - + + Key of Group Member - - + + Total land contribution - - + + Online status information - - + + Abilities that the Group Member has - - + + Current group title - - + + Is a group owner - - + + + Role manager for a group + - - + + Key of the group - - + + Key of Role - - + + Name of Role - - + + Group Title associated with Role - - + + Description of Role - - + + Abilities Associated with Role - - + + Returns the role's title + The role's title - - + + + Class to represent Group Title + - - + + Key of the group - - + + ID of the role title belongs to - - + + Group Title - - + + Whether title is Active - - + + Returns group title - - + + + Represents a group on the grid + - - + + Key of Group - - + + Key of Group Insignia - - + + Key of Group Founder - - + + Key of Group Role for Owners - - + + Name of Group - - + + Text of Group Charter - - + + Title of "everyone" role - - + + Is the group open for enrolement to everyone - - + + Will group show up in search - - + + + - - + + + - - + + + - - + + Is the group Mature - - + + Cost of group membership - - + + + - - + + + - - + + The total number of current members this group has - - + + The number of roles this group has configured - - + + Show this group in agent's profile - - + + Returns the name of the group + A string containing the name of the group - - + + + A group Vote + - - + + Key of Avatar who created Vote - - + + Text of the Vote proposal - + + Total number of votes + + - + A group proposal - - - - - + + The Text of the proposal - - + + The minimum number of members that must vote before proposal passes or failes - - + + The required ration of yes/no votes required for vote to pass + The three options are Simple Majority, 2/3 Majority, and Unanimous + TODO: this should be an enum + + The duration in days votes are accepted - - + + + - - + + + - + - - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - + - Flags sent when a script takes or releases a control - NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, - - No Flags set + + + - - Forward (W or up Arrow) + + + - - Back (S or down arrow) + + + - - Move left (shift+A or left arrow) + + + - - Move right (shift+D or right arrow) - - - Up (E or PgUp) - - - Down (C or PgDown) + + + - - Rotate left (A or left arrow) + + + - - Rotate right (D or right arrow) + + + - - Left Mouse Button + + + - - Left Mouse button in MouseLook + + + - + - Currently only used to hide your group title - - No flags set + + + Struct representing a group notice + - - Hide your group title + + + - + - Action state of the avatar, which can currently be typing and - editing - - + + + - - + + + - - + + + + + - + - Current teleport status + Struct representing a group notice list entry - - Unknown status + + Notice ID - - Teleport initialized + + Creation timestamp of notice - - Teleport in progress + + Agent name who created notice - - Teleport failed + + Notice subject - - Teleport completed + + Is there an attachment? - - Teleport cancelled + + Attachment Type - + - + Struct representing a member of a group chat session and their settings - - No flags set, or teleport failed + + The of the Avatar - - Set when newbie leaves help island for first time + + True if user has voice chat enabled - - + + True of Avatar has moderator abilities - - Via Lure + + True if a moderator has muted this avatars chat - - Via Landmark + + True if a moderator has muted this avatars voice - - Via Location + + + Role update flags + - - Via Home + + + - - Via Telehub + + + - - Via Login + + + - - Linden Summoned + + + - - Linden Forced me + + + - - + + + - - Agent Teleported Home via Script + + + - - + + Can send invitations to groups default role - - + + Can eject members from group - - + + Can toggle 'Open Enrollment' and change 'Signup fee' - - forced to new location for example when avatar is banned or ejected + + Member is visible in the public member list - - Teleport Finished via a Lure + + Can create new roles - - Finished, Sim Changed + + Can delete existing roles - - Finished, Same Sim + + Can change Role names, titles and descriptions - - - - + + Can assign other members to assigners role - - + + Can assign other members to any role - - + + Can remove members from roles - - + + Can assign and remove abilities in roles - - - - + + Can change group Charter, Insignia, 'Publish on the web' and which + members are publicly visible in group member listings - - + + Can buy land or deed land to group - - + + Can abandon group owned land to Governor Linden on mainland, or Estate owner for + private estates - - + + Can set land for-sale information on group owned parcels - - + + Can subdivide and join parcels - - - Instant Message - + + Can join group chat sessions - - Key of sender + + Can use voice chat in Group Chat sessions - - Name of sender + + Can moderate group chat sessions - - Key of destination avatar + + Can toggle "Show in Find Places" and set search category - - ID of originating estate + + Can change parcel name, description, and 'Publish on web' settings - - Key of originating region + + Can set the landing point and teleport routing on group land - - Coordinates in originating region + + Can change music and media settings - - Instant message type + + Can toggle 'Edit Terrain' option in Land settings - - Group IM session toggle + + Can toggle various About Land > Options settings - - Key of IM session, for Group Messages, the groups UUID + + Can always terraform land, even if parcel settings have it turned off - - Timestamp of the instant message + + Can always fly while over group owned land - - Instant message text + + Can always rez objects on group owned land - - Whether this message is held for offline avatars + + Can always create landmarks for group owned parcels - - Context specific packed data + + Can set home location on any group owned parcel - - Print the struct data as a string - A string containing the field name, and field value + + Can modify public access settings for group owned parcels - - - Manager class for our own avatar - + + Can manager parcel ban lists on group owned land - - The event subscribers. null if no subcribers + + Can manage pass list sales information - - Raises the ChatFromSimulator event - A ChatEventArgs object containing the - data returned from the data server + + Can eject and freeze other avatars on group owned land - - Thread sync lock object + + Can return objects set to group - - The event subscribers. null if no subcribers + + Can return non-group owned/set objects - - Raises the ScriptDialog event - A SctriptDialogEventArgs object containing the - data returned from the data server + + Can return group owned objects - - Thread sync lock object + + Can landscape using Linden plants - - The event subscribers. null if no subcribers + + Can deed objects to group - - Raises the ScriptQuestion event - A ScriptQuestionEventArgs object containing the - data returned from the data server + + Can move group owned objects - - Thread sync lock object + + Can set group owned objects for-sale - - The event subscribers. null if no subcribers + + Pay group liabilities and receive group dividends - - Raises the LoadURL event - A LoadUrlEventArgs object containing the - data returned from the data server + + Can send group notices - - Thread sync lock object + + Can receive group notices - - The event subscribers. null if no subcribers + + Can create group proposals - - Raises the MoneyBalance event - A BalanceEventArgs object containing the - data returned from the data server + + Can vote on group proposals - - Thread sync lock object + + + Handles all network traffic related to reading and writing group + information + - - The event subscribers. null if no subcribers + + + Construct a new instance of the GroupManager class + + A reference to the current instance - - Raises the MoneyBalanceReply event - A MoneyBalanceReplyEventArgs object containing the - data returned from the data server + + The event subscribers. null if no subcribers - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the IM event - A InstantMessageEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the TeleportProgress event - A TeleportEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the AgentDataReply event - A AgentDataReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the AnimationsChanged event - A AnimationsChangedEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the MeanCollision event - A MeanCollisionEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the RegionCrossed event - A RegionCrossedEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the GroupChatJoined event - A GroupChatJoinedEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the AlertMessage event - A AlertMessageEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ScriptControlChange event - A ScriptControlEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the CameraConstraint event - A CameraConstraintEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ScriptSensorReply event - A ScriptSensorReplyEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the AvatarSitResponse event - A AvatarSitResponseEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ChatSessionMemberAdded event - A ChatSessionMemberAddedEventArgs object containing the - data returned from the data server - - + Thread sync lock object - + The event subscribers. null if no subcribers - - Raises the ChatSessionMemberLeft event - A ChatSessionMemberLeftEventArgs object containing the - data returned from the data server - - + Thread sync lock object - - Reference to the GridClient instance + + A reference to the current instance - - Used for movement and camera tracking + + Currently-active group members requests - - Currently playing animations for the agent. Can be used to - check the current movement status such as walking, hovering, aiming, - etc. by checking against system animations found in the Animations class + + Currently-active group roles requests - - Dictionary containing current Group Chat sessions and members + + Currently-active group role-member requests - - - Constructor, setup callbacks for packets related to our avatar - - A reference to the Class + + Dictionary keeping group members while request is in progress - - - Send a text message from the Agent to the Simulator - - A containing the message - The channel to send the message on, 0 is the public channel. Channels above 0 - can be used however only scripts listening on the specified channel will see the message - Denotes the type of message being sent, shout, whisper, etc. + + Dictionary keeping mebmer/role mapping while request is in progress - - - Request any instant messages sent while the client was offline to be resent. - + + Dictionary keeping GroupRole information while request is in progress - - - Send an Instant Message to another Avatar - - The recipients - A containing the message to send + + Caches group name lookups - - - Send an Instant Message to an existing group chat or conference chat - - The recipients - A containing the message to send - IM session ID (to differentiate between IM windows) + + Raised when the simulator sends us data containing + our current group membership - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - IDs of sessions for a conference + + Raised when the simulator responds to a RequestGroupName + or RequestGroupNames request - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - Type of instant message to send - Whether to IM offline avatars as well - Senders Position - RegionID Sender is In - Packed binary data that is specific to - the dialog type + + Raised when the simulator responds to a request - - - Send an Instant Message to a group - - of the group to send message to - Text Message being sent. + + Raised when the simulator responds to a request - - - Send an Instant Message to a group the agent is a member of - - The name this IM will show up as being from - of the group to send message to - Text message being sent + + Raised when the simulator responds to a request - - - Send a request to join a group chat session - - of Group to leave + + Raised when the simulator responds to a request - - - Exit a group chat session. This will stop further Group chat messages - from being sent until session is rejoined. - - of Group chat session to leave + + Raised when the simulator responds to a request - - - Reply to script dialog questions. - - Channel initial request came on - Index of button you're "clicking" - Label of button you're "clicking" - of Object that sent the dialog request - + + Raised when a response to a RequestGroupAccountSummary is returned + by the simulator - - - Accept invite for to a chatterbox session - - of session to accept invite to + + Raised when a request to create a group is successful - - - Start a friends conference - - List of UUIDs to start a conference with - the temportary session ID returned in the callback> + + Raised when a request to join a group either + fails or succeeds - - - Start a particle stream between an agent and an object - - Key of the source agent - Key of the target object - - The type from the enum - A unique for this effect + + Raised when a request to leave a group either + fails or succeeds - - - Start a particle stream between an agent and an object - - Key of the source agent - Key of the target object - A representing the beams offset from the source - A which sets the avatars lookat animation - of the Effect + + Raised when A group is removed from the group server - - - Create a particle beam between an avatar and an primitive - - The ID of source avatar - The ID of the target primitive - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam - + + Raised when a request to eject a member from a group either + fails or succeeds - - - Create a particle swirl around a target position using a packet - - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam + + Raised when the simulator sends us group notices + - - - Sends a request to sit on the specified object - - of the object to sit on - Sit at offset + + Raised when another agent invites our avatar to join a group - - - Follows a call to to actually sit on the object - + + Raises the CurrentGroups event + A CurrentGroupsEventArgs object containing the + data sent from the simulator - - Stands up from sitting on a prim or the ground - true of AgentUpdate was sent + + Raises the GroupNamesReply event + A GroupNamesEventArgs object containing the + data response from the simulator - - - Does a "ground sit" at the avatar's current position - + + Raises the GroupProfile event + An GroupProfileEventArgs object containing the + data returned from the simulator - - - Starts or stops flying - - True to start flying, false to stop flying + + Raises the GroupMembers event + A GroupMembersEventArgs object containing the + data returned from the simulator - - - Starts or stops crouching - - True to start crouching, false to stop crouching + + Raises the GroupRolesDataReply event + A GroupRolesDataReplyEventArgs object containing the + data returned from the simulator - + + Raises the GroupRoleMembersReply event + A GroupRolesRoleMembersReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupTitlesReply event + A GroupTitlesReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupAccountSummary event + A GroupAccountSummaryReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupCreated event + An GroupCreatedEventArgs object containing the + data returned from the simulator + + + Raises the GroupJoined event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Raises the GroupLeft event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Raises the GroupDropped event + An GroupDroppedEventArgs object containing the + the group your agent left + + + Raises the GroupMemberEjected event + An GroupMemberEjectedEventArgs object containing the + data returned from the simulator + + + Raises the GroupNoticesListReply event + An GroupNoticesListReplyEventArgs object containing the + data returned from the simulator + + + Raises the GroupInvitation event + An GroupInvitationEventArgs object containing the + data returned from the simulator + + - Starts a jump (begin holding the jump key) + Request a current list of groups the avatar is a member of. + CAPS Event Queue must be running for this to work since the results + come across CAPS. - + - Use the autopilot sim function to move the avatar to a new - position. Uses double precision to get precise movements + Lookup name of group based on groupID - The z value is currently not handled properly by the simulator - Global X coordinate to move to - Global Y coordinate to move to - Z coordinate to move to + groupID of group to lookup name for. - + - Use the autopilot sim function to move the avatar to a new position + Request lookup of multiple group names - The z value is currently not handled properly by the simulator - Integer value for the global X coordinate to move to - Integer value for the global Y coordinate to move to - Floating-point value for the Z coordinate to move to + List of group IDs to request. - + + Lookup group profile data such as name, enrollment, founder, logo, etc + Subscribe to OnGroupProfile event to receive the results. + group ID (UUID) + + + Request a list of group members. + Subscribe to OnGroupMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request group roles + Subscribe to OnGroupRoles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request members (members,role) role mapping for a group. + Subscribe to OnGroupRolesMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request a groups Titles + Subscribe to OnGroupTitles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Begin to get the group account summary + Subscribe to the OnGroupAccountSummary event to receive the results. + group ID (UUID) + How long of an interval + Which interval (0 for current, 1 for last) + + + Invites a user to a group + The group to invite to + A list of roles to invite a person to + Key of person to invite + + + Set a group as the current active group + group ID (UUID) + + + Change the role that determines your active title + Group ID to use + Role ID to change to + + + Set this avatar's tier contribution + Group ID to change tier in + amount of tier to donate + + + + Save wheather agent wants to accept group notices and list this group in their profile + + Group + Accept notices from this group + List this group in the profile + + + Request to join a group + Subscribe to OnGroupJoined event for confirmation. + group ID (UUID) to join. + + + + Request to create a new group. If the group is successfully + created, L$100 will automatically be deducted + + Subscribe to OnGroupCreated event to receive confirmation. + Group struct containing the new group info + + + Update a group's profile and other information + Groups ID (UUID) to update. + Group struct to update. + + + Eject a user from a group + Group ID to eject the user from + Avatar's key to eject + + + Update role information + Modified role to be updated + + + Create a new group role + Group ID to update + Role to create + + + Delete a group role + Group ID to update + Role to delete + + + Remove an avatar from a role + Group ID to update + Role ID to be removed from + Avatar's Key to remove + + + Assign an avatar to a role + Group ID to update + Role ID to assign to + Avatar's ID to assign to role + + + Request the group notices list + Group ID to fetch notices for + + + Request a group notice by key + ID of group notice + + + Send out a group notice + Group ID to update + + GroupNotice structure containing notice data + + + Start a group proposal (vote) + The Group ID to send proposal to + + GroupProposal structure containing the proposal + + + Request to leave a group + Subscribe to OnGroupLeft event to receive confirmation + The group to leave + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Contains the current groups your agent is a member of + + + Construct a new instance of the CurrentGroupsEventArgs class + The current groups your agent is a member of + + + Get the current groups your agent is a member of + + + A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + + Construct a new instance of the GroupNamesEventArgs class + The Group names dictionary + + + Get the Group Names dictionary + + + Represents the members of a group + + + + Construct a new instance of the GroupMembersReplyEventArgs class + + The ID of the request + The ID of the group + The membership list of the group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary of members + + + Represents the roles associated with a group + + + Construct a new instance of the GroupRolesDataReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The dictionary containing the roles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary containing the roles + + + Represents the Role to Member mappings for a group + + + Construct a new instance of the GroupRolesMembersReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The member to roles map + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the member to roles map + + + Represents the titles for a group + + + Construct a new instance of the GroupTitlesReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The titles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the titles + + + Represents the summary data for a group + + + Construct a new instance of the GroupAccountSummaryReplyEventArgs class + The ID of the group + The summary data + + + Get the ID of the group + + + Get the summary data + + + A response to a group create request + + + Construct a new instance of the GroupCreatedReplyEventArgs class + The ID of the group + the success or faulure of the request + A string containing additional information + + + Get the ID of the group + + + true of the group was created successfully + + + A string containing the message + + + Represents a response to a request + + + Construct a new instance of the GroupOperationEventArgs class + The ID of the group + true of the request was successful + + + Get the ID of the group + + + true of the request was successful + + + Represents your agent leaving a group + + + Construct a new instance of the GroupDroppedEventArgs class + The ID of the group + + + Get the ID of the group + + + Represents a list of active group notices + + + Construct a new instance of the GroupNoticesListReplyEventArgs class + The ID of the group + The list containing active notices + + + Get the ID of the group + + + Get the notices list + + + Represents the profile of a group + + + Construct a new instance of the GroupProfileEventArgs class + The group profile + + + Get the group profile + + + + Provides notification of a group invitation request sent by another Avatar + + The invitation is raised when another avatar makes an offer for our avatar + to join a group. + + + The ID of the Avatar sending the group invitation + + + The name of the Avatar sending the group invitation + + + A message containing the request information which includes + the name of the group, the groups charter and the fee to join details + + + The Simulator + + + Set to true to accept invitation, false to decline + + + + Static helper functions and global variables + + + + + Passed to Logger.Log() to identify the severity of a log entry + + + + No logging information will be output + + + Non-noisy useful information, may be helpful in + debugging a problem + + + A non-critical error occurred. A warning will not + prevent the rest of the library from operating as usual, + although it may be indicative of an underlying issue + + + A critical error has occurred. Generally this will + be followed by the network layer shutting down, although the + stability of the library after an error is uncertain + + + Used for internal testing, this logging level can + generate very noisy (long and/or repetitive) messages. Don't + pass this to the Log() function, use DebugLog() instead. + + + + This header flag signals that ACKs are appended to the packet + + + This header flag signals that this packet has been sent before + + + This header flags signals that an ACK is expected for this packet + + + This header flag signals that the message is compressed using zerocoding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Given an X/Y location in absolute (grid-relative) terms, a region + handle is returned along with the local X/Y location in that region + + The absolute X location, a number such as + 255360.35 + The absolute Y location, a number such as + 255360.35 + The sim-local X position of the global X + position, a value from 0.0 to 256.0 + The sim-local Y position of the global Y + position, a value from 0.0 to 256.0 + A 64-bit region handle that can be used to teleport to + + + + Converts a floating point number to a terse string format used for + transmitting numbers in wearable asset files + + Floating point number to convert to a string + A terse string representation of the input number + + + + Convert a variable length field (byte array) to a string, with a + field name prepended to each line of the output + + If the byte array has unprintable characters in it, a + hex dump will be written instead + The StringBuilder object to write to + The byte array to convert to a string + A field name to prepend to each line of output + + + + Decode a zerocoded byte array, used to decompress packets marked + with the zerocoded flag + + Any time a zero is encountered, the next byte is a count + of how many zeroes to expand. One zero is encoded with 0x00 0x01, + two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The + first four bytes are copied directly to the output buffer. + + The byte array to decode + The length of the byte array to decode. This + would be the length of the packet up to (but not including) any + appended ACKs + The output byte array to decode to + The length of the output buffer + + + + Encode a byte array with zerocoding. Used to compress packets marked + with the zerocoded flag. Any zeroes in the array are compressed down + to a single zero byte followed by a count of how many zeroes to expand + out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, + three zeroes becomes 0x00 0x03, etc. The first four bytes are copied + directly to the output buffer. + + The byte array to encode + The length of the byte array to encode + The output byte array to encode to + The length of the output buffer + + + + Calculates the CRC (cyclic redundancy check) needed to upload inventory. + + Creation date + Sale type + Inventory type + Type + Asset ID + Group ID + Sale price + Owner ID + Creator ID + Item ID + Folder ID + Everyone mask (permissions) + Flags + Next owner mask (permissions) + Group mask (permissions) + Owner mask (permissions) + The calculated CRC + + + + Attempts to load a file embedded in the assembly + + The filename of the resource to load + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Attempts to load a file either embedded in the assembly or found in + a given search path + + The filename of the resource to load + An optional path that will be searched if + the asset is not found embedded in the assembly + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Converts a list of primitives to an object that can be serialized + with the LLSD system + + Primitives to convert to a serializable object + An object that can be serialized with LLSD + + + + Deserializes OSD in to a list of primitives + + Structure holding the serialized primitive list, + must be of the SDMap type + A list of deserialized primitives + + + + Converts a struct or class object containing fields only into a key value separated string + + The struct object + A string containing the struct fields as the keys, and the field value as the value separated + + + // Add the following code to any struct or class containing only fields to override the ToString() + // method to display the values of the passed object + /// Print the struct data as a string + ///A string containing the field name, and field value + public override string ToString() + { + return Helpers.StructToString(this); + } + + + + + + The InternalDictionary class is used through the library for storing key/value pairs. + It is intended to be a replacement for the generic Dictionary class and should + be used in its place. It contains several methods for allowing access to the data from + outside the library that are read only and thread safe. + + Key + Value + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, has its initial valies copied from the specified + + + + to copy initial values from + + + // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. + // populates with copied values from example KeyNameCache Dictionary. + // create source dictionary + Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); + KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); + KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); + // Initialize new dictionary. + public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); + + + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + on this member + + + + Indexer for the dictionary + + The key + The value + + + + Gets the number of Key/Value pairs contained in the + + + + Try to get entry from with specified key + + Key to use for lookup + Value returned + + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + Perform an on each entry in an + + to perform + + + // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( + delegate(Primitive prim) + { + if (prim.Text != null) + { + Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", + prim.PropertiesFamily.Name, prim.ID, prim.Text); + } + }); + + + + + Perform an on each key of an + + to perform + + - Use the autopilot sim function to move the avatar to a new position + Perform an on each KeyValuePair of an + + to perform + + + Check if Key exists in Dictionary + Key to check for + + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + The key + The value + + + + Removes the specified key, dictionary locking is not performed - The z value is currently not handled properly by the simulator - Integer value for the local X coordinate to move to - Integer value for the local Y coordinate to move to - Floating-point value for the Z coordinate to move to + The key. + + if successful, otherwise - - Macro to cancel autopilot sim function - Not certain if this is how it is really done - true if control flags were set and AgentUpdate was sent to the simulator + + + Exception class to identify inventory exceptions + - + - Grabs an object + Responsible for maintaining inventory structure. Inventory constructs nodes + and manages node children as is necessary to maintain a coherant hirarchy. + Other classes should not manipulate or create InventoryNodes explicitly. When + A node's parent changes (when a folder is moved, for example) simply pass + Inventory the updated InventoryFolder and it will make the appropriate changes + to its internal representation. - an unsigned integer of the objects ID within the simulator - - + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Thread sync lock object + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + - Overload: Grab a simulated object + By using the bracket operator on this class, the program can get the + InventoryObject designated by the specified uuid. If the value for the corresponding + UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). + If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), + the uuid parameter is ignored. - an unsigned integer of the objects ID within the simulator - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space + The UUID of the InventoryObject to get or set, ignored if set to non-null value. + The InventoryObject corresponding to uuid. - + - Drag an object + The root folder of this avatars inventory - of the object to drag - Drag target in region coordinates - + + + The default shared library folder + + + + + The root node of the avatars inventory + + + + + The root node of the default shared library + + + + Raises the InventoryObjectUpdated Event + A InventoryObjectUpdatedEventArgs object containing + the data sent from the simulator + + + Raises the InventoryObjectRemoved Event + A InventoryObjectRemovedEventArgs object containing + the data sent from the simulator + + + Raises the InventoryObjectAdded Event + A InventoryObjectAddedEventArgs object containing + the data sent from the simulator + + + + Returns the contents of the specified folder + + A folder's UUID + The contents of the folder corresponding to folder + When folder does not exist in the inventory + + + + Updates the state of the InventoryNode and inventory data structure that + is responsible for the InventoryObject. If the item was previously not added to inventory, + it adds the item, and updates structure accordingly. If it was, it updates the + InventoryNode, changing the parent node if item.parentUUID does + not match node.Parent.Data.UUID. + You can not set the inventory root folder using this method + + The InventoryObject to store + + + + Removes the InventoryObject and all related node data from Inventory. + + The InventoryObject to remove. + + + + Used to find out if Inventory contains the InventoryObject + specified by uuid. + + The UUID to check. + true if inventory contains uuid, false otherwise + + + + Saves the current inventory structure to a cache file + + Name of the cache file to save to + + + + Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + + Name of the cache file to load + The number of inventory items sucessfully reconstructed into the inventory node tree + + + Sort by name + + + Sort by date + + + Sort folders by name, regardless of whether items are + sorted by name or date + + + Place system folders at the top + + + + Possible destinations for DeRezObject request + + + + + + + + Copy from in-world to agent inventory + + + Derez to TaskInventory + + + + + + + Take Object + + + + + + + Delete Object + + + Put an avatar attachment into agent inventory + + + + + + + Return an object back to the owner's inventory + + + Return a deeded object back to the last owner's inventory + + + + Upper half of the Flags field for inventory items + + + + Indicates that the NextOwner permission will be set to the + most restrictive set of permissions found in the object set + (including linkset items and object inventory items) on next rez + + + Indicates that the object sale information has been + changed + + + If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez + + + Indicates whether this object is composed of multiple + items or not + + + Indicates that the asset is only referenced by this + inventory item. If this item is deleted or updated to reference a + new assetID, the asset can be deleted + + - Overload: Drag an object + Base Class for Inventory Items - of the object to drag - Drag target in region coordinates - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - + - Release a grabbed object + Constructor, takes an itemID as a parameter - The Objects Simulator Local ID - - - + The of the item - + - Release a grabbed object - The Objects Simulator Local ID - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space + + - + - Touches an object - - an unsigned integer of the objects ID within the simulator - + of item/folder - + - Request the current L$ balance - + of parent folder - + + Name of item/folder + + + Item/Folder Owners + + - Give Money to destination Avatar - UUID of the Target Avatar - Amount in L$ + + - + - Give Money to destination Avatar + Generates a number corresponding to the value of the object to support the use of a hash table, + suitable for use in hashing algorithms and data structures such as a hash table - UUID of the Target Avatar - Amount in L$ - Description that will show up in the - recipients transaction history + A Hashcode of all the combined InventoryBase fields - + - Give L$ to an object + Determine whether the specified object is equal to the current object - object to give money to - amount of L$ to give - name of object + InventoryBase object to compare against + true if objects are the same - + - Give L$ to a group + Determine whether the specified object is equal to the current object - group to give money to - amount of L$ to give + InventoryBase object to compare against + true if objects are the same - + - Give L$ to a group + An Item in Inventory - group to give money to - amount of L$ to give - description of transaction - + - Pay texture/animation upload fee + Construct a new InventoryItem object + The of the item - + - Pay texture/animation upload fee + Construct a new InventoryItem object of a specific Type - description of the transaction + The type of item from + + of the item - + - Give Money to destination Object or Avatar - UUID of the Target Object/Avatar - Amount in L$ - Reason (Optional normally) - The type of transaction - Transaction flags, mostly for identifying group - transactions + + - + + The of this item + + + The combined of this item + + + The type of item from + + + The type of item from the enum + + + The of the creator of this item + + + A Description of this item + + + The s this item is set to or owned by + + + If true, item is owned by a group + + + The price this item can be purchased for + + + The type of sale from the enum + + + Combined flags from + + + Time and date this inventory item was created, stored as + UTC (Coordinated Universal Time) + + + Used to update the AssetID in requests sent to the server + + + The of the previous owner of the item + + - Plays a gesture + Indicates inventory item is a link - Asset of the gesture + True if inventory item is a link to another inventory item - + - Mark gesture active - Inventory of the gesture - Asset of the gesture + + - + - Mark gesture inactive + Generates a number corresponding to the value of the object to support the use of a hash table. + Suitable for use in hashing algorithms and data structures such as a hash table - Inventory of the gesture + A Hashcode of all the combined InventoryItem fields - + - Send an AgentAnimation packet that toggles a single animation on + Compares an object - The of the animation to start playing - Whether to ensure delivery of this packet or not + The object to compare + true if comparison object matches - + - Send an AgentAnimation packet that toggles a single animation off + Determine whether the specified object is equal to the current object - The of a - currently playing animation to stop playing - Whether to ensure delivery of this packet or not + The object to compare against + true if objects are the same - + - Send an AgentAnimation packet that will toggle animations on or off + Determine whether the specified object is equal to the current object - A list of animation s, and whether to - turn that animation on or off - Whether to ensure delivery of this packet or not + The object to compare against + true if objects are the same - + - Teleports agent to their stored home location + InventoryTexture Class representing a graphical image - true on successful teleport to home location + - + - Teleport agent to a landmark + Construct an InventoryTexture object - of the landmark to teleport agent to - true on success, false on failure + A which becomes the + objects AssetUUID - + - Attempt to look up a simulator name and teleport to the discovered - destination + Construct an InventoryTexture object from a serialization stream - Region name to look up - Position to teleport to - True if the lookup and teleport were successful, otherwise - false - + - Attempt to look up a simulator name and teleport to the discovered - destination + InventorySound Class representing a playable sound - Region name to look up - Position to teleport to - Target to look at - True if the lookup and teleport were successful, otherwise - false - + - Teleport agent to another region + Construct an InventorySound object - handle of region to teleport agent to - position in destination sim to teleport to - true on success, false on failure - This call is blocking + A which becomes the + objects AssetUUID - + - Teleport agent to another region + Construct an InventorySound object from a serialization stream - handle of region to teleport agent to - position in destination sim to teleport to - direction in destination sim agent will look at - true on success, false on failure - This call is blocking - + - Request teleport to a another simulator + InventoryCallingCard Class, contains information on another avatar - handle of region to teleport agent to - position in destination sim to teleport to - + - Request teleport to a another simulator + Construct an InventoryCallingCard object - handle of region to teleport agent to - position in destination sim to teleport to - direction in destination sim agent will look at + A which becomes the + objects AssetUUID - + - Teleport agent to a landmark + Construct an InventoryCallingCard object from a serialization stream - of the landmark to teleport agent to - + - Send a teleport lure to another avatar with default "Join me in ..." invitation message + InventoryLandmark Class, contains details on a specific location - target avatars to lure - + - Send a teleport lure to another avatar with custom invitation message + Construct an InventoryLandmark object - target avatars to lure - custom message to send with invitation + A which becomes the + objects AssetUUID - + - Respond to a teleport lure by either accepting it and initiating - the teleport, or denying it + Construct an InventoryLandmark object from a serialization stream - of the avatar sending the lure - true to accept the lure, false to decline it - + - Update agent profile + Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited - struct containing updated - profile information - + - Update agents profile interests + InventoryObject Class contains details on a primitive or coalesced set of primitives - selection of interests from struct - + - Set the height and the width of the client window. This is used - by the server to build a virtual camera frustum for our avatar + Construct an InventoryObject object - New height of the viewer window - New width of the viewer window + A which becomes the + objects AssetUUID - + - Request the list of muted objects and avatars for this agent + Construct an InventoryObject object from a serialization stream - + - Sets home location to agents current position + Gets or sets the upper byte of the Flags value - will fire an AlertMessage () with - success or failure message - + - Move an agent in to a simulator. This packet is the last packet - needed to complete the transition in to a new simulator + Gets or sets the object attachment point, the lower byte of the Flags value - Object - + - Reply to script permissions request + InventoryNotecard Class, contains details on an encoded text document - Object - of the itemID requesting permissions - of the taskID requesting permissions - list of permissions to allow - + - Respond to a group invitation by either accepting or denying it + Construct an InventoryNotecard object - UUID of the group (sent in the AgentID field of the invite message) - IM Session ID from the group invitation message - Accept the group invitation or deny it + A which becomes the + objects AssetUUID - + - Requests script detection of objects and avatars + Construct an InventoryNotecard object from a serialization stream - name of the object/avatar to search for - UUID of the object or avatar to search for - Type of search from ScriptSensorTypeFlags - range of scan (96 max?) - the arc in radians to search within - an user generated ID to correlate replies with - Simulator to perform search in - + - Create or update profile pick + InventoryCategory Class - UUID of the pick to update, or random UUID to create a new pick - Is this a top pick? (typically false) - UUID of the parcel (UUID.Zero for the current parcel) - Name of the pick - Global position of the pick landmark - UUID of the image displayed with the pick - Long description of the pick + TODO: Is this even used for anything? - + - Delete profile pick + Construct an InventoryCategory object - UUID of the pick to delete + A which becomes the + objects AssetUUID - + - Create or update profile Classified + Construct an InventoryCategory object from a serialization stream - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Global position of the classified landmark - Name of the classified - Long description of the classified - if true, auto renew classified after expiration - + - Create or update profile Classified + InventoryLSL Class, represents a Linden Scripting Language object - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Name of the classified - Long description of the classified - if true, auto renew classified after expiration - + - Delete a classified ad + Construct an InventoryLSL object - The classified ads ID + A which becomes the + objects AssetUUID - + - Fetches resource usage by agents attachmetns + Construct an InventoryLSL object from a serialization stream - Called when the requested information is collected - + - Take an incoming ImprovedInstantMessage packet, auto-parse, and if - OnInstantMessage is defined call that with the appropriate arguments + InventorySnapshot Class, an image taken with the viewer - The sender - The EventArgs object containing the packet data - + - Take an incoming Chat packet, auto-parse, and if OnChat is defined call - that with the appropriate arguments. + Construct an InventorySnapshot object - The sender - The EventArgs object containing the packet data + A which becomes the + objects AssetUUID - + - Used for parsing llDialogs + Construct an InventorySnapshot object from a serialization stream - The sender - The EventArgs object containing the packet data - + - Used for parsing llRequestPermissions dialogs + InventoryAttachment Class, contains details on an attachable object - The sender - The EventArgs object containing the packet data - + - Handles Script Control changes when Script with permissions releases or takes a control + Construct an InventoryAttachment object - The sender - The EventArgs object containing the packet data + A which becomes the + objects AssetUUID - + - Used for parsing llLoadURL Dialogs + Construct an InventoryAttachment object from a serialization stream - The sender - The EventArgs object containing the packet data - + - Update client's Position, LookAt and region handle from incoming packet + Get the last AttachmentPoint this object was attached to - The sender - The EventArgs object containing the packet data - This occurs when after an avatar moves into a new sim - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - + - Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. + InventoryWearable Class, details on a clothing item or body part - The Message Key - An IMessage object Deserialized from the recieved message event - The simulator originating the event message - + - Process TeleportFinish from Event Queue and pass it onto our TeleportHandler + Construct an InventoryWearable object - The message system key for this event - IMessage object containing decoded data from OSD - The simulator originating the event message - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + A which becomes the + objects AssetUUID - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - + - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. + Construct an InventoryWearable object from a serialization stream - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - This packet is now being sent via the EventQueue - + - Group Chat event handler + The , Skin, Shape, Skirt, Etc - The capability Key - IMessage object containing decoded data from OSD - - + - Response from request to join a group chat + InventoryAnimation Class, A bvh encoded object which animates an avatar - - IMessage object containing decoded data from OSD - - + - Someone joined or left group chat + Construct an InventoryAnimation object - - IMessage object containing decoded data from OSD - + A which becomes the + objects AssetUUID - + - Handle a group chat Invitation + Construct an InventoryAnimation object from a serialization stream - Caps Key - IMessage object containing decoded data from OSD - Originating Simulator - + - Moderate a chat session + InventoryGesture Class, details on a series of animations, sounds, and actions - the of the session to moderate, for group chats this will be the groups UUID - the of the avatar to moderate - Either "voice" to moderate users voice, or "text" to moderate users text session - true to moderate (silence user), false to allow avatar to speak - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when a scripted object or agent within range sends a public message - - - Raised when a scripted object sends a dialog box containing possible - options an agent can respond to - - - Raised when an object requests a change in the permissions an agent has permitted - - - Raised when a script requests an agent open the specified URL - - - Raised when an agents currency balance is updated - - - Raised when a transaction occurs involving currency such as a land purchase - - Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from - private messaging to friendship offers. The Dialog field defines what type of message has arrived + + + Construct an InventoryGesture object + + A which becomes the + objects AssetUUID - - Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times - for each teleport indicating the progress of the request + + + Construct an InventoryGesture object from a serialization stream + - - Raised when a simulator sends agent specific information for our avatar. + + + A folder contains s and has certain attributes specific + to itself + - - Raised when our agents animation playlist changes + + + Constructor + + UUID of the folder - - Raised when an object or avatar forcefully collides with our agent + + + Construct an InventoryFolder object from a serialization stream + - - Raised when our agent crosses a region border into another region + + The Preferred for a folder. - - Raised when our agent succeeds or fails to join a group chat session + + The Version of this folder - - Raised when a simulator sends an urgent message usually indication the recent failure of - another action we have attempted to take such as an attempt to enter a parcel where we are denied access + + Number of child items this folder contains. - - Raised when a script attempts to take or release specified controls for our agent + + + + + - - Raised when the simulator detects our agent is trying to view something - beyond its limits + + + Get Serilization data for this InventoryFolder object + - - Raised when a script sensor reply is received from a simulator + + + + + - - Raised in response to a request + + + + + + + - - Raised when an avatar enters a group chat session we are participating in + + + + + + + - - Raised when an agent exits a group chat session we are participating in + + + + + + + - - Your (client) avatars - "client", "agent", and "avatar" all represent the same thing + + + Tools for dealing with agents inventory + - - Temporary assigned to this session, used for - verifying our identity in packets + + + Default constructor + + Reference to the GridClient object - - Shared secret that is never sent over the wire + + + Callback for inventory item creation finishing + + Whether the request to create an inventory + item succeeded or not + Inventory item being created. If success is + false this will be null - - Your (client) avatar ID, local to the current region/sim + + + Callback for an inventory item being create from an uploaded asset + + true if inventory item creation was successful + + + + + + - - Where the avatar started at login. Can be "last", "home" - or a login + + + + + - - The access level of this agent, usually M or PG + + + Reply received when uploading an inventory asset + + Has upload been successful + Error message if upload failed + Inventory asset UUID + New asset UUID - - The CollisionPlane of Agent + + + Delegate that is invoked when script upload is completed + + Has upload succeded (note, there still might be compile errors) + Upload status message + Is compilation successful + If compilation failed, list of error messages, null on compilation success + Script inventory UUID + Script's new asset UUID - - An representing the velocity of our agent + + Used for converting shadow_id to asset_id - - An representing the acceleration of our agent + + The event subscribers, null of no subscribers - - A which specifies the angular speed, and axis about which an Avatar is rotating. + + Thread sync lock object - - Position avatar client will goto when login to 'home' or during - teleport request to 'home' region. + + The event subscribers, null of no subscribers - - LookAt point saved/restored with HomePosition + + Thread sync lock object - - Avatar First Name (i.e. Philip) + + The event subscribers, null of no subscribers - - Avatar Last Name (i.e. Linden) + + Thread sync lock object - - Avatar Full Name (i.e. Philip Linden) + + The event subscribers, null of no subscribers - - Gets the health of the agent + + Thread sync lock object - - Gets the current balance of the agent + + The event subscribers, null of no subscribers - - Gets the local ID of the prim the agent is sitting on, - zero if the avatar is not currently sitting + + Thread sync lock object - - Gets the of the agents active group. + + The event subscribers, null of no subscribers - - Gets the Agents powers in the currently active group + + Thread sync lock object - - Current status message for teleporting + + The event subscribers, null of no subscribers - - Current position of the agent as a relative offset from - the simulator, or the parent object if we are sitting on something + + Thread sync lock object - - Current rotation of the agent as a relative rotation from - the simulator, or the parent object if we are sitting on something + + The event subscribers, null of no subscribers - - Current position of the agent in the simulator + + Thread sync lock object - - - A representing the agents current rotation - + + Partial mapping of AssetTypes to folder names - - Returns the global grid position of the avatar + + Raised when the simulator sends us data containing + ... - - - Called once attachment resource usage information has been collected - - Indicates if operation was successfull - Attachment resource usage information + + Raised when the simulator sends us data containing + ... - - - Agent movement and camera control - - Agent movement is controlled by setting specific - After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags - This is most easily accomplished by setting one or more of the AgentMovement properties - - Movement of an avatar is always based on a compass direction, for example AtPos will move the - agent from West to East or forward on the X Axis, AtNeg will of course move agent from - East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis - The Z axis is Up, finer grained control of movements can be done using the Nudge properties - + + Raised when the simulator sends us data containing + an inventory object sent by another avatar or primitive - - Agent camera controls + + Raised when the simulator sends us data containing + ... - - Currently only used for hiding your group title + + Raised when the simulator sends us data containing + ... - - Action state of the avatar, which can currently be - typing and editing + + Raised when the simulator sends us data containing + ... - - + + Raised when the simulator sends us data containing + ... - - + + Raised when the simulator sends us data containing + ... - - + + + Get this agents Inventory data + - - + + Raises the ItemReceived Event + A ItemReceivedEventArgs object containing + the data sent from the simulator - - + + Raises the FolderUpdated Event + A FolderUpdatedEventArgs object containing + the data sent from the simulator - - + + Raises the InventoryObjectOffered Event + A InventoryObjectOfferedEventArgs object containing + the data sent from the simulator - - + + Raises the TaskItemReceived Event + A TaskItemReceivedEventArgs object containing + the data sent from the simulator - - + + Raises the FindObjectByPath Event + A FindObjectByPathEventArgs object containing + the data sent from the simulator - - + + Raises the TaskInventoryReply Event + A TaskInventoryReplyEventArgs object containing + the data sent from the simulator - - Timer for sending AgentUpdate packets + + Raises the SaveAssetToInventory Event + A SaveAssetToInventoryEventArgs object containing + the data sent from the simulator - - Default constructor + + Raises the ScriptRunningReply Event + A ScriptRunningReplyEventArgs object containing + the data sent from the simulator - + - Send an AgentUpdate with the camera set at the current agent - position and pointing towards the heading specified + Fetch an inventory item from the dataserver - Camera rotation in radians - Whether to send the AgentUpdate reliable - or not + The items + The item Owners + a integer representing the number of milliseconds to wait for results + An object on success, or null if no item was found + Items will also be sent to the event - + - Rotates the avatar body and camera toward a target position. - This will also anchor the camera position on the avatar + Request A single inventory item - Region coordinates to turn toward + The items + The item Owners + - + - Send new AgentUpdate packet to update our current camera - position and rotation + Request inventory items + Inventory items to request + Owners of the inventory items + - + - Send new AgentUpdate packet to update our current camera - position and rotation + Get contents of a folder - Whether to require server acknowledgement - of this packet + The of the folder to search + The of the folders owner + true to retrieve folders + true to retrieve items + sort order to return results in + a integer representing the number of milliseconds to wait for results + A list of inventory items matching search criteria within folder + + InventoryFolder.DescendentCount will only be accurate if both folders and items are + requested - + - Send new AgentUpdate packet to update our current camera - position and rotation + Request the contents of an inventory folder - Whether to require server acknowledgement - of this packet - Simulator to send the update to + The folder to search + The folder owners + true to return s contained in folder + true to return s containd in folder + the sort order to return items in + - + - Builds an AgentUpdate packet entirely from parameters. This - will not touch the state of Self.Movement or - Self.Movement.Camera in any way + Returns the UUID of the folder (category) that defaults to + containing 'type'. The folder is not necessarily only for that + type - - - - - - - - - - - - - - Move agent positive along the X axis - - - Move agent negative along the X axis - - - Move agent positive along the Y axis - - - Move agent negative along the Y axis - - - Move agent positive along the Z axis - - - Move agent negative along the Z axis - - - - - - - - - - - - - - - - - - - - - - - - Causes simulator to make agent fly - - - Stop movement - - - Finish animation - - - Stand up from a sit - - - Tells simulator to sit agent on ground + This will return the root folder if one does not exist + + + The UUID of the desired folder if found, the UUID of the RootFolder + if not found, or UUID.Zero on failure - - Place agent into mouselook mode + + + Find an object in inventory using a specific path to search + + The folder to begin the search in + The object owners + A string path to search + milliseconds to wait for a reply + Found items or if + timeout occurs or item is not found - - Nudge agent positive along the X axis + + + Find inventory items by path + + The folder to begin the search in + The object owners + A string path to search, folders/objects separated by a '/' + Results are sent to the event - - Nudge agent negative along the X axis + + + Search inventory Store object for an item or folder + + The folder to begin the search in + An array which creates a path to search + Number of levels below baseFolder to conduct searches + if True, will stop searching after first match is found + A list of inventory items found - - Nudge agent positive along the Y axis + + + Move an inventory item or folder to a new location + + The item or folder to move + The to move item or folder to - - Nudge agent negative along the Y axis + + + Move an inventory item or folder to a new location and change its name + + The item or folder to move + The to move item or folder to + The name to change the item or folder to - - Nudge agent positive along the Z axis + + + Move and rename a folder + + The source folders + The destination folders + The name to change the folder to - - Nudge agent negative along the Z axis + + + Update folder properties + + + of the folder to update + Sets folder's parent to + Folder name + Folder type - - + + + Move a folder + + The source folders + The destination folders - - + + + Move multiple folders, the keys in the Dictionary parameter, + to a new parents, the value of that folder's key. + + A Dictionary containing the + of the source as the key, and the + of the destination as the value - - Tell simulator to mark agent as away + + + Move an inventory item to a new folder + + The of the source item to move + The of the destination folder - - + + + Move and rename an inventory item + + The of the source item to move + The of the destination folder + The name to change the folder to - - + + + Move multiple inventory items to new locations + + A Dictionary containing the + of the source item as the key, and the + of the destination folder as the value - - + + + Remove descendants of a folder + + The of the folder - - + + + Remove a single item from inventory + + The of the inventory item to remove - + - Returns "always run" value, or changes it by sending a SetAlwaysRunPacket + Remove a folder from inventory + The of the folder to remove - - The current value of the agent control flags + + + Remove multiple items or folders from inventory + + A List containing the s of items to remove + A List containing the s of the folders to remove - - Gets or sets the interval in milliseconds at which - AgentUpdate packets are sent to the current simulator. Setting - this to a non-zero value will also enable the packet sending if - it was previously off, and setting it to zero will disable + + + Empty the Lost and Found folder + - - Gets or sets whether AgentUpdate packets are sent to - the current simulator + + + Empty the Trash folder + - - Reset movement controls every time we send an update + + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + - + - Camera controls for the agent, mostly a thin wrapper around - CoordinateFrame. This class is only responsible for state - tracking and math, it does not send any packets + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + - - - - - The camera is a local frame of reference inside of - the larger grid space. This is where the math happens - - + - Default constructor + Creates a new inventory folder + ID of the folder to put this folder in + Name of the folder to create + The UUID of the newly created folder - - + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + Sets this folder as the default folder + for new assets of the specified type. Use AssetType.Unknown + to create a normal folder, otherwise it will likely create a + duplicate of an existing folder type + The UUID of the newly created folder + If you specify a preferred type of AsseType.Folder + it will create a new root folder which may likely cause all sorts + of strange problems - - + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Delegate that will receive feedback on success or failure - - + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Permission of the newly created item + (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) + Delegate that will receive feedback on success or failure - - + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Inventory item or folder + Method to call upon creation of the link - + - Used to specify movement actions for your agent + Creates inventory link to another inventory item + Put newly created link in folder with this UUID + Original inventory item + Method to call upon creation of the link - - Empty flag + + + Creates inventory link to another inventory folder + + Put newly created link in folder with this UUID + Original inventory folder + Method to call upon creation of the link - - Move Forward (SL Keybinding: W/Up Arrow) + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Original item's UUID + Name + Description + Asset Type + Inventory Type + Transaction UUID + Method to call upon creation of the link - - Move Backward (SL Keybinding: S/Down Arrow) + + + + + + + + + + + - - Move Left (SL Keybinding: Shift-(A/Left Arrow)) + + + + + + + + + + + + + - - Move Right (SL Keybinding: Shift-(D/Right Arrow)) + + + + + + + + + + + + + - - Not Flying: Jump/Flying: Move Up (SL Keybinding: E) + + + Request a copy of an asset embedded within a notecard + + Usually UUID.Zero for copying an asset from a notecard + UUID of the notecard to request an asset from + Target folder for asset to go to in your inventory + UUID of the embedded asset + callback to run when item is copied to inventory - - Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) + + + + + - - Unused + + + + + - - Unused + + + + + + + - - Unused + + + + + + + + + - - Unused + + + Save changes to notecard embedded in object contents + + Encoded notecard asset data + Notecard UUID + Object's UUID + Called upon finish of the upload with status information - - ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + + Upload new gesture asset for an inventory gesture item + + Encoded gesture asset + Gesture inventory UUID + Callback whick will be called when upload is complete - - ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + + Update an existing script in an agents Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + if true, sets the script content to run on the mono interpreter + + - - ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + + Update an existing script in an task Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + UUID of the prim containting the script + if true, sets the script content to run on the mono interpreter + if true, sets the script to running + + - - Fly + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details - - + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object - - Finish our current animation + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object - - Stand up from the ground or a prim seat + + + DeRez an object from the simulator to the agents Objects folder in the agents Inventory + + The simulator Local ID of the object + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - Sit on the ground at our current location + + + DeRez an object from the simulator and return to inventory + + The simulator Local ID of the object + The type of destination from the enum + The destination inventory folders -or- + if DeRezzing object to a tasks Inventory, the Tasks + The transaction ID for this request which + can be used to correlate this request with other packets + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - Whether mouselook is currently enabled + + + Rez an item from inventory to its previous simulator location + + + + + + + + + - - Legacy, used if a key was pressed for less than a certain amount of time + + + Give an inventory item to another avatar + + The of the item to give + The name of the item + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer - - Legacy, used if a key was pressed for less than a certain amount of time + + + Give an inventory Folder with contents to another avatar + + The of the Folder to give + The name of the folder + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer - - Legacy, used if a key was pressed for less than a certain amount of time + + + Copy or move an from agent inventory to a task (primitive) inventory + + The target object + The item to copy or move from inventory + + + For items with copy permissions a copy of the item is placed in the tasks inventory, + for no-copy items the object is moved to the tasks inventory - - Legacy, used if a key was pressed for less than a certain amount of time + + + Retrieve a listing of the items contained in a task (Primitive) + + The tasks + The tasks simulator local ID + milliseconds to wait for reply from simulator + A list containing the inventory items inside the task or null + if a timeout occurs + This request blocks until the response from the simulator arrives + or timeoutMS is exceeded - - Legacy, used if a key was pressed for less than a certain amount of time + + + Request the contents of a tasks (primitives) inventory from the + current simulator + + The LocalID of the object + - - Legacy, used if a key was pressed for less than a certain amount of time + + + Request the contents of a tasks (primitives) inventory + + The simulator Local ID of the object + A reference to the simulator object that contains the object + - - + + + Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory + + LocalID of the object in the simulator + UUID of the task item to move + The ID of the destination folder in this agents inventory + Simulator Object + Raises the event - - + + + Remove an item from an objects (Prim) Inventory + + LocalID of the object in the simulator + UUID of the task item to remove + Simulator Object + You can confirm the removal by comparing the tasks inventory serial before and after the + request with the request combined with + the event - - Set when the avatar is idled or set to away. Note that the away animation is - activated separately from setting this flag + + + Copy an InventoryScript item from the Agents Inventory into a primitives task inventory + + An unsigned integer representing a primitive being simulated + An which represents a script object from the agents inventory + true to set the scripts running state to enabled + A Unique Transaction ID + + The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory + and assumes the script exists in the agents inventory. + + uint primID = 95899503; // Fake prim ID + UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory + Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, + false, true, InventorySortOrder.ByName, 10000); + Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); + - - + + + Request the running status of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + The event can be used to obtain the results of the + request + - - + + + Send a request to set the running state of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + true to set the script running, false to stop a running script + To verify the change you can use the method combined + with the event - - + + + Create a CRC from an InventoryItem + + The source InventoryItem + A uint representing the source InventoryItem as a CRC - - + + + Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id + + Obfuscated shadow_id value + Deobfuscated asset_id value - + - + Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id + asset_id value to obfuscate + Obfuscated shadow_id value - + - Construct a new instance of the ChatEventArgs object + Wrapper for creating a new object - Sim from which the message originates - The message sent - The audible level of the message - The type of message sent: whisper, shout, etc - The source type of the message sender - The name of the agent or object sending the message - The ID of the agent or object sending the message - The ID of the object owner, or the agent ID sending the message - The position of the agent or object sending the message + The type of item from the enum + The of the newly created object + An object with the type and id passed - - Get the simulator sending the message + + + Parse the results of a RequestTaskInventory() response + + A string which contains the data from the task reply + A List containing the items contained within the tasks inventory - - Get the message sent + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the audible level of the message + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the type of message sent: whisper, shout, etc + + + UpdateCreateInventoryItem packets are received when a new inventory item + is created. This may occur when an object that's rezzed in world is + taken into inventory, when an item is created using the CreateInventoryItem + packet, or when an object is purchased + + The sender + The EventArgs object containing the packet data - - Get the source type of the message sender + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the name of the agent or object sending the message + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the ID of the agent or object sending the message + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the ID of the object owner, or the agent ID sending the message + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the position of the agent or object sending the message + + Set to true to accept offer, false to decline it - - Contains the data sent when a primitive opens a dialog with this agent + + The folder to accept the inventory into, if null default folder for will be used - + - Construct a new instance of the ScriptDialogEventArgs + Callback when an inventory object is accepted and received from a + task inventory. This is the callback in which you actually get + the ItemID, as in ObjectOfferedCallback it is null when received + from a task. - The dialog message - The name of the object that sent the dialog request - The ID of the image to be displayed - The ID of the primitive sending the dialog - The first name of the senders owner - The last name of the senders owner - The communication channel the dialog was sent on - The string labels containing the options presented in this dialog - - Get the dialog message + + + - - Get the name of the object that sent the dialog request + + + + + - - Get the ID of the image to be displayed + + + De-serialization constructor for the InventoryNode Class + - - Get the ID of the primitive sending the dialog + + + De-serialization handler for the InventoryNode Class + - - Get the first name of the senders owner + + + - - Get the last name of the senders owner + + + - - Get the communication channel the dialog was sent on, responses - should also send responses on this same channel + + + - - Get the string labels containing the options presented in this dialog + + + - - Contains the data sent when a primitive requests debit or other permissions - requesting a YES or NO answer + + + For inventory folder nodes specifies weather the folder needs to be + refreshed from the server + - + - Construct a new instance of the ScriptQuestionEventArgs + Serialization handler for the InventoryNode Class - The simulator containing the object sending the request - The ID of the script making the request - The ID of the primitive containing the script making the request - The name of the primitive making the request - The name of the owner of the object making the request - The permissions being requested - - Get the simulator containing the object sending the request + + + + + - - Get the ID of the script making the request + + + Singleton logging class for the entire library + - - Get the ID of the primitive containing the script making the request + + + Default constructor + - - Get the name of the primitive making the request + + + Callback used for client apps to receive log messages from + the library + + Data being logged + The severity of the log entry from - - Get the name of the owner of the object making the request + + log4net logging engine - - Get the permissions being requested + + Triggered whenever a message is logged. If this is left + null, log messages will go to the console - - Contains the data sent when a primitive sends a request - to an agent to open the specified URL + + + Send a log message to the logging engine + + The log message + The severity of the log entry - + - Construct a new instance of the LoadUrlEventArgs + Send a log message to the logging engine - The name of the object sending the request - The ID of the object sending the request - The ID of the owner of the object sending the request - True if the object is owned by a group - The message sent with the request - The URL the object sent + The log message + The severity of the log entry + Instance of the client - - Get the name of the object sending the request + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Exception that was raised - - Get the ID of the object sending the request + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + Exception that was raised - - Get the ID of the owner of the object sending the request + + + If the library is compiled with DEBUG defined, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine - - True if the object is owned by a group + + + If the library is compiled with DEBUG defined and + GridClient.Settings.DEBUG is true, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + Instance of the client - - Get the message sent with the request + + + - - Get the URL the object sent + + + - - The date received from an ImprovedInstantMessage + + + - + - Construct a new instance of the InstantMessageEventArgs object - the InstantMessage object - the simulator where the InstantMessage origniated - - Get the InstantMessage object + + + - - Get the simulator where the InstantMessage origniated + + + - - Contains the currency balance + + + - + - Construct a new BalanceEventArgs object - The currenct balance - + - Get the currenct balance + Login Request Parameters - - Contains the transaction summary when an item is purchased, - money is given, or land is purchased + + + Default constuctor, initializes sane default values + - + - Construct a new instance of the MoneyBalanceReplyEventArgs object + Instantiates new LoginParams object and fills in the values - The ID of the transaction - True of the transaction was successful - The current currency balance - The meters credited - The meters comitted - A brief description of the transaction + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number - - Get the ID of the transaction + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + URI of the login server - - True of the transaction was successful + + The URL of the Login Server - - Get the remaining currency balance + + The number of milliseconds to wait before a login is considered + failed due to timeout - - Get the meters credited + + The request method + login_to_simulator is currently the only supported method - - Get the meters comitted + + The Agents First name - - Get the description of the transaction + + The Agents Last name - - Data sent from the simulator containing information about your agent and active group information + + A md5 hashed password + plaintext password will be automatically hashed - - - Construct a new instance of the AgentDataReplyEventArgs object - - The agents first name - The agents last name - The agents active group ID - The group title of the agents active group - The combined group powers the agent has in the active group - The name of the group the agent has currently active + + The agents starting location once logged in + Either "last", "home", or a string encoded URI + containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 - - Get the agents first name + + A string containing the client software channel information + Second Life Release + + + The client software version information + The official viewer uses: Second Life Release n.n.n.n + where n is replaced with the current version of the viewer + + + A string containing the platform information the agent is running on + + + A string hash of the network cards Mac Address + + + Unknown or deprecated + + + A string hash of the first disk drives ID used to identify this clients uniqueness - - Get the agents last name + + A string containing the viewers Software, this is not directly sent to the login server but + instead is used to generate the Version string - - Get the active group ID of your agent + + A string representing the software creator. This is not directly sent to the login server but + is used by the library to generate the Version information - - Get the active groups title of your agent + + If true, this agent agrees to the Terms of Service of the grid its connecting to - - Get the combined group powers of your agent + + Unknown - - Get the active group name of your agent + + An array of string sent to the login server to enable various options - - Data sent by the simulator to indicate the active/changed animations - applied to your agent + + A randomly generated ID to distinguish between login attempts. This value is only used + internally in the library and is never sent over the wire - + - Construct a new instance of the AnimationsChangedEventArgs class + The decoded data returned from the login server after a successful login - The dictionary that contains the changed animations - - Get the dictionary that contains the changed animations + + true, false, indeterminate - + + Login message of the day + + + M or PG, also agent_region_access and agent_access_max + + - Data sent from a simulator indicating a collision with your agent + Parse LLSD Login Reply Data + An + contaning the login response data + XML-RPC logins do not require this as XML-RPC.NET + automatically populates the struct properly using attributes - + - Construct a new instance of the MeanCollisionEventArgs class + Login Routines - The type of collision that occurred - The ID of the agent or object that perpetrated the agression - The ID of the Victim - The strength of the collision - The Time the collision occurred - - - Get the Type of collision - - - Get the ID of the agent or object that collided with your agent - - - Get the ID of the agent that was attacked - - - A value indicating the strength of the collision - - - Get the time the collision occurred - - - Data sent to your agent when it crosses region boundaries - - - Construct a new instance of the RegionCrossedEventArgs class + NetworkManager is responsible for managing the network layer of + OpenMetaverse. It tracks all the server connections, serializes + outgoing traffic and deserializes incoming traffic, and provides + instances of delegates for network-related events. - The simulator your agent just left - The simulator your agent is now in - - - Get the simulator your agent just left - - - Get the simulator your agent is now in - - - Data sent from the simulator when your agent joins a group chat session - + - Construct a new instance of the GroupChatJoinedEventArgs class + Default constructor - The ID of the session - The name of the session - A temporary session id used for establishing new sessions - True of your agent successfully joined the session + Reference to the GridClient object - - Get the ID of the group chat session + + + Explains why a simulator or the grid disconnected from us + - - Get the name of the session + + The client requested the logout or simulator disconnect - - Get the temporary session ID used for establishing new sessions + + The server notified us that it is disconnecting - - True if your agent successfully joined the session + + Either a socket was closed or network traffic timed out - - Data sent by the simulator containing urgent messages + + The last active simulator shut down - + - Construct a new instance of the AlertMessageEventArgs class + Holds a simulator reference and a decoded packet, these structs are put in + the packet inbox for event handling - The alert message - - Get the alert message + + Reference to the simulator that this packet came from - - Data sent by a script requesting to take or release specified controls to your agent + + Packet that needs to be processed - + - Construct a new instance of the ScriptControlEventArgs class + Holds a simulator reference and a serialized packet, these structs are put in + the packet outbox for sending - The controls the script is attempting to take or release to the agent - True if the script is passing controls back to the agent - True if the script is requesting controls be released to the script - - - Get the controls the script is attempting to take or release to the agent - - True if the script is passing controls back to the agent + + Reference to the simulator this packet is destined for - - True if the script is requesting controls be released to the script + + Packet that needs to be sent - - - Data sent from the simulator to an agent to indicate its view limits - + + Sequence number of the wrapped packet - - - Construct a new instance of the CameraConstraintEventArgs class - - The collision plane + + Number of times this packet has been resent - - Get the collision plane + + Environment.TickCount when this packet was last sent over the wire - + - Data containing script sensor requests which allow an agent to know the specific details - of a primitive sending script sensor requests + + + + + + + + + + - - - Construct a new instance of the ScriptSensorReplyEventArgs - - The ID of the primitive sending the sensor - The ID of the group associated with the primitive - The name of the primitive sending the sensor - The ID of the primitive sending the sensor - The ID of the owner of the primitive sending the sensor - The position of the primitive sending the sensor - The range the primitive specified to scan - The rotation of the primitive sending the sensor - The type of sensor the primitive sent - The velocity of the primitive sending the sensor + + The event subscribers, null of no subscribers - - Get the ID of the primitive sending the sensor + + Thread sync lock object - - Get the ID of the group associated with the primitive + + Seed CAPS URL returned from the login server - - Get the name of the primitive sending the sensor + + A list of packets obtained during the login process which + networkmanager will log but not process - - Get the ID of the primitive sending the sensor + + The event subscribers, null of no subscribers - - Get the ID of the owner of the primitive sending the sensor + + Thread sync lock object - - Get the position of the primitive sending the sensor + + The event subscribers, null of no subscribers - - Get the range the primitive specified to scan + + Thread sync lock object - - Get the rotation of the primitive sending the sensor + + The event subscribers, null of no subscribers - - Get the type of sensor the primitive sent + + Thread sync lock object - - Get the velocity of the primitive sending the sensor + + The event subscribers, null of no subscribers - - Contains the response data returned from the simulator in response to a + + Thread sync lock object - - Construct a new instance of the AvatarSitResponseEventArgs object + + The event subscribers, null of no subscribers - - Get the ID of the primitive the agent will be sitting on + + Thread sync lock object - - True if the simulator Autopilot functions were involved + + The event subscribers, null of no subscribers + + + Thread sync lock object - - Get the camera offset of the agent when seated + + The event subscribers, null of no subscribers - - Get the camera eye offset of the agent when seated + + Thread sync lock object - - True of the agent will be in mouselook mode when seated + + The event subscribers, null of no subscribers - - Get the position of the agent when seated + + Thread sync lock object - - Get the rotation of the agent when seated + + All of the simulators we are currently connected to - - Data sent when an agent joins a chat session your agent is currently participating in + + Handlers for incoming capability events - - - Construct a new instance of the ChatSessionMemberAddedEventArgs object - - The ID of the chat session - The ID of the agent joining + + Handlers for incoming packets - - Get the ID of the chat session + + Incoming packets that are awaiting handling - - Get the ID of the agent that joined + + Outgoing packets that are awaiting handling - - Data sent when an agent exits a chat session your agent is currently participating in + + Raised when the simulator sends us data containing + ... - - - Construct a new instance of the ChatSessionMemberLeftEventArgs object - - The ID of the chat session - The ID of the Agent that left + + Called when a reply is received from the login server, the + login sequence will block until this event returns - - Get the ID of the chat session + + Raised when the simulator sends us data containing + ... - - Get the ID of the agent that left + + Raised when the simulator sends us data containing + ... - - - Starts a thread that keeps the daemon running - - - + + Raised when the simulator sends us data containing + ... - - - Stops the daemon and the thread keeping it running - + + Raised when the simulator sends us data containing + ... - - - - - - - + + Raised when the simulator sends us data containing + ... - - - This is used to initialize and stop the Connector as a whole. The Connector - Create call must be completed successfully before any other requests are made - (typically during application initialization). The shutdown should be called - when the application is shutting down to gracefully release resources - - A string value indicting the Application name - URL for the management server - LoggingSettings - - + + Raised when the simulator sends us data containing + ... - - - Shutdown Connector -- Should be called when the application is shutting down - to gracefully release resources - - Handle returned from successful Connector ‘create’ request + + Raised when the simulator sends us data containing + ... - - - Mute or unmute the microphone - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) + + Raised when the simulator sends us data containing + ... - - - Mute or unmute the speaker - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) + + Current state of logging in - - - Set microphone volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume + + Upon login failure, contains a short string key for the + type of login error that occurred - - - Set local speaker volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume + + The raw XML-RPC reply from the login server, exactly as it + was received (minus the HTTP header) - - - Create a Session - Sessions typically represent a connection to a media session with one or more - participants. This is used to generate an ‘outbound’ call to another user or - channel. The specifics depend on the media types involved. A session handle is - required to control the local user functions within the session (or remote - users if the current account has rights to do so). Currently creating a - session automatically connects to the audio media, there is no need to call - Session.Connect at this time, this is reserved for future use. - - Handle returned from successful Connector ‘create’ request - This is the URI of the terminating point of the session (ie who/what is being called) - This is the display name of the entity being called (user or channel) - Only needs to be supplied when the target URI is password protected - This indicates the format of the password as passed in. This can either be - “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is - “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, - then base64 encoded, with the final “=” character stripped off. - - - + + During login this contains a descriptive version of + LoginStatusCode. After a successful login this will contain the + message of the day, and after a failed login a descriptive error + message will be returned - - - Used to accept a call - - SessionHandle such as received from SessionNewEvent - "default" - + + Unique identifier associated with our connections to + simulators - - - This command is used to start the audio render process, which will then play - the passed in file through the selected audio render device. This command - should not be issued if the user is on a call. - - The fully qualified path to the sound file. - True if the file is to be played continuously and false if it is should be played once. - + + The simulator that the logged in avatar is currently + occupying - - - This command is used to stop the audio render process. - - The fully qualified path to the sound file issued in the start render command. - + + Shows whether the network layer is logged in to the + grid or not - - - This is used to ‘end’ an established session (i.e. hang-up or disconnect). - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - + + Number of packets in the incoming queue - - - Set the combined speaking and listening position in 3D space. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - Speaking position - Listening position - + + Number of packets in the outgoing queue - - - Set User Volume for a particular user. Does not affect how other users hear that user. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - - The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume - + + Raises the LoginProgress Event + A LoginProgressEventArgs object containing + the data sent from the simulator - + - This is used to get a list of audio devices that can be used for capture (input) of voice. + Generate sane default values for a login request - + Account first name + Account last name + Account password + Client application name + Client application version + A populated struct containing + sane defaults - + - This is used to get a list of audio devices that can be used for render (playback) of voice. + Simplified login that takes the most common and required fields + Account first name + Account last name + Account password + Client application name + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error - + - This command is used to select the render device. + Simplified login that takes the most common fields along with a + starting location URI, and can accept an MD5 string instead of a + plaintext password - The name of the device as returned by the Aux.GetRenderDevices command. + Account first name + Account last name + Account password or MD5 hash of the password + such as $1$1682a1e45e9f957dcdf0bb56eb43319c + Client application name + Starting location URI that can be built with + StartLocation() + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error - + - This command is used to select the capture device. + Login that takes a struct of all the values that will be passed to + the login server - The name of the device as returned by the Aux.GetCaptureDevices command. + The values that will be passed to the login + server, all fields must be set even if they are String.Empty + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error - + - This command is used to start the audio capture process which will cause - AuxAudioProperty Events to be raised. These events can be used to display a - microphone VU meter for the currently selected capture device. This command - should not be issued if the user is on a call. + Build a start location URI for passing to the Login function - (unused but required) - + Name of the simulator to start in + X coordinate to start at + Y coordinate to start at + Z coordinate to start at + String with a URI that can be used to login to a specified + location - + - This command is used to stop the audio capture process. + Handles response from XML-RPC login replies - - + - This command is used to set the mic volume while in the audio tuning process. - Once an acceptable mic level is attained, the application must issue a - connector set mic volume command to have that level be used while on voice - calls. + Handle response from LLSD login replies - the microphone volume (-100 to 100 inclusive) - + + + + + + - + - This command is used to set the speaker volume while in the audio tuning - process. Once an acceptable speaker level is attained, the application must - issue a connector set speaker volume command to have that level be used while - on voice calls. + Get current OS - the speaker volume (-100 to 100 inclusive) - + Either "Win" or "Linux" - + - Start up the Voice service. + Get clients default Mac Address + A string containing the first found Mac Address - + + Raises the PacketSent Event + A PacketSentEventArgs object containing + the data sent from the simulator + + + Raises the LoggedOut Event + A LoggedOutEventArgs object containing + the data sent from the simulator + + + Raises the SimConnecting Event + A SimConnectingEventArgs object containing + the data sent from the simulator + + + Raises the SimConnected Event + A SimConnectedEventArgs object containing + the data sent from the simulator + + + Raises the SimDisconnected Event + A SimDisconnectedEventArgs object containing + the data sent from the simulator + + + Raises the Disconnected Event + A DisconnectedEventArgs object containing + the data sent from the simulator + + + Raises the SimChanged Event + A SimChangedEventArgs object containing + the data sent from the simulator + + + Raises the EventQueueRunning Event + A EventQueueRunningEventArgs object containing + the data sent from the simulator + + - Handle miscellaneous request status + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library - - - ///If something goes wrong, we log it. + Packet type to trigger events for + Callback to fire when a packet of this type + is received - + - Cleanup oject resources + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + Packet type to trigger events for + Callback to fire when a packet of this type + is received + True if the callback should be ran + asynchronously. Only set this to false (synchronous for callbacks + that will always complete quickly) + If any callback for a packet type is marked as + asynchronous, all callbacks for that packet type will be fired + asynchronously - + - Request voice cap when changing regions + Unregister an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + Packet type this callback is registered with + Callback to stop firing events for - + - Handle a change in session state + Register a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + Name of the CAPS event to register a handler for + Callback to fire when a CAPS event is received - + - Close a voice session + Unregister a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library - + Name of the CAPS event this callback is + registered with + Callback to stop firing events for - + - Locate a Session context from its handle + Send a packet to the simulator the avatar is currently occupying - Creates the session context if it does not exist. + Packet to send - + - Handle completion of main voice cap request. + Send a packet to a specified simulator - - - + Packet to send + Simulator to send the packet to - + - Daemon has started so connect to it. + Connect to a simulator + IP address to connect to + Port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null - + - The daemon TCP connection is open. + Connect to a simulator + IP address and port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null - + - Handle creation of the Connector. + Initiate a blocking logout request. This will return when the logout + handshake has completed or when Settings.LOGOUT_TIMEOUT + has expired and the network layer is manually shut down - + - Handle response to audio output device query + Initiate the logout process. Check if logout succeeded with the + OnLogoutReply event, and if this does not fire the + Shutdown() function needs to be manually called - + - Handle response to audio input device query + Close a connection to the given simulator + + + + - - - Set voice channel for new parcel - - + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + Type of shutdown - + - Request info from a parcel capability Uri. - - + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + Type of shutdown + Shutdown message - + - Receive parcel voice cap + Searches through the list of currently connected simulators to find + one attached to the given IPEndPoint - - - + IPEndPoint of the Simulator to search for + A Simulator reference on success, otherwise null - + - Tell Vivox where we are standing + Fire an event when an event queue connects for capabilities - This has to be called when we move or turn. + Simulator the event queue is attached to - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + - Start and stop updating out position. + A Name Value pair with additional settings, used in the protocol + primarily to transmit avatar names and active group in object packets - - + - This is used to login a specific user account(s). It may only be called after - Connector initialization has completed successfully + Constructor that takes all the fields as parameters - Handle returned from successful Connector ‘create’ request - User's account name - User's account password - Values may be “AutoAnswer” or “VerifyAnswer” - "" - This is an integer that specifies how often - the daemon will send participant property events while in a channel. If this is not set - the default will be “on state change”, which means that the events will be sent when - the participant starts talking, stops talking, is muted, is unmuted. - The valid values are: - 0 – Never - 5 – 10 times per second - 10 – 5 times per second - 50 – 1 time per second - 100 – on participant state change (this is the default) - false - + + + + + + + + + + - + - This is used to logout a user session. It should only be called with a valid AccountHandle. + Constructor that takes a single line from a NameValue field - Handle returned from successful Connector ‘login’ request - + + + + + Type of the value + + + Unknown - + + String value + + - List of audio input devices - + - List of audio output devices - + - Set audio test mode - + - Event for most mundane request reposnses. - - Response to Connector.Create request - - - Response to Aux.GetCaptureDevices request - - - Response to Aux.GetRenderDevices request - - - Audio Properties Events are sent after audio capture is started. - These events are used to display a microphone VU meter - - - Response to Account.Login request - - - This event message is sent whenever the login state of the - particular Account has transitioned from one value to another - - - Enable logging - - - The folder where any logs will be created + + Deprecated - - This will be prepended to beginning of each log file + + String value, but designated as an asset - - The suffix or extension to be appended to each log file + + + - + - 0: NONE - No logging - 1: ERROR - Log errors only - 2: WARNING - Log errors and warnings - 3: INFO - Log errors, warnings and info - 4: DEBUG - Log errors, warnings, info and debug - + - Constructor for default logging settings - - Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + + - + - - - + + + - - + + + - - + + + - + - Thrown when a packet could not be successfully deserialized - + - Default constructor - + - Constructor that takes an additional error message - An error message to attach to this exception - + - The header of a message template packet. Holds packet flags, sequence - number, packet ID, and any ACKs that will be appended at the end of - the packet - + - Convert the AckList to a byte array, used for packet serializing - Reference to the target byte array - Beginning position to start writing to in the byte - array, will be updated with the ending position of the ACK list - + - - - - - - + - - - - - + - A block of data in a packet. Packets are composed of one or more blocks, - each block containing one or more fields - + - Create a block from a byte array - Byte array containing the serialized block - Starting position of the block in the byte array. - This will point to the data after the end of the block when the - call returns - + - Serialize this block into a byte array - Byte array to serialize this block into - Starting position in the byte array to serialize to. - This will point to the position directly after the end of the - serialized block when the call returns - - Current length of the data in this packet + + No report - - A generic value, not an actual packet type + + Unknown report type - + + Bug report + + + Complaint report + + + Customer service report + + - Attempts to convert an LLSD structure to a known Packet type + Bitflag field for ObjectUpdateCompressed data blocks, describing + which options are present for each object - Event name, this must match an actual - packet name for a Packet to be successfully built - LLSD to convert to a Packet - A Packet on success, otherwise null - - + + Unknown - - + + Whether the object has a TreeSpecies - - + + Whether the object has floating text ala llSetText - - + + Whether the object has an active particle system - - + + Whether the object has sound attached to it - - + + Whether the object is attached to a root object or not - - + + Whether the object has texture animation settings - - + + Whether the object has an angular velocity - - + + Whether the object has a name value pairs string - - + + Whether the object has a Media URL set - - + + + Specific Flags for MultipleObjectUpdate requests + - - + + None - - + + Change position of prims - - + + Change rotation of prims - - + + Change size of prims - - + + Perform operation on link set - - + + Scale prims uniformly, same as selecing ctrl+shift in the + viewer. Used in conjunction with Scale - - + + + Special values in PayPriceReply. If the price is not one of these + literal value of the price should be use + - - + + + Indicates that this pay option should be hidden + - - + + + Indicates that this pay option should have the default value + - - + + + Contains the variables sent in an object update packet for objects. + Used to track position and movement of prims and avatars + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + Handles all network traffic related to prims and avatar positions and + movement. + - - + + + Construct a new instance of the ObjectManager class + + A reference to the instance - - + + + Callback for getting object media data via CAP + + Indicates if the operation was succesfull + Object media version string + Array indexed on prim face of media entry data - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + Reference to the GridClient object - - + + Does periodic dead reckoning calculation to convert + velocity and acceleration to new positions for objects - - + + Raised when the simulator sends us data containing + A , Foliage or Attachment + + - - + + Raised when the simulator sends us data containing + additional information + + - - + + Raised when the simulator sends us data containing + Primitive.ObjectProperties for an object we are currently tracking - - + + Raised when the simulator sends us data containing + additional and details + - - + + Raised when the simulator sends us data containing + updated information for an - - + + Raised when the simulator sends us data containing + and movement changes - - + + Raised when the simulator sends us data containing + updates to an Objects DataBlock - - + + Raised when the simulator informs us an + or is no longer within view - - + + Raised when the simulator sends us data containing + updated sit information for our - - + + Raised when the simulator sends us data containing + purchase price information for a - - + + Raises the ObjectProperties Event + A ObjectPropertiesEventArgs object containing + the data sent from the simulator - - + + Raises the ObjectPropertiesUpdated Event + A ObjectPropertiesUpdatedEventArgs object containing + the data sent from the simulator - - + + Raises the ObjectPropertiesFamily Event + A ObjectPropertiesFamilyEventArgs object containing + the data sent from the simulator - - + + Raises the AvatarUpdate Event + A AvatarUpdateEventArgs object containing + the data sent from the simulator - - + + Raises the ObjectDataBlockUpdate Event + A ObjectDataBlockUpdateEventArgs object containing + the data sent from the simulator - - + + Raises the KillObject Event + A KillObjectEventArgs object containing + the data sent from the simulator - - + + Raises the AvatarSitChanged Event + A AvatarSitChangedEventArgs object containing + the data sent from the simulator - - + + Raises the PayPriceReply Event + A PayPriceReplyEventArgs object containing + the data sent from the simulator - - + + + Request information for a single object from a + you are currently connected to + + The the object is located + The Local ID of the object - - + + + Request information for multiple objects contained in + the same simulator + + The the objects are located + An array containing the Local IDs of the objects - - + + + Attempt to purchase an original object, a copy, or the contents of + an object + + The the object is located + The Local ID of the object + Whether the original, a copy, or the object + contents are on sale. This is used for verification, if the this + sale type is not valid for the object the purchase will fail + Price of the object. This is used for + verification, if it does not match the actual price the purchase + will fail + Group ID that will be associated with the new + purchase + Inventory folder UUID where the object or objects + purchased should be placed + + + BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, + 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); + + - - + + + Request prices that should be displayed in pay dialog. This will triggger the simulator + to send us back a PayPriceReply which can be handled by OnPayPriceReply event + + The the object is located + The ID of the object + The result is raised in the event - - + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + - - + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + if true, a call to is + made immediately following the request + - - + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + Should objects be deselected immediately after selection + - - + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + - - + + + Update the properties of an object + + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on - - + + + Sets the sale properties of a single object + + The the object is located + The Local ID of the object + One of the options from the enum + The price of the object - - + + + Sets the sale properties of multiple objects + + The the objects are located + An array containing the Local IDs of the objects + One of the options from the enum + The price of the object - - + + + Deselect a single object + + The the object is located + The Local ID of the object - - + + + Deselect multiple objects. + + The the objects are located + An array containing the Local IDs of the objects - - + + + Perform a click action on an object + + The the object is located + The Local ID of the object - - + + + Perform a click action (Grab) on a single object + + The the object is located + The Local ID of the object + The texture coordinates to touch + The surface coordinates to touch + The face of the position to touch + The region coordinates of the position to touch + The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + The surface binormal of the position to touch (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - - + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties - - + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Specify the + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties - - + + + Rez a Linden tree + + A reference to the object where the object resides + The size of the tree + The rotation of the tree + The position of the tree + The Type of tree + The of the group to set the tree to, + or UUID.Zero if no group is to be set + true to use the "new" Linden trees, false to use the old - - + + + Rez grass and ground cover + + A reference to the object where the object resides + The size of the grass + The rotation of the grass + The position of the grass + The type of grass from the enum + The of the group to set the tree to, + or UUID.Zero if no group is to be set - - + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply - - + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + A media URL (not used) - - + + + Set the Light data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - - + + + Set the flexible data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - - + + + Set the sculptie texture and data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - - + + + Unset additional primitive parameters on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The extra parameters to set - - + + + Link multiple prims into a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to link + The last object in the array will be the root object of the linkset TODO: Is this true? - - + + + Delink/Unlink multiple prims from a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to delink - - + + + Change the rotation of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation of the object - - + + + Set the name of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new name of the object - - + + + Set the name of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the name of + An array which contains the new names of the objects - - + + + Set the description of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new description of the object - - + + + Set the descriptions of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the description of + An array which contains the new descriptions of the objects - - + + + Attach an object to this avatar + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The point on the avatar the object will be attached + The rotation of the attached object - - + + + Drop an attached object from this avatar + + A reference to the + object where the objects reside. This will always be the simulator the avatar is currently in + + The object's ID which is local to the simulator the object is in - - + + + Detach an object from yourself + + A reference to the + object where the objects reside + This will always be the simulator the avatar is currently in + + An array which contains the IDs of the objects to detach - - + + + Change the position of an object, Will change position of entire linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object - - + + + Change the position of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + if true, will change position of (this) child prim only, not entire linkset - - + + + Change the Scale (size) of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change scale of this prim only, not entire linkset + True to resize prims uniformly - - + + + Change the Rotation of an object that is either a child or a whole linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change rotation of this prim only, not entire linkset - - + + + Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation, size, or position of the target object + The flags from the Enum - - + + + Deed an object (prim) to a group, Object must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The of the group to deed the object to - - + + + Deed multiple objects (prims) to a group, Objects must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + An array which contains the IDs of the objects to deed + The of the group to deed the object to - - + + + Set the permissions on multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the permissions on + The new Who mask to set + The new Permissions mark to set + TODO: What does this do? - - + + + Request additional properties for an object + + A reference to the object where the object resides + + - - + + + Request additional properties for an object + + A reference to the object where the object resides + Absolute UUID of the object + Whether to require server acknowledgement of this request - - + + + Set the ownership of a list of objects to the specified group + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the group id on + The Groups ID - - + + + Update current URL of the previously set prim media + + UUID of the prim + Set current URL to this + Prim face number + Simulator in which prim is located - - + + + Set object media + + UUID of the prim + Array the length of prims number of faces. Null on face indexes where there is + no media, on faces which contain the media + Simulatior in which prim is located - - + + + Retrieve information about object media + + UUID of the primitive + Simulator where prim is located + Call this callback when done - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + + A terse object update, used when a transformation matrix or + velocity/acceleration for an object changes but nothing else + (scale/position/rotation/acceleration/velocity) + + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + + Setup construction data for a basic primitive shape + + Primitive shape to construct + Construction data that can be plugged into a - - + + + + + + + + + + + - - + + + + + + + - - + + + Set the Shape data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + Data describing the prim shape - - + + + Set the Material data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new material of the object - - + + + + + + + + + + + - - + + + + + + + + + + + - - + + Provides data for the event + + The event occurs when the simulator sends + an containing a Primitive, Foliage or Attachment 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 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 + + + The following code example uses the , , and + properties to display new Primitives and Attachments on the window. + + // Subscribe to the event that gives us prim and foliage information + Client.Objects.ObjectUpdate += Objects_ObjectUpdate; + private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + { + Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + } + + + + - - + + + Construct a new instance of the PrimEventArgs class + + The simulator the object originated from + The Primitive + The simulator time dilation + The prim was not in the dictionary before this update + true if the primitive represents an attachment to an agent - - + + Get the simulator the originated from - - + + Get the details - - + + true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) - - + + true if the is attached to an - - + + Get the simulator Time Dilation - - + + 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); + } + } + + + - - + + + Construct a new instance of the AvatarUpdateEventArgs class + + The simulator the packet originated from + The data + The simulator time dilation + The avatar was not in the dictionary before this update - - + + Get the simulator the object originated from - - + + Get the data - - + + Get the simulator time dilation - - + + true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) - - + + Provides additional primitive data for the event + + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment data + The event is also raised when a request is + made. + + + The following code example uses the , and + + properties to display new attachments and send a request for additional properties containing the name of the + attachment then display it on the window. + + // Subscribe to the event that provides additional primitive details + Client.Objects.ObjectProperties += Objects_ObjectProperties; + // handle the properties data that arrives + private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) + { + Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); + } + - - + + + Construct a new instance of the ObjectPropertiesEventArgs class + + The simulator the object is located + The primitive Properties - - + + Get the simulator the object is located - - + + Get the primitive properties - - + + Provides additional primitive data for the event + + The event occurs when the simulator sends + an containing additional details for a Primitive or Foliage data that is currently + being tracked in the dictionary + The event is also raised when a request is + made and is enabled + - - + + + Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + + The simulator the object is located + The Primitive + The primitive Properties - - + + Get the simulator the object is located - - + + Get the primitive details - - + + Get the primitive properties - - + + 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 + - - + + Get the simulator the object is located - - + + + - - + + + - - + + Provides primitive data containing updated location, velocity, rotation, textures for the event + + The event occurs when the simulator sends updated location, velocity, rotation, etc + - - + + Get the simulator the object is located - - + + Get the primitive details - - + + + - - + + + - - + + + - - + + Get the simulator the object is located - - + + Get the primitive details - - + + + - - + + + - - + + + - - + + + - - + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event - - + + Get the simulator the object is located - - + + The LocalID of the object - - + + + Provides updates sit position data + - - + + Get the simulator the object is located - - + + + - - + + + - - + + + - - + + + - - + + Get the simulator the object is located - - + + + - - + + + - - + + + - - + + + Indicates if the operation was successful + - - + + + Media version string + - - + + + Array of media entries indexed by face number + - - + + + Create an allocated UDP packet buffer for receiving a packet + - - + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host - - + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + Size of the buffer to allocate for packet data - - + + Size of the byte array used to store raw packet data - - + + Raw packet data buffer - - + + Length of the data to transmit - - + + EndPoint of the remote host - - + + + Object pool for packet buffers. This is used to allocate memory for all + incoming and outgoing packets, and zerocoding buffers for those packets + - - + + + Initialize the object pool in client mode + + Server to connect to + + + + - - + + + Initialize the object pool in server mode + + + + + - - + + + Returns a packet buffer with EndPoint set if the buffer is in + client mode, or with EndPoint set to null in server mode + + Initialized UDPPacketBuffer object - - + + + Default constructor + - - + + + Check a packet buffer out of the pool + + A packet buffer object - - + + + Returns an instance of the class that has been checked out of the Object Pool. + - - + + + Checks the instance back into the object pool + - - + + + Creates a new instance of the ObjectPoolBase class. Initialize MUST be called + after using this constructor. + - - + + + Creates a new instance of the ObjectPool Base class. + + The object pool is composed of segments, which + are allocated whenever the size of the pool is exceeded. The number of items + in a segment should be large enough that allocating a new segmeng is a rare + thing. For example, on a server that will have 10k people logged in at once, + the receive buffer object pool should have segment sizes of at least 1000 + byte arrays per segment. + + The minimun number of segments that may exist. + Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. + The frequency which segments are checked to see if they're eligible for cleanup. - - + + + The total number of segments created. Intended to be used by the Unit Tests. + - - + + + The number of items that are in a segment. Items in a segment + are all allocated at the same time, and are hopefully close to + each other in the managed heap. + - - + + + The minimum number of segments. When segments are reclaimed, + this number of segments will always be left alone. These + segments are allocated at startup. + - - + + + The age a segment must be before it's eligible for cleanup. + This is used to prevent thrash, and typical values are in + the 5 minute range. + - - + + + The frequence which the cleanup thread runs. This is typically + expected to be in the 5 minute range. + - - + + + Forces the segment cleanup algorithm to be run. This method is intended + primarly for use from the Unit Test libraries. + - - + + + Responsible for allocate 1 instance of an object that will be stored in a segment. + + An instance of whatever objec the pool is pooling. - - + + + Checks in an instance of T owned by the object pool. This method is only intended to be called + by the WrappedObject class. + + The segment from which the instance is checked out. + The instance of T to check back into the segment. - - + + + Checks an instance of T from the pool. If the pool is not sufficient to + allow the checkout, a new segment is created. + + A WrappedObject around the instance of T. To check + the instance back into the segment, be sureto dispose the WrappedObject + when finished. - - + + + - - + + + - - + + + - - + + + - - + + + The ObservableDictionary class is used for storing key/value pairs. It has methods for firing + events to subscribers when items are added, removed, or changed. + + Key + Value - - + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); + + - - + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); + + - - + + + A dictionary of callbacks to fire when specified action occurs + - - + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking - - + + + Indexer for the dictionary + + The key + The value - - + + + Gets the number of Key/Value pairs contained in the - - + + + Register a callback to be fired when an action occurs + + The action + The callback to fire - - + + + Unregister a callback + + The action + The callback to fire - - + + + + + + + - - + + + Try to get entry from the with specified key + + Key to use for lookup + Value returned + + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + - - + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + - - + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + - - + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + - - + + Check if Key exists in Dictionary + Key to check for + + if found, otherwise - - + + Check if Value exists in Dictionary + Value to check for + + if found, otherwise - - + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + The key + The value - - + + + Removes the specified key, dictionary locking is not performed + + The key. + + if successful, otherwise - - + + + Clear the contents of the dictionary + - - + + + Enumerator for iterating dictionary entries + + + - - + + + A custom decoder callback + + The key of the object + the data to decode + A string represending the fieldData - - + + + Add a custom decoder callback + + The key of the field to decode + The custom decode handler - - + + + Remove a custom decoder callback + + The key of the field to decode + The custom decode handler - - + + + Creates a formatted string containing the values of a Packet + + The Packet + A formatted string of values of the nested items in the Packet object - - + + + Decode an IMessage object into a beautifully formatted string + + The IMessage object + Recursion level (used for indenting) + A formatted string containing the names and values of the source object - - + + + Type of return to use when returning objects from a parcel + - - + + + - - + + Return objects owned by parcel owner - - + + Return objects set to group - - + + Return objects not owned by parcel owner or set to group - - + + Return a specific list of objects on parcel - - + + Return objects that are marked for-sale - - + + + Blacklist/Whitelist flags used in parcels Access List + - - + + Agent is denied access - - + + Agent is granted access - - + + + The result of a request for parcel properties + - - + + No matches were found for the request - - + + Request matched a single parcel - - + + Request matched multiple parcels - - + + + Flags used in the ParcelAccessListRequest packet to specify whether + we want the access list (whitelist), ban list (blacklist), or both + - - + + Request the access list - - + + Request the ban list - - + + Request both White and Black lists - - + + + Sequence ID in ParcelPropertiesReply packets (sent when avatar + tries to cross a parcel border) + - - + + Parcel is currently selected - - + + Parcel restricted to a group the avatar is not a + member of - - + + Avatar is banned from the parcel - - + + Parcel is restricted to an access list that the + avatar is not on - - + + Response to hovering over a parcel - - + + + The tool to use when modifying terrain levels + - - + + Level the terrain - - + + Raise the terrain - - + + Lower the terrain - - + + Smooth the terrain - - + + Add random noise to the terrain - - + + Revert terrain to simulator default - - + + + The tool size to use when changing terrain levels + - - + + Small - - + + Medium - - + + Large - - + + + Reasons agent is denied access to a parcel on the simulator + - - + + Agent is not denied, access is granted - - + + Agent is not a member of the group set for the parcel, or which owns the parcel - - + + Agent is not on the parcels specific allow list - - + + Agent is on the parcels ban list - - + + Unknown - - + + Agent is not age verified and parcel settings deny access to non age verified avatars - - + + + Parcel overlay type. This is used primarily for highlighting and + coloring which is why it is a single integer instead of a set of + flags + + These values seem to be poorly thought out. The first three + bits represent a single value, not flags. For example Auction (0x05) is + not a combination of OwnedByOther (0x01) and ForSale(0x04). However, + the BorderWest and BorderSouth values are bit flags that get attached + to the value stored in the first three bits. Bits four, five, and six + are unused - - + + Public land - - + + Land is owned by another avatar - - + + Land is owned by a group - - + + Land is owned by the current avatar - - + + Land is for sale - - + + Land is being auctioned - - + + To the west of this area is a parcel border - - + + To the south of this area is a parcel border - - + + + Various parcel properties + - - + + No flags set - - + + Allow avatars to fly (a client-side only restriction) - - + + Allow foreign scripts to run - - + + This parcel is for sale - - + + Allow avatars to create a landmark on this parcel - - + + Allows all avatars to edit the terrain on this parcel - - + + Avatars have health and can take damage on this parcel. + If set, avatars can be killed and sent home here - - + + Foreign avatars can create objects here - - + + All objects on this parcel can be purchased - - + + Access is restricted to a group - - + + Access is restricted to a whitelist - - + + Ban blacklist is enabled - - + + Unknown - - + + List this parcel in the search directory - - + + Allow personally owned parcels to be deeded to group - - + + If Deeded, owner contributes required tier to group parcel is deeded to - - + + Restrict sounds originating on this parcel to the + parcel boundaries - - + + Objects on this parcel are sold when the land is + purchsaed - - + + Allow this parcel to be published on the web - - + + The information for this parcel is mature content - - + + The media URL is an HTML page - - + + The media URL is a raw HTML string - - + + Restrict foreign object pushes - - + + Ban all non identified/transacted avatars - - + + Allow group-owned scripts to run - - + + Allow object creation by group members or group + objects - - + + Allow all objects to enter this parcel - - + + Only allow group and owner objects to enter this parcel - - + + Voice Enabled on this parcel - - + + Use Estate Voice channel for Voice on this parcel - - + + Deny Age Unverified Users - - + + + Parcel ownership status + - - + + Placeholder - - + + Parcel is leased (owned) by an avatar or group - - + + Parcel is in process of being leased (purchased) by an avatar or group - - + + Parcel has been abandoned back to Governor Linden - - + + + Category parcel is listed in under search + - - + + No assigned category - - + + Linden Infohub or public area - - + + Adult themed area - - + + Arts and Culture - - + + Business - - + + Educational - - + + Gaming - - + + Hangout or Club - - + + Newcomer friendly - - + + Parks and Nature - - + + Residential - - + + Shopping - - + + Not Used? - - + + Other - - + + Not an actual category, only used for queries - - + + + Type of teleport landing for a parcel + - - + + Unset, simulator default - - + + Specific landing point set for this parcel - - + + No landing point set, direct teleports enabled for + this parcel - - + + + Parcel Media Command used in ParcelMediaCommandMessage + - - + + Stop the media stream and go back to the first frame - - + + Pause the media stream (stop playing but stay on current frame) - - + + Start the current media stream playing and stop when the end is reached - - + + Start the current media stream playing, + loop to the beginning when the end is reached and continue to play - - + + Specifies the texture to replace with video + If passing the key of a texture, it must be explicitly typecast as a key, + not just passed within double quotes. - - + + Specifies the movie URL (254 characters max) - - + + Specifies the time index at which to begin playing - - + + Specifies a single agent to apply the media command to - - + + Unloads the stream. While the stop command sets the texture to the first frame of the movie, + unload resets it to the real texture that the movie was replacing. - - + + Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties + (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. - - + + Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). + Use "text/html" for HTML. - - + + Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). + This might still not be working - - + + Sets a description for the media being displayed (1.19.1 RC0 and later only). - - + + + Some information about a parcel of land returned from a DirectoryManager search + - - + + Global Key of record - - + + Parcel Owners - - + + Name field of parcel, limited to 128 characters - - + + Description field of parcel, limited to 256 characters - - + + Total Square meters of parcel - - + + Total area billable as Tier, for group owned land this will be 10% less than ActualArea - - + + True of parcel is in Mature simulator - - + + Grid global X position of parcel - - + + Grid global Y position of parcel - - + + Grid global Z position of parcel (not used) - - + + Name of simulator parcel is located in - - + + Texture of parcels display picture - - + + Float representing calculated traffic based on time spent on parcel by avatars - - + + Sale price of parcel (not used) - - + + Auction ID of parcel - - + + + Parcel Media Information + - - + + A byte, if 0x1 viewer should auto scale media to fit object - - + + A boolean, if true the viewer should loop the media - - + + The Asset UUID of the Texture which when applied to a + primitive will display the media - - + + A URL which points to any Quicktime supported media type - - + + A description of the media - - + + An Integer which represents the height of the media - - + + An integer which represents the width of the media - - + + A string which contains the mime type of the media - - + + + Parcel of land, a portion of virtual real estate in a simulator + - - + + + Defalt constructor + + Local ID of this parcel - - + + The total number of contiguous 4x4 meter blocks your agent owns within this parcel - - + + The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own - - + + Deprecated, Value appears to always be 0 - - + + Simulator-local ID of this parcel - - + + UUID of the owner of this parcel - - + + Whether the land is deeded to a group or not - - + + + - - + + Date land was claimed - - + + Appears to always be zero - - + + This field is no longer used - - + + Minimum corner of the axis-aligned bounding box for this + parcel - - + + Maximum corner of the axis-aligned bounding box for this + parcel - - + + Bitmap describing land layout in 4x4m squares across the + entire region - - + + Total parcel land area - - + + + - - + + Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used - - + + Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel + owned by the agent or group that owns this parcel - - + + Maximum number of primitives this parcel supports - - + + Total number of primitives on this parcel - - + + For group-owned parcels this indicates the total number of prims deeded to the group, + for parcels owned by an individual this inicates the number of prims owned by the individual - - + + Total number of primitives owned by the parcel group on + this parcel, or for parcels owned by an individual with a group set the + total number of prims set to that group. - - + + Total number of prims owned by other avatars that are not set to group, or not the parcel owner - - + + A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect + the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed - - + + Autoreturn value in minutes for others' objects - - + + + - - + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it - - + + Parcel Name - - + + Parcel Description - - + + URL For Music Stream - - + + + - - + + Price for a temporary pass - - + + How long is pass valid for - - + + + - - + + Key of authorized buyer - - + + Key of parcel snapshot - - + + The landing point location - - + + The landing point LookAt - - + + The type of landing enforced from the enum - - + + + - - + + + - - + + + - - + + Access list of who is whitelisted on this + parcel - - + + Access list of who is blacklisted on this + parcel - - + + TRUE of region denies access to age unverified users - - + + true to obscure (hide) media url - - + + true to obscure (hide) music url - - + + A struct containing media details - - + + + Displays a parcel object in string format + + string containing key=value pairs of a parcel object - - + + + Update the simulator with any local changes to this Parcel object + + Simulator to send updates to + Whether we want the simulator to confirm + the update with a reply packet or not - - + + + Set Autoreturn time + + Simulator to send the update to - - + + + Parcel (subdivided simulator lots) subsystem + - - + + + Default constructor + + A reference to the GridClient object - - + + + Parcel Accesslist + - - + + Agents - - + + + - - + + Flags for specific entry in white/black lists - - + + + Owners of primitives on parcel + - - + + Prim Owners - - + + True of owner is group - - + + Total count of prims owned by OwnerID - - + + true of OwnerID is currently online and is not a group - - + + The date of the most recent prim left by OwnerID - - + + + Called once parcel resource usage information has been collected + + Indicates if operation was successfull + Parcel resource usage information - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + Raised when the simulator responds to a request - - + + Raised when the simulator responds to a request - - + + Raised when the simulator responds to a request - - + + Raised when the simulator responds to a request - - + + Raised when the simulator responds to a request - - + + Raised when the simulator responds to a request - - + + Raised when the simulator responds to a request - - + + Raised when the simulator responds to a Parcel Update request - - + + Raised when the parcel your agent is located sends a ParcelMediaCommand - - + + Raises the ParcelDwellReply event + A ParcelDwellReplyEventArgs object containing the + data returned from the simulator - - + + Raises the ParcelInfoReply event + A ParcelInfoReplyEventArgs object containing the + data returned from the simulator - - + + Raises the ParcelProperties event + A ParcelPropertiesEventArgs object containing the + data returned from the simulator - - + + Raises the ParcelAccessListReply event + A ParcelAccessListReplyEventArgs object containing the + data returned from the simulator - - + + Raises the ParcelObjectOwnersReply event + A ParcelObjectOwnersReplyEventArgs object containing the + data returned from the simulator - - + + Raises the SimParcelsDownloaded event + A SimParcelsDownloadedEventArgs object containing the + data returned from the simulator - - + + Raises the ForceSelectObjectsReply event + A ForceSelectObjectsReplyEventArgs object containing the + data returned from the simulator - - + + Raises the ParcelMediaUpdateReply event + A ParcelMediaUpdateReplyEventArgs object containing the + data returned from the simulator - - + + Raises the ParcelMediaCommand event + A ParcelMediaCommandEventArgs object containing the + data returned from the simulator - - + + + Request basic information for a single parcel + + Simulator-local ID of the parcel - - + + + Request properties of a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + multiple simultaneous requests - - + + + Request the access list for a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelAccessList reply, useful for distinguishing between + multiple simultaneous requests + + - - + + + Request properties of parcels using a bounding box selection + + Simulator containing the parcel + Northern boundary of the parcel selection + Eastern boundary of the parcel selection + Southern boundary of the parcel selection + Western boundary of the parcel selection + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + different types of parcel property requests + A boolean that is returned with the + ParcelProperties reply, useful for snapping focus to a single + parcel - - + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) - - + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + If TRUE, will force a full refresh + Number of milliseconds to pause in between each request - - + + + Request the dwell value for a parcel + + Simulator containing the parcel + Simulator-local ID of the parcel - - + + + Send a request to Purchase a parcel of land + + The Simulator the parcel is located in + The parcels region specific local ID + true if this parcel is being purchased by a group + The groups + true to remove tier contribution if purchase is successful + The parcels size + The purchase price of the parcel + + - - + + + Reclaim a parcel of land + + The simulator the parcel is in + The parcels region specific local ID - - + + + Deed a parcel to a group + + The simulator the parcel is in + The parcels region specific local ID + The groups - - + + + Request prim owners of a parcel of land. + + Simulator parcel is in + The parcels region specific local ID - - + + + Return objects from a parcel + + Simulator parcel is in + The parcels region specific local ID + the type of objects to return, + A list containing object owners s to return - - + + + Subdivide (split) a parcel + + + + + + + + + + + - - + + + Join two parcels of land creating a single parcel + + + + + + + + + + + - - + + + Get a parcels LocalID + + Simulator parcel is in + Vector3 position in simulator (Z not used) + 0 on failure, or parcel LocalID on success. + A call to Parcels.RequestAllSimParcels is required to populate map and + dictionary. - - + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() - - + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() - - + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() - - + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + Height at which the terraform operation is acting at - - + + + Sends a request to the simulator to return a list of objects owned by specific owners + + Simulator local ID of parcel + Owners, Others, Etc + List containing keys of avatars objects to select; + if List is null will return Objects of type selectType + Response data is returned in the event - - + + + Eject and optionally ban a user from a parcel + + target key of avatar to eject + true to also ban target - - + + + Freeze or unfreeze an avatar over your land + + target key to freeze + true to freeze, false to unfreeze - - + + + Abandon a parcel of land + + Simulator parcel is in + Simulator local ID of parcel - - + + + Requests the UUID of the parcel in a remote region at a specified location + + Location of the parcel in the remote region + Remote region handle + Remote region UUID + If successful UUID of the remote parcel, UUID.Zero otherwise - - + + + Retrieves information on resources used by the parcel + + UUID of the parcel + Should per object resource usage be requested + Callback invoked when the request is complete - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - + + Contains a parcels dwell data returned from the simulator in response to an - - + + + Construct a new instance of the ParcelDwellReplyEventArgs class + + The global ID of the parcel + The simulator specific ID of the parcel + The calculated dwell for the parcel - - + + Get the global ID of the parcel - - + + Get the simulator specific ID of the parcel - - + + Get the calculated dwell - - + + Contains basic parcel information data returned from the + simulator in response to an request - - + + + Construct a new instance of the ParcelInfoReplyEventArgs class + + The object containing basic parcel info - - + + Get the object containing basic parcel info - - + + Contains basic parcel information data returned from the simulator in response to an request - - + + + Construct a new instance of the ParcelPropertiesEventArgs class + + The object containing the details + The object containing the details + The result of the request + The number of primitieves your agent is + currently selecting and or sitting on in this parcel + The user assigned ID used to correlate a request with + these results + TODO: - - + + Get the simulator the parcel is located in - - + + Get the object containing the details + If Result is NoData, this object will not contain valid data - - + + Get the result of the request - - + + Get the number of primitieves your agent is + currently selecting and or sitting on in this parcel - - + + Get the user assigned ID used to correlate a request with + these results - - + + TODO: - - + + Contains blacklist and whitelist data returned from the simulator in response to an request - - + + + Construct a new instance of the ParcelAccessListReplyEventArgs class + + The simulator the parcel is located in + The user assigned ID used to correlate a request with + these results + The simulator specific ID of the parcel + TODO: + The list containing the white/blacklisted agents for the parcel - - + + Get the simulator the parcel is located in - - + + Get the user assigned ID used to correlate a request with + these results - - + + Get the simulator specific ID of the parcel - - + + TODO: - - + + Get the list containing the white/blacklisted agents for the parcel - - + + Contains blacklist and whitelist data returned from the + simulator in response to an request - - + + + Construct a new instance of the ParcelObjectOwnersReplyEventArgs class + + The simulator the parcel is located in + The list containing prim ownership counts - - + + Get the simulator the parcel is located in - - + + Get the list containing prim ownership counts - - + + Contains the data returned when all parcel data has been retrieved from a simulator - - + + + Construct a new instance of the SimParcelsDownloadedEventArgs class + + The simulator the parcel data was retrieved from + The dictionary containing the parcel data + The multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. - - + + Get the simulator the parcel data was retrieved from - - + + A dictionary containing the parcel data where the key correlates to the ParcelMap entry - - + + Get the multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. - - + + Contains the data returned when a request - - + + + Construct a new instance of the ForceSelectObjectsReplyEventArgs class + + The simulator the parcel data was retrieved from + The list of primitive IDs + true if the list is clean and contains the information + only for a given request - - + + Get the simulator the parcel data was retrieved from - - + + Get the list of primitive IDs - - + + true if the list is clean and contains the information + only for a given request - - + + Contains data when the media data for a parcel the avatar is on changes - - + + + Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + + the simulator the parcel media data was updated in + The updated media information - - + + Get the simulator the parcel media data was updated in - - + + Get the updated media information - - + + Contains the media command for a parcel the agent is currently on - - + + + Construct a new instance of the ParcelMediaCommandEventArgs class + + The simulator the parcel media command was issued in + + + + + The media command that was sent + + - - + + Get the simulator the parcel media command was issued in - - + + + - - + + + - - + + Get the media command that was sent - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + + + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + + + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + + + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + + + + + - - + + + + + + + - - + + + + + + + + + - - + + + - - + + + + + + + - - + + + + + + + - - + + + + + - - + + + Class for controlling various system settings. + + Some values are readonly because they affect things that + happen when the GridClient object is initialized, so changing them at + runtime won't do any good. Non-readonly values may affect things that + happen at login or dynamically - - + + Constructor + Reference to a GridClient object - - + + Main grid login server - - + + Beta grid login server - - + + + InventoryManager requests inventory information on login, + GridClient initializes an Inventory store for main inventory. + - - + + + InventoryManager requests library information on login, + GridClient initializes an Inventory store for the library. + - - + + Number of milliseconds between sending pings to each sim - - + + Number of milliseconds between sending camera updates - - + + Number of milliseconds between updating the current + positions of moving, non-accelerating and non-colliding objects - - + + Millisecond interval between ticks, where all ACKs are + sent out and the age of unACKed packets is checked - - + + The initial size of the packet inbox, where packets are + stored before processing - - + + Maximum size of packet that we want to send over the wire - - + + The maximum value of a packet sequence number before it + rolls over back to one - - + + The maximum size of the sequence number archive, used to + check for resent and/or duplicate packets - - + + The relative directory where external resources are kept - - + + Login server to connect to - - + + IP Address the client will bind to - - + + Use XML-RPC Login or LLSD Login, default is XML-RPC Login - - + + Number of milliseconds before an asset transfer will time + out - - + + Number of milliseconds before a teleport attempt will time + out - - + + Number of milliseconds before NetworkManager.Logout() will + time out - - + + Number of milliseconds before a CAPS call will time out + Setting this too low will cause web requests time out and + possibly retry repeatedly - - + + Number of milliseconds for xml-rpc to timeout - - + + Milliseconds before a packet is assumed lost and resent - - + + Milliseconds without receiving a packet before the + connection to a simulator is assumed lost - - + + Milliseconds to wait for a simulator info request through + the grid interface - - + + Maximum number of queued ACKs to be sent before SendAcks() + is forced - - + + Network stats queue length (seconds) - - + + Enable/disable storing terrain heightmaps in the + TerrainManager - - + + Enable/disable sending periodic camera updates - - + + Enable/disable automatically setting agent appearance at + login and after sim crossing - - + + Enable/disable automatically setting the bandwidth throttle + after connecting to each simulator + The default throttle uses the equivalent of the maximum + bandwidth setting in the official client. If you do not set a + throttle your connection will by default be throttled well below + the minimum values and you may experience connection problems - - + + Enable/disable the sending of pings to monitor lag and + packet loss - - + + Should we connect to multiple sims? This will allow + viewing in to neighboring simulators and sim crossings + (Experimental) - - + + If true, all object update packets will be decoded in to + native objects. If false, only updates for our own agent will be + decoded. Registering an event handler will force objects for that + type to always be decoded. If this is disabled the object tracking + will have missing or partial prim and avatar information - - + + If true, when a cached object check is received from the + server the full object info will automatically be requested - - + + Whether to establish connections to HTTP capabilities + servers for simulators - - + + Whether to decode sim stats - - + + The capabilities servers are currently designed to + periodically return a 502 error which signals for the client to + re-establish a connection. Set this to true to log those 502 errors - - + + If true, any reference received for a folder or item + the library is not aware of will automatically be fetched - - + + If true, and SEND_AGENT_UPDATES is true, + AgentUpdate packets will continuously be sent out to give the bot + smoother movement and autopiloting - - + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectAvatars. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received - - + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectPrimitives. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received - - + + If true, position and velocity will periodically be + interpolated (extrapolated, technically) for objects and + avatars that are being tracked by the library. This is + necessary to increase the accuracy of speed and position + estimates for simulated objects - - + + + If true, utilization statistics will be tracked. There is a minor penalty + in CPU time for enabling this option. + - - + + If true, parcel details will be stored in the + Simulator.Parcels dictionary as they are received - - + + + If true, an incoming parcel properties reply will automatically send + a request for the parcel access list + - - + + + if true, an incoming parcel properties reply will automatically send + a request for the traffic count. + - - + + + If true, images, and other assets downloaded from the server + will be cached in a local directory + - - + + Path to store cached texture data - - + + Maximum size cached files are allowed to take on disk (bytes) - - + + Default color used for viewer particle effects - - + + Maximum number of times to resend a failed packet - - + + Throttle outgoing packet rate - - + + UUID of a texture used by some viewers to indentify type of client used - - + + + Download textures using GetTexture capability when available + - - + + The maximum number of concurrent texture downloads allowed + Increasing this number will not necessarily increase texture retrieval times due to + simulator throttles - - + + + The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + + This is a static variable which applies to all instances - - + + + Textures taking longer than this value will be flagged as timed out and removed from the pipeline + - - + + + Get or set the minimum log level to output to the console by default + If the library is not compiled with DEBUG defined and this level is set to DEBUG + You will get no output on the console. This behavior can be overriden by creating + a logger configuration file for log4net + - - + + Attach avatar names to log messages - - + + Log packet retransmission info - - + + Cost of uploading an asset + Read-only since this value is dynamically fetched at login - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + + Simulator (region) properties + - - + + No flags set - - + + Agents can take damage and be killed - - + + Landmarks can be created here - - + + Home position can be set in this sim - - + + Home position is reset when an agent teleports away - - + + Sun does not move - - + + No object, land, etc. taxes - - + + Disable heightmap alterations (agents can still plant + foliage) - - + + Land cannot be released, sold, or purchased - - + + All content is wiped nightly - - + + Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) - - + + Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. - - + + Region does not update agent prim interest lists. Internal debugging option. - - + + No collision detection for non-agent objects - - + + No scripts are ran - - + + All physics processing is turned off - - + + Region can be seen from other regions on world map. (Legacy world map option?) - - + + Region can be seen from mainland on world map. (Legacy world map option?) - - + + Agents not explicitly on the access list can visit the region. - - + + Traffic calculations are not run across entire region, overrides parcel settings. - - + + Flight is disabled (not currently enforced by the sim) - - + + Allow direct (p2p) teleporting - - + + Estate owner has temporarily disabled scripting - - + + Restricts the usage of the LSL llPushObject function, applies to whole region. - - + + Deny agents with no payment info on file - - + + Deny agents with payment info on file - - + + Deny agents who have made a monetary transaction - - + + Parcels within the region may be joined or divided by anyone, not just estate owners/managers. - - + + Abuse reports sent from within this region are sent to the estate owner defined email. - - + + Region is Voice Enabled - - + + Removes the ability from parcel owners to set their parcels to show in search. - - + + Deny agents who have not been age verified from entering the region. - - + + + Access level for a simulator + - - + + Unknown or invalid access level - - + + Trial accounts allowed - - + + PG rating - - + + Mature rating - - + + Adult rating - - + + Simulator is offline - - + + Simulator does not exist - - + + + - - + + + + Reference to the GridClient object + IPEndPoint of the simulator + handle of the simulator - - + + + Simulator Statistics + - - + + Total number of packets sent by this simulator to this agent - - + + Total number of packets received by this simulator to this agent - - + + Total number of bytes sent by this simulator to this agent - - + + Total number of bytes received by this simulator to this agent - - + + Time in seconds agent has been connected to simulator - - + + Total number of packets that have been resent - - + + Total number of resent packets recieved - - + + Total number of pings sent to this simulator by this agent - - + + Total number of ping replies sent to this agent by this simulator - - + + + Incoming bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier - - + + + Outgoing bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier - - + + Time last ping was sent - - + + ID of last Ping sent - - + + + - - + + + - - + + Current time dilation of this simulator - - + + Current Frames per second of simulator - - + + Current Physics frames per second of simulator - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + Total number of objects Simulator is simulating - - + + Total number of Active (Scripted) objects running - - + + Number of agents currently in this simulator - - + + Number of agents in neighbor simulators - - + + Number of Active scripts running in this simulator - - + + + - - + + + - - + + + - - + + Number of downloads pending - - + + Number of uploads pending - - + + + - - + + + - - + + Number of local uploads pending - - + + Unacknowledged bytes in queue - - + + A public reference to the client that this Simulator object + is attached to - - + + A Unique Cache identifier for this simulator - - + + The capabilities for this simulator - - + + + - - + + The current version of software this simulator is running - - + + + - - + + A 64x64 grid of parcel coloring values. The values stored + in this array are of the type - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + true if your agent has Estate Manager rights on this region - - + + + - - + + + - - + + + - - + + Statistics information for this simulator and the + connection to the simulator, calculated by the simulator itself + and the library - - + + The regions Unique ID - - + + The physical data center the simulator is located + Known values are: + DallasChandlerSF - - + + The CPU Class of the simulator + Most full mainland/estate sims appear to be 5, + Homesteads and Openspace appear to be 501 - - + + The number of regions sharing the same CPU as this one + "Full Sims" appear to be 1, Homesteads appear to be 4 - - + + The billing product name + Known values are: + Mainland / Full Region (Sku: 023)Estate / Full Region (Sku: 024)Estate / Openspace (Sku: 027)Estate / Homestead (Sku: 029)Mainland / Homestead (Sku: 129) (Linden Owned)Mainland / Linden Homes (Sku: 131) - - + + The billing product SKU + Known values are: + 023 Mainland / Full Region024 Estate / Full Region027 Estate / Openspace029 Estate / Homestead129 Mainland / Homestead (Linden Owned)131 Linden Homes / Full Region - - + + The current sequence number for packets sent to this + simulator. Must be Interlocked before modifying. Only + useful for applications manipulating sequence numbers - - + + + A thread-safe dictionary containing avatars in a simulator + - - + + + A thread-safe dictionary containing primitives in a simulator + - - + + + Provides access to an internal thread-safe dictionary containing parcel + information found in this simulator + - - + + Used internally to track sim disconnections - - + + Event that is triggered when the simulator successfully + establishes a connection - - + + Whether this sim is currently connected or not. Hooked up + to the property Connected - - + + Coarse locations of avatars in this simulator - - + + AvatarPositions key representing TrackAgent target - - + + Sequence numbers of packets we've received + (for duplicate checking) - - + + Packets we sent out that need ACKs from the simulator - - + + Sequence number for pause/resume - - + + Indicates if UDP connection to the sim is fully established - - + + + Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + - - + + The IP address and port of the server - - + + Whether there is a working connection to the simulator or + not - - + + Coarse locations of avatars in this simulator - - + + AvatarPositions key representing TrackAgent target - - + + Indicates if UDP connection to the sim is fully established - - + + + Checks simulator parcel map to make sure it has downloaded all data successfully + + true if map is full (contains no 0's) - - + + + Called when this Simulator object is being destroyed + - - + + + Attempt to connect to this simulator + + Whether to move our agent in to this sim or not + True if the connection succeeded or connection status is + unknown, false if there was a failure - - + + + Initiates connection to the simulator + - - + + + Disconnect from this simulator + - - + + + Instructs the simulator to stop sending update (and possibly other) packets + - - + + + Instructs the simulator to resume sending update packets (unpause) + - - + + + Retrieve the terrain height at a given coordinate + + Sim X coordinate, valid range is from 0 to 255 + Sim Y coordinate, valid range is from 0 to 255 + The terrain height at the given point if the + lookup was successful, otherwise 0.0f + True if the lookup was successful, otherwise false - - + + + Sends a packet + + Packet to be sent - - + + + - - + + + Returns Simulator Name as a String + + + - - + + + + + - - + + + + + + + - - + + + Sends out pending acknowledgements + + Number of ACKs sent - - + + + Resend unacknowledged packets + - - + + + - - + + + Construct a new instance of the SoundManager class, used for playing and receiving + sound assets + + A reference to the current GridClient instance - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + The event subscribers, null of no subscribers - - + + Thread sync lock object - - + + Raised when the simulator sends us data containing + sound - - + + Raised when the simulator sends us data containing + ... - - + + Raised when the simulator sends us data containing + ... - - + + Raised when the simulator sends us data containing + ... - - + + Raises the AttachedSound Event + A AttachedSoundEventArgs object containing + the data sent from the simulator - - + + Raises the AttachedSoundGainChange Event + A AttachedSoundGainChangeEventArgs object containing + the data sent from the simulator - - + + Raises the SoundTrigger Event + A SoundTriggerEventArgs object containing + the data sent from the simulator - - + + Raises the PreloadSound Event + A PreloadSoundEventArgs object containing + the data sent from the simulator - - + + + Plays a sound in the current region at full volume from avatar position + + UUID of the sound to be played - - + + + Plays a sound in the current region at full volume + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. - - + + + Plays a sound in the current region + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 - - + + + Plays a sound in the specified sim + + UUID of the sound to be played. + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 - - + + + Play a sound asset + + UUID of the sound to be played. + handle id for the sim to be played in. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Provides data for the event + The event occurs when the simulator sends + the sound data which emits from an agents attachment + + The following code example shows the process to subscribe to the event + and a stub to handle the data passed from the simulator + + // Subscribe to the AttachedSound event + Client.Sound.AttachedSound += Sound_AttachedSound; + // process the data raised in the event here + private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) + { + // ... Process AttachedSoundEventArgs here ... + } + - - + + + Construct a new instance of the SoundTriggerEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The volume level + The - - + + Simulator where the event originated - - + + Get the sound asset id - - + + Get the ID of the owner - - + + Get the ID of the Object - - + + Get the volume level - - + + Get the - - + + Provides data for the event + The event occurs when an attached sound + changes its volume level - - + + + Construct a new instance of the AttachedSoundGainChangedEventArgs class + + Simulator where the event originated + The ID of the Object + The new volume level - - + + Simulator where the event originated - - + + Get the ID of the Object - - + + Get the volume level - - + + Provides data for the event + + The event occurs when the simulator forwards + a request made by yourself or another agent to play either an asset sound or a built in sound + Requests to play sounds where the is not one of the built-in + will require sending a request to download the sound asset before it can be played + + + The following code example uses the , + and + properties to display some information on a sound request on the window. + + // subscribe to the event + Client.Sound.SoundTrigger += Sound_SoundTrigger; + // play the pre-defined BELL_TING sound + Client.Sound.SendSoundTrigger(Sounds.BELL_TING); + // handle the response data + private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) + { + Console.WriteLine("{0} played the sound {1} at volume {2}", + e.OwnerID, e.SoundID, e.Gain); + } + - - + + + Construct a new instance of the SoundTriggerEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The ID of the objects parent + The volume level + The regionhandle + The source position - - + + Simulator where the event originated - - + + Get the sound asset id - - + + Get the ID of the owner - - + + Get the ID of the Object - - + + Get the ID of the objects parent - - + + Get the volume level - - + + Get the regionhandle - - + + Get the source position - - + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + - - + + + Construct a new instance of the PreloadSoundEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object - - + + Simulator where the event originated - - + + Get the sound asset id - - + + Get the ID of the owner - - + + Get the ID of the Object - - + + + pre-defined built in sounds + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + coins - - + + cash register bell - - + + + - - + + + - - + + rubber - - + + plastic - - + + flesh - - + + wood splintering? - - + + glass break - - + + metal clunk - - + + whoosh - - + + shake - - + + + - - + + ding - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + A dictionary containing all pre-defined sounds + + A dictionary containing the pre-defined sounds, + where the key is the sounds ID, and the value is a string + containing a name to identify the purpose of the sound - - + + X position of this patch - - + + Y position of this patch - - + + A 16x16 array of floats holding decompressed layer data - - + + + Creates a LayerData packet for compressed land data given a full + simulator heightmap and an array of indices of patches to compress + + A 256 * 256 array of floating point values + specifying the height at each meter in the simulator + Array of indexes in the 16x16 grid of patches + for this simulator. For example if 1 and 17 are specified, patches + x=1,y=0 and x=1,y=1 are sent + + - - + + + Add a patch of terrain to a BitPacker + + BitPacker to write the patch to + Heightmap of the simulator, must be a 256 * + 256 float array + X offset of the patch to create, valid values are + from 0 to 15 + Y offset of the patch to create, valid values are + from 0 to 15 - - + + + Default constructor + + + - - + + The event subscribers. null if no subcribers - - + + Thread sync lock object - - + + Raised when the simulator responds sends - - + + Raises the LandPatchReceived event + A LandPatchReceivedEventArgs object containing the + data returned from the simulator - - + + Simulator from that sent tha data - - + + Sim coordinate of the patch - - + + Sim coordinate of the patch - - + + Size of tha patch - - + + Heightmap for the patch - - + + + The current status of a texture request as it moves through the pipeline or final result of a texture request. + - - + + The initial state given to a request. Requests in this state + are waiting for an available slot in the pipeline - - + + A request that has been added to the pipeline and the request packet + has been sent to the simulator - - + + A request that has received one or more packets back from the simulator - - + + A request that has received all packets back from the simulator - - + + A request that has taken longer than + to download OR the initial packet containing the packet information was never received - - + + The texture request was aborted by request of the agent - - + + The simulator replied to the request that it was not able to find the requested texture - - + + + Texture request download handler, allows a configurable number of download slots which manage multiple + concurrent texture downloads from the + This class makes full use of the internal + system for full texture downloads. - - + + + Default constructor, Instantiates a new copy of the TexturePipeline class + + Reference to the instantiated object - - + + + A request task containing information and status of a request as it is processed through the - - + + The current which identifies the current status of the request - - + + The Unique Request ID, This is also the Asset ID of the texture being requested - - + + The slot this request is occupying in the threadpoolSlots array - - + + The ImageType of the request. - - + + The callback to fire when the request is complete, will include + the and the + object containing the result data - - + + If true, indicates the callback will be fired whenever new data is returned from the simulator. + This is used to progressively render textures as portions of the texture are received. - - + + An object that maintains the data of an request thats in-process. - - + + A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID + and also the Asset Texture ID, and the value is an object containing the current state of the request and also + the asset data as it is being re-assembled - - + + Holds the reference to the client object - - + + Maximum concurrent texture requests allowed at a time - - + + An array of objects used to manage worker request threads - - + + An array of worker slots which shows the availablity status of the slot - - + + The primary thread which manages the requests. - - + + true if the TexturePipeline is currently running - - + + A synchronization object used by the primary thread - - + + A refresh timer used to increase the priority of stalled requests - - + + Current number of pending and in-process transfers - - + + + Initialize callbacks required for the TexturePipeline to operate + - - + + + Shutdown the TexturePipeline and cleanup any callbacks or transfers + - - + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request - - + + + Sends the actual request packet to the simulator + + The image to download + Type of the image to download, either a baked + avatar texture or a normal texture + Priority level of the download. Default is + 1,013,000.0f + Number of quality layers to discard. + This controls the end marker of the data sent + Packet number to start the download at. + This controls the start marker of the data sent + Sending a priority of 0 and a discardlevel of -1 aborts + download - - + + + Cancel a pending or in process texture request + + The texture assets unique ID - - + + + Master Download Thread, Queues up downloads in the threadpool + - - + + + The worker thread that sends the request and handles timeouts + + A object containing the request details - - + + + Handle responses from the simulator that tell us a texture we have requested is unable to be located + or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use + + The sender + The EventArgs object containing the packet data - - + + + Handles the remaining Image data that did not fit in the initial ImageData packet + + The sender + The EventArgs object containing the packet data - - + + + Handle the initial ImageDataPacket sent from the simulator + + The sender + The EventArgs object containing the packet data - - + + + - - + + + Delegate to wrap another delegate and its arguments + + + + + - - + + + An instance of DelegateWrapper which calls InvokeWrappedDelegate, + which in turn calls the DynamicInvoke method of the wrapped + delegate + - - + + + Callback used to call EndInvoke on the asynchronously + invoked DelegateWrapper + - - + + + Executes the specified delegate with the specified arguments + asynchronously on a thread pool thread + + + + + - - + + + Invokes the wrapped delegate synchronously + + + + + - - + + + Calls EndInvoke on the wrapper and Close on the resulting WaitHandle + to prevent resource leaks + + + - - + + + - - + + + Initialize the UDP packet handler in server mode + + Port to listening for incoming UDP packets on - - + + + Initialize the UDP packet handler in client mode + + Remote UDP server to connect to - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + Thrown when a packet could not be successfully deserialized + - - + + + Default constructor + - - + + + Constructor that takes an additional error message + + An error message to attach to this exception - - + + + The header of a message template packet. Holds packet flags, sequence + number, packet ID, and any ACKs that will be appended at the end of + the packet + - - + + + Convert the AckList to a byte array, used for packet serializing + + Reference to the target byte array + Beginning position to start writing to in the byte + array, will be updated with the ending position of the ACK list - - + + + + + + + + + + + - - + + + + + + + + + - - + + + A block of data in a packet. Packets are composed of one or more blocks, + each block containing one or more fields + - - + + Current length of the data in this packet - - + + + Create a block from a byte array + + Byte array containing the serialized block + Starting position of the block in the byte array. + This will point to the data after the end of the block when the + call returns - - + + + Serialize this block into a byte array + + Byte array to serialize this block into + Starting position in the byte array to serialize to. + This will point to the position directly after the end of the + serialized block when the call returns - - + + A generic value, not an actual packet type - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - Avatar group management - + + - - Key of Group Member + + - - Total land contribution + + - - Online status information + + - - Abilities that the Group Member has + + - - Current group title + + - - Is a group owner + + - - - Role manager for a group - + + - - Key of the group + + - - Key of Role + + - - Name of Role + + - - Group Title associated with Role + + - - Description of Role + + - - Abilities Associated with Role + + - - Returns the role's title - The role's title + + - - - Class to represent Group Title - + + - - Key of the group + + - - ID of the role title belongs to + + - - Group Title + + - - Whether title is Active + + - - Returns group title + + - - - Represents a group on the grid - + + - - Key of Group + + - - Key of Group Insignia + + - - Key of Group Founder + + - - Key of Group Role for Owners + + - - Name of Group + + - - Text of Group Charter + + - - Title of "everyone" role + + - - Is the group open for enrolement to everyone + + - - Will group show up in search + + - - + + - - + + - - + + - - Is the group Mature + + - - Cost of group membership + + - - + + - - + + - - The total number of current members this group has + + - - The number of roles this group has configured + + - - Show this group in agent's profile + + - - Returns the name of the group - A string containing the name of the group + + - - - A group Vote - + + - - Key of Avatar who created Vote + + - - Text of the Vote proposal + + - - Total number of votes + + - - - A group proposal - + + - - The Text of the proposal + + - - The minimum number of members that must vote before proposal passes or failes + + - - The required ration of yes/no votes required for vote to pass - The three options are Simple Majority, 2/3 Majority, and Unanimous - TODO: this should be an enum + + - - The duration in days votes are accepted + + - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - Struct representing a group notice - + + - - + + - - + + - - + + - - + + - - - - - + + - - - Struct representing a group notice list entry - + + - - Notice ID + + - - Creation timestamp of notice + + - - Agent name who created notice + + - - Notice subject + + - - Is there an attachment? + + - - Attachment Type + + - - - Struct representing a member of a group chat session and their settings - + + - - The of the Avatar + + - - True if user has voice chat enabled + + - - True of Avatar has moderator abilities + + - - True if a moderator has muted this avatars chat + + - - True if a moderator has muted this avatars voice + + - - - Role update flags - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - Can send invitations to groups default role + + - - Can eject members from group + + - - Can toggle 'Open Enrollment' and change 'Signup fee' + + - - Member is visible in the public member list + + - - Can create new roles + + - - Can delete existing roles + + - - Can change Role names, titles and descriptions + + - - Can assign other members to assigners role + + - - Can assign other members to any role + + - - Can remove members from roles + + - - Can assign and remove abilities in roles + + - - Can change group Charter, Insignia, 'Publish on the web' and which - members are publicly visible in group member listings + + - - Can buy land or deed land to group + + - - Can abandon group owned land to Governor Linden on mainland, or Estate owner for - private estates + + - - Can set land for-sale information on group owned parcels + + - - Can subdivide and join parcels + + - - Can join group chat sessions + + - - Can use voice chat in Group Chat sessions + + - - Can moderate group chat sessions + + - - Can toggle "Show in Find Places" and set search category + + - - Can change parcel name, description, and 'Publish on web' settings + + - - Can set the landing point and teleport routing on group land + + - - Can change music and media settings + + - - Can toggle 'Edit Terrain' option in Land settings + + - - Can toggle various About Land > Options settings + + - - Can always terraform land, even if parcel settings have it turned off + + - - Can always fly while over group owned land + + - - Can always rez objects on group owned land + + - - Can always create landmarks for group owned parcels + + - - Can set home location on any group owned parcel + + - - Can modify public access settings for group owned parcels + + - - Can manager parcel ban lists on group owned land + + - - Can manage pass list sales information + + - - Can eject and freeze other avatars on group owned land + + - - Can return objects set to group + + - - Can return non-group owned/set objects + + - - Can return group owned objects + + - - Can landscape using Linden plants + + - - Can deed objects to group + + - - Can move group owned objects + + - - Can set group owned objects for-sale + + - - Pay group liabilities and receive group dividends + + - - Can send group notices + + - - Can receive group notices + + - - Can create group proposals + + - - Can vote on group proposals + + - - - Handles all network traffic related to reading and writing group - information - + + - - The event subscribers. null if no subcribers + + - - Raises the CurrentGroups event - A CurrentGroupsEventArgs object containing the - data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupNamesReply event - A GroupNamesEventArgs object containing the - data response from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupProfile event - An GroupProfileEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupMembers event - A GroupMembersEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupRolesDataReply event - A GroupRolesDataReplyEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupRoleMembersReply event - A GroupRolesRoleMembersReplyEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupTitlesReply event - A GroupTitlesReplyEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupAccountSummary event - A GroupAccountSummaryReplyEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupCreated event - An GroupCreatedEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupJoined event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupLeft event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupDropped event - An GroupDroppedEventArgs object containing the - the group your agent left + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupMemberEjected event - An GroupMemberEjectedEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupNoticesListReply event - An GroupNoticesListReplyEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the GroupInvitation event - An GroupInvitationEventArgs object containing the - data returned from the simulator + + - - Thread sync lock object + + - - A reference to the current instance + + - - Currently-active group members requests + + - - Currently-active group roles requests + + - - Currently-active group role-member requests + + - - Dictionary keeping group members while request is in progress + + - - Dictionary keeping mebmer/role mapping while request is in progress + + - - Dictionary keeping GroupRole information while request is in progress + + - - Caches group name lookups + + - - - Construct a new instance of the GroupManager class - - A reference to the current instance + + - - - Request a current list of groups the avatar is a member of. - - CAPS Event Queue must be running for this to work since the results - come across CAPS. + + - - - Lookup name of group based on groupID - - groupID of group to lookup name for. + + - - - Request lookup of multiple group names - - List of group IDs to request. + + - - Lookup group profile data such as name, enrollment, founder, logo, etc - Subscribe to OnGroupProfile event to receive the results. - group ID (UUID) + + - - Request a list of group members. - Subscribe to OnGroupMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + - - Request group roles - Subscribe to OnGroupRoles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + - - Request members (members,role) role mapping for a group. - Subscribe to OnGroupRolesMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + - - Request a groups Titles - Subscribe to OnGroupTitles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + - - Begin to get the group account summary - Subscribe to the OnGroupAccountSummary event to receive the results. - group ID (UUID) - How long of an interval - Which interval (0 for current, 1 for last) + + - - Invites a user to a group - The group to invite to - A list of roles to invite a person to - Key of person to invite + + - - Set a group as the current active group - group ID (UUID) + + - - Change the role that determines your active title - Group ID to use - Role ID to change to + + - - Set this avatar's tier contribution - Group ID to change tier in - amount of tier to donate + + - - - Save wheather agent wants to accept group notices and list this group in their profile - - Group - Accept notices from this group - List this group in the profile + + - - Request to join a group - Subscribe to OnGroupJoined event for confirmation. - group ID (UUID) to join. + + - - - Request to create a new group. If the group is successfully - created, L$100 will automatically be deducted - - Subscribe to OnGroupCreated event to receive confirmation. - Group struct containing the new group info + + - - Update a group's profile and other information - Groups ID (UUID) to update. - Group struct to update. + + - - Eject a user from a group - Group ID to eject the user from - Avatar's key to eject + + - - Update role information - Modified role to be updated + + - - Create a new group role - Group ID to update - Role to create + + - - Delete a group role - Group ID to update - Role to delete + + - - Remove an avatar from a role - Group ID to update - Role ID to be removed from - Avatar's Key to remove + + - - Assign an avatar to a role - Group ID to update - Role ID to assign to - Avatar's ID to assign to role + + - - Request the group notices list - Group ID to fetch notices for + + - - Request a group notice by key - ID of group notice + + - - Send out a group notice - Group ID to update - GroupNotice structure containing notice data + + - - Start a group proposal (vote) - The Group ID to send proposal to - GroupProposal structure containing the proposal + + - - Request to leave a group - Subscribe to OnGroupLeft event to receive confirmation - The group to leave + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Raised when the simulator sends us data containing - our current group membership + + - - Raised when the simulator responds to a RequestGroupName - or RequestGroupNames request + + - - Raised when the simulator responds to a request + + - - Raised when the simulator responds to a request + + - - Raised when the simulator responds to a request + + - - Raised when the simulator responds to a request + + - - Raised when the simulator responds to a request + + - - Raised when a response to a RequestGroupAccountSummary is returned - by the simulator + + - - Raised when a request to create a group is successful + + - - Raised when a request to join a group either - fails or succeeds + + - - Raised when a request to leave a group either - fails or succeeds + + - - Raised when A group is removed from the group server + + - - Raised when a request to eject a member from a group either - fails or succeeds + + - - Raised when the simulator sends us group notices - + + - - Raised when another agent invites our avatar to join a group + + - - Contains the current groups your agent is a member of + + - - Construct a new instance of the CurrentGroupsEventArgs class - The current groups your agent is a member of + + - - Get the current groups your agent is a member of + + - - A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + - - Construct a new instance of the GroupNamesEventArgs class - The Group names dictionary + + - - Get the Group Names dictionary + + - - Represents the members of a group + + - - - Construct a new instance of the GroupMembersReplyEventArgs class - - The ID of the request - The ID of the group - The membership list of the group + + - - Get the ID as returned by the request to correlate - this result set and the request + + - - Get the ID of the group + + - - Get the dictionary of members + + - - Represents the roles associated with a group + + - - Construct a new instance of the GroupRolesDataReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The dictionary containing the roles + + - - Get the ID as returned by the request to correlate - this result set and the request + + - - Get the ID of the group + + - - Get the dictionary containing the roles + + - - Represents the Role to Member mappings for a group + + - - Construct a new instance of the GroupRolesMembersReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The member to roles map + + - - Get the ID as returned by the request to correlate - this result set and the request + + - - Get the ID of the group + + - - Get the member to roles map + + - - Represents the titles for a group + + - - Construct a new instance of the GroupTitlesReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The titles + + - - Get the ID as returned by the request to correlate - this result set and the request + + - - Get the ID of the group + + - - Get the titles + + - - Represents the summary data for a group + + - - Construct a new instance of the GroupAccountSummaryReplyEventArgs class - The ID of the group - The summary data + + - - Get the ID of the group + + - - Get the summary data + + - - A response to a group create request + + - - Construct a new instance of the GroupCreatedReplyEventArgs class - The ID of the group - the success or faulure of the request - A string containing additional information + + - - Get the ID of the group + + - - true of the group was created successfully + + - - A string containing the message + + - - Represents a response to a request + + - - Construct a new instance of the GroupOperationEventArgs class - The ID of the group - true of the request was successful + + - - Get the ID of the group + + + + + - - true of the request was successful + + - - Represents your agent leaving a group + + - - Construct a new instance of the GroupDroppedEventArgs class - The ID of the group + + - - Get the ID of the group + + - - Represents a list of active group notices + + - - Construct a new instance of the GroupNoticesListReplyEventArgs class - The ID of the group - The list containing active notices + + - - Get the ID of the group + + - - Get the notices list + + - - Represents the profile of a group + + - - Construct a new instance of the GroupProfileEventArgs class - The group profile + + - - Get the group profile + + - - - Provides notification of a group invitation request sent by another Avatar - - The invitation is raised when another avatar makes an offer for our avatar - to join a group. + + - - The ID of the Avatar sending the group invitation + + - - The name of the Avatar sending the group invitation + + - - A message containing the request information which includes - the name of the group, the groups charter and the fee to join details + + - - The Simulator + + - - Set to true to accept invitation, false to decline + + - - - A Wrapper around openjpeg to encode and decode images to and from byte arrays - + + - - TGA Header size + + - - OpenJPEG is not threadsafe, so this object is used to lock - during calls into unmanaged code + + - - - Encode a object into a byte array - - The object to encode - true to enable lossless conversion, only useful for small images ie: sculptmaps - A byte array containing the encoded Image object + + - - - Encode a object into a byte array - - The object to encode - a byte array of the encoded image + + - - - Decode JPEG2000 data to an and - - - JPEG2000 encoded data - ManagedImage object to decode to - Image object to decode to - True if the decode succeeds, otherwise false + + - - - - - - - + + - - - - - - - - + + - - - Encode a object into a byte array - - The source object to encode - true to enable lossless decoding - A byte array containing the source Bitmap object + + - - - Defines the beginning and ending file positions of a layer in an - LRCP-progression JPEG2000 file - + + - - - This structure is used to marshal both encoded and decoded images. - MUST MATCH THE STRUCT IN dotnet.h! - + + - - - Information about a single packet in a JPEG2000 stream - + + - - Packet start position + + - - Packet header end position + + - - Packet end position + + - - - Represents a Landmark with RegionID and Position vector - + + - - UUID of the Landmark target region + + - - Local position of the target + + - - Construct an Asset of type Landmark + + - - - Construct an Asset object of type Landmark - - A unique specific to this asset - A byte array containing the raw asset data + + - - - Encode the raw contents of a string with the specific Landmark format - + + - - - Decode the raw asset data, populating the RegionID and Position - - true if the AssetData was successfully decoded to a UUID and Vector + + - - Override the base classes AssetType + + - - - Represents an that can be worn on an avatar - such as a Shirt, Pants, etc. - + + - - Initializes a new instance of an AssetScriptBinary object + + - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + - - Override the base classes AssetType + + - - - - + + - - - - + + - - - - + + - - - - + + - - - - - - + + - - - The ObservableDictionary class is used for storing key/value pairs. It has methods for firing - events to subscribers when items are added, removed, or changed. - - Key - Value + + - - - A dictionary of callbacks to fire when specified action occurs - + + - - - Register a callback to be fired when an action occurs - - The action - The callback to fire + + - - - Unregister a callback - - The action - The callback to fire + + - - - - - - + + - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking + + - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); - - + + - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); - - + + - - - Try to get entry from the with specified key - - Key to use for lookup - Value returned - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - + + - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - + + - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - + + - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - + + - - Check if Key exists in Dictionary - Key to check for - if found, otherwise + + - - Check if Value exists in Dictionary - Value to check for - if found, otherwise + + - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - - The key - The value + + - - - Removes the specified key, dictionary locking is not performed - - The key. - if successful, otherwise + + - - - Clear the contents of the dictionary - + + - - - Enumerator for iterating dictionary entries - - + + - - - Gets the number of Key/Value pairs contained in the - + + - - - Indexer for the dictionary - - The key - The value + + - - Describes tasks returned in LandStatReply + + - - - Estate level administration and utilities - + + - - Textures for each of the four terrain height levels + + - - Upper/lower texture boundaries for each corner of the sim + + - - - Constructor for EstateTools class - - + + - - The event subscribers. null if no subcribers + + - - Raises the TopCollidersReply event - A TopCollidersReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the TopScriptsReply event - A TopScriptsReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the EstateUsersReply event - A EstateUsersReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the EstateGroupsReply event - A EstateGroupsReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the EstateManagersReply event - A EstateManagersReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the EstateBansReply event - A EstateBansReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the EstateCovenantReply event - A EstateCovenantReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Raises the EstateUpdateInfoReply event - A EstateUpdateInfoReplyEventArgs object containing the - data returned from the data server + + - - Thread sync lock object + + - - - Requests estate information such as top scripts and colliders - - - - - + + - - Requests estate settings, including estate manager and access/ban lists + + - - Requests the "Top Scripts" list for the current region + + - - Requests the "Top Colliders" list for the current region + + - - - Set several estate specific configuration variables - - The Height of the waterlevel over the entire estate. Defaults to 20 - The maximum height change allowed above the baked terrain. Defaults to 4 - The minimum height change allowed below the baked terrain. Defaults to -4 - true to use - if True forces the sun position to the position in SunPosition - The current position of the sun on the estate, or when FixedSun is true the static position - the sun will remain. 6.0 = Sunrise, 30.0 = Sunset + + - - - Request return of objects owned by specified avatar - - The Agents owning the primitives to return - specify the coverage and type of objects to be included in the return - true to perform return on entire estate + + - - - - + + - - - Used for setting and retrieving various estate panel settings - - EstateOwnerMessage Method field - List of parameters to include + + - - - Kick an avatar from an estate - - Key of Agent to remove + + - - - Ban an avatar from an estate - Key of Agent to remove - Ban user from this estate and all others owned by the estate owner + + - - Unban an avatar from an estate - Key of Agent to remove - /// Unban user from this estate and all others owned by the estate owner + + - - - Send a message dialog to everyone in an entire estate - - Message to send all users in the estate + + - - - Send a message dialog to everyone in a simulator - - Message to send all users in the simulator + + + + + + + + + + + - - - Send an avatar back to their home location - - Key of avatar to send home + + - - - Begin the region restart process - + + - - - Cancels a region restart - + + - - Estate panel "Region" tab settings + + - - Estate panel "Debug" tab settings + + - - Used for setting the region's terrain textures for its four height levels - - - - + + - - Used for setting sim terrain texture heights + + - - Requests the estate covenant + + - - - Upload a terrain RAW file - - A byte array containing the encoded terrain data - The name of the file being uploaded - The Id of the transfer request + + - - - Teleports all users home in current Estate - + + - - - Remove estate manager - Key of Agent to Remove - removes manager to this estate and all others owned by the estate owner + + - - - Add estate manager - Key of Agent to Add - Add agent as manager to this estate and all others owned by the estate owner + + - - - Add's an agent to the estate Allowed list - Key of Agent to Add - Add agent as an allowed reisdent to All estates if true + + - - - Removes an agent from the estate Allowed list - Key of Agent to Remove - Removes agent as an allowed reisdent from All estates if true + + - - - - Add's a group to the estate Allowed list - Key of Group to Add - Add Group as an allowed group to All estates if true + + - - - - Removes a group from the estate Allowed list - Key of Group to Remove - Removes Group as an allowed Group from All estates if true + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Used in the ReportType field of a LandStatRequest + + - - Used by EstateOwnerMessage packets + + - - Used by EstateOwnerMessage packets + + - - - - + + - - No flags set + + - - Only return targets scripted objects + + - - Only return targets objects if on others land + + - - Returns target's scripted objects and objects on other parcels + + - - Ground texture settings for each corner of the region + + - - Used by GroundTextureHeightSettings + + - - The high and low texture thresholds for each corner of the sim + + - - Raised on LandStatReply when the report type is for "top colliders" + + - - Construct a new instance of the TopCollidersReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply + + - - - The number of returned items in LandStatReply - + + - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - + + - - Raised on LandStatReply when the report type is for "top Scripts" + + - - Construct a new instance of the TopScriptsReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply + + - - - The number of scripts returned in LandStatReply - + + - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - + + - - Returned, along with other info, upon a successful .RequestInfo() + + - - Construct a new instance of the EstateBansReplyEventArgs class - The estate's identifier on the grid - The number of returned items in LandStatReply - User UUIDs banned + + - - - The identifier of the estate - + + - - - The number of returned itmes - + + - - - List of UUIDs of Banned Users - + + - - Returned, along with other info, upon a successful .RequestInfo() + + - - Construct a new instance of the EstateUsersReplyEventArgs class - The estate's identifier on the grid - The number of users - Allowed users UUIDs + + - - - The identifier of the estate - + + - - - The number of returned items - + + - - - List of UUIDs of Allowed Users - + + - - Returned, along with other info, upon a successful .RequestInfo() + + - - Construct a new instance of the EstateGroupsReplyEventArgs class - The estate's identifier on the grid - The number of Groups - Allowed Groups UUIDs + + - - - The identifier of the estate - + + - - - The number of returned items - + + - - - List of UUIDs of Allowed Groups - + + - - Returned, along with other info, upon a successful .RequestInfo() + + - - Construct a new instance of the EstateManagersReplyEventArgs class - The estate's identifier on the grid - The number of Managers - Managers UUIDs + + + + + - - - The identifier of the estate - + + - - - The number of returned items - + + - - - List of UUIDs of the Estate's Managers - + + - - Returned, along with other info, upon a successful .RequestInfo() + + - - Construct a new instance of the EstateCovenantReplyEventArgs class - The Covenant ID - The timestamp - The estate's name - The Estate Owner's ID (can be a GroupID) + + - - - The Covenant - + + - - - The timestamp - + + - - - The Estate name - + + - - - The Estate Owner's ID (can be a GroupID) - + + - - Returned, along with other info, upon a successful .RequestInfo() + + - - Construct a new instance of the EstateUpdateInfoReplyEventArgs class - The estate's name - The Estate Owners ID (can be a GroupID) - The estate's identifier on the grid - + + - - - The estate's name - + + - - - The Estate Owner's ID (can be a GroupID) - + + - - - The identifier of the estate on the grid - + + - - + + - - - Wrapper around a byte array that allows bit to be packed and unpacked - one at a time or by a variable amount. Useful for very tightly packed - data like LayerData packets - + + - - + + - - - Default constructor, initialize the bit packer / bit unpacker - with a byte array and starting position - - Byte array to pack bits in to or unpack from - Starting position in the byte array + + - - - Pack a floating point value in to the data - - Floating point value to pack + + - - - Pack part or all of an integer in to the data - - Integer containing the data to pack - Number of bits of the integer to pack + + - - - Pack part or all of an unsigned integer in to the data - - Unsigned integer containing the data to pack - Number of bits of the integer to pack + + - - - Pack a single bit in to the data - - Bit to pack + + - - - - - - - - + + - - - - - + + - - - - - + + - - - Unpacking a floating point value from the data - - Unpacked floating point value + + - - - Unpack a variable number of bits from the data in to integer format - - Number of bits to unpack - An integer containing the unpacked bits - This function is only useful up to 32 bits + + - - - Unpack a variable number of bits from the data in to unsigned - integer format - - Number of bits to unpack - An unsigned integer containing the unpacked bits - This function is only useful up to 32 bits + + - - - Unpack a 16-bit signed integer - - 16-bit signed integer + + - - - Unpack a 16-bit unsigned integer - - 16-bit unsigned integer + + - - - Unpack a 32-bit signed integer - - 32-bit signed integer + + - - - Unpack a 32-bit unsigned integer - - 32-bit unsigned integer + + - - + + - - + + - - - Checks the instance back into the object pool - + + - - - Returns an instance of the class that has been checked out of the Object Pool. - + + - - - Creates a new instance of the ObjectPoolBase class. Initialize MUST be called - after using this constructor. - + + - - - Creates a new instance of the ObjectPool Base class. - - The object pool is composed of segments, which - are allocated whenever the size of the pool is exceeded. The number of items - in a segment should be large enough that allocating a new segmeng is a rare - thing. For example, on a server that will have 10k people logged in at once, - the receive buffer object pool should have segment sizes of at least 1000 - byte arrays per segment. - - The minimun number of segments that may exist. - Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. - The frequency which segments are checked to see if they're eligible for cleanup. + + - - - Forces the segment cleanup algorithm to be run. This method is intended - primarly for use from the Unit Test libraries. - + + - - - Responsible for allocate 1 instance of an object that will be stored in a segment. - - An instance of whatever objec the pool is pooling. + + - - - Checks in an instance of T owned by the object pool. This method is only intended to be called - by the WrappedObject class. - - The segment from which the instance is checked out. - The instance of T to check back into the segment. + + - - - Checks an instance of T from the pool. If the pool is not sufficient to - allow the checkout, a new segment is created. - - A WrappedObject around the instance of T. To check - the instance back into the segment, be sureto dispose the WrappedObject - when finished. + + - - - The total number of segments created. Intended to be used by the Unit Tests. - + + - - - The number of items that are in a segment. Items in a segment - are all allocated at the same time, and are hopefully close to - each other in the managed heap. - + + - - - The minimum number of segments. When segments are reclaimed, - this number of segments will always be left alone. These - segments are allocated at startup. - + + - - - The age a segment must be before it's eligible for cleanup. - This is used to prevent thrash, and typical values are in - the 5 minute range. - + + - - - The frequence which the cleanup thread runs. This is typically - expected to be in the 5 minute range. - + + + + + + + + - - = + + - - Number of times we've received an unknown CAPS exception in series. + + - - For exponential backoff on error. + + - - - Represents a texture - + + - - A object containing image data + + - - + + - - + + - - Initializes a new instance of an AssetTexture object + + - - - Initializes a new instance of an AssetTexture object - - A unique specific to this asset - A byte array containing the raw asset data + + - - - Initializes a new instance of an AssetTexture object - - A object containing texture data + + - - - Populates the byte array with a JPEG2000 - encoded image created from the data in - + + - - - Decodes the JPEG2000 data in AssetData to the - object - - True if the decoding was successful, otherwise false + + - - - Decodes the begin and end byte positions for each quality layer in - the image - - + + - - Override the base classes AssetType + + - - - A Name Value pair with additional settings, used in the protocol - primarily to transmit avatar names and active group in object packets - + + - - + + - - + + - - + + - - + + - - + + - - - Constructor that takes all the fields as parameters - - - - - - + + - - - Constructor that takes a single line from a NameValue field - - + + - - Type of the value + + - - Unknown + + - - String value + + - - + + - - + + - - + + - - + + - - Deprecated + + - - String value, but designated as an asset + + - - + + - - - - + + - - + + - - + + - - + + - - + + - - - - + + - - + + - - + + - - + + - - + + - - + + - - - Represents a single Voice Session to the Vivox service. - + + - - - Close this session. - + + - - - Look up an existing Participants in this session - - - + + - - - Represents an Animation - + + - - Default Constructor + + - - - Construct an Asset object of type Animation - - A unique specific to this asset - A byte array containing the raw asset data + + - - Override the base classes AssetType + + - - - Constants for the archiving module - + + - - - The location of the archive control file - + + - - - Path for the assets held in an archive - + + - - - Path for the prims file - + + - - - Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. - + + - - - Path for region settings. - + + - - - The character the separates the uuid from extension information in an archived asset filename - + + - - - Extensions used for asset types in the archive - + + - - - Represents an AssetScriptBinary object containing the - LSO compiled bytecode of an LSL script - + + - - Initializes a new instance of an AssetScriptBinary object + + - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + - - - TODO: Encodes a scripts contents into a LSO Bytecode file - + + - - - TODO: Decode LSO Bytecode into a string - - true + + - - Override the base classes AssetType + + - - - - + + - - No report + + - - Unknown report type + + - - Bug report + + - - Complaint report + + - - Customer service report + + - - - Bitflag field for ObjectUpdateCompressed data blocks, describing - which options are present for each object - + + - - Unknown + + + + + - - Whether the object has a TreeSpecies + + - - Whether the object has floating text ala llSetText + + - - Whether the object has an active particle system + + - - Whether the object has sound attached to it + + - - Whether the object is attached to a root object or not + + - - Whether the object has texture animation settings + + - - Whether the object has an angular velocity + + - - Whether the object has a name value pairs string + + - - Whether the object has a Media URL set + + - - - Specific Flags for MultipleObjectUpdate requests - + + - - None + + - - Change position of prims + + - - Change rotation of prims + + - - Change size of prims + + - - Perform operation on link set + + - - Scale prims uniformly, same as selecing ctrl+shift in the - viewer. Used in conjunction with Scale + + - - - Special values in PayPriceReply. If the price is not one of these - literal value of the price should be use - + + - - - Indicates that this pay option should be hidden - + + - - - Indicates that this pay option should have the default value - + + - - - Contains the variables sent in an object update packet for objects. - Used to track position and movement of prims and avatars - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - Handles all network traffic related to prims and avatar positions and - movement. - + + - - The event subscribers, null of no subscribers + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the ObjectProperties Event - A ObjectPropertiesEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the ObjectPropertiesUpdated Event - A ObjectPropertiesUpdatedEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the ObjectPropertiesFamily Event - A ObjectPropertiesFamilyEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the AvatarUpdate Event - A AvatarUpdateEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the ObjectDataBlockUpdate Event - A ObjectDataBlockUpdateEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the KillObject Event - A KillObjectEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the AvatarSitChanged Event - A AvatarSitChangedEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Raises the PayPriceReply Event - A PayPriceReplyEventArgs object containing - the data sent from the simulator + + - - Thread sync lock object + + - - Reference to the GridClient object + + - - Does periodic dead reckoning calculation to convert - velocity and acceleration to new positions for objects + + - - - Construct a new instance of the ObjectManager class - - A reference to the instance + + - - - Request information for a single object from a - you are currently connected to - - The the object is located - The Local ID of the object + + - - - Request information for multiple objects contained in - the same simulator - - The the objects are located - An array containing the Local IDs of the objects + + - - - Attempt to purchase an original object, a copy, or the contents of - an object - - The the object is located - The Local ID of the object - Whether the original, a copy, or the object - contents are on sale. This is used for verification, if the this - sale type is not valid for the object the purchase will fail - Price of the object. This is used for - verification, if it does not match the actual price the purchase - will fail - Group ID that will be associated with the new - purchase - Inventory folder UUID where the object or objects - purchased should be placed - - - BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, - 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); - - + + - - - Request prices that should be displayed in pay dialog. This will triggger the simulator - to send us back a PayPriceReply which can be handled by OnPayPriceReply event - - The the object is located - The ID of the object - The result is raised in the event + + - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - + + - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - if true, a call to is - made immediately following the request - + + - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - Should objects be deselected immediately after selection - + + - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - + + - - - Update the properties of an object - - The the object is located - The Local ID of the object - true to turn the objects physical property on - true to turn the objects temporary property on - true to turn the objects phantom property on - true to turn the objects cast shadows property on + + - - - Sets the sale properties of a single object - - The the object is located - The Local ID of the object - One of the options from the enum - The price of the object + + - - - Sets the sale properties of multiple objects - - The the objects are located - An array containing the Local IDs of the objects - One of the options from the enum - The price of the object + + - - - Deselect a single object - - The the object is located - The Local ID of the object + + - - - Deselect multiple objects. - - The the objects are located - An array containing the Local IDs of the objects + + - - - Perform a click action on an object - - The the object is located - The Local ID of the object + + - - - Perform a click action (Grab) on a single object - - The the object is located - The Local ID of the object - The texture coordinates to touch - The surface coordinates to touch - The face of the position to touch - The region coordinates of the position to touch - The surface normal of the position to touch (A normal is a vector perpindicular to the surface) - The surface binormal of the position to touch (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space + + - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties + + - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Specify the - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties + + - - - Rez a Linden tree - - A reference to the object where the object resides - The size of the tree - The rotation of the tree - The position of the tree - The Type of tree - The of the group to set the tree to, - or UUID.Zero if no group is to be set - true to use the "new" Linden trees, false to use the old + + - - - Rez grass and ground cover - - A reference to the object where the object resides - The size of the grass - The rotation of the grass - The position of the grass - The type of grass from the enum - The of the group to set the tree to, - or UUID.Zero if no group is to be set + + - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply + + - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - A media URL (not used) + + - - - Set the Light data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set + + - - - Set the flexible data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set + + - - - Set the sculptie texture and data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set + + - - - Unset additional primitive parameters on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The extra parameters to set + + - - - Link multiple prims into a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to link - The last object in the array will be the root object of the linkset TODO: Is this true? + + - - - Delink/Unlink multiple prims from a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to delink + + - - - Change the rotation of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation of the object + + - - - Set the name of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new name of the object + + - - - Set the name of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the name of - An array which contains the new names of the objects + + - - - Set the description of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new description of the object + + - - - Set the descriptions of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the description of - An array which contains the new descriptions of the objects + + - - - Attach an object to this avatar - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The point on the avatar the object will be attached - The rotation of the attached object + + - - - Drop an attached object from this avatar - - A reference to the - object where the objects reside. This will always be the simulator the avatar is currently in - - The object's ID which is local to the simulator the object is in + + - - - Detach an object from yourself - - A reference to the - object where the objects reside - - This will always be the simulator the avatar is currently in - - An array which contains the IDs of the objects to detach + + - - - Change the position of an object, Will change position of entire linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object + + - - - Change the position of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - if true, will change position of (this) child prim only, not entire linkset + + - - - Change the Scale (size) of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change scale of this prim only, not entire linkset - True to resize prims uniformly + + - - - Change the Rotation of an object that is either a child or a whole linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change rotation of this prim only, not entire linkset + + - - - Send a Multiple Object Update packet to change the size, scale or rotation of a primitive - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation, size, or position of the target object - The flags from the Enum + + - - - Deed an object (prim) to a group, Object must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The of the group to deed the object to + + - - - Deed multiple objects (prims) to a group, Objects must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - An array which contains the IDs of the objects to deed - The of the group to deed the object to + + - - - Set the permissions on multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the permissions on - The new Who mask to set - The new Permissions mark to set - TODO: What does this do? + + - - - Request additional properties for an object - - A reference to the object where the object resides - + + - - - Request additional properties for an object - - A reference to the object where the object resides - Absolute UUID of the object - Whether to require server acknowledgement of this request + + - - - Set the ownership of a list of objects to the specified group - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the group id on - The Groups ID + + - - - Update current URL of the previously set prim media - - UUID of the prim - Set current URL to this - Prim face number - Simulator in which prim is located + + - - - Set object media - - UUID of the prim - Array the length of prims number of faces. Null on face indexes where there is - no media, on faces which contain the media - Simulatior in which prim is located + + - - - Retrieve information about object media - - UUID of the primitive - Simulator where prim is located - Call this callback when done + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - - A terse object update, used when a transformation matrix or - velocity/acceleration for an object changes but nothing else - (scale/position/rotation/acceleration/velocity) - - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - - Setup construction data for a basic primitive shape - - Primitive shape to construct - Construction data that can be plugged into a + + - - - - - - - - + + - - - - - - + + - - - Set the Shape data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - Data describing the prim shape + + - - - Set the Material data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new material of the object + + - - - - - - - - + + - - - - - - - - + + - - Raised when the simulator sends us data containing - A , Foliage or Attachment - - + + - - Raised when the simulator sends us data containing - additional information - - + + - - Raised when the simulator sends us data containing - Primitive.ObjectProperties for an object we are currently tracking + + - - Raised when the simulator sends us data containing - additional and details - + + - - Raised when the simulator sends us data containing - updated information for an + + - - Raised when the simulator sends us data containing - and movement changes + + - - Raised when the simulator sends us data containing - updates to an Objects DataBlock + + - - Raised when the simulator informs us an - or is no longer within view + + - - Raised when the simulator sends us data containing - updated sit information for our + + - - Raised when the simulator sends us data containing - purchase price information for a + + - - - Callback for getting object media data via CAP - - Indicates if the operation was succesfull - Object media version string - Array indexed on prim face of media entry data + + - - Provides data for the event - The event occurs when the simulator sends - an containing a Primitive, Foliage or Attachment 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 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 - - - The following code example uses the , , and - properties to display new Primitives and Attachments on the window. - - // Subscribe to the event that gives us prim and foliage information - Client.Objects.ObjectUpdate += Objects_ObjectUpdate; - - - private void Objects_ObjectUpdate(object sender, PrimEventArgs e) - { - Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); - } - - - - - + + - - - Construct a new instance of the PrimEventArgs class - - The simulator the object originated from - The Primitive - The simulator time dilation - The prim was not in the dictionary before this update - true if the primitive represents an attachment to an agent + + - - Get the simulator the originated from + + - - Get the details + + - - true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) + + - - true if the is attached to an + + - - Get the simulator Time Dilation + + - - 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); - } - } - - - - + + - - - Construct a new instance of the AvatarUpdateEventArgs class - - The simulator the packet originated from - The data - The simulator time dilation - The avatar was not in the dictionary before this update + + - - Get the simulator the object originated from + + - - Get the data + + - - Get the simulator time dilation + + - - true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment data - The event is also raised when a request is - made. - - - The following code example uses the , and - - properties to display new attachments and send a request for additional properties containing the name of the - attachment then display it on the window. - - // Subscribe to the event that provides additional primitive details - Client.Objects.ObjectProperties += Objects_ObjectProperties; - - // handle the properties data that arrives - private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) - { - Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); - } - - + + - - - Construct a new instance of the ObjectPropertiesEventArgs class - - The simulator the object is located - The primitive Properties + + - - Get the simulator the object is located + + - - Get the primitive properties + + - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive or Foliage data that is currently - being tracked in the dictionary - The event is also raised when a request is - made and is enabled - + + - - - Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class - - The simulator the object is located - The Primitive - The primitive Properties + + - - Get the simulator the object is located + + - - Get the primitive details + + - - Get the primitive properties + + - - 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 - + + + + + + + + + + + - - Get the simulator the object is located + + - - + + - - + + - - Provides primitive data containing updated location, velocity, rotation, textures for the event - The event occurs when the simulator sends updated location, velocity, rotation, etc - + + - - Get the simulator the object is located + + - - Get the primitive details + + - - + + - - + + - - - - + + - - Get the simulator the object is located + + - - Get the primitive details + + - - + + - - + + - - + + - - + + - - Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the - event + + - - Get the simulator the object is located + + - - The LocalID of the object + + - - - Provides updates sit position data - + + - - Get the simulator the object is located + + - - + + - - + + - - + + - - - - + + - - Get the simulator the object is located + + - - + + - - + + - - + + - - - Indicates if the operation was successful - + + - - - Media version string - + + - - - Array of media entries indexed by face number - + + - - - - + + - - - - - + + - - - De-serialization constructor for the InventoryNode Class - + + - - - Serialization handler for the InventoryNode Class - + + - - - De-serialization handler for the InventoryNode Class - + + - - - - - + + - - + + - - + + - - + + - - + + - - - For inventory folder nodes specifies weather the folder needs to be - refreshed from the server - + + - - - Main class to expose grid functionality to clients. All of the - classes needed for sending and receiving data are accessible through - this class. - - - - // Example minimum code required to instantiate class and - // connect to a simulator. - using System; - using System.Collections.Generic; - using System.Text; - using OpenMetaverse; - - namespace FirstBot - { - class Bot - { - public static GridClient Client; - static void Main(string[] args) - { - Client = new GridClient(); // instantiates the GridClient class - // to the global Client object - // Login to Simulator - Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); - // Wait for a Keypress - Console.ReadLine(); - // Logout of simulator - Client.Network.Logout(); - } - } - } - - + + - - Networking subsystem + + - - Settings class including constant values and changeable - parameters for everything + + - - Parcel (subdivided simulator lots) subsystem + + - - Our own avatars subsystem + + - - Other avatars subsystem + + - - Estate subsystem + + - - Friends list subsystem + + - - Grid (aka simulator group) subsystem + + - - Object subsystem + + - - Group subsystem + + - - Asset subsystem + + - - Appearance subsystem + + - - Inventory subsystem + + - - Directory searches including classifieds, people, land - sales, etc + + - - Handles land, wind, and cloud heightmaps + + - - Handles sound-related networking + + - - Throttling total bandwidth usage, or allocating bandwidth - for specific data stream types + + - - - Default constructor - + + - - - Return the full name of this instance - - Client avatars full name + + - - - Class that handles the local asset cache - + + - - - Default constructor - - A reference to the GridClient object + + - - - Disposes cleanup timer - + + - - - Only create timer when needed - + + - - - Return bytes read from the local asset cache, null if it does not exist - - UUID of the asset we want to get - Raw bytes of the asset, or null on failure + + - - - Returns ImageDownload object of the - image from the local image cache, null if it does not exist - - UUID of the image we want to get - ImageDownload object containing the image, or null on failure + + - - - Constructs a file name of the cached asset - - UUID of the asset - String with the file name of the cahced asset + + + + + - - - Saves an asset to the local cache - - UUID of the asset - Raw bytes the asset consists of - Weather the operation was successfull + + - - - Get the file name of the asset stored with gived UUID - - UUID of the asset - Null if we don't have that UUID cached on disk, file name if found in the cache folder + + - - - Checks if the asset exists in the local cache - - UUID of the asset - True is the asset is stored in the cache, otherwise false + + - - - Wipes out entire cache - + + - - - Brings cache size to the 90% of the max size - + + - - - Asynchronously brings cache size to the 90% of the max size - + + - - - Adds up file sizes passes in a FileInfo array - + + - - - Checks whether caching is enabled - + + - - - Periodically prune the cache - + + - - - Nicely formats file sizes - - Byte size we want to output - String with humanly readable file size + + - - - Allows setting weather to periodicale prune the cache if it grows too big - Default is enabled, when caching is enabled - + + - - - How long (in ms) between cache checks (default is 5 min.) - + + - - - Helper class for sorting files by their last accessed time - + + - - - Permissions for control of object media - + + - - - Style of cotrols that shold be displayed to the user - + + - - - Class representing media data for a single face - + + - - Is display of the alternative image enabled + + - - Should media auto loop + + - - Shoule media be auto played + + - - Auto scale media to prim face + + - - Should viewer automatically zoom in on the face when clicked + + - - Should viewer interpret first click as interaction with the media - or when false should the first click be treated as zoom in commadn + + - - Style of controls viewer should display when - viewer media on this face + + - - Starting URL for the media + + - - Currently navigated URL + + - - Media height in pixes + + - - Media width in pixels + + - - Who can controls the media + + - - Who can interact with the media + + - - Is URL whitelist enabled + + - - Array of URLs that are whitelisted + + - - - Serialize to OSD - - OSDMap with the serialized data + + - - - Deserialize from OSD data - - Serialized OSD data - Deserialized object + + - - - Class for controlling various system settings. - - Some values are readonly because they affect things that - happen when the GridClient object is initialized, so changing them at - runtime won't do any good. Non-readonly values may affect things that - happen at login or dynamically + + - - Main grid login server + + - - Beta grid login server + + - - - InventoryManager requests inventory information on login, - GridClient initializes an Inventory store for main inventory. - + + - - - InventoryManager requests library information on login, - GridClient initializes an Inventory store for the library. - + + - - Number of milliseconds between sending pings to each sim + + - - Number of milliseconds between sending camera updates + + - - Number of milliseconds between updating the current - positions of moving, non-accelerating and non-colliding objects + + - - Millisecond interval between ticks, where all ACKs are - sent out and the age of unACKed packets is checked + + - - The initial size of the packet inbox, where packets are - stored before processing + + - - Maximum size of packet that we want to send over the wire + + - - The maximum value of a packet sequence number before it - rolls over back to one + + - - The maximum size of the sequence number archive, used to - check for resent and/or duplicate packets + + - - The relative directory where external resources are kept + + - - Login server to connect to + + - - IP Address the client will bind to + + - - Use XML-RPC Login or LLSD Login, default is XML-RPC Login + + - - Number of milliseconds before an asset transfer will time - out + + - - Number of milliseconds before a teleport attempt will time - out + + - - Number of milliseconds before NetworkManager.Logout() will - time out + + - - Number of milliseconds before a CAPS call will time out - Setting this too low will cause web requests time out and - possibly retry repeatedly + + - - Number of milliseconds for xml-rpc to timeout + + - - Milliseconds before a packet is assumed lost and resent + + - - Milliseconds without receiving a packet before the - connection to a simulator is assumed lost + + - - Milliseconds to wait for a simulator info request through - the grid interface + + - - Maximum number of queued ACKs to be sent before SendAcks() - is forced + + - - Network stats queue length (seconds) + + + + + + + + + + + - - Enable/disable storing terrain heightmaps in the - TerrainManager + + - - Enable/disable sending periodic camera updates + + - - Enable/disable automatically setting agent appearance at - login and after sim crossing + + - - Enable/disable automatically setting the bandwidth throttle - after connecting to each simulator - The default throttle uses the equivalent of the maximum - bandwidth setting in the official client. If you do not set a - throttle your connection will by default be throttled well below - the minimum values and you may experience connection problems + + - - Enable/disable the sending of pings to monitor lag and - packet loss + + - - Should we connect to multiple sims? This will allow - viewing in to neighboring simulators and sim crossings - (Experimental) + + - - If true, all object update packets will be decoded in to - native objects. If false, only updates for our own agent will be - decoded. Registering an event handler will force objects for that - type to always be decoded. If this is disabled the object tracking - will have missing or partial prim and avatar information + + - - If true, when a cached object check is received from the - server the full object info will automatically be requested + + - - Whether to establish connections to HTTP capabilities - servers for simulators + + - - Whether to decode sim stats + + - - The capabilities servers are currently designed to - periodically return a 502 error which signals for the client to - re-establish a connection. Set this to true to log those 502 errors + + - - If true, any reference received for a folder or item - the library is not aware of will automatically be fetched + + - - If true, and SEND_AGENT_UPDATES is true, - AgentUpdate packets will continuously be sent out to give the bot - smoother movement and autopiloting + + - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectAvatars. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received + + - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectPrimitives. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received + + - - If true, position and velocity will periodically be - interpolated (extrapolated, technically) for objects and - avatars that are being tracked by the library. This is - necessary to increase the accuracy of speed and position - estimates for simulated objects + + - - - If true, utilization statistics will be tracked. There is a minor penalty - in CPU time for enabling this option. - + + - - If true, parcel details will be stored in the - Simulator.Parcels dictionary as they are received + + - - - If true, an incoming parcel properties reply will automatically send - a request for the parcel access list - + + - - - if true, an incoming parcel properties reply will automatically send - a request for the traffic count. - + + - - - If true, images, and other assets downloaded from the server - will be cached in a local directory - + + - - Path to store cached texture data + + - - Maximum size cached files are allowed to take on disk (bytes) + + - - Default color used for viewer particle effects + + - - Maximum number of times to resend a failed packet + + - - Throttle outgoing packet rate + + - - UUID of a texture used by some viewers to indentify type of client used + + - - - Download textures using GetTexture capability when available - + + - - The maximum number of concurrent texture downloads allowed - Increasing this number will not necessarily increase texture retrieval times due to - simulator throttles + + - - - The Refresh timer inteval is used to set the delay between checks for stalled texture downloads - - This is a static variable which applies to all instances + + - - - Textures taking longer than this value will be flagged as timed out and removed from the pipeline - + + - - - Get or set the minimum log level to output to the console by default - - If the library is not compiled with DEBUG defined and this level is set to DEBUG - You will get no output on the console. This behavior can be overriden by creating - a logger configuration file for log4net - + + - - Attach avatar names to log messages + + - - Log packet retransmission info + + - - Constructor - Reference to a GridClient object + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Cost of uploading an asset - Read-only since this value is dynamically fetched at login + + - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - Login Request Parameters - + + - - The URL of the Login Server + + - - The number of milliseconds to wait before a login is considered - failed due to timeout + + - - The request method - login_to_simulator is currently the only supported method + + - - The Agents First name + + - - The Agents Last name + + - - A md5 hashed password - plaintext password will be automatically hashed + + - - The agents starting location once logged in - Either "last", "home", or a string encoded URI - containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 + + - - A string containing the client software channel information - Second Life Release + + - - The client software version information - The official viewer uses: Second Life Release n.n.n.n - where n is replaced with the current version of the viewer + + - - A string containing the platform information the agent is running on + + - - A string hash of the network cards Mac Address + + - - Unknown or deprecated + + - - A string hash of the first disk drives ID used to identify this clients uniqueness + + - - A string containing the viewers Software, this is not directly sent to the login server but - instead is used to generate the Version string + + - - A string representing the software creator. This is not directly sent to the login server but - is used by the library to generate the Version information + + - - If true, this agent agrees to the Terms of Service of the grid its connecting to + + - - Unknown + + - - An array of string sent to the login server to enable various options + + - - A randomly generated ID to distinguish between login attempts. This value is only used - internally in the library and is never sent over the wire + + - - - Default constuctor, initializes sane default values - + + - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number + + - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - URI of the login server + + - - - The decoded data returned from the login server after a successful login - + + - - true, false, indeterminate + + - - Login message of the day + + - - M or PG, also agent_region_access and agent_access_max + + - - - Parse LLSD Login Reply Data - - An - contaning the login response data - XML-RPC logins do not require this as XML-RPC.NET - automatically populates the struct properly using attributes + + - - - Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. - + + - - - Rotation Keyframe count (used internally) - + + - - - Position Keyframe count (used internally) - + + - - - Animation Priority - + + - - - The animation length in seconds. - + + - - - Expression set in the client. Null if [None] is selected - + + - - - The time in seconds to start the animation - + + - - - The time in seconds to end the animation - + + - - - Loop the animation - + + - - - Meta data. Ease in Seconds. - + + - - - Meta data. Ease out seconds. - + + - - - Meta Data for the Hand Pose - + + - - - Number of joints defined in the animation - + + - - - Contains an array of joints - + + - - - Searialize an animation asset into it's joints/keyframes/meta data - - + + - - - Variable length strings seem to be null terminated in the animation asset.. but.. - use with caution, home grown. - advances the index. - - The animation asset byte array - The offset to start reading - a string + + - - - Read in a Joint from an animation asset byte array - Variable length Joint fields, yay! - Advances the index - - animation asset byte array - Byte Offset of the start of the joint - The Joint data serialized into the binBVHJoint structure + + - - - Read Keyframes of a certain type - advance i - - Animation Byte array - Offset in the Byte Array. Will be advanced - Number of Keyframes - Scaling Min to pass to the Uint16ToFloat method - Scaling Max to pass to the Uint16ToFloat method - + + - - - A Joint and it's associated meta data and keyframes - + + - - - Name of the Joint. Matches the avatar_skeleton.xml in client distros - + + - - - Joint Animation Override? Was the same as the Priority in testing.. - + + - - - Array of Rotation Keyframes in order from earliest to latest - + + - - - Array of Position Keyframes in order from earliest to latest - This seems to only be for the Pelvis? - + + - - - A Joint Keyframe. This is either a position or a rotation. - + + - - - Either a Vector3 position or a Vector3 Euler rotation - + + - - - Poses set in the animation metadata for the hands. - + + - - - Avatar profile flags - + + - - - Represents an avatar (other than your own) - + + - - Groups that this avatar is a member of + + - - Positive and negative ratings + + - - Avatar properties including about text, profile URL, image IDs and - publishing settings + + - - Avatar interests including spoken languages, skills, and "want to" - choices + + - - Movement control flags for avatars. Typically not set or used by - clients. To move your avatar, use Client.Self.Movement instead + + - - - Contains the visual parameters describing the deformation of the avatar - + + - - - Default constructor - + + - - First name + + - - Last name + + - - Full name + + - - Active group + + - - - Positive and negative ratings - + + - - Positive ratings for Behavior + + - - Negative ratings for Behavior + + - - Positive ratings for Appearance + + - - Negative ratings for Appearance + + - - Positive ratings for Building + + - - Negative ratings for Building + + - - Positive ratings given by this avatar + + - - Negative ratings given by this avatar + + - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - + + - - First Life about text + + - - First Life image ID + + - - + + - - + + - - + + - - + + - - Profile image ID + + - - Flags of the profile + + - - Web URL for this profile + + - - Should this profile be published on the web + + - - Avatar Online Status + + - - Is this a mature profile + + - - + + - - + + - - - Avatar interests including spoken languages, skills, and "want to" - choices - + + - - Languages profile field + + - - + + - - + + - - + + - - + + - + - Extract the avatar UUID encoded in a SIP URI + Operation to apply when applying color to texture - - - + - The type of bump-mapping applied to a face + Information needed to translate visual param value to RGBA color - - + + + Construct VisualColorParam + + Operation to apply when applying color to texture + Colors - - + + + Represents alpha blending and bump infor for a visual parameter + such as sleive length + - - + + + Create new alhpa information for a visual param + + Stregth of the alpha to apply + File containing the alpha channel + Skip blending if parameter value is 0 + Use miltiply insted of alpha blending - - + + Stregth of the alpha to apply - - + + File containing the alpha channel - - + + Skip blending if parameter value is 0 - - + + Use miltiply insted of alpha blending - - + + + A single visual characteristic of an avatar mesh, such as eyebrow height + - - + + + Set all the values through the constructor + + Index of this visual param + Internal name + + + + + Displayable label of this characteristic + Displayable label for the minimum value of this characteristic + Displayable label for the maximum value of this characteristic + Default value + Minimum value + Maximum value + Is this param used for creation of bump layer? + Array of param IDs that are drivers for this parameter + Alpha blending/bump info + Color information - - + + Index of this visual param - - + + Internal name - - + + Group ID this parameter belongs to - - + + Name of the wearable this parameter belongs to - - + + Displayable label of this characteristic - - + + Displayable label for the minimum value of this characteristic - - + + Displayable label for the maximum value of this characteristic - - + + Default value - - + + Minimum value - - - The level of shininess applied to a face - + + Maximum value - - + + Is this param used for creation of bump layer? - - + + Alpha blending/bump info - - + + Color information - - + + Array of param IDs that are drivers for this parameter - + - The texture mapping style used for a face + Holds the Params array of all the avatar appearance parameters - - - - - - - - + + + Base class for all Asset types + - - + + + Construct a new Asset object + - + - Flags in the TextureEntry block that describe which properties are - set + Construct a new Asset object + A unique specific to this asset + A byte array containing the raw asset data - - + + A byte array containing the raw asset data - - + + True if the asset it only stored on the server temporarily - - + + A unique ID - - + + The assets unique ID - - + + + The "type" of asset, Notecard, Animation, etc + - - + + + Regenerates the AssetData byte array from the properties + of the derived class. + - - + + + Decodes the AssetData, placing it in appropriate properties of the derived + class. + + True if the asset decoding succeeded, otherwise false - - + + + Constants for the archiving module + - - + + + The location of the archive control file + - - + + + Path for the assets held in an archive + + + + + Path for the prims file + - - + + + Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. + - - + + + Path for region settings. + - + - + The character the separates the uuid from extension information in an archived asset filename - - + + + Extensions used for asset types in the archive + - - + + + Archives assets + - - + + + Archive assets + - - + + + Archive the assets given to this archiver to the given archive. + + + - - + + + Write an assets metadata file to the given archive + + + - - + + + Write asset data files to the given archive + + + - - + + + Temporary code to do the bare minimum required to read a tar archive for our purposes + - - + + + Generate a tar reader which reads from the given stream. + + + - - + + + Binary reader for the underlying stream + - - + + + Used to trim off null chars + - - + + + Used to trim off space chars + - - + + + Read the next entry in the tar file. + + + + + + the data for the entry. Returns null if there are no more entries - - + + + Read the next 512 byte chunk of data as a tar header. + + A tar header struct. null if we have reached the end of the archive. - - + + + Read data following a header + + + + + - - + + + Convert octal bytes to a decimal representation + + + + + + + + + - - + + + Temporary code to produce a tar archive in tar v7 format + - - + + + Binary writer for the underlying stream + - - + + + Write a directory entry to the tar archive. We can only handle one path level right now! + + + - - + + + Write a file to the tar archive + + + + + - - + + + Write a file to the tar archive + + + + + - - + + + Finish writing the raw tar archive data to a stream. The stream will be closed on completion. + - + - + Write a particular entry + + + + + + - - + + + Represents an Animation + - - + + Default Constructor - - + + + Construct an Asset object of type Animation + + A unique specific to this asset + A byte array containing the raw asset data - - + + Override the base classes AssetType - + - + Represents an that represents an avatars body ie: Hair, Etc. - - - + + Initializes a new instance of an AssetBodyPart object + + + Initializes a new instance of an AssetBodyPart object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + - + Represents an that can be worn on an avatar + such as a Shirt, Pants, etc. - - - - - + + Initializes a new instance of an AssetScriptBinary object - - + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data - - + + Override the base classes AssetType - + - + Type of gesture step - - - + - + Base class for gesture steps - - - - - - - - + + + Retururns what kind of gesture step this is + - - + + + Describes animation step of a gesture + - - + + + If true, this step represents start of animation, otherwise animation stop + - - + + + Animation asset - + - + Animation inventory name - - + + + Returns what kind of gesture step this is + - - + + + Describes sound step of a gesture + - - + + + Sound asset - - + + + Sound inventory name + - - + + + Returns what kind of gesture step this is + - + - + Describes sound step of a gesture - - - + - + Text to output in chat - - - + - + Returns what kind of gesture step this is - - - + - + Describes sound step of a gesture - - - - + - + If true in this step we wait for all animations to finish - + - + If true gesture player should wait for the specified amount of time - - - + - + Time in seconds to wait if WaitForAnimation is false - - - + - + Returns what kind of gesture step this is - - - - Positional vector of the users position - - - Velocity vector of the position - - - At Orientation (X axis) of the position - - - Up Orientation (Y axis) of the position - - Left Orientation (Z axis) of the position - - + - Image width + Describes the final step of a gesture - + - Image height + Returns what kind of gesture step this is - + - Image channel flags + Represents a sequence of animations, sounds, and chat actions - + - Red channel data + Constructs guesture asset - + - Green channel data + Constructs guesture asset + A unique specific to this asset + A byte array containing the raw asset data - + - Blue channel data + Keyboard key that triggers the gestyre - + - Alpha channel data + Modifier to the trigger key - + - Bump channel data + String that triggers playing of the gesture sequence - + - Create a new blank image + Text that replaces trigger in chat once gesture is triggered - width - height - channel flags - + - + Sequence of gesture steps - - + - Convert the channels in the image. Channels are created or destroyed as required. + Returns asset type - new channel flags - + - Resize or stretch the image using nearest neighbor (ugly) resampling + Encodes gesture asset suitable for uplaod - new width - new height - + - Create a byte array containing 32-bit RGBA data with a bottom-left - origin, suitable for feeding directly into OpenGL + Decodes gesture assset into play sequence - A byte array containing raw texture data + true if the asset data was decoded successfully - + - pre-defined built in sounds + Represents a Landmark with RegionID and Position vector - - - - - - - - - - - - - - - - - - - - - - - - - - coins - - - cash register bell + + Construct an Asset of type Landmark - - + + + Construct an Asset object of type Landmark + + A unique specific to this asset + A byte array containing the raw asset data - - + + UUID of the Landmark target region - - rubber + + Local position of the target - - plastic + + Override the base classes AssetType - - flesh + + + Encode the raw contents of a string with the specific Landmark format + - - wood splintering? + + + Decode the raw asset data, populating the RegionID and Position + + true if the AssetData was successfully decoded to a UUID and Vector - - glass break + + + Represents a string of characters encoded with specific formatting properties + - - metal clunk + + Construct an Asset of type Notecard - - whoosh + + + Construct an Asset object of type Notecard + + A unique specific to this asset + A byte array containing the raw asset data - - shake + + A text string containing main text of the notecard - - + + List of s embedded on the notecard - - ding + + Override the base classes AssetType - - + + + Encode the raw contents of a string with the specific Linden Text properties + - - + + + Decode the raw asset data including the Linden Text properties + + true if the AssetData was successfully decoded - - + + + A linkset asset, containing a parent primitive and zero or more children + - - + + Initializes a new instance of an AssetPrim object - - + + + Initializes a new instance of an AssetPrim object + + A unique specific to this asset + A byte array containing the raw asset data - - + + + Only used internally for XML serialization/deserialization + - - + + Override the base classes AssetType - - + + + - - + + + + + - - + + + The deserialized form of a single primitive in a linkset asset + - - + + + Represents an AssetScriptBinary object containing the + LSO compiled bytecode of an LSL script + - - + + Initializes a new instance of an AssetScriptBinary object - - + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data - - + + Override the base classes AssetType - + - A dictionary containing all pre-defined sounds + TODO: Encodes a scripts contents into a LSO Bytecode file - A dictionary containing the pre-defined sounds, - where the key is the sounds ID, and the value is a string - containing a name to identify the purpose of the sound - + - + TODO: Decode LSO Bytecode into a string + true - - The avatar has no rights - - - The avatar can see the online status of the target avatar - - - The avatar can see the location of the target avatar on the map + + + Represents an LSL Text object containing a string of UTF encoded characters + - - The avatar can modify the ojects of the target avatar + + Initializes a new AssetScriptText object - + - This class holds information about an avatar in the friends list. There are two ways - to interface to this class. The first is through the set of boolean properties. This is the typical - way clients of this class will use it. The second interface is through two bitflag properties, - TheirFriendsRights and MyFriendsRights + Initializes a new AssetScriptText object with parameters + A unique specific to this asset + A byte array containing the raw asset data - + + A string of characters represting the script contents + + + Override the base classes AssetType + + - Used internally when building the initial list of friends at login time + Encode a string containing the scripts contents into byte encoded AssetData - System ID of the avatar being prepesented - Rights the friend has to see you online and to modify your objects - Rights you have to see your friend online and to modify their objects - + - FriendInfo represented as a string + Decode a byte array containing the scripts contents into a string - A string reprentation of both my rights and my friends rights + true if decoding is successful - + - System ID of the avatar + Represents a Sound Asset - + + Initializes a new instance of an AssetSound object + + + Initializes a new instance of an AssetSound object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + - full name of the avatar + TODO: Encodes a sound file - + - True if the avatar is online + TODO: Decode a sound file + true - + - True if the friend can see if I am online + Represents a texture - + + Initializes a new instance of an AssetTexture object + + - True if the friend can see me on the map + Initializes a new instance of an AssetTexture object + A unique specific to this asset + A byte array containing the raw asset data - + - True if the freind can modify my objects + Initializes a new instance of an AssetTexture object + A object containing texture data - + + A object containing image data + + - True if I can see if my friend is online - + - True if I can see if my friend is on the map - + + Override the base classes AssetType + + - True if I can modify my friend's objects - + Populates the byte array with a JPEG2000 + encoded image created from the data in - + - My friend's rights represented as bitmapped flags - + Decodes the JPEG2000 data in AssetData to the + object + True if the decoding was successful, otherwise false - + - My rights represented as bitmapped flags + Decodes the begin and end byte positions for each quality layer in + the image + + - + - This class is used to add and remove avatars from your friends list and to manage their permission. + Represents a Wearable Asset, Clothing, Hair, Skin, Etc - - The event subscribers. null if no subcribers + + Initializes a new instance of an AssetWearable object - - Raises the FriendOnline event - A FriendInfoEventArgs object containing the - data returned from the data server + + Initializes a new instance of an AssetWearable object with parameters + A unique specific to this asset + A byte array containing the raw asset data - - Thread sync lock object + + A string containing the name of the asset - - The event subscribers. null if no subcribers + + A string containing a short description of the asset - - Raises the FriendOffline event - A FriendInfoEventArgs object containing the - data returned from the data server + + The Assets WearableType - - Thread sync lock object + + The For-Sale status of the object - - The event subscribers. null if no subcribers + + An Integer representing the purchase price of the asset - - Raises the FriendRightsUpdate event - A FriendInfoEventArgs object containing the - data returned from the data server + + The of the assets creator - - Thread sync lock object + + The of the assets current owner - - The event subscribers. null if no subcribers + + The of the assets prior owner - - Raises the FriendNames event - A FriendNamesEventArgs object containing the - data returned from the data server + + The of the Group this asset is set to - - Thread sync lock object + + True if the asset is owned by a - - The event subscribers. null if no subcribers + + The Permissions mask of the asset - - Raises the FriendshipOffered event - A FriendshipOfferedEventArgs object containing the - data returned from the data server + + A Dictionary containing Key/Value pairs of the objects parameters - - Thread sync lock object + + A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures - - The event subscribers. null if no subcribers + + + Decode an assets byte encoded data to a string + + true if the asset data was decoded successfully - - Raises the FriendshipResponse event - A FriendshipResponseEventArgs object containing the - data returned from the data server + + + Encode the assets string represantion into a format consumable by the asset server + - - Thread sync lock object + + = - - The event subscribers. null if no subcribers + + Number of times we've received an unknown CAPS exception in series. - - Raises the FriendshipTerminated event - A FriendshipTerminatedEventArgs object containing the - data returned from the data server + + For exponential backoff on error. - - Thread sync lock object + + + A set of textures that are layered on texture of each other and "baked" + in to a single texture, for avatar appearances + - - The event subscribers. null if no subcribers + + + Default constructor + + Bake type - - Raises the FriendFoundReply event - A FriendFoundReplyEventArgs object containing the - data returned from the data server + + Final baked texture - - Thread sync lock object + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Is this one of the 3 skin bakes + + + + Adds layer for baking + + TexturaData struct that contains texture and its params + + + + Converts avatar texture index (face) to Bake type + + Face number (AvatarTextureIndex) + BakeType, layer to which this texture belongs to + + + + Make sure images exist, resize source if needed to match the destination + + Destination image + Source image + Sanitization was succefull - + - A dictionary of key/value pairs containing known friends of this avatar. - - The Key is the of the friend, the value is a - object that contains detailed information including permissions you have and have given to the friend + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + Color of the base of this layer - + - A Dictionary of key/value pairs containing current pending frienship offers. - - The key is the of the avatar making the request, - the value is the of the request which is used to accept - or decline the friendship offer + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + Red value + Green value + Blue value - + - Internal constructor + Create a new blank image - A reference to the GridClient Object + width + height + channel flags - + - Accept a friendship request - agentID of avatatar to form friendship with - imSessionID of the friendship request message + + - + - Decline a friendship request + Image width - of friend - imSessionID of the friendship request message - + - Overload: Offer friendship to an avatar. + Image height - System ID of the avatar you are offering friendship to - + - Offer friendship to an avatar. + Image channel flags - System ID of the avatar you are offering friendship to - A message to send with the request - + - Terminate a friendship with an avatar + Red channel data - System ID of the avatar you are terminating the friendship with - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Green channel data + - + - Change the rights of a friend avatar. + Blue channel data - the of the friend - the new rights to give the friend - This method will implicitly set the rights to those passed in the rights parameter. - + - Use to map a friends location on the grid. + Alpha channel data - Friends UUID to find - - + - Use to track a friends movement on the grid + Bump channel data - Friends Key - + - Ask for a notification of friend's online status + Convert the channels in the image. Channels are created or destroyed as required. - Friend's UUID + new channel flags - + - This handles the asynchronous response of a RequestAvatarNames call. + Resize or stretch the image using nearest neighbor (ugly) resampling - - names cooresponding to the the list of IDs sent the the RequestAvatarNames call. + new width + new height - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + A Wrapper around openjpeg to encode and decode images to and from byte arrays + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Defines the beginning and ending file positions of a layer in an + LRCP-progression JPEG2000 file + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + This structure is used to marshal both encoded and decoded images. + MUST MATCH THE STRUCT IN dotnet.h! + - + - Populate FriendList with data from the login reply + Information about a single packet in a JPEG2000 stream - true if login was successful - true if login request is requiring a redirect - A string containing the response to the login request - A string containing the reason for the request - A object containing the decoded - reply from the login server - - Raised when the simulator sends notification one of the members in our friends list comes online + + Packet start position - - Raised when the simulator sends notification one of the members in our friends list goes offline + + Packet header end position - - Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions + + Packet end position - - Raised when the simulator sends us the names on our friends list + + TGA Header size - - Raised when the simulator sends notification another agent is offering us friendship + + OpenJPEG is not threadsafe, so this object is used to lock + during calls into unmanaged code - - Raised when a request we sent to friend another agent is accepted or declined + + + Encode a object into a byte array + + The object to encode + true to enable lossless conversion, only useful for small images ie: sculptmaps + A byte array containing the encoded Image object - - Raised when the simulator sends notification one of the members in our friends list has terminated - our friendship + + + Encode a object into a byte array + + The object to encode + a byte array of the encoded image - - Raised when the simulator sends the location of a friend we have - requested map location info for + + + Decode JPEG2000 data to an and + + JPEG2000 encoded data + ManagedImage object to decode to + Image object to decode to + True if the decode succeeds, otherwise false - - Contains information on a member of our friends list + + + + + + + + + - + - Construct a new instance of the FriendInfoEventArgs class - The FriendInfo + + + + + + + + - - Get the FriendInfo + + + Encode a object into a byte array + + The source object to encode + true to enable lossless decoding + A byte array containing the source Bitmap object - - Contains Friend Names + + + Capability to load TGAs to Bitmap + - + - Construct a new instance of the FriendNamesEventArgs class + Interface requirements for Messaging system - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name + + + Abstract base for rendering plugins + - - Sent when another agent requests a friendship with our agent + + + Generates a basic mesh structure from a primitive + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh - + - Construct a new instance of the FriendshipOfferedEventArgs class + Generates a basic mesh structure from a sculpted primitive and + texture - The ID of the agent requesting friendship - The name of the agent requesting friendship - The ID of the session, used in accepting or declining the - friendship offer + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh - - Get the ID of the agent requesting friendship + + + Generates a series of faces, each face containing a mesh and + metadata + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh - - Get the name of the agent requesting friendship + + + Generates a series of faces for a sculpted prim, each face + containing a mesh and metadata + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Apply texture coordinate modifications from a + to a list of vertices + + Vertex list to modify texture coordinates for + Center-point of the face + Face texture parameters - - Get the ID of the session, used in accepting or declining the - friendship offer + + + Sent to the client to indicate a teleport request has completed + - - A response containing the results of our request to form a friendship with another agent + + The of the agent - + - Construct a new instance of the FriendShipResponseEventArgs class - The ID of the agent we requested a friendship with - The name of the agent we requested a friendship with - true if the agent accepted our friendship offer - - Get the ID of the agent we requested a friendship with + + The simulators handle the agent teleported to - - Get the name of the agent we requested a friendship with + + A Uri which contains a list of Capabilities the simulator supports - - true if the agent accepted our friendship offer + + Indicates the level of access required + to access the simulator, or the content rating, or the simulators + map status - - Contains data sent when a friend terminates a friendship with us + + The IP Address of the simulator - + + The UDP Port the simulator will listen for UDP traffic on + + + Status flags indicating the state of the Agent upon arrival, Flying, etc. + + - Construct a new instance of the FrindshipTerminatedEventArgs class + Serialize the object - The ID of the friend who terminated the friendship with us - The name of the friend who terminated the friendship with us + An containing the objects data - - Get the ID of the agent that terminated the friendship with us + + + Deserialize the message + + An containing the data - - Get the name of the agent that terminated the friendship with us + + + Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. + - + - Data sent in response to a request which contains the information to allow us to map the friends location + Serialize the object + An containing the objects data - + - Construct a new instance of the FriendFoundReplyEventArgs class + Deserialize the message - The ID of the agent we have requested location information for - The region handle where our friend is located - The simulator local position our friend is located + An containing the data - - Get the ID of the agent we have received location information for + + + Serialize the object + + An containing the objects data - - Get the region handle where our mapped friend is located + + + Deserialize the message + + An containing the data - - Get the simulator local position where our friend is located + + + Serialize the object + + An containing the objects data - + - Return a decoded capabilities message as a strongly typed object + Deserialize the message - A string containing the name of the capabilities message key - An to decode - A strongly typed object containing the decoded information from the capabilities message, or null - if no existing Message object exists for the specified event + An containing the data - + - Represents an that represents an avatars body ie: Hair, Etc. + A message sent to the client which indicates a teleport request has failed + and contains some information on why it failed - - Initializes a new instance of an AssetBodyPart object + + + - - Initializes a new instance of an AssetBodyPart object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + A string key of the reason the teleport failed e.g. CouldntTPCloser + Which could be used to look up a value in a dictionary or enum - - Override the base classes AssetType + + The of the Agent - - - Archives assets - + + A string human readable message containing the reason + An example: Could not teleport closer to destination - + - Archive assets + Serialize the object + An containing the objects data - + - Archive the assets given to this archiver to the given archive. + Deserialize the message - + An containing the data - + - Write an assets metadata file to the given archive + Serialize the object - + An containing the objects data - + - Write asset data files to the given archive + Deserialize the message - + An containing the data - + - + Contains a list of prim owner information for a specific parcel in a simulator + + A Simulator will always return at least 1 entry + If agent does not have proper permission the OwnerID will be UUID.Zero + If agent does not have proper permission OR there are no primitives on parcel + the DataBlocksExtended map will not be sent from the simulator + - + - An instance of DelegateWrapper which calls InvokeWrappedDelegate, - which in turn calls the DynamicInvoke method of the wrapped - delegate + Prim ownership information for a specified owner on a single parcel - + + The of the prim owner, + UUID.Zero if agent has no permission to view prim owner information + + + The total number of prims + + + True if the OwnerID is a + + + True if the owner is online + This is no longer used by the LL Simulators + + + The date the most recent prim was rezzed + + + An Array of objects + + - Callback used to call EndInvoke on the asynchronously - invoked DelegateWrapper + Serialize the object + An containing the objects data - + - Executes the specified delegate with the specified arguments - asynchronously on a thread pool thread + Deserialize the message - - + An containing the data - + - Invokes the wrapped delegate synchronously + The details of a single parcel in a region, also contains some regionwide globals - - - + + Simulator-local ID of this parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Total parcel land area + + - Calls EndInvoke on the wrapper and Close on the resulting WaitHandle - to prevent resource leaks - - + + Key of authorized buyer + + + Bitmap describing land layout in 4x4m squares across the + entire region + + - Delegate to wrap another delegate and its arguments - - - - The event subscribers. null if no subcribers + + Date land was claimed - - Raises the LandPatchReceived event - A LandPatchReceivedEventArgs object containing the - data returned from the simulator + + Appears to always be zero - - Thread sync lock object + + Parcel Description - + - Default constructor - - - Raised when the simulator responds sends + + + - - Simulator from that sent tha data + + Total number of primitives owned by the parcel group on + this parcel - - Sim coordinate of the patch + + Whether the land is deeded to a group or not - - Sim coordinate of the patch + + + - - Size of tha patch + + Maximum number of primitives this parcel supports - - Heightmap for the patch + + The Asset UUID of the Texture which when applied to a + primitive will display the media - - Size of the byte array used to store raw packet data + + A URL which points to any Quicktime supported media type + + + A byte, if 0x1 viewer should auto scale media to fit object - - Raw packet data buffer + + URL For Music Stream - - Length of the data to transmit + + Parcel Name - - EndPoint of the remote host + + Autoreturn value in minutes for others' objects - + - Create an allocated UDP packet buffer for receiving a packet - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host + + Total number of other primitives on this parcel - + + UUID of the owner of this parcel + + + Total number of primitives owned by the parcel owner on + this parcel + + - Create an allocated UDP packet buffer for sending a packet - EndPoint of the remote host - Size of the buffer to allocate for packet data - + + How long is pass valid for + + + Price for a temporary pass + + - Object pool for packet buffers. This is used to allocate memory for all - incoming and outgoing packets, and zerocoding buffers for those packets - + - Initialize the object pool in client mode - Server to connect to - - - + - Initialize the object pool in server mode - - - + - Returns a packet buffer with EndPoint set if the buffer is in - client mode, or with EndPoint set to null in server mode - Initialized UDPPacketBuffer object - + + True if the region denies access to age unverified users + + - Default constructor - + + This field is no longer used + + + The result of a request for parcel properties + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + - Check a packet buffer out of the pool + Number of primitives your avatar is currently + selecting and sitting on in this parcel - A packet buffer object - + - - Looking direction, must be a normalized vector - Up direction, must be a normalized vector - + - Align the coordinate frame X and Y axis with a given rotation - around the Z axis in radians + A number which increments by 1, starting at 0 for each ParcelProperties request. + Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. + a Negative number indicates the action in has occurred. - Absolute rotation around the Z axis in - radians - - - Origin position of this coordinate frame - - - X axis of this coordinate frame, or Forward/At in grid terms - - Y axis of this coordinate frame, or Left in grid terms + + Maximum primitives across the entire simulator - - Z axis of this coordinate frame, or Up in grid terms + + Total primitives across the entire simulator - + - Static pre-defined animations available to all agents - - Agent with afraid expression on face - - - Agent aiming a bazooka (right handed) - - - Agent aiming a bow (left handed) - - - Agent aiming a hand gun (right handed) - - - Agent aiming a rifle (right handed) - - - Agent with angry expression on face - - - Agent hunched over (away) - - - Agent doing a backflip - - - Agent laughing while holding belly - - - Agent blowing a kiss - - - Agent with bored expression on face - - - Agent bowing to audience - - - Agent brushing himself/herself off - - - Agent in busy mode - - - Agent clapping hands - - - Agent doing a curtsey bow - - - Agent crouching + + Key of parcel snapshot - - Agent crouching while walking + + Parcel ownership status - - Agent crying + + Total number of primitives on this parcel - - Agent unanimated with arms out (e.g. setting appearance) + + + - - Agent re-animated after set appearance finished + + + - - Agent dancing + + A description of the media - - Agent dancing + + An Integer which represents the height of the media - - Agent dancing + + An integer which represents the width of the media - - Agent dancing + + A boolean, if true the viewer should loop the media - - Agent dancing + + A string which contains the mime type of the media - - Agent dancing + + true to obscure (hide) media url - - Agent dancing + + true to obscure (hide) music url - - Agent dancing + + + Serialize the object + + An containing the objects data - - Agent on ground unanimated + + + Deserialize the message + + An containing the data - - Agent boozing it up + + A message sent from the viewer to the simulator to updated a specific parcels settings - - Agent with embarassed expression on face + + The of the agent authorized to purchase this + parcel of land or a NULL if the sale is authorized to anyone - - Agent with afraid expression on face + + true to enable auto scaling of the parcel media - - Agent with angry expression on face + + The category of this parcel used when search is enabled to restrict + search results - - Agent with bored expression on face + + A string containing the description to set - - Agent crying + + The of the which allows for additional + powers and restrictions. - - Agent showing disdain (dislike) for something + + The which specifies how avatars which teleport + to this parcel are handled - - Agent with embarassed expression on face + + The LocalID of the parcel to update settings on - - Agent with frowning expression on face + + A string containing the description of the media which can be played + to visitors - - Agent with kissy face + + + - - Agent expressing laughgter + + + - - Agent with open mouth + + + - - Agent with repulsed expression on face + + + - - Agent expressing sadness + + + - - Agent shrugging shoulders + + + - - Agent with a smile + + + - - Agent expressing surprise + + + - - Agent sticking tongue out + + + - - Agent with big toothy smile + + + - - Agent winking + + + - - Agent expressing worry + + + - - Agent falling down + + + - - Agent walking (feminine version) + + + - - Agent wagging finger (disapproval) + + + - - I'm not sure I want to know + + + - - Agent in superman position + + + - - Agent in superman position + + + Deserialize the message + + An containing the data - - Agent greeting another + + + Serialize the object + + An containing the objects data - - Agent holding bazooka (right handed) + + Base class used for the RemoteParcelRequest message - - Agent holding a bow (left handed) + + + A message sent from the viewer to the simulator to request information + on a remote parcel + - - Agent holding a handgun (right handed) + + Local sim position of the parcel we are looking up - - Agent holding a rifle (right handed) + + Region handle of the parcel we are looking up - - Agent throwing an object (right handed) + + Region of the parcel we are looking up - - Agent in static hover + + + Serialize the object + + An containing the objects data - - Agent hovering downward + + + Deserialize the message + + An containing the data - - Agent hovering upward + + + A message sent from the simulator to the viewer in response to a + which will contain parcel information + - - Agent being impatient + + The grid-wide unique parcel ID - - Agent jumping + + + Serialize the object + + An containing the objects data - - Agent jumping with fervor + + + Deserialize the message + + An containing the data - - Agent point to lips then rear end + + + A message containing a request for a remote parcel from a viewer, or a response + from the simulator to that request + - - Agent landing from jump, finished flight, etc + + The request or response details block - - Agent laughing + + + Serialize the object + + An containing the objects data - - Agent landing from jump, finished flight, etc + + + Deserialize the message + + An containing the data - - Agent sitting on a motorcycle + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - Agent moving head side to side + + + Serialize the object + + An containing the objects data - - Agent moving head side to side with unhappy expression + + + Deserialize the message + + An containing the data - - Agent taunting another + + + A message sent from the simulator to an agent which contains + the groups the agent is in + - - + + Group Details specific to the agent - - Agent giving peace sign + + true of the agent accepts group notices - - Agent pointing at self + + The agents tier contribution to the group - - Agent pointing at another + + The Groups - - Agent preparing for jump (bending knees) + + The of the groups insignia - - Agent punching with left hand + + The name of the group - - Agent punching with right hand + + The aggregate permissions the agent has in the group for all roles the agent + is assigned - - Agent acting repulsed + + An optional block containing additional agent specific information - - Agent trying to be Chuck Norris + + true of the agent allows this group to be + listed in their profile - - Rocks, Paper, Scissors 1, 2, 3 + + The Agent receiving the message - - Agent with hand flat over other hand + + An array containing information + for each the agent is a member of - - Agent with fist over other hand + + An array containing information + for each the agent is a member of - - Agent with two fingers spread over other hand + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data - - Agent running + + + A message sent from the viewer to the simulator which + specifies the language and permissions for others to detect + the language specified + - - Agent appearing sad + + A string containng the default language + to use for the agent - - Agent saluting + + true of others are allowed to + know the language setting - - Agent shooting bow (left handed) + + + Serialize the object + + An containing the objects data - - Agent cupping mouth as if shouting + + + Deserialize the message + + An containing the data - - Agent shrugging shoulders + + + An EventQueue message sent from the simulator to an agent when the agent + leaves a group + - - Agent in sit position + + An object containing the Agents UUID, and the Groups UUID - - Agent in sit position (feminine) + + The ID of the Agent leaving the group - - Agent in sit position (generic) + + The GroupID the Agent is leaving - - Agent sitting on ground + + + An Array containing the AgentID and GroupID + - - Agent sitting on ground + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - Agent sleeping on side + + Base class for Asset uploads/results via Capabilities - - Agent smoking + + + The request state + - - Agent inhaling smoke + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - Agent taking a picture + + + A message sent from the viewer to the simulator to request a temporary upload capability + which allows an asset to be uploaded + - - Agent standing + + The Capability URL sent by the simulator to upload the baked texture to - - Agent standing up + + + A message sent from the simulator that will inform the agent the upload is complete, + and the UUID of the uploaded asset + - - Agent standing + + The uploaded texture asset ID - - Agent standing + + + A message sent from the viewer to the simulator to request a temporary + capability URI which is used to upload an agents baked appearance textures + - - Agent standing + + Object containing request or response - - Agent standing + + + Serialize the object + + An containing the objects data - - Agent stretching + + + Deserialize the message + + An containing the data - - Agent in stride (fast walk) + + + A message sent from the simulator which indicates the minimum version required for + using voice chat + - - Agent surfing + + Major Version Required - - Agent acting surprised + + Minor version required - - Agent striking with a sword + + The name of the region sending the version requrements - - Agent talking (lips moving) + + + Serialize the object + + An containing the objects data - - Agent throwing a tantrum + + + Deserialize the message + + An containing the data - - Agent throwing an object (right handed) + + + A message sent from the simulator to the viewer containing the + voice server URI + - - Agent trying on a shirt + + The Parcel ID which the voice server URI applies - - Agent turning to the left + + The name of the region - - Agent turning to the right + + A uri containing the server/channel information + which the viewer can utilize to participate in voice conversations - - Agent typing + + + Serialize the object + + An containing the objects data - - Agent walking + + + Deserialize the message + + An containing the data - - Agent whispering + + + - - Agent whispering with fingers in mouth + + + - - Agent winking + + + - - Agent winking + + + Serialize the object + + An containing the objects data - - Agent worried + + + Deserialize the message + + An containing the data - - Agent nodding yes + + + A message sent by the viewer to the simulator to request a temporary + capability for a script contained with in a Tasks inventory to be updated + - - Agent nodding yes with happy face + + Object containing request or response - - Agent floating with legs and arms crossed + + + Serialize the object + + An containing the objects data - + - A dictionary containing all pre-defined animations + Deserialize the message - A dictionary containing the pre-defined animations, - where the key is the animations ID, and the value is a string - containing a name to identify the purpose of the animation + An containing the data - + - Type of gesture step + A message sent from the simulator to the viewer to indicate + a Tasks scripts status. - + + The Asset ID of the script + + + True of the script is compiled/ran using the mono interpreter, false indicates it + uses the older less efficient lsl2 interprter + + + The Task containing the scripts + + + true of the script is in a running state + + - Base class for gesture steps + Serialize the object + An containing the objects data - + - Retururns what kind of gesture step this is + Deserialize the message + An containing the data - + - Describes animation step of a gesture + A message containing the request/response used for updating a gesture + contained with an agents inventory - + + Object containing request or response + + - If true, this step represents start of animation, otherwise animation stop + Serialize the object + An containing the objects data - + - Animation asset + Deserialize the message + An containing the data - + - Animation inventory name + A message request/response which is used to update a notecard contained within + a tasks inventory - + + The of the Task containing the notecard asset to update + + + The notecard assets contained in the tasks inventory + + - Returns what kind of gesture step this is + Serialize the object + An containing the objects data - + - Describes sound step of a gesture + Deserialize the message + An containing the data - + - Sound asset + A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability + which is used to update an asset in an agents inventory - + - Sound inventory name + The Notecard AssetID to replace - + - Returns what kind of gesture step this is + Serialize the object + An containing the objects data - + - Describes sound step of a gesture + Deserialize the message + An containing the data - + - Text to output in chat + A message containing the request/response used for updating a notecard + contained with an agents inventory - + + Object containing request or response + + - Returns what kind of gesture step this is + Serialize the object + An containing the objects data - + - Describes sound step of a gesture + Deserialize the message + An containing the data - + - If true in this step we wait for all animations to finish + Serialize the object + An containing the objects data - + - If true gesture player should wait for the specified amount of time + Deserialize the message + An containing the data - + - Time in seconds to wait if WaitForAnimation is false + A message sent from the simulator to the viewer which indicates + an error occurred while attempting to update a script in an agents or tasks + inventory - + + true of the script was successfully compiled by the simulator + + + A string containing the error which occured while trying + to update the script + + + A new AssetID assigned to the script + + - Returns what kind of gesture step this is + A message sent from the viewer to the simulator + requesting the update of an existing script contained + within a tasks inventory - + + if true, set the script mode to running + + + The scripts InventoryItem ItemID to update + + + A lowercase string containing either "mono" or "lsl2" which + specifies the script is compiled and ran on the mono runtime, or the older + lsl runtime + + + The tasks which contains the script to update + + - Describes the final step of a gesture + Serialize the object + An containing the objects data - + - Returns what kind of gesture step this is + Deserialize the message + An containing the data - + - Represents a sequence of animations, sounds, and chat actions + A message containing either the request or response used in updating a script inside + a tasks inventory - + + Object containing request or response + + - Keyboard key that triggers the gestyre + Serialize the object + An containing the objects data - + - Modifier to the trigger key + Deserialize the message + An containing the data - + - String that triggers playing of the gesture sequence + Response from the simulator to notify the viewer the upload is completed, and + the UUID of the script asset and its compiled status - + + The uploaded texture asset ID + + + true of the script was compiled successfully + + - Text that replaces trigger in chat once gesture is triggered + A message sent from a viewer to the simulator requesting a temporary uploader capability + used to update a script contained in an agents inventory - + + The existing asset if of the script in the agents inventory to replace + + + The language of the script + Defaults to lsl version 2, "mono" might be another possible option + + - Sequence of gesture steps + Serialize the object + An containing the objects data - + - Constructs guesture asset + Deserialize the message + An containing the data - + - Constructs guesture asset + A message containing either the request or response used in updating a script inside + an agents inventory - A unique specific to this asset - A byte array containing the raw asset data - + + Object containing request or response + + - Encodes gesture asset suitable for uplaod + Serialize the object + An containing the objects data - + - Decodes gesture assset into play sequence + Deserialize the message - true if the asset data was decoded successfully + An containing the data - + - Returns asset type + Serialize the object + An containing the objects data - + - Simulator (region) properties + Deserialize the message + An containing the data - - No flags set - - - Agents can take damage and be killed - - - Landmarks can be created here - - - Home position can be set in this sim - - - Home position is reset when an agent teleports away - - - Sun does not move - - - No object, land, etc. taxes - - - Disable heightmap alterations (agents can still plant - foliage) - - - Land cannot be released, sold, or purchased - - - All content is wiped nightly - - - Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) - - - Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. - - - Region does not update agent prim interest lists. Internal debugging option. - - - No collision detection for non-agent objects - - - No scripts are ran - - - All physics processing is turned off - - - Region can be seen from other regions on world map. (Legacy world map option?) - - - Region can be seen from mainland on world map. (Legacy world map option?) - - - Agents not explicitly on the access list can visit the region. + + Base class for Map Layers via Capabilities - - Traffic calculations are not run across entire region, overrides parcel settings. + + + - - Flight is disabled (not currently enforced by the sim) + + + Serialize the object + + An containing the objects data - - Allow direct (p2p) teleporting + + + Deserialize the message + + An containing the data - - Estate owner has temporarily disabled scripting + + + Sent by an agent to the capabilities server to request map layers + - - Restricts the usage of the LSL llPushObject function, applies to whole region. + + + A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates + - - Deny agents with no payment info on file + + + An object containing map location details + - - Deny agents with payment info on file + + The Asset ID of the regions tile overlay - - Deny agents who have made a monetary transaction + + The grid location of the southern border of the map tile - - Parcels within the region may be joined or divided by anyone, not just estate owners/managers. + + The grid location of the western border of the map tile - - Abuse reports sent from within this region are sent to the estate owner defined email. + + The grid location of the eastern border of the map tile - - Region is Voice Enabled + + The grid location of the northern border of the map tile - - Removes the ability from parcel owners to set their parcels to show in search. + + An array containing LayerData items - - Deny agents who have not been age verified from entering the region. + + + Serialize the object + + An containing the objects data - + - Access level for a simulator + Deserialize the message + An containing the data - - Unknown or invalid access level + + Object containing request or response - - Trial accounts allowed + + + Serialize the object + + An containing the objects data - - PG rating + + + Deserialize the message + + An containing the data - - Mature rating + + + New as of 1.23 RC1, no details yet. + - - Adult rating + + + Serialize the object + + An containing the objects data - - Simulator is offline + + + Deserialize the message + + An containing the data - - Simulator does not exist + + + Serialize the object + + An containing the objects data - + - + Deserialize the message + An containing the data - - A public reference to the client that this Simulator object - is attached to + + A string containing the method used - - A Unique Cache identifier for this simulator + + + A request sent from an agent to the Simulator to begin a new conference. + Contains a list of Agents which will be included in the conference + - - The capabilities for this simulator + + An array containing the of the agents invited to this conference - - + + The conferences Session ID - - The current version of software this simulator is running + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - A 64x64 grid of parcel coloring values. The values stored - in this array are of the type + + + A moderation request sent from a conference moderator + Contains an agent and an optional action to take + - - + + The Session ID - - + + + - - + + A list containing Key/Value pairs, known valid values: + key: text value: true/false - allow/disallow specified agents ability to use text in session + key: voice value: true/false - allow/disallow specified agents ability to use voice in session + + "text" or "voice" - - + + + - - + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - + + + A message sent from the agent to the simulator which tells the + simulator we've accepted a conference invitation + - - + + The conference SessionID - - + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - + + Key of sender - - + + Name of sender - - + + Key of destination avatar - - true if your agent has Estate Manager rights on this region + + ID of originating estate - - + + Key of originating region - - + + Coordinates in originating region - - + + Instant message type - - Statistics information for this simulator and the - connection to the simulator, calculated by the simulator itself - and the library + + Group IM session toggle - - The regions Unique ID + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message - - The physical data center the simulator is located - Known values are: - - Dallas - Chandler - SF - - + + Instant message text - - The CPU Class of the simulator - Most full mainland/estate sims appear to be 5, - Homesteads and Openspace appear to be 501 + + Whether this message is held for offline avatars - - The number of regions sharing the same CPU as this one - "Full Sims" appear to be 1, Homesteads appear to be 4 + + Context specific packed data - - The billing product name - Known values are: - - Mainland / Full Region (Sku: 023) - Estate / Full Region (Sku: 024) - Estate / Openspace (Sku: 027) - Estate / Homestead (Sku: 029) - Mainland / Homestead (Sku: 129) (Linden Owned) - Mainland / Linden Homes (Sku: 131) - - + + Is this invitation for voice group/conference chat - - The billing product SKU - Known values are: - - 023 Mainland / Full Region - 024 Estate / Full Region - 027 Estate / Openspace - 029 Estate / Homestead - 129 Mainland / Homestead (Linden Owned) - 131 Linden Homes / Full Region - - + + + Serialize the object + + An containing the objects data - - The current sequence number for packets sent to this - simulator. Must be Interlocked before modifying. Only - useful for applications manipulating sequence numbers + + + Deserialize the message + + An containing the data - + - A thread-safe dictionary containing avatars in a simulator + Sent from the simulator to the viewer. + When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including + a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate + this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" + During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are + excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with + the string "ENTER" or "LEAVE" respectively. - + - A thread-safe dictionary containing primitives in a simulator + Serialize the object + An containing the objects data - + - Provides access to an internal thread-safe dictionary containing parcel - information found in this simulator + Deserialize the message + An containing the data - + - Checks simulator parcel map to make sure it has downloaded all data successfully + An EventQueue message sent when the agent is forcibly removed from a chatterbox session - true if map is full (contains no 0's) - - Used internally to track sim disconnections + + + A string containing the reason the agent was removed + - - Event that is triggered when the simulator successfully - establishes a connection + + + The ChatterBoxSession's SessionID + - - Whether this sim is currently connected or not. Hooked up - to the property Connected + + + Serialize the object + + An containing the objects data - - Coarse locations of avatars in this simulator + + + Deserialize the message + + An containing the data - - AvatarPositions key representing TrackAgent target + + + Serialize the object + + An containing the objects data - - Sequence numbers of packets we've received - (for duplicate checking) + + + Deserialize the message + + An containing the data - - Packets we sent out that need ACKs from the simulator + + + Serialize the object + + An containing the objects data - - Sequence number for pause/resume + + + Deserialize the message + + An containing the data - - Indicates if UDP connection to the sim is fully established + + + Serialize the object + + An containing the objects data - + - + Deserialize the message - Reference to the GridClient object - IPEndPoint of the simulator - handle of the simulator + An containing the data - + - Called when this Simulator object is being destroyed + Serialize the object + An containing the objects data - + - Attempt to connect to this simulator + Deserialize the message - Whether to move our agent in to this sim or not - True if the connection succeeded or connection status is - unknown, false if there was a failure + An containing the data - + - Initiates connection to the simulator - + - Disconnect from this simulator + Serialize the object + An containing the objects data - + - Instructs the simulator to stop sending update (and possibly other) packets + Deserialize the message + An containing the data - + - Instructs the simulator to resume sending update packets (unpause) + Serialize the object + An containing the objects data - + - Retrieve the terrain height at a given coordinate + Deserialize the message - Sim X coordinate, valid range is from 0 to 255 - Sim Y coordinate, valid range is from 0 to 255 - The terrain height at the given point if the - lookup was successful, otherwise 0.0f - True if the lookup was successful, otherwise false + An containing the data - + - Sends a packet + Serialize the object - Packet to be sent + An containing the objects data - + - + Deserialize the message + An containing the data - + - Returns Simulator Name as a String + A message sent from the viewer to the simulator which + specifies that the user has changed current URL + of the specific media on a prim face - - + - + New URL - - + - + Prim UUID where navigation occured - - - + - Sends out pending acknowledgements + Face index - Number of ACKs sent - + - Resend unacknowledged packets + Serialize the object + An containing the objects data - + - Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. + Deserialize the message + An containing the data - - The IP address and port of the server + + Base class used for the ObjectMedia message - - Whether there is a working connection to the simulator or - not + + + Message used to retrive prim media data + - - Coarse locations of avatars in this simulator + + + Prim UUID + - - AvatarPositions key representing TrackAgent target + + + Requested operation, either GET or UPDATE + - - Indicates if UDP connection to the sim is fully established + + + Serialize object + + Serialized object as OSDMap - + - Simulator Statistics + Deserialize the message + An containing the data - - Total number of packets sent by this simulator to this agent + + + Message used to update prim media data + - - Total number of packets received by this simulator to this agent + + + Prim UUID + - - Total number of bytes sent by this simulator to this agent + + + Array of media entries indexed by face number + - - Total number of bytes received by this simulator to this agent + + + Media version string + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data - - Time in seconds agent has been connected to simulator + + + Message used to update prim media data + - - Total number of packets that have been resent + + + Prim UUID + - - Total number of resent packets recieved + + + Array of media entries indexed by face number + - - Total number of pings sent to this simulator by this agent + + + Requested operation, either GET or UPDATE + - - Total number of ping replies sent to this agent by this simulator + + + Serialize object + + Serialized object as OSDMap - + - Incoming bytes per second + Deserialize the message - It would be nice to have this claculated on the fly, but - this is far, far easier + An containing the data - + - Outgoing bytes per second + Message for setting or getting per face MediaEntry - It would be nice to have this claculated on the fly, but - this is far, far easier - - Time last ping was sent + + The request or response details block - - ID of last Ping sent + + + Serialize the object + + An containing the objects data - - + + + Deserialize the message + + An containing the data - - + + Details about object resource usage - - Current time dilation of this simulator + + Object UUID - - Current Frames per second of simulator + + Object name - - Current Physics frames per second of simulator + + Indicates if object is group owned - - + + Locatio of the object - - + + Object owner - - + + Resource usage, keys are resource names, values are resource usage for that specific resource - - + + + Deserializes object from OSD + + An containing the data - - + + + Makes an instance based on deserialized data + + + serialized data + Instance containg deserialized data - - + + Details about parcel resource usage - - + + Parcel UUID - - + + Parcel local ID - - Total number of objects Simulator is simulating + + Parcel name - - Total number of Active (Scripted) objects running + + Indicates if parcel is group owned - - Number of agents currently in this simulator + + Parcel owner - - Number of agents in neighbor simulators + + Array of containing per object resource usage - - Number of Active scripts running in this simulator + + + Deserializes object from OSD + + An containing the data - - + + + Makes an instance based on deserialized data + + + serialized data + Instance containg deserialized data - - + + Resource usage base class, both agent and parcel resource + usage contains summary information - - + + Summary of available resources, keys are resource names, + values are resource usage for that specific resource - - Number of downloads pending + + Summary resource usage, keys are resource names, + values are resource usage for that specific resource - - Number of uploads pending + + + Serializes object + + + serialized data - - + + + Deserializes object from OSD + + An containing the data - - + + Agent resource usage - - Number of local uploads pending + + Per attachment point object resource usage - - Unacknowledged bytes in queue + + + Deserializes object from OSD + + An containing the data - + - Exception class to identify inventory exceptions + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data - + - Responsible for maintaining inventory structure. Inventory constructs nodes - and manages node children as is necessary to maintain a coherant hirarchy. - Other classes should not manipulate or create InventoryNodes explicitly. When - A node's parent changes (when a folder is moved, for example) simply pass - Inventory the updated InventoryFolder and it will make the appropriate changes - to its internal representation. + Detects which class handles deserialization of this message + An containing the data + Object capable of decoding this message - - The event subscribers, null of no subscribers + + Request message for parcel resource usage - - Raises the InventoryObjectUpdated Event - A InventoryObjectUpdatedEventArgs object containing - the data sent from the simulator + + UUID of the parel to request resource usage info - - Thread sync lock object + + + Serializes object + + + serialized data - - The event subscribers, null of no subscribers + + + Deserializes object from OSD + + An containing the data - - Raises the InventoryObjectRemoved Event - A InventoryObjectRemovedEventArgs object containing - the data sent from the simulator + + Response message for parcel resource usage - - Thread sync lock object + + URL where parcel resource usage details can be retrieved - - The event subscribers, null of no subscribers + + URL where parcel resource usage summary can be retrieved - - Raises the InventoryObjectAdded Event - A InventoryObjectAddedEventArgs object containing - the data sent from the simulator + + + Serializes object + + + serialized data - - Thread sync lock object + + + Deserializes object from OSD + + An containing the data - + - Returns the contents of the specified folder + Detects which class handles deserialization of this message - A folder's UUID - The contents of the folder corresponding to folder - When folder does not exist in the inventory + An containing the data + Object capable of decoding this message - + + Parcel resource usage + + + Array of containing per percal resource usage + + - Updates the state of the InventoryNode and inventory data structure that - is responsible for the InventoryObject. If the item was previously not added to inventory, - it adds the item, and updates structure accordingly. If it was, it updates the - InventoryNode, changing the parent node if item.parentUUID does - not match node.Parent.Data.UUID. - - You can not set the inventory root folder using this method + Deserializes object from OSD - The InventoryObject to store + An containing the data - + - Removes the InventoryObject and all related node data from Inventory. + Return a decoded capabilities message as a strongly typed object - The InventoryObject to remove. + A string containing the name of the capabilities message key + An to decode + A strongly typed object containing the decoded information from the capabilities message, or null + if no existing Message object exists for the specified event - + - Used to find out if Inventory contains the InventoryObject - specified by uuid. + Permissions for control of object media - The UUID to check. - true if inventory contains uuid, false otherwise - + - Saves the current inventory structure to a cache file + Style of cotrols that shold be displayed to the user - Name of the cache file to save to - + - Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + Class representing media data for a single face - Name of the cache file to load - The number of inventory items sucessfully reconstructed into the inventory node tree - - Raised when the simulator sends us data containing - ... + + Is display of the alternative image enabled - - Raised when the simulator sends us data containing - ... + + Should media auto loop - - Raised when the simulator sends us data containing - ... + + Shoule media be auto played - + + Auto scale media to prim face + + + Should viewer automatically zoom in on the face when clicked + + + Should viewer interpret first click as interaction with the media + or when false should the first click be treated as zoom in commadn + + + Style of controls viewer should display when + viewer media on this face + + + Starting URL for the media + + + Currently navigated URL + + + Media height in pixes + + + Media width in pixels + + + Who can controls the media + + + Who can interact with the media + + + Is URL whitelist enabled + + + Array of URLs that are whitelisted + + - The root folder of this avatars inventory + Serialize to OSD + OSDMap with the serialized data - + - The default shared library folder + Deserialize from OSD data + Serialized OSD data + Deserialized object - + - The root node of the avatars inventory + Particle system specific enumerators, flags and methods. - + - The root node of the default shared library + Default constructor - + - By using the bracket operator on this class, the program can get the - InventoryObject designated by the specified uuid. If the value for the corresponding - UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). - If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), - the uuid parameter is ignored. + Complete structure for the particle system - The UUID of the InventoryObject to get or set, ignored if set to non-null value. - The InventoryObject corresponding to uuid. - + - Holds group information for Avatars such as those you might find in a profile + Decodes a byte[] array into a ParticleSystem Object + ParticleSystem object + Start position for BitPacker - - true of Avatar accepts group notices + + + Particle source pattern + - - Groups Key + + None - - Texture Key for groups insignia + + Drop particles from source position with no force - - Name of the group + + "Explode" particles in all directions - - Powers avatar has in the group + + Particles shoot across a 2D area - - Avatars Currently selected title + + Particles shoot across a 3D Cone - - true of Avatar has chosen to list this in their profile + + Inverse of AngleCone (shoot particles everywhere except the 3D cone defined - + - Contains an animation currently being played by an agent + Particle Data Flags - - The ID of the animation asset + + None - - A number to indicate start order of currently playing animations - On Linden Grids this number is unique per region, with OpenSim it is per client + + Interpolate color and alpha from start to end - - + + Interpolate scale from start to end - - - Holds group information on an individual profile pick - + + Bounce particles off particle sources Z height - - - Retrieve friend status notifications, and retrieve avatar names and - profiles - + + velocity of particles is dampened toward the simulators wind - - The event subscribers, null of no subscribers + + Particles follow the source - - Raises the AvatarAnimation Event - An AvatarAnimationEventArgs object containing - the data sent from the simulator + + Particles point towards the direction of source's velocity - - Thread sync lock object + + Target of the particles - - The event subscribers, null of no subscribers + + Particles are sent in a straight line - - Raises the AvatarAppearance Event - A AvatarAppearanceEventArgs object containing - the data sent from the simulator + + Particles emit a glow - - Thread sync lock object + + used for point/grab/touch - - The event subscribers, null of no subscribers + + + Particle Flags Enum + - - Raises the UUIDNameReply Event - A UUIDNameReplyEventArgs object containing - the data sent from the simulator + + None - - Thread sync lock object + + Acceleration and velocity for particles are + relative to the object rotation - - The event subscribers, null of no subscribers + + Particles use new 'correct' angle parameters - - Raises the AvatarInterestsReply Event - A AvatarInterestsReplyEventArgs object containing - the data sent from the simulator + + Particle Flags + There appears to be more data packed in to this area + for many particle systems. It doesn't appear to be flag values + and serialization breaks unless there is a flag for every + possible bit so it is left as an unsigned integer - - Thread sync lock object + + + pattern of particles - - The event subscribers, null of no subscribers + + A representing the maximimum age (in seconds) particle will be displayed + Maximum value is 30 seconds - - Raises the AvatarPropertiesReply Event - A AvatarPropertiesReplyEventArgs object containing - the data sent from the simulator + + A representing the number of seconds, + from when the particle source comes into view, + or the particle system's creation, that the object will emits particles; + after this time period no more particles are emitted - - Thread sync lock object + + A in radians that specifies where particles will not be created - - The event subscribers, null of no subscribers + + A in radians that specifies where particles will be created - - Raises the AvatarGroupsReply Event - A AvatarGroupsReplyEventArgs object containing - the data sent from the simulator + + A representing the number of seconds between burts. - - Thread sync lock object + + A representing the number of meters + around the center of the source where particles will be created. - - The event subscribers, null of no subscribers + + A representing in seconds, the minimum speed between bursts of new particles + being emitted - - Raises the AvatarPickerReply Event - A AvatarPickerReplyEventArgs object containing - the data sent from the simulator + + A representing in seconds the maximum speed of new particles being emitted. - - Thread sync lock object + + A representing the maximum number of particles emitted per burst + + + A which represents the velocity (speed) from the source which particles are emitted + + + A which represents the Acceleration from the source which particles are emitted - - The event subscribers, null of no subscribers + + The Key of the texture displayed on the particle - - Raises the ViewerEffectPointAt Event - A ViewerEffectPointAtEventArgs object containing - the data sent from the simulator + + The Key of the specified target object or avatar particles will follow - - Thread sync lock object + + Flags of particle from - - The event subscribers, null of no subscribers + + Max Age particle system will emit particles for - - Raises the ViewerEffectLookAt Event - A ViewerEffectLookAtEventArgs object containing - the data sent from the simulator + + The the particle has at the beginning of its lifecycle - - Thread sync lock object + + The the particle has at the ending of its lifecycle - - The event subscribers, null of no subscribers + + A that represents the starting X size of the particle + Minimum value is 0, maximum value is 4 - - Raises the ViewerEffect Event - A ViewerEffectEventArgs object containing - the data sent from the simulator + + A that represents the starting Y size of the particle + Minimum value is 0, maximum value is 4 - - Thread sync lock object + + A that represents the ending X size of the particle + Minimum value is 0, maximum value is 4 - - The event subscribers, null of no subscribers + + A that represents the ending Y size of the particle + Minimum value is 0, maximum value is 4 - - Raises the AvatarPicksReply Event - A AvatarPicksReplyEventArgs object containing - the data sent from the simulator + + + Generate byte[] array from particle data + + Byte array - - Thread sync lock object + + + Parameters used to construct a visual representation of a primitive + - - The event subscribers, null of no subscribers + + + - - Raises the PickInfoReply Event - A PickInfoReplyEventArgs object containing - the data sent from the simulator + + + - - Thread sync lock object + + + - - The event subscribers, null of no subscribers + + + - - Raises the AvatarClassifiedReply Event - A AvatarClassifiedReplyEventArgs object containing - the data sent from the simulator + + + - - Thread sync lock object + + + - - The event subscribers, null of no subscribers + + + - - Raises the ClassifiedInfoReply Event - A ClassifiedInfoReplyEventArgs object containing - the data sent from the simulator + + + - - Thread sync lock object + + + - + - Represents other avatars - - - Tracks the specified avatar on your map - Avatar ID to track + + + - + - Request a single avatar name - The avatar key to retrieve a name for - + - Request a list of avatar names - The avatar keys to retrieve names for - + - Start a request for Avatar Properties - - + - Search for an avatar (first name, last name) - The name to search for - An ID to associate with this query - + - Start a request for Avatar Picks - UUID of the avatar - + - Start a request for Avatar Classifieds - UUID of the avatar - + - Start a request for details of a specific profile pick - UUID of the avatar - UUID of the profile pick - + - Start a request for details of a specific profile classified - UUID of the avatar - UUID of the profile classified - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Attachment point to an avatar - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - + - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Information on the flexible properties of a primitive + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Default constructor + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + + + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Raised when the simulator sends us data containing - an agents animation playlist + + + - - Raised when the simulator sends us data containing - the appearance information for an agent + + + - - Raised when the simulator sends us data containing - agent names/id values + + + - - Raised when the simulator sends us data containing - the interests listed in an agents profile + + + + + - - Raised when the simulator sends us data containing - profile property information for an agent + + + + + - - Raised when the simulator sends us data containing - the group membership an agent is a member of + + + Information on the light properties of a primitive + - - Raised when the simulator sends us data containing - name/id pair + + + Default constructor + - - Raised when the simulator sends us data containing - the objects and effect when an agent is pointing at + + + + + + + - - Raised when the simulator sends us data containing - the objects and effect when an agent is looking at + + + - - Raised when the simulator sends us data containing - an agents viewer effect information + + + - - Raised when the simulator sends us data containing - the top picks from an agents profile + + + - - Raised when the simulator sends us data containing - the Pick details + + + - - Raised when the simulator sends us data containing - the classified ads an agent has placed + + + - - Raised when the simulator sends us data containing - the details of a classified ad + + + + + - - Provides data for the event - The event occurs when the simulator sends - the animation playlist for an agent - - The following code example uses the and - properties to display the animation playlist of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; - - private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) - { - // create a dictionary of "known" animations from the Animations class using System.Reflection - Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); - Type type = typeof(Animations); - System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - foreach (System.Reflection.FieldInfo field in fields) - { - systemAnimations.Add((UUID)field.GetValue(type), field.Name); - } - - // find out which animations being played are known animations and which are assets - foreach (Animation animation in e.Animations) - { - if (systemAnimations.ContainsKey(animation.AnimationID)) - { - Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, - systemAnimations[animation.AnimationID], animation.AnimationSequence); - } - else - { - Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, - animation.AnimationID, animation.AnimationSequence); - } - } - } - - + + + + + - + - Construct a new instance of the AvatarAnimationEventArgs class + Information on the sculpt properties of a sculpted primitive - The ID of the agent - The list of animations to start - - Get the ID of the agent + + + Default constructor + - - Get the list of animations to start + + + + + + + - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - + + + Render inside out (inverts the normals). + - + - Construct a new instance of the AvatarAppearanceEventArgs class + Render an X axis mirror of the sculpty. - The simulator request was from - The ID of the agent - true of the agent is a trial account - The default agent texture - The agents appearance layer textures - The for the agent - - Get the Simulator this request is from of the agent + + + Extended properties to describe an object + - - Get the ID of the agent + + + Default constructor + - - true if the agent is a trial account + + + - - Get the default agent texture + + + - - Get the agents appearance layer textures + + + - - Get the for the agent + + + - - Represents the interests from the profile of an agent + + + - - Get the ID of the agent + + + - - The properties of an agent + + + - - Get the ID of the agent + + + - - Get the ID of the agent + + + - - Get the ID of the agent + + + - - Get the ID of the avatar + + + - + - - - OK + + + - - Transfer completed + + + - - + + + - - + + + - - Unknown error occurred + + + - - Equivalent to a 404 error + + + - - Client does not have permission for that resource + + + - - Unknown status + + + - + - - - + + + - - Unknown + + + - - Virtually all asset transfers use this channel + + + Set the properties that are set in an ObjectPropertiesFamily packet + + + that has + been partially filled by an ObjectPropertiesFamily packet - + - + Texture animation mode - - + + Disable texture animation - - Asset from the asset server + + Enable texture animation - - Inventory item + + Loop when animating textures - - Estate asset, such as an estate covenant + + Animate in reverse direction - - - - + + Animate forward then reverse - - + + Slide texture smoothly instead of frame-stepping - - + + Rotate texture instead of using frames - - + + Scale texture instead of using frames - + - + A single textured face. Don't instantiate this class yourself, use the + methods in TextureEntry - - - - - - - + - Image file format + Contains the definition for individual faces + + - + - - - Number of milliseconds passed since the last transfer - packet was received + + + - + - - + - - + - - + - - + - - + - - - - - - + - - - Number of milliseconds to wait for a transfer header packet if out of order data was received + + + - - The event subscribers. null if no subcribers + + In the future this will specify whether a webpage is + attached to this face - - Raises the XferReceived event - A XferReceivedEventArgs object containing the - data returned from the simulator + + + - - Thread sync lock object + + + + + - - The event subscribers. null if no subcribers + + + Represents all of the texturable faces for an object + + Grid objects have infinite faces, with each face + using the properties of the default face unless set otherwise. So if + you have a TextureEntry with a default texture uuid of X, and face 18 + has a texture UUID of Y, every face would be textured with X except for + face 18 that uses Y. In practice however, primitives utilize a maximum + of nine faces - - Raises the AssetUploaded event - A AssetUploadedEventArgs object containing the - data returned from the simulator + + + Constructor that takes a default texture UUID + + Texture UUID to use as the default texture - - Thread sync lock object + + + Constructor that takes a TextureEntryFace for the + default face + + Face to use as the default face - - The event subscribers. null if no subcribers + + + Constructor that creates the TextureEntry class from a byte array + + Byte array containing the TextureEntry field + Starting position of the TextureEntry field in + the byte array + Length of the TextureEntry field, in bytes - - Raises the UploadProgress event - A UploadProgressEventArgs object containing the - data returned from the simulator + + + - - Thread sync lock object + + + - - The event subscribers. null if no subcribers + + + This will either create a new face if a custom face for the given + index is not defined, or return the custom face for that index if + it already exists + + The index number of the face to create or + retrieve + A TextureEntryFace containing all the properties for that + face - - Raises the InitiateDownload event - A InitiateDownloadEventArgs object containing the - data returned from the simulator + + + + + + + - - Thread sync lock object + + + + + - - The event subscribers. null if no subcribers + + + + + - - Raises the ImageReceiveProgress event - A ImageReceiveProgressEventArgs object containing the - data returned from the simulator + + + + + - - Thread sync lock object + + + Controls the texture animation of a particular prim + - - Texture download cache + + + + + + + - + - Default constructor - A reference to the GridClient object - + - Request an asset download - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - The callback to fire when the simulator responds with the asset data - + - Request an asset download - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - The callback to fire when the simulator responds with the asset data - + - Request an asset download - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - UUID of the transaction - The callback to fire when the simulator responds with the asset data - + - Request an asset download through the almost deprecated Xfer system - Filename of the asset to request - Whether or not to delete the asset - off the server after it is retrieved - Use large transfer packets or not - UUID of the file to request, if filename is - left empty - Asset type of vFileID, or - AssetType.Unknown if filename is not empty - Sets the FilePath in the request to Cache - (4) if true, otherwise Unknown (0) is used - - + - - Use UUID.Zero if you do not have the - asset ID but have all the necessary permissions - The item ID of this asset in the inventory - Use UUID.Zero if you are not requesting an - asset from an object inventory - The owner of this asset - Asset type - Whether to prioritize this asset download or not - - + - Used to force asset data into the PendingUpload property, ie: for raw terrain uploads - An AssetUpload object containing the data to upload to the simulator - + - Request an asset be uploaded to the simulator - The Object containing the asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired + + - + - Request an asset be uploaded to the simulator + Current version of the media data for the prim - The of the asset being uploaded - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - + - Request an asset be uploaded to the simulator + Array of media entries indexed by face number - - Asset type to upload this data as - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - + - Initiate an asset upload - The ID this asset will have if the - upload succeeds - Asset type to upload this data as - Raw asset data to upload - Whether to store this asset on the local - simulator or the grid-wide asset server - The tranaction id for the upload - The transaction ID of this transfer - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress - transfer. - A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority - indicating an off-by-one error. - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - Request an image and fire a callback when the request is complete - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - - Request an image and use an inline anonymous method to handle the downloaded texture data - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - ); - - Request a texture, decode the texture to a bitmap image and apply it to a imagebox - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - ManagedImage imgData; - Image bitmap; - - if (state == TextureRequestState.Finished) - { - OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); - picInsignia.Image = bitmap; - } - } - } - - + + + - + - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - The of the texture asset to download - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - + - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - + - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - + - Cancel a texture request - The texture assets - + - Lets TexturePipeline class fire the progress event - The texture ID currently being downloaded - the number of bytes transferred - the total number of bytes expected - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Foliage type for this primitive. Only applicable if this + primitive is foliage - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Unknown - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + - - Raised when the simulator responds sends + + + - - Raised during upload completes + + + - - Raised during upload with progres update + + + - - Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + + - - Fired when a texture is in the process of being downloaded by the TexturePipeline class + + + - + - Callback used for various asset download requests - Transfer information - Downloaded asset, null on fail - + - Callback used upon competition of baked texture upload - Asset UUID of the newly uploaded baked texture - - Xfer data + + Identifies the owner if audio or a particle system is + active - - Upload data + + + - - Filename used on the simulator + + + - - Filename used by the client + + + - - UUID of the image that is in progress + + + - - Number of bytes received so far + + + - - Image size in bytes + + + - + - A set of textures that are layered on texture of each other and "baked" - in to a single texture, for avatar appearances - - Final baked texture + + + - - Component layers + + + - - Width of the final baked image and scratchpad + + + - - Height of the final baked image and scratchpad + + + - - Bake type + + + - + - Default constructor - Bake type - + - Adds layer for baking - TexturaData struct that contains texture and its params - + + Uses basic heuristics to estimate the primitive shape + + - Converts avatar texture index (face) to Bake type + Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters in to signed eight bit values - Face number (AvatarTextureIndex) - BakeType, layer to which this texture belongs to + Floating point parameter to pack + Signed eight bit value containing the packed parameter - + - Make sure images exist, resize source if needed to match the destination + Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters from signed eight bit integers to floating point values - Destination image - Source image - Sanitization was succefull + Signed eight bit value to unpack + Unpacked floating point value - + - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color + The type of bump-mapping applied to a face - Color of the base of this layer - + - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - Red value - Green value - Blue value - - Final baked texture + + + - - Component layers + + + - - Width of the final baked image and scratchpad + + + - - Height of the final baked image and scratchpad + + + - - Bake type + + + - - Is this one of the 3 skin bakes + + + - + - Represents a string of characters encoded with specific formatting properties - - A text string containing main text of the notecard + + + - - List of s embedded on the notecard + + + - - Construct an Asset of type Notecard + + + - + - Construct an Asset object of type Notecard - A unique specific to this asset - A byte array containing the raw asset data - + - Encode the raw contents of a string with the specific Linden Text properties - + - Decode the raw asset data including the Linden Text properties - true if the AssetData was successfully decoded - - - Override the base classes AssetType - + - Add a custom decoder callback - The key of the field to decode - The custom decode handler - + - Remove a custom decoder callback - The key of the field to decode - The custom decode handler - + - Creates a formatted string containing the values of a Packet - The Packet - A formatted string of values of the nested items in the Packet object - + - Decode an IMessage object into a beautifully formatted string - The IMessage object - Recursion level (used for indenting) - A formatted string containing the names and values of the source object - + - A custom decoder callback + The level of shininess applied to a face - The key of the object - the data to decode - A string represending the fieldData - + - Registers, unregisters, and fires events generated by incoming packets - - Reference to the GridClient object - - + - Default constructor - - + - Register an event handler - Use PacketType.Default to fire this event on every - incoming packet - Packet type to register the handler for - Callback to be fired - True if this callback should be ran - asynchronously, false to run it synchronous - + - Unregister an event handler - Packet type to unregister the handler for - Callback to be unregistered - + - Fire the events registered for this packet type + The texture mapping style used for a face - Incoming packet type - Incoming packet - Simulator this packet was received from - + - Object that is passed to worker threads in the ThreadPool for - firing packet callbacks - - Callback to fire for this packet - - - Reference to the simulator that this packet came from - - - The packet that needs to be processed - - + - Registers, unregisters, and fires events generated by the Capabilities - event queue - - Reference to the GridClient object - - + - Default constructor - Reference to the GridClient object - + - Register an new event handler for a capabilities event sent via the EventQueue - Use String.Empty to fire this event on every CAPS event - Capability event name to register the - handler for - Callback to fire - + - Unregister a previously registered capabilities handler + Flags in the TextureEntry block that describe which properties are + set - Capability event name unregister the - handler for - Callback to unregister - + - Fire the events registered for this event type synchronously - Capability name - Decoded event body - Reference to the simulator that - generated this event - + - Fire the events registered for this event type asynchronously - Capability name - Decoded event body - Reference to the simulator that - generated this event - + - Object that is passed to worker threads in the ThreadPool for - firing CAPS callbacks - - Callback to fire for this packet - - - Name of the CAPS event - - - Strongly typed decoded data - - - Reference to the simulator that generated this event - - + - Represends individual HTTP Download request - - URI of the item to fetch - - - Timout specified in milliseconds - - - Download progress callback - - - Download completed callback - - - Accept the following content type - - - Default constructor - - - Constructor - - + - Manages async HTTP downloads with a limit on maximum - concurrent downloads - - Default constructor - - - Cleanup method - - - Setup http download request - - - Check the queue for pending work - - - Enqueue a new HTPP download - - - Maximum number of parallel downloads from a single endpoint - - - Client certificate - - + - Index of TextureEntry slots for avatar appearances - + - Bake layers for avatar appearance - - Maximum number of concurrent downloads for wearable assets and textures - - - Maximum number of concurrent uploads for baked textures - - - Timeout for fetching inventory listings - - - Timeout for fetching a single wearable, or receiving a single packet response - - - Timeout for fetching a single texture - - - Timeout for uploading a single baked texture - - - Number of times to retry bake upload - - - When changing outfit, kick off rebake after - 20 seconds has passed since the last change - - - Total number of wearables for each avatar - - - Total number of baked textures on each avatar - - - Total number of wearables per bake layer - - - Total number of textures on an avatar, baked or not - - - Mapping between BakeType and AvatarTextureIndex - - - Map of what wearables are included in each bake - - - Magic values to finalize the cache check hashes for each - bake - - - Default avatar texture, used to detect when a custom - texture is not set for a face + + + - - The event subscribers. null if no subcribers + + + - - Raises the AgentWearablesReply event - An AgentWearablesReplyEventArgs object containing the - data returned from the data server + + + - - Thread sync lock object + + + - - The event subscribers. null if no subcribers + + + - - Raises the CachedBakesReply event - An AgentCachedBakesReplyEventArgs object containing the - data returned from the data server AgentCachedTextureResponse + + + Level of Detail mesh + - - Thread sync lock object + + + Constructor for default logging settings + - - The event subscribers. null if no subcribers + + Enable logging - - Raises the AppearanceSet event - An AppearanceSetEventArgs object indicating if the operatin was successfull + + The folder where any logs will be created - - Thread sync lock object + + This will be prepended to beginning of each log file - - The event subscribers. null if no subcribers + + The suffix or extension to be appended to each log file - - Raises the RebakeAvatarRequested event - An RebakeAvatarTexturesEventArgs object containing the - data returned from the data server + + + 0: NONE - No logging + 1: ERROR - Log errors only + 2: WARNING - Log errors and warnings + 3: INFO - Log errors, warnings and info + 4: DEBUG - Log errors, warnings, info and debug + - - Thread sync lock object + + Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + + Event for most mundane request reposnses. + - - A cache of wearables currently being worn + + Response to Connector.Create request - - A cache of textures currently being worn + + Response to Aux.GetCaptureDevices request - - Incrementing serial number for AgentCachedTexture packets + + Response to Aux.GetRenderDevices request - - Incrementing serial number for AgentSetAppearance packets + + Audio Properties Events are sent after audio capture is started. + These events are used to display a microphone VU meter - - Indicates whether or not the appearance thread is currently - running, to prevent multiple appearance threads from running - simultaneously + + Response to Account.Login request - - Reference to our agent + + This event message is sent whenever the login state of the + particular Account has transitioned from one value to another - + - Timer used for delaying rebake on changing outfit + List of audio input devices - + - Main appearance thread + List of audio output devices - + - Default constructor + Set audio test mode - A reference to our agent - + - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread + This is used to login a specific user account(s). It may only be called after + Connector initialization has completed successfully + Handle returned from successful Connector �create� request + User's account name + User's account password + Values may be �AutoAnswer� or �VerifyAnswer� + "" + This is an integer that specifies how often + the daemon will send participant property events while in a channel. If this is not set + the default will be �on state change�, which means that the events will be sent when + the participant starts talking, stops talking, is muted, is unmuted. + The valid values are: + 0 � Never + 5 � 10 times per second + 10 � 5 times per second + 50 � 1 time per second + 100 � on participant state change (this is the default) + false + + - + - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread + This is used to logout a user session. It should only be called with a valid AccountHandle. - Unused parameter + Handle returned from successful Connector �login� request + + - + - Starts the appearance setting thread + This is used to get a list of audio devices that can be used for capture (input) of voice. + + - + - Starts the appearance setting thread + This is used to get a list of audio devices that can be used for render (playback) of voice. - True to force rebaking, otherwise false - + - Ask the server what textures our agent is currently wearing + This command is used to select the render device. + The name of the device as returned by the Aux.GetRenderDevices command. - + - Build hashes out of the texture assetIDs for each baking layer to - ask the simulator whether it has cached copies of each baked texture + This command is used to select the capture device. + The name of the device as returned by the Aux.GetCaptureDevices command. - + - Returns the AssetID of the asset that is currently being worn in a - given WearableType slot + This command is used to start the audio capture process which will cause + AuxAudioProperty Events to be raised. These events can be used to display a + microphone VU meter for the currently selected capture device. This command + should not be issued if the user is on a call. - WearableType slot to get the AssetID for - The UUID of the asset being worn in the given slot, or - UUID.Zero if no wearable is attached to the given slot or wearables - have not been downloaded yet + (unused but required) + + - + - Add a wearable to the current outfit and set appearance + This command is used to stop the audio capture process. - Wearable to be added to the outfit + + - + - Add a list of wearables to the current outfit and set appearance + This command is used to set the mic volume while in the audio tuning process. + Once an acceptable mic level is attained, the application must issue a + connector set mic volume command to have that level be used while on voice + calls. - List of wearable inventory items to - be added to the outfit + the microphone volume (-100 to 100 inclusive) + + - + - Remove a wearable from the current outfit and set appearance + This command is used to set the speaker volume while in the audio tuning + process. Once an acceptable speaker level is attained, the application must + issue a connector set speaker volume command to have that level be used while + on voice calls. - Wearable to be removed from the outfit + the speaker volume (-100 to 100 inclusive) + + - + - Removes a list of wearables from the current outfit and set appearance + This is used to initialize and stop the Connector as a whole. The Connector + Create call must be completed successfully before any other requests are made + (typically during application initialization). The shutdown should be called + when the application is shutting down to gracefully release resources - List of wearable inventory items to - be removed from the outfit + A string value indicting the Application name + URL for the management server + LoggingSettings + + + + - + - Replace the current outfit with a list of wearables and set appearance + Shutdown Connector -- Should be called when the application is shutting down + to gracefully release resources - List of wearable inventory items that - define a new outfit + Handle returned from successful Connector �create� request - + - Checks if an inventory item is currently being worn + Mute or unmute the microphone - The inventory item to check against the agent - wearables - The WearableType slot that the item is being worn in, - or WearbleType.Invalid if it is not currently being worn + Handle returned from successful Connector �create� request + true (mute) or false (unmute) - + - Returns a copy of the agents currently worn wearables + Mute or unmute the speaker - A copy of the agents currently worn wearables - Avoid calling this function multiple times as it will make - a copy of all of the wearable data each time + Handle returned from successful Connector �create� request + true (mute) or false (unmute) - + - Calls either or - depending on the value of - replaceItems + Set microphone volume - List of wearable inventory items to add - to the outfit or become a new outfit - True to replace existing items with the - new list of items, false to add these items to the existing outfit + Handle returned from successful Connector �create� request + The level of the audio, a number between -100 and 100 where + 0 represents �normal� speaking volume - + - Adds a list of attachments to our agent + Set local speaker volume - A List containing the attachments to add - If true, tells simulator to remove existing attachment - first + Handle returned from successful Connector �create� request + The level of the audio, a number between -100 and 100 where + 0 represents �normal� speaking volume - + - Attach an item to our agent at a specific attach point + Start up the Voice service. - A to attach - the on the avatar - to attach the item to - + - Attach an item to our agent specifying attachment details + Handle miscellaneous request status + + + + + + ///If something goes wrong, we log it. + + + Cleanup oject resources - The of the item to attach - The attachments owner - The name of the attachment - The description of the attahment - The to apply when attached - The of the attachment - The on the agent - to attach the item to - + - Detach an item from our agent using an object + Request voice cap when changing regions - An object - + - Detach an item from our agent + Handle a change in session state - The inventory itemID of the item to detach - + - Inform the sim which wearables are part of our current outfit + Close a voice session + + - + - Replaces the Wearables collection with a list of new wearable items + Locate a Session context from its handle - Wearable items to replace the Wearables collection with + Creates the session context if it does not exist. - + - Calculates base color/tint for a specific wearable - based on its params + Handle completion of main voice cap request. - All the color info gathered from wearable's VisualParams - passed as list of ColorParamInfo tuples - Base color/tint for the wearable + + + + + + - + - Blocking method to populate the Wearables dictionary + Daemon has started so connect to it. - True on success, otherwise false - + - Blocking method to populate the Textures array with cached bakes + The daemon TCP connection is open. - True on success, otherwise false - + - Populates textures and visual params from a decoded asset + Handle creation of the Connector. - Wearable to decode - + - Blocking method to download and parse currently worn wearable assets + Handle response to audio output device query - True on success, otherwise false - + - Get a list of all of the textures that need to be downloaded for a - single bake layer + Handle response to audio input device query - Bake layer to get texture AssetIDs for - A list of texture AssetIDs to download - + - Helper method to lookup the TextureID for a single layer and add it - to a list if it is not already present + Set voice channel for new parcel - - - + - Blocking method to download all of the textures needed for baking - the given bake layers + Request info from a parcel capability Uri. - A list of layers that need baking - No return value is given because the baking will happen - whether or not all textures are successfully downloaded + + - + - Blocking method to create and upload baked textures for all of the - missing bakes + Receive parcel voice cap - True on success, otherwise false + + + + + + - + - Blocking method to create and upload a baked texture for a single - bake layer + Tell Vivox where we are standing - Layer to bake - True on success, otherwise false + This has to be called when we move or turn. - + - Blocking method to upload a baked texture + Start and stop updating out position. - Five channel JPEG2000 texture data to upload - UUID of the newly created asset on success, otherwise UUID.Zero + + - + - Creates a dictionary of visual param values from the downloaded wearables + Starts a thread that keeps the daemon running - A dictionary of visual param indices mapping to visual param - values for our agent that can be fed to the Baker class + + + + - + - Create an AgentSetAppearance packet from Wearables data and the - Textures array and send it + Stops the daemon and the thread keeping it running - + - Converts a WearableType to a bodypart or clothing WearableType - A WearableType - AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown + + + + + + - + - Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + Create a Session + Sessions typically represent a connection to a media session with one or more + participants. This is used to generate an �outbound� call to another user or + channel. The specifics depend on the media types involved. A session handle is + required to control the local user functions within the session (or remote + users if the current account has rights to do so). Currently creating a + session automatically connects to the audio media, there is no need to call + Session.Connect at this time, this is reserved for future use. - A BakeType - The AvatarTextureIndex slot that holds the given BakeType + Handle returned from successful Connector �create� request + This is the URI of the terminating point of the session (ie who/what is being called) + This is the display name of the entity being called (user or channel) + Only needs to be supplied when the target URI is password protected + This indicates the format of the password as passed in. This can either be + �ClearText� or �SHA1UserName�. If this element does not exist, it is assumed to be �ClearText�. If it is + �SHA1UserName�, the password as passed in is the SHA1 hash of the password and username concatenated together, + then base64 encoded, with the final �=� character stripped off. + + + + + + - + - Gives the layer number that is used for morph mask + Used to accept a call - >A BakeType - Which layer number as defined in BakeTypeToTextures is used for morph mask + SessionHandle such as received from SessionNewEvent + "default" + + - + - Converts a BakeType to a list of the texture slots that make up that bake + This command is used to start the audio render process, which will then play + the passed in file through the selected audio render device. This command + should not be issued if the user is on a call. - A BakeType - A list of texture slots that are inputs for the given bake - - - Triggered when an AgentWearablesUpdate packet is received, - telling us what our avatar is currently wearing - request. - - - Raised when an AgentCachedTextureResponse packet is - received, giving a list of cached bakes that were found on the - simulator - request. + The fully qualified path to the sound file. + True if the file is to be played continuously and false if it is should be played once. + + - + - Raised when appearance data is sent to the simulator, also indicates - the main appearance thread is finished. + This command is used to stop the audio render process. - request. + The fully qualified path to the sound file issued in the start render command. + + - + - Triggered when the simulator requests the agent rebake its appearance. + This is used to �end� an established session (i.e. hang-up or disconnect). - + Handle returned from successful Session �create� request or a SessionNewEvent + + - + - Returns true if AppearanceManager is busy and trying to set or change appearance will fail + Set the combined speaking and listening position in 3D space. + Handle returned from successful Session �create� request or a SessionNewEvent + Speaking position + Listening position + + - + - Contains information about a wearable inventory item + Set User Volume for a particular user. Does not affect how other users hear that user. + Handle returned from successful Session �create� request or a SessionNewEvent + + + The level of the audio, a number between -100 and 100 where 0 represents �normal� speaking volume + + - - Inventory ItemID of the wearable + + Positional vector of the users position - - AssetID of the wearable asset + + Velocity vector of the position - - WearableType of the wearable + + At Orientation (X axis) of the position - - AssetType of the wearable + + Up Orientation (Y axis) of the position - - Asset data for the wearable + + Left Orientation (Z axis) of the position - + - Data collected from visual params for each wearable - needed for the calculation of the color + Extract the avatar UUID encoded in a SIP URI + + + + - + - Holds a texture assetID and the data needed to bake this layer into - an outfit texture. Used to keep track of currently worn textures - and baking data + Represents a single Voice Session to the Vivox service. - - A texture AssetID - - - Asset data for the texture - - - Collection of alpha masks that needs applying - - - Tint that should be applied to the texture - - - Contains the Event data returned from the data server from an AgentWearablesRequest - - - Construct a new instance of the AgentWearablesReplyEventArgs class - - - Contains the Event data returned from the data server from an AgentCachedTextureResponse - - - Construct a new instance of the AgentCachedBakesReplyEventArgs class - - - Contains the Event data returned from an AppearanceSetRequest - - + - Triggered when appearance data is sent to the sim and - the main appearance thread is done. - Indicates whether appearance setting was successful - - - Indicates whether appearance setting was successful + Close this session. + - - Contains the Event data returned from the data server from an RebakeAvatarTextures + + + Look up an existing Participants in this session + + + + + - + - Triggered when the simulator sends a request for this agent to rebake - its appearance - The ID of the Texture Layer to bake + + + + - - The ID of the Texture Layer to bake + + + A callback fired to indicate the status or final state of the requested texture. For progressive + downloads this will fire each time new asset data is returned from the simulator. + + The indicating either Progress for textures not fully downloaded, + or the final result of the request after it has been processed through the TexturePipeline + The object containing the Assets ID, raw data + and other information. For progressive rendering the will contain + the data from the beginning of the file. For failed, aborted and timed out requests it will contain + an empty byte array. diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll index 8f02186..b9c73b7 100644 Binary files a/bin/OpenMetaverse.dll and b/bin/OpenMetaverse.dll differ diff --git a/bin/OpenMetaverse.dll.config b/bin/OpenMetaverse.dll.config index 13fdc11..dc36a45 100644 --- a/bin/OpenMetaverse.dll.config +++ b/bin/OpenMetaverse.dll.config @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/bin/OpenMetaverseTypes.XML b/bin/OpenMetaverseTypes.XML index 9b19851..69e5c1b 100644 --- a/bin/OpenMetaverseTypes.XML +++ b/bin/OpenMetaverseTypes.XML @@ -1,23 +1,239 @@ - OpenMetaverseTypes + /home/root/libopenmetaverse/bin/OpenMetaverseTypes + + + Same as Queue except Dequeue function blocks until there is an object to return. + Note: This class does not need to be synchronized + + + + + Create new BlockingQueue. + + The System.Collections.ICollection to copy elements from + + + + Create new BlockingQueue. + + The initial number of elements that the queue can contain + + + + Create new BlockingQueue. + + + + + Gets flag indicating if queue has been closed. + + + + + BlockingQueue Destructor (Close queue, resume any waiting thread). + + + + + Remove all objects from the Queue. + + + + + Remove all objects from the Queue, resume all dequeue threads. + + + + + Removes and returns the object at the beginning of the Queue. + + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning + Object in queue. + + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning (in milliseconds) + Object in queue. + + + + Adds an object to the end of the Queue + + Object to put in queue + + + + Open Queue. + + + + + Copy constructor + + Circular queue to copy + + + + An 8-bit color structure including an alpha channel + + + + + + + + + + + + + + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + + + + Returns the raw bytes for this vector + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + A 16 byte array containing R, G, B, and A + + + + Copy constructor + + Color to copy + + + Red + + + Green + + + Blue + + + Alpha + + + A Color4 with zero RGB values and fully opaque (alpha 1.0) + + + A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) + + + + IComparable.CompareTo implementation + + Sorting ends up like this: |--Grayscale--||--Color--|. + Alpha is only used when the colors are otherwise equivalent + + + + Builds a color from a byte array + + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Serializes this color into four bytes in a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 4 bytes before the end of the array + True to invert the output (1.0 becomes 0 + instead of 255) + + + + Writes the raw bytes for this color to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array + + + + Ensures that values are in range 0-1 + + + + + Create an RGB color from a hue, saturation, value combination + + Hue + Saturation + Value + An fully opaque RGB color (alpha is 1.0) + + + + Performs linear interpolation between two colors + + Color to start at + Color to end at + Amount to interpolate + The interpolated color + Attribute class that allows extra attributes to be attached to ENUMs - - Text used when presenting ENUM to user - Default initializer Text used when presenting ENUM to user + + Text used when presenting ENUM to user + The different types of grid assets @@ -39,11 +255,11 @@ Link to a location in world - Collection of textures and parameters that can be + Collection of textures and parameters that can be worn by an avatar - Primitive that can contain textures, sounds, + Primitive that can contain textures, sounds, scripts and more @@ -151,34 +367,42 @@ Notecard - + + Folder - + + an LSL Script - + + - + + - + + - + + - + + - + + @@ -250,1063 +474,624 @@ Invalid wearable asset - + - Copy constructor + Identifier code for primitive types - Circular queue to copy - - X value + + None - - Y value + + A Primitive - - Z value + + A Avatar - - W value + + Linden grass - - - Build a quaternion from normalized float values - - X value from -1.0 to 1.0 - Y value from -1.0 to 1.0 - Z value from -1.0 to 1.0 + + Linden tree - + + A primitive that acts as the source for a particle stream + + + A Linden tree + + - Constructor, builds a quaternion object from a byte array + Primary parameters for primitives such as Physics Enabled or Phantom - Byte array containing four four-byte floats - Offset in the byte array to start reading at - Whether the source data is normalized or - not. If this is true 12 bytes will be read, otherwise 16 bytes will - be read. - + + Deprecated + + + Whether physics are enabled for this object + + - Normalizes the quaternion - + - Builds a quaternion object from a byte array - The source byte array - Offset in the byte array to start reading at - Whether the source data is normalized or - not. If this is true 12 bytes will be read, otherwise 16 bytes will - be read. - + - Normalize this quaternion and serialize it to a byte array - A 12 byte array containing normalized X, Y, and Z floating - point values in order using little endian byte ordering - + - Writes the raw bytes for this quaternion to a byte array - Destination byte array - Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array - + - Convert this quaternion to euler angles - X euler angle - Y euler angle - Z euler angle - + - Convert this quaternion to an angle around an axis - Unit vector describing the axis - Angle around the axis, in radians - + + Whether this object contains an active touch script + + - Returns the conjugate (spatial inverse) of a quaternion - + + Whether this object can receive payments + + + Whether this object is phantom (no collisions) + + - Build a quaternion from an axis and an angle of rotation around - that axis - + - Build a quaternion from an axis and an angle of rotation around - that axis - Axis of rotation - Angle of rotation - + - Creates a quaternion from a vector containing roll, pitch, and yaw - in radians - Vector representation of the euler angles in - radians - Quaternion representation of the euler angles - + - Creates a quaternion from roll, pitch, and yaw euler angles in - radians - X angle in radians - Y angle in radians - Z angle in radians - Quaternion representation of the euler angles - + + Deprecated + + - Conjugates and renormalizes a vector - + - Spherical linear interpolation between two quaternions - + - Get a string representation of the quaternion elements with up to three - decimal digits and separated by spaces only - Raw string representation of the quaternion - - A quaternion with a value of 0,0,0,1 + + Deprecated - + - A hierarchical token bucket for bandwidth throttling. See - http://en.wikipedia.org/wiki/Token_bucket for more information - - Parent bucket to this bucket, or null if this is a root - bucket + + + - - Size of the bucket in bytes. If zero, the bucket has - infinite capacity + + + - - Rate that the bucket fills, in bytes per millisecond. If - zero, the bucket always remains full + + + - - Number of tokens currently in the bucket + + Server flag, will not be sent to clients. Specifies that + the object is destroyed when it touches a simulator edge - - Time of the last drip, in system ticks + + Server flag, will not be sent to clients. Specifies that + the object will be returned to the owner's inventory when it + touches a simulator edge - + + Server flag, will not be sent to clients. + + + Server flag, will not be sent to client. Specifies that + the object is hovering/flying + + - Default constructor - Parent bucket if this is a child bucket, or - null if this is a root bucket - Maximum size of the bucket in bytes, or - zero if this bucket has no maximum capacity - Rate that the bucket fills, in bytes per - second. If zero, the bucket always remains full - + - Remove a given number of tokens from the bucket - Number of tokens to remove from the bucket - True if the requested number of tokens were removed from - the bucket, otherwise false - + - Remove a given number of tokens from the bucket - Number of tokens to remove from the bucket - True if tokens were added to the bucket - during this call, otherwise false - True if the requested number of tokens were removed from - the bucket, otherwise false - + - Add tokens to the bucket over time. The number of tokens added each - call depends on the length of time that has passed since the last - call to Drip - True if tokens were added to the bucket, otherwise false - + - The parent bucket of this bucket, or null if this bucket has no - parent. The parent bucket will limit the aggregate bandwidth of all - of its children buckets + Sound flags for sounds attached to primitives - + - Maximum burst rate in bytes per second. This is the maximum number - of tokens that can accumulate in the bucket at any one time - + - The speed limit of this bucket in bytes per second. This is the - number of tokens that are added to the bucket per second - Tokens are added to the bucket any time - is called, at the granularity of - the system tick interval (typically around 15-22ms) - + - The number of bytes that can be sent at this moment. This is the - current number of tokens in the bucket - If this bucket has a parent bucket that does not have - enough tokens for a request, will - return false regardless of the content of this bucket - + - Same as Queue except Dequeue function blocks until there is an object to return. - Note: This class does not need to be synchronized - + - Create new BlockingQueue. - The System.Collections.ICollection to copy elements from - + - Create new BlockingQueue. - The initial number of elements that the queue can contain - + - Create new BlockingQueue. - + - BlockingQueue Destructor (Close queue, resume any waiting thread). + Material type for a primitive - + - Remove all objects from the Queue. - + - Remove all objects from the Queue, resume all dequeue threads. - + - Removes and returns the object at the beginning of the Queue. - Object in queue. - + - Removes and returns the object at the beginning of the Queue. - time to wait before returning - Object in queue. - + - Removes and returns the object at the beginning of the Queue. - time to wait before returning (in milliseconds) - Object in queue. - + - Adds an object to the end of the Queue - Object to put in queue - + - Open Queue. - + - Gets flag indicating if queue has been closed. - + - Determines the appropriate events to set, leaves the locks, and sets the events. + Used in a helper function to roughly determine prim shape - + - A routine for lazily creating a event outside the lock (so if errors - happen they are outside the lock and that we don't do much work - while holding a spin lock). If all goes well, reenter the lock and - set 'waitEvent' - - - - - Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. - Before the wait 'numWaiters' is incremented and is restored before leaving this routine. + Extra parameters for primitives, these flags are for features that have + been added after the original ObjectFlags that has all eight bits + reserved already - - Used for converting degrees to radians + + Whether this object has flexible parameters - - Used for converting radians to degrees + + Whether this object has light parameters - - - Convert the first two bytes starting in the byte array in - little endian ordering to a signed short integer - - An array two bytes or longer - A signed short integer, will be zero if a short can't be - read at the given position + + Whether this object is a sculpted prim - + - Convert the first two bytes starting at the given position in - little endian ordering to a signed short integer - An array two bytes or longer - Position in the array to start reading - A signed short integer, will be zero if a short can't be - read at the given position - + - Convert the first four bytes starting at the given position in - little endian ordering to a signed integer - An array four bytes or longer - Position to start reading the int from - A signed integer, will be zero if an int can't be read - at the given position - + - Convert the first four bytes of the given array in little endian - ordering to a signed integer - An array four bytes or longer - A signed integer, will be zero if the array contains - less than four bytes - + - Convert the first eight bytes of the given array in little endian - ordering to a signed long integer - An array eight bytes or longer - A signed long integer, will be zero if the array contains - less than eight bytes - + - Convert the first eight bytes starting at the given position in - little endian ordering to a signed long integer - An array eight bytes or longer - Position to start reading the long from - A signed long integer, will be zero if a long can't be read - at the given position - + - Convert the first two bytes starting at the given position in - little endian ordering to an unsigned short - Byte array containing the ushort - Position to start reading the ushort from - An unsigned short, will be zero if a ushort can't be read - at the given position - + - Convert two bytes in little endian ordering to an unsigned short - Byte array containing the ushort - An unsigned short, will be zero if a ushort can't be - read - + - Convert the first four bytes starting at the given position in - little endian ordering to an unsigned integer - Byte array containing the uint - Position to start reading the uint from - An unsigned integer, will be zero if a uint can't be read - at the given position - + - Convert the first four bytes of the given array in little endian - ordering to an unsigned integer - An array four bytes or longer - An unsigned integer, will be zero if the array contains - less than four bytes - + - Convert the first eight bytes of the given array in little endian - ordering to an unsigned 64-bit integer - An array eight bytes or longer - An unsigned 64-bit integer, will be zero if the array - contains less than eight bytes - + - Convert four bytes in little endian ordering to a floating point - value - Byte array containing a little ending floating - point value - Starting position of the floating point value in - the byte array - Single precision value - + - Convert an integer to a byte array in little endian format - The integer to convert - A four byte little endian array - + - Convert an integer to a byte array in big endian format - The integer to convert - A four byte big endian array - + - Convert a 64-bit integer to a byte array in little endian format - The value to convert - An 8 byte little endian array - + - Convert a 64-bit unsigned integer to a byte array in little endian - format - The value to convert - An 8 byte little endian array - + - Convert a floating point value to four bytes in little endian - ordering - A floating point value - A four byte array containing the value in little endian - ordering - + - Converts an unsigned integer to a hexadecimal string - An unsigned integer to convert to a string - A hexadecimal string 10 characters long - 0x7fffffff - + - Convert a variable length UTF8 byte array to a string - The UTF8 encoded byte array to convert - The decoded string - + - Converts a byte array to a string containing hexadecimal characters - The byte array to convert to a string - The name of the field to prepend to each - line of the string - A string containing hexadecimal characters on multiple - lines. Each line is prepended with the field name - + - Converts a byte array to a string containing hexadecimal characters - The byte array to convert to a string - Number of bytes in the array to parse - A string to prepend to each line of the hex - dump - A string containing hexadecimal characters on multiple - lines. Each line is prepended with the field name - + - Convert a string to a UTF8 encoded byte array - The string to convert - A null-terminated UTF8 byte array - + - Converts a string containing hexadecimal characters to a byte array - String containing hexadecimal characters - If true, gracefully handles null, empty and - uneven strings as well as stripping unconvertable characters - The converted byte array - + - Returns true is c is a hexadecimal digit (A-F, a-f, 0-9) - Character to test - true if hex digit, false if not - + - Converts 1 or 2 character string into equivalant byte value - 1 or 2 character string - byte - + - Convert a float value to a byte given a minimum and maximum range - Value to convert to a byte - Minimum value range - Maximum value range - A single byte representing the original float value - + - Convert a byte to a float value given a minimum and maximum range - Byte array to get the byte from - Position in the byte array the desired byte is at - Minimum value range - Maximum value range - A float value inclusively between lower and upper - + - Convert a byte to a float value given a minimum and maximum range - Byte to convert to a float value - Minimum value range - Maximum value range - A float value inclusively between lower and upper - + - Attempts to parse a floating point value from a string, using an - EN-US number format - String to parse - Resulting floating point number - True if the parse was successful, otherwise false - + - Attempts to parse a floating point value from a string, using an - EN-US number format - String to parse - Resulting floating point number - True if the parse was successful, otherwise false - + - Tries to parse an unsigned 32-bit integer from a hexadecimal string - String to parse - Resulting integer - True if the parse was successful, otherwise false - + - Returns text specified in EnumInfo attribute of the enumerator - To add the text use [EnumInfo(Text = "Some nice text here")] before declaration - of enum values - Enum value - Text representation of the enum - + - Takes an AssetType and returns the string representation + Attachment points for objects on avatar bodies - The source - The string version of the AssetType + + Both InventoryObject and InventoryAttachment types can be attached + - - - Translate a string name of an AssetType into the proper Type - - A string containing the AssetType name - The AssetType which matches the string name, or AssetType.Unknown if no match was found + + Right hand if object was not previously attached - - - Convert an InventoryType to a string - - The to convert - A string representation of the source + + Chest - - - Convert a string into a valid InventoryType - - A string representation of the InventoryType to convert - A InventoryType object which matched the type + + Skull - - - Convert a SaleType to a string - - The to convert - A string representation of the source + + Left shoulder - - - Convert a string into a valid SaleType - - A string representation of the SaleType to convert - A SaleType object which matched the type + + Right shoulder - - - Converts a string used in LLSD to AttachmentPoint type - - String representation of AttachmentPoint to convert - AttachmentPoint enum + + Left hand - - - Copy a byte array - - Byte array to copy - A copy of the given byte array + + Right hand - - - Packs to 32-bit unsigned integers in to a 64-bit unsigned integer - - The left-hand (or X) value - The right-hand (or Y) value - A 64-bit integer containing the two 32-bit input values + + Left foot - - - Unpacks two 32-bit unsigned integers from a 64-bit unsigned integer - - The 64-bit input integer - The left-hand (or X) output value - The right-hand (or Y) output value + + Right foot - - - Convert an IP address object to an unsigned 32-bit integer - - IP address to convert - 32-bit unsigned integer holding the IP address bits + + Spine - - - Gets a unix timestamp for the current time - - An unsigned integer representing a unix timestamp for now + + Pelvis - - - Convert a UNIX timestamp to a native DateTime object - - An unsigned integer representing a UNIX - timestamp - A DateTime object containing the same time specified in - the given timestamp + + Mouth - - - Convert a UNIX timestamp to a native DateTime object - - A signed integer representing a UNIX - timestamp - A DateTime object containing the same time specified in - the given timestamp + + Chin - - - Convert a native DateTime object to a UNIX timestamp - - A DateTime object you want to convert to a - timestamp - An unsigned integer representing a UNIX timestamp + + Left ear - - - Swap two values - - Type of the values to swap - First value - Second value + + Right ear - - - Try to parse an enumeration value from a string - - Enumeration type - String value to parse - Enumeration value on success - True if the parsing succeeded, otherwise false + + Left eyeball - - - Swaps the high and low words in a byte. Converts aaaabbbb to bbbbaaaa - - Byte to swap the words in - Byte value with the words swapped + + Right eyeball - - - Attempts to convert a string representation of a hostname or IP - address to a - - Hostname to convert to an IPAddress - Converted IP address object, or null if the conversion - failed + + Nose - - Provide a single instance of the CultureInfo class to - help parsing in situations where the grid assumes an en-us - culture + + Right upper arm - - UNIX epoch in DateTime format + + Right forearm - - Provide a single instance of the MD5 class to avoid making - duplicate copies and handle thread safety + + Left upper arm - - Provide a single instance of the SHA-1 class to avoid - making duplicate copies and handle thread safety + + Left forearm - - Provide a single instance of a random number generator - to avoid making duplicate copies and handle thread safety + + Right hip - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper + + Right upper leg - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper + + Right lower leg - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper + + Left hip - - - Round a floating-point value to the nearest integer - - Floating point number to round - Integer + + Left upper leg - - - Test if a single precision float is a finite number - + + Left lower leg - - - Test if a double precision float is a finite number - + + Stomach - - - Get the distance between two floating-point values - - First value - Second value - The distance between the two values + + Left pectoral - - - Compute the MD5 hash for a byte array - - Byte array to compute the hash for - MD5 hash of the input data + + Right pectoral - - - Compute the SHA1 hash for a byte array - - Byte array to compute the hash for - SHA1 hash of the input data + + HUD Center position 2 - - - Calculate the SHA1 hash of a given string - - The string to hash - The SHA1 hash as a string + + HUD Top-right - - - Compute the SHA256 hash for a byte array - - Byte array to compute the hash for - SHA256 hash of the input data + + HUD Top - - - Calculate the SHA256 hash of a given string - - The string to hash - The SHA256 hash as a string + + HUD Top-left - - - Calculate the MD5 hash of a given string - - The password to hash - An MD5 hash in string format, with $1$ prepended + + HUD Center - - - Calculate the MD5 hash of a given string - - The string to hash - The MD5 hash as a string + + HUD Bottom-left - - - Generate a random double precision floating point value - - Random value of type double + + HUD Bottom - - - Get the current running platform - - Enumeration of the current platform we are running on + + HUD Bottom-right - + - Get the current running runtime + Tree foliage types - Enumeration of the current runtime we are running on - - - Operating system - + + Pine1 tree - - Unknown + + Oak tree - - Microsoft Windows + + Tropical Bush1 - - Microsoft Windows CE + + Palm1 tree - - Linux + + Dogwood tree - - Apple OSX + + Tropical Bush2 - - - Runtime platform - + + Palm2 tree - - .NET runtime + + Cypress1 tree - - Mono runtime: http://www.mono-project.com/ + + Cypress2 tree - - - An 8-bit color structure including an alpha channel - + + Pine2 tree - - Red + + Plumeria - - Green + + Winter pinetree1 - - Blue + + Winter Aspen tree - - Alpha + + Winter pinetree2 - - - - - - - - + + Eucalyptus tree - - - Builds a color from a byte array - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 + + Fern - - - Returns the raw bytes for this vector - - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - A 16 byte array containing R, G, B, and A + + Eelgrass - - - Copy constructor - - Color to copy + + Sea Sword - + + Kelp1 plant + + + Beach grass + + + Kelp2 plant + + - IComparable.CompareTo implementation + Grass foliage types - Sorting ends up like this: |--Grayscale--||--Color--|. - Alpha is only used when the colors are otherwise equivalent - + - Builds a color from a byte array - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - + - Writes the raw bytes for this color to a byte array - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - + - Serializes this color into four bytes in a byte array - Destination byte array - Position in the destination array to start - writing. Must be at least 4 bytes before the end of the array - True to invert the output (1.0 becomes 0 - instead of 255) - + - Writes the raw bytes for this color to a byte array - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - + - Ensures that values are in range 0-1 - + - Create an RGB color from a hue, saturation, value combination - Hue - Saturation - Value - An fully opaque RGB color (alpha is 1.0) - + - Performs linear interpolation between two colors + Action associated with clicking on an object - Color to start at - Color to end at - Amount to interpolate - The interpolated color - - A Color4 with zero RGB values and fully opaque (alpha 1.0) + + Touch object - - A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) + + Sit on object + + + Purchase object or contents + + + Pay the object + + + Open task inventory + + + Play parcel media + + + Open parcel media For thread safety @@ -1319,57 +1104,70 @@ Purges expired objects from the cache. Called automatically by the purge timer. - + - Provides helper methods for parallelizing loops + A thread-safe lockless queue that supports multiple readers and + multiple writers - + - Executes a for loop in which iterations may run in parallel + Constructor - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - + - Executes a for loop in which iterations may run in parallel + Provides a node container for data in a singly linked list - The number of concurrent execution threads to run - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - + - Executes a foreach loop in which iterations may run in parallel + Constructor - Object type that the collection wraps - An enumerable collection to iterate over - Method body to run for each object in the collection - + - Executes a foreach loop in which iterations may run in parallel + Constructor - Object type that the collection wraps - The number of concurrent execution threads to run - An enumerable collection to iterate over - Method body to run for each object in the collection - + + Pointer to the next node in list + + + The data contained by the node + + + Queue head + + + Queue tail + + + Queue item count + + + Gets the current number of items in the queue. Since this + is a lockless collection this value should be treated as a close + estimate + + - Executes a series of tasks in parallel + Enqueue an item - A series of method bodies to execute + Item to enqeue - + - Executes a series of tasks in parallel + Try to dequeue an item - The number of concurrent execution threads to run - A series of method bodies to execute + Dequeued item if the dequeue was successful + True if an item was successfully deqeued, otherwise false + + + A 4x4 matrix containing all zeroes + + + A 4x4 identity matrix @@ -1399,673 +1197,1107 @@ A string representation of the vector - - A 4x4 matrix containing all zeroes - - - A 4x4 identity matrix - - + - Identifier code for primitive types + Provides helper methods for parallelizing loops - - None - - - A Primitive - - - A Avatar + + + Executes a for loop in which iterations may run in parallel + + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop - - Linden grass + + + Executes a for loop in which iterations may run in parallel + + The number of concurrent execution threads to run + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop - - Linden tree + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + An enumerable collection to iterate over + Method body to run for each object in the collection - - A primitive that acts as the source for a particle stream + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + The number of concurrent execution threads to run + An enumerable collection to iterate over + Method body to run for each object in the collection - - A Linden tree + + + Executes a series of tasks in parallel + + A series of method bodies to execute - + - Primary parameters for primitives such as Physics Enabled or Phantom + Executes a series of tasks in parallel + The number of concurrent execution threads to run + A series of method bodies to execute - - Deprecated + + + Build a quaternion from normalized float values + + X value from -1.0 to 1.0 + Y value from -1.0 to 1.0 + Z value from -1.0 to 1.0 - - Whether physics are enabled for this object + + + Constructor, builds a quaternion object from a byte array + + Byte array containing four four-byte floats + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. - - + + X value - - + + Y value - - + + Z value - - + + W value - - + + A quaternion with a value of 0,0,0,1 - - + + + Normalizes the quaternion + - - Whether this object contains an active touch script + + + Builds a quaternion object from a byte array + + The source byte array + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. - - + + + Normalize this quaternion and serialize it to a byte array + + A 12 byte array containing normalized X, Y, and Z floating + point values in order using little endian byte ordering - - Whether this object can receive payments + + + Writes the raw bytes for this quaternion to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array - - Whether this object is phantom (no collisions) + + + Convert this quaternion to euler angles + + X euler angle + Y euler angle + Z euler angle - - + + + Convert this quaternion to an angle around an axis + + Unit vector describing the axis + Angle around the axis, in radians - - + + + Returns the conjugate (spatial inverse) of a quaternion + - - + + + Build a quaternion from an axis and an angle of rotation around + that axis + - - + + + Build a quaternion from an axis and an angle of rotation around + that axis + + Axis of rotation + Angle of rotation - - Deprecated + + + Creates a quaternion from a vector containing roll, pitch, and yaw + in radians + + Vector representation of the euler angles in + radians + Quaternion representation of the euler angles - - + + + Creates a quaternion from roll, pitch, and yaw euler angles in + radians + + X angle in radians + Y angle in radians + Z angle in radians + Quaternion representation of the euler angles - - + + + Conjugates and renormalizes a vector + - - + + + Spherical linear interpolation between two quaternions + - - Deprecated + + + Get a string representation of the quaternion elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the quaternion - - + + + Determines the appropriate events to set, leaves the locks, and sets the events. + - - - - - - - - - - - Server flag, will not be sent to clients. Specifies that - the object is destroyed when it touches a simulator edge - - - Server flag, will not be sent to clients. Specifies that - the object will be returned to the owner's inventory when it - touches a simulator edge - - - Server flag, will not be sent to clients. - - - Server flag, will not be sent to client. Specifies that - the object is hovering/flying - - - - - - + + + A routine for lazily creating a event outside the lock (so if errors + happen they are outside the lock and that we don't do much work + while holding a spin lock). If all goes well, reenter the lock and + set 'waitEvent' + - - + + + Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. + Before the wait 'numWaiters' is incremented and is restored before leaving this routine. + - - + + + A hierarchical token bucket for bandwidth throttling. See + http://en.wikipedia.org/wiki/Token_bucket for more information + - + - Sound flags for sounds attached to primitives + Default constructor + Parent bucket if this is a child bucket, or + null if this is a root bucket + Maximum size of the bucket in bytes, or + zero if this bucket has no maximum capacity + Rate that the bucket fills, in bytes per + second. If zero, the bucket always remains full - - + + Parent bucket to this bucket, or null if this is a root + bucket - - + + Size of the bucket in bytes. If zero, the bucket has + infinite capacity - - + + Rate that the bucket fills, in bytes per millisecond. If + zero, the bucket always remains full - - + + Number of tokens currently in the bucket - - + + Time of the last drip, in system ticks - - + + + The parent bucket of this bucket, or null if this bucket has no + parent. The parent bucket will limit the aggregate bandwidth of all + of its children buckets + - - + + + Maximum burst rate in bytes per second. This is the maximum number + of tokens that can accumulate in the bucket at any one time + - + - Material type for a primitive + The speed limit of this bucket in bytes per second. This is the + number of tokens that are added to the bucket per second + Tokens are added to the bucket any time + is called, at the granularity of + the system tick interval (typically around 15-22ms) - - + + + The number of bytes that can be sent at this moment. This is the + current number of tokens in the bucket + If this bucket has a parent bucket that does not have + enough tokens for a request, will + return false regardless of the content of this bucket - - + + + Remove a given number of tokens from the bucket + + Number of tokens to remove from the bucket + True if the requested number of tokens were removed from + the bucket, otherwise false - - + + + Remove a given number of tokens from the bucket + + Number of tokens to remove from the bucket + True if tokens were added to the bucket + during this call, otherwise false + True if the requested number of tokens were removed from + the bucket, otherwise false - - + + + Add tokens to the bucket over time. The number of tokens added each + call depends on the length of time that has passed since the last + call to Drip + + True if tokens were added to the bucket, otherwise false - - + + + A 128-bit Universally Unique Identifier, used throughout the Second + Life networking protocol + - - + + + Constructor that takes a string UUID representation + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") - - + + + Constructor that takes a System.Guid object + + A Guid object that contains the unique identifier + to be represented by this UUID - - + + + Constructor that takes a byte array containing a UUID + + Byte array containing a 16 byte UUID + Beginning offset in the array - + - Used in a helper function to roughly determine prim shape + Constructor that takes an unsigned 64-bit unsigned integer to + convert to a UUID + 64-bit unsigned integer to convert to a UUID - + - Extra parameters for primitives, these flags are for features that have - been added after the original ObjectFlags that has all eight bits - reserved already + Copy constructor + UUID to copy - - Whether this object has flexible parameters + + The System.Guid object this struct wraps around - - Whether this object has light parameters + + An UUID with a value of all zeroes - - Whether this object is a sculpted prim + + A cache of UUID.Zero as a string to optimize a common path - + - + IComparable.CompareTo implementation - - - - - - - - + + + Assigns this UUID from 16 bytes out of a byte array + + Byte array containing the UUID to assign this UUID to + Starting position of the UUID in the byte array - + - + Returns a copy of the raw bytes for this UUID + A 16 byte array containing this UUID - - + + + Writes the raw bytes for this UUID to a byte array + + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array - - + + + Calculate an LLCRC (cyclic redundancy check) for this UUID + + The CRC checksum for this UUID - - + + + Create a 64-bit integer representation from the second half of this UUID + + An integer created from the last eight bytes of this UUID - - + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") - - + + + Generate a UUID from a string + + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + Will contain the parsed UUID if successful, + otherwise null + True if the string was successfully parse, otherwise false + UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) - - + + + Combine two UUIDs together by taking the MD5 hash of a byte array + containing both UUIDs + + First UUID to combine + Second UUID to combine + The UUID product of the combination - - + + + + + - - + + + Return a hash code for this UUID, used by .NET for hash tables + + An integer composed of all the UUID bytes XORed together - + - + Comparison function + An object to compare to this UUID + True if the object is a UUID and both UUIDs are equal - - + + + Comparison function + + UUID to compare to + True if the UUIDs are equal, otherwise false - - - - - - - - - - - - - - - - - - - - - - - - - + - + Get a hyphenated string representation of this UUID + A string representation of this UUID, lowercase and + with hyphens + 11f8aa9c-b071-4242-836b-13b7abe0d489 - - - - - - - - - - - - - - - - - - - - - - - - Attachment points for objects on avatar bodies - - - Both InventoryObject and InventoryAttachment types can be attached - - - - Right hand if object was not previously attached - - - Chest + + + Equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are byte for byte equal, otherwise false - - Skull + + + Not equals operator + + First UUID for comparison + Second UUID for comparison + True if the UUIDs are not equal, otherwise true - - Left shoulder + + + XOR operator + + First UUID + Second UUID + A UUID that is a XOR combination of the two input UUIDs - - Right shoulder + + + String typecasting operator + + A UUID in string form. Case insensitive, + hyphenated or non-hyphenated + A UUID built from the string representation - - Left hand + + + Operating system + - - Right hand + + Unknown - - Left foot + + Microsoft Windows - - Right foot + + Microsoft Windows CE - - Spine + + Linux - - Pelvis + + Apple OSX - - Mouth + + + Runtime platform + - - Chin + + .NET runtime - - Left ear + + Mono runtime: http://www.mono-project.com/ - - Right ear + + Used for converting degrees to radians - - Left eyeball + + Used for converting radians to degrees - - Right eyeball + + Provide a single instance of the CultureInfo class to + help parsing in situations where the grid assumes an en-us + culture - - Nose + + UNIX epoch in DateTime format - - Right upper arm + + Provide a single instance of the MD5 class to avoid making + duplicate copies and handle thread safety - - Right forearm + + Provide a single instance of the SHA-1 class to avoid + making duplicate copies and handle thread safety - - Left upper arm + + Provide a single instance of a random number generator + to avoid making duplicate copies and handle thread safety - - Left forearm + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper - - Right hip + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper - - Right upper leg + + + Clamp a given value between a range + + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper - - Right lower leg + + + Round a floating-point value to the nearest integer + + Floating point number to round + Integer - - Left hip + + + Test if a single precision float is a finite number + - - Left upper leg + + + Test if a double precision float is a finite number + - - Left lower leg + + + Get the distance between two floating-point values + + First value + Second value + The distance between the two values - - Stomach + + + Compute the MD5 hash for a byte array + + Byte array to compute the hash for + MD5 hash of the input data - - Left pectoral + + + Compute the SHA1 hash for a byte array + + Byte array to compute the hash for + SHA1 hash of the input data - - Right pectoral + + + Calculate the SHA1 hash of a given string + + The string to hash + The SHA1 hash as a string - - HUD Center position 2 + + + Compute the SHA256 hash for a byte array + + Byte array to compute the hash for + SHA256 hash of the input data - - HUD Top-right + + + Calculate the SHA256 hash of a given string + + The string to hash + The SHA256 hash as a string - - HUD Top + + + Calculate the MD5 hash of a given string + + The password to hash + An MD5 hash in string format, with $1$ prepended - - HUD Top-left + + + Calculate the MD5 hash of a given string + + The string to hash + The MD5 hash as a string - - HUD Center + + + Generate a random double precision floating point value + + Random value of type double - - HUD Bottom-left + + + Get the current running platform + + Enumeration of the current platform we are running on - - HUD Bottom + + + Get the current running runtime + + Enumeration of the current runtime we are running on - - HUD Bottom-right + + + Convert the first two bytes starting in the byte array in + little endian ordering to a signed short integer + + An array two bytes or longer + A signed short integer, will be zero if a short can't be + read at the given position - + - Tree foliage types + Convert the first two bytes starting at the given position in + little endian ordering to a signed short integer + An array two bytes or longer + Position in the array to start reading + A signed short integer, will be zero if a short can't be + read at the given position - - Pine1 tree + + + Convert the first four bytes starting at the given position in + little endian ordering to a signed integer + + An array four bytes or longer + Position to start reading the int from + A signed integer, will be zero if an int can't be read + at the given position - - Oak tree + + + Convert the first four bytes of the given array in little endian + ordering to a signed integer + + An array four bytes or longer + A signed integer, will be zero if the array contains + less than four bytes - - Tropical Bush1 + + + Convert the first eight bytes of the given array in little endian + ordering to a signed long integer + + An array eight bytes or longer + A signed long integer, will be zero if the array contains + less than eight bytes - - Palm1 tree + + + Convert the first eight bytes starting at the given position in + little endian ordering to a signed long integer + + An array eight bytes or longer + Position to start reading the long from + A signed long integer, will be zero if a long can't be read + at the given position - - Dogwood tree + + + Convert the first two bytes starting at the given position in + little endian ordering to an unsigned short + + Byte array containing the ushort + Position to start reading the ushort from + An unsigned short, will be zero if a ushort can't be read + at the given position - - Tropical Bush2 + + + Convert two bytes in little endian ordering to an unsigned short + + Byte array containing the ushort + An unsigned short, will be zero if a ushort can't be + read - - Palm2 tree + + + Convert the first four bytes starting at the given position in + little endian ordering to an unsigned integer + + Byte array containing the uint + Position to start reading the uint from + An unsigned integer, will be zero if a uint can't be read + at the given position - - Cypress1 tree + + + Convert the first four bytes of the given array in little endian + ordering to an unsigned integer + + An array four bytes or longer + An unsigned integer, will be zero if the array contains + less than four bytes - - Cypress2 tree + + + Convert the first eight bytes of the given array in little endian + ordering to an unsigned 64-bit integer + + An array eight bytes or longer + An unsigned 64-bit integer, will be zero if the array + contains less than eight bytes - - Pine2 tree + + + Convert four bytes in little endian ordering to a floating point + value + + Byte array containing a little ending floating + point value + Starting position of the floating point value in + the byte array + Single precision value - - Plumeria + + + Convert an integer to a byte array in little endian format + + The integer to convert + A four byte little endian array - - Winter pinetree1 + + + Convert an integer to a byte array in big endian format + + The integer to convert + A four byte big endian array - - Winter Aspen tree + + + Convert a 64-bit integer to a byte array in little endian format + + The value to convert + An 8 byte little endian array - - Winter pinetree2 + + + Convert a 64-bit unsigned integer to a byte array in little endian + format + + The value to convert + An 8 byte little endian array - - Eucalyptus tree + + + Convert a floating point value to four bytes in little endian + ordering + + A floating point value + A four byte array containing the value in little endian + ordering - - Fern + + + Converts an unsigned integer to a hexadecimal string + + An unsigned integer to convert to a string + A hexadecimal string 10 characters long + 0x7fffffff - - Eelgrass + + + Convert a variable length UTF8 byte array to a string + + The UTF8 encoded byte array to convert + The decoded string - - Sea Sword + + + Converts a byte array to a string containing hexadecimal characters + + The byte array to convert to a string + The name of the field to prepend to each + line of the string + A string containing hexadecimal characters on multiple + lines. Each line is prepended with the field name - - Kelp1 plant + + + Converts a byte array to a string containing hexadecimal characters + + The byte array to convert to a string + Number of bytes in the array to parse + A string to prepend to each line of the hex + dump + A string containing hexadecimal characters on multiple + lines. Each line is prepended with the field name - - Beach grass + + + Convert a string to a UTF8 encoded byte array + + The string to convert + A null-terminated UTF8 byte array - - Kelp2 plant + + + Converts a string containing hexadecimal characters to a byte array + + String containing hexadecimal characters + If true, gracefully handles null, empty and + uneven strings as well as stripping unconvertable characters + The converted byte array - + - Grass foliage types + Returns true is c is a hexadecimal digit (A-F, a-f, 0-9) + Character to test + true if hex digit, false if not - - + + + Converts 1 or 2 character string into equivalant byte value + + 1 or 2 character string + byte - - + + + Convert a float value to a byte given a minimum and maximum range + + Value to convert to a byte + Minimum value range + Maximum value range + A single byte representing the original float value - - + + + Convert a byte to a float value given a minimum and maximum range + + Byte array to get the byte from + Position in the byte array the desired byte is at + Minimum value range + Maximum value range + A float value inclusively between lower and upper - - + + + Convert a byte to a float value given a minimum and maximum range + + Byte to convert to a float value + Minimum value range + Maximum value range + A float value inclusively between lower and upper - - + + + Attempts to parse a floating point value from a string, using an + EN-US number format + + String to parse + Resulting floating point number + True if the parse was successful, otherwise false - - + + + Attempts to parse a floating point value from a string, using an + EN-US number format + + String to parse + Resulting floating point number + True if the parse was successful, otherwise false - + - Action associated with clicking on an object + Tries to parse an unsigned 32-bit integer from a hexadecimal string + String to parse + Resulting integer + True if the parse was successful, otherwise false - - Touch object + + + Returns text specified in EnumInfo attribute of the enumerator + To add the text use [EnumInfo(Text = "Some nice text here")] before declaration + of enum values + + Enum value + Text representation of the enum - - Sit on object + + + Takes an AssetType and returns the string representation + + The source + The string version of the AssetType - - Purchase object or contents + + + Translate a string name of an AssetType into the proper Type + + A string containing the AssetType name + The AssetType which matches the string name, or AssetType.Unknown if no match was found - - Pay the object + + + Convert an InventoryType to a string + + The to convert + A string representation of the source - - Open task inventory + + + Convert a string into a valid InventoryType + + A string representation of the InventoryType to convert + A InventoryType object which matched the type - - Play parcel media + + + Convert a SaleType to a string + + The to convert + A string representation of the source - - Open parcel media + + + Convert a string into a valid SaleType + + A string representation of the SaleType to convert + A SaleType object which matched the type - - X value + + + Converts a string used in LLSD to AttachmentPoint type + + String representation of AttachmentPoint to convert + AttachmentPoint enum - - Y value + + + Copy a byte array + + Byte array to copy + A copy of the given byte array - - Z value + + + Packs to 32-bit unsigned integers in to a 64-bit unsigned integer + + The left-hand (or X) value + The right-hand (or Y) value + A 64-bit integer containing the two 32-bit input values - - W value + + + Unpacks two 32-bit unsigned integers from a 64-bit unsigned integer + + The 64-bit input integer + The left-hand (or X) output value + The right-hand (or Y) output value - + - Constructor, builds a vector from a byte array + Convert an IP address object to an unsigned 32-bit integer - Byte array containing four four-byte floats - Beginning position in the byte array + IP address to convert + 32-bit unsigned integer holding the IP address bits - + - Test if this vector is equal to another vector, within a given - tolerance range + Gets a unix timestamp for the current time - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false + An unsigned integer representing a unix timestamp for now - + - IComparable.CompareTo implementation + Convert a UNIX timestamp to a native DateTime object + An unsigned integer representing a UNIX + timestamp + A DateTime object containing the same time specified in + the given timestamp - + - Test if this vector is composed of all finite numbers + Convert a UNIX timestamp to a native DateTime object + A signed integer representing a UNIX + timestamp + A DateTime object containing the same time specified in + the given timestamp - + - Builds a vector from a byte array + Convert a native DateTime object to a UNIX timestamp - Byte array containing a 16 byte vector - Beginning position in the byte array + A DateTime object you want to convert to a + timestamp + An unsigned integer representing a UNIX timestamp - + - Returns the raw bytes for this vector + Swap two values - A 16 byte array containing X, Y, Z, and W + Type of the values to swap + First value + Second value - + - Writes the raw bytes for this vector to a byte array + Try to parse an enumeration value from a string - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array + Enumeration type + String value to parse + Enumeration value on success + True if the parsing succeeded, otherwise false - + - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only + Swaps the high and low words in a byte. Converts aaaabbbb to bbbbaaaa - Raw string representation of the vector - - - A vector with a value of 0,0,0,0 - - - A vector with a value of 1,1,1,1 - - - A vector with a value of 1,0,0,0 - - - A vector with a value of 0,1,0,0 - - - A vector with a value of 0,0,1,0 + Byte to swap the words in + Byte value with the words swapped - - A vector with a value of 0,0,0,1 + + + Attempts to convert a string representation of a hostname or IP + address to a + Hostname to convert to an IPAddress + Converted IP address object, or null if the conversion + failed - + - A three-dimensional vector with floating-point values + A two-dimensional vector with floating-point values - + X value - + Y value - - Z value + + A vector with a value of 0,0 - - - Constructor, builds a vector from a byte array - - Byte array containing three four-byte floats - Beginning position in the byte array + + A vector with a value of 1,1 - + + A vector with a value of 1,0 + + + A vector with a value of 0,1 + + Test if this vector is equal to another vector, within a given tolerance range @@ -2076,73 +2308,82 @@ True if the magnitude of difference between the two vectors is less than the given tolerance, otherwise false - + - IComparable.CompareTo implementation + Test if this vector is composed of all finite numbers - + - Test if this vector is composed of all finite numbers + IComparable.CompareTo implementation - + Builds a vector from a byte array - Byte array containing a 12 byte vector + Byte array containing two four-byte floats Beginning position in the byte array - + Returns the raw bytes for this vector - A 12 byte array containing X, Y, and Z + An eight-byte array containing X and Y - + Writes the raw bytes for this vector to a byte array Destination byte array Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array + writing. Must be at least 8 bytes before the end of the array - + Parse a vector from a string - A string representation of a 3D vector, enclosed + A string representation of a 2D vector, enclosed in arrow brackets and separated by commas - - - Calculate the rotation between two vectors - - Normalized directional vector (such as 1,0,0 for forward facing) - Normalized target vector - - + Interpolates between two vectors using a cubic equation - + Get a formatted string representation of the vector A string representation of the vector - + Get a string representation of the vector elements with up to three decimal digits and separated by spaces only Raw string representation of the vector - + - Cross product between two vectors + A three-dimensional vector with floating-point values + + + + + Constructor, builds a vector from a byte array + Byte array containing three four-byte floats + Beginning position in the byte array + + + X value + + + Y value + + + Z value A vector with a value of 0,0,0 @@ -2159,87 +2400,7 @@ A unit vector facing up (Z axis), value 0,0,1 - - - A thread-safe lockless queue that supports multiple readers and - multiple writers - - - - Queue head - - - Queue tail - - - Queue item count - - - - Constructor - - - - - Enqueue an item - - Item to enqeue - - - - Try to dequeue an item - - Dequeued item if the dequeue was successful - True if an item was successfully deqeued, otherwise false - - - Gets the current number of items in the queue. Since this - is a lockless collection this value should be treated as a close - estimate - - - - Provides a node container for data in a singly linked list - - - - Pointer to the next node in list - - - The data contained by the node - - - - Constructor - - - - - Constructor - - - - - A three-dimensional vector with doubleing-point values - - - - X value - - - Y value - - - Z value - - - - Constructor, builds a vector from a byte array - - Byte array containing three eight-byte doubles - Beginning position in the byte array - - + Test if this vector is equal to another vector, within a given tolerance range @@ -2250,67 +2411,95 @@ True if the magnitude of difference between the two vectors is less than the given tolerance, otherwise false - + IComparable.CompareTo implementation - + Test if this vector is composed of all finite numbers - + Builds a vector from a byte array - Byte array containing a 24 byte vector + Byte array containing a 12 byte vector Beginning position in the byte array - + Returns the raw bytes for this vector - A 24 byte array containing X, Y, and Z + A 12 byte array containing X, Y, and Z - + Writes the raw bytes for this vector to a byte array Destination byte array Position in the destination array to start - writing. Must be at least 24 bytes before the end of the array + writing. Must be at least 12 bytes before the end of the array - + Parse a vector from a string - A string representation of a 3D vector, enclosed + A string representation of a 3D vector, enclosed in arrow brackets and separated by commas - + + + Calculate the rotation between two vectors + + Normalized directional vector (such as 1,0,0 for forward facing) + Normalized target vector + + Interpolates between two vectors using a cubic equation - + Get a formatted string representation of the vector A string representation of the vector - + Get a string representation of the vector elements with up to three decimal digits and separated by spaces only Raw string representation of the vector - + Cross product between two vectors + + + A three-dimensional vector with doubleing-point values + + + + + Constructor, builds a vector from a byte array + + Byte array containing three eight-byte doubles + Beginning position in the byte array + + + X value + + + Y value + + + Z value + A vector with a value of 0,0,0 @@ -2326,18 +2515,7 @@ A unit vector facing up (Z axis), value of 0,0,1 - - - A two-dimensional vector with floating-point values - - - - X value - - - Y value - - + Test if this vector is equal to another vector, within a given tolerance range @@ -2348,255 +2526,152 @@ True if the magnitude of difference between the two vectors is less than the given tolerance, otherwise false - + - Test if this vector is composed of all finite numbers + IComparable.CompareTo implementation - + - IComparable.CompareTo implementation + Test if this vector is composed of all finite numbers - + Builds a vector from a byte array - Byte array containing two four-byte floats + Byte array containing a 24 byte vector Beginning position in the byte array - + Returns the raw bytes for this vector - An eight-byte array containing X and Y + A 24 byte array containing X, Y, and Z - + Writes the raw bytes for this vector to a byte array Destination byte array Position in the destination array to start - writing. Must be at least 8 bytes before the end of the array + writing. Must be at least 24 bytes before the end of the array - + Parse a vector from a string - A string representation of a 2D vector, enclosed + A string representation of a 3D vector, enclosed in arrow brackets and separated by commas - + Interpolates between two vectors using a cubic equation - + Get a formatted string representation of the vector A string representation of the vector - + Get a string representation of the vector elements with up to three decimal digits and separated by spaces only Raw string representation of the vector - - A vector with a value of 0,0 - - - A vector with a value of 1,1 - - - A vector with a value of 1,0 - - - A vector with a value of 0,1 - - - - A 128-bit Universally Unique Identifier, used throughout the Second - Life networking protocol - - - - The System.Guid object this struct wraps around - - - - Constructor that takes a string UUID representation - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") - - - - Constructor that takes a System.Guid object - - A Guid object that contains the unique identifier - to be represented by this UUID - - - - Constructor that takes a byte array containing a UUID - - Byte array containing a 16 byte UUID - Beginning offset in the array - - - - Constructor that takes an unsigned 64-bit unsigned integer to - convert to a UUID - - 64-bit unsigned integer to convert to a UUID - - + - Copy constructor + Cross product between two vectors - UUID to copy - + - IComparable.CompareTo implementation + Constructor, builds a vector from a byte array + Byte array containing four four-byte floats + Beginning position in the byte array - - - Assigns this UUID from 16 bytes out of a byte array - - Byte array containing the UUID to assign this UUID to - Starting position of the UUID in the byte array + + X value - - - Returns a copy of the raw bytes for this UUID - - A 16 byte array containing this UUID + + Y value - - - Writes the raw bytes for this UUID to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array + + Z value - - - Calculate an LLCRC (cyclic redundancy check) for this UUID - - The CRC checksum for this UUID + + W value - - - Create a 64-bit integer representation from the second half of this UUID - - An integer created from the last eight bytes of this UUID + + A vector with a value of 0,0,0,0 - - - Generate a UUID from a string - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") + + A vector with a value of 1,1,1,1 - - - Generate a UUID from a string - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - Will contain the parsed UUID if successful, - otherwise null - True if the string was successfully parse, otherwise false - UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) + + A vector with a value of 1,0,0,0 - - - Combine two UUIDs together by taking the MD5 hash of a byte array - containing both UUIDs - - First UUID to combine - Second UUID to combine - The UUID product of the combination + + A vector with a value of 0,1,0,0 - - - - - + + A vector with a value of 0,0,1,0 - - - Return a hash code for this UUID, used by .NET for hash tables - - An integer composed of all the UUID bytes XORed together + + A vector with a value of 0,0,0,1 - + - Comparison function + Test if this vector is equal to another vector, within a given + tolerance range - An object to compare to this UUID - True if the object is a UUID and both UUIDs are equal + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false - + - Comparison function + IComparable.CompareTo implementation - UUID to compare to - True if the UUIDs are equal, otherwise false - + - Get a hyphenated string representation of this UUID + Test if this vector is composed of all finite numbers - A string representation of this UUID, lowercase and - with hyphens - 11f8aa9c-b071-4242-836b-13b7abe0d489 - + - Equals operator + Builds a vector from a byte array - First UUID for comparison - Second UUID for comparison - True if the UUIDs are byte for byte equal, otherwise false + Byte array containing a 16 byte vector + Beginning position in the byte array - + - Not equals operator + Returns the raw bytes for this vector - First UUID for comparison - Second UUID for comparison - True if the UUIDs are not equal, otherwise true + A 16 byte array containing X, Y, Z, and W - + - XOR operator + Writes the raw bytes for this vector to a byte array - First UUID - Second UUID - A UUID that is a XOR combination of the two input UUIDs + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array - + - String typecasting operator + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only - A UUID in string form. Case insensitive, - hyphenated or non-hyphenated - A UUID built from the string representation - - - An UUID with a value of all zeroes - - - A cache of UUID.Zero as a string to optimize a common path + Raw string representation of the vector diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index 7ebf45e..b989bad 100644 Binary files a/bin/OpenMetaverseTypes.dll and b/bin/OpenMetaverseTypes.dll differ -- cgit v1.1 From d4ba505c8524c3864099bcbcffdd026ec7f1d46e Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:30 +0100 Subject: Revert "Add the matching PrimMesher.dll" This reverts commit be301c5815ea57f621d565bcc40dfa7ce530162e. --- bin/PrimMesher.dll | Bin 37376 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/PrimMesher.dll diff --git a/bin/PrimMesher.dll b/bin/PrimMesher.dll deleted file mode 100644 index 249e91c..0000000 Binary files a/bin/PrimMesher.dll and /dev/null differ -- cgit v1.1 From f35a88663be33ac3f34465b9f8cb285f52a9422f Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:37 +0100 Subject: Revert "Fix a comment marker" This reverts commit f89dd85f68e3e05c0ca908e5358d935a6ea3a321. --- OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 4cb4aee..c19e6a2 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -1,4 +1,4 @@ -/* + * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * -- cgit v1.1 From 78aea6239d88822d3bd9c1c5b883df9fb2529de7 Mon Sep 17 00:00:00 2001 From: Melanie Date: Mon, 4 Oct 2010 04:25:44 +0100 Subject: Revert "Add linden prim renderer and update libOMV" This reverts commit 766ce9a14146dc9814d488364f5c931d0fa96a17. --- .../LindenUDP/UnackedPacketCollection.cs | 47 +- .../Region/CoreModules/Asset/FlotsamAssetCache.cs | 4 +- .../UserAccounts/UserAccountCache.cs | 4 +- .../SimianUserAccountServiceConnector.cs | 6 +- bin/OpenMetaverse.Rendering.Linden.dll | Bin 40960 -> 0 bytes bin/OpenMetaverse.StructuredData.XML | 398 +- bin/OpenMetaverse.StructuredData.dll | Bin 95232 -> 102400 bytes bin/OpenMetaverse.XML | 36102 +++++++++---------- bin/OpenMetaverse.dll | Bin 1768960 -> 1691648 bytes bin/OpenMetaverse.dll.config | 14 +- bin/OpenMetaverseTypes.XML | 3124 +- bin/OpenMetaverseTypes.dll | Bin 105984 -> 106496 bytes 12 files changed, 19195 insertions(+), 20504 deletions(-) delete mode 100644 bin/OpenMetaverse.Rendering.Linden.dll diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index c19e6a2..e43f7cf 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -1,4 +1,4 @@ - +/* * Copyright (c) Contributors, http://opensimulator.org/ * See CONTRIBUTORS.TXT for a full list of copyright holders. * @@ -139,43 +139,28 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void ProcessQueues() { // Process all the pending adds - OutgoingPacket pendingAdd; - if (m_pendingAdds != null) - { - while (m_pendingAdds.TryDequeue(out pendingAdd)) - { - if (pendingAdd != null && m_packets != null) - { - m_packets[pendingAdd.SequenceNumber] = pendingAdd; - } - } - } - + while (m_pendingAdds.Dequeue(out pendingAdd)) + m_packets[pendingAdd.SequenceNumber] = pendingAdd; + // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; OutgoingPacket ackedPacket; - if (m_pendingRemoves != null) + while (m_pendingRemoves.Dequeue(out pendingRemove)) { - while (m_pendingRemoves.TryDequeue(out pendingRemove)) + if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) { - if (m_pendingRemoves != null && m_packets != null) + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) { - if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) - { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) - { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); - } - } + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); } } } diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 6ed4867..9eaa758 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -252,7 +252,7 @@ namespace Flotsam.RegionModules.AssetCache } else { - m_MemoryCache.AddOrUpdate(key, asset, Double.MaxValue); + m_MemoryCache.AddOrUpdate(key, asset, DateTime.MaxValue); } } } @@ -863,4 +863,4 @@ namespace Flotsam.RegionModules.AssetCache #endregion } -} +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs index e7cfda1..7c12b8c 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs @@ -53,9 +53,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts public void Cache(UUID userID, UserAccount account) { // Cache even null accounts - m_UUIDCache.AddOrUpdate(userID, account, CACHE_EXPIRATION_SECONDS); + m_UUIDCache.AddOrUpdate(userID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); if (account != null) - m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, CACHE_EXPIRATION_SECONDS); + m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); m_log.DebugFormat("[USER CACHE]: cached user {0}", userID); } diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs index 9c150ee..ddd2322 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs @@ -147,7 +147,7 @@ namespace OpenSim.Services.Connectors.SimianGrid if (account == null) { // Store null responses too, to avoid repeated lookups for missing accounts - m_accountCache.AddOrUpdate(userID, null, CACHE_EXPIRATION_SECONDS); + m_accountCache.AddOrUpdate(userID, null, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); } return account; @@ -225,7 +225,7 @@ namespace OpenSim.Services.Connectors.SimianGrid if (success) { // Cache the user account info - m_accountCache.AddOrUpdate(data.PrincipalID, data, CACHE_EXPIRATION_SECONDS); + m_accountCache.AddOrUpdate(data.PrincipalID, data, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); } else { @@ -290,7 +290,7 @@ namespace OpenSim.Services.Connectors.SimianGrid GetFirstLastName(response["Name"].AsString(), out account.FirstName, out account.LastName); // Cache the user account info - m_accountCache.AddOrUpdate(account.PrincipalID, account, CACHE_EXPIRATION_SECONDS); + m_accountCache.AddOrUpdate(account.PrincipalID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); return account; } diff --git a/bin/OpenMetaverse.Rendering.Linden.dll b/bin/OpenMetaverse.Rendering.Linden.dll deleted file mode 100644 index 9642a8d..0000000 Binary files a/bin/OpenMetaverse.Rendering.Linden.dll and /dev/null differ diff --git a/bin/OpenMetaverse.StructuredData.XML b/bin/OpenMetaverse.StructuredData.XML index 927e960..b8f45b1 100644 --- a/bin/OpenMetaverse.StructuredData.XML +++ b/bin/OpenMetaverse.StructuredData.XML @@ -1,363 +1,333 @@ - /home/root/libopenmetaverse/bin/OpenMetaverse.StructuredData + OpenMetaverse.StructuredData - + + - - + - - + - + + + + - + + + + - + + + + - + + + + - + + + + + - + + + + + + - + + + + + - + + + + + - + + + + - + + + + - + + + + - + - Uses reflection to create an SDMap from all of the SD - serializable types in an object + - Class or struct containing serializable types - An SDMap holding the serialized values from the - container object + + - + - Uses reflection to deserialize member variables in an object from - an SDMap + - Reference to an object to fill with deserialized - values - Serialized values to put in the target - object + - + + + + + - + + + + + - + + + + + - + + + + - + + + + - + + + + - + + + + - + + + + - + + + + - + + + + - - - - - + + + + - + + - - - - + + - + + - - - - + + + - + + - - - - + + - + + - - - - - - - - - + + - - - - - - - - - + + - - - - - - - - - + + - - - - - - - - - + + - - - - - - - + + - - - - - - - + + - - - - - - - + + - - - - - - - + + - - - - - - - + + - + + + + + + + + - - - - - + + - - - - - + + Uses reflection to create an SDMap from all of the SD + serializable types in an object - - - - - - + Class or struct containing serializable types + An SDMap holding the serialized values from the + container object - + + Uses reflection to deserialize member variables in an object from + an SDMap - - - - - - - - + Reference to an object to fill with deserialized + values + Serialized values to put in the target + object - + + - - - - - - - + + - - - - - - - + + - - - - - + + - - - - - + + - - - - - + + - - - - - + + - - - - - + + - - - - - + + - - - - - - - + + - - - - diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index 27ccfbc..54681e4 100644 Binary files a/bin/OpenMetaverse.StructuredData.dll and b/bin/OpenMetaverse.StructuredData.dll differ diff --git a/bin/OpenMetaverse.XML b/bin/OpenMetaverse.XML index fa1057a..ca9f359 100644 --- a/bin/OpenMetaverse.XML +++ b/bin/OpenMetaverse.XML @@ -1,5388 +1,5142 @@ - /home/root/libopenmetaverse/bin/OpenMetaverse + OpenMetaverse - + - Permission request flags, asked when a script wants to control an Avatar + Capability to load TGAs to Bitmap - - Placeholder for empty values, shouldn't ever see this + + + Represents a primitive asset + - - Script wants ability to take money from you + + + Base class for all Asset types + - - Script wants to take camera controls for you + + A byte array containing the raw asset data - - Script wants to remap avatars controls + + True if the asset it only stored on the server temporarily - - Script wants to trigger avatar animations - This function is not implemented on the grid + + A unique ID - - Script wants to attach or detach the prim or primset to your avatar + + + Construct a new Asset object + - - Script wants permission to release ownership - This function is not implemented on the grid - The concept of "public" objects does not exist anymore. + + + Construct a new Asset object + + A unique specific to this asset + A byte array containing the raw asset data - - Script wants ability to link/delink with other prims + + + Regenerates the AssetData byte array from the properties + of the derived class. + - - Script wants permission to change joints - This function is not implemented on the grid + + + Decodes the AssetData, placing it in appropriate properties of the derived + class. + + True if the asset decoding succeeded, otherwise false - - Script wants permissions to change permissions - This function is not implemented on the grid + + The assets unique ID - - Script wants to track avatars camera position and rotation + + + The "type" of asset, Notecard, Animation, etc + - - Script wants to control your camera + + Initializes a new instance of an AssetPrim object - + - Special commands used in Instant Messages + - - Indicates a regular IM from another agent + + + + + - - Simple notification box with an OK button + + Override the base classes AssetType - - You've been invited to join a group. + + + Only used internally for XML serialization/deserialization + - - Inventory offer + + + pre-defined built in sounds + - - Accepted inventory offer + + - - Declined inventory offer + + - - Group vote + + - - An object is offering its inventory + + - - Accept an inventory offer from an object + + - - Decline an inventory offer from an object + + - - Unknown + + - - Start a session, or add users to a session + + - - Start a session, but don't prune offline users + + coins - - Start a session with your group + + cash register bell - - Start a session without a calling card (finder or objects) + + - - Send a message to a session + + - - Leave a session + + rubber - - Indicates that the IM is from an object + + plastic - - Sent an IM to a busy user, this is the auto response + + flesh - - Shows the message in the console and chat history + + wood splintering? - - Send a teleport lure + + glass break - - Response sent to the agent which inititiated a teleport invitation + + metal clunk - - Response sent to the agent which inititiated a teleport invitation + + whoosh - - Only useful if you have Linden permissions + + shake - - A placeholder type for future expansion, currently not - used + + - - IM to tell the user to go to an URL + + ding - - IM for help + + - - IM sent automatically on call for help, sends a lure - to each Helper reached + + - - Like an IM but won't go to email + + - - IM from a group officer to all group members + + - - Unknown + + - - Unknown + + - - Accept a group invitation + + - - Decline a group invitation + + - - Unknown + + - - An avatar is offering you friendship + + - - An avatar has accepted your friendship offer + + - - An avatar has declined your friendship offer + + - - Indicates that a user has started typing + + - - Indicates that a user has stopped typing + + - + - Flag in Instant Messages, whether the IM should be delivered to - offline avatars as well + A dictionary containing all pre-defined sounds + A dictionary containing the pre-defined sounds, + where the key is the sounds ID, and the value is a string + containing a name to identify the purpose of the sound - - Only deliver to online avatars - - - If the avatar is offline the message will be held until - they login next, and possibly forwarded to their e-mail account - - + - Conversion type to denote Chat Packet types in an easier-to-understand format + Type of return to use when returning objects from a parcel - - Whisper (5m radius) - - - Normal chat (10/20m radius), what the official viewer typically sends + + - - Shouting! (100m radius) + + Return objects owned by parcel owner - - Event message when an Avatar has begun to type + + Return objects set to group - - Event message when an Avatar has stopped typing + + Return objects not owned by parcel owner or set to group - - Send the message to the debug channel + + Return a specific list of objects on parcel - - Event message when an object uses llOwnerSay - - - Special value to support llRegionSay, never sent to the client + + Return objects that are marked for-sale - + - Identifies the source of a chat message + Blacklist/Whitelist flags used in parcels Access List - - Chat from the grid or simulator - - - Chat from another avatar + + Agent is denied access - - Chat from an object + + Agent is granted access - + + The result of a request for parcel properties - - - + + No matches were found for the request - - - + + Request matched a single parcel - - - + + Request matched multiple parcels - + - Effect type used in ViewerEffect packets + Flags used in the ParcelAccessListRequest packet to specify whether + we want the access list (whitelist), ban list (blacklist), or both - - - + + Request the access list - - - + + Request the ban list - - - + + Request both White and Black lists - + + Sequence ID in ParcelPropertiesReply packets (sent when avatar + tries to cross a parcel border) - - - + + Parcel is currently selected - - - + + Parcel restricted to a group the avatar is not a + member of - - - + + Avatar is banned from the parcel - - Project a beam from a source to a destination, such as - the one used when editing an object + + Parcel is restricted to an access list that the + avatar is not on - - - + + Response to hovering over a parcel - + + The tool to use when modifying terrain levels - - - + + Level the terrain - - Create a swirl of particles around an object + + Raise the terrain - - - + + Lower the terrain - - - + + Smooth the terrain - - Cause an avatar to look at an object + + Add random noise to the terrain - - Cause an avatar to point at an object + + Revert terrain to simulator default - + - The action an avatar is doing when looking at something, used in - ViewerEffect packets for the LookAt effect + The tool size to use when changing terrain levels - - - + + Small - - - + + Medium - - - + + Large - + + Reasons agent is denied access to a parcel on the simulator - - - + + Agent is not denied, access is granted - - - + + Agent is not a member of the group set for the parcel, or which owns the parcel - - Deprecated + + Agent is not on the parcels specific allow list - - - + + Agent is on the parcels ban list - - - + + Unknown - - - + + Agent is not age verified and parcel settings deny access to non age verified avatars - + + Parcel overlay type. This is used primarily for highlighting and + coloring which is why it is a single integer instead of a set of + flags + These values seem to be poorly thought out. The first three + bits represent a single value, not flags. For example Auction (0x05) is + not a combination of OwnedByOther (0x01) and ForSale(0x04). However, + the BorderWest and BorderSouth values are bit flags that get attached + to the value stored in the first three bits. Bits four, five, and six + are unused - - - The action an avatar is doing when pointing at something, used in - ViewerEffect packets for the PointAt effect - + + Public land - - - + + Land is owned by another avatar - - - + + Land is owned by a group - - - + + Land is owned by the current avatar - - - + + Land is for sale - - - Money transaction types - + + Land is being auctioned - - - + + To the west of this area is a parcel border - - - + + To the south of this area is a parcel border - + + Various parcel properties - - - + + No flags set - - - + + Allow avatars to fly (a client-side only restriction) - - - + + Allow foreign scripts to run - - - + + This parcel is for sale - - - + + Allow avatars to create a landmark on this parcel - - - - - - - + + Allows all avatars to edit the terrain on this parcel - - - + + Avatars have health and can take damage on this parcel. + If set, avatars can be killed and sent home here - - - + + Foreign avatars can create objects here - - - + + All objects on this parcel can be purchased - - - + + Access is restricted to a group - - - + + Access is restricted to a whitelist - - - + + Ban blacklist is enabled - - - + + Unknown - - - + + List this parcel in the search directory - - - + + Allow personally owned parcels to be deeded to group - - - + + If Deeded, owner contributes required tier to group parcel is deeded to - - - + + Restrict sounds originating on this parcel to the + parcel boundaries - - - + + Objects on this parcel are sold when the land is + purchsaed - - - + + Allow this parcel to be published on the web - - - + + The information for this parcel is mature content - - - + + The media URL is an HTML page - - - + + The media URL is a raw HTML string - - - + + Restrict foreign object pushes - - - + + Ban all non identified/transacted avatars - - - + + Allow group-owned scripts to run - - - + + Allow object creation by group members or group + objects - - - + + Allow all objects to enter this parcel - - - + + Only allow group and owner objects to enter this parcel - - - + + Voice Enabled on this parcel - - - + + Use Estate Voice channel for Voice on this parcel - - - + + Deny Age Unverified Users - + + Parcel ownership status - - - + + Placeholder - - - + + Parcel is leased (owned) by an avatar or group - - - + + Parcel is in process of being leased (purchased) by an avatar or group - - - + + Parcel has been abandoned back to Governor Linden - + + Category parcel is listed in under search - - - + + No assigned category - - - + + Linden Infohub or public area - - - + + Adult themed area - - - + + Arts and Culture - - - + + Business - - - + + Educational - - - + + Gaming - - - + + Hangout or Club - - - + + Newcomer friendly - - - + + Parks and Nature - - - + + Residential - - - + + Shopping - - - + + Not Used? - - - + + Other - - - + + Not an actual category, only used for queries - + + Type of teleport landing for a parcel - - - + + Unset, simulator default - - - + + Specific landing point set for this parcel - - - + + No landing point set, direct teleports enabled for + this parcel - + + Parcel Media Command used in ParcelMediaCommandMessage - - - - - - - - - - - + + Stop the media stream and go back to the first frame - - - Flags sent when a script takes or releases a control - - NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, + + Pause the media stream (stop playing but stay on current frame) - - No Flags set + + Start the current media stream playing and stop when the end is reached - - Forward (W or up Arrow) + + Start the current media stream playing, + loop to the beginning when the end is reached and continue to play - - Back (S or down arrow) + + Specifies the texture to replace with video + If passing the key of a texture, it must be explicitly typecast as a key, + not just passed within double quotes. - - Move left (shift+A or left arrow) + + Specifies the movie URL (254 characters max) - - Move right (shift+D or right arrow) + + Specifies the time index at which to begin playing - - Up (E or PgUp) + + Specifies a single agent to apply the media command to - - Down (C or PgDown) + + Unloads the stream. While the stop command sets the texture to the first frame of the movie, + unload resets it to the real texture that the movie was replacing. - - Rotate left (A or left arrow) + + Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties + (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. - - Rotate right (D or right arrow) + + Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). + Use "text/html" for HTML. - - Left Mouse Button + + Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). + This might still not be working - - Left Mouse button in MouseLook + + Sets a description for the media being displayed (1.19.1 RC0 and later only). - + - Currently only used to hide your group title + Some information about a parcel of land returned from a DirectoryManager search - - No flags set - - - Hide your group title + + Global Key of record - - - Action state of the avatar, which can currently be typing and - editing - + + Parcel Owners - - - + + Name field of parcel, limited to 128 characters - - - + + Description field of parcel, limited to 256 characters - - - + + Total Square meters of parcel - - - Current teleport status - + + Total area billable as Tier, for group owned land this will be 10% less than ActualArea - - Unknown status + + True of parcel is in Mature simulator - - Teleport initialized + + Grid global X position of parcel - - Teleport in progress + + Grid global Y position of parcel - - Teleport failed + + Grid global Z position of parcel (not used) - - Teleport completed + + Name of simulator parcel is located in - - Teleport cancelled + + Texture of parcels display picture - - - + + Float representing calculated traffic based on time spent on parcel by avatars - - No flags set, or teleport failed + + Sale price of parcel (not used) - - Set when newbie leaves help island for first time + + Auction ID of parcel - + + Parcel Media Information - - Via Lure + + A byte, if 0x1 viewer should auto scale media to fit object - - Via Landmark + + A boolean, if true the viewer should loop the media - - Via Location + + The Asset UUID of the Texture which when applied to a + primitive will display the media - - Via Home + + A URL which points to any Quicktime supported media type - - Via Telehub + + A description of the media - - Via Login + + An Integer which represents the height of the media - - Linden Summoned + + An integer which represents the width of the media - - Linden Forced me + + A string which contains the mime type of the media - + + Parcel of land, a portion of virtual real estate in a simulator - - Agent Teleported Home via Script - - - - + + The total number of contiguous 4x4 meter blocks your agent owns within this parcel - - - + + The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own - - - + + Deprecated, Value appears to always be 0 - - forced to new location for example when avatar is banned or ejected + + Simulator-local ID of this parcel - - Teleport Finished via a Lure + + UUID of the owner of this parcel - - Finished, Sim Changed + + Whether the land is deeded to a group or not - - Finished, Same Sim + + - - - + + Date land was claimed - - - + + Appears to always be zero - - - + + This field is no longer used - - - + + Minimum corner of the axis-aligned bounding box for this + parcel - - - + + Maximum corner of the axis-aligned bounding box for this + parcel - - - + + Bitmap describing land layout in 4x4m squares across the + entire region - - - + + Total parcel land area - - - + + - - - + + Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used - - - Instant Message - - - - Key of sender + + Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel + owned by the agent or group that owns this parcel - - Name of sender + + Maximum number of primitives this parcel supports - - Key of destination avatar + + Total number of primitives on this parcel - - ID of originating estate + + For group-owned parcels this indicates the total number of prims deeded to the group, + for parcels owned by an individual this inicates the number of prims owned by the individual - - Key of originating region + + Total number of primitives owned by the parcel group on + this parcel, or for parcels owned by an individual with a group set the + total number of prims set to that group. - - Coordinates in originating region + + Total number of prims owned by other avatars that are not set to group, or not the parcel owner - - Instant message type + + A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect + the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed - - Group IM session toggle + + Autoreturn value in minutes for others' objects - - Key of IM session, for Group Messages, the groups UUID + + - - Timestamp of the instant message + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it - - Instant message text + + Parcel Name - - Whether this message is held for offline avatars + + Parcel Description - - Context specific packed data + + URL For Music Stream - - Print the struct data as a string - A string containing the field name, and field value + + - - - Manager class for our own avatar - + + Price for a temporary pass - - - Constructor, setup callbacks for packets related to our avatar - - A reference to the Class + + How long is pass valid for - - - Agent movement and camera control - Agent movement is controlled by setting specific - After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags - This is most easily accomplished by setting one or more of the AgentMovement properties - Movement of an avatar is always based on a compass direction, for example AtPos will move the - agent from West to East or forward on the X Axis, AtNeg will of course move agent from - East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis - The Z axis is Up, finer grained control of movements can be done using the Nudge properties - + + - - Default constructor + + Key of authorized buyer - - - Camera controls for the agent, mostly a thin wrapper around - CoordinateFrame. This class is only responsible for state - tracking and math, it does not send any packets - + + Key of parcel snapshot - - - Default constructor - + + The landing point location - - - + + The landing point LookAt - - The camera is a local frame of reference inside of - the larger grid space. This is where the math happens + + The type of landing enforced from the enum - - - + + - - - + + - - - + + - - - + + Access list of who is whitelisted on this + parcel - - Agent camera controls + + Access list of who is blacklisted on this + parcel - - Currently only used for hiding your group title + + TRUE of region denies access to age unverified users - - Action state of the avatar, which can currently be - typing and editing + + true to obscure (hide) media url - - - + + true to obscure (hide) music url - - - + + A struct containing media details - + + Displays a parcel object in string format + string containing key=value pairs of a parcel object - + + Defalt constructor + Local ID of this parcel - + + Update the simulator with any local changes to this Parcel object + Simulator to send updates to + Whether we want the simulator to confirm + the update with a reply packet or not - + + Set Autoreturn time + Simulator to send the update to - + + Parcel (subdivided simulator lots) subsystem - - - + + The event subscribers. null if no subcribers - - - + + Raises the ParcelDwellReply event + A ParcelDwellReplyEventArgs object containing the + data returned from the simulator - - Timer for sending AgentUpdate packets + + Thread sync lock object - - Move agent positive along the X axis + + The event subscribers. null if no subcribers - - Move agent negative along the X axis + + Raises the ParcelInfoReply event + A ParcelInfoReplyEventArgs object containing the + data returned from the simulator - - Move agent positive along the Y axis + + Thread sync lock object - - Move agent negative along the Y axis + + The event subscribers. null if no subcribers - - Move agent positive along the Z axis + + Raises the ParcelProperties event + A ParcelPropertiesEventArgs object containing the + data returned from the simulator - - Move agent negative along the Z axis + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the ParcelAccessListReply event + A ParcelAccessListReplyEventArgs object containing the + data returned from the simulator - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the ParcelObjectOwnersReply event + A ParcelObjectOwnersReplyEventArgs object containing the + data returned from the simulator - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - Causes simulator to make agent fly + + Raises the SimParcelsDownloaded event + A SimParcelsDownloadedEventArgs object containing the + data returned from the simulator - - Stop movement + + Thread sync lock object - - Finish animation + + The event subscribers. null if no subcribers - - Stand up from a sit + + Raises the ForceSelectObjectsReply event + A ForceSelectObjectsReplyEventArgs object containing the + data returned from the simulator - - Tells simulator to sit agent on ground + + Thread sync lock object - - Place agent into mouselook mode + + The event subscribers. null if no subcribers - - Nudge agent positive along the X axis + + Raises the ParcelMediaUpdateReply event + A ParcelMediaUpdateReplyEventArgs object containing the + data returned from the simulator - - Nudge agent negative along the X axis + + Thread sync lock object - - Nudge agent positive along the Y axis + + The event subscribers. null if no subcribers - - Nudge agent negative along the Y axis + + Raises the ParcelMediaCommand event + A ParcelMediaCommandEventArgs object containing the + data returned from the simulator - - Nudge agent positive along the Z axis + + Thread sync lock object - - Nudge agent negative along the Z axis + + + Default constructor + + A reference to the GridClient object - + + Request basic information for a single parcel + Simulator-local ID of the parcel - + + Request properties of a single parcel + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + multiple simultaneous requests - - Tell simulator to mark agent as away + + + Request the access list for a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelAccessList reply, useful for distinguishing between + multiple simultaneous requests + - + + Request properties of parcels using a bounding box selection + Simulator containing the parcel + Northern boundary of the parcel selection + Eastern boundary of the parcel selection + Southern boundary of the parcel selection + Western boundary of the parcel selection + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + different types of parcel property requests + A boolean that is returned with the + ParcelProperties reply, useful for snapping focus to a single + parcel - + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + Simulator to request parcels from (must be connected) - + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + Simulator to request parcels from (must be connected) + If TRUE, will force a full refresh + Number of milliseconds to pause in between each request - + + Request the dwell value for a parcel + Simulator containing the parcel + Simulator-local ID of the parcel - + - Returns "always run" value, or changes it by sending a SetAlwaysRunPacket + Send a request to Purchase a parcel of land + The Simulator the parcel is located in + The parcels region specific local ID + true if this parcel is being purchased by a group + The groups + true to remove tier contribution if purchase is successful + The parcels size + The purchase price of the parcel + - - The current value of the agent control flags + + + Reclaim a parcel of land + + The simulator the parcel is in + The parcels region specific local ID - - Gets or sets the interval in milliseconds at which - AgentUpdate packets are sent to the current simulator. Setting - this to a non-zero value will also enable the packet sending if - it was previously off, and setting it to zero will disable + + + Deed a parcel to a group + + The simulator the parcel is in + The parcels region specific local ID + The groups - - Gets or sets whether AgentUpdate packets are sent to - the current simulator + + + Request prim owners of a parcel of land. + + Simulator parcel is in + The parcels region specific local ID - - Reset movement controls every time we send an update + + + Return objects from a parcel + + Simulator parcel is in + The parcels region specific local ID + the type of objects to return, + A list containing object owners s to return - + - Send an AgentUpdate with the camera set at the current agent - position and pointing towards the heading specified + Subdivide (split) a parcel - Camera rotation in radians - Whether to send the AgentUpdate reliable - or not + + + + + - + - Rotates the avatar body and camera toward a target position. - This will also anchor the camera position on the avatar + Join two parcels of land creating a single parcel - Region coordinates to turn toward + + + + + - + - Send new AgentUpdate packet to update our current camera - position and rotation + Get a parcels LocalID + Simulator parcel is in + Vector3 position in simulator (Z not used) + 0 on failure, or parcel LocalID on success. + A call to Parcels.RequestAllSimParcels is required to populate map and + dictionary. - + - Send new AgentUpdate packet to update our current camera - position and rotation + Terraform (raise, lower, etc) an area or whole parcel of land - Whether to require server acknowledgement - of this packet + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() - + - Send new AgentUpdate packet to update our current camera - position and rotation + Terraform (raise, lower, etc) an area or whole parcel of land - Whether to require server acknowledgement - of this packet - Simulator to send the update to + Simulator land area is in. + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() - + - Builds an AgentUpdate packet entirely from parameters. This - will not touch the state of Self.Movement or - Self.Movement.Camera in any way + Terraform (raise, lower, etc) an area or whole parcel of land - - - - - - - - - - - - - - - - - - - - - - + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() - + - Used to specify movement actions for your agent + Terraform (raise, lower, etc) an area or whole parcel of land + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + Height at which the terraform operation is acting at - - Empty flag + + + Sends a request to the simulator to return a list of objects owned by specific owners + + Simulator local ID of parcel + Owners, Others, Etc + List containing keys of avatars objects to select; + if List is null will return Objects of type selectType + Response data is returned in the event - - Move Forward (SL Keybinding: W/Up Arrow) + + + Eject and optionally ban a user from a parcel + + target key of avatar to eject + true to also ban target - - Move Backward (SL Keybinding: S/Down Arrow) + + + Freeze or unfreeze an avatar over your land + + target key to freeze + true to freeze, false to unfreeze - - Move Left (SL Keybinding: Shift-(A/Left Arrow)) + + + Abandon a parcel of land + + Simulator parcel is in + Simulator local ID of parcel - - Move Right (SL Keybinding: Shift-(D/Right Arrow)) + + + Requests the UUID of the parcel in a remote region at a specified location + + Location of the parcel in the remote region + Remote region handle + Remote region UUID + If successful UUID of the remote parcel, UUID.Zero otherwise - - Not Flying: Jump/Flying: Move Up (SL Keybinding: E) + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - Unused + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - Unused + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - Unused + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - Unused + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event - - ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + Raised when the simulator responds to a request - - ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + Raised when the simulator responds to a request - - Fly + + Raised when the simulator responds to a request - + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a Parcel Update request + + + Raised when the parcel your agent is located sends a ParcelMediaCommand + + + Parcel Accesslist - - Finish our current animation + + Agents - - Stand up from the ground or a prim seat + + - - Sit on the ground at our current location + + Flags for specific entry in white/black lists - - Whether mouselook is currently enabled + + + Owners of primitives on parcel + - - Legacy, used if a key was pressed for less than a certain amount of time + + Prim Owners - - Legacy, used if a key was pressed for less than a certain amount of time + + True of owner is group - - Legacy, used if a key was pressed for less than a certain amount of time + + Total count of prims owned by OwnerID - - Legacy, used if a key was pressed for less than a certain amount of time + + true of OwnerID is currently online and is not a group - - Legacy, used if a key was pressed for less than a certain amount of time + + The date of the most recent prim left by OwnerID - - Legacy, used if a key was pressed for less than a certain amount of time + + Contains a parcels dwell data returned from the simulator in response to an - + + Construct a new instance of the ParcelDwellReplyEventArgs class + The global ID of the parcel + The simulator specific ID of the parcel + The calculated dwell for the parcel - - - + + Get the global ID of the parcel - - Set when the avatar is idled or set to away. Note that the away animation is - activated separately from setting this flag + + Get the simulator specific ID of the parcel - - - + + Get the calculated dwell - - - + + Contains basic parcel information data returned from the + simulator in response to an request - + + Construct a new instance of the ParcelInfoReplyEventArgs class + The object containing basic parcel info - - - + + Get the object containing basic parcel info + + + Contains basic parcel information data returned from the simulator in response to an request - + - Called once attachment resource usage information has been collected + Construct a new instance of the ParcelPropertiesEventArgs class - Indicates if operation was successfull - Attachment resource usage information - - - The event subscribers. null if no subcribers + The object containing the details + The object containing the details + The result of the request + The number of primitieves your agent is + currently selecting and or sitting on in this parcel + The user assigned ID used to correlate a request with + these results + TODO: - - Thread sync lock object + + Get the simulator the parcel is located in - - The event subscribers. null if no subcribers + + Get the object containing the details + If Result is NoData, this object will not contain valid data - - Thread sync lock object + + Get the result of the request - - The event subscribers. null if no subcribers + + Get the number of primitieves your agent is + currently selecting and or sitting on in this parcel - - Thread sync lock object + + Get the user assigned ID used to correlate a request with + these results - - The event subscribers. null if no subcribers + + TODO: - - Thread sync lock object + + Contains blacklist and whitelist data returned from the simulator in response to an request - - The event subscribers. null if no subcribers + + + Construct a new instance of the ParcelAccessListReplyEventArgs class + + The simulator the parcel is located in + The user assigned ID used to correlate a request with + these results + The simulator specific ID of the parcel + TODO: + The list containing the white/blacklisted agents for the parcel - - Thread sync lock object + + Get the simulator the parcel is located in - - The event subscribers. null if no subcribers + + Get the user assigned ID used to correlate a request with + these results - - Thread sync lock object + + Get the simulator specific ID of the parcel - - The event subscribers. null if no subcribers + + TODO: - - Thread sync lock object + + Get the list containing the white/blacklisted agents for the parcel - - The event subscribers. null if no subcribers + + Contains blacklist and whitelist data returned from the + simulator in response to an request - - Thread sync lock object + + + Construct a new instance of the ParcelObjectOwnersReplyEventArgs class + + The simulator the parcel is located in + The list containing prim ownership counts - - The event subscribers. null if no subcribers + + Get the simulator the parcel is located in - - Thread sync lock object + + Get the list containing prim ownership counts - - The event subscribers. null if no subcribers + + Contains the data returned when all parcel data has been retrieved from a simulator - - Thread sync lock object + + + Construct a new instance of the SimParcelsDownloadedEventArgs class + + The simulator the parcel data was retrieved from + The dictionary containing the parcel data + The multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. - - The event subscribers. null if no subcribers + + Get the simulator the parcel data was retrieved from - - Thread sync lock object + + A dictionary containing the parcel data where the key correlates to the ParcelMap entry - - The event subscribers. null if no subcribers + + Get the multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. - - Thread sync lock object + + Contains the data returned when a request - - The event subscribers. null if no subcribers + + + Construct a new instance of the ForceSelectObjectsReplyEventArgs class + + The simulator the parcel data was retrieved from + The list of primitive IDs + true if the list is clean and contains the information + only for a given request - - Thread sync lock object + + Get the simulator the parcel data was retrieved from - - The event subscribers. null if no subcribers + + Get the list of primitive IDs - - Thread sync lock object + + true if the list is clean and contains the information + only for a given request - - The event subscribers. null if no subcribers + + Contains data when the media data for a parcel the avatar is on changes - - Thread sync lock object + + + Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + + the simulator the parcel media data was updated in + The updated media information - - The event subscribers. null if no subcribers + + Get the simulator the parcel media data was updated in - - Thread sync lock object + + Get the updated media information - - The event subscribers. null if no subcribers + + Contains the media command for a parcel the agent is currently on - - Thread sync lock object + + + Construct a new instance of the ParcelMediaCommandEventArgs class + + The simulator the parcel media command was issued in + + + The media command that was sent + - - The event subscribers. null if no subcribers + + Get the simulator the parcel media command was issued in - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + Get the media command that was sent - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + + + - - Reference to the GridClient instance + + + + - - Used for movement and camera tracking + + + + - - Currently playing animations for the agent. Can be used to - check the current movement status such as walking, hovering, aiming, - etc. by checking against system animations found in the Animations class + + + + - - Dictionary containing current Group Chat sessions and members + + + + + + - - Raised when a scripted object or agent within range sends a public message + + + The ObservableDictionary class is used for storing key/value pairs. It has methods for firing + events to subscribers when items are added, removed, or changed. + + Key + Value - - Raised when a scripted object sends a dialog box containing possible - options an agent can respond to + + + A dictionary of callbacks to fire when specified action occurs + - - Raised when an object requests a change in the permissions an agent has permitted + + + Register a callback to be fired when an action occurs + + The action + The callback to fire - - Raised when a script requests an agent open the specified URL + + + Unregister a callback + + The action + The callback to fire - - Raised when an agents currency balance is updated + + + + + + - - Raised when a transaction occurs involving currency such as a land purchase + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking - - Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from - private messaging to friendship offers. The Dialog field defines what type of message has arrived + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); + + - - Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times - for each teleport indicating the progress of the request + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); + + - - Raised when a simulator sends agent specific information for our avatar. + + + Try to get entry from the with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + - - Raised when our agents animation playlist changes + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + - - Raised when an object or avatar forcefully collides with our agent + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + - - Raised when our agent crosses a region border into another region + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + - - Raised when our agent succeeds or fails to join a group chat session + + Check if Key exists in Dictionary + Key to check for + if found, otherwise - - Raised when a simulator sends an urgent message usually indication the recent failure of - another action we have attempted to take such as an attempt to enter a parcel where we are denied access + + Check if Value exists in Dictionary + Value to check for + if found, otherwise - - Raised when a script attempts to take or release specified controls for our agent + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value - - Raised when the simulator detects our agent is trying to view something - beyond its limits + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise - - Raised when a script sensor reply is received from a simulator + + + Clear the contents of the dictionary + - - Raised in response to a request + + + Enumerator for iterating dictionary entries + + - - Raised when an avatar enters a group chat session we are participating in + + + Gets the number of Key/Value pairs contained in the + - - Raised when an agent exits a group chat session we are participating in + + + Indexer for the dictionary + + The key + The value - - Your (client) avatars - "client", "agent", and "avatar" all represent the same thing + + + A Wrapper around openjpeg to encode and decode images to and from byte arrays + - - Temporary assigned to this session, used for - verifying our identity in packets + + TGA Header size - - Shared secret that is never sent over the wire + + OpenJPEG is not threadsafe, so this object is used to lock + during calls into unmanaged code - - Your (client) avatar ID, local to the current region/sim + + + Encode a object into a byte array + + The object to encode + true to enable lossless conversion, only useful for small images ie: sculptmaps + A byte array containing the encoded Image object - - Where the avatar started at login. Can be "last", "home" - or a login + + + Encode a object into a byte array + + The object to encode + a byte array of the encoded image - - The access level of this agent, usually M or PG + + + Decode JPEG2000 data to an and + + + JPEG2000 encoded data + ManagedImage object to decode to + Image object to decode to + True if the decode succeeds, otherwise false - - The CollisionPlane of Agent + + + + + + + - - An representing the velocity of our agent + + + + + + + + - - An representing the acceleration of our agent + + + Encode a object into a byte array + + The source object to encode + true to enable lossless decoding + A byte array containing the source Bitmap object - - A which specifies the angular speed, and axis about which an Avatar is rotating. + + + Defines the beginning and ending file positions of a layer in an + LRCP-progression JPEG2000 file + - - Position avatar client will goto when login to 'home' or during - teleport request to 'home' region. + + + This structure is used to marshal both encoded and decoded images. + MUST MATCH THE STRUCT IN dotnet.h! + - - LookAt point saved/restored with HomePosition + + + Information about a single packet in a JPEG2000 stream + - - Avatar First Name (i.e. Philip) + + Packet start position - - Avatar Last Name (i.e. Linden) + + Packet header end position - - Avatar Full Name (i.e. Philip Linden) + + Packet end position - - Gets the health of the agent + + + Represents a Sound Asset + - - Gets the current balance of the agent + + Initializes a new instance of an AssetSound object - - Gets the local ID of the prim the agent is sitting on, - zero if the avatar is not currently sitting + + Initializes a new instance of an AssetSound object with parameters + A unique specific to this asset + A byte array containing the raw asset data - - Gets the of the agents active group. + + + TODO: Encodes a sound file + - - Gets the Agents powers in the currently active group + + + TODO: Decode a sound file + + true - - Current status message for teleporting + + Override the base classes AssetType - - Current position of the agent as a relative offset from - the simulator, or the parent object if we are sitting on something + + + Represents a Landmark with RegionID and Position vector + - - Current rotation of the agent as a relative rotation from - the simulator, or the parent object if we are sitting on something + + UUID of the Landmark target region - - Current position of the agent in the simulator + + Local position of the target - + + Construct an Asset of type Landmark + + - A representing the agents current rotation + Construct an Asset object of type Landmark + A unique specific to this asset + A byte array containing the raw asset data - - Returns the global grid position of the avatar + + + Constuct an asset of type Landmark + + UUID of the target region + Local position of landmark - - Raises the ChatFromSimulator event - A ChatEventArgs object containing the - data returned from the data server + + + Encode the raw contents of a string with the specific Landmark format + - - Raises the ScriptDialog event - A SctriptDialogEventArgs object containing the - data returned from the data server + + + Decode the raw asset data, populating the RegionID and Position + + true if the AssetData was successfully decoded to a UUID and Vector - - Raises the ScriptQuestion event - A ScriptQuestionEventArgs object containing the - data returned from the data server + + Override the base classes AssetType - - Raises the LoadURL event - A LoadUrlEventArgs object containing the - data returned from the data server + + + Represents an that can be worn on an avatar + such as a Shirt, Pants, etc. + - - Raises the MoneyBalance event - A BalanceEventArgs object containing the - data returned from the data server + + + Represents a Wearable Asset, Clothing, Hair, Skin, Etc + - - Raises the MoneyBalanceReply event - A MoneyBalanceReplyEventArgs object containing the - data returned from the data server + + A string containing the name of the asset - - Raises the IM event - A InstantMessageEventArgs object containing the - data returned from the data server + + A string containing a short description of the asset - - Raises the TeleportProgress event - A TeleportEventArgs object containing the - data returned from the data server + + The Assets WearableType - - Raises the AgentDataReply event - A AgentDataReplyEventArgs object containing the - data returned from the data server + + The For-Sale status of the object - - Raises the AnimationsChanged event - A AnimationsChangedEventArgs object containing the - data returned from the data server + + An Integer representing the purchase price of the asset - - Raises the MeanCollision event - A MeanCollisionEventArgs object containing the - data returned from the data server - - - Raises the RegionCrossed event - A RegionCrossedEventArgs object containing the - data returned from the data server + + The of the assets creator - - Raises the GroupChatJoined event - A GroupChatJoinedEventArgs object containing the - data returned from the data server + + The of the assets current owner - - Raises the AlertMessage event - A AlertMessageEventArgs object containing the - data returned from the data server + + The of the assets prior owner - - Raises the ScriptControlChange event - A ScriptControlEventArgs object containing the - data returned from the data server + + The of the Group this asset is set to - - Raises the CameraConstraint event - A CameraConstraintEventArgs object containing the - data returned from the data server + + True if the asset is owned by a - - Raises the ScriptSensorReply event - A ScriptSensorReplyEventArgs object containing the - data returned from the data server + + The Permissions mask of the asset - - Raises the AvatarSitResponse event - A AvatarSitResponseEventArgs object containing the - data returned from the data server + + A Dictionary containing Key/Value pairs of the objects parameters - - Raises the ChatSessionMemberAdded event - A ChatSessionMemberAddedEventArgs object containing the - data returned from the data server + + A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures - - Raises the ChatSessionMemberLeft event - A ChatSessionMemberLeftEventArgs object containing the - data returned from the data server + + Initializes a new instance of an AssetWearable object - - - Send a text message from the Agent to the Simulator - - A containing the message - The channel to send the message on, 0 is the public channel. Channels above 0 - can be used however only scripts listening on the specified channel will see the message - Denotes the type of message being sent, shout, whisper, etc. + + Initializes a new instance of an AssetWearable object with parameters + A unique specific to this asset + A byte array containing the raw asset data - - - Request any instant messages sent while the client was offline to be resent. - + + Initializes a new instance of an AssetWearable object with parameters + A string containing the asset parameters - + - Send an Instant Message to another Avatar + Decode an assets byte encoded data to a string - The recipients - A containing the message to send + true if the asset data was decoded successfully - + - Send an Instant Message to an existing group chat or conference chat + Encode the assets string represantion into a format consumable by the asset server - The recipients - A containing the message to send - IM session ID (to differentiate between IM windows) - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - IDs of sessions for a conference + + Initializes a new instance of an AssetScriptBinary object - - - Send an Instant Message - - The name this IM will show up as being from - Key of Avatar - Text message being sent - IM session ID (to differentiate between IM windows) - Type of instant message to send - Whether to IM offline avatars as well - Senders Position - RegionID Sender is In - Packed binary data that is specific to - the dialog type + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data - - - Send an Instant Message to a group - - - of the group to send message to - Text Message being sent. + + Initializes a new instance of an AssetScriptBinary object with parameters + A string containing the Clothings data - - - Send an Instant Message to a group the agent is a member of - - The name this IM will show up as being from - - of the group to send message to - Text message being sent + + Override the base classes AssetType - + - Send a request to join a group chat session + Represents an Animation - - of Group to leave - - - Exit a group chat session. This will stop further Group chat messages - from being sent until session is rejoined. - - - of Group chat session to leave + + Default Constructor - + - Reply to script dialog questions. + Construct an Asset object of type Animation - Channel initial request came on - Index of button you're "clicking" - Label of button you're "clicking" - - of Object that sent the dialog request - + A unique specific to this asset + A byte array containing the raw asset data - - - Accept invite for to a chatterbox session - - - of session to accept invite to + + Override the base classes AssetType - + - Start a friends conference + Operation to apply when applying color to texture - - List of UUIDs to start a conference with - the temportary session ID returned in the callback> - + - Start a particle stream between an agent and an object + Information needed to translate visual param value to RGBA color - - Key of the source agent - - Key of the target object - - - The type from the enum - A unique for this effect - + - Start a particle stream between an agent and an object + Construct VisualColorParam - - Key of the source agent - - Key of the target object - A representing the beams offset from the source - A which sets the avatars lookat animation - - of the Effect + Operation to apply when applying color to texture + Colors - + - Create a particle beam between an avatar and an primitive + Represents alpha blending and bump infor for a visual parameter + such as sleive length - The ID of source avatar - The ID of the target primitive - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam - - - - Create a particle swirl around a target position using a packet - - global offset - A object containing the combined red, green, blue and alpha - color values of particle beam - a float representing the duration the parcicle beam will last - A Unique ID for the beam + + Stregth of the alpha to apply - - - Sends a request to sit on the specified object - - - of the object to sit on - Sit at offset + + File containing the alpha channel - - - Follows a call to to actually sit on the object - + + Skip blending if parameter value is 0 - - Stands up from sitting on a prim or the ground - true of AgentUpdate was sent + + Use miltiply insted of alpha blending - + - Does a "ground sit" at the avatar's current position + Create new alhpa information for a visual param + Stregth of the alpha to apply + File containing the alpha channel + Skip blending if parameter value is 0 + Use miltiply insted of alpha blending - + - Starts or stops flying + A single visual characteristic of an avatar mesh, such as eyebrow height - True to start flying, false to stop flying - - - Starts or stops crouching - - True to start crouching, false to stop crouching + + Index of this visual param - - - Starts a jump (begin holding the jump key) - + + Internal name - - - Use the autopilot sim function to move the avatar to a new - position. Uses double precision to get precise movements - - The z value is currently not handled properly by the simulator - Global X coordinate to move to - Global Y coordinate to move to - Z coordinate to move to + + Group ID this parameter belongs to - - - Use the autopilot sim function to move the avatar to a new position - - The z value is currently not handled properly by the simulator - Integer value for the global X coordinate to move to - Integer value for the global Y coordinate to move to - Floating-point value for the Z coordinate to move to + + Name of the wearable this parameter belongs to - - - Use the autopilot sim function to move the avatar to a new position - - The z value is currently not handled properly by the simulator - Integer value for the local X coordinate to move to - Integer value for the local Y coordinate to move to - Floating-point value for the Z coordinate to move to + + Displayable label of this characteristic - - Macro to cancel autopilot sim function - Not certain if this is how it is really done - true if control flags were set and AgentUpdate was sent to the simulator + + Displayable label for the minimum value of this characteristic - - - Grabs an object - - an unsigned integer of the objects ID within the simulator - + + Displayable label for the maximum value of this characteristic - - - Overload: Grab a simulated object - - an unsigned integer of the objects ID within the simulator - - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space + + Default value - - - Drag an object - - - of the object to drag - Drag target in region coordinates + + Minimum value - - - Overload: Drag an object - - - of the object to drag - Drag target in region coordinates - - - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space + + Maximum value - + + Is this param used for creation of bump layer? + + + Alpha blending/bump info + + + Color information + + + Array of param IDs that are drivers for this parameter + + - Release a grabbed object + Set all the values through the constructor - The Objects Simulator Local ID - - - + Index of this visual param + Internal name + + + Displayable label of this characteristic + Displayable label for the minimum value of this characteristic + Displayable label for the maximum value of this characteristic + Default value + Minimum value + Maximum value + Is this param used for creation of bump layer? + Array of param IDs that are drivers for this parameter + Alpha blending/bump info + Color information - + - Release a grabbed object + Holds the Params array of all the avatar appearance parameters - The Objects Simulator Local ID - The texture coordinates to grab - The surface coordinates to grab - The face of the position to grab - The region coordinates of the position to grab - The surface normal of the position to grab (A normal is a vector perpindicular to the surface) - The surface binormal of the position to grab (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - + + X position of this patch + + + Y position of this patch + + + A 16x16 array of floats holding decompressed layer data + + - Touches an object + Creates a LayerData packet for compressed land data given a full + simulator heightmap and an array of indices of patches to compress - an unsigned integer of the objects ID within the simulator - + A 256 * 256 array of floating point values + specifying the height at each meter in the simulator + Array of indexes in the 16x16 grid of patches + for this simulator. For example if 1 and 17 are specified, patches + x=1,y=0 and x=1,y=1 are sent + - + - Request the current L$ balance + Add a patch of terrain to a BitPacker + BitPacker to write the patch to + Heightmap of the simulator, must be a 256 * + 256 float array + X offset of the patch to create, valid values are + from 0 to 15 + Y offset of the patch to create, valid values are + from 0 to 15 - + - Give Money to destination Avatar + A Name Value pair with additional settings, used in the protocol + primarily to transmit avatar names and active group in object packets - UUID of the Target Avatar - Amount in L$ - + + + + + + + + + + + + + + + + - Give Money to destination Avatar + Constructor that takes all the fields as parameters - UUID of the Target Avatar - Amount in L$ - Description that will show up in the - recipients transaction history + + + + + - + - Give L$ to an object + Constructor that takes a single line from a NameValue field - object to give money to - amount of L$ to give - name of object + - + + Type of the value + + + Unknown + + + String value + + + + + + + + + + + + + + + Deprecated + + + String value, but designated as an asset + + + + + - Give L$ to a group + - group to give money to - amount of L$ to give - + + + + + + + + + + + + + - Give L$ to a group + - group to give money to - amount of L$ to give - description of transaction - + + + + + + + + + + + + + + + + - Pay texture/animation upload fee + Starts a thread that keeps the daemon running + + - + - Pay texture/animation upload fee + Stops the daemon and the thread keeping it running - description of the transaction - + - Give Money to destination Object or Avatar + - UUID of the Target Object/Avatar - Amount in L$ - Reason (Optional normally) - The type of transaction - Transaction flags, mostly for identifying group - transactions + + + - + - Plays a gesture + This is used to initialize and stop the Connector as a whole. The Connector + Create call must be completed successfully before any other requests are made + (typically during application initialization). The shutdown should be called + when the application is shutting down to gracefully release resources - Asset of the gesture + A string value indicting the Application name + URL for the management server + LoggingSettings + + - + - Mark gesture active + Shutdown Connector -- Should be called when the application is shutting down + to gracefully release resources - Inventory of the gesture - Asset of the gesture + Handle returned from successful Connector ‘create’ request - + - Mark gesture inactive + Mute or unmute the microphone - Inventory of the gesture + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) - + - Send an AgentAnimation packet that toggles a single animation on + Mute or unmute the speaker - The of the animation to start playing - Whether to ensure delivery of this packet or not + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) - + - Send an AgentAnimation packet that toggles a single animation off + Set microphone volume - The of a - currently playing animation to stop playing - Whether to ensure delivery of this packet or not + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume - + - Send an AgentAnimation packet that will toggle animations on or off + Set local speaker volume - A list of animation s, and whether to - turn that animation on or off - Whether to ensure delivery of this packet or not + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume - + - Teleports agent to their stored home location + Create a Session + Sessions typically represent a connection to a media session with one or more + participants. This is used to generate an ‘outbound’ call to another user or + channel. The specifics depend on the media types involved. A session handle is + required to control the local user functions within the session (or remote + users if the current account has rights to do so). Currently creating a + session automatically connects to the audio media, there is no need to call + Session.Connect at this time, this is reserved for future use. - true on successful teleport to home location + Handle returned from successful Connector ‘create’ request + This is the URI of the terminating point of the session (ie who/what is being called) + This is the display name of the entity being called (user or channel) + Only needs to be supplied when the target URI is password protected + This indicates the format of the password as passed in. This can either be + “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is + “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, + then base64 encoded, with the final “=” character stripped off. + + + - + - Teleport agent to a landmark + Used to accept a call - - of the landmark to teleport agent to - true on success, false on failure + SessionHandle such as received from SessionNewEvent + "default" + - + - Attempt to look up a simulator name and teleport to the discovered - destination + This command is used to start the audio render process, which will then play + the passed in file through the selected audio render device. This command + should not be issued if the user is on a call. - Region name to look up - Position to teleport to - True if the lookup and teleport were successful, otherwise - false + The fully qualified path to the sound file. + True if the file is to be played continuously and false if it is should be played once. + - + - Attempt to look up a simulator name and teleport to the discovered - destination + This command is used to stop the audio render process. - Region name to look up - Position to teleport to - Target to look at - True if the lookup and teleport were successful, otherwise - false + The fully qualified path to the sound file issued in the start render command. + - + - Teleport agent to another region + This is used to ‘end’ an established session (i.e. hang-up or disconnect). - handle of region to teleport agent to - - position in destination sim to teleport to - true on success, false on failure - This call is blocking + Handle returned from successful Session ‘create’ request or a SessionNewEvent + - + - Teleport agent to another region + Set the combined speaking and listening position in 3D space. - handle of region to teleport agent to - - position in destination sim to teleport to - - direction in destination sim agent will look at - true on success, false on failure - This call is blocking + Handle returned from successful Session ‘create’ request or a SessionNewEvent + Speaking position + Listening position + - + - Request teleport to a another simulator + Set User Volume for a particular user. Does not affect how other users hear that user. - handle of region to teleport agent to - - position in destination sim to teleport to + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume + - + - Request teleport to a another simulator + Start up the Voice service. - handle of region to teleport agent to - - position in destination sim to teleport to - - direction in destination sim agent will look at - + - Teleport agent to a landmark + Handle miscellaneous request status - - of the landmark to teleport agent to + + + ///If something goes wrong, we log it. - + - Send a teleport lure to another avatar with default "Join me in ..." invitation message + Cleanup oject resources - target avatars to lure - + - Send a teleport lure to another avatar with custom invitation message + Request voice cap when changing regions - target avatars to lure - custom message to send with invitation - + - Respond to a teleport lure by either accepting it and initiating - the teleport, or denying it + Handle a change in session state - - of the avatar sending the lure - true to accept the lure, false to decline it - + - Update agent profile + Close a voice session - - struct containing updated - profile information + - + - Update agents profile interests + Locate a Session context from its handle - selection of interests from struct + Creates the session context if it does not exist. - + - Set the height and the width of the client window. This is used - by the server to build a virtual camera frustum for our avatar + Handle completion of main voice cap request. - New height of the viewer window - New width of the viewer window + + + - + - Request the list of muted objects and avatars for this agent + Daemon has started so connect to it. - + - Sets home location to agents current position + The daemon TCP connection is open. - will fire an AlertMessage () with - success or failure message - + - Move an agent in to a simulator. This packet is the last packet - needed to complete the transition in to a new simulator + Handle creation of the Connector. - - Object - + - Reply to script permissions request + Handle response to audio output device query - - Object - - of the itemID requesting permissions - - of the taskID requesting permissions - - list of permissions to allow - + - Respond to a group invitation by either accepting or denying it + Handle response to audio input device query - UUID of the group (sent in the AgentID field of the invite message) - IM Session ID from the group invitation message - Accept the group invitation or deny it - + + + Set voice channel for new parcel + + + + - Requests script detection of objects and avatars + Request info from a parcel capability Uri. - name of the object/avatar to search for - UUID of the object or avatar to search for - Type of search from ScriptSensorTypeFlags - range of scan (96 max?) - the arc in radians to search within - an user generated ID to correlate replies with - Simulator to perform search in + - + - Create or update profile pick + Receive parcel voice cap - UUID of the pick to update, or random UUID to create a new pick - Is this a top pick? (typically false) - UUID of the parcel (UUID.Zero for the current parcel) - Name of the pick - Global position of the pick landmark - UUID of the image displayed with the pick - Long description of the pick + + + - + - Delete profile pick + Tell Vivox where we are standing - UUID of the pick to delete + This has to be called when we move or turn. - + - Create or update profile Classified + Start and stop updating out position. - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Global position of the classified landmark - Name of the classified - Long description of the classified - if true, auto renew classified after expiration + - + - Create or update profile Classified + This is used to login a specific user account(s). It may only be called after + Connector initialization has completed successfully - UUID of the classified to update, or random UUID to create a new classified - Defines what catagory the classified is in - UUID of the image displayed with the classified - Price that the classified will cost to place for a week - Name of the classified - Long description of the classified - if true, auto renew classified after expiration + Handle returned from successful Connector ‘create’ request + User's account name + User's account password + Values may be “AutoAnswer” or “VerifyAnswer” + "" + This is an integer that specifies how often + the daemon will send participant property events while in a channel. If this is not set + the default will be “on state change”, which means that the events will be sent when + the participant starts talking, stops talking, is muted, is unmuted. + The valid values are: + 0 – Never + 5 – 10 times per second + 10 – 5 times per second + 50 – 1 time per second + 100 – on participant state change (this is the default) + false + - + - Delete a classified ad + This is used to logout a user session. It should only be called with a valid AccountHandle. - The classified ads ID + Handle returned from successful Connector ‘login’ request + - + - Fetches resource usage by agents attachmetns + This is used to get a list of audio devices that can be used for capture (input) of voice. - Called when the requested information is collected + - + - Take an incoming ImprovedInstantMessage packet, auto-parse, and if - OnInstantMessage is defined call that with the appropriate arguments + This is used to get a list of audio devices that can be used for render (playback) of voice. - The sender - The EventArgs object containing the packet data - + - Take an incoming Chat packet, auto-parse, and if OnChat is defined call - that with the appropriate arguments. + This command is used to select the render device. - The sender - The EventArgs object containing the packet data + The name of the device as returned by the Aux.GetRenderDevices command. - + - Used for parsing llDialogs + This command is used to select the capture device. - The sender - The EventArgs object containing the packet data + The name of the device as returned by the Aux.GetCaptureDevices command. - + - Used for parsing llRequestPermissions dialogs + This command is used to start the audio capture process which will cause + AuxAudioProperty Events to be raised. These events can be used to display a + microphone VU meter for the currently selected capture device. This command + should not be issued if the user is on a call. - The sender - The EventArgs object containing the packet data + (unused but required) + - + - Handles Script Control changes when Script with permissions releases or takes a control + This command is used to stop the audio capture process. - The sender - The EventArgs object containing the packet data + - + - Used for parsing llLoadURL Dialogs + This command is used to set the mic volume while in the audio tuning process. + Once an acceptable mic level is attained, the application must issue a + connector set mic volume command to have that level be used while on voice + calls. - The sender - The EventArgs object containing the packet data + the microphone volume (-100 to 100 inclusive) + - + - Update client's Position, LookAt and region handle from incoming packet + This command is used to set the speaker volume while in the audio tuning + process. Once an acceptable speaker level is attained, the application must + issue a connector set speaker volume command to have that level be used while + on voice calls. - The sender - The EventArgs object containing the packet data - This occurs when after an avatar moves into a new sim + the speaker volume (-100 to 100 inclusive) + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - + - Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. + Event for most mundane request reposnses. - The Message Key - An IMessage object Deserialized from the recieved message event - The simulator originating the event message - - - Process TeleportFinish from Event Queue and pass it onto our TeleportHandler - - The message system key for this event - IMessage object containing decoded data from OSD - The simulator originating the event message + + Response to Connector.Create request - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Response to Aux.GetCaptureDevices request - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Response to Aux.GetRenderDevices request - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Audio Properties Events are sent after audio capture is started. + These events are used to display a microphone VU meter - - - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet + + Response to Account.Login request - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - This packet is now being sent via the EventQueue + + This event message is sent whenever the login state of the + particular Account has transitioned from one value to another - + - Group Chat event handler + List of audio input devices - The capability Key - IMessage object containing decoded data from OSD - - - + - Response from request to join a group chat + List of audio output devices - - - IMessage object containing decoded data from OSD - - - + - Someone joined or left group chat + Set audio test mode - - - IMessage object containing decoded data from OSD - - - + + Enable logging + + + The folder where any logs will be created + + + This will be prepended to beginning of each log file + + + The suffix or extension to be appended to each log file + + - Handle a group chat Invitation + 0: NONE - No logging + 1: ERROR - Log errors only + 2: WARNING - Log errors and warnings + 3: INFO - Log errors, warnings and info + 4: DEBUG - Log errors, warnings, info and debug - Caps Key - IMessage object containing decoded data from OSD - Originating Simulator - + - Moderate a chat session + Constructor for default logging settings - the of the session to moderate, for group chats this will be the groups UUID - the of the avatar to moderate - Either "voice" to moderate users voice, or "text" to moderate users text session - true to moderate (silence user), false to allow avatar to speak - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter - + + Interface requirements for Messaging system - + - Construct a new instance of the ChatEventArgs object + The current status of a texture request as it moves through the pipeline or final result of a texture request. - Sim from which the message originates - The message sent - The audible level of the message - The type of message sent: whisper, shout, etc - The source type of the message sender - The name of the agent or object sending the message - The ID of the agent or object sending the message - The ID of the object owner, or the agent ID sending the message - The position of the agent or object sending the message - - Get the simulator sending the message - - - Get the message sent - - - Get the audible level of the message + + The initial state given to a request. Requests in this state + are waiting for an available slot in the pipeline - - Get the type of message sent: whisper, shout, etc + + A request that has been added to the pipeline and the request packet + has been sent to the simulator - - Get the source type of the message sender + + A request that has received one or more packets back from the simulator - - Get the name of the agent or object sending the message + + A request that has received all packets back from the simulator - - Get the ID of the agent or object sending the message + + A request that has taken longer than + to download OR the initial packet containing the packet information was never received - - Get the ID of the object owner, or the agent ID sending the message + + The texture request was aborted by request of the agent - - Get the position of the agent or object sending the message + + The simulator replied to the request that it was not able to find the requested texture - - Contains the data sent when a primitive opens a dialog with this agent + + + A callback fired to indicate the status or final state of the requested texture. For progressive + downloads this will fire each time new asset data is returned from the simulator. + + The indicating either Progress for textures not fully downloaded, + or the final result of the request after it has been processed through the TexturePipeline + The object containing the Assets ID, raw data + and other information. For progressive rendering the will contain + the data from the beginning of the file. For failed, aborted and timed out requests it will contain + an empty byte array. - + - Construct a new instance of the ScriptDialogEventArgs + Texture request download handler, allows a configurable number of download slots which manage multiple + concurrent texture downloads from the - The dialog message - The name of the object that sent the dialog request - The ID of the image to be displayed - The ID of the primitive sending the dialog - The first name of the senders owner - The last name of the senders owner - The communication channel the dialog was sent on - The string labels containing the options presented in this dialog + This class makes full use of the internal + system for full texture downloads. - - Get the dialog message + + A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID + and also the Asset Texture ID, and the value is an object containing the current state of the request and also + the asset data as it is being re-assembled - - Get the name of the object that sent the dialog request + + Holds the reference to the client object - - Get the ID of the image to be displayed + + Maximum concurrent texture requests allowed at a time - - Get the ID of the primitive sending the dialog + + An array of objects used to manage worker request threads - - Get the first name of the senders owner + + An array of worker slots which shows the availablity status of the slot - - Get the last name of the senders owner + + The primary thread which manages the requests. - - Get the communication channel the dialog was sent on, responses - should also send responses on this same channel + + true if the TexturePipeline is currently running - - Get the string labels containing the options presented in this dialog + + A synchronization object used by the primary thread - - Contains the data sent when a primitive requests debit or other permissions - requesting a YES or NO answer + + A refresh timer used to increase the priority of stalled requests - + - Construct a new instance of the ScriptQuestionEventArgs + Default constructor, Instantiates a new copy of the TexturePipeline class - The simulator containing the object sending the request - The ID of the script making the request - The ID of the primitive containing the script making the request - The name of the primitive making the request - The name of the owner of the object making the request - The permissions being requested + Reference to the instantiated object - - Get the simulator containing the object sending the request + + + Initialize callbacks required for the TexturePipeline to operate + - - Get the ID of the script making the request + + + Shutdown the TexturePipeline and cleanup any callbacks or transfers + - - Get the ID of the primitive containing the script making the request + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request - - Get the name of the primitive making the request + + + Sends the actual request packet to the simulator + + The image to download + Type of the image to download, either a baked + avatar texture or a normal texture + Priority level of the download. Default is + 1,013,000.0f + Number of quality layers to discard. + This controls the end marker of the data sent + Packet number to start the download at. + This controls the start marker of the data sent + Sending a priority of 0 and a discardlevel of -1 aborts + download - - Get the name of the owner of the object making the request + + + Cancel a pending or in process texture request + + The texture assets unique ID - - Get the permissions being requested + + + Master Download Thread, Queues up downloads in the threadpool + - - Contains the data sent when a primitive sends a request - to an agent to open the specified URL + + + The worker thread that sends the request and handles timeouts + + A object containing the request details - + - Construct a new instance of the LoadUrlEventArgs + Handle responses from the simulator that tell us a texture we have requested is unable to be located + or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use - The name of the object sending the request - The ID of the object sending the request - The ID of the owner of the object sending the request - True if the object is owned by a group - The message sent with the request - The URL the object sent + The sender + The EventArgs object containing the packet data - - Get the name of the object sending the request + + + Handles the remaining Image data that did not fit in the initial ImageData packet + + The sender + The EventArgs object containing the packet data - - Get the ID of the object sending the request + + + Handle the initial ImageDataPacket sent from the simulator + + The sender + The EventArgs object containing the packet data - - Get the ID of the owner of the object sending the request + + Current number of pending and in-process transfers - - True if the object is owned by a group + + + A request task containing information and status of a request as it is processed through the + - - Get the message sent with the request + + The current which identifies the current status of the request - - Get the URL the object sent + + The Unique Request ID, This is also the Asset ID of the texture being requested - - The date received from an ImprovedInstantMessage + + The slot this request is occupying in the threadpoolSlots array - - - Construct a new instance of the InstantMessageEventArgs object - - the InstantMessage object - the simulator where the InstantMessage origniated + + The ImageType of the request. - - Get the InstantMessage object + + The callback to fire when the request is complete, will include + the and the + object containing the result data - - Get the simulator where the InstantMessage origniated + + If true, indicates the callback will be fired whenever new data is returned from the simulator. + This is used to progressively render textures as portions of the texture are received. - - Contains the currency balance + + An object that maintains the data of an request thats in-process. - + - Construct a new BalanceEventArgs object + Type of gesture step - The currenct balance - + - Get the currenct balance + Base class for gesture steps - - Contains the transaction summary when an item is purchased, - money is given, or land is purchased - - + - Construct a new instance of the MoneyBalanceReplyEventArgs object + Retururns what kind of gesture step this is - The ID of the transaction - True of the transaction was successful - The current currency balance - The meters credited - The meters comitted - A brief description of the transaction - - - Get the ID of the transaction - - - True of the transaction was successful - - - Get the remaining currency balance - - - Get the meters credited - - Get the meters comitted + + + Describes animation step of a gesture + - - Get the description of the transaction + + + If true, this step represents start of animation, otherwise animation stop + - - Data sent from the simulator containing information about your agent and active group information + + + Animation asset + - + - Construct a new instance of the AgentDataReplyEventArgs object + Animation inventory name - The agents first name - The agents last name - The agents active group ID - The group title of the agents active group - The combined group powers the agent has in the active group - The name of the group the agent has currently active - - Get the agents first name + + + Returns what kind of gesture step this is + - - Get the agents last name + + + Describes sound step of a gesture + - - Get the active group ID of your agent + + + Sound asset + - - Get the active groups title of your agent + + + Sound inventory name + - - Get the combined group powers of your agent + + + Returns what kind of gesture step this is + - - Get the active group name of your agent + + + Describes sound step of a gesture + - - Data sent by the simulator to indicate the active/changed animations - applied to your agent + + + Text to output in chat + - + - Construct a new instance of the AnimationsChangedEventArgs class + Returns what kind of gesture step this is - The dictionary that contains the changed animations - - Get the dictionary that contains the changed animations + + + Describes sound step of a gesture + - + - Data sent from a simulator indicating a collision with your agent + If true in this step we wait for all animations to finish - + - Construct a new instance of the MeanCollisionEventArgs class + If true gesture player should wait for the specified amount of time - The type of collision that occurred - The ID of the agent or object that perpetrated the agression - The ID of the Victim - The strength of the collision - The Time the collision occurred - - - Get the Type of collision - - - Get the ID of the agent or object that collided with your agent - - - Get the ID of the agent that was attacked - - - A value indicating the strength of the collision - - - Get the time the collision occurred - - Data sent to your agent when it crosses region boundaries - - + - Construct a new instance of the RegionCrossedEventArgs class + Time in seconds to wait if WaitForAnimation is false - The simulator your agent just left - The simulator your agent is now in - - - Get the simulator your agent just left - - Get the simulator your agent is now in - - - Data sent from the simulator when your agent joins a group chat session - - + - Construct a new instance of the GroupChatJoinedEventArgs class + Returns what kind of gesture step this is - The ID of the session - The name of the session - A temporary session id used for establishing new sessions - True of your agent successfully joined the session - - - Get the ID of the group chat session - - - Get the name of the session - - Get the temporary session ID used for establishing new sessions + + + Describes the final step of a gesture + - - True if your agent successfully joined the session + + + Returns what kind of gesture step this is + - - Data sent by the simulator containing urgent messages + + + Represents a sequence of animations, sounds, and chat actions + - + - Construct a new instance of the AlertMessageEventArgs class + Keyboard key that triggers the gestyre - The alert message - - Get the alert message + + + Modifier to the trigger key + - - Data sent by a script requesting to take or release specified controls to your agent + + + String that triggers playing of the gesture sequence + - + - Construct a new instance of the ScriptControlEventArgs class + Text that replaces trigger in chat once gesture is triggered - The controls the script is attempting to take or release to the agent - True if the script is passing controls back to the agent - True if the script is requesting controls be released to the script - - Get the controls the script is attempting to take or release to the agent + + + Sequence of gesture steps + - - True if the script is passing controls back to the agent + + + Constructs guesture asset + - - True if the script is requesting controls be released to the script + + + Constructs guesture asset + + A unique specific to this asset + A byte array containing the raw asset data - + - Data sent from the simulator to an agent to indicate its view limits + Encodes gesture asset suitable for uplaod - + - Construct a new instance of the CameraConstraintEventArgs class + Decodes gesture assset into play sequence - The collision plane + true if the asset data was decoded successfully - - Get the collision plane + + + Returns asset type + - + - Data containing script sensor requests which allow an agent to know the specific details - of a primitive sending script sensor requests + Permissions for control of object media - + - Construct a new instance of the ScriptSensorReplyEventArgs + Style of cotrols that shold be displayed to the user - The ID of the primitive sending the sensor - The ID of the group associated with the primitive - The name of the primitive sending the sensor - The ID of the primitive sending the sensor - The ID of the owner of the primitive sending the sensor - The position of the primitive sending the sensor - The range the primitive specified to scan - The rotation of the primitive sending the sensor - The type of sensor the primitive sent - The velocity of the primitive sending the sensor - - Get the ID of the primitive sending the sensor + + + Class representing media data for a single face + - - Get the ID of the group associated with the primitive + + Is display of the alternative image enabled - - Get the name of the primitive sending the sensor + + Should media auto loop - - Get the ID of the primitive sending the sensor + + Shoule media be auto played - - Get the ID of the owner of the primitive sending the sensor + + Auto scale media to prim face - - Get the position of the primitive sending the sensor + + Should viewer automatically zoom in on the face when clicked - - Get the range the primitive specified to scan + + Should viewer interpret first click as interaction with the media + or when false should the first click be treated as zoom in commadn - - Get the rotation of the primitive sending the sensor + + Style of controls viewer should display when + viewer media on this face - - Get the type of sensor the primitive sent + + Starting URL for the media - - Get the velocity of the primitive sending the sensor + + Currently navigated URL - - Contains the response data returned from the simulator in response to a + + Media height in pixes - - Construct a new instance of the AvatarSitResponseEventArgs object + + Media width in pixels - - Get the ID of the primitive the agent will be sitting on + + Who can controls the media - - True if the simulator Autopilot functions were involved + + Who can interact with the media - - Get the camera offset of the agent when seated + + Is URL whitelist enabled - - Get the camera eye offset of the agent when seated + + Array of URLs that are whitelisted - - True of the agent will be in mouselook mode when seated + + + Serialize to OSD + + OSDMap with the serialized data - - Get the position of the agent when seated + + + Deserialize from OSD data + + Serialized OSD data + Deserialized object - - Get the rotation of the agent when seated + + + Particle system specific enumerators, flags and methods. + - - Data sent when an agent joins a chat session your agent is currently participating in + + + Current version of the media data for the prim + - + - Construct a new instance of the ChatSessionMemberAddedEventArgs object + Array of media entries indexed by face number - The ID of the chat session - The ID of the agent joining - - Get the ID of the chat session + + - - Get the ID of the agent that joined + + - - Data sent when an agent exits a chat session your agent is currently participating in + + - - - Construct a new instance of the ChatSessionMemberLeftEventArgs object - - The ID of the chat session - The ID of the Agent that left + + - - Get the ID of the chat session + + - - Get the ID of the agent that left + + - - - Throttles the network traffic for various different traffic types. - Access this class through GridClient.Throttle - + + - - - Default constructor, uses a default high total of 1500 KBps (1536000) - + + - - - Constructor that decodes an existing AgentThrottle packet in to - individual values - - Reference to the throttle data in an AgentThrottle - packet - Offset position to start reading at in the - throttle data - This is generally not needed in clients as the server will - never send a throttle packet to the client + + - - Maximum bits per second for resending unacknowledged packets + + Foliage type for this primitive. Only applicable if this + primitive is foliage - - Maximum bits per second for LayerData terrain + + Unknown - - Maximum bits per second for LayerData wind data + + - - Maximum bits per second for LayerData clouds + + - - Unknown, includes object data + + - - Maximum bits per second for textures + + - - Maximum bits per second for downloaded assets + + - - Maximum bits per second the entire connection, divided up - between invidiual streams using default multipliers + + - - - Send an AgentThrottle packet to the current server using the - current values - + + - - - Send an AgentThrottle packet to the specified server using the - current values - + + - - - Convert the current throttle values to a byte array that can be put - in an AgentThrottle packet - - Byte array containing all the throttle values + + - - - Static pre-defined animations available to all agents - + + - - Agent with afraid expression on face + + - - Agent aiming a bazooka (right handed) + + - - Agent aiming a bow (left handed) + + Identifies the owner if audio or a particle system is + active - - Agent aiming a hand gun (right handed) + + - - Agent aiming a rifle (right handed) + + - - Agent with angry expression on face + + - - Agent hunched over (away) + + - - Agent doing a backflip + + - - Agent laughing while holding belly + + - - Agent blowing a kiss + + - - Agent with bored expression on face + + - - Agent bowing to audience + + - - Agent brushing himself/herself off + + - - Agent in busy mode + + - - Agent clapping hands + + - - Agent doing a curtsey bow + + + Default constructor + - - Agent crouching + + + Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters in to signed eight bit values + + Floating point parameter to pack + Signed eight bit value containing the packed parameter - - Agent crouching while walking + + + Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters from signed eight bit integers to floating point values + + Signed eight bit value to unpack + Unpacked floating point value - - Agent crying + + Uses basic heuristics to estimate the primitive shape - - Agent unanimated with arms out (e.g. setting appearance) + + + Texture animation mode + - - Agent re-animated after set appearance finished + + Disable texture animation - - Agent dancing + + Enable texture animation - - Agent dancing + + Loop when animating textures - - Agent dancing + + Animate in reverse direction - - Agent dancing + + Animate forward then reverse - - Agent dancing + + Slide texture smoothly instead of frame-stepping - - Agent dancing + + Rotate texture instead of using frames - - Agent dancing + + Scale texture instead of using frames - - Agent dancing + + + A single textured face. Don't instantiate this class yourself, use the + methods in TextureEntry + - - Agent on ground unanimated + + + Contains the definition for individual faces + + - - Agent boozing it up + + + + + - - Agent with embarassed expression on face + + - - Agent with afraid expression on face + + - - Agent with angry expression on face + + - - Agent with bored expression on face + + - - Agent crying + + - - Agent showing disdain (dislike) for something + + - - Agent with embarassed expression on face + + - - Agent with frowning expression on face + + - - Agent with kissy face + + - - Agent expressing laughgter + + - - Agent with open mouth + + In the future this will specify whether a webpage is + attached to this face - - Agent with repulsed expression on face + + - - Agent expressing sadness - - - Agent shrugging shoulders - - - Agent with a smile - - - Agent expressing surprise - - - Agent sticking tongue out - - - Agent with big toothy smile - - - Agent winking - - - Agent expressing worry - - - Agent falling down - - - Agent walking (feminine version) - - - Agent wagging finger (disapproval) - - - I'm not sure I want to know - - - Agent in superman position + + + Represents all of the texturable faces for an object + + Grid objects have infinite faces, with each face + using the properties of the default face unless set otherwise. So if + you have a TextureEntry with a default texture uuid of X, and face 18 + has a texture UUID of Y, every face would be textured with X except for + face 18 that uses Y. In practice however, primitives utilize a maximum + of nine faces - - Agent in superman position + + - - Agent greeting another + + - - Agent holding bazooka (right handed) + + + Constructor that takes a default texture UUID + + Texture UUID to use as the default texture - - Agent holding a bow (left handed) + + + Constructor that takes a TextureEntryFace for the + default face + + Face to use as the default face - - Agent holding a handgun (right handed) + + + Constructor that creates the TextureEntry class from a byte array + + Byte array containing the TextureEntry field + Starting position of the TextureEntry field in + the byte array + Length of the TextureEntry field, in bytes - - Agent holding a rifle (right handed) + + + This will either create a new face if a custom face for the given + index is not defined, or return the custom face for that index if + it already exists + + The index number of the face to create or + retrieve + A TextureEntryFace containing all the properties for that + face - - Agent throwing an object (right handed) + + + + + + - - Agent in static hover + + + + + - - Agent hovering downward + + + + + - - Agent hovering upward + + + + + - - Agent being impatient + + + Controls the texture animation of a particular prim + - - Agent jumping + + - - Agent jumping with fervor + + - - Agent point to lips then rear end + + - - Agent landing from jump, finished flight, etc + + - - Agent laughing + + - - Agent landing from jump, finished flight, etc + + - - Agent sitting on a motorcycle + + - + + + + - - Agent moving head side to side - - - Agent moving head side to side with unhappy expression - - - Agent taunting another + + + + + - + + Complete structure for the particle system - - Agent giving peace sign + + Particle Flags + There appears to be more data packed in to this area + for many particle systems. It doesn't appear to be flag values + and serialization breaks unless there is a flag for every + possible bit so it is left as an unsigned integer - - Agent pointing at self + + pattern of particles - - Agent pointing at another + + A representing the maximimum age (in seconds) particle will be displayed + Maximum value is 30 seconds - - Agent preparing for jump (bending knees) + + A representing the number of seconds, + from when the particle source comes into view, + or the particle system's creation, that the object will emits particles; + after this time period no more particles are emitted - - Agent punching with left hand + + A in radians that specifies where particles will not be created - - Agent punching with right hand + + A in radians that specifies where particles will be created - - Agent acting repulsed + + A representing the number of seconds between burts. - - Agent trying to be Chuck Norris + + A representing the number of meters + around the center of the source where particles will be created. - - Rocks, Paper, Scissors 1, 2, 3 + + A representing in seconds, the minimum speed between bursts of new particles + being emitted - - Agent with hand flat over other hand + + A representing in seconds the maximum speed of new particles being emitted. - - Agent with fist over other hand + + A representing the maximum number of particles emitted per burst - - Agent with two fingers spread over other hand + + A which represents the velocity (speed) from the source which particles are emitted - - Agent running + + A which represents the Acceleration from the source which particles are emitted - - Agent appearing sad + + The Key of the texture displayed on the particle - - Agent saluting + + The Key of the specified target object or avatar particles will follow - - Agent shooting bow (left handed) + + Flags of particle from - - Agent cupping mouth as if shouting + + Max Age particle system will emit particles for - - Agent shrugging shoulders + + The the particle has at the beginning of its lifecycle - - Agent in sit position + + The the particle has at the ending of its lifecycle - - Agent in sit position (feminine) + + A that represents the starting X size of the particle + Minimum value is 0, maximum value is 4 - - Agent in sit position (generic) + + A that represents the starting Y size of the particle + Minimum value is 0, maximum value is 4 - - Agent sitting on ground + + A that represents the ending X size of the particle + Minimum value is 0, maximum value is 4 - - Agent sitting on ground + + A that represents the ending Y size of the particle + Minimum value is 0, maximum value is 4 - + + Decodes a byte[] array into a ParticleSystem Object + ParticleSystem object + Start position for BitPacker - - Agent sleeping on side - - - Agent smoking - - - Agent inhaling smoke + + + Generate byte[] array from particle data + + Byte array - + + Particle source pattern - - Agent taking a picture + + None - - Agent standing + + Drop particles from source position with no force - - Agent standing up + + "Explode" particles in all directions - - Agent standing + + Particles shoot across a 2D area - - Agent standing + + Particles shoot across a 3D Cone - - Agent standing + + Inverse of AngleCone (shoot particles everywhere except the 3D cone defined - - Agent standing + + + Particle Data Flags + - - Agent stretching + + None - - Agent in stride (fast walk) + + Interpolate color and alpha from start to end - - Agent surfing + + Interpolate scale from start to end - - Agent acting surprised + + Bounce particles off particle sources Z height - - Agent striking with a sword + + velocity of particles is dampened toward the simulators wind - - Agent talking (lips moving) + + Particles follow the source - - Agent throwing a tantrum + + Particles point towards the direction of source's velocity - - Agent throwing an object (right handed) + + Target of the particles - - Agent trying on a shirt + + Particles are sent in a straight line - - Agent turning to the left + + Particles emit a glow - - Agent turning to the right + + used for point/grab/touch - - Agent typing + + + Particle Flags Enum + - - Agent walking + + None - - Agent whispering + + Acceleration and velocity for particles are + relative to the object rotation - - Agent whispering with fingers in mouth + + Particles use new 'correct' angle parameters - - Agent winking + + + Parameters used to construct a visual representation of a primitive + - - Agent winking + + - - Agent worried + + - - Agent nodding yes + + - - Agent nodding yes with happy face + + - - Agent floating with legs and arms crossed + + - - - A dictionary containing all pre-defined animations - - A dictionary containing the pre-defined animations, - where the key is the animations ID, and the value is a string - containing a name to identify the purpose of the animation + + - - - Index of TextureEntry slots for avatar appearances - + + - - - Bake layers for avatar appearance - + + - - - Default constructor - - A reference to our agent + + - - - Contains information about a wearable inventory item - + + - - Inventory ItemID of the wearable + + - - AssetID of the wearable asset + + - - WearableType of the wearable + + - - AssetType of the wearable + + - - Asset data for the wearable + + - - - Data collected from visual params for each wearable - needed for the calculation of the color - + + - - - Holds a texture assetID and the data needed to bake this layer into - an outfit texture. Used to keep track of currently worn textures - and baking data - + + - - A texture AssetID + + - - Asset data for the texture + + - - Collection of alpha masks that needs applying + + - - Tint that should be applied to the texture + + - - Maximum number of concurrent downloads for wearable assets and textures + + Attachment point to an avatar - - Maximum number of concurrent uploads for baked textures + + - - Timeout for fetching inventory listings + + - - Timeout for fetching a single wearable, or receiving a single packet response + + - - Timeout for fetching a single texture + + - - Timeout for uploading a single baked texture + + + Information on the flexible properties of a primitive + - - Number of times to retry bake upload + + - - When changing outfit, kick off rebake after - 20 seconds has passed since the last change + + - - Total number of wearables for each avatar + + - - Total number of baked textures on each avatar + + - - Total number of wearables per bake layer + + - - Total number of textures on an avatar, baked or not + + - - Mapping between BakeType and AvatarTextureIndex + + + Default constructor + - - Map of what wearables are included in each bake + + + + + + - - Magic values to finalize the cache check hashes for each - bake + + + + + - - Default avatar texture, used to detect when a custom - texture is not set for a face + + + + + - - The event subscribers. null if no subcribers + + + Information on the light properties of a primitive + - - Thread sync lock object + + - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - A cache of wearables currently being worn - - - A cache of textures currently being worn - - - Incrementing serial number for AgentCachedTexture packets + + - - Incrementing serial number for AgentSetAppearance packets + + - - Indicates whether or not the appearance thread is currently - running, to prevent multiple appearance threads from running - simultaneously + + - - Reference to our agent + + - + - Timer used for delaying rebake on changing outfit + Default constructor - + - Main appearance thread + + + - - Triggered when an AgentWearablesUpdate packet is received, - telling us what our avatar is currently wearing - request. - - - Raised when an AgentCachedTextureResponse packet is - received, giving a list of cached bakes that were found on the - simulator - request. - - - - Raised when appearance data is sent to the simulator, also indicates - the main appearance thread is finished. - - request. - + - Triggered when the simulator requests the agent rebake its appearance. + - + - + - Returns true if AppearanceManager is busy and trying to set or change appearance will fail + + - - Raises the AgentWearablesReply event - An AgentWearablesReplyEventArgs object containing the - data returned from the data server - - - Raises the CachedBakesReply event - An AgentCachedBakesReplyEventArgs object containing the - data returned from the data server AgentCachedTextureResponse - - - Raises the AppearanceSet event - An AppearanceSetEventArgs object indicating if the operatin was successfull - - - Raises the RebakeAvatarRequested event - An RebakeAvatarTexturesEventArgs object containing the - data returned from the data server - - + - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread + Information on the sculpt properties of a sculpted primitive - + - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread + Default constructor - Unused parameter - + - Starts the appearance setting thread + + + - + - Starts the appearance setting thread + Render inside out (inverts the normals). - True to force rebaking, otherwise false - + - Ask the server what textures our agent is currently wearing + Render an X axis mirror of the sculpty. - + - Build hashes out of the texture assetIDs for each baking layer to - ask the simulator whether it has cached copies of each baked texture + Extended properties to describe an object - - - Returns the AssetID of the asset that is currently being worn in a - given WearableType slot - - WearableType slot to get the AssetID for - The UUID of the asset being worn in the given slot, or - UUID.Zero if no wearable is attached to the given slot or wearables - have not been downloaded yet + + - - - Add a wearable to the current outfit and set appearance - - Wearable to be added to the outfit + + - - - Add a list of wearables to the current outfit and set appearance - - List of wearable inventory items to - be added to the outfit + + - - - Remove a wearable from the current outfit and set appearance - - Wearable to be removed from the outfit + + - - - Removes a list of wearables from the current outfit and set appearance - - List of wearable inventory items to - be removed from the outfit + + - - - Replace the current outfit with a list of wearables and set appearance - - List of wearable inventory items that - define a new outfit + + - - - Checks if an inventory item is currently being worn - - The inventory item to check against the agent - wearables - The WearableType slot that the item is being worn in, - or WearbleType.Invalid if it is not currently being worn + + - - - Returns a copy of the agents currently worn wearables - - A copy of the agents currently worn wearables - Avoid calling this function multiple times as it will make - a copy of all of the wearable data each time + + - - - Calls either or - depending on the value of - replaceItems - - List of wearable inventory items to add - to the outfit or become a new outfit - True to replace existing items with the - new list of items, false to add these items to the existing outfit + + - - - Adds a list of attachments to our agent - - A List containing the attachments to add - If true, tells simulator to remove existing attachment - first + + - - - Attach an item to our agent at a specific attach point - - A to attach - the on the avatar - to attach the item to + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Attach an item to our agent specifying attachment details + Default constructor - The of the item to attach - The attachments owner - The name of the attachment - The description of the attahment - The to apply when attached - The of the attachment - The on the agent - to attach the item to - + - Detach an item from our agent using an object + Set the properties that are set in an ObjectPropertiesFamily packet - An object + that has + been partially filled by an ObjectPropertiesFamily packet - + - Detach an item from our agent + - The inventory itemID of the item to detach - + - Inform the sim which wearables are part of our current outfit + - + + + + + + + + + + + + + + + + + + + - Replaces the Wearables collection with a list of new wearable items + - Wearable items to replace the Wearables collection with - + - Calculates base color/tint for a specific wearable - based on its params + Map layer request type - All the color info gathered from wearable's VisualParams - passed as list of ColorParamInfo tuples - Base color/tint for the wearable - - - - Blocking method to populate the Wearables dictionary - - True on success, otherwise false - - - Blocking method to populate the Textures array with cached bakes - - True on success, otherwise false + + Objects and terrain are shown - - - Populates textures and visual params from a decoded asset - - Wearable to decode + + Only the terrain is shown, no objects - - - Blocking method to download and parse currently worn wearable assets - - True on success, otherwise false + + Overlay showing land for sale and for auction - + - Get a list of all of the textures that need to be downloaded for a - single bake layer + Type of grid item, such as telehub, event, populator location, etc. - Bake layer to get texture AssetIDs for - A list of texture AssetIDs to download - - - Helper method to lookup the TextureID for a single layer and add it - to a list if it is not already present - - - - - + + Telehub - - - Blocking method to download all of the textures needed for baking - the given bake layers - - A list of layers that need baking - No return value is given because the baking will happen - whether or not all textures are successfully downloaded + + PG rated event - - - Blocking method to create and upload baked textures for all of the - missing bakes - - True on success, otherwise false + + Mature rated event - - - Blocking method to create and upload a baked texture for a single - bake layer - - Layer to bake - True on success, otherwise false + + Popular location - - - Blocking method to upload a baked texture - - Five channel JPEG2000 texture data to upload - UUID of the newly created asset on success, otherwise UUID.Zero + + Locations of avatar groups in a region - - - Creates a dictionary of visual param values from the downloaded wearables - - A dictionary of visual param indices mapping to visual param - values for our agent that can be fed to the Baker class + + Land for sale - - - Create an AgentSetAppearance packet from Wearables data and the - Textures array and send it - + + Classified ad - - - Converts a WearableType to a bodypart or clothing WearableType - - A WearableType - AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown + + Adult rated event - - - Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex - - A BakeType - The AvatarTextureIndex slot that holds the given BakeType + + Adult land for sale - + - Gives the layer number that is used for morph mask + Information about a region on the grid map - >A BakeType - Which layer number as defined in BakeTypeToTextures is used for morph mask - - - Converts a BakeType to a list of the texture slots that make up that bake - - A BakeType - A list of texture slots that are inputs for the given bake + + Sim X position on World Map - - Contains the Event data returned from the data server from an AgentWearablesRequest + + Sim Y position on World Map - - Construct a new instance of the AgentWearablesReplyEventArgs class + + Sim Name (NOTE: In lowercase!) - - Contains the Event data returned from the data server from an AgentCachedTextureResponse + + - - Construct a new instance of the AgentCachedBakesReplyEventArgs class + + Appears to always be zero (None) - - Contains the Event data returned from an AppearanceSetRequest + + Sim's defined Water Height - - - Triggered when appearance data is sent to the sim and - the main appearance thread is done. - Indicates whether appearance setting was successful + + - - Indicates whether appearance setting was successful + + UUID of the World Map image - - Contains the Event data returned from the data server from an RebakeAvatarTextures + + Unique identifier for this region, a combination of the X + and Y position - + - Triggered when the simulator sends a request for this agent to rebake - its appearance + - The ID of the Texture Layer to bake - - - The ID of the Texture Layer to bake + - + - Class that handles the local asset cache + + - + - Default constructor + - A reference to the GridClient object + + - + - Helper class for sorting files by their last accessed time + Visual chunk of the grid map - + - Allows setting weather to periodicale prune the cache if it grows too big - Default is enabled, when caching is enabled + Base class for Map Items - - - How long (in ms) between cache checks (default is 5 min.) - + + The Global X position of the item - - - Disposes cleanup timer - + + The Global Y position of the item - - - Only create timer when needed - + + Get the Local X position of the item - - - Return bytes read from the local asset cache, null if it does not exist - - UUID of the asset we want to get - Raw bytes of the asset, or null on failure + + Get the Local Y position of the item - - - Returns ImageDownload object of the - image from the local image cache, null if it does not exist - - UUID of the image we want to get - ImageDownload object containing the image, or null on failure + + Get the Handle of the region - + - Constructs a file name of the cached asset + Represents an agent or group of agents location - UUID of the asset - String with the file name of the cahced asset - + - Saves an asset to the local cache + Represents a Telehub location - UUID of the asset - Raw bytes the asset consists of - Weather the operation was successfull - + - Get the file name of the asset stored with gived UUID + Represents a non-adult parcel of land for sale - UUID of the asset - Null if we don't have that UUID cached on disk, file name if found in the cache folder - + - Checks if the asset exists in the local cache + Represents an Adult parcel of land for sale - UUID of the asset - True is the asset is stored in the cache, otherwise false - + - Wipes out entire cache + Represents a PG Event - + - Brings cache size to the 90% of the max size + Represents a Mature event - + - Asynchronously brings cache size to the 90% of the max size + Represents an Adult event - + - Adds up file sizes passes in a FileInfo array + Manages grid-wide tasks such as the world map - - - Checks whether caching is enabled - + + The event subscribers. null if no subcribers - - - Periodically prune the cache - + + Raises the CoarseLocationUpdate event + A CoarseLocationUpdateEventArgs object containing the + data sent by simulator - - - Nicely formats file sizes - - Byte size we want to output - String with humanly readable file size + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - OK + + Raises the GridRegion event + A GridRegionEventArgs object containing the + data sent by simulator - - Transfer completed + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the GridLayer event + A GridLayerEventArgs object containing the + data sent by simulator - - Unknown error occurred + + Thread sync lock object - - Equivalent to a 404 error + + The event subscribers. null if no subcribers - - Client does not have permission for that resource + + Raises the GridItems event + A GridItemEventArgs object containing the + data sent by simulator - - Unknown status + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the RegionHandleReply event + A RegionHandleReplyEventArgs object containing the + data sent by simulator - - Unknown + + Thread sync lock object - - Virtually all asset transfers use this channel + + A dictionary of all the regions, indexed by region name - - - + + A dictionary of all the regions, indexed by region handle - + + Constructor + Instance of GridClient object to associate with this GridManager instance - - Asset from the asset server - - - Inventory item - - - Estate asset, such as an estate covenant - - + + + - + + Request a map layer + The name of the region + The type of layer - + + + + + + + + - + + + + + + + - + + + + + - + + Request data for all mainland (Linden managed) simulators - + + Request the region handle for the specified region UUID + UUID of the region to look up - + - Image file format + Get grid region information using the region name, this function + will block until it can find the region or gives up + Name of sim you're looking for + Layer that you are requesting + Will contain a GridRegion for the sim you're + looking for if successful, otherwise an empty structure + True if the GridRegion was successfully fetched, otherwise + false - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Number of milliseconds passed since the last transfer - packet was received + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Raised when the simulator sends a + containing the location of agents in the simulator - - - + + Raised when the simulator sends a Region Data in response to + a Map request - - - - - - - - - - - + + Raised when the simulator sends GridLayer object containing + a map tile coordinates and texture information - - - + + Raised when the simulator sends GridItems object containing + details on events, land sales at a specific location - - - Default constructor - - A reference to the GridClient object + + Raised in response to a Region lookup - - - Callback used for various asset download requests - - Transfer information - Downloaded asset, null on fail + + Unknown - - - Callback used upon competition of baked texture upload - - Asset UUID of the newly uploaded baked texture + + Current direction of the sun - - Number of milliseconds to wait for a transfer header packet if out of order data was received + + Current angular velocity of the sun - - The event subscribers. null if no subcribers + + Current world time - - Thread sync lock object + + + Main class to expose grid functionality to clients. All of the + classes needed for sending and receiving data are accessible through + this class. + + + + // Example minimum code required to instantiate class and + // connect to a simulator. + using System; + using System.Collections.Generic; + using System.Text; + using OpenMetaverse; + + namespace FirstBot + { + class Bot + { + public static GridClient Client; + static void Main(string[] args) + { + Client = new GridClient(); // instantiates the GridClient class + // to the global Client object + // Login to Simulator + Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); + // Wait for a Keypress + Console.ReadLine(); + // Logout of simulator + Client.Network.Logout(); + } + } + } + + - - The event subscribers. null if no subcribers + + Networking subsystem - - Thread sync lock object + + Settings class including constant values and changeable + parameters for everything - - The event subscribers. null if no subcribers + + Parcel (subdivided simulator lots) subsystem - - Thread sync lock object - - - The event subscribers. null if no subcribers + + Our own avatars subsystem - - Thread sync lock object + + Other avatars subsystem - - The event subscribers. null if no subcribers + + Estate subsystem - - Thread sync lock object + + Friends list subsystem - - Texture download cache + + Grid (aka simulator group) subsystem - - Raised when the simulator responds sends + + Object subsystem - - Raised during upload completes + + Group subsystem - - Raised during upload with progres update + + Asset subsystem - - Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + Appearance subsystem - - Fired when a texture is in the process of being downloaded by the TexturePipeline class + + Inventory subsystem - - Raises the XferReceived event - A XferReceivedEventArgs object containing the - data returned from the simulator + + Directory searches including classifieds, people, land + sales, etc - - Raises the AssetUploaded event - A AssetUploadedEventArgs object containing the - data returned from the simulator + + Handles land, wind, and cloud heightmaps - - Raises the UploadProgress event - A UploadProgressEventArgs object containing the - data returned from the simulator + + Handles sound-related networking - - Raises the InitiateDownload event - A InitiateDownloadEventArgs object containing the - data returned from the simulator + + Throttling total bandwidth usage, or allocating bandwidth + for specific data stream types - - Raises the ImageReceiveProgress event - A ImageReceiveProgressEventArgs object containing the - data returned from the simulator + + + Default constructor + - + - Request an asset download + Return the full name of this instance - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - The callback to fire when the simulator responds with the asset data + Client avatars full name - + - Request an asset download + Attempts to convert an LLSD structure to a known Packet type - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - The callback to fire when the simulator responds with the asset data + Event name, this must match an actual + packet name for a Packet to be successfully built + LLSD to convert to a Packet + A Packet on success, otherwise null - + - Request an asset download + Class that handles the local asset cache - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - UUID of the transaction - The callback to fire when the simulator responds with the asset data - + - Request an asset download through the almost deprecated Xfer system + Default constructor - Filename of the asset to request - Whether or not to delete the asset - off the server after it is retrieved - Use large transfer packets or not - UUID of the file to request, if filename is - left empty - Asset type of vFileID, or - AssetType.Unknown if filename is not empty - Sets the FilePath in the request to Cache - (4) if true, otherwise Unknown (0) is used - - + A reference to the GridClient object - + + Disposes cleanup timer - Use UUID.Zero if you do not have the - asset ID but have all the necessary permissions - The item ID of this asset in the inventory - Use UUID.Zero if you are not requesting an - asset from an object inventory - The owner of this asset - Asset type - Whether to prioritize this asset download or not - - - + - Used to force asset data into the PendingUpload property, ie: for raw terrain uploads + Only create timer when needed - An AssetUpload object containing the data to upload to the simulator - + - Request an asset be uploaded to the simulator + Return bytes read from the local asset cache, null if it does not exist - The Object containing the asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired + UUID of the asset we want to get + Raw bytes of the asset, or null on failure - + - Request an asset be uploaded to the simulator + Returns ImageDownload object of the + image from the local image cache, null if it does not exist - The of the asset being uploaded - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired + UUID of the image we want to get + ImageDownload object containing the image, or null on failure - + - Request an asset be uploaded to the simulator + Constructs a file name of the cached asset - - - Asset type to upload this data as - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired + UUID of the asset + String with the file name of the cahced asset - + - Initiate an asset upload + Saves an asset to the local cache - The ID this asset will have if the - upload succeeds - Asset type to upload this data as - Raw asset data to upload - Whether to store this asset on the local - simulator or the grid-wide asset server - The tranaction id for the upload - The transaction ID of this transfer + UUID of the asset + Raw bytes the asset consists of + Weather the operation was successfull - + - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator + Get the file name of the asset stored with gived UUID - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress - transfer. - A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority - indicating an off-by-one error. - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - Request an image and fire a callback when the request is complete - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - - Request an image and use an inline anonymous method to handle the downloaded texture data - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - ); - - Request a texture, decode the texture to a bitmap image and apply it to a imagebox - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - ManagedImage imgData; - Image bitmap; - if (state == TextureRequestState.Finished) - { - OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); - picInsignia.Image = bitmap; - } - } - } - + UUID of the asset + Null if we don't have that UUID cached on disk, file name if found in the cache folder - + - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator + Checks if the asset exists in the local cache - The of the texture asset to download - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data + UUID of the asset + True is the asset is stored in the cache, otherwise false - + - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator + Wipes out entire cache - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - + - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator + Brings cache size to the 90% of the max size - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - + - Cancel a texture request + Asynchronously brings cache size to the 90% of the max size - The texture assets - + - Lets TexturePipeline class fire the progress event + Adds up file sizes passes in a FileInfo array - The texture ID currently being downloaded - the number of bytes transferred - the total number of bytes expected - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Checks whether caching is enabled + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Xfer data - - - Upload data - - - Filename used on the simulator - - - Filename used by the client - - - UUID of the image that is in progress - - - Number of bytes received so far - - - Image size in bytes - - - - Avatar profile flags - - - - - Represents an avatar (other than your own) - - - + - Default constructor + Periodically prune the cache - + - Positive and negative ratings + Nicely formats file sizes + Byte size we want to output + String with humanly readable file size - - Positive ratings for Behavior - - - Negative ratings for Behavior - - - Positive ratings for Appearance - - - Negative ratings for Appearance - - - Positive ratings for Building - - - Negative ratings for Building - - - Positive ratings given by this avatar - - - Negative ratings given by this avatar - - + - Avatar properties including about text, profile URL, image IDs and - publishing settings + Allows setting weather to periodicale prune the cache if it grows too big + Default is enabled, when caching is enabled - - First Life about text - - - First Life image ID - - + + How long (in ms) between cache checks (default is 5 min.) - + + Helper class for sorting files by their last accessed time - + + Extract the avatar UUID encoded in a SIP URI + + - + + Represents an LSL Text object containing a string of UTF encoded characters - - Profile image ID - - - Flags of the profile - - - Web URL for this profile - - - Should this profile be published on the web - - - Avatar Online Status + + A string of characters represting the script contents - - Is this a mature profile + + Initializes a new AssetScriptText object - + + Initializes a new AssetScriptText object with parameters + A unique specific to this asset + A byte array containing the raw asset data - + + Initializes a new AssetScriptText object with parameters + A string containing the scripts contents - + - Avatar interests including spoken languages, skills, and "want to" - choices + Encode a string containing the scripts contents into byte encoded AssetData - - Languages profile field - - + + Decode a byte array containing the scripts contents into a string + true if decoding is successful - - - + + Override the base classes AssetType - + + NetworkManager is responsible for managing the network layer of + OpenMetaverse. It tracks all the server connections, serializes + outgoing traffic and deserializes incoming traffic, and provides + instances of delegates for network-related events. - - + Login Routines - - Groups that this avatar is a member of + + The event subscribers, null of no subscribers - - Positive and negative ratings + + Raises the PacketSent Event + A PacketSentEventArgs object containing + the data sent from the simulator - - Avatar properties including about text, profile URL, image IDs and - publishing settings + + Thread sync lock object - - Avatar interests including spoken languages, skills, and "want to" - choices + + The event subscribers, null of no subscribers - - Movement control flags for avatars. Typically not set or used by - clients. To move your avatar, use Client.Self.Movement instead + + Raises the LoggedOut Event + A LoggedOutEventArgs object containing + the data sent from the simulator - - - Contains the visual parameters describing the deformation of the avatar - + + Thread sync lock object - - First name + + The event subscribers, null of no subscribers - - Last name + + Raises the SimConnecting Event + A SimConnectingEventArgs object containing + the data sent from the simulator - - Full name + + Thread sync lock object - - Active group + + The event subscribers, null of no subscribers - - - Holds group information for Avatars such as those you might find in a profile - + + Raises the SimConnected Event + A SimConnectedEventArgs object containing + the data sent from the simulator - - true of Avatar accepts group notices + + Thread sync lock object - - Groups Key + + The event subscribers, null of no subscribers - - Texture Key for groups insignia + + Raises the SimDisconnected Event + A SimDisconnectedEventArgs object containing + the data sent from the simulator - - Name of the group + + Thread sync lock object - - Powers avatar has in the group + + The event subscribers, null of no subscribers - - Avatars Currently selected title + + Raises the Disconnected Event + A DisconnectedEventArgs object containing + the data sent from the simulator - - true of Avatar has chosen to list this in their profile + + Thread sync lock object - - - Contains an animation currently being played by an agent - + + The event subscribers, null of no subscribers - - The ID of the animation asset + + Raises the SimChanged Event + A SimChangedEventArgs object containing + the data sent from the simulator - - A number to indicate start order of currently playing animations - On Linden Grids this number is unique per region, with OpenSim it is per client + + Thread sync lock object - + + The event subscribers, null of no subscribers + + + Raises the EventQueueRunning Event + A EventQueueRunningEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + All of the simulators we are currently connected to + + + Handlers for incoming capability events + + + Handlers for incoming packets + + + Incoming packets that are awaiting handling + + + Outgoing packets that are awaiting handling + + + Default constructor + Reference to the GridClient object - + - Holds group information on an individual profile pick + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + Packet type to trigger events for + Callback to fire when a packet of this type + is received - + - Retrieve friend status notifications, and retrieve avatar names and - profiles + Unregister an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + Packet type this callback is registered with + Callback to stop firing events for - + - Represents other avatars + Register a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library - - - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers + Name of the CAPS event to register a handler for + Callback to fire when a CAPS event is received - - Thread sync lock object + + + Unregister a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event this callback is + registered with + Callback to stop firing events for - - The event subscribers, null of no subscribers + + + Send a packet to the simulator the avatar is currently occupying + + Packet to send - - Thread sync lock object + + + Send a packet to a specified simulator + + Packet to send + Simulator to send the packet to - - The event subscribers, null of no subscribers + + + Connect to a simulator + + IP address to connect to + Port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null - - Thread sync lock object + + + Connect to a simulator + + IP address and port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null - - The event subscribers, null of no subscribers + + + Initiate a blocking logout request. This will return when the logout + handshake has completed or when Settings.LOGOUT_TIMEOUT + has expired and the network layer is manually shut down + - - Thread sync lock object + + + Initiate the logout process. Check if logout succeeded with the + OnLogoutReply event, and if this does not fire the + Shutdown() function needs to be manually called + - - The event subscribers, null of no subscribers + + + Close a connection to the given simulator + + + - - Thread sync lock object + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown - - The event subscribers, null of no subscribers + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + Shutdown message - - Thread sync lock object + + + Searches through the list of currently connected simulators to find + one attached to the given IPEndPoint + + IPEndPoint of the Simulator to search for + A Simulator reference on success, otherwise null - - The event subscribers, null of no subscribers + + + Fire an event when an event queue connects for capabilities + + Simulator the event queue is attached to - - Thread sync lock object + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The event subscribers, null of no subscribers + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Thread sync lock object + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The event subscribers, null of no subscribers + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Thread sync lock object + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The event subscribers, null of no subscribers + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Thread sync lock object + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + The event subscribers, null of no subscribers - - Thread sync lock object - - - The event subscribers, null of no subscribers + + Raises the LoginProgress Event + A LoginProgressEventArgs object containing + the data sent from the simulator - + Thread sync lock object - - The event subscribers, null of no subscribers + + Seed CAPS URL returned from the login server - - Thread sync lock object + + A list of packets obtained during the login process which + networkmanager will log but not process - - Raised when the simulator sends us data containing - an agents animation playlist + + + Generate sane default values for a login request + + Account first name + Account last name + Account password + Client application name + Client application version + A populated struct containing + sane defaults - - Raised when the simulator sends us data containing - the appearance information for an agent + + + Simplified login that takes the most common and required fields + + Account first name + Account last name + Account password + Client application name + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error - - Raised when the simulator sends us data containing - agent names/id values + + + Simplified login that takes the most common fields along with a + starting location URI, and can accept an MD5 string instead of a + plaintext password + + Account first name + Account last name + Account password or MD5 hash of the password + such as $1$1682a1e45e9f957dcdf0bb56eb43319c + Client application name + Starting location URI that can be built with + StartLocation() + Client application version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error - - Raised when the simulator sends us data containing - the interests listed in an agents profile + + + Login that takes a struct of all the values that will be passed to + the login server + + The values that will be passed to the login + server, all fields must be set even if they are String.Empty + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error - - Raised when the simulator sends us data containing - profile property information for an agent + + + Build a start location URI for passing to the Login function + + Name of the simulator to start in + X coordinate to start at + Y coordinate to start at + Z coordinate to start at + String with a URI that can be used to login to a specified + location - - Raised when the simulator sends us data containing - the group membership an agent is a member of + + + Handles response from XML-RPC login replies + - + + + Handle response from LLSD login replies + + + + + + + + Get current OS + + Either "Win" or "Linux" + + + + Get clients default Mac Address + + A string containing the first found Mac Address + + Raised when the simulator sends us data containing - name/id pair + ... - + Raised when the simulator sends us data containing - the objects and effect when an agent is pointing at + ... - + Raised when the simulator sends us data containing - the objects and effect when an agent is looking at + ... - + Raised when the simulator sends us data containing - an agents viewer effect information + ... - + Raised when the simulator sends us data containing - the top picks from an agents profile + ... - + Raised when the simulator sends us data containing - the Pick details + ... - + Raised when the simulator sends us data containing - the classified ads an agent has placed + ... - + Raised when the simulator sends us data containing - the details of a classified ad + ... - - Raises the AvatarAnimation Event - An AvatarAnimationEventArgs object containing - the data sent from the simulator + + Unique identifier associated with our connections to + simulators - - Raises the AvatarAppearance Event - A AvatarAppearanceEventArgs object containing - the data sent from the simulator + + The simulator that the logged in avatar is currently + occupying - - Raises the UUIDNameReply Event - A UUIDNameReplyEventArgs object containing - the data sent from the simulator + + Shows whether the network layer is logged in to the + grid or not - - Raises the AvatarInterestsReply Event - A AvatarInterestsReplyEventArgs object containing - the data sent from the simulator + + Number of packets in the incoming queue - - Raises the AvatarPropertiesReply Event - A AvatarPropertiesReplyEventArgs object containing - the data sent from the simulator + + Number of packets in the outgoing queue - - Raises the AvatarGroupsReply Event - A AvatarGroupsReplyEventArgs object containing - the data sent from the simulator + + Raised when the simulator sends us data containing + ... - - Raises the AvatarPickerReply Event - A AvatarPickerReplyEventArgs object containing - the data sent from the simulator + + Called when a reply is received from the login server, the + login sequence will block until this event returns - - Raises the ViewerEffectPointAt Event - A ViewerEffectPointAtEventArgs object containing - the data sent from the simulator + + Current state of logging in - - Raises the ViewerEffectLookAt Event - A ViewerEffectLookAtEventArgs object containing - the data sent from the simulator + + Upon login failure, contains a short string key for the + type of login error that occurred - - Raises the ViewerEffect Event - A ViewerEffectEventArgs object containing - the data sent from the simulator + + The raw XML-RPC reply from the login server, exactly as it + was received (minus the HTTP header) - - Raises the AvatarPicksReply Event - A AvatarPicksReplyEventArgs object containing - the data sent from the simulator + + During login this contains a descriptive version of + LoginStatusCode. After a successful login this will contain the + message of the day, and after a failed login a descriptive error + message will be returned - - Raises the PickInfoReply Event - A PickInfoReplyEventArgs object containing - the data sent from the simulator + + + Explains why a simulator or the grid disconnected from us + - - Raises the AvatarClassifiedReply Event - A AvatarClassifiedReplyEventArgs object containing - the data sent from the simulator + + The client requested the logout or simulator disconnect - - Raises the ClassifiedInfoReply Event - A ClassifiedInfoReplyEventArgs object containing - the data sent from the simulator + + The server notified us that it is disconnecting - - Tracks the specified avatar on your map - Avatar ID to track + + Either a socket was closed or network traffic timed out - + + The last active simulator shut down + + - Request a single avatar name + Holds a simulator reference and a decoded packet, these structs are put in + the packet inbox for event handling - The avatar key to retrieve a name for - + + Reference to the simulator that this packet came from + + + Packet that needs to be processed + + - Request a list of avatar names + Holds a simulator reference and a serialized packet, these structs are put in + the packet outbox for sending - The avatar keys to retrieve names for - + + Reference to the simulator this packet is destined for + + + Packet that needs to be sent + + + Sequence number of the wrapped packet + + + Number of times this packet has been resent + + + Environment.TickCount when this packet was last sent over the wire + + - Start a request for Avatar Properties + - - + + + + + - + - Search for an avatar (first name, last name) + Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. - The name to search for - An ID to associate with this query - + - Start a request for Avatar Picks + Rotation Keyframe count (used internally) - UUID of the avatar - + - Start a request for Avatar Classifieds + Position Keyframe count (used internally) - UUID of the avatar - + - Start a request for details of a specific profile pick + Animation Priority - UUID of the avatar - UUID of the profile pick - + - Start a request for details of a specific profile classified - - UUID of the avatar - UUID of the profile classified - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Provides data for the event - The event occurs when the simulator sends - the animation playlist for an agent - - The following code example uses the and - properties to display the animation playlist of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; - private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) - { - // create a dictionary of "known" animations from the Animations class using System.Reflection - Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); - Type type = typeof(Animations); - System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - foreach (System.Reflection.FieldInfo field in fields) - { - systemAnimations.Add((UUID)field.GetValue(type), field.Name); - } - // find out which animations being played are known animations and which are assets - foreach (Animation animation in e.Animations) - { - if (systemAnimations.ContainsKey(animation.AnimationID)) - { - Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, - systemAnimations[animation.AnimationID], animation.AnimationSequence); - } - else - { - Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, - animation.AnimationID, animation.AnimationSequence); - } - } - } - - - - - Construct a new instance of the AvatarAnimationEventArgs class - - The ID of the agent - The list of animations to start - - - Get the ID of the agent - - - Get the list of animations to start - - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - - - - Construct a new instance of the AvatarAppearanceEventArgs class - - The simulator request was from - The ID of the agent - true of the agent is a trial account - The default agent texture - The agents appearance layer textures - The for the agent - - - Get the Simulator this request is from of the agent - - - Get the ID of the agent - - - true if the agent is a trial account - - - Get the default agent texture - - - Get the agents appearance layer textures - - - Get the for the agent - - - Represents the interests from the profile of an agent - - - Get the ID of the agent - - - The properties of an agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the avatar - - - - Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. - - - - - Searialize an animation asset into it's joints/keyframes/meta data - - - - - - - Rotation Keyframe count (used internally) - - - - - Position Keyframe count (used internally) - - - - - Animation Priority - - - - - The animation length in seconds. + The animation length in seconds. @@ -5430,9 +5184,15 @@ Contains an array of joints + + + Searialize an animation asset into it's joints/keyframes/meta data + + + - Variable length strings seem to be null terminated in the animation asset.. but.. + Variable length strings seem to be null terminated in the animation asset.. but.. use with caution, home grown. advances the index. @@ -5460,8 +5220,7 @@ Number of Keyframes Scaling Min to pass to the Uint16ToFloat method Scaling Max to pass to the Uint16ToFloat method - - + @@ -5475,7 +5234,7 @@ - Joint Animation Override? Was the same as the Priority in testing.. + Joint Animation Override? Was the same as the Priority in testing.. @@ -5504,6304 +5263,6652 @@ Poses set in the animation metadata for the hands. - + - Wrapper around a byte array that allows bit to be packed and unpacked - one at a time or by a variable amount. Useful for very tightly packed - data like LayerData packets + Manager class for our own avatar - - - Default constructor, initialize the bit packer / bit unpacker - with a byte array and starting position - - Byte array to pack bits in to or unpack from - Starting position in the byte array + + The event subscribers. null if no subcribers - - - + + Raises the ChatFromSimulator event + A ChatEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - Pack a floating point value in to the data - - Floating point value to pack + + Raises the ScriptDialog event + A SctriptDialogEventArgs object containing the + data returned from the data server - - - Pack part or all of an integer in to the data - - Integer containing the data to pack - Number of bits of the integer to pack + + Thread sync lock object - - - Pack part or all of an unsigned integer in to the data - - Unsigned integer containing the data to pack - Number of bits of the integer to pack + + The event subscribers. null if no subcribers - - - Pack a single bit in to the data - - Bit to pack + + Raises the ScriptQuestion event + A ScriptQuestionEventArgs object containing the + data returned from the data server - - - - - - - - - - - + + Thread sync lock object - - - - - - - - - - - + + The event subscribers. null if no subcribers - - - Unpacking a floating point value from the data - - Unpacked floating point value + + Raises the LoadURL event + A LoadUrlEventArgs object containing the + data returned from the data server - - - Unpack a variable number of bits from the data in to integer format - - Number of bits to unpack - An integer containing the unpacked bits - This function is only useful up to 32 bits + + Thread sync lock object - - - Unpack a variable number of bits from the data in to unsigned - integer format - - Number of bits to unpack - An unsigned integer containing the unpacked bits - This function is only useful up to 32 bits + + The event subscribers. null if no subcribers - - - Unpack a 16-bit signed integer - - 16-bit signed integer + + Raises the MoneyBalance event + A BalanceEventArgs object containing the + data returned from the data server - - - Unpack a 16-bit unsigned integer - - 16-bit unsigned integer + + Thread sync lock object - - - Unpack a 32-bit signed integer - - 32-bit signed integer + + The event subscribers. null if no subcribers - - - Unpack a 32-bit unsigned integer - - 32-bit unsigned integer + + Raises the MoneyBalanceReply event + A MoneyBalanceReplyEventArgs object containing the + data returned from the data server - - - Capabilities is the name of the bi-directional HTTP REST protocol - used to communicate non real-time transactions such as teleporting or - group messaging - + + Thread sync lock object - - - Default constructor - - - - - + + The event subscribers. null if no subcribers - - - Triggered when an event is received via the EventQueueGet - capability - - Event name - Decoded event data - The simulator that generated the event + + Raises the IM event + A InstantMessageEventArgs object containing the + data returned from the data server - - Reference to the simulator this system is connected to + + Thread sync lock object - - Capabilities URI this system was initialized with + + The event subscribers. null if no subcribers - - Whether the capabilities event queue is connected and - listening for incoming events + + Raises the TeleportProgress event + A TeleportEventArgs object containing the + data returned from the data server - - - Request the URI of a named capability - - Name of the capability to request - The URI of the requested capability, or String.Empty if - the capability does not exist + + Thread sync lock object - - - Process any incoming events, check to see if we have a message created for the event, - - - - - + + The event subscribers. null if no subcribers - - - Attempts to convert an LLSD structure to a known Packet type - - Event name, this must match an actual - packet name for a Packet to be successfully built - LLSD to convert to a Packet - A Packet on success, otherwise null + + Raises the AgentDataReply event + A AgentDataReplyEventArgs object containing the + data returned from the data server - - Origin position of this coordinate frame + + Thread sync lock object - - X axis of this coordinate frame, or Forward/At in grid terms + + The event subscribers. null if no subcribers - - Y axis of this coordinate frame, or Left in grid terms + + Raises the AnimationsChanged event + A AnimationsChangedEventArgs object containing the + data returned from the data server - - Z axis of this coordinate frame, or Up in grid terms + + Thread sync lock object - - - - Looking direction, must be a normalized vector - Up direction, must be a normalized vector + + The event subscribers. null if no subcribers - - - Align the coordinate frame X and Y axis with a given rotation - around the Z axis in radians - - Absolute rotation around the Z axis in - radians + + Raises the MeanCollision event + A MeanCollisionEventArgs object containing the + data returned from the data server - - - Access to the data server which allows searching for land, events, people, etc - + + Thread sync lock object - - - Constructs a new instance of the DirectoryManager class - - An instance of GridClient + + The event subscribers. null if no subcribers - - Classified Ad categories + + Raises the RegionCrossed event + A RegionCrossedEventArgs object containing the + data returned from the data server - - Classified is listed in the Any category + + Thread sync lock object - - Classified is shopping related + + The event subscribers. null if no subcribers - - Classified is + + Raises the GroupChatJoined event + A GroupChatJoinedEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the GroupChatLeft event + A GroupChatLeftEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the AlertMessage event + A AlertMessageEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - Event Categories + + The event subscribers. null if no subcribers - - - + + Raises the ScriptControlChange event + A ScriptControlEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - + + The event subscribers. null if no subcribers + + + Raises the CameraConstraint event + A CameraConstraintEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ScriptSensorReply event + A ScriptSensorReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AvatarSitResponse event + A AvatarSitResponseEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberAdded event + A ChatSessionMemberAddedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ChatSessionMemberLeft event + A ChatSessionMemberLeftEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Reference to the GridClient instance + + + Used for movement and camera tracking + + + Currently playing animations for the agent. Can be used to + check the current movement status such as walking, hovering, aiming, + etc. by checking against system animations found in the Animations class + + + Dictionary containing current Group Chat sessions and members + + + Constructor, setup callbacks for packets related to our avatar + A reference to the Class - + + Send a text message from the Agent to the Simulator + A containing the message + The channel to send the message on, 0 is the public channel. Channels above 0 + can be used however only scripts listening on the specified channel will see the message + Denotes the type of message being sent, shout, whisper, etc. - + + Request any instant messages sent while the client was offline to be resent. - + + Send an Instant Message to another Avatar + The recipients + A containing the message to send - + + Send an Instant Message to an existing group chat or conference chat + The recipients + A containing the message to send + IM session ID (to differentiate between IM windows) - + + Send an Instant Message + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + IDs of sessions for a conference - + + Send an Instant Message + The name this IM will show up as being from + Key of Avatar + Text message being sent + IM session ID (to differentiate between IM windows) + Type of instant message to send + Whether to IM offline avatars as well + Senders Position + RegionID Sender is In + Packed binary data that is specific to + the dialog type - + + Send an Instant Message to a group + of the group to send message to + Text Message being sent. - + + Send an Instant Message to a group the agent is a member of + The name this IM will show up as being from + of the group to send message to + Text message being sent - + + Send a request to join a group chat session + of Group to leave - + - Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. - Flags can be combined using the | (pipe) character, not all flags are available in all queries + Exit a group chat session. This will stop further Group chat messages + from being sent until session is rejoined. + of Group chat session to leave - - Query the People database - - + + Reply to script dialog questions. + Channel initial request came on + Index of button you're "clicking" + Label of button you're "clicking" + of Object that sent the dialog request + - + + Accept invite for to a chatterbox session + of session to accept invite to - - Query the Groups database - - - Query the Events database - - - Query the land holdings database for land owned by the currently connected agent - - + + Start a friends conference + List of UUIDs to start a conference with + the temportary session ID returned in the callback> - - Query the land holdings database for land which is owned by a Group - - - Specifies the query should pre sort the results based upon traffic - when searching the Places database - - + + Start a particle stream between an agent and an object + Key of the source agent + Key of the target object + + The type from the enum + A unique for this effect - + + Start a particle stream between an agent and an object + Key of the source agent + Key of the target object + A representing the beams offset from the source + A which sets the avatars lookat animation + of the Effect - + + Create a particle beam between an avatar and an primitive + The ID of source avatar + The ID of the target primitive + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam + - + + Create a particle swirl around a target position using a packet + global offset + A object containing the combined red, green, blue and alpha + color values of particle beam + a float representing the duration the parcicle beam will last + A Unique ID for the beam - - Specifies the query should pre sort the results in an ascending order when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the Name field when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels less than the specified Price will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels greater than the specified Size will be included when searching the land sales database. - This flag is only used when searching the land sales database - - + + Sends a request to sit on the specified object + of the object to sit on + Sit at offset - + + Follows a call to to actually sit on the object - - Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases + + Stands up from sitting on a prim or the ground + true of AgentUpdate was sent - + + Does a "ground sit" at the avatar's current position - + - Land types to search dataserver for + Starts or stops flying + True to start flying, false to stop flying - - Search Auction, Mainland and Estate - - - Land which is currently up for auction - - - Parcels which are on the mainland (Linden owned) continents - - - Parcels which are on privately owned simulators - - + - The content rating of the event + Starts or stops crouching + True to start crouching, false to stop crouching - - Event is PG - - - Event is Mature - - - Event is Adult - - + - Classified Ad Options + Starts a jump (begin holding the jump key) - There appear to be two formats the flags are packed in. - This set of flags is for the newer style - + + Use the autopilot sim function to move the avatar to a new + position. Uses double precision to get precise movements + The z value is currently not handled properly by the simulator + Global X coordinate to move to + Global Y coordinate to move to + Z coordinate to move to - + + Use the autopilot sim function to move the avatar to a new position + The z value is currently not handled properly by the simulator + Integer value for the global X coordinate to move to + Integer value for the global Y coordinate to move to + Floating-point value for the Z coordinate to move to - + + Use the autopilot sim function to move the avatar to a new position + The z value is currently not handled properly by the simulator + Integer value for the local X coordinate to move to + Integer value for the local Y coordinate to move to + Floating-point value for the Z coordinate to move to - + + Macro to cancel autopilot sim function + Not certain if this is how it is really done + true if control flags were set and AgentUpdate was sent to the simulator + + + Grabs an object + an unsigned integer of the objects ID within the simulator + - + + Overload: Grab a simulated object + an unsigned integer of the objects ID within the simulator + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - + - Classified ad query options + Drag an object + of the object to drag + Drag target in region coordinates - - Include all ads in results + + + Overload: Drag an object + + of the object to drag + Drag target in region coordinates + + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - - Include PG ads in results + + + Release a grabbed object + + The Objects Simulator Local ID + + + - - Include Mature ads in results + + + Release a grabbed object + + The Objects Simulator Local ID + The texture coordinates to grab + The surface coordinates to grab + The face of the position to grab + The region coordinates of the position to grab + The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + The surface binormal of the position to grab (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - - Include Adult ads in results + + + Touches an object + + an unsigned integer of the objects ID within the simulator + - + - The For Sale flag in PlacesReplyData + Request the current L$ balance - - Parcel is not listed for sale + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ - - Parcel is For Sale + + + Give Money to destination Avatar + + UUID of the Target Avatar + Amount in L$ + Description that will show up in the + recipients transaction history - + - A classified ad on the grid + Give L$ to an object + object to give money to + amount of L$ to give + name of object - - UUID for this ad, useful for looking up detailed - information about it + + + Give L$ to a group + + group to give money to + amount of L$ to give - - The title of this classified ad + + + Give L$ to a group + + group to give money to + amount of L$ to give + description of transaction - - Flags that show certain options applied to the classified + + + Pay texture/animation upload fee + - - Creation date of the ad + + + Pay texture/animation upload fee + + description of the transaction - - Expiration date of the ad + + + Give Money to destination Object or Avatar + + UUID of the Target Object/Avatar + Amount in L$ + Reason (Optional normally) + The type of transaction + Transaction flags, mostly for identifying group + transactions - - Price that was paid for this ad + + + Plays a gesture + + Asset of the gesture - - Print the struct data as a string - A string containing the field name, and field value + + + Mark gesture active + + Inventory of the gesture + Asset of the gesture - + - A parcel retrieved from the dataserver such as results from the - "For-Sale" listings or "Places" Search + Mark gesture inactive + Inventory of the gesture - - The unique dataserver parcel ID - This id is used to obtain additional information from the entry - by using the method + + + Send an AgentAnimation packet that toggles a single animation on + + The of the animation to start playing + Whether to ensure delivery of this packet or not - - A string containing the name of the parcel + + + Send an AgentAnimation packet that toggles a single animation off + + The of a + currently playing animation to stop playing + Whether to ensure delivery of this packet or not - - The size of the parcel - This field is not returned for Places searches + + + Send an AgentAnimation packet that will toggle animations on or off + + A list of animation s, and whether to + turn that animation on or off + Whether to ensure delivery of this packet or not - - The price of the parcel - This field is not returned for Places searches + + + Teleports agent to their stored home location + + true on successful teleport to home location - - If True, this parcel is flagged to be auctioned + + + Teleport agent to a landmark + + of the landmark to teleport agent to + true on success, false on failure - - If true, this parcel is currently set for sale + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + True if the lookup and teleport were successful, otherwise + false - - Parcel traffic + + + Attempt to look up a simulator name and teleport to the discovered + destination + + Region name to look up + Position to teleport to + Target to look at + True if the lookup and teleport were successful, otherwise + false - - Print the struct data as a string - A string containing the field name, and field value + + + Teleport agent to another region + + handle of region to teleport agent to + position in destination sim to teleport to + true on success, false on failure + This call is blocking - + - An Avatar returned from the dataserver + Teleport agent to another region + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at + true on success, false on failure + This call is blocking - - Online status of agent - This field appears to be obsolete and always returns false - - - The agents first name - - - The agents last name - - - The agents + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to - - Print the struct data as a string - A string containing the field name, and field value + + + Request teleport to a another simulator + + handle of region to teleport agent to + position in destination sim to teleport to + direction in destination sim agent will look at - + - Response to a "Groups" Search + Teleport agent to a landmark + of the landmark to teleport agent to - - The Group ID + + + Send a teleport lure to another avatar with default "Join me in ..." invitation message + + target avatars to lure - - The name of the group + + + Send a teleport lure to another avatar with custom invitation message + + target avatars to lure + custom message to send with invitation - - The current number of members + + + Respond to a teleport lure by either accepting it and initiating + the teleport, or denying it + + of the avatar sending the lure + true to accept the lure, false to decline it - - Print the struct data as a string - A string containing the field name, and field value + + + Update agent profile + + struct containing updated + profile information - + - Parcel information returned from a request - - Represents one of the following: - A parcel of land on the grid that has its Show In Search flag set - A parcel of land owned by the agent making the request - A parcel of land owned by a group the agent making the request is a member of - - In a request for Group Land, the First record will contain an empty record - - Note: This is not the same as searching the land for sale data source + Update agents profile interests + selection of interests from struct - - The ID of the Agent of Group that owns the parcel + + + Set the height and the width of the client window. This is used + by the server to build a virtual camera frustum for our avatar + + New height of the viewer window + New width of the viewer window - - The name + + + Request the list of muted objects and avatars for this agent + - - The description + + + Sets home location to agents current position + + will fire an AlertMessage () with + success or failure message - - The Size of the parcel + + + Move an agent in to a simulator. This packet is the last packet + needed to complete the transition in to a new simulator + + Object - - The billable Size of the parcel, for mainland - parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller - than the ActualArea. For Estate land this will always be 0 + + + Reply to script permissions request + + Object + of the itemID requesting permissions + of the taskID requesting permissions + list of permissions to allow - - Indicates the ForSale status of the parcel + + + Respond to a group invitation by either accepting or denying it + + UUID of the group (sent in the AgentID field of the invite message) + IM Session ID from the group invitation message + Accept the group invitation or deny it - - The Gridwide X position + + + Requests script detection of objects and avatars + + name of the object/avatar to search for + UUID of the object or avatar to search for + Type of search from ScriptSensorTypeFlags + range of scan (96 max?) + the arc in radians to search within + an user generated ID to correlate replies with + Simulator to perform search in - - The Gridwide Y position + + + Create or update profile pick + + UUID of the pick to update, or random UUID to create a new pick + Is this a top pick? (typically false) + UUID of the parcel (UUID.Zero for the current parcel) + Name of the pick + Global position of the pick landmark + UUID of the image displayed with the pick + Long description of the pick - - The Z position of the parcel, or 0 if no landing point set + + + Delete profile pick + + UUID of the pick to delete - - The name of the Region the parcel is located in + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Global position of the classified landmark + Name of the classified + Long description of the classified + if true, auto renew classified after expiration - - The Asset ID of the parcels Snapshot texture + + + Create or update profile Classified + + UUID of the classified to update, or random UUID to create a new classified + Defines what catagory the classified is in + UUID of the image displayed with the classified + Price that the classified will cost to place for a week + Name of the classified + Long description of the classified + if true, auto renew classified after expiration - - The calculated visitor traffic + + + Delete a classified ad + + The classified ads ID - - The billing product SKU - Known values are: - 023Mainland / Full Region024Estate / Full Region027Estate / Openspace029Estate / Homestead129Mainland / Homestead (Linden Owned) + + + Take an incoming ImprovedInstantMessage packet, auto-parse, and if + OnInstantMessage is defined call that with the appropriate arguments + + The sender + The EventArgs object containing the packet data - - No longer used, will always be 0 + + + Take an incoming Chat packet, auto-parse, and if OnChat is defined call + that with the appropriate arguments. + + The sender + The EventArgs object containing the packet data - - Get a SL URL for the parcel - A string, containing a standard SLURL + + + Used for parsing llDialogs + + The sender + The EventArgs object containing the packet data - - Print the struct data as a string - A string containing the field name, and field value + + + Used for parsing llRequestPermissions dialogs + + The sender + The EventArgs object containing the packet data - + - An "Event" Listing summary + Handles Script Control changes when Script with permissions releases or takes a control + The sender + The EventArgs object containing the packet data - - The ID of the event creator + + + Used for parsing llLoadURL Dialogs + + The sender + The EventArgs object containing the packet data - - The name of the event + + + Update client's Position, LookAt and region handle from incoming packet + + The sender + The EventArgs object containing the packet data + This occurs when after an avatar moves into a new sim - - The events ID + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - A string containing the short date/time the event will begin + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The event start time in Unixtime (seconds since epoch) + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The events maturity rating - - - Print the struct data as a string - A string containing the field name, and field value + + + Process TeleportFailed message sent via EventQueue, informs agent its last teleport has failed and why. + + The Message Key + An IMessage object Deserialized from the recieved message event + The simulator originating the event message - + - The details of an "Event" + Process TeleportFinish from Event Queue and pass it onto our TeleportHandler + The message system key for this event + IMessage object containing decoded data from OSD + The simulator originating the event message - - The events ID + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The ID of the event creator + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The name of the event + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The category + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet - - The events description + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + This packet is now being sent via the EventQueue - - The short date/time the event will begin + + + Group Chat event handler + + The capability Key + IMessage object containing decoded data from OSD + - - The event start time in Unixtime (seconds since epoch) UTC adjusted + + + Response from request to join a group chat + + + IMessage object containing decoded data from OSD + - - The length of the event in minutes + + + Someone joined or left group chat + + + IMessage object containing decoded data from OSD + - - 0 if no cover charge applies + + + Handle a group chat Invitation + + Caps Key + IMessage object containing decoded data from OSD + Originating Simulator - - The cover charge amount in L$ if applicable + + + Moderate a chat session + + the of the session to moderate, for group chats this will be the groups UUID + the of the avatar to moderate + Either "voice" to moderate users voice, or "text" to moderate users text session + true to moderate (silence user), false to allow avatar to speak - - The name of the region where the event is being held + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The gridwide location of the event + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The maturity rating + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get a SL URL for the parcel where the event is hosted - A string, containing a standard SLURL + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Print the struct data as a string - A string containing the field name, and field value + + Raised when a scripted object or agent within range sends a public message - - The event subscribers. null if no subcribers + + Raised when a scripted object sends a dialog box containing possible + options an agent can respond to - - Thread sync lock object + + Raised when an object requests a change in the permissions an agent has permitted - - The event subscribers. null if no subcribers + + Raised when a script requests an agent open the specified URL - - Thread sync lock object + + Raised when an agents currency balance is updated - - The event subscribers. null if no subcribers + + Raised when a transaction occurs involving currency such as a land purchase - - Thread sync lock object + + Raised when an ImprovedInstantMessage packet is recieved from the simulator, this is used for everything from + private messaging to friendship offers. The Dialog field defines what type of message has arrived - - The event subscribers. null if no subcribers + + Raised when an agent has requested a teleport to another location, or when responding to a lure. Raised multiple times + for each teleport indicating the progress of the request - - Thread sync lock object + + Raised when a simulator sends agent specific information for our avatar. - - The event subscribers. null if no subcribers + + Raised when our agents animation playlist changes - - Thread sync lock object + + Raised when an object or avatar forcefully collides with our agent - - The event subscribers. null if no subcribers + + Raised when our agent crosses a region border into another region - - Thread sync lock object + + Raised when our agent succeeds or fails to join a group chat session - - The event subscribers. null if no subcribers + + Raised when our agent exits a group chat session - - Thread sync lock object + + Raised when a simulator sends an urgent message usually indication the recent failure of + another action we have attempted to take such as an attempt to enter a parcel where we are denied access - - The event subscribers. null if no subcribers + + Raised when a script attempts to take or release specified controls for our agent - - Thread sync lock object + + Raised when the simulator detects our agent is trying to view something + beyond its limits - - Raised when the data server responds to a request. + + Raised when a script sensor reply is received from a simulator - - Raised when the data server responds to a request. + + Raised in response to a request - - Raised when the data server responds to a request. + + Raised when an avatar enters a group chat session we are participating in - - Raised when the data server responds to a request. + + Raised when an agent exits a group chat session we are participating in - - Raised when the data server responds to a request. + + Your (client) avatars + "client", "agent", and "avatar" all represent the same thing - - Raised when the data server responds to a request. + + Temporary assigned to this session, used for + verifying our identity in packets - - Raised when the data server responds to a request. + + Shared secret that is never sent over the wire - - Raised when the data server responds to a request. + + Your (client) avatar ID, local to the current region/sim - - Raises the EventInfoReply event - An EventInfoReplyEventArgs object containing the - data returned from the data server + + Where the avatar started at login. Can be "last", "home" + or a login - - Raises the DirEventsReply event - An DirEventsReplyEventArgs object containing the - data returned from the data server + + The access level of this agent, usually M or PG - - Raises the PlacesReply event - A PlacesReplyEventArgs object containing the - data returned from the data server + + The CollisionPlane of Agent - - Raises the DirPlacesReply event - A DirPlacesReplyEventArgs object containing the - data returned from the data server + + An representing the velocity of our agent - - Raises the DirClassifiedsReply event - A DirClassifiedsReplyEventArgs object containing the - data returned from the data server + + An representing the acceleration of our agent - - Raises the DirGroupsReply event - A DirGroupsReplyEventArgs object containing the - data returned from the data server + + A which specifies the angular speed, and axis about which an Avatar is rotating. - - Raises the DirPeopleReply event - A DirPeopleReplyEventArgs object containing the - data returned from the data server + + Position avatar client will goto when login to 'home' or during + teleport request to 'home' region. - - Raises the DirLandReply event - A DirLandReplyEventArgs object containing the - data returned from the data server + + LookAt point saved/restored with HomePosition - - - Query the data server for a list of classified ads containing the specified string. - Defaults to searching for classified placed in any category, and includes PG, Adult and Mature - results. - Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - A UUID to correlate the results when the event is raised + + Avatar First Name (i.e. Philip) - - - Query the data server for a list of classified ads which contain specified keywords (Overload) - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - The category to search - A set of flags which can be ORed to modify query options - such as classified maturity rating. - A UUID to correlate the results when the event is raised - - Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature - - UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); - - - Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - + + Avatar Last Name (i.e. Linden) - - - Starts search for places (Overloaded) - The event is raised when a response is received from the simulator - - Search text - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised + + Avatar Full Name (i.e. Philip Linden) - - - Queries the dataserver for parcels of land which are flagged to be shown in search - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for separated by a space character - A set of flags which can be ORed to modify query options - such as classified maturity rating. - The category to search - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult - - UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); - - - Additional information on the results can be obtained by using the ParcelManager.InfoRequest method - + + Gets the health of the agent - - - Starts a search for land sales using the directory - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. + + Gets the current balance of the agent - - - Starts a search for land sales using the directory - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - Maximum price to search for - Maximum area to search for - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. + + Gets the local ID of the prim the agent is sitting on, + zero if the avatar is not currently sitting - - - Send a request to the data server for land sales listings - - Flags sent to specify query options - Available flags: - Specify the parcel rating with one or more of the following: - IncludePG IncludeMature IncludeAdult - Specify the field to pre sort the results with ONLY ONE of the following: - PerMeterSort NameSort AreaSort PricesSort - Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order - SortAsc - Specify additional filters to limit the results with one or both of the following: - LimitByPrice LimitByArea - Flags can be combined by separating them with the | (pipe) character - Additional details can be found in - What type of land to search for. Auction, - Estate or Mainland - Maximum price to search for when the - DirFindFlags.LimitByPrice flag is specified in findFlags - Maximum area to search for when the - DirFindFlags.LimitByArea flag is specified in findFlags - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - - The event will be raised with the response from the simulator - There is no way to determine how many results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each reply. - Any land set for sale to either anybody or specific to the connected agent will be included in the - results if the land is included in the query - - - - // request all mainland, any maturity rating that is larger than 512 sq.m - StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); - - + + Gets the of the agents active group. - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - - + + Gets the Agents powers in the currently active group - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - Search flags - - + + Current status message for teleporting - + + Current position of the agent as a relative offset from + the simulator, or the parent object if we are sitting on something + + + Current rotation of the agent as a relative rotation from + the simulator, or the parent object if we are sitting on something + + + Current position of the agent in the simulator + + - Search the People directory for other avatars + A representing the agents current rotation - The name or portion of the name of the avatar you wish to search for - - - - - + + Returns the global grid position of the avatar + + + + Agent movement and camera control + + Agent movement is controlled by setting specific + After the control flags are set, An AgentUpdate is required to update the simulator of the specified flags + This is most easily accomplished by setting one or more of the AgentMovement properties + + Movement of an avatar is always based on a compass direction, for example AtPos will move the + agent from West to East or forward on the X Axis, AtNeg will of course move agent from + East to West or backward on the X Axis, LeftPos will be South to North or forward on the Y Axis + The Z axis is Up, finer grained control of movements can be done using the Nudge properties + + + + Agent camera controls + + + Currently only used for hiding your group title + + + Action state of the avatar, which can currently be + typing and editing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Timer for sending AgentUpdate packets + + + Default constructor + + - Search Places for parcels of land you personally own + Send an AgentUpdate with the camera set at the current agent + position and pointing towards the heading specified + Camera rotation in radians + Whether to send the AgentUpdate reliable + or not - + - Searches Places for land owned by the specified group + Rotates the avatar body and camera toward a target position. + This will also anchor the camera position on the avatar - ID of the group you want to recieve land list for (You must be a member of the group) - Transaction (Query) ID which can be associated with results from your request. + Region coordinates to turn toward - + - Search the Places directory for parcels that are listed in search and contain the specified keywords + Send new AgentUpdate packet to update our current camera + position and rotation - A string containing the keywords to search for - Transaction (Query) ID which can be associated with results from your request. - + - Search Places - All Options + Send new AgentUpdate packet to update our current camera + position and rotation - One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. - One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer - A string containing a list of keywords to search for separated by a space character - String Simulator Name to search in - LLUID of group you want to recieve results for - Transaction (Query) ID which can be associated with results from your request. - Transaction (Query) ID which can be associated with results from your request. + Whether to require server acknowledgement + of this packet - + - Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + Send new AgentUpdate packet to update our current camera + position and rotation - A string containing a list of keywords to search for separated by a space character - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - UUID of query to correlate results in callback. + Whether to require server acknowledgement + of this packet + Simulator to send the update to - + - Search Events + Builds an AgentUpdate packet entirely from parameters. This + will not touch the state of Self.Movement or + Self.Movement.Camera in any way - A string containing a list of keywords to search for separated by a space character - One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult - from the Enum - Multiple flags can be combined by separating the flags with the | (pipe) character - "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled - For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - EventCategory event is listed under. - UUID of query to correlate results in callback. + + + + + + + + + + + - - Requests Event Details - ID of Event returned from the method + + Move agent positive along the X axis - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Move agent negative along the X axis - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Move agent positive along the Y axis - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from + + Move agent negative along the Y axis - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Move agent positive along the Z axis - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Move agent negative along the Z axis - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Contains the Event data returned from the data server from an EventInfoRequest + + - - Construct a new instance of the EventInfoReplyEventArgs class - A single EventInfo object containing the details of an event + + - - - A single EventInfo object containing the details of an event - + + - - Contains the "Event" detail data returned from the data server + + - - Construct a new instance of the DirEventsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Events" returned by the search query + + - - The ID returned by + + Causes simulator to make agent fly - - A list of "Events" returned by the data server + + Stop movement - - Contains the "Event" list data returned from the data server + + Finish animation - - Construct a new instance of PlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Places" returned by the data server query + + Stand up from a sit - - The ID returned by + + Tells simulator to sit agent on ground - - A list of "Places" returned by the data server + + Place agent into mouselook mode - - Contains the places data returned from the data server + + Nudge agent positive along the X axis - - Construct a new instance of the DirPlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing land data returned by the data server + + Nudge agent negative along the X axis - - The ID returned by + + Nudge agent positive along the Y axis - - A list containing Places data returned by the data server + + Nudge agent negative along the Y axis - - Contains the classified data returned from the data server + + Nudge agent positive along the Z axis - - Construct a new instance of the DirClassifiedsReplyEventArgs class - A list of classified ad data returned from the data server + + Nudge agent negative along the Z axis - - A list containing Classified Ads returned by the data server + + - - Contains the group data returned from the data server + + - - Construct a new instance of the DirGroupsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of groups data returned by the data server + + Tell simulator to mark agent as away - - The ID returned by + + - - A list containing Groups data returned by the data server + + - - Contains the people data returned from the data server + + - - Construct a new instance of the DirPeopleReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of people data returned by the data server + + - - The ID returned by + + + Returns "always run" value, or changes it by sending a SetAlwaysRunPacket + - - A list containing People data returned by the data server + + The current value of the agent control flags - - Contains the land sales data returned from the data server + + Gets or sets the interval in milliseconds at which + AgentUpdate packets are sent to the current simulator. Setting + this to a non-zero value will also enable the packet sending if + it was previously off, and setting it to zero will disable - - Construct a new instance of the DirLandReplyEventArgs class - A list of parcels for sale returned by the data server + + Gets or sets whether AgentUpdate packets are sent to + the current simulator - - A list containing land forsale data returned by the data server + + Reset movement controls every time we send an update - + - Represends individual HTTP Download request + Camera controls for the agent, mostly a thin wrapper around + CoordinateFrame. This class is only responsible for state + tracking and math, it does not send any packets - - Default constructor + + - - Constructor + + The camera is a local frame of reference inside of + the larger grid space. This is where the math happens - - URI of the item to fetch + + + Default constructor + - - Timout specified in milliseconds + + - - Download progress callback + + - - Download completed callback + + - - Accept the following content type + + - + - Manages async HTTP downloads with a limit on maximum - concurrent downloads + Used to specify movement actions for your agent - - Default constructor + + Empty flag - - Maximum number of parallel downloads from a single endpoint + + Move Forward (SL Keybinding: W/Up Arrow) - - Client certificate + + Move Backward (SL Keybinding: S/Down Arrow) - - Cleanup method + + Move Left (SL Keybinding: Shift-(A/Left Arrow)) - - Setup http download request + + Move Right (SL Keybinding: Shift-(D/Right Arrow)) - - Check the queue for pending work + + Not Flying: Jump/Flying: Move Up (SL Keybinding: E) - - Enqueue a new HTPP download + + Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) - - Describes tasks returned in LandStatReply + + Unused - - - Estate level administration and utilities - + + Unused - - - Constructor for EstateTools class - - - + + Unused - - Used in the ReportType field of a LandStatRequest + + Unused - - Used by EstateOwnerMessage packets + + ORed with AGENT_CONTROL_AT_* if the keyboard is being used - - Used by EstateOwnerMessage packets + + ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used - - - + + ORed with AGENT_CONTROL_UP_* if the keyboard is being used - - No flags set + + Fly - - Only return targets scripted objects + + - - Only return targets objects if on others land + + Finish our current animation - - Returns target's scripted objects and objects on other parcels + + Stand up from the ground or a prim seat - - Ground texture settings for each corner of the region + + Sit on the ground at our current location - - Used by GroundTextureHeightSettings + + Whether mouselook is currently enabled - - The high and low texture thresholds for each corner of the sim + + Legacy, used if a key was pressed for less than a certain amount of time - - Textures for each of the four terrain height levels + + Legacy, used if a key was pressed for less than a certain amount of time - - Upper/lower texture boundaries for each corner of the sim + + Legacy, used if a key was pressed for less than a certain amount of time - - The event subscribers. null if no subcribers + + Legacy, used if a key was pressed for less than a certain amount of time - - Thread sync lock object + + Legacy, used if a key was pressed for less than a certain amount of time - - The event subscribers. null if no subcribers + + Legacy, used if a key was pressed for less than a certain amount of time - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + Set when the avatar is idled or set to away. Note that the away animation is + activated separately from setting this flag - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + + Represents a single Voice Session to the Vivox service. + - - Thread sync lock object + + + Close this session. + - - The event subscribers. null if no subcribers + + + Look up an existing Participants in this session + + + - - Thread sync lock object + + Positional vector of the users position - - The event subscribers. null if no subcribers + + Velocity vector of the position - - Thread sync lock object + + At Orientation (X axis) of the position - - Raised when the data server responds to a request. + + Up Orientation (Y axis) of the position - - Raised when the data server responds to a request. + + Left Orientation (Z axis) of the position - - Raised when the data server responds to a request. + + + The type of bump-mapping applied to a face + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raised when the data server responds to a request. + + - - Raises the TopCollidersReply event - A TopCollidersReplyEventArgs object containing the - data returned from the data server + + - - Raises the TopScriptsReply event - A TopScriptsReplyEventArgs object containing the - data returned from the data server + + - - Raises the EstateUsersReply event - A EstateUsersReplyEventArgs object containing the - data returned from the data server + + - - Raises the EstateGroupsReply event - A EstateGroupsReplyEventArgs object containing the - data returned from the data server + + - - Raises the EstateManagersReply event - A EstateManagersReplyEventArgs object containing the - data returned from the data server + + - - Raises the EstateBansReply event - A EstateBansReplyEventArgs object containing the - data returned from the data server + + - - Raises the EstateCovenantReply event - A EstateCovenantReplyEventArgs object containing the - data returned from the data server + + - - Raises the EstateUpdateInfoReply event - A EstateUpdateInfoReplyEventArgs object containing the - data returned from the data server + + - + + + + + + + + + + + + + + + + - Requests estate information such as top scripts and colliders + The level of shininess applied to a face - - - - - - - - - - Requests estate settings, including estate manager and access/ban lists + + - - Requests the "Top Scripts" list for the current region + + - - Requests the "Top Colliders" list for the current region + + - + + + + - Set several estate specific configuration variables + The texture mapping style used for a face - The Height of the waterlevel over the entire estate. Defaults to 20 - The maximum height change allowed above the baked terrain. Defaults to 4 - The minimum height change allowed below the baked terrain. Defaults to -4 - true to use - if True forces the sun position to the position in SunPosition - The current position of the sun on the estate, or when FixedSun is true the static position - the sun will remain. 6.0 = Sunrise, 30.0 = Sunset - + + + + + + + - Request return of objects owned by specified avatar + Flags in the TextureEntry block that describe which properties are + set - The Agents owning the primitives to return - specify the coverage and type of objects to be included in the return - true to perform return on entire estate - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstract base for rendering plugins - - - - - + - Used for setting and retrieving various estate panel settings + Generates a basic mesh structure from a primitive - EstateOwnerMessage Method field - List of parameters to include + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh - + - Kick an avatar from an estate + Generates a a series of faces, each face containing a mesh and + metadata - Key of Agent to remove + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh - + - Ban an avatar from an estate - Key of Agent to remove - Ban user from this estate and all others owned by the estate owner + Apply texture coordinate modifications from a + to a list of vertices + + Vertex list to modify texture coordinates for + Center-point of the face + Face texture parameters - - Unban an avatar from an estate - Key of Agent to remove - /// Unban user from this estate and all others owned by the estate owner - + - Send a message dialog to everyone in an entire estate + Temporary code to produce a tar archive in tar v7 format - Message to send all users in the estate - + - Send a message dialog to everyone in a simulator + Binary writer for the underlying stream - Message to send all users in the simulator - + - Send an avatar back to their home location + Write a directory entry to the tar archive. We can only handle one path level right now! - Key of avatar to send home + - + - Begin the region restart process + Write a file to the tar archive + + - + - Cancels a region restart + Write a file to the tar archive + + - - Estate panel "Region" tab settings - - - Estate panel "Debug" tab settings - - - Used for setting the region's terrain textures for its four height levels - - - - - - - - - - - Used for setting sim terrain texture heights - - - Requests the estate covenant - - + - Upload a terrain RAW file + Finish writing the raw tar archive data to a stream. The stream will be closed on completion. - A byte array containing the encoded terrain data - The name of the file being uploaded - The Id of the transfer request - + - Teleports all users home in current Estate + Write a particular entry + + + - - - Remove estate manager - Key of Agent to Remove - removes manager to this estate and all others owned by the estate owner - - - - Add estate manager - Key of Agent to Add - Add agent as manager to this estate and all others owned by the estate owner - - - - Add's an agent to the estate Allowed list - Key of Agent to Add - Add agent as an allowed reisdent to All estates if true - - - - Removes an agent from the estate Allowed list - Key of Agent to Remove - Removes agent as an allowed reisdent from All estates if true - - - - Add's a group to the estate Allowed list - Key of Group to Add - Add Group as an allowed group to All estates if true - - - - Removes a group from the estate Allowed list - Key of Group to Remove - Removes Group as an allowed Group from All estates if true - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised on LandStatReply when the report type is for "top colliders" - - - Construct a new instance of the TopCollidersReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - + - The number of returned items in LandStatReply + Temporary code to do the bare minimum required to read a tar archive for our purposes - + - A Dictionary of Object UUIDs to tasks returned in LandStatReply + Binary reader for the underlying stream - - Raised on LandStatReply when the report type is for "top Scripts" - - - Construct a new instance of the TopScriptsReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - + - The number of scripts returned in LandStatReply + Used to trim off null chars - + - A Dictionary of Object UUIDs to tasks returned in LandStatReply + Used to trim off space chars - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateBansReplyEventArgs class - The estate's identifier on the grid - The number of returned items in LandStatReply - User UUIDs banned - - + - The identifier of the estate + Generate a tar reader which reads from the given stream. + - + - The number of returned itmes + Read the next entry in the tar file. + + + the data for the entry. Returns null if there are no more entries - + - List of UUIDs of Banned Users + Read the next 512 byte chunk of data as a tar header. + A tar header struct. null if we have reached the end of the archive. - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUsersReplyEventArgs class - The estate's identifier on the grid - The number of users - Allowed users UUIDs - - + - The identifier of the estate + Read data following a header + + - + - The number of returned items + Convert octal bytes to a decimal representation + + + + - + - List of UUIDs of Allowed Users + Simulator (region) properties - - Returned, along with other info, upon a successful .RequestInfo() + + No flags set - - Construct a new instance of the EstateGroupsReplyEventArgs class - The estate's identifier on the grid - The number of Groups - Allowed Groups UUIDs + + Agents can take damage and be killed - - - The identifier of the estate - + + Landmarks can be created here - - - The number of returned items - + + Home position can be set in this sim - - - List of UUIDs of Allowed Groups - + + Home position is reset when an agent teleports away - - Returned, along with other info, upon a successful .RequestInfo() + + Sun does not move - - Construct a new instance of the EstateManagersReplyEventArgs class - The estate's identifier on the grid - The number of Managers - Managers UUIDs + + No object, land, etc. taxes - - - The identifier of the estate - + + Disable heightmap alterations (agents can still plant + foliage) - - - The number of returned items - + + Land cannot be released, sold, or purchased - - - List of UUIDs of the Estate's Managers - + + All content is wiped nightly - - Returned, along with other info, upon a successful .RequestInfo() + + Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) - - Construct a new instance of the EstateCovenantReplyEventArgs class - The Covenant ID - The timestamp - The estate's name - The Estate Owner's ID (can be a GroupID) + + Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. - - - The Covenant - + + Region does not update agent prim interest lists. Internal debugging option. - - - The timestamp - + + No collision detection for non-agent objects - - - The Estate name - + + No scripts are ran - - - The Estate Owner's ID (can be a GroupID) - + + All physics processing is turned off - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUpdateInfoReplyEventArgs class - The estate's name - The Estate Owners ID (can be a GroupID) - The estate's identifier on the grid - - + + Region can be seen from other regions on world map. (Legacy world map option?) - - - The estate's name - + + Region can be seen from mainland on world map. (Legacy world map option?) - - - The Estate Owner's ID (can be a GroupID) - + + Agents not explicitly on the access list can visit the region. - - - The identifier of the estate on the grid - + + Traffic calculations are not run across entire region, overrides parcel settings. - - - + + Flight is disabled (not currently enforced by the sim) - - - Registers, unregisters, and fires events generated by incoming packets - + + Allow direct (p2p) teleporting - - - Default constructor - - - + + Estate owner has temporarily disabled scripting - - - Object that is passed to worker threads in the ThreadPool for - firing packet callbacks - + + Restricts the usage of the LSL llPushObject function, applies to whole region. - - Callback to fire for this packet + + Deny agents with no payment info on file - - Reference to the simulator that this packet came from + + Deny agents with payment info on file - - The packet that needs to be processed + + Deny agents who have made a monetary transaction - - Reference to the GridClient object + + Parcels within the region may be joined or divided by anyone, not just estate owners/managers. - - - Register an event handler - - Use PacketType.Default to fire this event on every - incoming packet - Packet type to register the handler for - Callback to be fired - True if this callback should be ran - asynchronously, false to run it synchronous + + Abuse reports sent from within this region are sent to the estate owner defined email. - - - Unregister an event handler - - Packet type to unregister the handler for - Callback to be unregistered + + Region is Voice Enabled - - - Fire the events registered for this packet type - - Incoming packet type - Incoming packet - Simulator this packet was received from + + Removes the ability from parcel owners to set their parcels to show in search. - - - Registers, unregisters, and fires events generated by the Capabilities - event queue - + + Deny agents who have not been age verified from entering the region. - + - Default constructor + Access level for a simulator - Reference to the GridClient object - - - Object that is passed to worker threads in the ThreadPool for - firing CAPS callbacks - + + Minimum access level, no additional checks - - Callback to fire for this packet + + Trial accounts allowed - - Name of the CAPS event + + PG rating - - Strongly typed decoded data + + Mature rating - - Reference to the simulator that generated this event + + Simulator is offline - - Reference to the GridClient object + + Simulator does not exist - + - Register an new event handler for a capabilities event sent via the EventQueue + - Use String.Empty to fire this event on every CAPS event - Capability event name to register the - handler for - Callback to fire - + - Unregister a previously registered capabilities handler + - Capability event name unregister the - handler for - Callback to unregister - + - Fire the events registered for this event type synchronously + Initialize the UDP packet handler in server mode - Capability name - Decoded event body - Reference to the simulator that - generated this event + Port to listening for incoming UDP packets on - + - Fire the events registered for this event type asynchronously + Initialize the UDP packet handler in client mode - Capability name - Decoded event body - Reference to the simulator that - generated this event + Remote UDP server to connect to - + + - - The avatar has no rights - - - The avatar can see the online status of the target avatar - - - The avatar can see the location of the target avatar on the map - - - The avatar can modify the ojects of the target avatar - - + - This class holds information about an avatar in the friends list. There are two ways - to interface to this class. The first is through the set of boolean properties. This is the typical - way clients of this class will use it. The second interface is through two bitflag properties, - TheirFriendsRights and MyFriendsRights + - + - Used internally when building the initial list of friends at login time + - System ID of the avatar being prepesented - Rights the friend has to see you online and to modify your objects - Rights you have to see your friend online and to modify their objects - - - System ID of the avatar - + + A public reference to the client that this Simulator object + is attached to - - - full name of the avatar - + + A Unique Cache identifier for this simulator - - - True if the avatar is online - + + The capabilities for this simulator - - - True if the friend can see if I am online - + + - - - True if the friend can see me on the map - + + The current version of software this simulator is running - - - True if the freind can modify my objects - + + - - - True if I can see if my friend is online - + + A 64x64 grid of parcel coloring values. The values stored + in this array are of the type - - - True if I can see if my friend is on the map - + + - - - True if I can modify my friend's objects - + + - - - My friend's rights represented as bitmapped flags - + + - - - My rights represented as bitmapped flags - + + - - - FriendInfo represented as a string - - A string reprentation of both my rights and my friends rights + + - - - This class is used to add and remove avatars from your friends list and to manage their permission. - + + - - - Internal constructor - - A reference to the GridClient Object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + true if your agent has Estate Manager rights on this region - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - + + Statistics information for this simulator and the + connection to the simulator, calculated by the simulator itself + and the library + + + The regions Unique ID + + + The physical data center the simulator is located + Known values are: + + Dallas + Chandler + SF + + + + + The CPU Class of the simulator + Most full mainland/estate sims appear to be 5, + Homesteads and Openspace appear to be 501 + + + The number of regions sharing the same CPU as this one + "Full Sims" appear to be 1, Homesteads appear to be 4 + + + The billing product name + Known values are: + + Mainland / Full Region (Sku: 023) + Estate / Full Region (Sku: 024) + Estate / Openspace (Sku: 027) + Estate / Homestead (Sku: 029) + Mainland / Homestead (Sku: 129) (Linden Owned) + Mainland / Linden Homes (Sku: 131) + + + + + The billing product SKU + Known values are: + + 023 Mainland / Full Region + 024 Estate / Full Region + 027 Estate / Openspace + 029 Estate / Homestead + 129 Mainland / Homestead (Linden Owned) + 131 Linden Homes / Full Region + + + + - A dictionary of key/value pairs containing known friends of this avatar. - The Key is the of the friend, the value is a - object that contains detailed information including permissions you have and have given to the friend + A thread-safe dictionary containing avatars in a simulator - + - A Dictionary of key/value pairs containing current pending frienship offers. - The key is the of the avatar making the request, - the value is the of the request which is used to accept - or decline the friendship offer + A thread-safe dictionary containing primitives in a simulator - - Raised when the simulator sends notification one of the members in our friends list comes online - - - Raised when the simulator sends notification one of the members in our friends list goes offline - - - Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions + + The current sequence number for packets sent to this + simulator. Must be Interlocked before modifying. Only + useful for applications manipulating sequence numbers - - Raised when the simulator sends us the names on our friends list + + + Provides access to an internal thread-safe dictionary containing parcel + information found in this simulator + - - Raised when the simulator sends notification another agent is offering us friendship + + + Checks simulator parcel map to make sure it has downloaded all data successfully + + true if map is full (contains no 0's) - - Raised when a request we sent to friend another agent is accepted or declined + + Used internally to track sim disconnections - - Raised when the simulator sends notification one of the members in our friends list has terminated - our friendship + + Event that is triggered when the simulator successfully + establishes a connection - - Raised when the simulator sends the location of a friend we have - requested map location info for + + Whether this sim is currently connected or not. Hooked up + to the property Connected - - Raises the FriendOnline event - A FriendInfoEventArgs object containing the - data returned from the data server + + Coarse locations of avatars in this simulator - - Raises the FriendOffline event - A FriendInfoEventArgs object containing the - data returned from the data server + + AvatarPositions key representing TrackAgent target - - Raises the FriendRightsUpdate event - A FriendInfoEventArgs object containing the - data returned from the data server + + Sequence numbers of packets we've received + (for duplicate checking) - - Raises the FriendNames event - A FriendNamesEventArgs object containing the - data returned from the data server + + Packets we sent out that need ACKs from the simulator - - Raises the FriendshipOffered event - A FriendshipOfferedEventArgs object containing the - data returned from the data server + + Sequence number for pause/resume - - Raises the FriendshipResponse event - A FriendshipResponseEventArgs object containing the - data returned from the data server + + + + + Reference to the GridClient object + IPEndPoint of the simulator + handle of the simulator - - Raises the FriendshipTerminated event - A FriendshipTerminatedEventArgs object containing the - data returned from the data server + + + Called when this Simulator object is being destroyed + - - Raises the FriendFoundReply event - A FriendFoundReplyEventArgs object containing the - data returned from the data server + + + Attempt to connect to this simulator + + Whether to move our agent in to this sim or not + True if the connection succeeded or connection status is + unknown, false if there was a failure - + - Accept a friendship request + Disconnect from this simulator - agentID of avatatar to form friendship with - imSessionID of the friendship request message - + - Decline a friendship request + Instructs the simulator to stop sending update (and possibly other) packets - - of friend - imSessionID of the friendship request message - + - Overload: Offer friendship to an avatar. + Instructs the simulator to resume sending update packets (unpause) - System ID of the avatar you are offering friendship to - + - Offer friendship to an avatar. + Sends a packet - System ID of the avatar you are offering friendship to - A message to send with the request + Packet to be sent - + - Terminate a friendship with an avatar + - System ID of the avatar you are terminating the friendship with - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Returns Simulator Name as a String + + - + - Change the rights of a friend avatar. + - the of the friend - the new rights to give the friend - This method will implicitly set the rights to those passed in the rights parameter. + - + - Use to map a friends location on the grid. + - Friends UUID to find - - - + + - + - Use to track a friends movement on the grid + Sends out pending acknowledgements - Friends Key - + - Ask for a notification of friend's online status + Resend unacknowledged packets - Friend's UUID - + - This handles the asynchronous response of a RequestAvatarNames call. + Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. - - - names cooresponding to the the list of IDs sent the the RequestAvatarNames call. - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + The IP address and port of the server - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Whether there is a working connection to the simulator or + not - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Coarse locations of avatars in this simulator - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + AvatarPositions key representing TrackAgent target - + - Populate FriendList with data from the login reply + Simulator Statistics - true if login was successful - true if login request is requiring a redirect - A string containing the response to the login request - A string containing the reason for the request - A object containing the decoded - reply from the login server - - Contains information on a member of our friends list + + Total number of packets sent by this simulator to this agent - - - Construct a new instance of the FriendInfoEventArgs class - - The FriendInfo + + Total number of packets received by this simulator to this agent - - Get the FriendInfo + + Total number of bytes sent by this simulator to this agent - - Contains Friend Names + + Total number of bytes received by this simulator to this agent - - - Construct a new instance of the FriendNamesEventArgs class - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name + + Time in seconds agent has been connected to simulator - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name + + Total number of packets that have been resent - - Sent when another agent requests a friendship with our agent + + Total number of resent packets recieved - + + Total number of pings sent to this simulator by this agent + + + Total number of ping replies sent to this agent by this simulator + + - Construct a new instance of the FriendshipOfferedEventArgs class + Incoming bytes per second - The ID of the agent requesting friendship - The name of the agent requesting friendship - The ID of the session, used in accepting or declining the - friendship offer + It would be nice to have this claculated on the fly, but + this is far, far easier - - Get the ID of the agent requesting friendship + + + Outgoing bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier - - Get the name of the agent requesting friendship + + Time last ping was sent - - Get the ID of the session, used in accepting or declining the - friendship offer + + ID of last Ping sent - - A response containing the results of our request to form a friendship with another agent + + - - - Construct a new instance of the FriendShipResponseEventArgs class - - The ID of the agent we requested a friendship with - The name of the agent we requested a friendship with - true if the agent accepted our friendship offer + + - - Get the ID of the agent we requested a friendship with + + Current time dilation of this simulator - - Get the name of the agent we requested a friendship with + + Current Frames per second of simulator - - true if the agent accepted our friendship offer + + Current Physics frames per second of simulator - - Contains data sent when a friend terminates a friendship with us + + - - - Construct a new instance of the FrindshipTerminatedEventArgs class - - The ID of the friend who terminated the friendship with us - The name of the friend who terminated the friendship with us + + - - Get the ID of the agent that terminated the friendship with us + + - - Get the name of the agent that terminated the friendship with us + + - - - Data sent in response to a request which contains the information to allow us to map the friends location - + + - - - Construct a new instance of the FriendFoundReplyEventArgs class - - The ID of the agent we have requested location information for - The region handle where our friend is located - The simulator local position our friend is located + + - - Get the ID of the agent we have received location information for + + - - Get the region handle where our mapped friend is located + + - - Get the simulator local position where our friend is located + + Total number of objects Simulator is simulating - - - Main class to expose grid functionality to clients. All of the - classes needed for sending and receiving data are accessible through - this class. - - - - // Example minimum code required to instantiate class and - // connect to a simulator. - using System; - using System.Collections.Generic; - using System.Text; - using OpenMetaverse; - namespace FirstBot - { - class Bot - { - public static GridClient Client; - static void Main(string[] args) - { - Client = new GridClient(); // instantiates the GridClient class - // to the global Client object - // Login to Simulator - Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); - // Wait for a Keypress - Console.ReadLine(); - // Logout of simulator - Client.Network.Logout(); - } - } - } - - + + Total number of Active (Scripted) objects running - - - Default constructor - + + Number of agents currently in this simulator - - Networking subsystem + + Number of agents in neighbor simulators - - Settings class including constant values and changeable - parameters for everything + + Number of Active scripts running in this simulator - - Parcel (subdivided simulator lots) subsystem + + - - Our own avatars subsystem + + - - Other avatars subsystem + + - - Estate subsystem + + Number of downloads pending - - Friends list subsystem + + Number of uploads pending - - Grid (aka simulator group) subsystem + + - - Object subsystem + + - - Group subsystem + + Number of local uploads pending - - Asset subsystem + + Unacknowledged bytes in queue - - Appearance subsystem + + + + - - Inventory subsystem + + No report - - Directory searches including classifieds, people, land - sales, etc + + Unknown report type - - Handles land, wind, and cloud heightmaps + + Bug report - - Handles sound-related networking + + Complaint report - - Throttling total bandwidth usage, or allocating bandwidth - for specific data stream types + + Customer service report - + - Return the full name of this instance + Bitflag field for ObjectUpdateCompressed data blocks, describing + which options are present for each object - Client avatars full name - - - Map layer request type - - - - Objects and terrain are shown - - - Only the terrain is shown, no objects - - - Overlay showing land for sale and for auction - - - - Type of grid item, such as telehub, event, populator location, etc. - + + Unknown - - Telehub + + Whether the object has a TreeSpecies - - PG rated event + + Whether the object has floating text ala llSetText - - Mature rated event + + Whether the object has an active particle system - - Popular location + + Whether the object has sound attached to it - - Locations of avatar groups in a region + + Whether the object is attached to a root object or not - - Land for sale + + Whether the object has texture animation settings - - Classified ad + + Whether the object has an angular velocity - - Adult rated event + + Whether the object has a name value pairs string - - Adult land for sale + + Whether the object has a Media URL set - + - Information about a region on the grid map + Specific Flags for MultipleObjectUpdate requests - - Sim X position on World Map - - - Sim Y position on World Map - - - Sim Name (NOTE: In lowercase!) - - - - + + None - - Appears to always be zero (None) + + Change position of prims - - Sim's defined Water Height + + Change rotation of prims - - - + + Change size of prims - - UUID of the World Map image + + Perform operation on link set - - Unique identifier for this region, a combination of the X - and Y position + + Scale prims uniformly, same as selecing ctrl+shift in the + viewer. Used in conjunction with Scale - + + Special values in PayPriceReply. If the price is not one of these + literal value of the price should be use - - - + + Indicates that this pay option should be hidden - - - + + Indicates that this pay option should have the default value - - - - - + - Visual chunk of the grid map + Contains the variables sent in an object update packet for objects. + Used to track position and movement of prims and avatars - - - Base class for Map Items - + + - - The Global X position of the item + + - - The Global Y position of the item + + - - Get the Local X position of the item + + - - Get the Local Y position of the item + + - - Get the Handle of the region + + - - - Represents an agent or group of agents location - + + - - - Represents a Telehub location - + + - - - Represents a non-adult parcel of land for sale - + + - - - Represents an Adult parcel of land for sale - + + - + - Represents a PG Event + Handles all network traffic related to prims and avatar positions and + movement. - - - Represents a Mature event - + + The event subscribers, null of no subscribers - - - Represents an Adult event - + + Raises the ObjectUpdate Event + A ObjectUpdateEventArgs object containing + the data sent from the simulator - - - Manages grid-wide tasks such as the world map - + + Thread sync lock object - - - Constructor - - Instance of GridClient object to associate with this GridManager instance + + The event subscribers, null of no subscribers - - The event subscribers. null if no subcribers + + Raises the ObjectProperties Event + A ObjectPropertiesEventArgs object containing + the data sent from the simulator - + Thread sync lock object - - The event subscribers. null if no subcribers + + The event subscribers, null of no subscribers - + + Raises the ObjectPropertiesUpdated Event + A ObjectPropertiesUpdatedEventArgs object containing + the data sent from the simulator + + Thread sync lock object - - The event subscribers. null if no subcribers + + The event subscribers, null of no subscribers - + + Raises the ObjectPropertiesFamily Event + A ObjectPropertiesFamilyEventArgs object containing + the data sent from the simulator + + Thread sync lock object - - The event subscribers. null if no subcribers + + The event subscribers, null of no subscribers - + + Raises the AvatarUpdate Event + A AvatarUpdateEventArgs object containing + the data sent from the simulator + + Thread sync lock object - - The event subscribers. null if no subcribers + + The event subscribers, null of no subscribers - + + Raises the TerseObjectUpdate Event + A TerseObjectUpdateEventArgs object containing + the data sent from the simulator + + Thread sync lock object - - A dictionary of all the regions, indexed by region name + + The event subscribers, null of no subscribers - - A dictionary of all the regions, indexed by region handle + + Raises the ObjectDataBlockUpdate Event + A ObjectDataBlockUpdateEventArgs object containing + the data sent from the simulator - - Raised when the simulator sends a - containing the location of agents in the simulator + + Thread sync lock object - - Raised when the simulator sends a Region Data in response to - a Map request + + The event subscribers, null of no subscribers - - Raised when the simulator sends GridLayer object containing - a map tile coordinates and texture information + + Raises the KillObject Event + A KillObjectEventArgs object containing + the data sent from the simulator - - Raised when the simulator sends GridItems object containing - details on events, land sales at a specific location + + Thread sync lock object - - Raised in response to a Region lookup + + The event subscribers, null of no subscribers - - Unknown + + Raises the AvatarSitChanged Event + A AvatarSitChangedEventArgs object containing + the data sent from the simulator - - Current direction of the sun + + Thread sync lock object - - Current angular velocity of the sun - - - Current world time - - - Raises the CoarseLocationUpdate event - A CoarseLocationUpdateEventArgs object containing the - data sent by simulator + + The event subscribers, null of no subscribers - - Raises the GridRegion event - A GridRegionEventArgs object containing the - data sent by simulator + + Raises the PayPriceReply Event + A PayPriceReplyEventArgs object containing + the data sent from the simulator - - Raises the GridLayer event - A GridLayerEventArgs object containing the - data sent by simulator + + Thread sync lock object - - Raises the GridItems event - A GridItemEventArgs object containing the - data sent by simulator + + Reference to the GridClient object - - Raises the RegionHandleReply event - A RegionHandleReplyEventArgs object containing the - data sent by simulator + + Does periodic dead reckoning calculation to convert + velocity and acceleration to new positions for objects - + + Construct a new instance of the ObjectManager class - - + A reference to the instance - + - Request a map layer + Request information for a single object from a + you are currently connected to - The name of the region - The type of layer + The the object is located + The Local ID of the object - + + Request information for multiple objects contained in + the same simulator - - - - - - - - - - - - + The the objects are located + An array containing the Local IDs of the objects - - - - - - - - - - - - - + + + Attempt to purchase an original object, a copy, or the contents of + an object + + The the object is located + The Local ID of the object + Whether the original, a copy, or the object + contents are on sale. This is used for verification, if the this + sale type is not valid for the object the purchase will fail + Price of the object. This is used for + verification, if it does not match the actual price the purchase + will fail + Group ID that will be associated with the new + purchase + Inventory folder UUID where the object or objects + purchased should be placed + + + BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, + 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); + + - + + Request prices that should be displayed in pay dialog. This will triggger the simulator + to send us back a PayPriceReply which can be handled by OnPayPriceReply event - - - - - - + The the object is located + The ID of the object + The result is raised in the event - + - Request data for all mainland (Linden managed) simulators + Select a single object. This will cause the to send us + an which will raise the event + The the object is located + The Local ID of the object + - + - Request the region handle for the specified region UUID + Select a single object. This will cause the to send us + an which will raise the event - UUID of the region to look up + The the object is located + The Local ID of the object + if true, a call to is + made immediately following the request + - + - Get grid region information using the region name, this function - will block until it can find the region or gives up - - Name of sim you're looking for - Layer that you are requesting - Will contain a GridRegion for the sim you're - looking for if successful, otherwise an empty structure - True if the GridRegion was successfully fetched, otherwise - false - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + Should objects be deselected immediately after selection + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + - + - Avatar group management + Update the properties of an object + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on - - Key of Group Member - - - Total land contribution - - - Online status information - - - Abilities that the Group Member has - - - Current group title - - - Is a group owner - - + - Role manager for a group + Sets the sale properties of a single object + The the object is located + The Local ID of the object + One of the options from the enum + The price of the object - - Key of the group - - - Key of Role - - - Name of Role - - - Group Title associated with Role - - - Description of Role - - - Abilities Associated with Role - - - Returns the role's title - The role's title + + + Sets the sale properties of multiple objects + + The the objects are located + An array containing the Local IDs of the objects + One of the options from the enum + The price of the object - + - Class to represent Group Title + Deselect a single object + The the object is located + The Local ID of the object - - Key of the group - - - ID of the role title belongs to - - - Group Title - - - Whether title is Active - - - Returns group title - - + - Represents a group on the grid + Deselect multiple objects. + The the objects are located + An array containing the Local IDs of the objects - - Key of Group - - - Key of Group Insignia - - - Key of Group Founder - - - Key of Group Role for Owners - - - Name of Group - - - Text of Group Charter - - - Title of "everyone" role - - - Is the group open for enrolement to everyone - - - Will group show up in search - - + + Perform a click action on an object + The the object is located + The Local ID of the object - + + Perform a click action (Grab) on a single object + The the object is located + The Local ID of the object + The texture coordinates to touch + The surface coordinates to touch + The face of the position to touch + The region coordinates of the position to touch + The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + The surface binormal of the position to touch (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space - + + Create (rez) a new prim object in a simulator + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties - - Is the group Mature - - - Cost of group membership - - + + Create (rez) a new prim object in a simulator + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Specify the + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties - + + Rez a Linden tree + A reference to the object where the object resides + The size of the tree + The rotation of the tree + The position of the tree + The Type of tree + The of the group to set the tree to, + or UUID.Zero if no group is to be set + true to use the "new" Linden trees, false to use the old - - The total number of current members this group has - - - The number of roles this group has configured - - - Show this group in agent's profile - - - Returns the name of the group - A string containing the name of the group - - + - A group Vote + Rez grass and ground cover + A reference to the object where the object resides + The size of the grass + The rotation of the grass + The position of the grass + The type of grass from the enum + The of the group to set the tree to, + or UUID.Zero if no group is to be set - - Key of Avatar who created Vote - - - Text of the Vote proposal - - - Total number of votes - - + - A group proposal + Set the textures to apply to the faces of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply - - The Text of the proposal - - - The minimum number of members that must vote before proposal passes or failes - - - The required ration of yes/no votes required for vote to pass - The three options are Simple Majority, 2/3 Majority, and Unanimous - TODO: this should be an enum - - The duration in days votes are accepted - - + + Set the textures to apply to the faces of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + A media URL (not used) - + + Set the Light data on an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - + + Set the flexible data on an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - + + Set the sculptie texture and data on an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set - + + Unset additional primitive parameters on an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The extra parameters to set - + + Link multiple prims into a linkset + A reference to the object where the objects reside + An array which contains the IDs of the objects to link + The last object in the array will be the root object of the linkset TODO: Is this true? - + + Change the rotation of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation of the object - + + Set the name of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new name of the object - + + Set the name of multiple objects + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the name of + An array which contains the new names of the objects - + + Set the description of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new description of the object - + + Set the descriptions of multiple objects + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the description of + An array which contains the new descriptions of the objects - + + Attach an object to this avatar + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The point on the avatar the object will be attached + The rotation of the attached object - + + Drop an attached object from this avatar + A reference to the + object where the objects reside. This will always be the simulator the avatar is currently in + + The object's ID which is local to the simulator the object is in - + + Detach an object from yourself + A reference to the + object where the objects reside + + This will always be the simulator the avatar is currently in + + An array which contains the IDs of the objects to detach - + + Change the position of an object, Will change position of entire linkset + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object - + + Change the position of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + if true, will change position of (this) child prim only, not entire linkset - + + Change the Scale (size) of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change scale of this prim only, not entire linkset + True to resize prims uniformly - + + Change the Rotation of an object that is either a child or a whole linkset + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change rotation of this prim only, not entire linkset - + + Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation, size, or position of the target object + The flags from the Enum - + + Deed an object (prim) to a group, Object must be shared with group which + can be accomplished with SetPermissions() + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The of the group to deed the object to - + - Struct representing a group notice + Deed multiple objects (prims) to a group, Objects must be shared with group which + can be accomplished with SetPermissions() + A reference to the object where the object resides + An array which contains the IDs of the objects to deed + The of the group to deed the object to - + + Set the permissions on multiple objects + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the permissions on + The new Who mask to set + The new Permissions mark to set + TODO: What does this do? - + + Request additional properties for an object + A reference to the object where the object resides + - + + Request additional properties for an object + A reference to the object where the object resides + Absolute UUID of the object + Whether to require server acknowledgement of this request - + + Set the ownership of a list of objects to the specified group + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the group id on + The Groups ID - + + Update current URL of the previously set prim media - - + UUID of the prim + Set current URL to this + Prim face number + Simulator in which prim is located - + - Struct representing a group notice list entry + Set object media + UUID of the prim + Array the length of prims number of faces. Null on face indexes where there is + no media, on faces which contain the media + Simulatior in which prim is located - - Notice ID - - - Creation timestamp of notice - - - Agent name who created notice - - - Notice subject - - - Is there an attachment? - - - Attachment Type - - + - Struct representing a member of a group chat session and their settings + Retrieve information about object media + UUID of the primitive + Simulator where prim is located + Call this callback when done - - The of the Avatar + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - True if user has voice chat enabled + + + A terse object update, used when a transformation matrix or + velocity/acceleration for an object changes but nothing else + (scale/position/rotation/acceleration/velocity) + + The sender + The EventArgs object containing the packet data - - True of Avatar has moderator abilities + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - True if a moderator has muted this avatars chat + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - True if a moderator has muted this avatars voice + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Role update flags - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Setup construction data for a basic primitive shape + Primitive shape to construct + Construction data that can be plugged into a - + + + + + + - + + + + - + + Set the Shape data of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + Data describing the prim shape - + + Set the Material data of an object + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new material of the object - + + + + + + - + + + + + + - - Can send invitations to groups default role + + Raised when the simulator sends us data containing + A , Foliage or Attachment + + - - Can eject members from group + + Raised when the simulator sends us data containing + additional information + + - - Can toggle 'Open Enrollment' and change 'Signup fee' + + Raised when the simulator sends us data containing + Primitive.ObjectProperties for an object we are currently tracking - - Member is visible in the public member list + + Raised when the simulator sends us data containing + additional and details + - - Can create new roles + + Raised when the simulator sends us data containing + updated information for an - - Can delete existing roles + + Raised when the simulator sends us data containing + and movement changes - - Can change Role names, titles and descriptions + + Raised when the simulator sends us data containing + updates to an Objects DataBlock - - Can assign other members to assigners role + + Raised when the simulator informs us an + or is no longer within view - - Can assign other members to any role + + Raised when the simulator sends us data containing + updated sit information for our - - Can remove members from roles + + Raised when the simulator sends us data containing + purchase price information for a - - Can assign and remove abilities in roles + + + Callback for getting object media data via CAP + + Indicates if the operation was succesfull + Object media version string + Array indexed on prim face of media entry data - - Can change group Charter, Insignia, 'Publish on the web' and which - members are publicly visible in group member listings + + Provides data for the event + The event occurs when the simulator sends + an containing a Primitive, Foliage or Attachment 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 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 + + + The following code example uses the , , and + properties to display new Primitives and Attachments on the window. + + // Subscribe to the event that gives us prim and foliage information + Client.Objects.ObjectUpdate += Objects_ObjectUpdate; + + + private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + { + Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + } + + + + + - - Can buy land or deed land to group + + + Construct a new instance of the PrimEventArgs class + + The simulator the object originated from + The Primitive + The simulator time dilation + The prim was not in the dictionary before this update + true if the primitive represents an attachment to an agent - - Can abandon group owned land to Governor Linden on mainland, or Estate owner for - private estates + + Get the simulator the originated from - - Can set land for-sale information on group owned parcels + + Get the details - - Can subdivide and join parcels + + true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) - - Can join group chat sessions + + true if the is attached to an - - Can use voice chat in Group Chat sessions + + Get the simulator Time Dilation - - Can moderate group chat sessions + + 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); + } + } + + + + - - Can toggle "Show in Find Places" and set search category + + + Construct a new instance of the AvatarUpdateEventArgs class + + The simulator the packet originated from + The data + The simulator time dilation + The avatar was not in the dictionary before this update - - Can change parcel name, description, and 'Publish on web' settings + + Get the simulator the object originated from - - Can set the landing point and teleport routing on group land + + Get the data - - Can change music and media settings + + Get the simulator time dilation - - Can toggle 'Edit Terrain' option in Land settings + + true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) - - Can toggle various About Land > Options settings + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment data + The event is also raised when a request is + made. + + + The following code example uses the , and + + properties to display new attachments and send a request for additional properties containing the name of the + attachment then display it on the window. + + // Subscribe to the event that provides additional primitive details + Client.Objects.ObjectProperties += Objects_ObjectProperties; + + // handle the properties data that arrives + private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) + { + Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); + } + + - - Can always terraform land, even if parcel settings have it turned off + + + Construct a new instance of the ObjectPropertiesEventArgs class + + The simulator the object is located + The primitive Properties - - Can always fly while over group owned land + + Get the simulator the object is located - - Can always rez objects on group owned land + + Get the primitive properties - - Can always create landmarks for group owned parcels + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive or Foliage data that is currently + being tracked in the dictionary + The event is also raised when a request is + made and is enabled + - - Can set home location on any group owned parcel + + + Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + + The simulator the object is located + The Primitive + The primitive Properties - - Can modify public access settings for group owned parcels + + Get the simulator the object is located - - Can manager parcel ban lists on group owned land + + Get the primitive details - - Can manage pass list sales information + + Get the primitive properties - - Can eject and freeze other avatars on group owned land + + 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 + - - Can return objects set to group + + Get the simulator the object is located - - Can return non-group owned/set objects + + - - Can return group owned objects + + - - Can landscape using Linden plants + + Provides primitive data containing updated location, velocity, rotation, textures for the event + The event occurs when the simulator sends updated location, velocity, rotation, etc + - - Can deed objects to group + + Get the simulator the object is located - - Can move group owned objects + + Get the primitive details - - Can set group owned objects for-sale + + - - Pay group liabilities and receive group dividends + + - - Can send group notices - - - Can receive group notices - - - Can create group proposals - - - Can vote on group proposals - - + - Handles all network traffic related to reading and writing group - information + - - - Construct a new instance of the GroupManager class - - A reference to the current instance + + Get the simulator the object is located - - The event subscribers. null if no subcribers + + Get the primitive details - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event - - The event subscribers. null if no subcribers + + Get the simulator the object is located - - Thread sync lock object + + The LocalID of the object - - The event subscribers. null if no subcribers + + + Provides updates sit position data + - - Thread sync lock object + + Get the simulator the object is located - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + + + - - The event subscribers. null if no subcribers + + Get the simulator the object is located - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - The event subscribers. null if no subcribers + + + Indicates if the operation was successful + - - Thread sync lock object + + + Media version string + - - The event subscribers. null if no subcribers + + + Array of media entries indexed by face number + - - Thread sync lock object + + + Singleton logging class for the entire library + - - The event subscribers. null if no subcribers + + log4net logging engine - - Thread sync lock object + + + Default constructor + - - The event subscribers. null if no subcribers + + + Send a log message to the logging engine + + The log message + The severity of the log entry - - Thread sync lock object + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client - - The event subscribers. null if no subcribers + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Exception that was raised - - Thread sync lock object + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + Exception that was raised - - The event subscribers. null if no subcribers + + + If the library is compiled with DEBUG defined, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine - - Thread sync lock object + + + If the library is compiled with DEBUG defined and + GridClient.Settings.DEBUG is true, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + Instance of the client - - A reference to the current instance + + Triggered whenever a message is logged. If this is left + null, log messages will go to the console - - Currently-active group members requests + + + Callback used for client apps to receive log messages from + the library + + Data being logged + The severity of the log entry from - - Currently-active group roles requests + + + + - - Currently-active group role-member requests + + + + + - - Dictionary keeping group members while request is in progress + + + De-serialization constructor for the InventoryNode Class + - - Dictionary keeping mebmer/role mapping while request is in progress + + + Serialization handler for the InventoryNode Class + - - Dictionary keeping GroupRole information while request is in progress + + + De-serialization handler for the InventoryNode Class + - - Caches group name lookups + + + + + - - Raised when the simulator sends us data containing - our current group membership + + - - Raised when the simulator responds to a RequestGroupName - or RequestGroupNames request + + - - Raised when the simulator responds to a request + + - - Raised when the simulator responds to a request + + - - Raised when the simulator responds to a request + + + For inventory folder nodes specifies weather the folder needs to be + refreshed from the server + - - Raised when the simulator responds to a request + + + Exception class to identify inventory exceptions + - - Raised when the simulator responds to a request + + + Responsible for maintaining inventory structure. Inventory constructs nodes + and manages node children as is necessary to maintain a coherant hirarchy. + Other classes should not manipulate or create InventoryNodes explicitly. When + A node's parent changes (when a folder is moved, for example) simply pass + Inventory the updated InventoryFolder and it will make the appropriate changes + to its internal representation. + - - Raised when a response to a RequestGroupAccountSummary is returned - by the simulator - - - Raised when a request to create a group is successful - - - Raised when a request to join a group either - fails or succeeds + + The event subscribers, null of no subscribers - - Raised when a request to leave a group either - fails or succeeds + + Raises the InventoryObjectUpdated Event + A InventoryObjectUpdatedEventArgs object containing + the data sent from the simulator - - Raised when A group is removed from the group server + + Thread sync lock object - - Raised when a request to eject a member from a group either - fails or succeeds + + The event subscribers, null of no subscribers - - Raised when the simulator sends us group notices - + + Raises the InventoryObjectRemoved Event + A InventoryObjectRemovedEventArgs object containing + the data sent from the simulator - - Raised when another agent invites our avatar to join a group + + Thread sync lock object - - Raises the CurrentGroups event - A CurrentGroupsEventArgs object containing the - data sent from the simulator + + The event subscribers, null of no subscribers - - Raises the GroupNamesReply event - A GroupNamesEventArgs object containing the - data response from the simulator + + Raises the InventoryObjectAdded Event + A InventoryObjectAddedEventArgs object containing + the data sent from the simulator - - Raises the GroupProfile event - An GroupProfileEventArgs object containing the - data returned from the simulator + + Thread sync lock object - - Raises the GroupMembers event - A GroupMembersEventArgs object containing the - data returned from the simulator + + + Returns the contents of the specified folder + + A folder's UUID + The contents of the folder corresponding to folder + When folder does not exist in the inventory - - Raises the GroupRolesDataReply event - A GroupRolesDataReplyEventArgs object containing the - data returned from the simulator + + + Updates the state of the InventoryNode and inventory data structure that + is responsible for the InventoryObject. If the item was previously not added to inventory, + it adds the item, and updates structure accordingly. If it was, it updates the + InventoryNode, changing the parent node if item.parentUUID does + not match node.Parent.Data.UUID. + + You can not set the inventory root folder using this method + + The InventoryObject to store - - Raises the GroupRoleMembersReply event - A GroupRolesRoleMembersReplyEventArgs object containing the - data returned from the simulator + + + Removes the InventoryObject and all related node data from Inventory. + + The InventoryObject to remove. - - Raises the GroupTitlesReply event - A GroupTitlesReplyEventArgs object containing the - data returned from the simulator + + + Used to find out if Inventory contains the InventoryObject + specified by uuid. + + The UUID to check. + true if inventory contains uuid, false otherwise - - Raises the GroupAccountSummary event - A GroupAccountSummaryReplyEventArgs object containing the - data returned from the simulator + + + Saves the current inventory structure to a cache file + + Name of the cache file to save to - - Raises the GroupCreated event - An GroupCreatedEventArgs object containing the - data returned from the simulator + + + Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + + Name of the cache file to load + The number of inventory items sucessfully reconstructed into the inventory node tree - - Raises the GroupJoined event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator + + Raised when the simulator sends us data containing + ... - - Raises the GroupLeft event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator + + Raised when the simulator sends us data containing + ... - - Raises the GroupDropped event - An GroupDroppedEventArgs object containing the - the group your agent left + + Raised when the simulator sends us data containing + ... - - Raises the GroupMemberEjected event - An GroupMemberEjectedEventArgs object containing the - data returned from the simulator + + + The root folder of this avatars inventory + - - Raises the GroupNoticesListReply event - An GroupNoticesListReplyEventArgs object containing the - data returned from the simulator + + + The default shared library folder + - - Raises the GroupInvitation event - An GroupInvitationEventArgs object containing the - data returned from the simulator + + + The root node of the avatars inventory + - + - Request a current list of groups the avatar is a member of. + The root node of the default shared library - CAPS Event Queue must be running for this to work since the results - come across CAPS. - + - Lookup name of group based on groupID + By using the bracket operator on this class, the program can get the + InventoryObject designated by the specified uuid. If the value for the corresponding + UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). + If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), + the uuid parameter is ignored. - groupID of group to lookup name for. + The UUID of the InventoryObject to get or set, ignored if set to non-null value. + The InventoryObject corresponding to uuid. - + + Describes tasks returned in LandStatReply + + - Request lookup of multiple group names + Estate level administration and utilities - List of group IDs to request. - - Lookup group profile data such as name, enrollment, founder, logo, etc - Subscribe to OnGroupProfile event to receive the results. - group ID (UUID) + + Textures for each of the four terrain height levels - - Request a list of group members. - Subscribe to OnGroupMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + Upper/lower texture boundaries for each corner of the sim - - Request group roles - Subscribe to OnGroupRoles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + + Constructor for EstateTools class + + - - Request members (members,role) role mapping for a group. - Subscribe to OnGroupRolesMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + The event subscribers. null if no subcribers - - Request a groups Titles - Subscribe to OnGroupTitles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache + + Raises the TopCollidersReply event + A TopCollidersReplyEventArgs object containing the + data returned from the data server - - Begin to get the group account summary - Subscribe to the OnGroupAccountSummary event to receive the results. - group ID (UUID) - How long of an interval - Which interval (0 for current, 1 for last) + + Thread sync lock object - - Invites a user to a group - The group to invite to - A list of roles to invite a person to - Key of person to invite + + The event subscribers. null if no subcribers - - Set a group as the current active group - group ID (UUID) + + Raises the TopScriptsReply event + A TopScriptsReplyEventArgs object containing the + data returned from the data server - - Change the role that determines your active title - Group ID to use - Role ID to change to + + Thread sync lock object - - Set this avatar's tier contribution - Group ID to change tier in - amount of tier to donate + + The event subscribers. null if no subcribers - - - Save wheather agent wants to accept group notices and list this group in their profile - - Group - Accept notices from this group - List this group in the profile + + Raises the EstateUsersReply event + A EstateUsersReplyEventArgs object containing the + data returned from the data server - - Request to join a group - Subscribe to OnGroupJoined event for confirmation. - group ID (UUID) to join. + + Thread sync lock object - - - Request to create a new group. If the group is successfully - created, L$100 will automatically be deducted - - Subscribe to OnGroupCreated event to receive confirmation. - Group struct containing the new group info + + The event subscribers. null if no subcribers - - Update a group's profile and other information - Groups ID (UUID) to update. - Group struct to update. + + Raises the EstateGroupsReply event + A EstateGroupsReplyEventArgs object containing the + data returned from the data server - - Eject a user from a group - Group ID to eject the user from - Avatar's key to eject + + Thread sync lock object - - Update role information - Modified role to be updated + + The event subscribers. null if no subcribers - - Create a new group role - Group ID to update - Role to create + + Raises the EstateManagersReply event + A EstateManagersReplyEventArgs object containing the + data returned from the data server - - Delete a group role - Group ID to update - Role to delete + + Thread sync lock object - - Remove an avatar from a role - Group ID to update - Role ID to be removed from - Avatar's Key to remove + + The event subscribers. null if no subcribers - - Assign an avatar to a role - Group ID to update - Role ID to assign to - Avatar's ID to assign to role + + Raises the EstateBansReply event + A EstateBansReplyEventArgs object containing the + data returned from the data server - - Request the group notices list - Group ID to fetch notices for + + Thread sync lock object - - Request a group notice by key - ID of group notice + + The event subscribers. null if no subcribers - - Send out a group notice - Group ID to update - - GroupNotice structure containing notice data + + Raises the EstateCovenantReply event + A EstateCovenantReplyEventArgs object containing the + data returned from the data server - - Start a group proposal (vote) - The Group ID to send proposal to - - GroupProposal structure containing the proposal + + Thread sync lock object - - Request to leave a group - Subscribe to OnGroupLeft event to receive confirmation - The group to leave + + The event subscribers. null if no subcribers - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Raises the EstateUpdateInfoReply event + A EstateUpdateInfoReplyEventArgs object containing the + data returned from the data server - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Thread sync lock object - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Requests estate information such as top scripts and colliders + + + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Requests estate settings, including estate manager and access/ban lists - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Requests the "Top Scripts" list for the current region - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Requests the "Top Colliders" list for the current region - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Set several estate specific configuration variables + + The Height of the waterlevel over the entire estate. Defaults to 20 + The maximum height change allowed above the baked terrain. Defaults to 4 + The minimum height change allowed below the baked terrain. Defaults to -4 + true to use + if True forces the sun position to the position in SunPosition + The current position of the sun on the estate, or when FixedSun is true the static position + the sun will remain. 6.0 = Sunrise, 30.0 = Sunset - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Request return of objects owned by specified avatar + + The Agents owning the primitives to return + specify the coverage and type of objects to be included in the return + true to perform return on entire estate - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Used for setting and retrieving various estate panel settings + + EstateOwnerMessage Method field + List of parameters to include - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Kick an avatar from an estate + + Key of Agent to remove - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Ban an avatar from an estate + Key of Agent to remove + Ban user from this estate and all others owned by the estate owner - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + Unban an avatar from an estate + Key of Agent to remove + /// Unban user from this estate and all others owned by the estate owner - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Send a message dialog to everyone in an entire estate + + Message to send all users in the estate - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Send a message dialog to everyone in a simulator + + Message to send all users in the simulator - - Contains the current groups your agent is a member of + + + Send an avatar back to their home location + + Key of avatar to send home - - Construct a new instance of the CurrentGroupsEventArgs class - The current groups your agent is a member of + + + Begin the region restart process + - - Get the current groups your agent is a member of + + + Cancels a region restart + - - A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + Estate panel "Region" tab settings - - Construct a new instance of the GroupNamesEventArgs class - The Group names dictionary + + Estate panel "Debug" tab settings - - Get the Group Names dictionary + + Used for setting the region's terrain textures for its four height levels + + + + - - Represents the members of a group + + Used for setting sim terrain texture heights - + + Requests the estate covenant + + - Construct a new instance of the GroupMembersReplyEventArgs class + Upload a terrain RAW file - The ID of the request - The ID of the group - The membership list of the group - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary of members - - - Represents the roles associated with a group - - - Construct a new instance of the GroupRolesDataReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The dictionary containing the roles - - - Get the ID as returned by the request to correlate - this result set and the request + A byte array containing the encoded terrain data + The name of the file being uploaded + The Id of the transfer request - - Get the ID of the group + + + Teleports all users home in current Estate + - - Get the dictionary containing the roles + + + Remove estate manager + Key of Agent to Remove + removes manager to this estate and all others owned by the estate owner - - Represents the Role to Member mappings for a group + + + Add estate manager + Key of Agent to Add + Add agent as manager to this estate and all others owned by the estate owner - - Construct a new instance of the GroupRolesMembersReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The member to roles map + + + Add's an agent to the estate Allowed list + Key of Agent to Add + Add agent as an allowed reisdent to All estates if true - - Get the ID as returned by the request to correlate - this result set and the request + + + Removes an agent from the estate Allowed list + Key of Agent to Remove + Removes agent as an allowed reisdent from All estates if true - - Get the ID of the group + + + + Add's a group to the estate Allowed list + Key of Group to Add + Add Group as an allowed group to All estates if true - - Get the member to roles map + + + + Removes a group from the estate Allowed list + Key of Group to Remove + Removes Group as an allowed Group from All estates if true - - Represents the titles for a group + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Construct a new instance of the GroupTitlesReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The titles + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the ID as returned by the request to correlate - this result set and the request + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Get the ID of the group + + Raised when the data server responds to a request. - - Get the titles + + Raised when the data server responds to a request. - - Represents the summary data for a group + + Raised when the data server responds to a request. - - Construct a new instance of the GroupAccountSummaryReplyEventArgs class - The ID of the group - The summary data + + Raised when the data server responds to a request. - - Get the ID of the group + + Raised when the data server responds to a request. - - Get the summary data + + Raised when the data server responds to a request. - - A response to a group create request + + Raised when the data server responds to a request. - - Construct a new instance of the GroupCreatedReplyEventArgs class - The ID of the group - the success or faulure of the request - A string containing additional information + + Raised when the data server responds to a request. - - Get the ID of the group + + Used in the ReportType field of a LandStatRequest - - true of the group was created successfully + + Used by EstateOwnerMessage packets - - A string containing the message + + Used by EstateOwnerMessage packets - - Represents a response to a request + + + + - - Construct a new instance of the GroupOperationEventArgs class - The ID of the group - true of the request was successful + + No flags set - - Get the ID of the group + + Only return targets scripted objects - - true of the request was successful + + Only return targets objects if on others land - - Represents your agent leaving a group + + Returns target's scripted objects and objects on other parcels - - Construct a new instance of the GroupDroppedEventArgs class - The ID of the group + + Ground texture settings for each corner of the region - - Get the ID of the group + + Used by GroundTextureHeightSettings - - Represents a list of active group notices + + The high and low texture thresholds for each corner of the sim - - Construct a new instance of the GroupNoticesListReplyEventArgs class - The ID of the group - The list containing active notices + + Raised on LandStatReply when the report type is for "top colliders" - - Get the ID of the group + + Construct a new instance of the TopCollidersReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply - - Get the notices list + + + The number of returned items in LandStatReply + - - Represents the profile of a group + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + - - Construct a new instance of the GroupProfileEventArgs class - The group profile + + Raised on LandStatReply when the report type is for "top Scripts" - - Get the group profile + + Construct a new instance of the TopScriptsReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply - + - Provides notification of a group invitation request sent by another Avatar + The number of scripts returned in LandStatReply - The invitation is raised when another avatar makes an offer for our avatar - to join a group. - - - The ID of the Avatar sending the group invitation - - - The name of the Avatar sending the group invitation - - A message containing the request information which includes - the name of the group, the groups charter and the fee to join details + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + - - The Simulator + + Returned, along with other info, upon a successful .RequestInfo() - - Set to true to accept invitation, false to decline + + Construct a new instance of the EstateBansReplyEventArgs class + The estate's identifier on the grid + The number of returned items in LandStatReply + User UUIDs banned - + - Static helper functions and global variables + The identifier of the estate - + - Passed to Logger.Log() to identify the severity of a log entry + The number of returned itmes - - No logging information will be output + + + List of UUIDs of Banned Users + - - Non-noisy useful information, may be helpful in - debugging a problem + + Returned, along with other info, upon a successful .RequestInfo() - - A non-critical error occurred. A warning will not - prevent the rest of the library from operating as usual, - although it may be indicative of an underlying issue + + Construct a new instance of the EstateUsersReplyEventArgs class + The estate's identifier on the grid + The number of users + Allowed users UUIDs - - A critical error has occurred. Generally this will - be followed by the network layer shutting down, although the - stability of the library after an error is uncertain + + + The identifier of the estate + - - Used for internal testing, this logging level can - generate very noisy (long and/or repetitive) messages. Don't - pass this to the Log() function, use DebugLog() instead. + + + The number of returned items - - This header flag signals that ACKs are appended to the packet + + + List of UUIDs of Allowed Users + - - This header flag signals that this packet has been sent before + + Returned, along with other info, upon a successful .RequestInfo() - - This header flags signals that an ACK is expected for this packet + + Construct a new instance of the EstateGroupsReplyEventArgs class + The estate's identifier on the grid + The number of Groups + Allowed Groups UUIDs - - This header flag signals that the message is compressed using zerocoding + + + The identifier of the estate + - + + The number of returned items - - - - - + + List of UUIDs of Allowed Groups - - - - - - - + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateManagersReplyEventArgs class + The estate's identifier on the grid + The number of Managers + Managers UUIDs + + + The identifier of the estate - - - - - + + The number of returned items - - - - - - - + - Given an X/Y location in absolute (grid-relative) terms, a region - handle is returned along with the local X/Y location in that region + List of UUIDs of the Estate's Managers - The absolute X location, a number such as - 255360.35 - The absolute Y location, a number such as - 255360.35 - The sim-local X position of the global X - position, a value from 0.0 to 256.0 - The sim-local Y position of the global Y - position, a value from 0.0 to 256.0 - A 64-bit region handle that can be used to teleport to - + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateCovenantReplyEventArgs class + The Covenant ID + The timestamp + The estate's name + The Estate Owner's ID (can be a GroupID) + + - Converts a floating point number to a terse string format used for - transmitting numbers in wearable asset files + The Covenant - Floating point number to convert to a string - A terse string representation of the input number - + - Convert a variable length field (byte array) to a string, with a - field name prepended to each line of the output + The timestamp - If the byte array has unprintable characters in it, a - hex dump will be written instead - The StringBuilder object to write to - The byte array to convert to a string - A field name to prepend to each line of output - + - Decode a zerocoded byte array, used to decompress packets marked - with the zerocoded flag + The Estate name - Any time a zero is encountered, the next byte is a count - of how many zeroes to expand. One zero is encoded with 0x00 0x01, - two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The - first four bytes are copied directly to the output buffer. - - The byte array to decode - The length of the byte array to decode. This - would be the length of the packet up to (but not including) any - appended ACKs - The output byte array to decode to - The length of the output buffer - + - Encode a byte array with zerocoding. Used to compress packets marked - with the zerocoded flag. Any zeroes in the array are compressed down - to a single zero byte followed by a count of how many zeroes to expand - out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, - three zeroes becomes 0x00 0x03, etc. The first four bytes are copied - directly to the output buffer. + The Estate Owner's ID (can be a GroupID) - The byte array to encode - The length of the byte array to encode - The output byte array to encode to - The length of the output buffer - + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateUpdateInfoReplyEventArgs class + The estate's name + The Estate Owners ID (can be a GroupID) + The estate's identifier on the grid + + + - Calculates the CRC (cyclic redundancy check) needed to upload inventory. + The estate's name - Creation date - Sale type - Inventory type - Type - Asset ID - Group ID - Sale price - Owner ID - Creator ID - Item ID - Folder ID - Everyone mask (permissions) - Flags - Next owner mask (permissions) - Group mask (permissions) - Owner mask (permissions) - The calculated CRC - + - Attempts to load a file embedded in the assembly + The Estate Owner's ID (can be a GroupID) - The filename of the resource to load - A Stream for the requested file, or null if the resource - was not successfully loaded - + - Attempts to load a file either embedded in the assembly or found in - a given search path + The identifier of the estate on the grid - The filename of the resource to load - An optional path that will be searched if - the asset is not found embedded in the assembly - A Stream for the requested file, or null if the resource - was not successfully loaded - + + + + - Converts a list of primitives to an object that can be serialized - with the LLSD system + Image width - Primitives to convert to a serializable object - An object that can be serialized with LLSD - + - Deserializes OSD in to a list of primitives + Image height - Structure holding the serialized primitive list, - must be of the SDMap type - A list of deserialized primitives - + - Converts a struct or class object containing fields only into a key value separated string + Image channel flags - The struct object - A string containing the struct fields as the keys, and the field value as the value separated - - - // Add the following code to any struct or class containing only fields to override the ToString() - // method to display the values of the passed object - /// Print the struct data as a string - ///A string containing the field name, and field value - public override string ToString() - { - return Helpers.StructToString(this); - } - - - + - The InternalDictionary class is used through the library for storing key/value pairs. - It is intended to be a replacement for the generic Dictionary class and should - be used in its place. It contains several methods for allowing access to the data from - outside the library that are read only and thread safe. + Red channel data - Key - Value - + - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. + Green channel data - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); - - - + - Initializes a new instance of the Class - with the specified key/value, has its initial valies copied from the specified - - - - to copy initial values from - - - // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. - // populates with copied values from example KeyNameCache Dictionary. - // create source dictionary - Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); - KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); - KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); - // Initialize new dictionary. - public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); - - + Blue channel data + - + - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. + Alpha channel data - Initial size of dictionary - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); - - - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - on this member + + + Bump channel data + - + - Indexer for the dictionary + Create a new blank image - The key - The value + width + height + channel flags - + - Gets the number of Key/Value pairs contained in the + + + - + - Try to get entry from with specified key + Convert the channels in the image. Channels are created or destroyed as required. - Key to use for lookup - Value returned - - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - + new channel flags - + - Finds the specified match. + Resize or stretch the image using nearest neighbor (ugly) resampling - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - + new width + new height - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - + + + Represents an AssetScriptBinary object containing the + LSO compiled bytecode of an LSL script + - - Perform an on each entry in an - - to perform - - - // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. - Client.Network.CurrentSim.ObjectsPrimitives.ForEach( - delegate(Primitive prim) - { - if (prim.Text != null) - { - Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", - prim.PropertiesFamily.Name, prim.ID, prim.Text); - } - }); - - + + Initializes a new instance of an AssetScriptBinary object - - Perform an on each key of an - - to perform + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data - + - Perform an on each KeyValuePair of an - - to perform + TODO: Encodes a scripts contents into a LSO Bytecode file + - - Check if Key exists in Dictionary - Key to check for - - if found, otherwise + + + TODO: Decode LSO Bytecode into a string + + true - - Check if Value exists in Dictionary - Value to check for - - if found, otherwise + + Override the base classes AssetType - + - Adds the specified key to the dictionary, dictionary locking is not performed, - - The key - The value + + - + - Removes the specified key, dictionary locking is not performed + An instance of DelegateWrapper which calls InvokeWrappedDelegate, + which in turn calls the DynamicInvoke method of the wrapped + delegate - The key. - - if successful, otherwise - + - Exception class to identify inventory exceptions + Callback used to call EndInvoke on the asynchronously + invoked DelegateWrapper - + - Responsible for maintaining inventory structure. Inventory constructs nodes - and manages node children as is necessary to maintain a coherant hirarchy. - Other classes should not manipulate or create InventoryNodes explicitly. When - A node's parent changes (when a folder is moved, for example) simply pass - Inventory the updated InventoryFolder and it will make the appropriate changes - to its internal representation. + Executes the specified delegate with the specified arguments + asynchronously on a thread pool thread + + - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - + - By using the bracket operator on this class, the program can get the - InventoryObject designated by the specified uuid. If the value for the corresponding - UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). - If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), - the uuid parameter is ignored. + Invokes the wrapped delegate synchronously - The UUID of the InventoryObject to get or set, ignored if set to non-null value. - The InventoryObject corresponding to uuid. + + - + - The root folder of this avatars inventory + Calls EndInvoke on the wrapper and Close on the resulting WaitHandle + to prevent resource leaks + - + - The default shared library folder + Delegate to wrap another delegate and its arguments + + - + - The root node of the avatars inventory + Checks the instance back into the object pool - + - The root node of the default shared library + Returns an instance of the class that has been checked out of the Object Pool. - - Raises the InventoryObjectUpdated Event - A InventoryObjectUpdatedEventArgs object containing - the data sent from the simulator - - - Raises the InventoryObjectRemoved Event - A InventoryObjectRemovedEventArgs object containing - the data sent from the simulator - - - Raises the InventoryObjectAdded Event - A InventoryObjectAddedEventArgs object containing - the data sent from the simulator - - + - Returns the contents of the specified folder + Creates a new instance of the ObjectPoolBase class. Initialize MUST be called + after using this constructor. - A folder's UUID - The contents of the folder corresponding to folder - When folder does not exist in the inventory - + - Updates the state of the InventoryNode and inventory data structure that - is responsible for the InventoryObject. If the item was previously not added to inventory, - it adds the item, and updates structure accordingly. If it was, it updates the - InventoryNode, changing the parent node if item.parentUUID does - not match node.Parent.Data.UUID. - You can not set the inventory root folder using this method + Creates a new instance of the ObjectPool Base class. - The InventoryObject to store + The object pool is composed of segments, which + are allocated whenever the size of the pool is exceeded. The number of items + in a segment should be large enough that allocating a new segmeng is a rare + thing. For example, on a server that will have 10k people logged in at once, + the receive buffer object pool should have segment sizes of at least 1000 + byte arrays per segment. + + The minimun number of segments that may exist. + Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. + The frequency which segments are checked to see if they're eligible for cleanup. - + - Removes the InventoryObject and all related node data from Inventory. + Forces the segment cleanup algorithm to be run. This method is intended + primarly for use from the Unit Test libraries. - The InventoryObject to remove. - + - Used to find out if Inventory contains the InventoryObject - specified by uuid. + Responsible for allocate 1 instance of an object that will be stored in a segment. - The UUID to check. - true if inventory contains uuid, false otherwise + An instance of whatever objec the pool is pooling. - + - Saves the current inventory structure to a cache file + Checks in an instance of T owned by the object pool. This method is only intended to be called + by the WrappedObject class. - Name of the cache file to save to + The segment from which the instance is checked out. + The instance of T to check back into the segment. - + - Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + Checks an instance of T from the pool. If the pool is not sufficient to + allow the checkout, a new segment is created. - Name of the cache file to load - The number of inventory items sucessfully reconstructed into the inventory node tree - - - Sort by name - - - Sort by date - - - Sort folders by name, regardless of whether items are - sorted by name or date - - - Place system folders at the top + A WrappedObject around the instance of T. To check + the instance back into the segment, be sureto dispose the WrappedObject + when finished. - + - Possible destinations for DeRezObject request + The total number of segments created. Intended to be used by the Unit Tests. - + + The number of items that are in a segment. Items in a segment + are all allocated at the same time, and are hopefully close to + each other in the managed heap. - - Copy from in-world to agent inventory - - - Derez to TaskInventory - - - - - - - Take Object - - + + The minimum number of segments. When segments are reclaimed, + this number of segments will always be left alone. These + segments are allocated at startup. - - Delete Object - - - Put an avatar attachment into agent inventory - - + + The age a segment must be before it's eligible for cleanup. + This is used to prevent thrash, and typical values are in + the 5 minute range. - - Return an object back to the owner's inventory - - - Return a deeded object back to the last owner's inventory - - + - Upper half of the Flags field for inventory items + The frequence which the cleanup thread runs. This is typically + expected to be in the 5 minute range. - - Indicates that the NextOwner permission will be set to the - most restrictive set of permissions found in the object set - (including linkset items and object inventory items) on next rez - - - Indicates that the object sale information has been - changed - - - If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez + + Size of the byte array used to store raw packet data - - If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez + + Raw packet data buffer - - Indicates whether this object is composed of multiple - items or not + + Length of the data to transmit - - Indicates that the asset is only referenced by this - inventory item. If this item is deleted or updated to reference a - new assetID, the asset can be deleted + + EndPoint of the remote host - + - Base Class for Inventory Items + Create an allocated UDP packet buffer for receiving a packet - + - Constructor, takes an itemID as a parameter + Create an allocated UDP packet buffer for sending a packet - The of the item + EndPoint of the remote host - + + Create an allocated UDP packet buffer for sending a packet - - - - - - of item/folder - - - - of parent folder - - - Name of item/folder - - - Item/Folder Owners + EndPoint of the remote host + Size of the buffer to allocate for packet data - + + Object pool for packet buffers. This is used to allocate memory for all + incoming and outgoing packets, and zerocoding buffers for those packets - - - + - Generates a number corresponding to the value of the object to support the use of a hash table, - suitable for use in hashing algorithms and data structures such as a hash table + Initialize the object pool in client mode - A Hashcode of all the combined InventoryBase fields + Server to connect to + + - + - Determine whether the specified object is equal to the current object + Initialize the object pool in server mode - InventoryBase object to compare against - true if objects are the same + + - + - Determine whether the specified object is equal to the current object + Returns a packet buffer with EndPoint set if the buffer is in + client mode, or with EndPoint set to null in server mode - InventoryBase object to compare against - true if objects are the same + Initialized UDPPacketBuffer object - + - An Item in Inventory + Default constructor - + - Construct a new InventoryItem object + Check a packet buffer out of the pool - The of the item + A packet buffer object - + - Construct a new InventoryItem object of a specific Type + Static pre-defined animations available to all agents - The type of item from - - of the item - - - - - + + Agent with afraid expression on face - - The of this item + + Agent aiming a bazooka (right handed) - - The combined of this item + + Agent aiming a bow (left handed) - - The type of item from + + Agent aiming a hand gun (right handed) - - The type of item from the enum + + Agent aiming a rifle (right handed) - - The of the creator of this item + + Agent with angry expression on face - - A Description of this item + + Agent hunched over (away) - - The s this item is set to or owned by + + Agent doing a backflip - - If true, item is owned by a group + + Agent laughing while holding belly - - The price this item can be purchased for + + Agent blowing a kiss - - The type of sale from the enum + + Agent with bored expression on face - - Combined flags from + + Agent bowing to audience - - Time and date this inventory item was created, stored as - UTC (Coordinated Universal Time) + + Agent brushing himself/herself off - - Used to update the AssetID in requests sent to the server + + Agent in busy mode - - The of the previous owner of the item + + Agent clapping hands - - - Indicates inventory item is a link - - True if inventory item is a link to another inventory item + + Agent doing a curtsey bow - - - - - + + Agent crouching - - - Generates a number corresponding to the value of the object to support the use of a hash table. - Suitable for use in hashing algorithms and data structures such as a hash table - - A Hashcode of all the combined InventoryItem fields + + Agent crouching while walking - - - Compares an object - - The object to compare - true if comparison object matches + + Agent crying - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same + + Agent unanimated with arms out (e.g. setting appearance) - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same + + Agent re-animated after set appearance finished - - - InventoryTexture Class representing a graphical image - - + + Agent dancing - - - Construct an InventoryTexture object - - A which becomes the - objects AssetUUID + + Agent dancing - - - Construct an InventoryTexture object from a serialization stream - + + Agent dancing - - - InventorySound Class representing a playable sound - + + Agent dancing - - - Construct an InventorySound object - - A which becomes the - objects AssetUUID + + Agent dancing - - - Construct an InventorySound object from a serialization stream - - - - - InventoryCallingCard Class, contains information on another avatar - + + Agent dancing - - - Construct an InventoryCallingCard object - - A which becomes the - objects AssetUUID + + Agent dancing - - - Construct an InventoryCallingCard object from a serialization stream - + + Agent dancing - - - InventoryLandmark Class, contains details on a specific location - + + Agent on ground unanimated - - - Construct an InventoryLandmark object - - A which becomes the - objects AssetUUID + + Agent boozing it up - - - Construct an InventoryLandmark object from a serialization stream - + + Agent with embarassed expression on face - - - Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited - + + Agent with afraid expression on face - - - InventoryObject Class contains details on a primitive or coalesced set of primitives - + + Agent with angry expression on face - - - Construct an InventoryObject object - - A which becomes the - objects AssetUUID + + Agent with bored expression on face - - - Construct an InventoryObject object from a serialization stream - + + Agent crying - - - Gets or sets the upper byte of the Flags value - + + Agent showing disdain (dislike) for something - - - Gets or sets the object attachment point, the lower byte of the Flags value - + + Agent with embarassed expression on face - - - InventoryNotecard Class, contains details on an encoded text document - + + Agent with frowning expression on face - - - Construct an InventoryNotecard object - - A which becomes the - objects AssetUUID + + Agent with kissy face - - - Construct an InventoryNotecard object from a serialization stream - + + Agent expressing laughgter - - - InventoryCategory Class - - TODO: Is this even used for anything? + + Agent with open mouth - - - Construct an InventoryCategory object - - A which becomes the - objects AssetUUID + + Agent with repulsed expression on face - - - Construct an InventoryCategory object from a serialization stream - + + Agent expressing sadness - - - InventoryLSL Class, represents a Linden Scripting Language object - + + Agent shrugging shoulders - - - Construct an InventoryLSL object - - A which becomes the - objects AssetUUID + + Agent with a smile - - - Construct an InventoryLSL object from a serialization stream - + + Agent expressing surprise - - - InventorySnapshot Class, an image taken with the viewer - + + Agent sticking tongue out - - - Construct an InventorySnapshot object - - A which becomes the - objects AssetUUID + + Agent with big toothy smile - - - Construct an InventorySnapshot object from a serialization stream - + + Agent winking - - - InventoryAttachment Class, contains details on an attachable object - + + Agent expressing worry - - - Construct an InventoryAttachment object - - A which becomes the - objects AssetUUID + + Agent falling down - - - Construct an InventoryAttachment object from a serialization stream - + + Agent walking (feminine version) - - - Get the last AttachmentPoint this object was attached to - + + Agent wagging finger (disapproval) - - - InventoryWearable Class, details on a clothing item or body part - + + I'm not sure I want to know - - - Construct an InventoryWearable object - - A which becomes the - objects AssetUUID + + Agent in superman position - - - Construct an InventoryWearable object from a serialization stream - + + Agent in superman position - - - The , Skin, Shape, Skirt, Etc - + + Agent greeting another - - - InventoryAnimation Class, A bvh encoded object which animates an avatar - + + Agent holding bazooka (right handed) - - - Construct an InventoryAnimation object - - A which becomes the - objects AssetUUID + + Agent holding a bow (left handed) - - - Construct an InventoryAnimation object from a serialization stream - + + Agent holding a handgun (right handed) - - - InventoryGesture Class, details on a series of animations, sounds, and actions - + + Agent holding a rifle (right handed) - - - Construct an InventoryGesture object - - A which becomes the - objects AssetUUID + + Agent throwing an object (right handed) - - - Construct an InventoryGesture object from a serialization stream - + + Agent in static hover - - - A folder contains s and has certain attributes specific - to itself - + + Agent hovering downward - - - Constructor - - UUID of the folder + + Agent hovering upward - - - Construct an InventoryFolder object from a serialization stream - + + Agent being impatient - - The Preferred for a folder. + + Agent jumping - - The Version of this folder + + Agent jumping with fervor - - Number of child items this folder contains. + + Agent point to lips then rear end - - - - - + + Agent landing from jump, finished flight, etc - - - Get Serilization data for this InventoryFolder object - + + Agent laughing - - - - - + + Agent landing from jump, finished flight, etc - - - - - - - + + Agent sitting on a motorcycle - - - - - - - + + - - - - - - - + + Agent moving head side to side - - - Tools for dealing with agents inventory - + + Agent moving head side to side with unhappy expression - - - Default constructor - - Reference to the GridClient object + + Agent taunting another - - - Callback for inventory item creation finishing - - Whether the request to create an inventory - item succeeded or not - Inventory item being created. If success is - false this will be null + + - - - Callback for an inventory item being create from an uploaded asset - - true if inventory item creation was successful - - - - - - + + Agent giving peace sign - - - - - + + Agent pointing at self - - - Reply received when uploading an inventory asset - - Has upload been successful - Error message if upload failed - Inventory asset UUID - New asset UUID + + Agent pointing at another - - - Delegate that is invoked when script upload is completed - - Has upload succeded (note, there still might be compile errors) - Upload status message - Is compilation successful - If compilation failed, list of error messages, null on compilation success - Script inventory UUID - Script's new asset UUID + + Agent preparing for jump (bending knees) - - Used for converting shadow_id to asset_id + + Agent punching with left hand - - The event subscribers, null of no subscribers + + Agent punching with right hand - - Thread sync lock object + + Agent acting repulsed - - The event subscribers, null of no subscribers + + Agent trying to be Chuck Norris - - Thread sync lock object + + Rocks, Paper, Scissors 1, 2, 3 - - The event subscribers, null of no subscribers + + Agent with hand flat over other hand - - Thread sync lock object + + Agent with fist over other hand - - The event subscribers, null of no subscribers + + Agent with two fingers spread over other hand - - Thread sync lock object + + Agent running - - The event subscribers, null of no subscribers + + Agent appearing sad - - Thread sync lock object + + Agent saluting - - The event subscribers, null of no subscribers + + Agent shooting bow (left handed) - - Thread sync lock object + + Agent cupping mouth as if shouting - - The event subscribers, null of no subscribers + + Agent shrugging shoulders - - Thread sync lock object + + Agent in sit position - - The event subscribers, null of no subscribers + + Agent in sit position (feminine) - - Thread sync lock object + + Agent in sit position (generic) - - Partial mapping of AssetTypes to folder names + + Agent sitting on ground - - Raised when the simulator sends us data containing - ... + + Agent sitting on ground - - Raised when the simulator sends us data containing - ... + + - - Raised when the simulator sends us data containing - an inventory object sent by another avatar or primitive + + Agent sleeping on side - - Raised when the simulator sends us data containing - ... + + Agent smoking - - Raised when the simulator sends us data containing - ... + + Agent inhaling smoke - - Raised when the simulator sends us data containing - ... + + - - Raised when the simulator sends us data containing - ... + + Agent taking a picture - - Raised when the simulator sends us data containing - ... + + Agent standing - - - Get this agents Inventory data - + + Agent standing up - - Raises the ItemReceived Event - A ItemReceivedEventArgs object containing - the data sent from the simulator + + Agent standing - - Raises the FolderUpdated Event - A FolderUpdatedEventArgs object containing - the data sent from the simulator + + Agent standing - - Raises the InventoryObjectOffered Event - A InventoryObjectOfferedEventArgs object containing - the data sent from the simulator + + Agent standing - - Raises the TaskItemReceived Event - A TaskItemReceivedEventArgs object containing - the data sent from the simulator + + Agent standing - - Raises the FindObjectByPath Event - A FindObjectByPathEventArgs object containing - the data sent from the simulator + + Agent stretching - - Raises the TaskInventoryReply Event - A TaskInventoryReplyEventArgs object containing - the data sent from the simulator + + Agent in stride (fast walk) - - Raises the SaveAssetToInventory Event - A SaveAssetToInventoryEventArgs object containing - the data sent from the simulator + + Agent surfing - - Raises the ScriptRunningReply Event - A ScriptRunningReplyEventArgs object containing - the data sent from the simulator + + Agent acting surprised - - - Fetch an inventory item from the dataserver - - The items - The item Owners - a integer representing the number of milliseconds to wait for results - An object on success, or null if no item was found - Items will also be sent to the event + + Agent striking with a sword - - - Request A single inventory item - - The items - The item Owners - + + Agent talking (lips moving) - - - Request inventory items - - Inventory items to request - Owners of the inventory items - + + Agent throwing a tantrum - - - Get contents of a folder - - The of the folder to search - The of the folders owner - true to retrieve folders - true to retrieve items - sort order to return results in - a integer representing the number of milliseconds to wait for results - A list of inventory items matching search criteria within folder - - InventoryFolder.DescendentCount will only be accurate if both folders and items are - requested + + Agent throwing an object (right handed) - - - Request the contents of an inventory folder - - The folder to search - The folder owners - true to return s contained in folder - true to return s containd in folder - the sort order to return items in - + + Agent trying on a shirt - - - Returns the UUID of the folder (category) that defaults to - containing 'type'. The folder is not necessarily only for that - type - - This will return the root folder if one does not exist - - - The UUID of the desired folder if found, the UUID of the RootFolder - if not found, or UUID.Zero on failure + + Agent turning to the left - - - Find an object in inventory using a specific path to search - - The folder to begin the search in - The object owners - A string path to search - milliseconds to wait for a reply - Found items or if - timeout occurs or item is not found + + Agent turning to the right - + + Agent typing + + + Agent walking + + + Agent whispering + + + Agent whispering with fingers in mouth + + + Agent winking + + + Agent winking + + + Agent worried + + + Agent nodding yes + + + Agent nodding yes with happy face + + + Agent floating with legs and arms crossed + + - Find inventory items by path + A dictionary containing all pre-defined animations - The folder to begin the search in - The object owners - A string path to search, folders/objects separated by a '/' - Results are sent to the event + A dictionary containing the pre-defined animations, + where the key is the animations ID, and the value is a string + containing a name to identify the purpose of the animation - + - Search inventory Store object for an item or folder + Represents an that represents an avatars body ie: Hair, Etc. - The folder to begin the search in - An array which creates a path to search - Number of levels below baseFolder to conduct searches - if True, will stop searching after first match is found - A list of inventory items found - + + Initializes a new instance of an AssetBodyPart object + + + Initializes a new instance of an AssetBodyPart object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Initializes a new instance of an AssetBodyPart object with parameters + A string representing the values of the Bodypart + + + Override the base classes AssetType + + - Move an inventory item or folder to a new location + Archives assets - The item or folder to move - The to move item or folder to - + - Move an inventory item or folder to a new location and change its name + Archive assets - The item or folder to move - The to move item or folder to - The name to change the item or folder to - + - Move and rename a folder + Archive the assets given to this archiver to the given archive. - The source folders - The destination folders - The name to change the folder to + - + - Update folder properties + Write an assets metadata file to the given archive - - of the folder to update - Sets folder's parent to - Folder name - Folder type + - + - Move a folder + Write asset data files to the given archive - The source folders - The destination folders + - + - Move multiple folders, the keys in the Dictionary parameter, - to a new parents, the value of that folder's key. + - A Dictionary containing the - of the source as the key, and the - of the destination as the value - + + OK + + + Transfer completed + + + + + + + + + Unknown error occurred + + + Equivalent to a 404 error + + + Client does not have permission for that resource + + + Unknown status + + - Move an inventory item to a new folder + - The of the source item to move - The of the destination folder - + + + + + Unknown + + + Virtually all asset transfers use this channel + + - Move and rename an inventory item + - The of the source item to move - The of the destination folder - The name to change the folder to - + + + + + Asset from the asset server + + + Inventory item + + + Estate asset, such as an estate covenant + + - Move multiple inventory items to new locations + - A Dictionary containing the - of the source item as the key, and the - of the destination folder as the value - + + + + + + + + + + - Remove descendants of a folder + - The of the folder - + + + + + + + - Remove a single item from inventory + Image file format - The of the inventory item to remove - + - Remove a folder from inventory + - The of the folder to remove - + + Number of milliseconds passed since the last transfer + packet was received + + - Remove multiple items or folders from inventory + - A List containing the s of items to remove - A List containing the s of the folders to remove - + - Empty the Lost and Found folder + - + - Empty the Trash folder + - + + - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - + + - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - - - + - Creates a new inventory folder + - ID of the folder to put this folder in - Name of the folder to create - The UUID of the newly created folder + + + + - + - Creates a new inventory folder + - ID of the folder to put this folder in - Name of the folder to create - Sets this folder as the default folder - for new assets of the specified type. Use AssetType.Unknown - to create a normal folder, otherwise it will likely create a - duplicate of an existing folder type - The UUID of the newly created folder - If you specify a preferred type of AsseType.Folder - it will create a new root folder which may likely cause all sorts - of strange problems - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Delegate that will receive feedback on success or failure + + Number of milliseconds to wait for a transfer header packet if out of order data was received - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Permission of the newly created item - (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) - Delegate that will receive feedback on success or failure + + The event subscribers. null if no subcribers - + + Raises the XferReceived event + A XferReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AssetUploaded event + A AssetUploadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the UploadProgress event + A UploadProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the InitiateDownload event + A InitiateDownloadEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ImageReceiveProgress event + A ImageReceiveProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Texture download cache + + - Creates inventory link to another inventory item or folder + Default constructor - Put newly created link in folder with this UUID - Inventory item or folder - Method to call upon creation of the link + A reference to the GridClient object - + - Creates inventory link to another inventory item + Request an asset download - Put newly created link in folder with this UUID - Original inventory item - Method to call upon creation of the link + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + The callback to fire when the simulator responds with the asset data - + - Creates inventory link to another inventory folder + Request an asset download - Put newly created link in folder with this UUID - Original inventory folder - Method to call upon creation of the link + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + The callback to fire when the simulator responds with the asset data - + - Creates inventory link to another inventory item or folder + Request an asset download - Put newly created link in folder with this UUID - Original item's UUID - Name - Description - Asset Type - Inventory Type - Transaction UUID - Method to call upon creation of the link + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data - + + Request an asset download through the almost deprecated Xfer system - - - - - - - - + Filename of the asset to request + Whether or not to delete the asset + off the server after it is retrieved + Use large transfer packets or not + UUID of the file to request, if filename is + left empty + Asset type of vFileID, or + AssetType.Unknown if filename is not empty + Sets the FilePath in the request to Cache + (4) if true, otherwise Unknown (0) is used + - + + - - - - - - - - - - + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + The item ID of this asset in the inventory + Use UUID.Zero if you are not requesting an + asset from an object inventory + The owner of this asset + Asset type + Whether to prioritize this asset download or not + - + + Used to force asset data into the PendingUpload property, ie: for raw terrain uploads - - - - - - - - - - + An AssetUpload object containing the data to upload to the simulator - + - Request a copy of an asset embedded within a notecard + Request an asset be uploaded to the simulator - Usually UUID.Zero for copying an asset from a notecard - UUID of the notecard to request an asset from - Target folder for asset to go to in your inventory - UUID of the embedded asset - callback to run when item is copied to inventory + The Object containing the asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired - + + Request an asset be uploaded to the simulator - - + The of the asset being uploaded + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired - + + Request an asset be uploaded to the simulator - - + + Asset type to upload this data as + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired - + + Initiate an asset upload - - - - + The ID this asset will have if the + upload succeeds + Asset type to upload this data as + Raw asset data to upload + Whether to store this asset on the local + simulator or the grid-wide asset server + The tranaction id for the upload + The transaction ID of this transfer - + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress + transfer. + A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority + indicating an off-by-one error. + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + Request an image and fire a callback when the request is complete + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + + Request an image and use an inline anonymous method to handle the downloaded texture data + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + ); + + Request a texture, decode the texture to a bitmap image and apply it to a imagebox + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + ManagedImage imgData; + Image bitmap; + + if (state == TextureRequestState.Finished) + { + OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); + picInsignia.Image = bitmap; + } + } + } + + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - - - - - - + The of the texture asset to download + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data - + - Save changes to notecard embedded in object contents + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - Encoded notecard asset data - Notecard UUID - Object's UUID - Called upon finish of the upload with status information + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data - + - Upload new gesture asset for an inventory gesture item + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator - Encoded gesture asset - Gesture inventory UUID - Callback whick will be called when upload is complete + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request - + - Update an existing script in an agents Inventory + Cancel a texture request - A byte[] array containing the encoded scripts contents - the itemID of the script - if true, sets the script content to run on the mono interpreter - - + The texture assets - + - Update an existing script in an task Inventory + Lets TexturePipeline class fire the progress event + + The texture ID currently being downloaded + the number of bytes transferred + the total number of bytes expected + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator responds sends + + + Raised during upload completes + + + Raised during upload with progres update + + + Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + + Fired when a texture is in the process of being downloaded by the TexturePipeline class + + + + Callback used for various asset download requests + + Transfer information + Downloaded asset, null on fail + + + + Callback used upon competition of baked texture upload + + Asset UUID of the newly uploaded baked texture + + + Xfer data + + + Upload data + + + Filename used on the simulator + + + Filename used by the client + + + UUID of the image that is in progress + + + Number of bytes received so far + + + Image size in bytes + + + + + + + + The event subscribers, null of no subscribers + + + Raises the AttachedSound Event + A AttachedSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AttachedSoundGainChange Event + A AttachedSoundGainChangeEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SoundTrigger Event + A SoundTriggerEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PreloadSound Event + A PreloadSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Construct a new instance of the SoundManager class, used for playing and receiving + sound assets + + A reference to the current GridClient instance + + + + Plays a sound in the current region at full volume from avatar position + + UUID of the sound to be played + + + + Plays a sound in the current region at full volume + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + + + + Plays a sound in the current region + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Plays a sound in the specified sim + + UUID of the sound to be played. + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Play a sound asset + + UUID of the sound to be played. + handle id for the sim to be played in. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + sound + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Provides data for the event + The event occurs when the simulator sends + the sound data which emits from an agents attachment + + The following code example shows the process to subscribe to the event + and a stub to handle the data passed from the simulator + + // Subscribe to the AttachedSound event + Client.Sound.AttachedSound += Sound_AttachedSound; + + // process the data raised in the event here + private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) + { + // ... Process AttachedSoundEventArgs here ... + } + + + + + + Construct a new instance of the SoundTriggerEventArgs class + + The sound asset id + The ID of the owner + The ID of the object + The volume level + The + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + Get the volume level + + + Get the + + + Provides data for the event + The event occurs when an attached sound + changes its volume level + + + + Construct a new instance of the AttachedSoundGainChangedEventArgs class + + The ID of the Object + The new volume level + + + Get the ID of the Object + + + Get the volume level + + + Provides data for the event + The event occurs when the simulator forwards + a request made by yourself or another agent to play either an asset sound or a built in sound + + Requests to play sounds where the is not one of the built-in + will require sending a request to download the sound asset before it can be played + + + The following code example uses the , + and + properties to display some information on a sound request on the window. + + // subscribe to the event + Client.Sound.SoundTrigger += Sound_SoundTrigger; + + // play the pre-defined BELL_TING sound + Client.Sound.SendSoundTrigger(Sounds.BELL_TING); + + // handle the response data + private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) + { + Console.WriteLine("{0} played the sound {1} at volume {2}", + e.OwnerID, e.SoundID, e.Gain); + } + + + + + + Construct a new instance of the SoundTriggerEventArgs class + + The sound asset id + The ID of the owner + The ID of the object + The ID of the objects parent + The volume level + The regionhandle + The source position + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + Get the ID of the objects parent + + + Get the volume level + + + Get the regionhandle + + + Get the source position + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + + Construct a new instance of the PreloadSoundEventArgs class + + The sound asset id + The ID of the owner + The ID of the object + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + + Class for controlling various system settings. - A byte[] array containing the encoded scripts contents - the itemID of the script - UUID of the prim containting the script - if true, sets the script content to run on the mono interpreter - if true, sets the script to running - - + Some values are readonly because they affect things that + happen when the GridClient object is initialized, so changing them at + runtime won't do any good. Non-readonly values may affect things that + happen at login or dynamically - + + Main grid login server + + + Beta grid login server + + - Rez an object from inventory + InventoryManager requests inventory information on login, + GridClient initializes an Inventory store for main inventory. - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - + - Rez an object from inventory + InventoryManager requests library information on login, + GridClient initializes an Inventory store for the library. - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - + + Number of milliseconds between sending pings to each sim + + + Number of milliseconds between sending camera updates + + + Number of milliseconds between updating the current + positions of moving, non-accelerating and non-colliding objects + + + Millisecond interval between ticks, where all ACKs are + sent out and the age of unACKed packets is checked + + + The initial size of the packet inbox, where packets are + stored before processing + + + Maximum size of packet that we want to send over the wire + + + The maximum value of a packet sequence number before it + rolls over back to one + + + The maximum size of the sequence number archive, used to + check for resent and/or duplicate packets + + + The relative directory where external resources are kept + + + Login server to connect to + + + IP Address the client will bind to + + + Use XML-RPC Login or LLSD Login, default is XML-RPC Login + + + Number of milliseconds before an asset transfer will time + out + + + Number of milliseconds before a teleport attempt will time + out + + + Number of milliseconds before NetworkManager.Logout() will + time out + + + Number of milliseconds before a CAPS call will time out + Setting this too low will cause web requests time out and + possibly retry repeatedly + + + Number of milliseconds for xml-rpc to timeout + + + Milliseconds before a packet is assumed lost and resent + + + Milliseconds without receiving a packet before the + connection to a simulator is assumed lost + + + Milliseconds to wait for a simulator info request through + the grid interface + + + Maximum number of queued ACKs to be sent before SendAcks() + is forced + + + Network stats queue length (seconds) + + + Enable to process packets synchronously, where all of the + callbacks for each packet must return before the next packet is + processed + This is an experimental feature and is not completely + reliable yet. Ideally it would reduce context switches and thread + overhead, but several calls currently block for a long time and + would need to be rewritten as asynchronous code before this is + feasible + + + Enable/disable storing terrain heightmaps in the + TerrainManager + + + Enable/disable sending periodic camera updates + + + Enable/disable automatically setting agent appearance at + login and after sim crossing + + + Enable/disable automatically setting the bandwidth throttle + after connecting to each simulator + The default throttle uses the equivalent of the maximum + bandwidth setting in the official client. If you do not set a + throttle your connection will by default be throttled well below + the minimum values and you may experience connection problems + + + Enable/disable the sending of pings to monitor lag and + packet loss + + + Should we connect to multiple sims? This will allow + viewing in to neighboring simulators and sim crossings + (Experimental) + + + If true, all object update packets will be decoded in to + native objects. If false, only updates for our own agent will be + decoded. Registering an event handler will force objects for that + type to always be decoded. If this is disabled the object tracking + will have missing or partial prim and avatar information + + + If true, when a cached object check is received from the + server the full object info will automatically be requested + + + Whether to establish connections to HTTP capabilities + servers for simulators + + + Whether to decode sim stats + + + The capabilities servers are currently designed to + periodically return a 502 error which signals for the client to + re-establish a connection. Set this to true to log those 502 errors + + + If true, any reference received for a folder or item + the library is not aware of will automatically be fetched + + + If true, and SEND_AGENT_UPDATES is true, + AgentUpdate packets will continuously be sent out to give the bot + smoother movement and autopiloting + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectAvatars. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectPrimitives. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, position and velocity will periodically be + interpolated (extrapolated, technically) for objects and + avatars that are being tracked by the library. This is + necessary to increase the accuracy of speed and position + estimates for simulated objects + + - Rez an object from inventory + If true, utilization statistics will be tracked. There is a minor penalty + in CPU time for enabling this option. - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - User defined queryID to correlate replies - If set to true, the CreateSelected flag - will be set on the rezzed object - + + If true, parcel details will be stored in the + Simulator.Parcels dictionary as they are received + + - DeRez an object from the simulator to the agents Objects folder in the agents Inventory + If true, an incoming parcel properties reply will automatically send + a request for the parcel access list - The simulator Local ID of the object - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - + - DeRez an object from the simulator and return to inventory + if true, an incoming parcel properties reply will automatically send + a request for the traffic count. - The simulator Local ID of the object - The type of destination from the enum - The destination inventory folders -or- - if DeRezzing object to a tasks Inventory, the Tasks - The transaction ID for this request which - can be used to correlate this request with other packets - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - + + + If true, images, and other assets downloaded from the server + will be cached in a local directory + + + + Path to store cached texture data + + + Maximum size cached files are allowed to take on disk (bytes) + + + Default color used for viewer particle effects + + + Maximum number of times to resend a failed packet + + + Throttle outgoing packet rate + + + UUID of a texture used by some viewers to indentify type of client used + + + The maximum number of concurrent texture downloads allowed + Increasing this number will not necessarily increase texture retrieval times due to + simulator throttles + + - Rez an item from inventory to its previous simulator location + The Refresh timer inteval is used to set the delay between checks for stalled texture downloads - - - - - - - - + This is a static variable which applies to all instances - + - Give an inventory item to another avatar + Textures taking longer than this value will be flagged as timed out and removed from the pipeline - The of the item to give - The name of the item - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - + - Give an inventory Folder with contents to another avatar + Get or set the minimum log level to output to the console by default + + If the library is not compiled with DEBUG defined and this level is set to DEBUG + You will get no output on the console. This behavior can be overriden by creating + a logger configuration file for log4net - The of the Folder to give - The name of the folder - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - - - Copy or move an from agent inventory to a task (primitive) inventory - - The target object - The item to copy or move from inventory - - - For items with copy permissions a copy of the item is placed in the tasks inventory, - for no-copy items the object is moved to the tasks inventory + + Attach avatar names to log messages - + + Log packet retransmission info + + + Constructor + Reference to a GridClient object + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Cost of uploading an asset + Read-only since this value is dynamically fetched at login + + - Retrieve a listing of the items contained in a task (Primitive) + Represents a string of characters encoded with specific formatting properties - The tasks - The tasks simulator local ID - milliseconds to wait for reply from simulator - A list containing the inventory items inside the task or null - if a timeout occurs - This request blocks until the response from the simulator arrives - or timeoutMS is exceeded - + + A text string containing main text of the notecard + + + List of s embedded on the notecard + + + Construct an Asset of type Notecard + + - Request the contents of a tasks (primitives) inventory from the - current simulator + Construct an Asset object of type Notecard - The LocalID of the object - + A unique specific to this asset + A byte array containing the raw asset data - + - Request the contents of a tasks (primitives) inventory + Construct an Asset object of type Notecard - The simulator Local ID of the object - A reference to the simulator object that contains the object - + A text string containing the main body text of the notecard - + - Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory + Encode the raw contents of a string with the specific Linden Text properties - LocalID of the object in the simulator - UUID of the task item to move - The ID of the destination folder in this agents inventory - Simulator Object - Raises the event - + - Remove an item from an objects (Prim) Inventory + Decode the raw asset data including the Linden Text properties - LocalID of the object in the simulator - UUID of the task item to remove - Simulator Object - You can confirm the removal by comparing the tasks inventory serial before and after the - request with the request combined with - the event + true if the AssetData was successfully decoded - + + Override the base classes AssetType + + - Copy an InventoryScript item from the Agents Inventory into a primitives task inventory + Capabilities is the name of the bi-directional HTTP REST protocol + used to communicate non real-time transactions such as teleporting or + group messaging - An unsigned integer representing a primitive being simulated - An which represents a script object from the agents inventory - true to set the scripts running state to enabled - A Unique Transaction ID - - The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory - and assumes the script exists in the agents inventory. - - uint primID = 95899503; // Fake prim ID - UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory - Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, - false, true, InventorySortOrder.ByName, 10000); - Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); - - + + Reference to the simulator this system is connected to + + - Request the running status of a script contained in a task (primitive) inventory + Default constructor - The ID of the primitive containing the script - The ID of the script - The event can be used to obtain the results of the - request - + + - + - Send a request to set the running state of a script contained in a task (primitive) inventory + Request the URI of a named capability - The ID of the primitive containing the script - The ID of the script - true to set the script running, false to stop a running script - To verify the change you can use the method combined - with the event + Name of the capability to request + The URI of the requested capability, or String.Empty if + the capability does not exist - + - Create a CRC from an InventoryItem + Process any incoming events, check to see if we have a message created for the event, - The source InventoryItem - A uint representing the source InventoryItem as a CRC + + - + + Capabilities URI this system was initialized with + + + Whether the capabilities event queue is connected and + listening for incoming events + + - Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id + Triggered when an event is received via the EventQueueGet + capability - Obfuscated shadow_id value - Deobfuscated asset_id value + Event name + Decoded event data + The simulator that generated the event - + - Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id + Level of Detail mesh - asset_id value to obfuscate - Obfuscated shadow_id value - + - Wrapper for creating a new object + Return a decoded capabilities message as a strongly typed object - The type of item from the enum - The of the newly created object - An object with the type and id passed + A string containing the name of the capabilities message key + An to decode + A strongly typed object containing the decoded information from the capabilities message, or null + if no existing Message object exists for the specified event - + - Parse the results of a RequestTaskInventory() response + - A string which contains the data from the task reply - A List containing the items contained within the tasks inventory - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - - UpdateCreateInventoryItem packets are received when a new inventory item - is created. This may occur when an object that's rezzed in world is - taken into inventory, when an item is created using the CreateInventoryItem - packet, or when an object is purchased - - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Set to true to accept offer, false to decline it + + - - The folder to accept the inventory into, if null default folder for will be used + + - - - Callback when an inventory object is accepted and received from a - task inventory. This is the callback in which you actually get - the ItemID, as in ObjectOfferedCallback it is null when received - from a task. - + + - - - + + - - - - - + + - - - De-serialization constructor for the InventoryNode Class - + + - - - De-serialization handler for the InventoryNode Class - + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + - + + - - - + + - - - For inventory folder nodes specifies weather the folder needs to be - refreshed from the server - + + - + + + + + + + - Serialization handler for the InventoryNode Class + + + - + + - - - + + + + + + + + + + + + + + + + + + + - Singleton logging class for the entire library + - + + + + + + + + + + + + + + + + - Default constructor + + + - + - Callback used for client apps to receive log messages from - the library + - Data being logged - The severity of the log entry from - - - log4net logging engine - - - Triggered whenever a message is logged. If this is left - null, log messages will go to the console + + - + - Send a log message to the logging engine + - The log message - The severity of the log entry + + - + - Send a log message to the logging engine + - The log message - The severity of the log entry - Instance of the client + + + - + - Send a log message to the logging engine + - The log message - The severity of the log entry - Exception that was raised - + - Send a log message to the logging engine + - The log message - The severity of the log entry - Instance of the client - Exception that was raised + + - + - If the library is compiled with DEBUG defined, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine + - The message to log at the DEBUG level to the - current logging engine + + - + - If the library is compiled with DEBUG defined and - GridClient.Settings.DEBUG is true, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine + - The message to log at the DEBUG level to the - current logging engine - Instance of the client + + - - + - - + - - + - - + - - + - - + - - + Login Request Parameters - - - Default constuctor, initializes sane default values - - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - URI of the login server - The URL of the Login Server @@ -11825,7 +11932,7 @@ The agents starting location once logged in - Either "last", "home", or a string encoded URI + Either "last", "home", or a string encoded URI containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 @@ -11834,7 +11941,7 @@ The client software version information - The official viewer uses: Second Life Release n.n.n.n + The official viewer uses: Second Life Release n.n.n.n where n is replaced with the current version of the viewer @@ -11850,7 +11957,7 @@ A string hash of the first disk drives ID used to identify this clients uniqueness - A string containing the viewers Software, this is not directly sent to the login server but + A string containing the viewers Software, this is not directly sent to the login server but instead is used to generate the Version string @@ -11888,13907 +11995,13256 @@ Parse LLSD Login Reply Data - An + An contaning the login response data - XML-RPC logins do not require this as XML-RPC.NET + XML-RPC logins do not require this as XML-RPC.NET automatically populates the struct properly using attributes - - - Login Routines - - - NetworkManager is responsible for managing the network layer of - OpenMetaverse. It tracks all the server connections, serializes - outgoing traffic and deserializes incoming traffic, and provides - instances of delegates for network-related events. - - - - - Default constructor - - Reference to the GridClient object - - - - Explains why a simulator or the grid disconnected from us - - - - The client requested the logout or simulator disconnect - - - The server notified us that it is disconnecting - - - Either a socket was closed or network traffic timed out - - - The last active simulator shut down - - - - Holds a simulator reference and a decoded packet, these structs are put in - the packet inbox for event handling - - - - Reference to the simulator that this packet came from - - - Packet that needs to be processed - - - - Holds a simulator reference and a serialized packet, these structs are put in - the packet outbox for sending - - - - Reference to the simulator this packet is destined for - - - Packet that needs to be sent - - - Sequence number of the wrapped packet - - - Number of times this packet has been resent - - - Environment.TickCount when this packet was last sent over the wire - - - - - - - - - - - - - - - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - Seed CAPS URL returned from the login server - - - A list of packets obtained during the login process which - networkmanager will log but not process - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object + + Sort by name - - All of the simulators we are currently connected to + + Sort by date - - Handlers for incoming capability events + + Sort folders by name, regardless of whether items are + sorted by name or date - - Handlers for incoming packets + + Place system folders at the top - - Incoming packets that are awaiting handling + + + Possible destinations for DeRezObject request + - - Outgoing packets that are awaiting handling + + - - Raised when the simulator sends us data containing - ... + + Copy from in-world to agent inventory - - Called when a reply is received from the login server, the - login sequence will block until this event returns + + Derez to TaskInventory - - Raised when the simulator sends us data containing - ... + + - - Raised when the simulator sends us data containing - ... + + Take Object - - Raised when the simulator sends us data containing - ... + + - - Raised when the simulator sends us data containing - ... + + Delete Object - - Raised when the simulator sends us data containing - ... + + Put an avatar attachment into agent inventory - - Raised when the simulator sends us data containing - ... + + - - Raised when the simulator sends us data containing - ... + + Return an object back to the owner's inventory - - Raised when the simulator sends us data containing - ... + + Return a deeded object back to the last owner's inventory - - Current state of logging in + + + Upper half of the Flags field for inventory items + - - Upon login failure, contains a short string key for the - type of login error that occurred + + Indicates that the NextOwner permission will be set to the + most restrictive set of permissions found in the object set + (including linkset items and object inventory items) on next rez - - The raw XML-RPC reply from the login server, exactly as it - was received (minus the HTTP header) + + Indicates that the object sale information has been + changed - - During login this contains a descriptive version of - LoginStatusCode. After a successful login this will contain the - message of the day, and after a failed login a descriptive error - message will be returned + + If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez - - Unique identifier associated with our connections to - simulators + + If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez - - The simulator that the logged in avatar is currently - occupying + + If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez - - Shows whether the network layer is logged in to the - grid or not + + If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez - - Number of packets in the incoming queue + + If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez - - Number of packets in the outgoing queue + + Indicates whether this object is composed of multiple + items or not - - Raises the LoginProgress Event - A LoginProgressEventArgs object containing - the data sent from the simulator + + Indicates that the asset is only referenced by this + inventory item. If this item is deleted or updated to reference a + new assetID, the asset can be deleted - + - Generate sane default values for a login request + Base Class for Inventory Items - Account first name - Account last name - Account password - Client application name - Client application version - A populated struct containing - sane defaults - - - Simplified login that takes the most common and required fields - - Account first name - Account last name - Account password - Client application name - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error + + of item/folder - + + of parent folder + + + Name of item/folder + + + Item/Folder Owners + + - Simplified login that takes the most common fields along with a - starting location URI, and can accept an MD5 string instead of a - plaintext password + Constructor, takes an itemID as a parameter - Account first name - Account last name - Account password or MD5 hash of the password - such as $1$1682a1e45e9f957dcdf0bb56eb43319c - Client application name - Starting location URI that can be built with - StartLocation() - Client application version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error + The of the item - + - Login that takes a struct of all the values that will be passed to - the login server + - The values that will be passed to the login - server, all fields must be set even if they are String.Empty - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error + - + - Build a start location URI for passing to the Login function + - Name of the simulator to start in - X coordinate to start at - Y coordinate to start at - Z coordinate to start at - String with a URI that can be used to login to a specified - location + - + - Handles response from XML-RPC login replies + Generates a number corresponding to the value of the object to support the use of a hash table, + suitable for use in hashing algorithms and data structures such as a hash table + A Hashcode of all the combined InventoryBase fields - + - Handle response from LLSD login replies + Determine whether the specified object is equal to the current object - - - - - - + InventoryBase object to compare against + true if objects are the same - + - Get current OS + Determine whether the specified object is equal to the current object - Either "Win" or "Linux" + InventoryBase object to compare against + true if objects are the same - + - Get clients default Mac Address + An Item in Inventory - A string containing the first found Mac Address - - Raises the PacketSent Event - A PacketSentEventArgs object containing - the data sent from the simulator + + The of this item - - Raises the LoggedOut Event - A LoggedOutEventArgs object containing - the data sent from the simulator + + The combined of this item - - Raises the SimConnecting Event - A SimConnectingEventArgs object containing - the data sent from the simulator + + The type of item from - - Raises the SimConnected Event - A SimConnectedEventArgs object containing - the data sent from the simulator + + The type of item from the enum - - Raises the SimDisconnected Event - A SimDisconnectedEventArgs object containing - the data sent from the simulator + + The of the creator of this item - - Raises the Disconnected Event - A DisconnectedEventArgs object containing - the data sent from the simulator + + A Description of this item - - Raises the SimChanged Event - A SimChangedEventArgs object containing - the data sent from the simulator + + The s this item is set to or owned by - - Raises the EventQueueRunning Event - A EventQueueRunningEventArgs object containing - the data sent from the simulator + + If true, item is owned by a group + + + The price this item can be purchased for + + + The type of sale from the enum + + + Combined flags from + + + Time and date this inventory item was created, stored as + UTC (Coordinated Universal Time) + + + Used to update the AssetID in requests sent to the server + + + The of the previous owner of the item - + - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library + Construct a new InventoryItem object - Packet type to trigger events for - Callback to fire when a packet of this type - is received + The of the item - + - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library + Construct a new InventoryItem object of a specific Type - Packet type to trigger events for - Callback to fire when a packet of this type - is received - True if the callback should be ran - asynchronously. Only set this to false (synchronous for callbacks - that will always complete quickly) - If any callback for a packet type is marked as - asynchronous, all callbacks for that packet type will be fired - asynchronously + The type of item from + of the item - + - Unregister an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library + Indicates inventory item is a link - Packet type this callback is registered with - Callback to stop firing events for + True if inventory item is a link to another inventory item - + - Register a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library + - Name of the CAPS event to register a handler for - Callback to fire when a CAPS event is received + - + - Unregister a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library + - Name of the CAPS event this callback is - registered with - Callback to stop firing events for + - + - Send a packet to the simulator the avatar is currently occupying + Generates a number corresponding to the value of the object to support the use of a hash table. + Suitable for use in hashing algorithms and data structures such as a hash table - Packet to send + A Hashcode of all the combined InventoryItem fields - + - Send a packet to a specified simulator + Compares an object - Packet to send - Simulator to send the packet to + The object to compare + true if comparison object matches - + - Connect to a simulator + Determine whether the specified object is equal to the current object - IP address to connect to - Port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null + The object to compare against + true if objects are the same - + - Connect to a simulator + Determine whether the specified object is equal to the current object - IP address and port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null + The object to compare against + true if objects are the same - + - Initiate a blocking logout request. This will return when the logout - handshake has completed or when Settings.LOGOUT_TIMEOUT - has expired and the network layer is manually shut down + InventoryTexture Class representing a graphical image + - + - Initiate the logout process. Check if logout succeeded with the - OnLogoutReply event, and if this does not fire the - Shutdown() function needs to be manually called + Construct an InventoryTexture object + A which becomes the + objects AssetUUID - + - Close a connection to the given simulator + Construct an InventoryTexture object from a serialization stream - - - - - + - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - Type of shutdown + InventorySound Class representing a playable sound + - + - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - Type of shutdown - Shutdown message + Construct an InventorySound object + + A which becomes the + objects AssetUUID - + - Searches through the list of currently connected simulators to find - one attached to the given IPEndPoint + Construct an InventorySound object from a serialization stream - IPEndPoint of the Simulator to search for - A Simulator reference on success, otherwise null - + - Fire an event when an event queue connects for capabilities + InventoryCallingCard Class, contains information on another avatar - Simulator the event queue is attached to - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - + - A Name Value pair with additional settings, used in the protocol - primarily to transmit avatar names and active group in object packets + Construct an InventoryCallingCard object + A which becomes the + objects AssetUUID - + - Constructor that takes all the fields as parameters + Construct an InventoryCallingCard object from a serialization stream - - - - - - - - - - - + - Constructor that takes a single line from a NameValue field + InventoryLandmark Class, contains details on a specific location - - - - - Type of the value - - - Unknown - - String value + + + Construct an InventoryLandmark object + + A which becomes the + objects AssetUUID - + + Construct an InventoryLandmark object from a serialization stream - + + Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited - + + InventoryObject Class contains details on a primitive or coalesced set of primitives - + + Construct an InventoryObject object + A which becomes the + objects AssetUUID - - Deprecated + + + Construct an InventoryObject object from a serialization stream + - - String value, but designated as an asset + + + Gets or sets the upper byte of the Flags value + - + + Gets or sets the object attachment point, the lower byte of the Flags value - + + InventoryNotecard Class, contains details on an encoded text document - + + Construct an InventoryNotecard object + A which becomes the + objects AssetUUID - + + Construct an InventoryNotecard object from a serialization stream - + + InventoryCategory Class + TODO: Is this even used for anything? - + + Construct an InventoryCategory object + A which becomes the + objects AssetUUID - + + Construct an InventoryCategory object from a serialization stream - + + InventoryLSL Class, represents a Linden Scripting Language object - + + Construct an InventoryLSL object + A which becomes the + objects AssetUUID - + + Construct an InventoryLSL object from a serialization stream - + + InventorySnapshot Class, an image taken with the viewer - + + Construct an InventorySnapshot object + A which becomes the + objects AssetUUID - + + Construct an InventorySnapshot object from a serialization stream - + + InventoryAttachment Class, contains details on an attachable object - + + Construct an InventoryAttachment object + A which becomes the + objects AssetUUID - + + Construct an InventoryAttachment object from a serialization stream - + + Get the last AttachmentPoint this object was attached to - + + InventoryWearable Class, details on a clothing item or body part - - No report - - - Unknown report type - - - Bug report - - - Complaint report - - - Customer service report - - + - Bitflag field for ObjectUpdateCompressed data blocks, describing - which options are present for each object + Construct an InventoryWearable object + A which becomes the + objects AssetUUID - - Unknown - - - Whether the object has a TreeSpecies - - - Whether the object has floating text ala llSetText - - - Whether the object has an active particle system - - - Whether the object has sound attached to it - - - Whether the object is attached to a root object or not - - - Whether the object has texture animation settings - - - Whether the object has an angular velocity - - - Whether the object has a name value pairs string - - - Whether the object has a Media URL set - - + - Specific Flags for MultipleObjectUpdate requests + Construct an InventoryWearable object from a serialization stream - - None - - - Change position of prims - - - Change rotation of prims - - - Change size of prims - - - Perform operation on link set - - - Scale prims uniformly, same as selecing ctrl+shift in the - viewer. Used in conjunction with Scale - - + - Special values in PayPriceReply. If the price is not one of these - literal value of the price should be use + The , Skin, Shape, Skirt, Etc - + - Indicates that this pay option should be hidden + InventoryAnimation Class, A bvh encoded object which animates an avatar - + - Indicates that this pay option should have the default value + Construct an InventoryAnimation object + A which becomes the + objects AssetUUID - + - Contains the variables sent in an object update packet for objects. - Used to track position and movement of prims and avatars + Construct an InventoryAnimation object from a serialization stream - + + InventoryGesture Class, details on a series of animations, sounds, and actions - + + Construct an InventoryGesture object + A which becomes the + objects AssetUUID - + + Construct an InventoryGesture object from a serialization stream - + + A folder contains s and has certain attributes specific + to itself - + + The Preferred for a folder. + + + The Version of this folder + + + Number of child items this folder contains. + + + Constructor + UUID of the folder - + + + - + + Get Serilization data for this InventoryFolder object - + + Construct an InventoryFolder object from a serialization stream - + + + - + + + + - + - Handles all network traffic related to prims and avatar positions and - movement. + + + - + - Construct a new instance of the ObjectManager class + - A reference to the instance + + - + - Callback for getting object media data via CAP + Tools for dealing with agents inventory - Indicates if the operation was succesfull - Object media version string - Array indexed on prim face of media entry data - - The event subscribers, null of no subscribers - - - Thread sync lock object + + Used for converting shadow_id to asset_id - + The event subscribers, null of no subscribers - - Thread sync lock object - - - The event subscribers, null of no subscribers + + Raises the ItemReceived Event + A ItemReceivedEventArgs object containing + the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - + + Raises the FolderUpdated Event + A FolderUpdatedEventArgs object containing + the data sent from the simulator + + Thread sync lock object - + The event subscribers, null of no subscribers - + + Raises the InventoryObjectOffered Event + A InventoryObjectOfferedEventArgs object containing + the data sent from the simulator + + Thread sync lock object - + The event subscribers, null of no subscribers - + + Raises the TaskItemReceived Event + A TaskItemReceivedEventArgs object containing + the data sent from the simulator + + Thread sync lock object - + The event subscribers, null of no subscribers - + + Raises the FindObjectByPath Event + A FindObjectByPathEventArgs object containing + the data sent from the simulator + + Thread sync lock object - + The event subscribers, null of no subscribers - + + Raises the TaskInventoryReply Event + A TaskInventoryReplyEventArgs object containing + the data sent from the simulator + + Thread sync lock object - + The event subscribers, null of no subscribers - + + Raises the SaveAssetToInventory Event + A SaveAssetToInventoryEventArgs object containing + the data sent from the simulator + + Thread sync lock object - + The event subscribers, null of no subscribers - + + Raises the ScriptRunningReply Event + A ScriptRunningReplyEventArgs object containing + the data sent from the simulator + + Thread sync lock object - - Reference to the GridClient object + + Partial mapping of AssetTypes to folder names - - Does periodic dead reckoning calculation to convert - velocity and acceleration to new positions for objects + + + Default constructor + + Reference to the GridClient object - - Raised when the simulator sends us data containing - A , Foliage or Attachment - - + + + Fetch an inventory item from the dataserver + + The items + The item Owners + a integer representing the number of milliseconds to wait for results + An object on success, or null if no item was found + Items will also be sent to the event - - Raised when the simulator sends us data containing - additional information - - + + + Request A single inventory item + + The items + The item Owners + - - Raised when the simulator sends us data containing - Primitive.ObjectProperties for an object we are currently tracking + + + Request inventory items + + Inventory items to request + Owners of the inventory items + + + + + Get contents of a folder + + The of the folder to search + The of the folders owner + true to retrieve folders + true to retrieve items + sort order to return results in + a integer representing the number of milliseconds to wait for results + A list of inventory items matching search criteria within folder + + InventoryFolder.DescendentCount will only be accurate if both folders and items are + requested - - Raised when the simulator sends us data containing - additional and details - + + + Request the contents of an inventory folder + + The folder to search + The folder owners + true to return s contained in folder + true to return s containd in folder + the sort order to return items in + - - Raised when the simulator sends us data containing - updated information for an + + + Returns the UUID of the folder (category) that defaults to + containing 'type'. The folder is not necessarily only for that + type + + This will return the root folder if one does not exist + + The UUID of the desired folder if found, the UUID of the RootFolder + if not found, or UUID.Zero on failure - - Raised when the simulator sends us data containing - and movement changes + + + Find an object in inventory using a specific path to search + + The folder to begin the search in + The object owners + A string path to search + milliseconds to wait for a reply + Found items or if + timeout occurs or item is not found - - Raised when the simulator sends us data containing - updates to an Objects DataBlock + + + Find inventory items by path + + The folder to begin the search in + The object owners + A string path to search, folders/objects separated by a '/' + Results are sent to the event - - Raised when the simulator informs us an - or is no longer within view + + + Search inventory Store object for an item or folder + + The folder to begin the search in + An array which creates a path to search + Number of levels below baseFolder to conduct searches + if True, will stop searching after first match is found + A list of inventory items found - - Raised when the simulator sends us data containing - updated sit information for our + + + Move an inventory item or folder to a new location + + The item or folder to move + The to move item or folder to - - Raised when the simulator sends us data containing - purchase price information for a + + + Move an inventory item or folder to a new location and change its name + + The item or folder to move + The to move item or folder to + The name to change the item or folder to - - Raises the ObjectProperties Event - A ObjectPropertiesEventArgs object containing - the data sent from the simulator + + + Move and rename a folder + + The source folders + The destination folders + The name to change the folder to - - Raises the ObjectPropertiesUpdated Event - A ObjectPropertiesUpdatedEventArgs object containing - the data sent from the simulator + + + Update folder properties + + of the folder to update + Sets folder's parent to + Folder name + Folder type - - Raises the ObjectPropertiesFamily Event - A ObjectPropertiesFamilyEventArgs object containing - the data sent from the simulator + + + Move a folder + + The source folders + The destination folders - - Raises the AvatarUpdate Event - A AvatarUpdateEventArgs object containing - the data sent from the simulator + + + Move multiple folders, the keys in the Dictionary parameter, + to a new parents, the value of that folder's key. + + A Dictionary containing the + of the source as the key, and the + of the destination as the value - - Raises the ObjectDataBlockUpdate Event - A ObjectDataBlockUpdateEventArgs object containing - the data sent from the simulator + + + Move an inventory item to a new folder + + The of the source item to move + The of the destination folder - - Raises the KillObject Event - A KillObjectEventArgs object containing - the data sent from the simulator + + + Move and rename an inventory item + + The of the source item to move + The of the destination folder + The name to change the folder to - - Raises the AvatarSitChanged Event - A AvatarSitChangedEventArgs object containing - the data sent from the simulator + + + Move multiple inventory items to new locations + + A Dictionary containing the + of the source item as the key, and the + of the destination folder as the value - - Raises the PayPriceReply Event - A PayPriceReplyEventArgs object containing - the data sent from the simulator + + + Remove descendants of a folder + + The of the folder - + - Request information for a single object from a - you are currently connected to + Remove a single item from inventory - The the object is located - The Local ID of the object + The of the inventory item to remove - + - Request information for multiple objects contained in - the same simulator + Remove a folder from inventory - The the objects are located - An array containing the Local IDs of the objects + The of the folder to remove - + - Attempt to purchase an original object, a copy, or the contents of - an object + Remove multiple items or folders from inventory - The the object is located - The Local ID of the object - Whether the original, a copy, or the object - contents are on sale. This is used for verification, if the this - sale type is not valid for the object the purchase will fail - Price of the object. This is used for - verification, if it does not match the actual price the purchase - will fail - Group ID that will be associated with the new - purchase - Inventory folder UUID where the object or objects - purchased should be placed - - - BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, - 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); - - + A List containing the s of items to remove + A List containing the s of the folders to remove - + - Request prices that should be displayed in pay dialog. This will triggger the simulator - to send us back a PayPriceReply which can be handled by OnPayPriceReply event + Empty the Lost and Found folder - The the object is located - The ID of the object - The result is raised in the event - + - Select a single object. This will cause the to send us - an which will raise the event + Empty the Trash folder - The the object is located - The Local ID of the object - - + - Select a single object. This will cause the to send us - an which will raise the event + - The the object is located - The Local ID of the object - if true, a call to is - made immediately following the request - + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + - + - Select multiple objects. This will cause the to send us - an which will raise the event + - The the objects are located - An array containing the Local IDs of the objects - Should objects be deselected immediately after selection - + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + - + - Select multiple objects. This will cause the to send us - an which will raise the event + Creates a new inventory folder - The the objects are located - An array containing the Local IDs of the objects - + ID of the folder to put this folder in + Name of the folder to create + The UUID of the newly created folder - + - Update the properties of an object + Creates a new inventory folder - The the object is located - The Local ID of the object - true to turn the objects physical property on - true to turn the objects temporary property on - true to turn the objects phantom property on - true to turn the objects cast shadows property on + ID of the folder to put this folder in + Name of the folder to create + Sets this folder as the default folder + for new assets of the specified type. Use AssetType.Unknown + to create a normal folder, otherwise it will likely create a + duplicate of an existing folder type + The UUID of the newly created folder + If you specify a preferred type of AsseType.Folder + it will create a new root folder which may likely cause all sorts + of strange problems - + - Sets the sale properties of a single object + Create an inventory item and upload asset data - The the object is located - The Local ID of the object - One of the options from the enum - The price of the object + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Delegate that will receive feedback on success or failure - + - Sets the sale properties of multiple objects + Create an inventory item and upload asset data - The the objects are located - An array containing the Local IDs of the objects - One of the options from the enum - The price of the object + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Permission of the newly created item + (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) + Delegate that will receive feedback on success or failure - + - Deselect a single object + Creates inventory link to another inventory item or folder - The the object is located - The Local ID of the object + Put newly created link in folder with this UUID + Inventory item or folder + Method to call upon creation of the link - + - Deselect multiple objects. + Creates inventory link to another inventory item - The the objects are located - An array containing the Local IDs of the objects + Put newly created link in folder with this UUID + Original inventory item + Method to call upon creation of the link - + - Perform a click action on an object + Creates inventory link to another inventory folder - The the object is located - The Local ID of the object + Put newly created link in folder with this UUID + Original inventory folder + Method to call upon creation of the link - + - Perform a click action (Grab) on a single object + Creates inventory link to another inventory item or folder - The the object is located - The Local ID of the object - The texture coordinates to touch - The surface coordinates to touch - The face of the position to touch - The region coordinates of the position to touch - The surface normal of the position to touch (A normal is a vector perpindicular to the surface) - The surface binormal of the position to touch (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space + Put newly created link in folder with this UUID + Original item's UUID + Name + Description + Asset Type + Inventory Type + Transaction UUID + Method to call upon creation of the link - + - Create (rez) a new prim object in a simulator + - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties + + + + - + - Create (rez) a new prim object in a simulator + - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Specify the - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties + + + + + - + - Rez a Linden tree + - A reference to the object where the object resides - The size of the tree - The rotation of the tree - The position of the tree - The Type of tree - The of the group to set the tree to, - or UUID.Zero if no group is to be set - true to use the "new" Linden trees, false to use the old + + + + + - + - Rez grass and ground cover + Request a copy of an asset embedded within a notecard - A reference to the object where the object resides - The size of the grass - The rotation of the grass - The position of the grass - The type of grass from the enum - The of the group to set the tree to, - or UUID.Zero if no group is to be set + Usually UUID.Zero for copying an asset from a notecard + UUID of the notecard to request an asset from + Target folder for asset to go to in your inventory + UUID of the embedded asset + callback to run when item is copied to inventory - + - Set the textures to apply to the faces of an object + - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply + - + - Set the textures to apply to the faces of an object + - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - A media URL (not used) + - + - Set the Light data on an object + - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set + + - + - Set the flexible data on an object + - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set + + + - + - Set the sculptie texture and data on an object + Save changes to notecard embedded in object contents - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set + Encoded notecard asset data + Notecard UUID + Object's UUID + Called upon finish of the upload with status information - + - Unset additional primitive parameters on an object + Upload new gesture asset for an inventory gesture item - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The extra parameters to set + Encoded gesture asset + Gesture inventory UUID + Callback whick will be called when upload is complete - + - Link multiple prims into a linkset + Update an existing script in an agents Inventory - A reference to the object where the objects reside - An array which contains the IDs of the objects to link - The last object in the array will be the root object of the linkset TODO: Is this true? + A byte[] array containing the encoded scripts contents + the itemID of the script + if true, sets the script content to run on the mono interpreter + - + - Delink/Unlink multiple prims from a linkset + Update an existing script in an task Inventory - A reference to the object where the objects reside - An array which contains the IDs of the objects to delink + A byte[] array containing the encoded scripts contents + the itemID of the script + UUID of the prim containting the script + if true, sets the script content to run on the mono interpreter + if true, sets the script to running + - + - Change the rotation of an object + Rez an object from inventory - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation of the object + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details - + - Set the name of an object + Rez an object from inventory - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new name of the object + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object - + - Set the name of multiple objects + Rez an object from inventory - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the name of - An array which contains the new names of the objects + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object - + - Set the description of an object + DeRez an object from the simulator to the agents Objects folder in the agents Inventory - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new description of the object + The simulator Local ID of the object + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - + - Set the descriptions of multiple objects + DeRez an object from the simulator and return to inventory - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the description of - An array which contains the new descriptions of the objects + The simulator Local ID of the object + The type of destination from the enum + The destination inventory folders -or- + if DeRezzing object to a tasks Inventory, the Tasks + The transaction ID for this request which + can be used to correlate this request with other packets + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - + - Attach an object to this avatar + Rez an item from inventory to its previous simulator location - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The point on the avatar the object will be attached - The rotation of the attached object + + + + - + - Drop an attached object from this avatar + Give an inventory item to another avatar - A reference to the - object where the objects reside. This will always be the simulator the avatar is currently in - - The object's ID which is local to the simulator the object is in + The of the item to give + The name of the item + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer - + - Detach an object from yourself + Give an inventory Folder with contents to another avatar - A reference to the - object where the objects reside - This will always be the simulator the avatar is currently in - - An array which contains the IDs of the objects to detach + The of the Folder to give + The name of the folder + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer - + - Change the position of an object, Will change position of entire linkset + Copy or move an from agent inventory to a task (primitive) inventory - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object + The target object + The item to copy or move from inventory + + For items with copy permissions a copy of the item is placed in the tasks inventory, + for no-copy items the object is moved to the tasks inventory - + - Change the position of an object + Retrieve a listing of the items contained in a task (Primitive) - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - if true, will change position of (this) child prim only, not entire linkset + The tasks + The tasks simulator local ID + milliseconds to wait for reply from simulator + A list containing the inventory items inside the task or null + if a timeout occurs + This request blocks until the response from the simulator arrives + or timeoutMS is exceeded - + - Change the Scale (size) of an object + Request the contents of a tasks (primitives) inventory from the + current simulator - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change scale of this prim only, not entire linkset - True to resize prims uniformly + The LocalID of the object + - + - Change the Rotation of an object that is either a child or a whole linkset + Request the contents of a tasks (primitives) inventory - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change rotation of this prim only, not entire linkset + The simulator Local ID of the object + A reference to the simulator object that contains the object + - + - Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation, size, or position of the target object - The flags from the Enum + LocalID of the object in the simulator + UUID of the task item to move + The ID of the destination folder in this agents inventory + Simulator Object + Raises the event - + - Deed an object (prim) to a group, Object must be shared with group which - can be accomplished with SetPermissions() + Remove an item from an objects (Prim) Inventory - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The of the group to deed the object to + LocalID of the object in the simulator + UUID of the task item to remove + Simulator Object + You can confirm the removal by comparing the tasks inventory serial before and after the + request with the request combined with + the event - - - Deed multiple objects (prims) to a group, Objects must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - An array which contains the IDs of the objects to deed - The of the group to deed the object to + + + Copy an InventoryScript item from the Agents Inventory into a primitives task inventory + + An unsigned integer representing a primitive being simulated + An which represents a script object from the agents inventory + true to set the scripts running state to enabled + A Unique Transaction ID + + The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory + and assumes the script exists in the agents inventory. + + uint primID = 95899503; // Fake prim ID + UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory + + Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, + false, true, InventorySortOrder.ByName, 10000); + + Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); + + - + - Set the permissions on multiple objects + Request the running status of a script contained in a task (primitive) inventory - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the permissions on - The new Who mask to set - The new Permissions mark to set - TODO: What does this do? + The ID of the primitive containing the script + The ID of the script + The event can be used to obtain the results of the + request + - + - Request additional properties for an object + Send a request to set the running state of a script contained in a task (primitive) inventory - A reference to the object where the object resides - - + The ID of the primitive containing the script + The ID of the script + true to set the script running, false to stop a running script + To verify the change you can use the method combined + with the event - + - Request additional properties for an object + Create a CRC from an InventoryItem - A reference to the object where the object resides - Absolute UUID of the object - Whether to require server acknowledgement of this request + The source InventoryItem + A uint representing the source InventoryItem as a CRC - + - Set the ownership of a list of objects to the specified group + Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the group id on - The Groups ID + Obfuscated shadow_id value + Deobfuscated asset_id value - + - Update current URL of the previously set prim media + Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id - UUID of the prim - Set current URL to this - Prim face number - Simulator in which prim is located + asset_id value to obfuscate + Obfuscated shadow_id value - + - Set object media + Wrapper for creating a new object - UUID of the prim - Array the length of prims number of faces. Null on face indexes where there is - no media, on faces which contain the media - Simulatior in which prim is located + The type of item from the enum + The of the newly created object + An object with the type and id passed - + - Retrieve information about object media + Parse the results of a RequestTaskInventory() response - UUID of the primitive - Simulator where prim is located - Call this callback when done + A string which contains the data from the task reply + A List containing the items contained within the tasks inventory - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - - A terse object update, used when a transformation matrix or - velocity/acceleration for an object changes but nothing else - (scale/position/rotation/acceleration/velocity) - - The sender - The EventArgs object containing the packet data - - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - Process an incoming packet and raise the appropriate events + + + UpdateCreateInventoryItem packets are received when a new inventory item + is created. This may occur when an object that's rezzed in world is + taken into inventory, when an item is created using the CreateInventoryItem + packet, or when an object is purchased + The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - + Process an incoming packet and raise the appropriate events The sender The EventArgs object containing the packet data - - - Setup construction data for a basic primitive shape - - Primitive shape to construct - Construction data that can be plugged into a + + Raised when the simulator sends us data containing + ... - - - - - - - - - - - + + Raised when the simulator sends us data containing + ... - + + Raised when the simulator sends us data containing + an inventory object sent by another avatar or primitive + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Get this agents Inventory data - - - - - + - Set the Shape data of an object + Callback for inventory item creation finishing - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - Data describing the prim shape + Whether the request to create an inventory + item succeeded or not + Inventory item being created. If success is + false this will be null - + - Set the Material data of an object + Callback for an inventory item being create from an uploaded asset - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new material of the object + true if inventory item creation was successful + + + - + + - - - - - - - - + - + + Reply received when uploading an inventory asset - - - - - - - - - - - Provides data for the event - - The event occurs when the simulator sends - an containing a Primitive, Foliage or Attachment 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 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 - - - The following code example uses the , , and - properties to display new Primitives and Attachments on the window. - - // Subscribe to the event that gives us prim and foliage information - Client.Objects.ObjectUpdate += Objects_ObjectUpdate; - private void Objects_ObjectUpdate(object sender, PrimEventArgs e) - { - Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); - } - - - - + Has upload been successful + Error message if upload failed + Inventory asset UUID + New asset UUID - + - Construct a new instance of the PrimEventArgs class + Delegate that is invoked when script upload is completed - The simulator the object originated from - The Primitive - The simulator time dilation - The prim was not in the dictionary before this update - true if the primitive represents an attachment to an agent - - - Get the simulator the originated from - - - Get the details - - - true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) - - - true if the is attached to an + Has upload succeded (note, there still might be compile errors) + Upload status message + Is compilation successful + If compilation failed, list of error messages, null on compilation success + Script inventory UUID + Script's new asset UUID - - Get the simulator Time Dilation + + Set to true to accept offer, false to decline it - - 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); - } - } - - - + + The folder to accept the inventory into, if null default folder for will be used - + - Construct a new instance of the AvatarUpdateEventArgs class + Callback when an inventory object is accepted and received from a + task inventory. This is the callback in which you actually get + the ItemID, as in ObjectOfferedCallback it is null when received + from a task. - The simulator the packet originated from - The data - The simulator time dilation - The avatar was not in the dictionary before this update - - - Get the simulator the object originated from - - - Get the data - - Get the simulator time dilation + + + Holds group information for Avatars such as those you might find in a profile + - - true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + true of Avatar accepts group notices - - Provides additional primitive data for the event - - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment data - The event is also raised when a request is - made. - - - The following code example uses the , and - - properties to display new attachments and send a request for additional properties containing the name of the - attachment then display it on the window. - - // Subscribe to the event that provides additional primitive details - Client.Objects.ObjectProperties += Objects_ObjectProperties; - // handle the properties data that arrives - private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) - { - Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); - } - + + Groups Key - - - Construct a new instance of the ObjectPropertiesEventArgs class - - The simulator the object is located - The primitive Properties + + Texture Key for groups insignia - - Get the simulator the object is located + + Name of the group - - Get the primitive properties + + Powers avatar has in the group - - Provides additional primitive data for the event - - The event occurs when the simulator sends - an containing additional details for a Primitive or Foliage data that is currently - being tracked in the dictionary - The event is also raised when a request is - made and is enabled - + + Avatars Currently selected title - + + true of Avatar has chosen to list this in their profile + + - Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + Contains an animation currently being played by an agent - The simulator the object is located - The Primitive - The primitive Properties - - - Get the simulator the object is located - - - Get the primitive details - - Get the primitive properties + + The ID of the animation asset - - 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 - + + A number to indicate start order of currently playing animations + On Linden Grids this number is unique per region, with OpenSim it is per client - - Get the simulator the object is located + + - + + Holds group information on an individual profile pick - + + Retrieve friend status notifications, and retrieve avatar names and + profiles - - Provides primitive data containing updated location, velocity, rotation, textures for the event - - The event occurs when the simulator sends updated location, velocity, rotation, etc - + + The event subscribers, null of no subscribers - - Get the simulator the object is located + + Raises the AvatarAnimation Event + An AvatarAnimationEventArgs object containing + the data sent from the simulator - - Get the primitive details + + Thread sync lock object - - - + + The event subscribers, null of no subscribers - - - + + Raises the AvatarAppearance Event + A AvatarAppearanceEventArgs object containing + the data sent from the simulator - - - + + Thread sync lock object - - Get the simulator the object is located + + The event subscribers, null of no subscribers - - Get the primitive details + + Raises the UUIDNameReply Event + A UUIDNameReplyEventArgs object containing + the data sent from the simulator - - - + + Thread sync lock object - - - + + The event subscribers, null of no subscribers - - - + + Raises the AvatarInterestsReply Event + A AvatarInterestsReplyEventArgs object containing + the data sent from the simulator - - - + + Thread sync lock object - - Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the - event + + The event subscribers, null of no subscribers - - Get the simulator the object is located + + Raises the AvatarPropertiesReply Event + A AvatarPropertiesReplyEventArgs object containing + the data sent from the simulator - - The LocalID of the object + + Thread sync lock object - - - Provides updates sit position data - + + The event subscribers, null of no subscribers - - Get the simulator the object is located + + Raises the AvatarGroupsReply Event + A AvatarGroupsReplyEventArgs object containing + the data sent from the simulator - - - + + Thread sync lock object - - - + + The event subscribers, null of no subscribers - - - + + Raises the AvatarPickerReply Event + A AvatarPickerReplyEventArgs object containing + the data sent from the simulator - - - + + Thread sync lock object - - Get the simulator the object is located + + The event subscribers, null of no subscribers - - - + + Raises the ViewerEffectPointAt Event + A ViewerEffectPointAtEventArgs object containing + the data sent from the simulator - - - + + Thread sync lock object - - - + + The event subscribers, null of no subscribers - - - Indicates if the operation was successful - + + Raises the ViewerEffectLookAt Event + A ViewerEffectLookAtEventArgs object containing + the data sent from the simulator - - - Media version string - + + Thread sync lock object - - - Array of media entries indexed by face number - + + The event subscribers, null of no subscribers - - - Create an allocated UDP packet buffer for receiving a packet - + + Raises the ViewerEffect Event + A ViewerEffectEventArgs object containing + the data sent from the simulator - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host + + Thread sync lock object - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host - Size of the buffer to allocate for packet data + + The event subscribers, null of no subscribers - - Size of the byte array used to store raw packet data + + Raises the AvatarPicksReply Event + A AvatarPicksReplyEventArgs object containing + the data sent from the simulator - - Raw packet data buffer + + Thread sync lock object - - Length of the data to transmit + + The event subscribers, null of no subscribers - - EndPoint of the remote host + + Raises the PickInfoReply Event + A PickInfoReplyEventArgs object containing + the data sent from the simulator - - - Object pool for packet buffers. This is used to allocate memory for all - incoming and outgoing packets, and zerocoding buffers for those packets - + + Thread sync lock object - - - Initialize the object pool in client mode - - Server to connect to - - - - + + The event subscribers, null of no subscribers - - - Initialize the object pool in server mode - - - - - + + Raises the AvatarClassifiedReply Event + A AvatarClassifiedReplyEventArgs object containing + the data sent from the simulator - - - Returns a packet buffer with EndPoint set if the buffer is in - client mode, or with EndPoint set to null in server mode - - Initialized UDPPacketBuffer object + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ClassifiedInfoReply Event + A ClassifiedInfoReplyEventArgs object containing + the data sent from the simulator - - - Default constructor - + + Thread sync lock object - + - Check a packet buffer out of the pool + Represents other avatars - A packet buffer object + - - - Returns an instance of the class that has been checked out of the Object Pool. - + + Tracks the specified avatar on your map + Avatar ID to track - + - Checks the instance back into the object pool + Request a single avatar name + The avatar key to retrieve a name for - + - Creates a new instance of the ObjectPoolBase class. Initialize MUST be called - after using this constructor. + Request a list of avatar names + The avatar keys to retrieve names for - + - Creates a new instance of the ObjectPool Base class. + Start a request for Avatar Properties - The object pool is composed of segments, which - are allocated whenever the size of the pool is exceeded. The number of items - in a segment should be large enough that allocating a new segmeng is a rare - thing. For example, on a server that will have 10k people logged in at once, - the receive buffer object pool should have segment sizes of at least 1000 - byte arrays per segment. - - The minimun number of segments that may exist. - Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. - The frequency which segments are checked to see if they're eligible for cleanup. + - + - The total number of segments created. Intended to be used by the Unit Tests. + Search for an avatar (first name, last name) + The name to search for + An ID to associate with this query - + - The number of items that are in a segment. Items in a segment - are all allocated at the same time, and are hopefully close to - each other in the managed heap. + Start a request for Avatar Picks + UUID of the avatar - + - The minimum number of segments. When segments are reclaimed, - this number of segments will always be left alone. These - segments are allocated at startup. + Start a request for Avatar Classifieds + UUID of the avatar - + - The age a segment must be before it's eligible for cleanup. - This is used to prevent thrash, and typical values are in - the 5 minute range. + Start a request for details of a specific profile pick + UUID of the avatar + UUID of the profile pick - + - The frequence which the cleanup thread runs. This is typically - expected to be in the 5 minute range. + Start a request for details of a specific profile classified + UUID of the avatar + UUID of the profile classified - - - Forces the segment cleanup algorithm to be run. This method is intended - primarly for use from the Unit Test libraries. - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Responsible for allocate 1 instance of an object that will be stored in a segment. - - An instance of whatever objec the pool is pooling. + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Checks in an instance of T owned by the object pool. This method is only intended to be called - by the WrappedObject class. - - The segment from which the instance is checked out. - The instance of T to check back into the segment. + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Checks an instance of T from the pool. If the pool is not sufficient to - allow the checkout, a new segment is created. - - A WrappedObject around the instance of T. To check - the instance back into the segment, be sureto dispose the WrappedObject - when finished. + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - The ObservableDictionary class is used for storing key/value pairs. It has methods for firing - events to subscribers when items are added, removed, or changed. - - Key - Value + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - A dictionary of callbacks to fire when specified action occurs - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Indexer for the dictionary - - The key - The value + + Raised when the simulator sends us data containing + an agents animation playlist - - - Gets the number of Key/Value pairs contained in the + + Raised when the simulator sends us data containing + the appearance information for an agent - - - Register a callback to be fired when an action occurs - - The action - The callback to fire + + Raised when the simulator sends us data containing + agent names/id values - - - Unregister a callback - - The action - The callback to fire + + Raised when the simulator sends us data containing + the interests listed in an agents profile - - - - - - - + + Raised when the simulator sends us data containing + profile property information for an agent + + + Raised when the simulator sends us data containing + the group membership an agent is a member of + + + Raised when the simulator sends us data containing + name/id pair + + + Raised when the simulator sends us data containing + the objects and effect when an agent is pointing at + + + Raised when the simulator sends us data containing + the objects and effect when an agent is looking at + + + Raised when the simulator sends us data containing + an agents viewer effect information + + + Raised when the simulator sends us data containing + the top picks from an agents profile + + + Raised when the simulator sends us data containing + the Pick details + + + Raised when the simulator sends us data containing + the classified ads an agent has placed + + + Raised when the simulator sends us data containing + the details of a classified ad - + + Provides data for the event + The event occurs when the simulator sends + the animation playlist for an agent + + The following code example uses the and + properties to display the animation playlist of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; + + private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) + { + // create a dictionary of "known" animations from the Animations class using System.Reflection + Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); + Type type = typeof(Animations); + System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + foreach (System.Reflection.FieldInfo field in fields) + { + systemAnimations.Add((UUID)field.GetValue(type), field.Name); + } + + // find out which animations being played are known animations and which are assets + foreach (Animation animation in e.Animations) + { + if (systemAnimations.ContainsKey(animation.AnimationID)) + { + Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, + systemAnimations[animation.AnimationID], animation.AnimationSequence); + } + else + { + Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, + animation.AnimationID, animation.AnimationSequence); + } + } + } + + + + - Try to get entry from the with specified key + Construct a new instance of the AvatarAnimationEventArgs class - Key to use for lookup - Value returned - - if specified key exists, if not found + The ID of the agent + The list of animations to start + + + Get the ID of the agent + + + Get the list of animations to start + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar - - // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } - - + - Finds the specified match. + Construct a new instance of the AvatarAppearanceEventArgs class - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - + The ID of the agent + true of the agent is a trial account + The default agent texture + The agents appearance layer textures + The for the agent - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - + + Get the ID of the agent - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - + + true if the agent is a trial account - - Check if Key exists in Dictionary - Key to check for - - if found, otherwise + + Get the default agent texture - - Check if Value exists in Dictionary - Value to check for - - if found, otherwise + + Get the agents appearance layer textures - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - The key - The value + + Get the for the agent - - - Removes the specified key, dictionary locking is not performed - - The key. - - if successful, otherwise + + Represents the interests from the profile of an agent - - - Clear the contents of the dictionary - + + Get the ID of the agent - - - Enumerator for iterating dictionary entries - - - + + The properties of an agent - + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the avatar + + - A custom decoder callback + Sent to the client to indicate a teleport request has completed - The key of the object - the data to decode - A string represending the fieldData - + + The of the agent + + + + + + The simulators handle the agent teleported to + + + A Uri which contains a list of Capabilities the simulator supports + + + Indicates the level of access required + to access the simulator, or the content rating, or the simulators + map status + + + The IP Address of the simulator + + + The UDP Port the simulator will listen for UDP traffic on + + + Status flags indicating the state of the Agent upon arrival, Flying, etc. + + - Add a custom decoder callback + Serialize the object - The key of the field to decode - The custom decode handler + An containing the objects data - + - Remove a custom decoder callback + Deserialize the message - The key of the field to decode - The custom decode handler + An containing the data - + - Creates a formatted string containing the values of a Packet + Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. - The Packet - A formatted string of values of the nested items in the Packet object - + - Decode an IMessage object into a beautifully formatted string + Serialize the object - The IMessage object - Recursion level (used for indenting) - A formatted string containing the names and values of the source object + An containing the objects data - + - Type of return to use when returning objects from a parcel + Deserialize the message + An containing the data - + + Serialize the object + An containing the objects data - - Return objects owned by parcel owner - - - Return objects set to group - - - Return objects not owned by parcel owner or set to group - - - Return a specific list of objects on parcel - - - Return objects that are marked for-sale - - + - Blacklist/Whitelist flags used in parcels Access List + Deserialize the message + An containing the data - - Agent is denied access - - - Agent is granted access - - + - The result of a request for parcel properties + Serialize the object + An containing the objects data - - No matches were found for the request - - - Request matched a single parcel - - - Request matched multiple parcels - - + - Flags used in the ParcelAccessListRequest packet to specify whether - we want the access list (whitelist), ban list (blacklist), or both + Deserialize the message + An containing the data - - Request the access list - - - Request the ban list - - - Request both White and Black lists - - + - Sequence ID in ParcelPropertiesReply packets (sent when avatar - tries to cross a parcel border) + A message sent to the client which indicates a teleport request has failed + and contains some information on why it failed - - Parcel is currently selected - - - Parcel restricted to a group the avatar is not a - member of + + - - Avatar is banned from the parcel + + A string key of the reason the teleport failed e.g. CouldntTPCloser + Which could be used to look up a value in a dictionary or enum - - Parcel is restricted to an access list that the - avatar is not on + + The of the Agent - - Response to hovering over a parcel + + A string human readable message containing the reason + An example: Could not teleport closer to destination - + - The tool to use when modifying terrain levels + Serialize the object + An containing the objects data - - Level the terrain - - - Raise the terrain - - - Lower the terrain - - - Smooth the terrain - - - Add random noise to the terrain - - - Revert terrain to simulator default + + + Deserialize the message + + An containing the data - + - The tool size to use when changing terrain levels + Serialize the object + An containing the objects data - - Small + + + Deserialize the message + + An containing the data - - Medium + + + Contains a list of prim owner information for a specific parcel in a simulator + + + A Simulator will always return at least 1 entry + If agent does not have proper permission the OwnerID will be UUID.Zero + If agent does not have proper permission OR there are no primitives on parcel + the DataBlocksExtended map will not be sent from the simulator + - - Large + + An Array of objects - + - Reasons agent is denied access to a parcel on the simulator + Serialize the object + An containing the objects data - - Agent is not denied, access is granted + + + Deserialize the message + + An containing the data - - Agent is not a member of the group set for the parcel, or which owns the parcel + + + Prim ownership information for a specified owner on a single parcel + - - Agent is not on the parcels specific allow list + + The of the prim owner, + UUID.Zero if agent has no permission to view prim owner information - - Agent is on the parcels ban list + + The total number of prims - - Unknown + + True if the OwnerID is a - - Agent is not age verified and parcel settings deny access to non age verified avatars + + True if the owner is online + This is no longer used by the LL Simulators - + + The date the most recent prim was rezzed + + - Parcel overlay type. This is used primarily for highlighting and - coloring which is why it is a single integer instead of a set of - flags + The details of a single parcel in a region, also contains some regionwide globals - These values seem to be poorly thought out. The first three - bits represent a single value, not flags. For example Auction (0x05) is - not a combination of OwnedByOther (0x01) and ForSale(0x04). However, - the BorderWest and BorderSouth values are bit flags that get attached - to the value stored in the first three bits. Bits four, five, and six - are unused - - - Public land - - Land is owned by another avatar - - - Land is owned by a group + + Simulator-local ID of this parcel - - Land is owned by the current avatar + + Maximum corner of the axis-aligned bounding box for this + parcel - - Land is for sale + + Minimum corner of the axis-aligned bounding box for this + parcel - - Land is being auctioned + + Total parcel land area - - To the west of this area is a parcel border + + - - To the south of this area is a parcel border + + Key of authorized buyer - - - Various parcel properties - + + Bitmap describing land layout in 4x4m squares across the + entire region - - No flags set + + - - Allow avatars to fly (a client-side only restriction) + + Date land was claimed - - Allow foreign scripts to run + + Appears to always be zero - - This parcel is for sale + + Parcel Description - - Allow avatars to create a landmark on this parcel + + - - Allows all avatars to edit the terrain on this parcel + + - - Avatars have health and can take damage on this parcel. - If set, avatars can be killed and sent home here + + Total number of primitives owned by the parcel group on + this parcel - - Foreign avatars can create objects here + + Whether the land is deeded to a group or not - - All objects on this parcel can be purchased + + - - Access is restricted to a group + + Maximum number of primitives this parcel supports - - Access is restricted to a whitelist + + The Asset UUID of the Texture which when applied to a + primitive will display the media - - Ban blacklist is enabled + + A URL which points to any Quicktime supported media type - - Unknown + + A byte, if 0x1 viewer should auto scale media to fit object - - List this parcel in the search directory + + URL For Music Stream - - Allow personally owned parcels to be deeded to group + + Parcel Name - - If Deeded, owner contributes required tier to group parcel is deeded to + + Autoreturn value in minutes for others' objects - - Restrict sounds originating on this parcel to the - parcel boundaries + + - - Objects on this parcel are sold when the land is - purchsaed + + Total number of other primitives on this parcel - - Allow this parcel to be published on the web + + UUID of the owner of this parcel - - The information for this parcel is mature content + + Total number of primitives owned by the parcel owner on + this parcel - - The media URL is an HTML page + + - - The media URL is a raw HTML string + + How long is pass valid for - - Restrict foreign object pushes + + Price for a temporary pass - - Ban all non identified/transacted avatars + + - - Allow group-owned scripts to run + + - - Allow object creation by group members or group - objects + + - - Allow all objects to enter this parcel + + This field is no longer used - - Only allow group and owner objects to enter this parcel + + The result of a request for parcel properties - - Voice Enabled on this parcel + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it - - Use Estate Voice channel for Voice on this parcel + + + Number of primitives your avatar is currently + selecting and sitting on in this parcel + - - Deny Age Unverified Users + + - + - Parcel ownership status + A number which increments by 1, starting at 0 for each ParcelProperties request. + Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. + a Negative number indicates the action in has occurred. - - Placeholder + + Maximum primitives across the entire simulator + + + Total primitives across the entire simulator + + + + + + Key of parcel snapshot + + + Parcel ownership status + + + Total number of primitives on this parcel - - Parcel is leased (owned) by an avatar or group + + - - Parcel is in process of being leased (purchased) by an avatar or group + + - - Parcel has been abandoned back to Governor Linden + + TRUE of region denies access to age unverified users - - - Category parcel is listed in under search - + + A description of the media - - No assigned category + + An Integer which represents the height of the media - - Linden Infohub or public area + + An integer which represents the width of the media - - Adult themed area + + A boolean, if true the viewer should loop the media - - Arts and Culture + + A string which contains the mime type of the media - - Business + + true to obscure (hide) media url - - Educational + + true to obscure (hide) music url - - Gaming + + + Serialize the object + + An containing the objects data - - Hangout or Club + + + Deserialize the message + + An containing the data - - Newcomer friendly + + A message sent from the viewer to the simulator to updated a specific parcels settings - - Parks and Nature + + The of the agent authorized to purchase this + parcel of land or a NULL if the sale is authorized to anyone - - Residential + + true to enable auto scaling of the parcel media - - Shopping + + The category of this parcel used when search is enabled to restrict + search results - - Not Used? + + A string containing the description to set - - Other + + The of the which allows for additional + powers and restrictions. - - Not an actual category, only used for queries + + The which specifies how avatars which teleport + to this parcel are handled - - - Type of teleport landing for a parcel - + + The LocalID of the parcel to update settings on - - Unset, simulator default + + A string containing the description of the media which can be played + to visitors - - Specific landing point set for this parcel + + - - No landing point set, direct teleports enabled for - this parcel + + - - - Parcel Media Command used in ParcelMediaCommandMessage - + + - - Stop the media stream and go back to the first frame + + - - Pause the media stream (stop playing but stay on current frame) + + - - Start the current media stream playing and stop when the end is reached + + - - Start the current media stream playing, - loop to the beginning when the end is reached and continue to play + + - - Specifies the texture to replace with video - If passing the key of a texture, it must be explicitly typecast as a key, - not just passed within double quotes. + + - - Specifies the movie URL (254 characters max) + + - - Specifies the time index at which to begin playing + + - - Specifies a single agent to apply the media command to + + - - Unloads the stream. While the stop command sets the texture to the first frame of the movie, - unload resets it to the real texture that the movie was replacing. + + - - Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties - (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. + + - - Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). - Use "text/html" for HTML. + + - - Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). - This might still not be working + + - - Sets a description for the media being displayed (1.19.1 RC0 and later only). + + - + + + + - Some information about a parcel of land returned from a DirectoryManager search + Deserialize the message + An containing the data - - Global Key of record - - - Parcel Owners + + + Serialize the object + + An containing the objects data - - Name field of parcel, limited to 128 characters + + Base class used for the RemoteParcelRequest message - - Description field of parcel, limited to 256 characters + + + A message sent from the viewer to the simulator to request information + on a remote parcel + - - Total Square meters of parcel + + Local sim position of the parcel we are looking up - - Total area billable as Tier, for group owned land this will be 10% less than ActualArea + + Region handle of the parcel we are looking up - - True of parcel is in Mature simulator + + Region of the parcel we are looking up - - Grid global X position of parcel + + + Serialize the object + + An containing the objects data - - Grid global Y position of parcel + + + Deserialize the message + + An containing the data - - Grid global Z position of parcel (not used) + + + A message sent from the simulator to the viewer in response to a + which will contain parcel information + - - Name of simulator parcel is located in + + The grid-wide unique parcel ID - - Texture of parcels display picture + + + Serialize the object + + An containing the objects data - - Float representing calculated traffic based on time spent on parcel by avatars + + + Deserialize the message + + An containing the data - - Sale price of parcel (not used) + + + A message containing a request for a remote parcel from a viewer, or a response + from the simulator to that request + - - Auction ID of parcel + + The request or response details block - + - Parcel Media Information + Serialize the object + An containing the objects data - - A byte, if 0x1 viewer should auto scale media to fit object - - - A boolean, if true the viewer should loop the media + + + Deserialize the message + + An containing the data - - The Asset UUID of the Texture which when applied to a - primitive will display the media + + + Serialize the object + + An containing the objects data - - A URL which points to any Quicktime supported media type + + + Deserialize the message + + An containing the data - - A description of the media + + + A message sent from the simulator to an agent which contains + the groups the agent is in + - - An Integer which represents the height of the media + + The Agent receiving the message - - An integer which represents the width of the media + + An array containing information + for each the agent is a member of - - A string which contains the mime type of the media + + An array containing information + for each the agent is a member of - + - Parcel of land, a portion of virtual real estate in a simulator + Serialize the object + An containing the objects data - + - Defalt constructor + Deserialize the message - Local ID of this parcel + An containing the data - - The total number of contiguous 4x4 meter blocks your agent owns within this parcel + + Group Details specific to the agent - - The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own + + true of the agent accepts group notices - - Deprecated, Value appears to always be 0 + + The agents tier contribution to the group - - Simulator-local ID of this parcel + + The Groups - - UUID of the owner of this parcel + + The of the groups insignia - - Whether the land is deeded to a group or not + + The name of the group - - - + + The aggregate permissions the agent has in the group for all roles the agent + is assigned - - Date land was claimed + + An optional block containing additional agent specific information - - Appears to always be zero + + true of the agent allows this group to be + listed in their profile - - This field is no longer used + + + A message sent from the viewer to the simulator which + specifies the language and permissions for others to detect + the language specified + - - Minimum corner of the axis-aligned bounding box for this - parcel + + A string containng the default language + to use for the agent - - Maximum corner of the axis-aligned bounding box for this - parcel + + true of others are allowed to + know the language setting - - Bitmap describing land layout in 4x4m squares across the - entire region + + + Serialize the object + + An containing the objects data - - Total parcel land area + + + Deserialize the message + + An containing the data - + + An EventQueue message sent from the simulator to an agent when the agent + leaves a group - - Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used + + + An Array containing the AgentID and GroupID + - - Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel - owned by the agent or group that owns this parcel + + + Serialize the object + + An containing the objects data - - Maximum number of primitives this parcel supports + + + Deserialize the message + + An containing the data - - Total number of primitives on this parcel + + An object containing the Agents UUID, and the Groups UUID - - For group-owned parcels this indicates the total number of prims deeded to the group, - for parcels owned by an individual this inicates the number of prims owned by the individual + + The ID of the Agent leaving the group - - Total number of primitives owned by the parcel group on - this parcel, or for parcels owned by an individual with a group set the - total number of prims set to that group. + + The GroupID the Agent is leaving - - Total number of prims owned by other avatars that are not set to group, or not the parcel owner + + Base class for Asset uploads/results via Capabilities - - A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect - the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed + + + The request state + - - Autoreturn value in minutes for others' objects + + + Serialize the object + + An containing the objects data - + + Deserialize the message + An containing the data - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it + + + A message sent from the viewer to the simulator to request a temporary upload capability + which allows an asset to be uploaded + - - Parcel Name + + The Capability URL sent by the simulator to upload the baked texture to - - Parcel Description + + + A message sent from the simulator that will inform the agent the upload is complete, + and the UUID of the uploaded asset + - - URL For Music Stream + + The uploaded texture asset ID - + + A message sent from the viewer to the simulator to request a temporary + capability URI which is used to upload an agents baked appearance textures - - Price for a temporary pass - - - How long is pass valid for + + Object containing request or response - + + Serialize the object + An containing the objects data - - Key of authorized buyer + + + Deserialize the message + + An containing the data - - Key of parcel snapshot + + + A message sent from the simulator which indicates the minimum version required for + using voice chat + - - The landing point location + + Major Version Required - - The landing point LookAt + + Minor version required - - The type of landing enforced from the enum + + The name of the region sending the version requrements - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + A message sent from the simulator to the viewer containing the + voice server URI - - Access list of who is whitelisted on this - parcel - - - Access list of who is blacklisted on this - parcel - - - TRUE of region denies access to age unverified users - - - true to obscure (hide) media url + + The Parcel ID which the voice server URI applies - - true to obscure (hide) music url + + The name of the region - - A struct containing media details + + A uri containing the server/channel information + which the viewer can utilize to participate in voice conversations - + - Displays a parcel object in string format + Serialize the object - string containing key=value pairs of a parcel object + An containing the objects data - + - Update the simulator with any local changes to this Parcel object + Deserialize the message - Simulator to send updates to - Whether we want the simulator to confirm - the update with a reply packet or not + An containing the data - + - Set Autoreturn time + - Simulator to send the update to - + + + + + + + - Parcel (subdivided simulator lots) subsystem + Serialize the object + An containing the objects data - + - Default constructor + Deserialize the message - A reference to the GridClient object + An containing the data - + - Parcel Accesslist + A message sent by the viewer to the simulator to request a temporary + capability for a script contained with in a Tasks inventory to be updated - - Agents + + Object containing request or response - + + Serialize the object + An containing the objects data - - Flags for specific entry in white/black lists - - + - Owners of primitives on parcel + Deserialize the message + An containing the data - - Prim Owners - - - True of owner is group - - - Total count of prims owned by OwnerID - - - true of OwnerID is currently online and is not a group - - - The date of the most recent prim left by OwnerID - - + - Called once parcel resource usage information has been collected + A message sent from the simulator to the viewer to indicate + a Tasks scripts status. - Indicates if operation was successfull - Parcel resource usage information - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - Thread sync lock object + + The Asset ID of the script - - The event subscribers. null if no subcribers + + True of the script is compiled/ran using the mono interpreter, false indicates it + uses the older less efficient lsl2 interprter - - Thread sync lock object + + The Task containing the scripts - - The event subscribers. null if no subcribers + + true of the script is in a running state - - Thread sync lock object + + + Serialize the object + + An containing the objects data - - The event subscribers. null if no subcribers + + + Deserialize the message + + An containing the data - - Thread sync lock object + + + A message containing the request/response used for updating a gesture + contained with an agents inventory + - - The event subscribers. null if no subcribers + + Object containing request or response - - Thread sync lock object + + + Serialize the object + + An containing the objects data - - The event subscribers. null if no subcribers + + + Deserialize the message + + An containing the data - - Thread sync lock object + + + A message request/response which is used to update a notecard contained within + a tasks inventory + - - Raised when the simulator responds to a request + + The of the Task containing the notecard asset to update - - Raised when the simulator responds to a request + + The notecard assets contained in the tasks inventory - - Raised when the simulator responds to a request + + + Serialize the object + + An containing the objects data - - Raised when the simulator responds to a request + + + Deserialize the message + + An containing the data - - Raised when the simulator responds to a request + + + A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability + which is used to update an asset in an agents inventory + - - Raised when the simulator responds to a request + + + The Notecard AssetID to replace + - - Raised when the simulator responds to a request + + + Serialize the object + + An containing the objects data - - Raised when the simulator responds to a Parcel Update request + + + Deserialize the message + + An containing the data - - Raised when the parcel your agent is located sends a ParcelMediaCommand + + + A message containing the request/response used for updating a notecard + contained with an agents inventory + - - Raises the ParcelDwellReply event - A ParcelDwellReplyEventArgs object containing the - data returned from the simulator + + Object containing request or response - - Raises the ParcelInfoReply event - A ParcelInfoReplyEventArgs object containing the - data returned from the simulator + + + Serialize the object + + An containing the objects data - - Raises the ParcelProperties event - A ParcelPropertiesEventArgs object containing the - data returned from the simulator + + + Deserialize the message + + An containing the data - - Raises the ParcelAccessListReply event - A ParcelAccessListReplyEventArgs object containing the - data returned from the simulator + + + Serialize the object + + An containing the objects data - - Raises the ParcelObjectOwnersReply event - A ParcelObjectOwnersReplyEventArgs object containing the - data returned from the simulator + + + Deserialize the message + + An containing the data - - Raises the SimParcelsDownloaded event - A SimParcelsDownloadedEventArgs object containing the - data returned from the simulator + + + A message sent from the simulator to the viewer which indicates + an error occurred while attempting to update a script in an agents or tasks + inventory + - - Raises the ForceSelectObjectsReply event - A ForceSelectObjectsReplyEventArgs object containing the - data returned from the simulator + + true of the script was successfully compiled by the simulator - - Raises the ParcelMediaUpdateReply event - A ParcelMediaUpdateReplyEventArgs object containing the - data returned from the simulator + + A string containing the error which occured while trying + to update the script - - Raises the ParcelMediaCommand event - A ParcelMediaCommandEventArgs object containing the - data returned from the simulator + + A new AssetID assigned to the script - + - Request basic information for a single parcel + A message sent from the viewer to the simulator + requesting the update of an existing script contained + within a tasks inventory - Simulator-local ID of the parcel - - - Request properties of a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - multiple simultaneous requests + + if true, set the script mode to running + + + The scripts InventoryItem ItemID to update + + + A lowercase string containing either "mono" or "lsl2" which + specifies the script is compiled and ran on the mono runtime, or the older + lsl runtime - - - Request the access list for a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelAccessList reply, useful for distinguishing between - multiple simultaneous requests - - + + The tasks which contains the script to update - + - Request properties of parcels using a bounding box selection + Serialize the object - Simulator containing the parcel - Northern boundary of the parcel selection - Eastern boundary of the parcel selection - Southern boundary of the parcel selection - Western boundary of the parcel selection - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - different types of parcel property requests - A boolean that is returned with the - ParcelProperties reply, useful for snapping focus to a single - parcel + An containing the objects data - + - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) + Deserialize the message - Simulator to request parcels from (must be connected) + An containing the data - + - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) + A message containing either the request or response used in updating a script inside + a tasks inventory - Simulator to request parcels from (must be connected) - If TRUE, will force a full refresh - Number of milliseconds to pause in between each request - - - Request the dwell value for a parcel - - Simulator containing the parcel - Simulator-local ID of the parcel + + Object containing request or response - + - Send a request to Purchase a parcel of land + Serialize the object - The Simulator the parcel is located in - The parcels region specific local ID - true if this parcel is being purchased by a group - The groups - true to remove tier contribution if purchase is successful - The parcels size - The purchase price of the parcel - - + An containing the objects data - + - Reclaim a parcel of land + Deserialize the message - The simulator the parcel is in - The parcels region specific local ID + An containing the data - + - Deed a parcel to a group + Response from the simulator to notify the viewer the upload is completed, and + the UUID of the script asset and its compiled status - The simulator the parcel is in - The parcels region specific local ID - The groups - + + The uploaded texture asset ID + + + true of the script was compiled successfully + + - Request prim owners of a parcel of land. + A message sent from a viewer to the simulator requesting a temporary uploader capability + used to update a script contained in an agents inventory - Simulator parcel is in - The parcels region specific local ID - + + The existing asset if of the script in the agents inventory to replace + + + The language of the script + Defaults to lsl version 2, "mono" might be another possible option + + - Return objects from a parcel + Serialize the object - Simulator parcel is in - The parcels region specific local ID - the type of objects to return, - A list containing object owners s to return + An containing the objects data - + - Subdivide (split) a parcel + Deserialize the message - - - - - - - - - - + An containing the data - + - Join two parcels of land creating a single parcel + A message containing either the request or response used in updating a script inside + an agents inventory - - - - - - - - - - - + + Object containing request or response + + - Get a parcels LocalID + Serialize the object - Simulator parcel is in - Vector3 position in simulator (Z not used) - 0 on failure, or parcel LocalID on success. - A call to Parcels.RequestAllSimParcels is required to populate map and - dictionary. + An containing the objects data - + - Terraform (raise, lower, etc) an area or whole parcel of land + Deserialize the message - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() + An containing the data - + - Terraform (raise, lower, etc) an area or whole parcel of land + Serialize the object - Simulator land area is in. - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() + An containing the objects data - + - Terraform (raise, lower, etc) an area or whole parcel of land + Deserialize the message - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() + An containing the data - + + Base class for Map Layers via Capabilities + + + + + - Terraform (raise, lower, etc) an area or whole parcel of land + Serialize the object - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - Height at which the terraform operation is acting at + An containing the objects data - + - Sends a request to the simulator to return a list of objects owned by specific owners + Deserialize the message - Simulator local ID of parcel - Owners, Others, Etc - List containing keys of avatars objects to select; - if List is null will return Objects of type selectType - Response data is returned in the event + An containing the data - + - Eject and optionally ban a user from a parcel + Sent by an agent to the capabilities server to request map layers - target key of avatar to eject - true to also ban target - + - Freeze or unfreeze an avatar over your land + A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates - target key to freeze - true to freeze, false to unfreeze - + + An array containing LayerData items + + - Abandon a parcel of land + Serialize the object - Simulator parcel is in - Simulator local ID of parcel + An containing the objects data - + - Requests the UUID of the parcel in a remote region at a specified location + Deserialize the message - Location of the parcel in the remote region - Remote region handle - Remote region UUID - If successful UUID of the remote parcel, UUID.Zero otherwise + An containing the data - + - Retrieves information on resources used by the parcel + An object containing map location details - UUID of the parcel - Should per object resource usage be requested - Callback invoked when the request is complete - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event + + The Asset ID of the regions tile overlay - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event + + The grid location of the southern border of the map tile - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event + + The grid location of the western border of the map tile - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + The grid location of the eastern border of the map tile - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event + + The grid location of the northern border of the map tile - - Contains a parcels dwell data returned from the simulator in response to an + + Object containing request or response - + - Construct a new instance of the ParcelDwellReplyEventArgs class + Serialize the object - The global ID of the parcel - The simulator specific ID of the parcel - The calculated dwell for the parcel + An containing the objects data - - Get the global ID of the parcel + + + Deserialize the message + + An containing the data - - Get the simulator specific ID of the parcel + + + New as of 1.23 RC1, no details yet. + - - Get the calculated dwell + + + Serialize the object + + An containing the objects data - - Contains basic parcel information data returned from the - simulator in response to an request + + + Deserialize the message + + An containing the data - + - Construct a new instance of the ParcelInfoReplyEventArgs class + Serialize the object - The object containing basic parcel info + An containing the objects data - - Get the object containing basic parcel info + + + Deserialize the message + + An containing the data - - Contains basic parcel information data returned from the simulator in response to an request + + A string containing the method used - + - Construct a new instance of the ParcelPropertiesEventArgs class - - The object containing the details - The object containing the details - The result of the request - The number of primitieves your agent is - currently selecting and or sitting on in this parcel - The user assigned ID used to correlate a request with - these results - TODO: + A request sent from an agent to the Simulator to begin a new conference. + Contains a list of Agents which will be included in the conference + - - Get the simulator the parcel is located in + + An array containing the of the agents invited to this conference - - Get the object containing the details - If Result is NoData, this object will not contain valid data + + The conferences Session ID - - Get the result of the request + + + Serialize the object + + An containing the objects data - - Get the number of primitieves your agent is - currently selecting and or sitting on in this parcel + + + Deserialize the message + + An containing the data - - Get the user assigned ID used to correlate a request with - these results + + + A moderation request sent from a conference moderator + Contains an agent and an optional action to take + - - TODO: + + The Session ID - - Contains blacklist and whitelist data returned from the simulator in response to an request + + - + + A list containing Key/Value pairs, known valid values: + key: text value: true/false - allow/disallow specified agents ability to use text in session + key: voice value: true/false - allow/disallow specified agents ability to use voice in session + + "text" or "voice" + + + + + - Construct a new instance of the ParcelAccessListReplyEventArgs class + Serialize the object - The simulator the parcel is located in - The user assigned ID used to correlate a request with - these results - The simulator specific ID of the parcel - TODO: - The list containing the white/blacklisted agents for the parcel + An containing the objects data - - Get the simulator the parcel is located in + + + Deserialize the message + + An containing the data - - Get the user assigned ID used to correlate a request with - these results + + + A message sent from the agent to the simulator which tells the + simulator we've accepted a conference invitation + - - Get the simulator specific ID of the parcel + + The conference SessionID - - TODO: + + + Serialize the object + + An containing the objects data - - Get the list containing the white/blacklisted agents for the parcel + + + Deserialize the message + + An containing the data - - Contains blacklist and whitelist data returned from the - simulator in response to an request + + + Serialize the object + + An containing the objects data - + - Construct a new instance of the ParcelObjectOwnersReplyEventArgs class + Deserialize the message - The simulator the parcel is located in - The list containing prim ownership counts + An containing the data - - Get the simulator the parcel is located in + + + Serialize the object + + An containing the objects data - - Get the list containing prim ownership counts + + + Deserialize the message + + An containing the data - - Contains the data returned when all parcel data has been retrieved from a simulator + + + Serialize the object + + An containing the objects data - + - Construct a new instance of the SimParcelsDownloadedEventArgs class + Deserialize the message - The simulator the parcel data was retrieved from - The dictionary containing the parcel data - The multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. + An containing the data - - Get the simulator the parcel data was retrieved from + + Key of sender - - A dictionary containing the parcel data where the key correlates to the ParcelMap entry + + Name of sender - - Get the multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. + + Key of destination avatar - - Contains the data returned when a request + + ID of originating estate - - - Construct a new instance of the ForceSelectObjectsReplyEventArgs class - - The simulator the parcel data was retrieved from - The list of primitive IDs - true if the list is clean and contains the information - only for a given request + + Key of originating region - - Get the simulator the parcel data was retrieved from + + Coordinates in originating region - - Get the list of primitive IDs + + Instant message type - - true if the list is clean and contains the information - only for a given request + + Group IM session toggle - - Contains data when the media data for a parcel the avatar is on changes + + Key of IM session, for Group Messages, the groups UUID - + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Is this invitation for voice group/conference chat + + - Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + Serialize the object - the simulator the parcel media data was updated in - The updated media information + An containing the objects data - - Get the simulator the parcel media data was updated in + + + Deserialize the message + + An containing the data - - Get the updated media information + + + Sent from the simulator to the viewer. + + When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including + a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate + this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" + + During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are + excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with + the string "ENTER" or "LEAVE" respectively. + - - Contains the media command for a parcel the agent is currently on + + + Serialize the object + + An containing the objects data - + - Construct a new instance of the ParcelMediaCommandEventArgs class + Deserialize the message - The simulator the parcel media command was issued in - - - - - The media command that was sent - - + An containing the data - - Get the simulator the parcel media command was issued in + + + An EventQueue message sent when the agent is forcibly removed from a chatterbox session + - + + A string containing the reason the agent was removed - + + The ChatterBoxSession's SessionID - - Get the media command that was sent + + + Serialize the object + + An containing the objects data - + + Deserialize the message + An containing the data - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + A message sent from the viewer to the simulator which + specifies that the user has changed current URL + of the specific media on a prim face - + + New URL - + + Prim UUID where navigation occured - + + Face index - + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + Base class used for the ObjectMedia message + + + Message used to retrive prim media data - + + Prim UUID - + + Requested operation, either GET or UPDATE - + + Serialize object + Serialized object as OSDMap - + + Deserialize the message + An containing the data - + + Message used to update prim media data - + + Prim UUID - + + Array of media entries indexed by face number - + + Media version string - + + Serialize object + Serialized object as OSDMap - + + Deserialize the message + An containing the data - + + Message used to update prim media data - + + Prim UUID - + + Array of media entries indexed by face number - + + Requested operation, either GET or UPDATE - + + Serialize object - - - - + Serialized object as OSDMap - + + Deserialize the message + An containing the data - + + Message for setting or getting per face MediaEntry - + + The request or response details block + + + Serialize the object + An containing the objects data - + + Deserialize the message + An containing the data - + + Represents a texture - + + A object containing image data + + + + + + + + + Initializes a new instance of an AssetTexture object + + + Initializes a new instance of an AssetTexture object - - - - + A unique specific to this asset + A byte array containing the raw asset data - + + Initializes a new instance of an AssetTexture object + A object containing texture data - + + Populates the byte array with a JPEG2000 + encoded image created from the data in - + + Decodes the JPEG2000 data in AssetData to the + object + True if the decoding was successful, otherwise false - + + Decodes the begin and end byte positions for each quality layer in + the image + - + + Override the base classes AssetType + + + Add a custom decoder callback + The key of the field to decode + The custom decode handler - + + Remove a custom decoder callback + The key of the field to decode + The custom decode handler - + + Creates a formatted string containing the values of a Packet + The Packet + A formatted string of values of the nested items in the Packet object - + + Decode an IMessage object into a beautifully formatted string + The IMessage object + Recursion level (used for indenting) + A formatted string containing the names and values of the source object - + + A custom decoder callback - - - - + The key of the object + the data to decode + A string represending the fieldData - + + Static helper functions and global variables - + + This header flag signals that ACKs are appended to the packet + + + This header flag signals that this packet has been sent before + + + This header flags signals that an ACK is expected for this packet + + + This header flag signals that the message is compressed using zerocoding + + + + + - + + + + + - + + + + - + + + + + - + + Given an X/Y location in absolute (grid-relative) terms, a region + handle is returned along with the local X/Y location in that region - - - - + The absolute X location, a number such as + 255360.35 + The absolute Y location, a number such as + 255360.35 + The sim-local X position of the global X + position, a value from 0.0 to 256.0 + The sim-local Y position of the global Y + position, a value from 0.0 to 256.0 + A 64-bit region handle that can be used to teleport to - + + Converts a floating point number to a terse string format used for + transmitting numbers in wearable asset files - - - - + Floating point number to convert to a string + A terse string representation of the input number - + + Convert a variable length field (byte array) to a string, with a + field name prepended to each line of the output - - - - - - + If the byte array has unprintable characters in it, a + hex dump will be written instead + The StringBuilder object to write to + The byte array to convert to a string + A field name to prepend to each line of output - + + Decode a zerocoded byte array, used to decompress packets marked + with the zerocoded flag + Any time a zero is encountered, the next byte is a count + of how many zeroes to expand. One zero is encoded with 0x00 0x01, + two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The + first four bytes are copied directly to the output buffer. + + The byte array to decode + The length of the byte array to decode. This + would be the length of the packet up to (but not including) any + appended ACKs + The output byte array to decode to + The length of the output buffer - + + Encode a byte array with zerocoding. Used to compress packets marked + with the zerocoded flag. Any zeroes in the array are compressed down + to a single zero byte followed by a count of how many zeroes to expand + out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, + three zeroes becomes 0x00 0x03, etc. The first four bytes are copied + directly to the output buffer. - - - - + The byte array to encode + The length of the byte array to encode + The output byte array to encode to + The length of the output buffer - + + Calculates the CRC (cyclic redundancy check) needed to upload inventory. - - - - + Creation date + Sale type + Inventory type + Type + Asset ID + Group ID + Sale price + Owner ID + Creator ID + Item ID + Folder ID + Everyone mask (permissions) + Flags + Next owner mask (permissions) + Group mask (permissions) + Owner mask (permissions) + The calculated CRC - + + Attempts to load a file embedded in the assembly - - + The filename of the resource to load + A Stream for the requested file, or null if the resource + was not successfully loaded - + - Class for controlling various system settings. + Attempts to load a file either embedded in the assembly or found in + a given search path - Some values are readonly because they affect things that - happen when the GridClient object is initialized, so changing them at - runtime won't do any good. Non-readonly values may affect things that - happen at login or dynamically - - - Constructor - Reference to a GridClient object - - - Main grid login server - - - Beta grid login server + The filename of the resource to load + An optional path that will be searched if + the asset is not found embedded in the assembly + A Stream for the requested file, or null if the resource + was not successfully loaded - + - InventoryManager requests inventory information on login, - GridClient initializes an Inventory store for main inventory. + Converts a list of primitives to an object that can be serialized + with the LLSD system + Primitives to convert to a serializable object + An object that can be serialized with LLSD - + - InventoryManager requests library information on login, - GridClient initializes an Inventory store for the library. + Deserializes OSD in to a list of primitives + Structure holding the serialized primitive list, + must be of the SDMap type + A list of deserialized primitives - - Number of milliseconds between sending pings to each sim - - - Number of milliseconds between sending camera updates - - - Number of milliseconds between updating the current - positions of moving, non-accelerating and non-colliding objects - - - Millisecond interval between ticks, where all ACKs are - sent out and the age of unACKed packets is checked - - - The initial size of the packet inbox, where packets are - stored before processing - - - Maximum size of packet that we want to send over the wire - - - The maximum value of a packet sequence number before it - rolls over back to one - - - The maximum size of the sequence number archive, used to - check for resent and/or duplicate packets - - - The relative directory where external resources are kept - - - Login server to connect to - - - IP Address the client will bind to - - - Use XML-RPC Login or LLSD Login, default is XML-RPC Login - - - Number of milliseconds before an asset transfer will time - out - - - Number of milliseconds before a teleport attempt will time - out - - - Number of milliseconds before NetworkManager.Logout() will - time out - - - Number of milliseconds before a CAPS call will time out - Setting this too low will cause web requests time out and - possibly retry repeatedly - - - Number of milliseconds for xml-rpc to timeout - - - Milliseconds before a packet is assumed lost and resent - - - Milliseconds without receiving a packet before the - connection to a simulator is assumed lost - - - Milliseconds to wait for a simulator info request through - the grid interface - - - Maximum number of queued ACKs to be sent before SendAcks() - is forced - - - Network stats queue length (seconds) - - - Enable/disable storing terrain heightmaps in the - TerrainManager - - - Enable/disable sending periodic camera updates - - - Enable/disable automatically setting agent appearance at - login and after sim crossing - - - Enable/disable automatically setting the bandwidth throttle - after connecting to each simulator - The default throttle uses the equivalent of the maximum - bandwidth setting in the official client. If you do not set a - throttle your connection will by default be throttled well below - the minimum values and you may experience connection problems - - - Enable/disable the sending of pings to monitor lag and - packet loss - - - Should we connect to multiple sims? This will allow - viewing in to neighboring simulators and sim crossings - (Experimental) - - - If true, all object update packets will be decoded in to - native objects. If false, only updates for our own agent will be - decoded. Registering an event handler will force objects for that - type to always be decoded. If this is disabled the object tracking - will have missing or partial prim and avatar information + + + Converts a struct or class object containing fields only into a key value separated string + + The struct object + A string containing the struct fields as the keys, and the field value as the value separated + + + // Add the following code to any struct or class containing only fields to override the ToString() + // method to display the values of the passed object + + /// Print the struct data as a string + ///A string containing the field name, and field value + public override string ToString() + { + return Helpers.StructToString(this); + } + + - - If true, when a cached object check is received from the - server the full object info will automatically be requested + + + Passed to Logger.Log() to identify the severity of a log entry + - - Whether to establish connections to HTTP capabilities - servers for simulators + + No logging information will be output - - Whether to decode sim stats + + Non-noisy useful information, may be helpful in + debugging a problem - - The capabilities servers are currently designed to - periodically return a 502 error which signals for the client to - re-establish a connection. Set this to true to log those 502 errors + + A non-critical error occurred. A warning will not + prevent the rest of the library from operating as usual, + although it may be indicative of an underlying issue - - If true, any reference received for a folder or item - the library is not aware of will automatically be fetched + + A critical error has occurred. Generally this will + be followed by the network layer shutting down, although the + stability of the library after an error is uncertain - - If true, and SEND_AGENT_UPDATES is true, - AgentUpdate packets will continuously be sent out to give the bot - smoother movement and autopiloting + + Used for internal testing, this logging level can + generate very noisy (long and/or repetitive) messages. Don't + pass this to the Log() function, use DebugLog() instead. + - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectAvatars. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received + + = - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectPrimitives. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received + + Number of times we've received an unknown CAPS exception in series. - - If true, position and velocity will periodically be - interpolated (extrapolated, technically) for objects and - avatars that are being tracked by the library. This is - necessary to increase the accuracy of speed and position - estimates for simulated objects + + For exponential backoff on error. - + - If true, utilization statistics will be tracked. There is a minor penalty - in CPU time for enabling this option. + Constants for the archiving module - - If true, parcel details will be stored in the - Simulator.Parcels dictionary as they are received + + + The location of the archive control file + - + - If true, an incoming parcel properties reply will automatically send - a request for the parcel access list + Path for the assets held in an archive - + - if true, an incoming parcel properties reply will automatically send - a request for the traffic count. + Path for the prims file - + - If true, images, and other assets downloaded from the server - will be cached in a local directory + Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. - - Path to store cached texture data + + + Path for region settings. + - - Maximum size cached files are allowed to take on disk (bytes) + + + The character the separates the uuid from extension information in an archived asset filename + - - Default color used for viewer particle effects + + + Extensions used for asset types in the archive + - - Maximum number of times to resend a failed packet + + + + - - Throttle outgoing packet rate + + - - UUID of a texture used by some viewers to indentify type of client used + + + + + - + - Download textures using GetTexture capability when available + Thrown when a packet could not be successfully deserialized - - The maximum number of concurrent texture downloads allowed - Increasing this number will not necessarily increase texture retrieval times due to - simulator throttles + + + Default constructor + - + - The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + Constructor that takes an additional error message - This is a static variable which applies to all instances + An error message to attach to this exception - + - Textures taking longer than this value will be flagged as timed out and removed from the pipeline + The header of a message template packet. Holds packet flags, sequence + number, packet ID, and any ACKs that will be appended at the end of + the packet - + - Get or set the minimum log level to output to the console by default - If the library is not compiled with DEBUG defined and this level is set to DEBUG - You will get no output on the console. This behavior can be overriden by creating - a logger configuration file for log4net + Convert the AckList to a byte array, used for packet serializing + Reference to the target byte array + Beginning position to start writing to in the byte + array, will be updated with the ending position of the ACK list - - Attach avatar names to log messages + + + + + + + + - - Log packet retransmission info + + + + + + + - - Cost of uploading an asset - Read-only since this value is dynamically fetched at login + + + A block of data in a packet. Packets are composed of one or more blocks, + each block containing one or more fields + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + + Create a block from a byte array + + Byte array containing the serialized block + Starting position of the block in the byte array. + This will point to the data after the end of the block when the + call returns - + - Simulator (region) properties + Serialize this block into a byte array + Byte array to serialize this block into + Starting position in the byte array to serialize to. + This will point to the position directly after the end of the + serialized block when the call returns - - No flags set + + Current length of the data in this packet - - Agents can take damage and be killed + + A generic value, not an actual packet type - - Landmarks can be created here + + - - Home position can be set in this sim + + - - Home position is reset when an agent teleports away + + - - Sun does not move + + - - No object, land, etc. taxes + + - - Disable heightmap alterations (agents can still plant - foliage) + + - - Land cannot be released, sold, or purchased + + - - All content is wiped nightly + + - - Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) + + - - Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. + + - - Region does not update agent prim interest lists. Internal debugging option. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - No collision detection for non-agent objects + + - - No scripts are ran + + - - All physics processing is turned off + + - - Region can be seen from other regions on world map. (Legacy world map option?) + + - - Region can be seen from mainland on world map. (Legacy world map option?) + + - - Agents not explicitly on the access list can visit the region. + + - - Traffic calculations are not run across entire region, overrides parcel settings. + + - - Flight is disabled (not currently enforced by the sim) + + - - Allow direct (p2p) teleporting + + - - Estate owner has temporarily disabled scripting + + - - Restricts the usage of the LSL llPushObject function, applies to whole region. + + - - Deny agents with no payment info on file + + - - Deny agents with payment info on file + + - - Deny agents who have made a monetary transaction + + - - Parcels within the region may be joined or divided by anyone, not just estate owners/managers. + + - - Abuse reports sent from within this region are sent to the estate owner defined email. + + - - Region is Voice Enabled + + - - Removes the ability from parcel owners to set their parcels to show in search. + + - - Deny agents who have not been age verified from entering the region. + + - - - Access level for a simulator - + + - - Unknown or invalid access level + + - - Trial accounts allowed + + - - PG rating + + - - Mature rating + + - - Adult rating + + - - Simulator is offline + + - - Simulator does not exist + + - - - + + - - - - Reference to the GridClient object - IPEndPoint of the simulator - handle of the simulator + + - - - Simulator Statistics - + + - - Total number of packets sent by this simulator to this agent + + - - Total number of packets received by this simulator to this agent + + - - Total number of bytes sent by this simulator to this agent + + - - Total number of bytes received by this simulator to this agent + + - - Time in seconds agent has been connected to simulator + + - - Total number of packets that have been resent + + - - Total number of resent packets recieved + + - - Total number of pings sent to this simulator by this agent + + - - Total number of ping replies sent to this agent by this simulator + + - - - Incoming bytes per second - - It would be nice to have this claculated on the fly, but - this is far, far easier + + - - - Outgoing bytes per second - - It would be nice to have this claculated on the fly, but - this is far, far easier + + - - Time last ping was sent + + - - ID of last Ping sent + + - - - + + - - - + + - - Current time dilation of this simulator + + - - Current Frames per second of simulator + + - - Current Physics frames per second of simulator + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - Total number of objects Simulator is simulating + + - - Total number of Active (Scripted) objects running + + - - Number of agents currently in this simulator + + - - Number of agents in neighbor simulators + + - - Number of Active scripts running in this simulator + + - - - + + - - - + + - - - + + - - Number of downloads pending + + - - Number of uploads pending + + - - - + + - - - + + - - Number of local uploads pending + + - - Unacknowledged bytes in queue + + - - A public reference to the client that this Simulator object - is attached to + + - - A Unique Cache identifier for this simulator + + - - The capabilities for this simulator + + - - - + + - - The current version of software this simulator is running + + - - - + + - - A 64x64 grid of parcel coloring values. The values stored - in this array are of the type + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - true if your agent has Estate Manager rights on this region + + - - - + + - - - + + - - - + + - - Statistics information for this simulator and the - connection to the simulator, calculated by the simulator itself - and the library + + - - The regions Unique ID + + - - The physical data center the simulator is located - Known values are: - DallasChandlerSF + + - - The CPU Class of the simulator - Most full mainland/estate sims appear to be 5, - Homesteads and Openspace appear to be 501 + + - - The number of regions sharing the same CPU as this one - "Full Sims" appear to be 1, Homesteads appear to be 4 + + - - The billing product name - Known values are: - Mainland / Full Region (Sku: 023)Estate / Full Region (Sku: 024)Estate / Openspace (Sku: 027)Estate / Homestead (Sku: 029)Mainland / Homestead (Sku: 129) (Linden Owned)Mainland / Linden Homes (Sku: 131) + + - - The billing product SKU - Known values are: - 023 Mainland / Full Region024 Estate / Full Region027 Estate / Openspace029 Estate / Homestead129 Mainland / Homestead (Linden Owned)131 Linden Homes / Full Region + + - - The current sequence number for packets sent to this - simulator. Must be Interlocked before modifying. Only - useful for applications manipulating sequence numbers + + - - - A thread-safe dictionary containing avatars in a simulator - + + - - - A thread-safe dictionary containing primitives in a simulator - + + - - - Provides access to an internal thread-safe dictionary containing parcel - information found in this simulator - + + - - Used internally to track sim disconnections + + - - Event that is triggered when the simulator successfully - establishes a connection + + - - Whether this sim is currently connected or not. Hooked up - to the property Connected + + - - Coarse locations of avatars in this simulator + + - - AvatarPositions key representing TrackAgent target + + - - Sequence numbers of packets we've received - (for duplicate checking) + + - - Packets we sent out that need ACKs from the simulator + + - - Sequence number for pause/resume + + - - Indicates if UDP connection to the sim is fully established + + - - - Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - + + - - The IP address and port of the server + + - - Whether there is a working connection to the simulator or - not + + - - Coarse locations of avatars in this simulator + + - - AvatarPositions key representing TrackAgent target + + - - Indicates if UDP connection to the sim is fully established + + - - - Checks simulator parcel map to make sure it has downloaded all data successfully - - true if map is full (contains no 0's) + + - - - Called when this Simulator object is being destroyed - + + - - - Attempt to connect to this simulator - - Whether to move our agent in to this sim or not - True if the connection succeeded or connection status is - unknown, false if there was a failure + + - - - Initiates connection to the simulator - + + - - - Disconnect from this simulator - + + - - - Instructs the simulator to stop sending update (and possibly other) packets - + + - - - Instructs the simulator to resume sending update packets (unpause) - + + - - - Retrieve the terrain height at a given coordinate - - Sim X coordinate, valid range is from 0 to 255 - Sim Y coordinate, valid range is from 0 to 255 - The terrain height at the given point if the - lookup was successful, otherwise 0.0f - True if the lookup was successful, otherwise false + + - - - Sends a packet - - Packet to be sent + + - - - + + - - - Returns Simulator Name as a String - - - + + + + + - - - - - + + - - - - - - - + + - - - Sends out pending acknowledgements - - Number of ACKs sent + + - - - Resend unacknowledged packets - + + - - - + + - - - Construct a new instance of the SoundManager class, used for playing and receiving - sound assets - - A reference to the current GridClient instance + + - - The event subscribers, null of no subscribers + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Thread sync lock object + + - - The event subscribers, null of no subscribers + + - - Thread sync lock object + + - - Raised when the simulator sends us data containing - sound + + - - Raised when the simulator sends us data containing - ... + + - - Raised when the simulator sends us data containing - ... + + - - Raised when the simulator sends us data containing - ... + + - - Raises the AttachedSound Event - A AttachedSoundEventArgs object containing - the data sent from the simulator + + - - Raises the AttachedSoundGainChange Event - A AttachedSoundGainChangeEventArgs object containing - the data sent from the simulator + + - - Raises the SoundTrigger Event - A SoundTriggerEventArgs object containing - the data sent from the simulator + + - - Raises the PreloadSound Event - A PreloadSoundEventArgs object containing - the data sent from the simulator + + - - - Plays a sound in the current region at full volume from avatar position - - UUID of the sound to be played + + - - - Plays a sound in the current region at full volume - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. + + - - - Plays a sound in the current region - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 + + - - - Plays a sound in the specified sim - - UUID of the sound to be played. - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 + + - - - Play a sound asset - - UUID of the sound to be played. - handle id for the sim to be played in. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data + + - - Provides data for the event - The event occurs when the simulator sends - the sound data which emits from an agents attachment - - The following code example shows the process to subscribe to the event - and a stub to handle the data passed from the simulator - - // Subscribe to the AttachedSound event - Client.Sound.AttachedSound += Sound_AttachedSound; - // process the data raised in the event here - private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) - { - // ... Process AttachedSoundEventArgs here ... - } - + + - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The volume level - The + + - - Simulator where the event originated + + - - Get the sound asset id + + - - Get the ID of the owner + + - - Get the ID of the Object + + - - Get the volume level + + - - Get the + + - - Provides data for the event - The event occurs when an attached sound - changes its volume level + + - - - Construct a new instance of the AttachedSoundGainChangedEventArgs class - - Simulator where the event originated - The ID of the Object - The new volume level + + - - Simulator where the event originated + + - - Get the ID of the Object + + - - Get the volume level + + - - Provides data for the event - - The event occurs when the simulator forwards - a request made by yourself or another agent to play either an asset sound or a built in sound - Requests to play sounds where the is not one of the built-in - will require sending a request to download the sound asset before it can be played - - - The following code example uses the , - and - properties to display some information on a sound request on the window. - - // subscribe to the event - Client.Sound.SoundTrigger += Sound_SoundTrigger; - // play the pre-defined BELL_TING sound - Client.Sound.SendSoundTrigger(Sounds.BELL_TING); - // handle the response data - private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) - { - Console.WriteLine("{0} played the sound {1} at volume {2}", - e.OwnerID, e.SoundID, e.Gain); - } - + + - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The ID of the objects parent - The volume level - The regionhandle - The source position + + - - Simulator where the event originated + + - - Get the sound asset id + + - - Get the ID of the owner + + - - Get the ID of the Object + + - - Get the ID of the objects parent + + - - Get the volume level + + - - Get the regionhandle + + - - Get the source position + + - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - + + - - - Construct a new instance of the PreloadSoundEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object + + - - Simulator where the event originated + + - - Get the sound asset id + + - - Get the ID of the owner + + + + + + + + - - Get the ID of the Object + + - - - pre-defined built in sounds - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - coins + + - - cash register bell + + - - - + + - - - + + - - rubber + + - - plastic + + - - flesh + + - - wood splintering? + + - - glass break + + - - metal clunk + + - - whoosh + + - - shake + + - - - + + - - ding + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - A dictionary containing all pre-defined sounds - - A dictionary containing the pre-defined sounds, - where the key is the sounds ID, and the value is a string - containing a name to identify the purpose of the sound + + - - X position of this patch + + - - Y position of this patch + + - - A 16x16 array of floats holding decompressed layer data + + - - - Creates a LayerData packet for compressed land data given a full - simulator heightmap and an array of indices of patches to compress - - A 256 * 256 array of floating point values - specifying the height at each meter in the simulator - Array of indexes in the 16x16 grid of patches - for this simulator. For example if 1 and 17 are specified, patches - x=1,y=0 and x=1,y=1 are sent - - + + - - - Add a patch of terrain to a BitPacker - - BitPacker to write the patch to - Heightmap of the simulator, must be a 256 * - 256 float array - X offset of the patch to create, valid values are - from 0 to 15 - Y offset of the patch to create, valid values are - from 0 to 15 + + - - - Default constructor - - - + + - - The event subscribers. null if no subcribers + + - - Thread sync lock object + + - - Raised when the simulator responds sends + + - - Raises the LandPatchReceived event - A LandPatchReceivedEventArgs object containing the - data returned from the simulator + + - - Simulator from that sent tha data + + - - Sim coordinate of the patch + + - - Sim coordinate of the patch + + - - Size of tha patch + + - - Heightmap for the patch + + - - - The current status of a texture request as it moves through the pipeline or final result of a texture request. - + + - - The initial state given to a request. Requests in this state - are waiting for an available slot in the pipeline + + - - A request that has been added to the pipeline and the request packet - has been sent to the simulator + + - - A request that has received one or more packets back from the simulator + + - - A request that has received all packets back from the simulator + + - - A request that has taken longer than - to download OR the initial packet containing the packet information was never received + + - - The texture request was aborted by request of the agent + + - - The simulator replied to the request that it was not able to find the requested texture + + - - - Texture request download handler, allows a configurable number of download slots which manage multiple - concurrent texture downloads from the - This class makes full use of the internal - system for full texture downloads. + + - - - Default constructor, Instantiates a new copy of the TexturePipeline class - - Reference to the instantiated object + + - - - A request task containing information and status of a request as it is processed through the + + - - The current which identifies the current status of the request + + - - The Unique Request ID, This is also the Asset ID of the texture being requested + + - - The slot this request is occupying in the threadpoolSlots array + + - - The ImageType of the request. + + - - The callback to fire when the request is complete, will include - the and the - object containing the result data + + - - If true, indicates the callback will be fired whenever new data is returned from the simulator. - This is used to progressively render textures as portions of the texture are received. + + - - An object that maintains the data of an request thats in-process. + + - - A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID - and also the Asset Texture ID, and the value is an object containing the current state of the request and also - the asset data as it is being re-assembled + + - - Holds the reference to the client object + + - - Maximum concurrent texture requests allowed at a time + + - - An array of objects used to manage worker request threads + + - - An array of worker slots which shows the availablity status of the slot + + - - The primary thread which manages the requests. + + - - true if the TexturePipeline is currently running + + - - A synchronization object used by the primary thread + + - - A refresh timer used to increase the priority of stalled requests + + - - Current number of pending and in-process transfers + + - - - Initialize callbacks required for the TexturePipeline to operate - + + - - - Shutdown the TexturePipeline and cleanup any callbacks or transfers - + + - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request + + - - - Sends the actual request packet to the simulator - - The image to download - Type of the image to download, either a baked - avatar texture or a normal texture - Priority level of the download. Default is - 1,013,000.0f - Number of quality layers to discard. - This controls the end marker of the data sent - Packet number to start the download at. - This controls the start marker of the data sent - Sending a priority of 0 and a discardlevel of -1 aborts - download + + - - - Cancel a pending or in process texture request - - The texture assets unique ID + + - - - Master Download Thread, Queues up downloads in the threadpool - + + - - - The worker thread that sends the request and handles timeouts - - A object containing the request details + + - - - Handle responses from the simulator that tell us a texture we have requested is unable to be located - or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use - - The sender - The EventArgs object containing the packet data + + - - - Handles the remaining Image data that did not fit in the initial ImageData packet - - The sender - The EventArgs object containing the packet data + + - - - Handle the initial ImageDataPacket sent from the simulator - - The sender - The EventArgs object containing the packet data + + - - - + + - - - Delegate to wrap another delegate and its arguments - - - - - + + - - - An instance of DelegateWrapper which calls InvokeWrappedDelegate, - which in turn calls the DynamicInvoke method of the wrapped - delegate - + + - - - Callback used to call EndInvoke on the asynchronously - invoked DelegateWrapper - + + - - - Executes the specified delegate with the specified arguments - asynchronously on a thread pool thread - - - - - + + - - - Invokes the wrapped delegate synchronously - - - - - + + - - - Calls EndInvoke on the wrapper and Close on the resulting WaitHandle - to prevent resource leaks - - - + + - - - + + - - - Initialize the UDP packet handler in server mode - - Port to listening for incoming UDP packets on + + - - - Initialize the UDP packet handler in client mode - - Remote UDP server to connect to + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - Thrown when a packet could not be successfully deserialized - + + - - - Default constructor - + + - - - Constructor that takes an additional error message - - An error message to attach to this exception + + - - - The header of a message template packet. Holds packet flags, sequence - number, packet ID, and any ACKs that will be appended at the end of - the packet - + + - - - Convert the AckList to a byte array, used for packet serializing - - Reference to the target byte array - Beginning position to start writing to in the byte - array, will be updated with the ending position of the ACK list + + - - - - - - - - - - - + + - - - - - - - - - + + - - - A block of data in a packet. Packets are composed of one or more blocks, - each block containing one or more fields - + + - - Current length of the data in this packet + + - - - Create a block from a byte array - - Byte array containing the serialized block - Starting position of the block in the byte array. - This will point to the data after the end of the block when the - call returns + + - - - Serialize this block into a byte array - - Byte array to serialize this block into - Starting position in the byte array to serialize to. - This will point to the position directly after the end of the - serialized block when the call returns + + - - A generic value, not an actual packet type + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + - - + + The avatar has no rights - - + + The avatar can see the online status of the target avatar - - + + The avatar can see the location of the target avatar on the map - - + + The avatar can modify the ojects of the target avatar - - + + + This class holds information about an avatar in the friends list. There are two ways + to interface to this class. The first is through the set of boolean properties. This is the typical + way clients of this class will use it. The second interface is through two bitflag properties, + TheirFriendsRights and MyFriendsRights + - - + + + Used internally when building the initial list of friends at login time + + System ID of the avatar being prepesented + Rights the friend has to see you online and to modify your objects + Rights you have to see your friend online and to modify their objects - - + + + FriendInfo represented as a string + + A string reprentation of both my rights and my friends rights - - + + + System ID of the avatar + - - + + + full name of the avatar + - - + + + True if the avatar is online + - - + + + True if the friend can see if I am online + - - + + + True if the friend can see me on the map + - - + + + True if the freind can modify my objects + - - + + + True if I can see if my friend is online + - - + + + True if I can see if my friend is on the map + - - + + + True if I can modify my friend's objects + - - + + + My friend's rights represented as bitmapped flags + - - + + + My rights represented as bitmapped flags + - - + + + This class is used to add and remove avatars from your friends list and to manage their permission. + - - + + The event subscribers. null if no subcribers - - + + Raises the FriendOnline event + A FriendInfoEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Raises the FriendOffline event + A FriendInfoEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Raises the FriendRightsUpdate event + A FriendInfoEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Raises the FriendNames event + A FriendNamesEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Raises the FriendshipOffered event + A FriendshipOfferedEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Raises the FriendshipResponse event + A FriendshipResponseEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Raises the FriendshipTerminated event + A FriendshipTerminatedEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + The event subscribers. null if no subcribers - - + + Raises the FriendFoundReply event + A FriendFoundReplyEventArgs object containing the + data returned from the data server - - + + Thread sync lock object - - + + + A dictionary of key/value pairs containing known friends of this avatar. + + The Key is the of the friend, the value is a + object that contains detailed information including permissions you have and have given to the friend + - - + + + A Dictionary of key/value pairs containing current pending frienship offers. + + The key is the of the avatar making the request, + the value is the of the request which is used to accept + or decline the friendship offer + - - + + + Internal constructor + + A reference to the GridClient Object - - + + + Accept a friendship request + + agentID of avatatar to form friendship with + imSessionID of the friendship request message - - + + + Decline a friendship request + + of friend + imSessionID of the friendship request message - - + + + Overload: Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to - - + + + Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + A message to send with the request - - + + + Terminate a friendship with an avatar + + System ID of the avatar you are terminating the friendship with - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + + Change the rights of a friend avatar. + + the of the friend + the new rights to give the friend + This method will implicitly set the rights to those passed in the rights parameter. - - + + + Use to map a friends location on the grid. + + Friends UUID to find + - - + + + Use to track a friends movement on the grid + + Friends Key - - + + + Ask for a notification of friend's online status + + Friend's UUID - - + + + This handles the asynchronous response of a RequestAvatarNames call. + + + names cooresponding to the the list of IDs sent the the RequestAvatarNames call. - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - + + + Populate FriendList with data from the login reply + + true if login was successful + true if login request is requiring a redirect + A string containing the response to the login request + A string containing the reason for the request + A object containing the decoded + reply from the login server - - + + Raised when the simulator sends notification one of the members in our friends list comes online - - + + Raised when the simulator sends notification one of the members in our friends list goes offline - - + + Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions - - + + Raised when the simulator sends us the names on our friends list - - + + Raised when the simulator sends notification another agent is offering us friendship - - + + Raised when a request we sent to friend another agent is accepted or declined - - + + Raised when the simulator sends notification one of the members in our friends list has terminated + our friendship - - + + Raised when the simulator sends the location of a friend we have + requested map location info for - - + + Contains information on a member of our friends list - - + + + Construct a new instance of the FriendInfoEventArgs class + + The FriendInfo - - + + Get the FriendInfo - - + + Contains Friend Names - - + + + Construct a new instance of the FriendNamesEventArgs class + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name - - + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name - - + + Sent when another agent requests a friendship with our agent - - + + + Construct a new instance of the FriendshipOfferedEventArgs class + + The ID of the agent requesting friendship + The name of the agent requesting friendship + The ID of the session, used in accepting or declining the + friendship offer - - + + Get the ID of the agent requesting friendship - - + + Get the name of the agent requesting friendship - - + + Get the ID of the session, used in accepting or declining the + friendship offer - - + + A response containing the results of our request to form a friendship with another agent - - + + + Construct a new instance of the FriendShipResponseEventArgs class + + The ID of the agent we requested a friendship with + The name of the agent we requested a friendship with + true if the agent accepted our friendship offer - - + + Get the ID of the agent we requested a friendship with - - + + Get the name of the agent we requested a friendship with - - + + true if the agent accepted our friendship offer - - + + Contains data sent when a friend terminates a friendship with us - - + + + Construct a new instance of the FrindshipTerminatedEventArgs class + + The ID of the friend who terminated the friendship with us + The name of the friend who terminated the friendship with us - - + + Get the ID of the agent that terminated the friendship with us - - + + Get the name of the agent that terminated the friendship with us - - + + + Data sent in response to a request which contains the information to allow us to map the friends location + - - + + + Construct a new instance of the FriendFoundReplyEventArgs class + + The ID of the agent we have requested location information for + The region handle where our friend is located + The simulator local position our friend is located - - + + Get the ID of the agent we have received location information for - - + + Get the region handle where our mapped friend is located - - + + Get the simulator local position where our friend is located - - + + + + + Looking direction, must be a normalized vector + Up direction, must be a normalized vector - - + + + Align the coordinate frame X and Y axis with a given rotation + around the Z axis in radians + + Absolute rotation around the Z axis in + radians - - + + Origin position of this coordinate frame - - + + X axis of this coordinate frame, or Forward/At in grid terms - - + + Y axis of this coordinate frame, or Left in grid terms - - + + Z axis of this coordinate frame, or Up in grid terms - - + + + Throttles the network traffic for various different traffic types. + Access this class through GridClient.Throttle + - - + + + Default constructor, uses a default high total of 1500 KBps (1536000) + - - + + + Constructor that decodes an existing AgentThrottle packet in to + individual values + + Reference to the throttle data in an AgentThrottle + packet + Offset position to start reading at in the + throttle data + This is generally not needed in clients as the server will + never send a throttle packet to the client - - + + + Send an AgentThrottle packet to the current server using the + current values + - - + + + Send an AgentThrottle packet to the specified server using the + current values + - - + + + Convert the current throttle values to a byte array that can be put + in an AgentThrottle packet + + Byte array containing all the throttle values - - + + Maximum bits per second for resending unacknowledged packets - - + + Maximum bits per second for LayerData terrain - - + + Maximum bits per second for LayerData wind data - - + + Maximum bits per second for LayerData clouds - - + + Unknown, includes object data - - + + Maximum bits per second for textures - - + + Maximum bits per second for downloaded assets - - + + Maximum bits per second the entire connection, divided up + between invidiual streams using default multipliers - - + + + Permission request flags, asked when a script wants to control an Avatar + - - + + Placeholder for empty values, shouldn't ever see this - - + + Script wants ability to take money from you - - + + Script wants to take camera controls for you - - + + Script wants to remap avatars controls - - + + Script wants to trigger avatar animations + This function is not implemented on the grid - - + + Script wants to attach or detach the prim or primset to your avatar - - + + Script wants permission to release ownership + This function is not implemented on the grid + The concept of "public" objects does not exist anymore. - - + + Script wants ability to link/delink with other prims - - + + Script wants permission to change joints + This function is not implemented on the grid - - + + Script wants permissions to change permissions + This function is not implemented on the grid - - + + Script wants to track avatars camera position and rotation - - + + Script wants to control your camera - - + + + Special commands used in Instant Messages + - - + + Indicates a regular IM from another agent - - + + Simple notification box with an OK button - - + + You've been invited to join a group. - - + + Inventory offer - - + + Accepted inventory offer - - + + Declined inventory offer - - + + Group vote - - + + An object is offering its inventory - - + + Accept an inventory offer from an object - - + + Decline an inventory offer from an object - - + + Unknown - - + + Start a session, or add users to a session - - + + Start a session, but don't prune offline users - - + + Start a session with your group - - + + Start a session without a calling card (finder or objects) - - + + Send a message to a session - - + + Leave a session - - + + Indicates that the IM is from an object - - + + Sent an IM to a busy user, this is the auto response - - + + Shows the message in the console and chat history - - + + Send a teleport lure - - + + Response sent to the agent which inititiated a teleport invitation - - + + Response sent to the agent which inititiated a teleport invitation - - + + Only useful if you have Linden permissions - - + + A placeholder type for future expansion, currently not + used - - + + IM to tell the user to go to an URL - - + + IM for help - - + + IM sent automatically on call for help, sends a lure + to each Helper reached - - + + Like an IM but won't go to email - - + + IM from a group officer to all group members - - + + Unknown - - + + Unknown - - + + Accept a group invitation - - + + Decline a group invitation - - + + Unknown - - + + An avatar is offering you friendship - - + + An avatar has accepted your friendship offer - - + + An avatar has declined your friendship offer - - + + Indicates that a user has started typing - - + + Indicates that a user has stopped typing - - + + + Flag in Instant Messages, whether the IM should be delivered to + offline avatars as well + - - + + Only deliver to online avatars - - + + If the avatar is offline the message will be held until + they login next, and possibly forwarded to their e-mail account - - + + + Conversion type to denote Chat Packet types in an easier-to-understand format + - - + + Whisper (5m radius) - - + + Normal chat (10/20m radius), what the official viewer typically sends - - + + Shouting! (100m radius) - - + + Event message when an Avatar has begun to type - - + + Event message when an Avatar has stopped typing - - + + Send the message to the debug channel - - + + Event message when an object uses llOwnerSay - - + + Special value to support llRegionSay, never sent to the client - - + + + Identifies the source of a chat message + - - + + Chat from the grid or simulator - - + + Chat from another avatar - - + + Chat from an object - - + + + + - - + + - - + + - - + + - - + + + Effect type used in ViewerEffect packets + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + Project a beam from a source to a destination, such as + the one used when editing an object - - + + - - + + - - + + - - + + Create a swirl of particles around an object - - + + - - + + - - + + Cause an avatar to look at an object - - + + Cause an avatar to point at an object - - + + + The action an avatar is doing when looking at something, used in + ViewerEffect packets for the LookAt effect + - - + + - - + + - - + + - - + + - - + + - - + + - - + + Deprecated - - + + - - + + - - + + - - + + - - + + + The action an avatar is doing when pointing at something, used in + ViewerEffect packets for the PointAt effect + - - + + - - + + - - + + - - + + - - + + + Money transaction types + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + Flags sent when a script takes or releases a control + + NOTE: (need to verify) These might be a subset of the ControlFlags enum in Movement, - - + + No Flags set - - + + Forward (W or up Arrow) - - + + Back (S or down arrow) - - + + Move left (shift+A or left arrow) - - + + Move right (shift+D or right arrow) - - + + Up (E or PgUp) - - + + Down (C or PgDown) - - + + Rotate left (A or left arrow) - - + + Rotate right (D or right arrow) - - + + Left Mouse Button - - + + Left Mouse button in MouseLook - - + + + Currently only used to hide your group title + - - + + No flags set - - + + Hide your group title - - + + + Action state of the avatar, which can currently be typing and + editing + - - + + - - + + - - + + - - + + + Current teleport status + - - + + Unknown status - - + + Teleport initialized - - + + Teleport in progress - - + + Teleport failed - - + + Teleport completed - - + + Teleport cancelled - - + + + + - - + + No flags set, or teleport failed - - + + Set when newbie leaves help island for first time - - + + - - + + Via Lure - - + + Via Landmark - - + + Via Location - - + + Via Home - - + + Via Telehub - - + + Via Login - - + + Linden Summoned - - + + Linden Forced me - - + + - - + + Agent Teleported Home via Script - - + + - - + + - - + + - - + + forced to new location for example when avatar is banned or ejected - - + + Teleport Finished via a Lure - - + + Finished, Sim Changed - - + + Finished, Same Sim - - + + + + - - + + - - + + - - + + - - + + + + - - + + - - + + - - + + - - + + - - + + + Instant Message + - - + + Key of sender - - + + Name of sender - - + + Key of destination avatar - - + + ID of originating estate - - + + Key of originating region - - + + Coordinates in originating region - - + + Instant message type - - + + Group IM session toggle - - + + Key of IM session, for Group Messages, the groups UUID - - + + Timestamp of the instant message - - + + Instant message text - - + + Whether this message is held for offline avatars - - + + Context specific packed data - - + + Print the struct data as a string + A string containing the field name, and field value - + - Operation to apply when applying color to texture + - + - Information needed to translate visual param value to RGBA color + Construct a new instance of the ChatEventArgs object + Sim from which the message originates + The message sent + The audible level of the message + The type of message sent: whisper, shout, etc + The source type of the message sender + The name of the agent or object sending the message + The ID of the agent or object sending the message + The ID of the object owner, or the agent ID sending the message + The position of the agent or object sending the message - - - Construct VisualColorParam - - Operation to apply when applying color to texture - Colors + + Get the simulator sending the message - - - Represents alpha blending and bump infor for a visual parameter - such as sleive length - + + Get the message sent - - - Create new alhpa information for a visual param - - Stregth of the alpha to apply - File containing the alpha channel - Skip blending if parameter value is 0 - Use miltiply insted of alpha blending + + Get the audible level of the message - - Stregth of the alpha to apply + + Get the type of message sent: whisper, shout, etc + + + Get the source type of the message sender + + + Get the name of the agent or object sending the message + + + Get the ID of the agent or object sending the message - - File containing the alpha channel + + Get the ID of the object owner, or the agent ID sending the message - - Skip blending if parameter value is 0 + + Get the position of the agent or object sending the message - - Use miltiply insted of alpha blending + + Contains the data sent when a primitive opens a dialog with this agent - + - A single visual characteristic of an avatar mesh, such as eyebrow height + Construct a new instance of the ScriptDialogEventArgs + The dialog message + The name of the object that sent the dialog request + The ID of the image to be displayed + The ID of the primitive sending the dialog + The first name of the senders owner + The last name of the senders owner + The communication channel the dialog was sent on + The string labels containing the options presented in this dialog - - - Set all the values through the constructor - - Index of this visual param - Internal name - - - - - Displayable label of this characteristic - Displayable label for the minimum value of this characteristic - Displayable label for the maximum value of this characteristic - Default value - Minimum value - Maximum value - Is this param used for creation of bump layer? - Array of param IDs that are drivers for this parameter - Alpha blending/bump info - Color information + + Get the dialog message - - Index of this visual param + + Get the name of the object that sent the dialog request - - Internal name + + Get the ID of the image to be displayed - - Group ID this parameter belongs to + + Get the ID of the primitive sending the dialog - - Name of the wearable this parameter belongs to + + Get the first name of the senders owner - - Displayable label of this characteristic + + Get the last name of the senders owner - - Displayable label for the minimum value of this characteristic + + Get the communication channel the dialog was sent on, responses + should also send responses on this same channel - - Displayable label for the maximum value of this characteristic + + Get the string labels containing the options presented in this dialog - - Default value + + Contains the data sent when a primitive requests debit or other permissions + requesting a YES or NO answer - - Minimum value + + + Construct a new instance of the ScriptQuestionEventArgs + + The simulator containing the object sending the request + The ID of the script making the request + The ID of the primitive containing the script making the request + The name of the primitive making the request + The name of the owner of the object making the request + The permissions being requested - - Maximum value + + Get the simulator containing the object sending the request - - Is this param used for creation of bump layer? + + Get the ID of the script making the request - - Alpha blending/bump info + + Get the ID of the primitive containing the script making the request - - Color information + + Get the name of the primitive making the request - - Array of param IDs that are drivers for this parameter + + Get the name of the owner of the object making the request - - - Holds the Params array of all the avatar appearance parameters - + + Get the permissions being requested - - - Base class for all Asset types - + + Contains the data sent when a primitive sends a request + to an agent to open the specified URL - + - Construct a new Asset object + Construct a new instance of the LoadUrlEventArgs + The name of the object sending the request + The ID of the object sending the request + The ID of the owner of the object sending the request + True if the object is owned by a group + The message sent with the request + The URL the object sent - - - Construct a new Asset object - - A unique specific to this asset - A byte array containing the raw asset data + + Get the name of the object sending the request - - A byte array containing the raw asset data + + Get the ID of the object sending the request - - True if the asset it only stored on the server temporarily + + Get the ID of the owner of the object sending the request - - A unique ID + + True if the object is owned by a group - - The assets unique ID + + Get the message sent with the request - - - The "type" of asset, Notecard, Animation, etc - + + Get the URL the object sent - - - Regenerates the AssetData byte array from the properties - of the derived class. - + + The date received from an ImprovedInstantMessage - + - Decodes the AssetData, placing it in appropriate properties of the derived - class. + Construct a new instance of the InstantMessageEventArgs object - True if the asset decoding succeeded, otherwise false + the InstantMessage object + the simulator where the InstantMessage origniated - - - Constants for the archiving module - + + Get the InstantMessage object - - - The location of the archive control file - + + Get the simulator where the InstantMessage origniated - - - Path for the assets held in an archive - + + Contains the currency balance - + - Path for the prims file + Construct a new BalanceEventArgs object + The currenct balance - + - Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. + Get the currenct balance - + + Contains the transaction summary when an item is purchased, + money is given, or land is purchased + + - Path for region settings. + Construct a new instance of the MoneyBalanceReplyEventArgs object + The ID of the transaction + True of the transaction was successful + The current currency balance + The meters credited + The meters comitted + A brief description of the transaction - + + Get the ID of the transaction + + + True of the transaction was successful + + + Get the remaining currency balance + + + Get the meters credited + + + Get the meters comitted + + + Get the description of the transaction + + + Data sent from the simulator containing information about your agent and active group information + + - The character the separates the uuid from extension information in an archived asset filename + Construct a new instance of the AgentDataReplyEventArgs object + The agents first name + The agents last name + The agents active group ID + The group title of the agents active group + The combined group powers the agent has in the active group + The name of the group the agent has currently active + + + Get the agents first name + + + Get the agents last name + + + Get the active group ID of your agent - - - Extensions used for asset types in the archive - + + Get the active groups title of your agent - - - Archives assets - + + Get the combined group powers of your agent - - - Archive assets - + + Get the active group name of your agent - - - Archive the assets given to this archiver to the given archive. - - - + + Data sent by the simulator to indicate the active/changed animations + applied to your agent - + - Write an assets metadata file to the given archive + Construct a new instance of the AnimationsChangedEventArgs class - - + The dictionary that contains the changed animations - - - Write asset data files to the given archive - - - + + Get the dictionary that contains the changed animations - + - Temporary code to do the bare minimum required to read a tar archive for our purposes + Data sent from a simulator indicating a collision with your agent - + - Generate a tar reader which reads from the given stream. + Construct a new instance of the MeanCollisionEventArgs class - - + The type of collision that occurred + The ID of the agent or object that perpetrated the agression + The ID of the Victim + The strength of the collision + The Time the collision occurred - - - Binary reader for the underlying stream - + + Get the Type of collision - - - Used to trim off null chars - + + Get the ID of the agent or object that collided with your agent - - - Used to trim off space chars - + + Get the ID of the agent that was attacked - - - Read the next entry in the tar file. - - - - - - the data for the entry. Returns null if there are no more entries + + A value indicating the strength of the collision - - - Read the next 512 byte chunk of data as a tar header. - - A tar header struct. null if we have reached the end of the archive. + + Get the time the collision occurred - - - Read data following a header - - - - - + + Data sent to your agent when it crosses region boundaries - + - Convert octal bytes to a decimal representation + Construct a new instance of the RegionCrossedEventArgs class - - - - - - - - + The simulator your agent just left + The simulator your agent is now in - - - Temporary code to produce a tar archive in tar v7 format - + + Get the simulator your agent just left - - - Binary writer for the underlying stream - + + Get the simulator your agent is now in - - - Write a directory entry to the tar archive. We can only handle one path level right now! - - - + + Data sent from the simulator when your agent joins a group chat session - + - Write a file to the tar archive + Construct a new instance of the GroupChatJoinedEventArgs class - - - - + The ID of the session + The name of the session + A temporary session id used for establishing new sessions + True of your agent successfully joined the session - - - Write a file to the tar archive - - - - - + + Get the ID of the group chat session - - - Finish writing the raw tar archive data to a stream. The stream will be closed on completion. - + + Get the name of the session - - - Write a particular entry - - - - - - - + + Get the temporary session ID used for establishing new sessions - - - Represents an Animation - + + True if your agent successfully joined the session - - Default Constructor + + The session information when your agent exits a group chat session - + - Construct an Asset object of type Animation + Construct a new instance of the GroupChatLeftEventArgs class - A unique specific to this asset - A byte array containing the raw asset data + The ID of the session your agent left - - Override the base classes AssetType + + Get the ID of the session your agent left - + + Data sent by the simulator containing urgent messages + + - Represents an that represents an avatars body ie: Hair, Etc. + Construct a new instance of the AlertMessageEventArgs class + The alert message - - Initializes a new instance of an AssetBodyPart object - - - Initializes a new instance of an AssetBodyPart object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + Get the alert message - - Override the base classes AssetType + + Data sent by a script requesting to take or release specified controls to your agent - + - Represents an that can be worn on an avatar - such as a Shirt, Pants, etc. + Construct a new instance of the ScriptControlEventArgs class + The controls the script is attempting to take or release to the agent + True if the script is passing controls back to the agent + True if the script is requesting controls be released to the script - - Initializes a new instance of an AssetScriptBinary object + + Get the controls the script is attempting to take or release to the agent - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + True if the script is passing controls back to the agent - - Override the base classes AssetType + + True if the script is requesting controls be released to the script - + - Type of gesture step + Data sent from the simulator to an agent to indicate its view limits - + - Base class for gesture steps + Construct a new instance of the CameraConstraintEventArgs class + The collision plane - + + Get the collision plane + + - Retururns what kind of gesture step this is + Data containing script sensor requests which allow an agent to know the specific details + of a primitive sending script sensor requests - + - Describes animation step of a gesture + Construct a new instance of the ScriptSensorReplyEventArgs + The ID of the primitive sending the sensor + The ID of the group associated with the primitive + The name of the primitive sending the sensor + The ID of the primitive sending the sensor + The ID of the owner of the primitive sending the sensor + The position of the primitive sending the sensor + The range the primitive specified to scan + The rotation of the primitive sending the sensor + The type of sensor the primitive sent + The velocity of the primitive sending the sensor + + + Get the ID of the primitive sending the sensor + + + Get the ID of the group associated with the primitive + + + Get the name of the primitive sending the sensor + + + Get the ID of the primitive sending the sensor + + + Get the ID of the owner of the primitive sending the sensor + + + Get the position of the primitive sending the sensor - - - If true, this step represents start of animation, otherwise animation stop - + + Get the range the primitive specified to scan - - - Animation asset + + Get the rotation of the primitive sending the sensor - - - Animation inventory name - + + Get the type of sensor the primitive sent - - - Returns what kind of gesture step this is - + + Get the velocity of the primitive sending the sensor - - - Describes sound step of a gesture - + + Contains the response data returned from the simulator in response to a - - - Sound asset + + Construct a new instance of the AvatarSitResponseEventArgs object - - - Sound inventory name - + + Get the ID of the primitive the agent will be sitting on - - - Returns what kind of gesture step this is - + + True if the simulator Autopilot functions were involved - - - Describes sound step of a gesture - + + Get the camera offset of the agent when seated - - - Text to output in chat - + + Get the camera eye offset of the agent when seated - - - Returns what kind of gesture step this is - + + True of the agent will be in mouselook mode when seated - - - Describes sound step of a gesture - + + Get the position of the agent when seated - - - If true in this step we wait for all animations to finish - + + Get the rotation of the agent when seated - - - If true gesture player should wait for the specified amount of time - + + Data sent when an agent joins a chat session your agent is currently participating in - + - Time in seconds to wait if WaitForAnimation is false + Construct a new instance of the ChatSessionMemberAddedEventArgs object + The ID of the chat session + The ID of the agent joining - - - Returns what kind of gesture step this is - + + Get the ID of the chat session - - - Describes the final step of a gesture - + + Get the ID of the agent that joined - - - Returns what kind of gesture step this is - + + Data sent when an agent exits a chat session your agent is currently participating in - + - Represents a sequence of animations, sounds, and chat actions + Construct a new instance of the ChatSessionMemberLeftEventArgs object + The ID of the chat session + The ID of the Agent that left - - - Constructs guesture asset - + + Get the ID of the chat session - - - Constructs guesture asset - - A unique specific to this asset - A byte array containing the raw asset data + + Get the ID of the agent that left - + - Keyboard key that triggers the gestyre + Identifier code for primitive types - - - Modifier to the trigger key - + + None - - - String that triggers playing of the gesture sequence - + + A Primitive - - - Text that replaces trigger in chat once gesture is triggered - + + A Avatar - - - Sequence of gesture steps - + + Linden grass - - - Returns asset type - + + Linden tree - - - Encodes gesture asset suitable for uplaod - + + A primitive that acts as the source for a particle stream - - - Decodes gesture assset into play sequence - - true if the asset data was decoded successfully + + A Linden tree - + - Represents a Landmark with RegionID and Position vector + Primary parameters for primitives such as Physics Enabled or Phantom - - Construct an Asset of type Landmark + + Deprecated - - - Construct an Asset object of type Landmark - - A unique specific to this asset - A byte array containing the raw asset data + + Whether physics are enabled for this object - - UUID of the Landmark target region + + - - Local position of the target + + - - Override the base classes AssetType + + - - - Encode the raw contents of a string with the specific Landmark format - + + - - - Decode the raw asset data, populating the RegionID and Position - - true if the AssetData was successfully decoded to a UUID and Vector + + - - - Represents a string of characters encoded with specific formatting properties - + + - - Construct an Asset of type Notecard + + Whether this object contains an active touch script - - - Construct an Asset object of type Notecard - - A unique specific to this asset - A byte array containing the raw asset data + + - - A text string containing main text of the notecard + + Whether this object can receive payments - - List of s embedded on the notecard + + Whether this object is phantom (no collisions) - - Override the base classes AssetType + + - - - Encode the raw contents of a string with the specific Linden Text properties - + + - - - Decode the raw asset data including the Linden Text properties - - true if the AssetData was successfully decoded + + - - - A linkset asset, containing a parent primitive and zero or more children - + + - - Initializes a new instance of an AssetPrim object + + Deprecated - - - Initializes a new instance of an AssetPrim object - - A unique specific to this asset - A byte array containing the raw asset data + + - - - Only used internally for XML serialization/deserialization - + + - - Override the base classes AssetType + + - - - + + Deprecated - - - - - + + - - - The deserialized form of a single primitive in a linkset asset - + + - - - Represents an AssetScriptBinary object containing the - LSO compiled bytecode of an LSL script - + + - - Initializes a new instance of an AssetScriptBinary object + + - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + Server flag, will not be sent to clients. Specifies that + the object is destroyed when it touches a simulator edge - - Override the base classes AssetType + + Server flag, will not be sent to clients. Specifies that + the object will be returned to the owner's inventory when it + touches a simulator edge - - - TODO: Encodes a scripts contents into a LSO Bytecode file - + + Server flag, will not be sent to clients. - - - TODO: Decode LSO Bytecode into a string - - true + + Server flag, will not be sent to client. Specifies that + the object is hovering/flying - - - Represents an LSL Text object containing a string of UTF encoded characters - + + - - Initializes a new AssetScriptText object + + + + + - + + + + - Initializes a new AssetScriptText object with parameters + Sound flags for sounds attached to primitives - A unique specific to this asset - A byte array containing the raw asset data - - A string of characters represting the script contents + + - - Override the base classes AssetType + + - - - Encode a string containing the scripts contents into byte encoded AssetData - + + - - - Decode a byte array containing the scripts contents into a string - - true if decoding is successful + + - + + + + + + + + + + - Represents a Sound Asset + Material type for a primitive - - Initializes a new instance of an AssetSound object + + - - Initializes a new instance of an AssetSound object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + - - Override the base classes AssetType + + - - - TODO: Encodes a sound file - + + - - - TODO: Decode a sound file - - true + + - - - Represents a texture - + + - - Initializes a new instance of an AssetTexture object + + - + + + + - Initializes a new instance of an AssetTexture object + Used in a helper function to roughly determine prim shape - A unique specific to this asset - A byte array containing the raw asset data - + - Initializes a new instance of an AssetTexture object + Extra parameters for primitives, these flags are for features that have + been added after the original ObjectFlags that has all eight bits + reserved already - A object containing texture data - - A object containing image data + + Whether this object has flexible parameters - - - + + Whether this object has light parameters - + + Whether this object is a sculpted prim + + + - - Override the base classes AssetType + + - - - Populates the byte array with a JPEG2000 - encoded image created from the data in + + - - - Decodes the JPEG2000 data in AssetData to the - object - True if the decoding was successful, otherwise false + + - + - Decodes the begin and end byte positions for each quality layer in - the image + - - - - - Represents a Wearable Asset, Clothing, Hair, Skin, Etc - + + - - Initializes a new instance of an AssetWearable object + + - - Initializes a new instance of an AssetWearable object with parameters - A unique specific to this asset - A byte array containing the raw asset data + + - - A string containing the name of the asset + + - - A string containing a short description of the asset + + - - The Assets WearableType + + - - The For-Sale status of the object + + - - An Integer representing the purchase price of the asset + + + + - - The of the assets creator + + - - The of the assets current owner + + - - The of the assets prior owner + + - - The of the Group this asset is set to + + - - True if the asset is owned by a + + - - The Permissions mask of the asset + + - - A Dictionary containing Key/Value pairs of the objects parameters + + - - A Dictionary containing Key/Value pairs where the Key is the textures Index and the Value is the Textures + + - - - Decode an assets byte encoded data to a string - - true if the asset data was decoded successfully + + - + - Encode the assets string represantion into a format consumable by the asset server + - - = + + - - Number of times we've received an unknown CAPS exception in series. + + - - For exponential backoff on error. + + - - - A set of textures that are layered on texture of each other and "baked" - in to a single texture, for avatar appearances - + + - - - Default constructor - - Bake type + + - - Final baked texture + + - - Component layers + + - - Width of the final baked image and scratchpad + + + Attachment points for objects on avatar bodies + + + Both InventoryObject and InventoryAttachment types can be attached + - - Height of the final baked image and scratchpad + + Right hand if object was not previously attached - - Bake type + + Chest - - Final baked texture + + Skull - - Component layers + + Left shoulder - - Width of the final baked image and scratchpad + + Right shoulder - - Height of the final baked image and scratchpad + + Left hand - - Bake type + + Right hand - - Is this one of the 3 skin bakes + + Left foot - - - Adds layer for baking - - TexturaData struct that contains texture and its params + + Right foot - - - Converts avatar texture index (face) to Bake type - - Face number (AvatarTextureIndex) - BakeType, layer to which this texture belongs to + + Spine - - - Make sure images exist, resize source if needed to match the destination - - Destination image - Source image - Sanitization was succefull + + Pelvis - - - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Color of the base of this layer + + Mouth - - - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Red value - Green value - Blue value + + Chin - - - Create a new blank image - - width - height - channel flags + + Left ear - - - - - + + Right ear - - - Image width - + + Left eyeball - - - Image height - + + Right eyeball - - - Image channel flags - + + Nose - - - Red channel data - + + Right upper arm - - - Green channel data - + + Right forearm - - - Blue channel data - + + Left upper arm - - - Alpha channel data - + + Left forearm - - - Bump channel data - + + Right hip - - - Convert the channels in the image. Channels are created or destroyed as required. - - new channel flags + + Right upper leg - - - Resize or stretch the image using nearest neighbor (ugly) resampling - - new width - new height + + Right lower leg - - - Create a byte array containing 32-bit RGBA data with a bottom-left - origin, suitable for feeding directly into OpenGL - - A byte array containing raw texture data + + Left hip - - - A Wrapper around openjpeg to encode and decode images to and from byte arrays - + + Left upper leg - - - Defines the beginning and ending file positions of a layer in an - LRCP-progression JPEG2000 file - + + Left lower leg - - - This structure is used to marshal both encoded and decoded images. - MUST MATCH THE STRUCT IN dotnet.h! - + + Stomach + + + Left pectoral + + + Right pectoral + + + HUD Center position 2 + + + HUD Top-right + + + HUD Top + + + HUD Top-left + + + HUD Center + + + HUD Bottom-left - + + HUD Bottom + + + HUD Bottom-right + + - Information about a single packet in a JPEG2000 stream + Tree foliage types - - Packet start position + + Pine1 tree - - Packet header end position + + Oak tree - - Packet end position + + Tropical Bush1 - - TGA Header size + + Palm1 tree - - OpenJPEG is not threadsafe, so this object is used to lock - during calls into unmanaged code + + Dogwood tree - - - Encode a object into a byte array - - The object to encode - true to enable lossless conversion, only useful for small images ie: sculptmaps - A byte array containing the encoded Image object + + Tropical Bush2 - - - Encode a object into a byte array - - The object to encode - a byte array of the encoded image + + Palm2 tree - - - Decode JPEG2000 data to an and - - JPEG2000 encoded data - ManagedImage object to decode to - Image object to decode to - True if the decode succeeds, otherwise false + + Cypress1 tree - - - - - - - - - + + Cypress2 tree - - - - - - - - - - - + + Pine2 tree - - - Encode a object into a byte array - - The source object to encode - true to enable lossless decoding - A byte array containing the source Bitmap object + + Plumeria - - - Capability to load TGAs to Bitmap - + + Winter pinetree1 - - - Interface requirements for Messaging system - + + Winter Aspen tree - - - Abstract base for rendering plugins - + + Winter pinetree2 - - - Generates a basic mesh structure from a primitive - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh + + Eucalyptus tree - - - Generates a basic mesh structure from a sculpted primitive and - texture - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh + + Fern - - - Generates a series of faces, each face containing a mesh and - metadata - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh + + Eelgrass - - - Generates a series of faces for a sculpted prim, each face - containing a mesh and metadata - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh + + Sea Sword - - - Apply texture coordinate modifications from a - to a list of vertices - - Vertex list to modify texture coordinates for - Center-point of the face - Face texture parameters + + Kelp1 plant - - - Sent to the client to indicate a teleport request has completed - + + Beach grass - - The of the agent + + Kelp2 plant - + + Grass foliage types - - The simulators handle the agent teleported to + + - - A Uri which contains a list of Capabilities the simulator supports + + - - Indicates the level of access required - to access the simulator, or the content rating, or the simulators - map status + + - - The IP Address of the simulator + + - - The UDP Port the simulator will listen for UDP traffic on + + - - Status flags indicating the state of the Agent upon arrival, Flying, etc. + + - + - Serialize the object + Action associated with clicking on an object - An containing the objects data - - - Deserialize the message - - An containing the data + + Touch object - + + Sit on object + + + Purchase object or contents + + + Pay the object + + + Open task inventory + + + Play parcel media + + + Open parcel media + + - Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. + A set of textures that are layered on texture of each other and "baked" + in to a single texture, for avatar appearances - + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + - Serialize the object + Default constructor - An containing the objects data + Bake type - + - Deserialize the message + Adds layer for baking - An containing the data + TexturaData struct that contains texture and its params - + - Serialize the object + Converts avatar texture index (face) to Bake type - An containing the objects data + Face number (AvatarTextureIndex) + BakeType, layer to which this texture belongs to - + - Deserialize the message + Make sure images exist, resize source if needed to match the destination - An containing the data + Destination image + Source image + Sanitization was succefull - + - Serialize the object + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color - An containing the objects data + Color of the base of this layer - + - Deserialize the message + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color - An containing the data + Red value + Green value + Blue value - + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Is this one of the 3 skin bakes + + + The event subscribers. null if no subcribers + + + Raises the LandPatchReceived event + A LandPatchReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + - A message sent to the client which indicates a teleport request has failed - and contains some information on why it failed + Default constructor + - + + Retrieve the terrain height at a given coordinate + The region that the point of interest is in + Sim X coordinate, valid range is from 0 to 255 + Sim Y coordinate, valid range is from 0 to 255 + The terrain height at the given point if the + lookup was successful, otherwise 0.0f + True if the lookup was successful, otherwise false - - A string key of the reason the teleport failed e.g. CouldntTPCloser - Which could be used to look up a value in a dictionary or enum + + Raised when the simulator responds sends - - The of the Agent + + Simulator from that sent tha data - - A string human readable message containing the reason - An example: Could not teleport closer to destination + + Sim coordinate of the patch - + + Sim coordinate of the patch + + + Size of tha patch + + + Heightmap for the patch + + - Serialize the object + The InternalDictionary class is used through the library for storing key/value pairs. + It is intended to be a replacement for the generic Dictionary class and should + be used in its place. It contains several methods for allowing access to the data from + outside the library that are read only and thread safe. + - An containing the objects data + Key + Value - + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + on this member + + - Deserialize the message + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. - An containing the data + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); + + - + - Serialize the object + Initializes a new instance of the Class + with the specified key/value, has its initial valies copied from the specified + - An containing the objects data + + to copy initial values from + + + // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. + // populates with copied values from example KeyNameCache Dictionary. + + // create source dictionary + Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); + KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); + KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); + + // Initialize new dictionary. + public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); + + - + - Deserialize the message + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. - An containing the data + Initial size of dictionary + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); + + - + - Contains a list of prim owner information for a specific parcel in a simulator + Try to get entry from with specified key - - A Simulator will always return at least 1 entry - If agent does not have proper permission the OwnerID will be UUID.Zero - If agent does not have proper permission OR there are no primitives on parcel - the DataBlocksExtended map will not be sent from the simulator - + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + - + - Prim ownership information for a specified owner on a single parcel + Finds the specified match. + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + - - The of the prim owner, - UUID.Zero if agent has no permission to view prim owner information + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + - - The total number of prims + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + - - True if the OwnerID is a + + Perform an on each entry in an + to perform + + + // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( + delegate(Primitive prim) + { + if (prim.Text != null) + { + Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", + prim.PropertiesFamily.Name, prim.ID, prim.Text); + } + }); + + - - True if the owner is online - This is no longer used by the LL Simulators + + Perform an on each key of an + to perform - - The date the most recent prim was rezzed + + + Perform an on each KeyValuePair of an + + to perform - - An Array of objects + + Check if Key exists in Dictionary + Key to check for + if found, otherwise - + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + - Serialize the object + Adds the specified key to the dictionary, dictionary locking is not performed, + - An containing the objects data + The key + The value - + - Deserialize the message + Removes the specified key, dictionary locking is not performed - An containing the data + The key. + if successful, otherwise - + - The details of a single parcel in a region, also contains some regionwide globals + Gets the number of Key/Value pairs contained in the - - Simulator-local ID of this parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Total parcel land area - - + + Indexer for the dictionary + The key + The value - - Key of authorized buyer - - - Bitmap describing land layout in 4x4m squares across the - entire region - - + + Avatar group management - - Date land was claimed - - - Appears to always be zero + + Key of Group Member - - Parcel Description + + Total land contribution - - - + + Online status information - - - + + Abilities that the Group Member has - - Total number of primitives owned by the parcel group on - this parcel + + Current group title - - Whether the land is deeded to a group or not + + Is a group owner - + + Role manager for a group - - Maximum number of primitives this parcel supports + + Key of the group - - The Asset UUID of the Texture which when applied to a - primitive will display the media + + Key of Role - - A URL which points to any Quicktime supported media type + + Name of Role - - A byte, if 0x1 viewer should auto scale media to fit object + + Group Title associated with Role - - URL For Music Stream + + Description of Role - - Parcel Name + + Abilities Associated with Role - - Autoreturn value in minutes for others' objects + + Returns the role's title + The role's title - + + Class to represent Group Title - - Total number of other primitives on this parcel - - - UUID of the owner of this parcel + + Key of the group - - Total number of primitives owned by the parcel owner on - this parcel + + ID of the role title belongs to - - - + + Group Title - - How long is pass valid for + + Whether title is Active - - Price for a temporary pass + + Returns group title - + + Represents a group on the grid - - - + + Key of Group - - - + + Key of Group Insignia - - - + + Key of Group Founder - - True if the region denies access to age unverified users + + Key of Group Role for Owners - - - + + Name of Group - - This field is no longer used + + Text of Group Charter - - The result of a request for parcel properties - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it + + Title of "everyone" role + + + Is the group open for enrolement to everyone + + + Will group show up in search - - - Number of primitives your avatar is currently - selecting and sitting on in this parcel - + + - - - + + - - - A number which increments by 1, starting at 0 for each ParcelProperties request. - Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. - a Negative number indicates the action in has occurred. - + + - - Maximum primitives across the entire simulator + + Is the group Mature - - Total primitives across the entire simulator + + Cost of group membership - - - + + - - Key of parcel snapshot + + - - Parcel ownership status + + The total number of current members this group has - - Total number of primitives on this parcel + + The number of roles this group has configured - - - + + Show this group in agent's profile - + + Returns the name of the group + A string containing the name of the group + + + A group Vote - - A description of the media + + Key of Avatar who created Vote - - An Integer which represents the height of the media + + Text of the Vote proposal - - An integer which represents the width of the media + + Total number of votes - - A boolean, if true the viewer should loop the media + + + A group proposal + - - A string which contains the mime type of the media + + The Text of the proposal - - true to obscure (hide) media url + + The minimum number of members that must vote before proposal passes or failes - - true to obscure (hide) music url + + The required ration of yes/no votes required for vote to pass + The three options are Simple Majority, 2/3 Majority, and Unanimous + TODO: this should be an enum - - - Serialize the object - - An containing the objects data + + The duration in days votes are accepted - + - Deserialize the message + - An containing the data - - - A message sent from the viewer to the simulator to updated a specific parcels settings - - - The of the agent authorized to purchase this - parcel of land or a NULL if the sale is authorized to anyone - - true to enable auto scaling of the parcel media + + - - The category of this parcel used when search is enabled to restrict - search results + + - - A string containing the description to set + + - - The of the which allows for additional - powers and restrictions. + + - - The which specifies how avatars which teleport - to this parcel are handled + + - - The LocalID of the parcel to update settings on + + - - A string containing the description of the media which can be played - to visitors + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - + + Struct representing a group notice - - - + + - - - + + - - - + + - - - + + - + - Deserialize the message + - An containing the data + - + - Serialize the object + Struct representing a group notice list entry - An containing the objects data - - - Base class used for the RemoteParcelRequest message - - - A message sent from the viewer to the simulator to request information - on a remote parcel - + + Notice ID - - Local sim position of the parcel we are looking up + + Creation timestamp of notice - - Region handle of the parcel we are looking up + + Agent name who created notice - - Region of the parcel we are looking up + + Notice subject - - - Serialize the object - - An containing the objects data + + Is there an attachment? - - - Deserialize the message - - An containing the data + + Attachment Type - + - A message sent from the simulator to the viewer in response to a - which will contain parcel information + Struct representing a member of a group chat session and their settings - - The grid-wide unique parcel ID + + The of the Avatar - - - Serialize the object - - An containing the objects data + + True if user has voice chat enabled - - - Deserialize the message - - An containing the data + + True of Avatar has moderator abilities - - - A message containing a request for a remote parcel from a viewer, or a response - from the simulator to that request - + + True if a moderator has muted this avatars chat - - The request or response details block + + True if a moderator has muted this avatars voice - + - Serialize the object + Role update flags - An containing the objects data - - - Deserialize the message - - An containing the data + + - - - Serialize the object - - An containing the objects data + + - - - Deserialize the message - - An containing the data + + - - - Serialize the object - - An containing the objects data + + - - - Deserialize the message - - An containing the data + + - - - A message sent from the simulator to an agent which contains - the groups the agent is in - + + - - Group Details specific to the agent + + - - true of the agent accepts group notices + + Can send invitations to groups default role - - The agents tier contribution to the group + + Can eject members from group - - The Groups + + Can toggle 'Open Enrollment' and change 'Signup fee' - - The of the groups insignia + + Member is visible in the public member list - - The name of the group + + Can create new roles - - The aggregate permissions the agent has in the group for all roles the agent - is assigned + + Can delete existing roles - - An optional block containing additional agent specific information + + Can change Role names, titles and descriptions - - true of the agent allows this group to be - listed in their profile + + Can assign other members to assigners role - - The Agent receiving the message + + Can assign other members to any role - - An array containing information - for each the agent is a member of + + Can remove members from roles - - An array containing information - for each the agent is a member of + + Can assign and remove abilities in roles - - - Serialize the object - - An containing the objects data + + Can change group Charter, Insignia, 'Publish on the web' and which + members are publicly visible in group member listings - - - Deserialize the message - - An containing the data + + Can buy land or deed land to group - - - A message sent from the viewer to the simulator which - specifies the language and permissions for others to detect - the language specified - + + Can abandon group owned land to Governor Linden on mainland, or Estate owner for + private estates - - A string containng the default language - to use for the agent + + Can set land for-sale information on group owned parcels - - true of others are allowed to - know the language setting + + Can subdivide and join parcels - - - Serialize the object - - An containing the objects data + + Can join group chat sessions - - - Deserialize the message - - An containing the data + + Can use voice chat in Group Chat sessions - - - An EventQueue message sent from the simulator to an agent when the agent - leaves a group - + + Can moderate group chat sessions - - An object containing the Agents UUID, and the Groups UUID + + Can toggle "Show in Find Places" and set search category - - The ID of the Agent leaving the group + + Can change parcel name, description, and 'Publish on web' settings - - The GroupID the Agent is leaving + + Can set the landing point and teleport routing on group land - - - An Array containing the AgentID and GroupID - + + Can change music and media settings - - - Serialize the object - - An containing the objects data + + Can toggle 'Edit Terrain' option in Land settings - - - Deserialize the message - - An containing the data + + Can toggle various About Land > Options settings - - Base class for Asset uploads/results via Capabilities + + Can always terraform land, even if parcel settings have it turned off - - - The request state - + + Can always fly while over group owned land - - - Serialize the object - - An containing the objects data + + Can always rez objects on group owned land - - - Deserialize the message - - An containing the data + + Can always create landmarks for group owned parcels - - - A message sent from the viewer to the simulator to request a temporary upload capability - which allows an asset to be uploaded - + + Can set home location on any group owned parcel - - The Capability URL sent by the simulator to upload the baked texture to + + Can modify public access settings for group owned parcels - - - A message sent from the simulator that will inform the agent the upload is complete, - and the UUID of the uploaded asset - + + Can manager parcel ban lists on group owned land - - The uploaded texture asset ID + + Can manage pass list sales information - - - A message sent from the viewer to the simulator to request a temporary - capability URI which is used to upload an agents baked appearance textures - + + Can eject and freeze other avatars on group owned land - - Object containing request or response + + Can return objects set to group - - - Serialize the object - - An containing the objects data + + Can return non-group owned/set objects - - - Deserialize the message - - An containing the data + + Can return group owned objects - - - A message sent from the simulator which indicates the minimum version required for - using voice chat - + + Can landscape using Linden plants - - Major Version Required + + Can deed objects to group - - Minor version required + + Can move group owned objects - - The name of the region sending the version requrements + + Can set group owned objects for-sale - - - Serialize the object - - An containing the objects data + + Pay group liabilities and receive group dividends + + + Can send group notices + + + Can receive group notices + + + Can create group proposals + + + Can vote on group proposals - + - Deserialize the message + Handles all network traffic related to reading and writing group + information - An containing the data - - - A message sent from the simulator to the viewer containing the - voice server URI - + + The event subscribers. null if no subcribers - - The Parcel ID which the voice server URI applies + + Raises the CurrentGroups event + A CurrentGroupsEventArgs object containing the + data sent from the simulator - - The name of the region + + Thread sync lock object - - A uri containing the server/channel information - which the viewer can utilize to participate in voice conversations + + The event subscribers. null if no subcribers - - - Serialize the object - - An containing the objects data + + Raises the GroupNamesReply event + A GroupNamesEventArgs object containing the + data response from the simulator - - - Deserialize the message - - An containing the data + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the GroupProfile event + An GroupProfileEventArgs object containing the + data returned from the simulator - - - + + Thread sync lock object - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers - - - Deserialize the message - - An containing the data + + Raises the GroupMembers event + A GroupMembersEventArgs object containing the + data returned from the simulator - - - A message sent by the viewer to the simulator to request a temporary - capability for a script contained with in a Tasks inventory to be updated - + + Thread sync lock object - - Object containing request or response + + The event subscribers. null if no subcribers - - - Serialize the object - - An containing the objects data + + Raises the GroupRolesDataReply event + A GroupRolesDataReplyEventArgs object containing the + data returned from the simulator - - - Deserialize the message - - An containing the data + + Thread sync lock object - - - A message sent from the simulator to the viewer to indicate - a Tasks scripts status. - + + The event subscribers. null if no subcribers - - The Asset ID of the script + + Raises the GroupRoleMembersReply event + A GroupRolesRoleMembersReplyEventArgs object containing the + data returned from the simulator - - True of the script is compiled/ran using the mono interpreter, false indicates it - uses the older less efficient lsl2 interprter + + Thread sync lock object - - The Task containing the scripts + + The event subscribers. null if no subcribers - - true of the script is in a running state + + Raises the GroupTitlesReply event + A GroupTitlesReplyEventArgs object containing the + data returned from the simulator - - - Serialize the object - - An containing the objects data + + Thread sync lock object - - - Deserialize the message - - An containing the data + + The event subscribers. null if no subcribers - - - A message containing the request/response used for updating a gesture - contained with an agents inventory - + + Raises the GroupAccountSummary event + A GroupAccountSummaryReplyEventArgs object containing the + data returned from the simulator - - Object containing request or response + + Thread sync lock object - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers - - - Deserialize the message - - An containing the data + + Raises the GroupCreated event + An GroupCreatedEventArgs object containing the + data returned from the simulator - - - A message request/response which is used to update a notecard contained within - a tasks inventory - + + Thread sync lock object - - The of the Task containing the notecard asset to update + + The event subscribers. null if no subcribers - - The notecard assets contained in the tasks inventory + + Raises the GroupJoined event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator - - - Serialize the object - - An containing the objects data + + Thread sync lock object - - - Deserialize the message - - An containing the data + + The event subscribers. null if no subcribers - - - A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability - which is used to update an asset in an agents inventory - + + Raises the GroupLeft event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator - - - The Notecard AssetID to replace - + + Thread sync lock object - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers - - - Deserialize the message - - An containing the data + + Raises the GroupDropped event + An GroupDroppedEventArgs object containing the + the group your agent left - - - A message containing the request/response used for updating a notecard - contained with an agents inventory - + + Thread sync lock object - - Object containing request or response + + The event subscribers. null if no subcribers - - - Serialize the object - - An containing the objects data + + Raises the GroupMemberEjected event + An GroupMemberEjectedEventArgs object containing the + data returned from the simulator - - - Deserialize the message - - An containing the data + + Thread sync lock object - - - Serialize the object - - An containing the objects data + + The event subscribers. null if no subcribers + + + Raises the GroupNoticesListReply event + An GroupNoticesListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object - - - Deserialize the message - - An containing the data + + The event subscribers. null if no subcribers - - - A message sent from the simulator to the viewer which indicates - an error occurred while attempting to update a script in an agents or tasks - inventory - + + Raises the GroupInvitation event + An GroupInvitationEventArgs object containing the + data returned from the simulator - - true of the script was successfully compiled by the simulator + + Thread sync lock object - - A string containing the error which occured while trying - to update the script + + A reference to the current instance - - A new AssetID assigned to the script + + Currently-active group members requests - - - A message sent from the viewer to the simulator - requesting the update of an existing script contained - within a tasks inventory - + + Currently-active group roles requests - - if true, set the script mode to running + + Currently-active group role-member requests - - The scripts InventoryItem ItemID to update + + Dictionary keeping group members while request is in progress - - A lowercase string containing either "mono" or "lsl2" which - specifies the script is compiled and ran on the mono runtime, or the older - lsl runtime + + Dictionary keeping mebmer/role mapping while request is in progress - - The tasks which contains the script to update + + Dictionary keeping GroupRole information while request is in progress - - - Serialize the object - - An containing the objects data + + Caches group name lookups - + - Deserialize the message + Construct a new instance of the GroupManager class - An containing the data + A reference to the current instance - + - A message containing either the request or response used in updating a script inside - a tasks inventory + Request a current list of groups the avatar is a member of. + CAPS Event Queue must be running for this to work since the results + come across CAPS. - - Object containing request or response - - + - Serialize the object + Lookup name of group based on groupID - An containing the objects data + groupID of group to lookup name for. - + - Deserialize the message + Request lookup of multiple group names - An containing the data + List of group IDs to request. - - - Response from the simulator to notify the viewer the upload is completed, and - the UUID of the script asset and its compiled status - + + Lookup group profile data such as name, enrollment, founder, logo, etc + Subscribe to OnGroupProfile event to receive the results. + group ID (UUID) - - The uploaded texture asset ID + + Request a list of group members. + Subscribe to OnGroupMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache - - true of the script was compiled successfully + + Request group roles + Subscribe to OnGroupRoles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache - - - A message sent from a viewer to the simulator requesting a temporary uploader capability - used to update a script contained in an agents inventory - + + Request members (members,role) role mapping for a group. + Subscribe to OnGroupRolesMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache - - The existing asset if of the script in the agents inventory to replace + + Request a groups Titles + Subscribe to OnGroupTitles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache - - The language of the script - Defaults to lsl version 2, "mono" might be another possible option + + Begin to get the group account summary + Subscribe to the OnGroupAccountSummary event to receive the results. + group ID (UUID) + How long of an interval + Which interval (0 for current, 1 for last) - - - Serialize the object - - An containing the objects data + + Invites a user to a group + The group to invite to + A list of roles to invite a person to + Key of person to invite - - - Deserialize the message - - An containing the data + + Set a group as the current active group + group ID (UUID) - - - A message containing either the request or response used in updating a script inside - an agents inventory - + + Change the role that determines your active title + Group ID to use + Role ID to change to - - Object containing request or response + + Set this avatar's tier contribution + Group ID to change tier in + amount of tier to donate - + - Serialize the object + Save wheather agent wants to accept group notices and list this group in their profile - An containing the objects data + Group + Accept notices from this group + List this group in the profile - - - Deserialize the message - - An containing the data + + Request to join a group + Subscribe to OnGroupJoined event for confirmation. + group ID (UUID) to join. - + - Serialize the object + Request to create a new group. If the group is successfully + created, L$100 will automatically be deducted - An containing the objects data + Subscribe to OnGroupCreated event to receive confirmation. + Group struct containing the new group info - - - Deserialize the message - - An containing the data + + Update a group's profile and other information + Groups ID (UUID) to update. + Group struct to update. - - Base class for Map Layers via Capabilities + + Eject a user from a group + Group ID to eject the user from + Avatar's key to eject - - - + + Update role information + Modified role to be updated - - - Serialize the object - - An containing the objects data + + Create a new group role + Group ID to update + Role to create - - - Deserialize the message - - An containing the data + + Delete a group role + Group ID to update + Role to delete - - - Sent by an agent to the capabilities server to request map layers - + + Remove an avatar from a role + Group ID to update + Role ID to be removed from + Avatar's Key to remove + + + Assign an avatar to a role + Group ID to update + Role ID to assign to + Avatar's ID to assign to role + + + Request the group notices list + Group ID to fetch notices for + + + Request a group notice by key + ID of group notice + + + Send out a group notice + Group ID to update + GroupNotice structure containing notice data + + + Start a group proposal (vote) + The Group ID to send proposal to + GroupProposal structure containing the proposal + + + Request to leave a group + Subscribe to OnGroupLeft event to receive confirmation + The group to leave - - - A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - An object containing map location details - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The Asset ID of the regions tile overlay + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The grid location of the southern border of the map tile + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The grid location of the western border of the map tile + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The grid location of the eastern border of the map tile + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - The grid location of the northern border of the map tile + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - An array containing LayerData items + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Serialize the object - - An containing the objects data + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Deserialize the message - - An containing the data + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - Object containing request or response + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Serialize the object - - An containing the objects data + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Deserialize the message - - An containing the data + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - New as of 1.23 RC1, no details yet. - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Serialize the object - - An containing the objects data + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Deserialize the message - - An containing the data + + Raised when the simulator sends us data containing + our current group membership - - - Serialize the object - - An containing the objects data + + Raised when the simulator responds to a RequestGroupName + or RequestGroupNames request - - - Deserialize the message - - An containing the data + + Raised when the simulator responds to a request - - A string containing the method used + + Raised when the simulator responds to a request - - - A request sent from an agent to the Simulator to begin a new conference. - Contains a list of Agents which will be included in the conference - + + Raised when the simulator responds to a request - - An array containing the of the agents invited to this conference + + Raised when the simulator responds to a request - - The conferences Session ID + + Raised when the simulator responds to a request - - - Serialize the object - - An containing the objects data + + Raised when a response to a RequestGroupAccountSummary is returned + by the simulator - - - Deserialize the message - - An containing the data + + Raised when a request to create a group is successful - - - A moderation request sent from a conference moderator - Contains an agent and an optional action to take - + + Raised when a request to join a group either + fails or succeeds - - The Session ID + + Raised when a request to leave a group either + fails or succeeds - - - + + Raised when A group is removed from the group server - - A list containing Key/Value pairs, known valid values: - key: text value: true/false - allow/disallow specified agents ability to use text in session - key: voice value: true/false - allow/disallow specified agents ability to use voice in session - - "text" or "voice" + + Raised when a request to eject a member from a group either + fails or succeeds - - - + + Raised when the simulator sends us group notices + - - - Serialize the object - - An containing the objects data + + Raised when another agent invites our avatar to join a group - - - Deserialize the message - - An containing the data + + Contains the current groups your agent is a member of - - - A message sent from the agent to the simulator which tells the - simulator we've accepted a conference invitation - + + Construct a new instance of the CurrentGroupsEventArgs class + The current groups your agent is a member of - - The conference SessionID + + Get the current groups your agent is a member of - - - Serialize the object - - An containing the objects data + + A Dictionary of group names, where the Key is the groups ID and the value is the groups name - - - Deserialize the message - - An containing the data + + Construct a new instance of the GroupNamesEventArgs class + The Group names dictionary - - - Serialize the object - - An containing the objects data + + Get the Group Names dictionary - - - Deserialize the message - - An containing the data + + Represents the members of a group - + - Serialize the object + Construct a new instance of the GroupMembersReplyEventArgs class - An containing the objects data + The ID of the request + The ID of the group + The membership list of the group - - - Deserialize the message - - An containing the data + + Get the ID as returned by the request to correlate + this result set and the request - - - Serialize the object - - An containing the objects data + + Get the ID of the group - - - Deserialize the message - - An containing the data + + Get the dictionary of members - - Key of sender + + Represents the roles associated with a group - - Name of sender + + Construct a new instance of the GroupRolesDataReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The dictionary containing the roles - - Key of destination avatar + + Get the ID as returned by the request to correlate + this result set and the request - - ID of originating estate + + Get the ID of the group - - Key of originating region + + Get the dictionary containing the roles - - Coordinates in originating region + + Represents the Role to Member mappings for a group - - Instant message type + + Construct a new instance of the GroupRolesMembersReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The member to roles map - - Group IM session toggle + + Get the ID as returned by the request to correlate + this result set and the request - - Key of IM session, for Group Messages, the groups UUID + + Get the ID of the group - - Timestamp of the instant message + + Get the member to roles map - - Instant message text + + Represents the titles for a group - - Whether this message is held for offline avatars + + Construct a new instance of the GroupTitlesReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The titles - - Context specific packed data + + Get the ID as returned by the request to correlate + this result set and the request - - Is this invitation for voice group/conference chat + + Get the ID of the group - - - Serialize the object - - An containing the objects data + + Get the titles - - - Deserialize the message - - An containing the data + + Represents the summary data for a group - - - Sent from the simulator to the viewer. - When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including - a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate - this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" - During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are - excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with - the string "ENTER" or "LEAVE" respectively. - + + Construct a new instance of the GroupAccountSummaryReplyEventArgs class + The ID of the group + The summary data - - - Serialize the object - - An containing the objects data + + Get the ID of the group - - - Deserialize the message - - An containing the data + + Get the summary data - - - An EventQueue message sent when the agent is forcibly removed from a chatterbox session - + + A response to a group create request - - - A string containing the reason the agent was removed - + + Construct a new instance of the GroupCreatedReplyEventArgs class + The ID of the group + the success or faulure of the request + A string containing additional information - - - The ChatterBoxSession's SessionID - + + Get the ID of the group - - - Serialize the object - - An containing the objects data + + true of the group was created successfully - - - Deserialize the message - - An containing the data + + A string containing the message - - - Serialize the object - - An containing the objects data + + Represents a response to a request - - - Deserialize the message - - An containing the data + + Construct a new instance of the GroupOperationEventArgs class + The ID of the group + true of the request was successful - - - Serialize the object - - An containing the objects data + + Get the ID of the group - - - Deserialize the message - - An containing the data + + true of the request was successful - - - Serialize the object - - An containing the objects data + + Represents your agent leaving a group - - - Deserialize the message - - An containing the data + + Construct a new instance of the GroupDroppedEventArgs class + The ID of the group - - - Serialize the object - - An containing the objects data + + Get the ID of the group - - - Deserialize the message - - An containing the data + + Represents a list of active group notices - - - + + Construct a new instance of the GroupNoticesListReplyEventArgs class + The ID of the group + The list containing active notices - - - Serialize the object - - An containing the objects data + + Get the ID of the group - - - Deserialize the message - - An containing the data + + Get the notices list - - - Serialize the object - - An containing the objects data + + Represents the profile of a group - - - Deserialize the message - - An containing the data + + Construct a new instance of the GroupProfileEventArgs class + The group profile - - - Serialize the object - - An containing the objects data + + Get the group profile - + - Deserialize the message + Provides notification of a group invitation request sent by another Avatar - An containing the data + The invitation is raised when another avatar makes an offer for our avatar + to join a group. - - - A message sent from the viewer to the simulator which - specifies that the user has changed current URL - of the specific media on a prim face - + + The ID of the Avatar sending the group invitation - - - New URL - + + The name of the Avatar sending the group invitation - - - Prim UUID where navigation occured - + + A message containing the request information which includes + the name of the group, the groups charter and the fee to join details - - - Face index - + + The Simulator - - - Serialize the object - - An containing the objects data + + Set to true to accept invitation, false to decline - + - Deserialize the message + Wrapper around a byte array that allows bit to be packed and unpacked + one at a time or by a variable amount. Useful for very tightly packed + data like LayerData packets - An containing the data - - Base class used for the ObjectMedia message + + - + - Message used to retrive prim media data + Default constructor, initialize the bit packer / bit unpacker + with a byte array and starting position + Byte array to pack bits in to or unpack from + Starting position in the byte array - + - Prim UUID + Pack a floating point value in to the data + Floating point value to pack - + - Requested operation, either GET or UPDATE + Pack part or all of an integer in to the data + Integer containing the data to pack + Number of bits of the integer to pack - + - Serialize object + Pack part or all of an unsigned integer in to the data - Serialized object as OSDMap + Unsigned integer containing the data to pack + Number of bits of the integer to pack - + - Deserialize the message + - An containing the data + + + + - + - Message used to update prim media data + + - + - Prim UUID + + - + - Array of media entries indexed by face number + Unpacking a floating point value from the data + Unpacked floating point value - + - Media version string + Unpack a variable number of bits from the data in to integer format + Number of bits to unpack + An integer containing the unpacked bits + This function is only useful up to 32 bits - + - Serialize object + Unpack a variable number of bits from the data in to unsigned + integer format - Serialized object as OSDMap + Number of bits to unpack + An unsigned integer containing the unpacked bits + This function is only useful up to 32 bits - + - Deserialize the message + Unpack a 16-bit signed integer - An containing the data + 16-bit signed integer - + - Message used to update prim media data + Unpack a 16-bit unsigned integer + 16-bit unsigned integer - + - Prim UUID + Unpack a 32-bit signed integer + 32-bit signed integer - + - Array of media entries indexed by face number + Unpack a 32-bit unsigned integer + 32-bit unsigned integer - + + + + + + + - Requested operation, either GET or UPDATE + Avatar profile flags - + - Serialize object + Represents an avatar (other than your own) - Serialized object as OSDMap - + + Groups that this avatar is a member of + + + Positive and negative ratings + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + Movement control flags for avatars. Typically not set or used by + clients. To move your avatar, use Client.Self.Movement instead + + - Deserialize the message + Contains the visual parameters describing the deformation of the avatar - An containing the data - + - Message for setting or getting per face MediaEntry + Default constructor - - The request or response details block + + First name - - - Serialize the object - - An containing the objects data + + Last name - + + Full name + + + Active group + + - Deserialize the message + Positive and negative ratings - An containing the data - - Details about object resource usage + + Positive ratings for Behavior + + + Negative ratings for Behavior - - Object UUID + + Positive ratings for Appearance - - Object name + + Negative ratings for Appearance - - Indicates if object is group owned + + Positive ratings for Building - - Locatio of the object + + Negative ratings for Building - - Object owner + + Positive ratings given by this avatar - - Resource usage, keys are resource names, values are resource usage for that specific resource + + Negative ratings given by this avatar - + - Deserializes object from OSD + Avatar properties including about text, profile URL, image IDs and + publishing settings - An containing the data - - - Makes an instance based on deserialized data - - - serialized data - Instance containg deserialized data + + First Life about text - - Details about parcel resource usage + + First Life image ID - - Parcel UUID + + - - Parcel local ID + + - - Parcel name + + - - Indicates if parcel is group owned + + - - Parcel owner + + Profile image ID - - Array of containing per object resource usage + + Flags of the profile - - - Deserializes object from OSD - - An containing the data + + Web URL for this profile - - - Makes an instance based on deserialized data - - - serialized data - Instance containg deserialized data + + Should this profile be published on the web - - Resource usage base class, both agent and parcel resource - usage contains summary information + + Avatar Online Status - - Summary of available resources, keys are resource names, - values are resource usage for that specific resource + + Is this a mature profile - - Summary resource usage, keys are resource names, - values are resource usage for that specific resource + + - - - Serializes object - - - serialized data + + - + - Deserializes object from OSD + Avatar interests including spoken languages, skills, and "want to" + choices - An containing the data - - Agent resource usage + + Languages profile field + + + - - Per attachment point object resource usage + + - - - Deserializes object from OSD - - An containing the data + + + + + - + - Makes an instance based on deserialized data + Index of TextureEntry slots for avatar appearances - - serialized data - Instance containg deserialized data - + - Detects which class handles deserialization of this message + Bake layers for avatar appearance - An containing the data - Object capable of decoding this message - - Request message for parcel resource usage + + Maximum number of concurrent downloads for wearable assets and textures - - UUID of the parel to request resource usage info + + Maximum number of concurrent uploads for baked textures - - - Serializes object - - - serialized data + + Timeout for fetching inventory listings - - - Deserializes object from OSD - - An containing the data + + Timeout for fetching a single wearable, or receiving a single packet response - - Response message for parcel resource usage + + Timeout for fetching a single texture - - URL where parcel resource usage details can be retrieved + + Timeout for uploading a single baked texture - - URL where parcel resource usage summary can be retrieved + + Number of times to retry bake upload - - - Serializes object - - - serialized data + + When changing outfit, kick off rebake after + 20 seconds has passed since the last change - - - Deserializes object from OSD - - An containing the data + + Total number of wearables for each avatar - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message + + Total number of baked textures on each avatar + + + Total number of wearables per bake layer + + + Total number of textures on an avatar, baked or not - - Parcel resource usage + + Mapping between BakeType and AvatarTextureIndex - - Array of containing per percal resource usage + + Map of what wearables are included in each bake - - - Deserializes object from OSD - - An containing the data + + Magic values to finalize the cache check hashes for each + bake - - - Return a decoded capabilities message as a strongly typed object - - A string containing the name of the capabilities message key - An to decode - A strongly typed object containing the decoded information from the capabilities message, or null - if no existing Message object exists for the specified event + + Default avatar texture, used to detect when a custom + texture is not set for a face - - - Permissions for control of object media - + + The event subscribers. null if no subcribers - - - Style of cotrols that shold be displayed to the user - + + Raises the AgentWearablesReply event + An AgentWearablesReplyEventArgs object containing the + data returned from the data server - - - Class representing media data for a single face - + + Thread sync lock object - - Is display of the alternative image enabled + + The event subscribers. null if no subcribers - - Should media auto loop + + Raises the CachedBakesReply event + An AgentCachedBakesReplyEventArgs object containing the + data returned from the data server AgentCachedTextureResponse - - Shoule media be auto played + + Thread sync lock object - - Auto scale media to prim face + + The event subscribers. null if no subcribers - - Should viewer automatically zoom in on the face when clicked + + Raises the AppearanceSet event + An AppearanceSetEventArgs object indicating if the operatin was successfull - - Should viewer interpret first click as interaction with the media - or when false should the first click be treated as zoom in commadn + + Thread sync lock object - - Style of controls viewer should display when - viewer media on this face + + The event subscribers. null if no subcribers - - Starting URL for the media + + Raises the RebakeAvatarRequested event + An RebakeAvatarTexturesEventArgs object containing the + data returned from the data server - - Currently navigated URL + + Thread sync lock object - - Media height in pixes + + A cache of wearables currently being worn - - Media width in pixels + + A cache of textures currently being worn - - Who can controls the media + + Incrementing serial number for AgentCachedTexture packets - - Who can interact with the media + + Incrementing serial number for AgentSetAppearance packets - - Is URL whitelist enabled + + Indicates whether or not the appearance thread is currently + running, to prevent multiple appearance threads from running + simultaneously - - Array of URLs that are whitelisted + + Reference to our agent - + - Serialize to OSD + Timer used for delaying rebake on changing outfit - OSDMap with the serialized data - + - Deserialize from OSD data + Main appearance thread - Serialized OSD data - Deserialized object - + - Particle system specific enumerators, flags and methods. + Default constructor + A reference to our agent - + - Default constructor + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread - + - Complete structure for the particle system + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + Unused parameter - + - Decodes a byte[] array into a ParticleSystem Object + Starts the appearance setting thread - ParticleSystem object - Start position for BitPacker - + - Particle source pattern + Starts the appearance setting thread + True to force rebaking, otherwise false - - None - - - Drop particles from source position with no force - - - "Explode" particles in all directions - - - Particles shoot across a 2D area - - - Particles shoot across a 3D Cone - - - Inverse of AngleCone (shoot particles everywhere except the 3D cone defined - - + - Particle Data Flags + Ask the server what textures our agent is currently wearing - - None - - - Interpolate color and alpha from start to end - - - Interpolate scale from start to end - - - Bounce particles off particle sources Z height - - - velocity of particles is dampened toward the simulators wind - - - Particles follow the source - - - Particles point towards the direction of source's velocity - - - Target of the particles - - - Particles are sent in a straight line - - - Particles emit a glow - - - used for point/grab/touch - - + - Particle Flags Enum + Build hashes out of the texture assetIDs for each baking layer to + ask the simulator whether it has cached copies of each baked texture - - None - - - Acceleration and velocity for particles are - relative to the object rotation - - - Particles use new 'correct' angle parameters - - - Particle Flags - There appears to be more data packed in to this area - for many particle systems. It doesn't appear to be flag values - and serialization breaks unless there is a flag for every - possible bit so it is left as an unsigned integer - - + - pattern of particles - - - A representing the maximimum age (in seconds) particle will be displayed - Maximum value is 30 seconds - - - A representing the number of seconds, - from when the particle source comes into view, - or the particle system's creation, that the object will emits particles; - after this time period no more particles are emitted - - - A in radians that specifies where particles will not be created - - - A in radians that specifies where particles will be created - - - A representing the number of seconds between burts. - - - A representing the number of meters - around the center of the source where particles will be created. + Returns the AssetID of the asset that is currently being worn in a + given WearableType slot + + WearableType slot to get the AssetID for + The UUID of the asset being worn in the given slot, or + UUID.Zero if no wearable is attached to the given slot or wearables + have not been downloaded yet - - A representing in seconds, the minimum speed between bursts of new particles - being emitted + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit - - A representing in seconds the maximum speed of new particles being emitted. + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit - - A representing the maximum number of particles emitted per burst + + + Remove a wearable from the current outfit and set appearance + + Wearable to be removed from the outfit - - A which represents the velocity (speed) from the source which particles are emitted + + + Removes a list of wearables from the current outfit and set appearance + + List of wearable inventory items to + be removed from the outfit - - A which represents the Acceleration from the source which particles are emitted + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit - - The Key of the texture displayed on the particle + + + Checks if an inventory item is currently being worn + + The inventory item to check against the agent + wearables + The WearableType slot that the item is being worn in, + or WearbleType.Invalid if it is not currently being worn - - The Key of the specified target object or avatar particles will follow + + + Returns a copy of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time - - Flags of particle from + + + Calls either or + depending on the value of + replaceItems + + List of wearable inventory items to add + to the outfit or become a new outfit + True to replace existing items with the + new list of items, false to add these items to the existing outfit - - Max Age particle system will emit particles for + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + first - - The the particle has at the beginning of its lifecycle + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + to attach the item to - - The the particle has at the ending of its lifecycle + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + to attach the item to - - A that represents the starting X size of the particle - Minimum value is 0, maximum value is 4 + + + Detach an item from our agent using an object + + An object - - A that represents the starting Y size of the particle - Minimum value is 0, maximum value is 4 + + + Detach an item from our agent + + The inventory itemID of the item to detach - - A that represents the ending X size of the particle - Minimum value is 0, maximum value is 4 + + + Inform the sim which wearables are part of our current outfit + - - A that represents the ending Y size of the particle - Minimum value is 0, maximum value is 4 + + + Replaces the Wearables collection with a list of new wearable items + + Wearable items to replace the Wearables collection with - + - Generate byte[] array from particle data + Calculates base color/tint for a specific wearable + based on its params - Byte array + All the color info gathered from wearable's VisualParams + passed as list of ColorParamInfo tuples + Base color/tint for the wearable - + - Parameters used to construct a visual representation of a primitive + Blocking method to populate the Wearables dictionary + True on success, otherwise false - + + Blocking method to populate the Textures array with cached bakes + True on success, otherwise false - + + Populates textures and visual params from a decoded asset + Wearable to decode - + + Blocking method to download and parse currently worn wearable assets + True on success, otherwise false - + + Get a list of all of the textures that need to be downloaded for a + single bake layer + Bake layer to get texture AssetIDs for + A list of texture AssetIDs to download - + + Helper method to lookup the TextureID for a single layer and add it + to a list if it is not already present + + - + + Blocking method to download all of the textures needed for baking + the given bake layers + A list of layers that need baking + No return value is given because the baking will happen + whether or not all textures are successfully downloaded - + + Blocking method to create and upload baked textures for all of the + missing bakes + True on success, otherwise false - + + Blocking method to create and upload a baked texture for a single + bake layer + Layer to bake + True on success, otherwise false - + + Blocking method to upload a baked texture + Five channel JPEG2000 texture data to upload + UUID of the newly created asset on success, otherwise UUID.Zero - + + Creates a dictionary of visual param values from the downloaded wearables + A dictionary of visual param indices mapping to visual param + values for our agent that can be fed to the Baker class - + + Create an AgentSetAppearance packet from Wearables data and the + Textures array and send it - + + Converts a WearableType to a bodypart or clothing WearableType + A WearableType + AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown - + + Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + A BakeType + The AvatarTextureIndex slot that holds the given BakeType - + + Gives the layer number that is used for morph mask + >A BakeType + Which layer number as defined in BakeTypeToTextures is used for morph mask - + + Converts a BakeType to a list of the texture slots that make up that bake + A BakeType + A list of texture slots that are inputs for the given bake - + + Triggered when an AgentWearablesUpdate packet is received, + telling us what our avatar is currently wearing + request. + + + Raised when an AgentCachedTextureResponse packet is + received, giving a list of cached bakes that were found on the + simulator + request. + + + Raised when appearance data is sent to the simulator, also indicates + the main appearance thread is finished. + request. - + + Triggered when the simulator requests the agent rebake its appearance. + - + + Returns true if AppearanceManager is busy and trying to set or change appearance will fail - + + Contains information about a wearable inventory item - + + Inventory ItemID of the wearable + + + AssetID of the wearable asset + + + WearableType of the wearable + + + AssetType of the wearable + + + Asset data for the wearable + + + Data collected from visual params for each wearable + needed for the calculation of the color - + + Holds a texture assetID and the data needed to bake this layer into + an outfit texture. Used to keep track of currently worn textures + and baking data - - Attachment point to an avatar + + A texture AssetID + + + Asset data for the texture + + + Collection of alpha masks that needs applying + + + Tint that should be applied to the texture + + + Contains the Event data returned from the data server from an AgentWearablesRequest + + + Construct a new instance of the AgentWearablesReplyEventArgs class + + + Contains the Event data returned from the data server from an AgentCachedTextureResponse + + + Construct a new instance of the AgentCachedBakesReplyEventArgs class + + + Contains the Event data returned from an AppearanceSetRequest - + - + Triggered when appearance data is sent to the sim and + the main appearance thread is done. + Indicates whether appearance setting was successful - - - + + Indicates whether appearance setting was successful - - - + + Contains the Event data returned from the data server from an RebakeAvatarTextures - + + Triggered when the simulator sends a request for this agent to rebake + its appearance + The ID of the Texture Layer to bake - + + The ID of the Texture Layer to bake + + - Information on the flexible properties of a primitive + Registers, unregisters, and fires events generated by incoming packets - + + Reference to the GridClient object + + Default constructor + - + + Register an event handler - - - - + Use PacketType.Default to fire this event on every + incoming packet + Packet type to register the handler for + Callback to be fired - + + Unregister an event handler + Packet type to unregister the handler for + Callback to be unregistered - + + Fire the events registered for this packet type synchronously + Incoming packet type + Incoming packet + Simulator this packet was received from - + + Fire the events registered for this packet type asynchronously + Incoming packet type + Incoming packet + Simulator this packet was received from - + + Object that is passed to worker threads in the ThreadPool for + firing packet callbacks - - - + + Callback to fire for this packet - - - + + Reference to the simulator that this packet came from - - - - - + + The packet that needs to be processed - + + Registers, unregisters, and fires events generated by the Capabilities + event queue - - - - - Information on the light properties of a primitive - + + Reference to the GridClient object - + Default constructor + Reference to the GridClient object - + + Register an new event handler for a capabilities event sent via the EventQueue - - - - + Use String.Empty to fire this event on every CAPS event + Capability event name to register the + handler for + Callback to fire - + + Unregister a previously registered capabilities handler + Capability event name unregister the + handler for + Callback to unregister - + + Fire the events registered for this event type synchronously + Capability name + Decoded event body + Reference to the simulator that + generated this event - + + Fire the events registered for this event type asynchronously + Capability name + Decoded event body + Reference to the simulator that + generated this event - + + Object that is passed to worker threads in the ThreadPool for + firing CAPS callbacks - - - + + Callback to fire for this packet - - - - - + + Name of the CAPS event - - - - - + + Strongly typed decoded data - - - Information on the sculpt properties of a sculpted primitive - + + Reference to the simulator that generated this event - + - Default constructor + Access to the data server which allows searching for land, events, people, etc - - - - - - - + + The event subscribers. null if no subcribers - - - Render inside out (inverts the normals). - + + Raises the EventInfoReply event + An EventInfoReplyEventArgs object containing the + data returned from the data server - - - Render an X axis mirror of the sculpty. - + + Thread sync lock object - - - Extended properties to describe an object - + + The event subscribers. null if no subcribers - - - Default constructor - + + Raises the DirEventsReply event + An DirEventsReplyEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the PlacesReply event + A PlacesReplyEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the DirPlacesReply event + A DirPlacesReplyEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the DirClassifiedsReply event + A DirClassifiedsReplyEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the DirGroupsReply event + A DirGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirPeopleReply event + A DirPeopleReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object - - - + + The event subscribers. null if no subcribers - - - + + Raises the DirLandReply event + A DirLandReplyEventArgs object containing the + data returned from the data server - - - + + Thread sync lock object - + + Constructs a new instance of the DirectoryManager class + An instance of GridClient - + + Query the data server for a list of classified ads containing the specified string. + Defaults to searching for classified placed in any category, and includes PG, Adult and Mature + results. + + Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + The event is raised when a response is received from the simulator + A string containing a list of keywords to search for + A UUID to correlate the results when the event is raised - + + Query the data server for a list of classified ads which contain specified keywords (Overload) + + The event is raised when a response is received from the simulator + A string containing a list of keywords to search for + The category to search + A set of flags which can be ORed to modify query options + such as classified maturity rating. + A UUID to correlate the results when the event is raised + + Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature + + UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); + + + + Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + - + + Starts search for places (Overloaded) + + The event is raised when a response is received from the simulator + Search text + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised - + + Queries the dataserver for parcels of land which are flagged to be shown in search + + The event is raised when a response is received from the simulator + A string containing a list of keywords to search for separated by a space character + A set of flags which can be ORed to modify query options + such as classified maturity rating. + The category to search + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult + + UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); + + + + Additional information on the results can be obtained by using the ParcelManager.InfoRequest method + - + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + What type of land to search for. Auction, + estate, mainland, "first land", etc + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. - + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + What type of land to search for. Auction, + estate, mainland, "first land", etc + Maximum price to search for + Maximum area to search for + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. - + + Send a request to the data server for land sales listings + + Flags sent to specify query options + + Available flags: + Specify the parcel rating with one or more of the following: + IncludePG IncludeMature IncludeAdult + + Specify the field to pre sort the results with ONLY ONE of the following: + PerMeterSort NameSort AreaSort PricesSort + + Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order + SortAsc + + Specify additional filters to limit the results with one or both of the following: + LimitByPrice LimitByArea + + Flags can be combined by separating them with the | (pipe) character + + Additional details can be found in + + What type of land to search for. Auction, + Estate or Mainland + Maximum price to search for when the + DirFindFlags.LimitByPrice flag is specified in findFlags + Maximum area to search for when the + DirFindFlags.LimitByArea flag is specified in findFlags + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + The event will be raised with the response from the simulator + + There is no way to determine how many results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each reply. + + Any land set for sale to either anybody or specific to the connected agent will be included in the + results if the land is included in the query + + + // request all mainland, any maturity rating that is larger than 512 sq.m + StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); + - + - Set the properties that are set in an ObjectPropertiesFamily packet + Search for Groups - - that has - been partially filled by an ObjectPropertiesFamily packet + The name or portion of the name of the group you wish to search for + Start from the match number + - + - Texture animation mode + Search for Groups + The name or portion of the name of the group you wish to search for + Start from the match number + Search flags + - - Disable texture animation - - - Enable texture animation - - - Loop when animating textures - - - Animate in reverse direction - - - Animate forward then reverse - - - Slide texture smoothly instead of frame-stepping - - - Rotate texture instead of using frames - - - Scale texture instead of using frames - - + - A single textured face. Don't instantiate this class yourself, use the - methods in TextureEntry + Search the People directory for other avatars + The name or portion of the name of the avatar you wish to search for + + - + - Contains the definition for individual faces + Search Places for parcels of land you personally own - - - + + Searches Places for land owned by the specified group + ID of the group you want to recieve land list for (You must be a member of the group) + Transaction (Query) ID which can be associated with results from your request. - + + Search the Places directory for parcels that are listed in search and contain the specified keywords + A string containing the keywords to search for + Transaction (Query) ID which can be associated with results from your request. - + + Search Places - All Options + One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. + One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer + A string containing a list of keywords to search for separated by a space character + String Simulator Name to search in + LLUID of group you want to recieve results for + Transaction (Query) ID which can be associated with results from your request. + Transaction (Query) ID which can be associated with results from your request. - + + Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + A string containing a list of keywords to search for separated by a space character + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + UUID of query to correlate results in callback. - + + Search Events + A string containing a list of keywords to search for separated by a space character + One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult + from the Enum + + Multiple flags can be combined by separating the flags with the | (pipe) character + "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled + For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + EventCategory event is listed under. + UUID of query to correlate results in callback. - - - + + Requests Event Details + ID of Event returned from the method - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - In the future this will specify whether a webpage is - attached to this face + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from - - - - - + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Represents all of the texturable faces for an object - - Grid objects have infinite faces, with each face - using the properties of the default face unless set otherwise. So if - you have a TextureEntry with a default texture uuid of X, and face 18 - has a texture UUID of Y, every face would be textured with X except for - face 18 that uses Y. In practice however, primitives utilize a maximum - of nine faces + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Constructor that takes a default texture UUID - - Texture UUID to use as the default texture + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Constructor that takes a TextureEntryFace for the - default face - - Face to use as the default face + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data - - - Constructor that creates the TextureEntry class from a byte array - - Byte array containing the TextureEntry field - Starting position of the TextureEntry field in - the byte array - Length of the TextureEntry field, in bytes + + Raised when the data server responds to a request. - - - + + Raised when the data server responds to a request. - - - + + Raised when the data server responds to a request. - - - This will either create a new face if a custom face for the given - index is not defined, or return the custom face for that index if - it already exists - - The index number of the face to create or - retrieve - A TextureEntryFace containing all the properties for that - face + + Raised when the data server responds to a request. - - - - - - - + + Raised when the data server responds to a request. - - - - - + + Raised when the data server responds to a request. - - - - - + + Raised when the data server responds to a request. - - - - - + + Raised when the data server responds to a request. - - - Controls the texture animation of a particular prim - + + Classified Ad categories - - - - - - - + + Classified is listed in the Any category - - - + + Classified is shopping related - - - + + Classified is - - - + + - - - + + - - - + + - - - + + - - - + + - - - - - + + - - - Current version of the media data for the prim - + + - - - Array of media entries indexed by face number - + + Event Categories - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - - + + - - Foliage type for this primitive. Only applicable if this - primitive is foliage + + - - Unknown + + - - - + + - - - + + - - - + + - + + Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. + + Flags can be combined using the | (pipe) character, not all flags are available in all queries - - - + + Query the People database - - - + + - - - + + - - - + + Query the Groups database - - - + + Query the Events database - - - + + Query the land holdings database for land owned by the currently connected agent - - - + + - - - + + Query the land holdings database for land which is owned by a Group - - Identifies the owner if audio or a particle system is - active + + Specifies the query should pre sort the results based upon traffic + when searching the Places database - - - + + - - - + + - - - + + - - - + + - - - + + Specifies the query should pre sort the results in an ascending order when searching the land sales database. + This flag is only used when searching the land sales database - - - + + Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. + This flag is only used when searching the land sales database - - - + + Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. + This flag is only used when searching the land sales database - - - + + Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the Name field when searching the land sales database. + This flag is only used when searching the land sales database - - - + + When set, only parcels less than the specified Price will be included when searching the land sales database. + This flag is only used when searching the land sales database - - - + + When set, only parcels greater than the specified Size will be included when searching the land sales database. + This flag is only used when searching the land sales database - - - + + - - - + + - - - + + Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - + + Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases - - Uses basic heuristics to estimate the primitive shape + + Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters in to signed eight bit values - - Floating point parameter to pack - Signed eight bit value containing the packed parameter + + - + - Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters from signed eight bit integers to floating point values + Land types to search dataserver for - Signed eight bit value to unpack - Unpacked floating point value - - - The type of bump-mapping applied to a face - + + Search Auction, Mainland and Estate - - - + + Land which is currently up for auction - - - + + Parcels which are on the mainland (Linden owned) continents - - - + + Parcels which are on privately owned simulators - + + The content rating of the event - - - + + Event is PG - - - + + Event is Mature - - - + + Event is Adult - + + Classified Ad Options + There appear to be two formats the flags are packed in. + This set of flags is for the newer style - - - + + - - - + + - - - + + - - - + + - - - + + - + + Classified ad query options - - - + + Include all ads in results - - - + + Include PG ads in results - - - + + Include Mature ads in results - - - + + Include Adult ads in results - + - The level of shininess applied to a face + The For Sale flag in PlacesReplyData - - - + + Parcel is not listed for sale - - - + + Parcel is For Sale - + + A classified ad on the grid - - - + + UUID for this ad, useful for looking up detailed + information about it - - - The texture mapping style used for a face - + + The title of this classified ad - - - + + Flags that show certain options applied to the classified - - - + + Creation date of the ad - - - + + Expiration date of the ad - - - + + Price that was paid for this ad - - - Flags in the TextureEntry block that describe which properties are - set - + + Print the struct data as a string + A string containing the field name, and field value - + + A parcel retrieved from the dataserver such as results from the + "For-Sale" listings or "Places" Search - - - + + The unique dataserver parcel ID + This id is used to obtain additional information from the entry + by using the method - - - + + A string containing the name of the parcel - - - + + The size of the parcel + This field is not returned for Places searches - - - + + The price of the parcel + This field is not returned for Places searches - - - + + If True, this parcel is flagged to be auctioned - - - + + If true, this parcel is currently set for sale - - - + + Parcel traffic - - - + + Print the struct data as a string + A string containing the field name, and field value - + + An Avatar returned from the dataserver - - - + + Online status of agent + This field appears to be obsolete and always returns false - - - + + The agents first name + + + The agents last name + + + The agents - - - Level of Detail mesh - + + Print the struct data as a string + A string containing the field name, and field value - + - Constructor for default logging settings + Response to a "Groups" Search - - Enable logging + + The Group ID - - The folder where any logs will be created + + The name of the group - - This will be prepended to beginning of each log file + + The current number of members - - The suffix or extension to be appended to each log file + + Print the struct data as a string + A string containing the field name, and field value - + - 0: NONE - No logging - 1: ERROR - Log errors only - 2: WARNING - Log errors and warnings - 3: INFO - Log errors, warnings and info - 4: DEBUG - Log errors, warnings, info and debug + Parcel information returned from a request + + Represents one of the following: + A parcel of land on the grid that has its Show In Search flag set + A parcel of land owned by the agent making the request + A parcel of land owned by a group the agent making the request is a member of + + + In a request for Group Land, the First record will contain an empty record + + Note: This is not the same as searching the land for sale data source - - Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter - - - Event for most mundane request reposnses. - + + The ID of the Agent of Group that owns the parcel - - Response to Connector.Create request + + The name - - Response to Aux.GetCaptureDevices request + + The description - - Response to Aux.GetRenderDevices request + + The Size of the parcel - - Audio Properties Events are sent after audio capture is started. - These events are used to display a microphone VU meter + + The billable Size of the parcel, for mainland + parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller + than the ActualArea. For Estate land this will always be 0 - - Response to Account.Login request + + Indicates the ForSale status of the parcel - - This event message is sent whenever the login state of the - particular Account has transitioned from one value to another + + The Gridwide X position - - - List of audio input devices - + + The Gridwide Y position - - - List of audio output devices - + + The Z position of the parcel, or 0 if no landing point set - - - Set audio test mode - + + The name of the Region the parcel is located in - - - This is used to login a specific user account(s). It may only be called after - Connector initialization has completed successfully - - Handle returned from successful Connector �create� request - User's account name - User's account password - Values may be �AutoAnswer� or �VerifyAnswer� - "" - This is an integer that specifies how often - the daemon will send participant property events while in a channel. If this is not set - the default will be �on state change�, which means that the events will be sent when - the participant starts talking, stops talking, is muted, is unmuted. - The valid values are: - 0 � Never - 5 � 10 times per second - 10 � 5 times per second - 50 � 1 time per second - 100 � on participant state change (this is the default) - false - - + + The Asset ID of the parcels Snapshot texture - - - This is used to logout a user session. It should only be called with a valid AccountHandle. - - Handle returned from successful Connector �login� request - - + + The calculated visitor traffic - - - This is used to get a list of audio devices that can be used for capture (input) of voice. - - - + + The billing product SKU + Known values are: + + 023Mainland / Full Region + 024Estate / Full Region + 027Estate / Openspace + 029Estate / Homestead + 129Mainland / Homestead (Linden Owned) + + - - - This is used to get a list of audio devices that can be used for render (playback) of voice. - + + No longer used, will always be 0 - - - This command is used to select the render device. - - The name of the device as returned by the Aux.GetRenderDevices command. + + Get a SL URL for the parcel + A string, containing a standard SLURL - - - This command is used to select the capture device. - - The name of the device as returned by the Aux.GetCaptureDevices command. + + Print the struct data as a string + A string containing the field name, and field value - + - This command is used to start the audio capture process which will cause - AuxAudioProperty Events to be raised. These events can be used to display a - microphone VU meter for the currently selected capture device. This command - should not be issued if the user is on a call. + An "Event" Listing summary - (unused but required) - - - - - This command is used to stop the audio capture process. - - - + + The ID of the event creator - - - This command is used to set the mic volume while in the audio tuning process. - Once an acceptable mic level is attained, the application must issue a - connector set mic volume command to have that level be used while on voice - calls. - - the microphone volume (-100 to 100 inclusive) - - + + The name of the event - - - This command is used to set the speaker volume while in the audio tuning - process. Once an acceptable speaker level is attained, the application must - issue a connector set speaker volume command to have that level be used while - on voice calls. - - the speaker volume (-100 to 100 inclusive) - - + + The events ID - - - This is used to initialize and stop the Connector as a whole. The Connector - Create call must be completed successfully before any other requests are made - (typically during application initialization). The shutdown should be called - when the application is shutting down to gracefully release resources - - A string value indicting the Application name - URL for the management server - LoggingSettings - - - - + + A string containing the short date/time the event will begin - - - Shutdown Connector -- Should be called when the application is shutting down - to gracefully release resources - - Handle returned from successful Connector �create� request + + The event start time in Unixtime (seconds since epoch) - - - Mute or unmute the microphone - - Handle returned from successful Connector �create� request - true (mute) or false (unmute) + + The events maturity rating - - - Mute or unmute the speaker - - Handle returned from successful Connector �create� request - true (mute) or false (unmute) + + Print the struct data as a string + A string containing the field name, and field value - + - Set microphone volume + The details of an "Event" - Handle returned from successful Connector �create� request - The level of the audio, a number between -100 and 100 where - 0 represents �normal� speaking volume - - - Set local speaker volume - - Handle returned from successful Connector �create� request - The level of the audio, a number between -100 and 100 where - 0 represents �normal� speaking volume + + The events ID - - - Start up the Voice service. - + + The ID of the event creator - - - Handle miscellaneous request status - - - - - - ///If something goes wrong, we log it. - - - Cleanup oject resources - + + The name of the event + + + The category + + + The events description + + + The short date/time the event will begin - - - Request voice cap when changing regions - + + The event start time in Unixtime (seconds since epoch) UTC adjusted - - - Handle a change in session state - + + The length of the event in minutes - - - Close a voice session - - - + + 0 if no cover charge applies - - - Locate a Session context from its handle - - Creates the session context if it does not exist. + + The cover charge amount in L$ if applicable - - - Handle completion of main voice cap request. - - - - - - - + + The name of the region where the event is being held - - - Daemon has started so connect to it. - + + The gridwide location of the event - - - The daemon TCP connection is open. - + + The maturity rating - - - Handle creation of the Connector. - + + Get a SL URL for the parcel where the event is hosted + A string, containing a standard SLURL - - - Handle response to audio output device query - + + Print the struct data as a string + A string containing the field name, and field value - - - Handle response to audio input device query - + + Contains the Event data returned from the data server from an EventInfoRequest - - - Set voice channel for new parcel - + + Construct a new instance of the EventInfoReplyEventArgs class + A single EventInfo object containing the details of an event - + - Request info from a parcel capability Uri. + A single EventInfo object containing the details of an event - - - - - Receive parcel voice cap - - - - - - - + + Contains the "Event" detail data returned from the data server - - - Tell Vivox where we are standing - - This has to be called when we move or turn. + + Construct a new instance of the DirEventsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Events" returned by the search query - - - Start and stop updating out position. - - - + + The ID returned by - - - Starts a thread that keeps the daemon running - - - - - + + A list of "Events" returned by the data server - - - Stops the daemon and the thread keeping it running - + + Contains the "Event" list data returned from the data server - - - - - - - - - + + Construct a new instance of PlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Places" returned by the data server query - - - Create a Session - Sessions typically represent a connection to a media session with one or more - participants. This is used to generate an �outbound� call to another user or - channel. The specifics depend on the media types involved. A session handle is - required to control the local user functions within the session (or remote - users if the current account has rights to do so). Currently creating a - session automatically connects to the audio media, there is no need to call - Session.Connect at this time, this is reserved for future use. - - Handle returned from successful Connector �create� request - This is the URI of the terminating point of the session (ie who/what is being called) - This is the display name of the entity being called (user or channel) - Only needs to be supplied when the target URI is password protected - This indicates the format of the password as passed in. This can either be - �ClearText� or �SHA1UserName�. If this element does not exist, it is assumed to be �ClearText�. If it is - �SHA1UserName�, the password as passed in is the SHA1 hash of the password and username concatenated together, - then base64 encoded, with the final �=� character stripped off. - - - - - - + + The ID returned by - - - Used to accept a call - - SessionHandle such as received from SessionNewEvent - "default" - - + + A list of "Places" returned by the data server - - - This command is used to start the audio render process, which will then play - the passed in file through the selected audio render device. This command - should not be issued if the user is on a call. - - The fully qualified path to the sound file. - True if the file is to be played continuously and false if it is should be played once. - - + + Contains the places data returned from the data server - - - This command is used to stop the audio render process. - - The fully qualified path to the sound file issued in the start render command. - - + + Construct a new instance of the DirPlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing land data returned by the data server - - - This is used to �end� an established session (i.e. hang-up or disconnect). - - Handle returned from successful Session �create� request or a SessionNewEvent - - + + The ID returned by - - - Set the combined speaking and listening position in 3D space. - - Handle returned from successful Session �create� request or a SessionNewEvent - Speaking position - Listening position - - + + A list containing Places data returned by the data server - - - Set User Volume for a particular user. Does not affect how other users hear that user. - - Handle returned from successful Session �create� request or a SessionNewEvent - - - The level of the audio, a number between -100 and 100 where 0 represents �normal� speaking volume - - + + Contains the classified data returned from the data server - - Positional vector of the users position + + Construct a new instance of the DirClassifiedsReplyEventArgs class + A list of classified ad data returned from the data server - - Velocity vector of the position + + A list containing Classified Ads returned by the data server - - At Orientation (X axis) of the position + + Contains the group data returned from the data server - - Up Orientation (Y axis) of the position + + Construct a new instance of the DirGroupsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of groups data returned by the data server - - Left Orientation (Z axis) of the position + + The ID returned by - - - Extract the avatar UUID encoded in a SIP URI - - - - - + + A list containing Groups data returned by the data server - - - Represents a single Voice Session to the Vivox service. - + + Contains the people data returned from the data server - - - Close this session. - + + Construct a new instance of the DirPeopleReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of people data returned by the data server - - - Look up an existing Participants in this session - - - - - + + The ID returned by - - - - - - - + + A list containing People data returned by the data server - - - A callback fired to indicate the status or final state of the requested texture. For progressive - downloads this will fire each time new asset data is returned from the simulator. - - The indicating either Progress for textures not fully downloaded, - or the final result of the request after it has been processed through the TexturePipeline - The object containing the Assets ID, raw data - and other information. For progressive rendering the will contain - the data from the beginning of the file. For failed, aborted and timed out requests it will contain - an empty byte array. + + Contains the land sales data returned from the data server + + + Construct a new instance of the DirLandReplyEventArgs class + A list of parcels for sale returned by the data server + + + A list containing land forsale data returned by the data server diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll index b9c73b7..59e39bb 100644 Binary files a/bin/OpenMetaverse.dll and b/bin/OpenMetaverse.dll differ diff --git a/bin/OpenMetaverse.dll.config b/bin/OpenMetaverse.dll.config index dc36a45..13fdc11 100644 --- a/bin/OpenMetaverse.dll.config +++ b/bin/OpenMetaverse.dll.config @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/bin/OpenMetaverseTypes.XML b/bin/OpenMetaverseTypes.XML index 69e5c1b..3903aea 100644 --- a/bin/OpenMetaverseTypes.XML +++ b/bin/OpenMetaverseTypes.XML @@ -1,2496 +1,1830 @@ - /home/root/libopenmetaverse/bin/OpenMetaverseTypes + OpenMetaverseTypes - + - Same as Queue except Dequeue function blocks until there is an object to return. - Note: This class does not need to be synchronized + A hierarchical token bucket for bandwidth throttling. See + http://en.wikipedia.org/wiki/Token_bucket for more information - + + Parent bucket to this bucket, or null if this is a root + bucket + + + Size of the bucket in bytes. If zero, the bucket has + infinite capacity + + + Rate that the bucket fills, in bytes per millisecond. If + zero, the bucket always remains full + + + Number of tokens currently in the bucket + + + Time of the last drip, in system ticks + + - Create new BlockingQueue. + Default constructor - The System.Collections.ICollection to copy elements from + Parent bucket if this is a child bucket, or + null if this is a root bucket + Maximum size of the bucket in bytes, or + zero if this bucket has no maximum capacity + Rate that the bucket fills, in bytes per + second. If zero, the bucket always remains full - + - Create new BlockingQueue. + Remove a given number of tokens from the bucket - The initial number of elements that the queue can contain + Number of tokens to remove from the bucket + True if the requested number of tokens were removed from + the bucket, otherwise false - + - Create new BlockingQueue. + Remove a given number of tokens from the bucket + Number of tokens to remove from the bucket + True if tokens were added to the bucket + during this call, otherwise false + True if the requested number of tokens were removed from + the bucket, otherwise false - + - Gets flag indicating if queue has been closed. + Add tokens to the bucket over time. The number of tokens added each + call depends on the length of time that has passed since the last + call to Drip + True if tokens were added to the bucket, otherwise false - + - BlockingQueue Destructor (Close queue, resume any waiting thread). + The parent bucket of this bucket, or null if this bucket has no + parent. The parent bucket will limit the aggregate bandwidth of all + of its children buckets - + - Remove all objects from the Queue. + Maximum burst rate in bytes per second. This is the maximum number + of tokens that can accumulate in the bucket at any one time - + - Remove all objects from the Queue, resume all dequeue threads. + The speed limit of this bucket in bytes per second. This is the + number of tokens that are added to the bucket per second + Tokens are added to the bucket any time + is called, at the granularity of + the system tick interval (typically around 15-22ms) - + - Removes and returns the object at the beginning of the Queue. + The number of bytes that can be sent at this moment. This is the + current number of tokens in the bucket + If this bucket has a parent bucket that does not have + enough tokens for a request, will + return false regardless of the content of this bucket - Object in queue. - + + X value + + + Y value + + + Z value + + + W value + + - Removes and returns the object at the beginning of the Queue. + Build a quaternion from normalized float values - time to wait before returning - Object in queue. + X value from -1.0 to 1.0 + Y value from -1.0 to 1.0 + Z value from -1.0 to 1.0 - + - Removes and returns the object at the beginning of the Queue. + Constructor, builds a quaternion object from a byte array - time to wait before returning (in milliseconds) - Object in queue. + Byte array containing four four-byte floats + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. - + - Adds an object to the end of the Queue + Normalizes the quaternion - Object to put in queue - + - Open Queue. + Builds a quaternion object from a byte array + The source byte array + Offset in the byte array to start reading at + Whether the source data is normalized or + not. If this is true 12 bytes will be read, otherwise 16 bytes will + be read. - + - Copy constructor + Normalize this quaternion and serialize it to a byte array - Circular queue to copy + A 12 byte array containing normalized X, Y, and Z floating + point values in order using little endian byte ordering - + - An 8-bit color structure including an alpha channel + Writes the raw bytes for this quaternion to a byte array + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array - + + Convert this quaternion to euler angles - - - - - - - - + X euler angle + Y euler angle + Z euler angle - + - Builds a color from a byte array + Convert this quaternion to an angle around an axis - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 + Unit vector describing the axis + Angle around the axis, in radians - + - Returns the raw bytes for this vector + Returns the conjugate (spatial inverse) of a quaternion - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted - A 16 byte array containing R, G, B, and A - + - Copy constructor + Build a quaternion from an axis and an angle of rotation around + that axis - Color to copy - - - Red - - - Green - - - Blue - - - Alpha - - - A Color4 with zero RGB values and fully opaque (alpha 1.0) - - - A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) - + - IComparable.CompareTo implementation + Build a quaternion from an axis and an angle of rotation around + that axis - Sorting ends up like this: |--Grayscale--||--Color--|. - Alpha is only used when the colors are otherwise equivalent + Axis of rotation + Angle of rotation - + - Builds a color from a byte array + Creates a quaternion from a vector containing roll, pitch, and yaw + in radians - Byte array containing a 16 byte color - Beginning position in the byte array - True if the byte array stores inverted values, - otherwise false. For example the color black (fully opaque) inverted - would be 0xFF 0xFF 0xFF 0x00 - True if the alpha value is inverted in - addition to whatever the inverted parameter is. Setting inverted true - and alphaInverted true will flip the alpha value back to non-inverted, - but keep the other color bytes inverted + Vector representation of the euler angles in + radians + Quaternion representation of the euler angles - + - Writes the raw bytes for this color to a byte array + Creates a quaternion from roll, pitch, and yaw euler angles in + radians - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array + X angle in radians + Y angle in radians + Z angle in radians + Quaternion representation of the euler angles - + - Serializes this color into four bytes in a byte array + Conjugates and renormalizes a vector - Destination byte array - Position in the destination array to start - writing. Must be at least 4 bytes before the end of the array - True to invert the output (1.0 becomes 0 - instead of 255) - + - Writes the raw bytes for this color to a byte array + Spherical linear interpolation between two quaternions - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - + - Ensures that values are in range 0-1 + Get a string representation of the quaternion elements with up to three + decimal digits and separated by spaces only + Raw string representation of the quaternion - + + A quaternion with a value of 0,0,0,1 + + - Create an RGB color from a hue, saturation, value combination + Same as Queue except Dequeue function blocks until there is an object to return. + Note: This class does not need to be synchronized - Hue - Saturation - Value - An fully opaque RGB color (alpha is 1.0) - + - Performs linear interpolation between two colors + Create new BlockingQueue. - Color to start at - Color to end at - Amount to interpolate - The interpolated color + The System.Collections.ICollection to copy elements from - + - Attribute class that allows extra attributes to be attached to ENUMs + Create new BlockingQueue. + The initial number of elements that the queue can contain - - Default initializer - - - Text used when presenting ENUM to user - - - Text used when presenting ENUM to user - - + - The different types of grid assets + Create new BlockingQueue. - - Unknown asset type - - - Texture asset, stores in JPEG2000 J2C stream format - - - Sound asset - - - Calling card for another avatar - - - Link to a location in world - - - Collection of textures and parameters that can be - worn by an avatar - - - Primitive that can contain textures, sounds, - scripts and more - - - Notecard asset - - - Holds a collection of inventory items - - - Root inventory folder - - - Linden scripting language script - - - LSO bytecode for a script - - - Uncompressed TGA texture - - - Collection of textures and shape parameters that can - be worn - - - Trash folder - - - Snapshot folder - - - Lost and found folder + + + BlockingQueue Destructor (Close queue, resume any waiting thread). + - - Uncompressed sound + + + Remove all objects from the Queue. + - - Uncompressed TGA non-square image, not to be used as a - texture + + + Remove all objects from the Queue, resume all dequeue threads. + - - Compressed JPEG non-square image, not to be used as a - texture + + + Removes and returns the object at the beginning of the Queue. + + Object in queue. - - Animation + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning + Object in queue. - - Sequence of animations, sounds, chat, and pauses + + + Removes and returns the object at the beginning of the Queue. + + time to wait before returning (in milliseconds) + Object in queue. - - Simstate file + + + Adds an object to the end of the Queue + + Object to put in queue - - Contains landmarks for favorites + + + Open Queue. + - - Asset is a link to another inventory item + + + Gets flag indicating if queue has been closed. + - - Asset is a link to another inventory folder + + Used for converting degrees to radians - - Beginning of the range reserved for ensembles + + Used for converting radians to degrees - - End of the range reserved for ensembles + + Provide a single instance of the CultureInfo class to + help parsing in situations where the grid assumes an en-us + culture - - Folder containing inventory links to wearables and attachments - that are part of the current outfit + + UNIX epoch in DateTime format - - Folder containing inventory items or links to - inventory items of wearables and attachments - together make a full outfit + + Provide a single instance of the MD5 class to avoid making + duplicate copies and handle thread safety - - Root folder for the folders of type OutfitFolder + + Provide a single instance of the SHA-1 class to avoid + making duplicate copies and handle thread safety - - Linden mesh format + + Provide a single instance of a random number generator + to avoid making duplicate copies and handle thread safety - + - Inventory Item Types, eg Script, Notecard, Folder, etc + Clamp a given value between a range + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper - - Unknown - - - Texture - - - Sound - - - Calling Card - - - Landmark - - - Notecard - - + + Clamp a given value between a range + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper - - Folder - - + + Clamp a given value between a range + Value to clamp + Minimum allowable value + Maximum allowable value + A value inclusively between lower and upper - - an LSL Script - - + + Round a floating-point value to the nearest integer + Floating point number to round + Integer - + + Test if a single precision float is a finite number - + + Test if a double precision float is a finite number - + + Get the distance between two floating-point values + First value + Second value + The distance between the two values - + + Compute the MD5 hash for a byte array + Byte array to compute the hash for + MD5 hash of the input data - + + Compute the SHA1 hash for a byte array + Byte array to compute the hash for + SHA1 hash of the input data - + - Item Sale Status + Calculate the SHA1 hash of a given string + The string to hash + The SHA1 hash as a string - - Not for sale - - - The original is for sale - - - Copies are for sale - - - The contents of the object are for sale - - - - Types of wearable assets - - - - Body shape - - - Skin textures and attributes - - - Hair - - - Eyes - - - Shirt - - - Pants - - - Shoes - - - Socks - - - Jacket - - - Gloves - - - Undershirt - - - Underpants - - - Skirt - - - Alpha mask to hide parts of the avatar - - - Tattoo - - - Invalid wearable asset - - + - Identifier code for primitive types + Compute the SHA256 hash for a byte array + Byte array to compute the hash for + SHA256 hash of the input data - - None - - - A Primitive - - - A Avatar - - - Linden grass - - - Linden tree - - - A primitive that acts as the source for a particle stream - - - A Linden tree - - + - Primary parameters for primitives such as Physics Enabled or Phantom + Calculate the SHA256 hash of a given string + The string to hash + The SHA256 hash as a string - - Deprecated - - - Whether physics are enabled for this object - - + + Calculate the MD5 hash of a given string + The password to hash + An MD5 hash in string format, with $1$ prepended - + + Calculate the MD5 hash of a given string + The string to hash + The MD5 hash as a string - + + Generate a random double precision floating point value + Random value of type double - + + Get the current running platform + Enumeration of the current platform we are running on - + + Get the current running runtime + Enumeration of the current runtime we are running on - + + Convert the first two bytes starting in the byte array in + little endian ordering to a signed short integer + An array two bytes or longer + A signed short integer, will be zero if a short can't be + read at the given position - - Whether this object contains an active touch script - - + + Convert the first two bytes starting at the given position in + little endian ordering to a signed short integer + An array two bytes or longer + Position in the array to start reading + A signed short integer, will be zero if a short can't be + read at the given position - - Whether this object can receive payments - - - Whether this object is phantom (no collisions) - - + + Convert the first four bytes starting at the given position in + little endian ordering to a signed integer + An array four bytes or longer + Position to start reading the int from + A signed integer, will be zero if an int can't be read + at the given position - + + Convert the first four bytes of the given array in little endian + ordering to a signed integer + An array four bytes or longer + A signed integer, will be zero if the array contains + less than four bytes - + + Convert the first eight bytes of the given array in little endian + ordering to a signed long integer + An array eight bytes or longer + A signed long integer, will be zero if the array contains + less than eight bytes - + + Convert the first eight bytes starting at the given position in + little endian ordering to a signed long integer + An array eight bytes or longer + Position to start reading the long from + A signed long integer, will be zero if a long can't be read + at the given position - - Deprecated - - + + Convert the first two bytes starting at the given position in + little endian ordering to an unsigned short + Byte array containing the ushort + Position to start reading the ushort from + An unsigned short, will be zero if a ushort can't be read + at the given position - + + Convert two bytes in little endian ordering to an unsigned short + Byte array containing the ushort + An unsigned short, will be zero if a ushort can't be + read - + + Convert the first four bytes starting at the given position in + little endian ordering to an unsigned integer + Byte array containing the uint + Position to start reading the uint from + An unsigned integer, will be zero if a uint can't be read + at the given position - - Deprecated - - + + Convert the first four bytes of the given array in little endian + ordering to an unsigned integer + An array four bytes or longer + An unsigned integer, will be zero if the array contains + less than four bytes - + + Convert the first eight bytes of the given array in little endian + ordering to an unsigned 64-bit integer + An array eight bytes or longer + An unsigned 64-bit integer, will be zero if the array + contains less than eight bytes - + + Convert four bytes in little endian ordering to a floating point + value + Byte array containing a little ending floating + point value + Starting position of the floating point value in + the byte array + Single precision value - + + Convert an integer to a byte array in little endian format + The integer to convert + A four byte little endian array - - Server flag, will not be sent to clients. Specifies that - the object is destroyed when it touches a simulator edge - - - Server flag, will not be sent to clients. Specifies that - the object will be returned to the owner's inventory when it - touches a simulator edge - - - Server flag, will not be sent to clients. - - - Server flag, will not be sent to client. Specifies that - the object is hovering/flying - - + + Convert an integer to a byte array in big endian format + The integer to convert + A four byte big endian array - + + Convert a 64-bit integer to a byte array in little endian format + The value to convert + An 8 byte little endian array - + + Convert a 64-bit unsigned integer to a byte array in little endian + format + The value to convert + An 8 byte little endian array - + + Convert a floating point value to four bytes in little endian + ordering + A floating point value + A four byte array containing the value in little endian + ordering - + - Sound flags for sounds attached to primitives + Converts an unsigned integer to a hexadecimal string + An unsigned integer to convert to a string + A hexadecimal string 10 characters long + 0x7fffffff - + + Convert a variable length UTF8 byte array to a string + The UTF8 encoded byte array to convert + The decoded string - + + Converts a byte array to a string containing hexadecimal characters + The byte array to convert to a string + The name of the field to prepend to each + line of the string + A string containing hexadecimal characters on multiple + lines. Each line is prepended with the field name - + + Converts a byte array to a string containing hexadecimal characters + The byte array to convert to a string + Number of bytes in the array to parse + A string to prepend to each line of the hex + dump + A string containing hexadecimal characters on multiple + lines. Each line is prepended with the field name - + + Convert a string to a UTF8 encoded byte array + The string to convert + A null-terminated UTF8 byte array - + + Converts a string containing hexadecimal characters to a byte array + String containing hexadecimal characters + If true, gracefully handles null, empty and + uneven strings as well as stripping unconvertable characters + The converted byte array - + + Returns true is c is a hexadecimal digit (A-F, a-f, 0-9) + Character to test + true if hex digit, false if not - + + Converts 1 or 2 character string into equivalant byte value + 1 or 2 character string + byte - + - Material type for a primitive + Convert a float value to a byte given a minimum and maximum range + Value to convert to a byte + Minimum value range + Maximum value range + A single byte representing the original float value - + + Convert a byte to a float value given a minimum and maximum range + Byte array to get the byte from + Position in the byte array the desired byte is at + Minimum value range + Maximum value range + A float value inclusively between lower and upper - + + Convert a byte to a float value given a minimum and maximum range + Byte to convert to a float value + Minimum value range + Maximum value range + A float value inclusively between lower and upper - + + Attempts to parse a floating point value from a string, using an + EN-US number format + String to parse + Resulting floating point number + True if the parse was successful, otherwise false - + + Attempts to parse a floating point value from a string, using an + EN-US number format + String to parse + Resulting floating point number + True if the parse was successful, otherwise false - + + Tries to parse an unsigned 32-bit integer from a hexadecimal string + String to parse + Resulting integer + True if the parse was successful, otherwise false - + + Takes an AssetType and returns the string representation + The source + The string version of the AssetType - + + Translate a string name of an AssetType into the proper Type + A string containing the AssetType name + The AssetType which matches the string name, or AssetType.Unknown if no match was found - + + Convert an InventoryType to a string + The to convert + A string representation of the source - + - Used in a helper function to roughly determine prim shape + Convert a string into a valid InventoryType + A string representation of the InventoryType to convert + A InventoryType object which matched the type - + - Extra parameters for primitives, these flags are for features that have - been added after the original ObjectFlags that has all eight bits - reserved already + Convert a SaleType to a string + The to convert + A string representation of the source - - Whether this object has flexible parameters - - - Whether this object has light parameters - - - Whether this object is a sculpted prim - - + + Convert a string into a valid SaleType + A string representation of the SaleType to convert + A SaleType object which matched the type - + + Copy a byte array + Byte array to copy + A copy of the given byte array - + + Packs to 32-bit unsigned integers in to a 64-bit unsigned integer + The left-hand (or X) value + The right-hand (or Y) value + A 64-bit integer containing the two 32-bit input values - + + Unpacks two 32-bit unsigned integers from a 64-bit unsigned integer + The 64-bit input integer + The left-hand (or X) output value + The right-hand (or Y) output value - + + Convert an IP address object to an unsigned 32-bit integer + IP address to convert + 32-bit unsigned integer holding the IP address bits - + + Gets a unix timestamp for the current time + An unsigned integer representing a unix timestamp for now - + + Convert a UNIX timestamp to a native DateTime object + An unsigned integer representing a UNIX + timestamp + A DateTime object containing the same time specified in + the given timestamp - + + Convert a UNIX timestamp to a native DateTime object + A signed integer representing a UNIX + timestamp + A DateTime object containing the same time specified in + the given timestamp - + + Convert a native DateTime object to a UNIX timestamp + A DateTime object you want to convert to a + timestamp + An unsigned integer representing a UNIX timestamp - + + Swap two values + Type of the values to swap + First value + Second value - + + Try to parse an enumeration value from a string + Enumeration type + String value to parse + Enumeration value on success + True if the parsing succeeded, otherwise false - + + Swaps the high and low words in a byte. Converts aaaabbbb to bbbbaaaa + Byte to swap the words in + Byte value with the words swapped - + + Attempts to convert a string representation of a hostname or IP + address to a + Hostname to convert to an IPAddress + Converted IP address object, or null if the conversion + failed - + + Operating system - - - + + Unknown - - - + + Microsoft Windows - - - + + Microsoft Windows CE - - - + + Linux + + + Apple OSX - + + Runtime platform - + + .NET runtime + + + Mono runtime: http://www.mono-project.com/ + + + Convert this matrix to euler rotations + X euler angle + Y euler angle + Z euler angle - + + Convert this matrix to a quaternion rotation + A quaternion representation of this rotation matrix - + + Construct a matrix from euler rotation values in radians + X euler angle in radians + Y euler angle in radians + Z euler angle in radians - + + Get a formatted string representation of the vector + A string representation of the vector + + + A 4x4 matrix containing all zeroes + + + A 4x4 identity matrix - + + For thread safety + + + For thread safety + + + Purges expired objects from the cache. Called automatically by the purge timer. - + + X value + + + Y value + + + Z value + + + W value + + + Constructor, builds a vector from a byte array + Byte array containing four four-byte floats + Beginning position in the byte array - + + Test if this vector is equal to another vector, within a given + tolerance range + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false - + + IComparable.CompareTo implementation - + + Test if this vector is composed of all finite numbers - + + Builds a vector from a byte array + Byte array containing a 16 byte vector + Beginning position in the byte array - + + Returns the raw bytes for this vector + A 16 byte array containing X, Y, Z, and W - + + Writes the raw bytes for this vector to a byte array + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array - + - Attachment points for objects on avatar bodies + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only - - Both InventoryObject and InventoryAttachment types can be attached - - - - Right hand if object was not previously attached - - - Chest - - - Skull - - - Left shoulder - - - Right shoulder - - - Left hand + Raw string representation of the vector - - Right hand + + A vector with a value of 0,0,0,0 - - Left foot + + A vector with a value of 1,1,1,1 - - Right foot + + A vector with a value of 1,0,0,0 - - Spine + + A vector with a value of 0,1,0,0 - - Pelvis + + A vector with a value of 0,0,1,0 - - Mouth + + A vector with a value of 0,0,0,1 - - Chin + + + Provides helper methods for parallelizing loops + - - Left ear + + + Executes a for loop in which iterations may run in parallel + + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop - - Right ear + + + Executes a for loop in which iterations may run in parallel + + The number of concurrent execution threads to run + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop - - Left eyeball + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + An enumerable collection to iterate over + Method body to run for each object in the collection - - Right eyeball - - - Nose - - - Right upper arm - - - Right forearm - - - Left upper arm - - - Left forearm - - - Right hip - - - Right upper leg - - - Right lower leg - - - Left hip - - - Left upper leg - - - Left lower leg - - - Stomach - - - Left pectoral - - - Right pectoral - - - HUD Center position 2 - - - HUD Top-right - - - HUD Top - - - HUD Top-left - - - HUD Center - - - HUD Bottom-left - - - HUD Bottom - - - HUD Bottom-right - - + - Tree foliage types + Executes a foreach loop in which iterations may run in parallel + Object type that the collection wraps + The number of concurrent execution threads to run + An enumerable collection to iterate over + Method body to run for each object in the collection - - Pine1 tree - - - Oak tree - - - Tropical Bush1 - - - Palm1 tree - - - Dogwood tree - - - Tropical Bush2 - - - Palm2 tree - - - Cypress1 tree - - - Cypress2 tree - - - Pine2 tree - - - Plumeria - - - Winter pinetree1 - - - Winter Aspen tree - - - Winter pinetree2 - - - Eucalyptus tree - - - Fern - - - Eelgrass + + + Executes a series of tasks in parallel + + A series of method bodies to execute - - Sea Sword + + + Executes a series of tasks in parallel + + The number of concurrent execution threads to run + A series of method bodies to execute - - Kelp1 plant + + + A three-dimensional vector with floating-point values + - - Beach grass + + X value - - Kelp2 plant + + Y value - - - Grass foliage types - + + Z value - + + Constructor, builds a vector from a byte array + Byte array containing three four-byte floats + Beginning position in the byte array - + + Test if this vector is equal to another vector, within a given + tolerance range + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false - + + IComparable.CompareTo implementation - + + Test if this vector is composed of all finite numbers - + + Builds a vector from a byte array + Byte array containing a 12 byte vector + Beginning position in the byte array - + + Returns the raw bytes for this vector + A 12 byte array containing X, Y, and Z - + - Action associated with clicking on an object + Writes the raw bytes for this vector to a byte array + Destination byte array + Position in the destination array to start + writing. Must be at least 12 bytes before the end of the array - - Touch object - - - Sit on object - - - Purchase object or contents - - - Pay the object - - - Open task inventory - - - Play parcel media - - - Open parcel media - - - For thread safety - - - For thread safety - - + - Purges expired objects from the cache. Called automatically by the purge timer. + Parse a vector from a string + A string representation of a 3D vector, enclosed + in arrow brackets and separated by commas - + - A thread-safe lockless queue that supports multiple readers and - multiple writers + Calculate the rotation between two vectors + Normalized directional vector (such as 1,0,0 for forward facing) + Normalized target vector - + - Constructor + Interpolates between two vectors using a cubic equation - + - Provides a node container for data in a singly linked list + Get a formatted string representation of the vector + A string representation of the vector - + - Constructor + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + Raw string representation of the vector - + - Constructor + Cross product between two vectors - - Pointer to the next node in list - - - The data contained by the node + + A vector with a value of 0,0,0 - - Queue head + + A vector with a value of 1,1,1 - - Queue tail + + A unit vector facing forward (X axis), value 1,0,0 - - Queue item count + + A unit vector facing left (Y axis), value 0,1,0 - - Gets the current number of items in the queue. Since this - is a lockless collection this value should be treated as a close - estimate + + A unit vector facing up (Z axis), value 0,0,1 - + - Enqueue an item + A 128-bit Universally Unique Identifier, used throughout the Second + Life networking protocol - Item to enqeue - + + The System.Guid object this struct wraps around + + - Try to dequeue an item + Constructor that takes a string UUID representation - Dequeued item if the dequeue was successful - True if an item was successfully deqeued, otherwise false - - - A 4x4 matrix containing all zeroes - - - A 4x4 identity matrix + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") - + - Convert this matrix to euler rotations + Constructor that takes a System.Guid object - X euler angle - Y euler angle - Z euler angle + A Guid object that contains the unique identifier + to be represented by this UUID - + - Convert this matrix to a quaternion rotation + Constructor that takes a byte array containing a UUID - A quaternion representation of this rotation matrix + Byte array containing a 16 byte UUID + Beginning offset in the array - + - Construct a matrix from euler rotation values in radians + Constructor that takes an unsigned 64-bit unsigned integer to + convert to a UUID - X euler angle in radians - Y euler angle in radians - Z euler angle in radians + 64-bit unsigned integer to convert to a UUID - + - Get a formatted string representation of the vector + Copy constructor - A string representation of the vector + UUID to copy - + - Provides helper methods for parallelizing loops + IComparable.CompareTo implementation - + - Executes a for loop in which iterations may run in parallel + Assigns this UUID from 16 bytes out of a byte array - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop + Byte array containing the UUID to assign this UUID to + Starting position of the UUID in the byte array - + - Executes a for loop in which iterations may run in parallel + Returns a copy of the raw bytes for this UUID - The number of concurrent execution threads to run - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop + A 16 byte array containing this UUID - + - Executes a foreach loop in which iterations may run in parallel + Writes the raw bytes for this UUID to a byte array - Object type that the collection wraps - An enumerable collection to iterate over - Method body to run for each object in the collection + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array - + - Executes a foreach loop in which iterations may run in parallel + Calculate an LLCRC (cyclic redundancy check) for this UUID - Object type that the collection wraps - The number of concurrent execution threads to run - An enumerable collection to iterate over - Method body to run for each object in the collection + The CRC checksum for this UUID - + - Executes a series of tasks in parallel + Create a 64-bit integer representation from the second half of this UUID - A series of method bodies to execute + An integer created from the last eight bytes of this UUID - + - Executes a series of tasks in parallel + Generate a UUID from a string - The number of concurrent execution threads to run - A series of method bodies to execute + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") - + - Build a quaternion from normalized float values + Generate a UUID from a string - X value from -1.0 to 1.0 - Y value from -1.0 to 1.0 - Z value from -1.0 to 1.0 + A string representation of a UUID, case + insensitive and can either be hyphenated or non-hyphenated + Will contain the parsed UUID if successful, + otherwise null + True if the string was successfully parse, otherwise false + UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) - + - Constructor, builds a quaternion object from a byte array + Combine two UUIDs together by taking the MD5 hash of a byte array + containing both UUIDs - Byte array containing four four-byte floats - Offset in the byte array to start reading at - Whether the source data is normalized or - not. If this is true 12 bytes will be read, otherwise 16 bytes will - be read. - - - X value - - - Y value - - - Z value - - - W value - - - A quaternion with a value of 0,0,0,1 + First UUID to combine + Second UUID to combine + The UUID product of the combination - + - Normalizes the quaternion + + - + - Builds a quaternion object from a byte array + Return a hash code for this UUID, used by .NET for hash tables - The source byte array - Offset in the byte array to start reading at - Whether the source data is normalized or - not. If this is true 12 bytes will be read, otherwise 16 bytes will - be read. + An integer composed of all the UUID bytes XORed together - + - Normalize this quaternion and serialize it to a byte array + Comparison function - A 12 byte array containing normalized X, Y, and Z floating - point values in order using little endian byte ordering + An object to compare to this UUID + True if the object is a UUID and both UUIDs are equal - + - Writes the raw bytes for this quaternion to a byte array + Comparison function - Destination byte array - Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array + UUID to compare to + True if the UUIDs are equal, otherwise false - + - Convert this quaternion to euler angles + Get a hyphenated string representation of this UUID - X euler angle - Y euler angle - Z euler angle + A string representation of this UUID, lowercase and + with hyphens + 11f8aa9c-b071-4242-836b-13b7abe0d489 - + - Convert this quaternion to an angle around an axis + Equals operator - Unit vector describing the axis - Angle around the axis, in radians + First UUID for comparison + Second UUID for comparison + True if the UUIDs are byte for byte equal, otherwise false - + - Returns the conjugate (spatial inverse) of a quaternion + Not equals operator + First UUID for comparison + Second UUID for comparison + True if the UUIDs are not equal, otherwise true - + - Build a quaternion from an axis and an angle of rotation around - that axis + XOR operator + First UUID + Second UUID + A UUID that is a XOR combination of the two input UUIDs - + - Build a quaternion from an axis and an angle of rotation around - that axis + String typecasting operator - Axis of rotation - Angle of rotation + A UUID in string form. Case insensitive, + hyphenated or non-hyphenated + A UUID built from the string representation - + + An UUID with a value of all zeroes + + + A cache of UUID.Zero as a string to optimize a common path + + - Creates a quaternion from a vector containing roll, pitch, and yaw - in radians + A two-dimensional vector with floating-point values - Vector representation of the euler angles in - radians - Quaternion representation of the euler angles - + + X value + + + Y value + + - Creates a quaternion from roll, pitch, and yaw euler angles in - radians + Test if this vector is equal to another vector, within a given + tolerance range - X angle in radians - Y angle in radians - Z angle in radians - Quaternion representation of the euler angles + Vector to test against + The acceptable magnitude of difference + between the two vectors + True if the magnitude of difference between the two vectors + is less than the given tolerance, otherwise false - + - Conjugates and renormalizes a vector + Test if this vector is composed of all finite numbers - + - Spherical linear interpolation between two quaternions + IComparable.CompareTo implementation - + - Get a string representation of the quaternion elements with up to three - decimal digits and separated by spaces only + Builds a vector from a byte array - Raw string representation of the quaternion + Byte array containing two four-byte floats + Beginning position in the byte array - + - Determines the appropriate events to set, leaves the locks, and sets the events. + Returns the raw bytes for this vector + An eight-byte array containing X and Y - + - A routine for lazily creating a event outside the lock (so if errors - happen they are outside the lock and that we don't do much work - while holding a spin lock). If all goes well, reenter the lock and - set 'waitEvent' + Writes the raw bytes for this vector to a byte array + Destination byte array + Position in the destination array to start + writing. Must be at least 8 bytes before the end of the array - + - Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. - Before the wait 'numWaiters' is incremented and is restored before leaving this routine. + Parse a vector from a string + A string representation of a 2D vector, enclosed + in arrow brackets and separated by commas - + - A hierarchical token bucket for bandwidth throttling. See - http://en.wikipedia.org/wiki/Token_bucket for more information + Interpolates between two vectors using a cubic equation - + - Default constructor + Get a formatted string representation of the vector - Parent bucket if this is a child bucket, or - null if this is a root bucket - Maximum size of the bucket in bytes, or - zero if this bucket has no maximum capacity - Rate that the bucket fills, in bytes per - second. If zero, the bucket always remains full + A string representation of the vector - - Parent bucket to this bucket, or null if this is a root - bucket + + + Get a string representation of the vector elements with up to three + decimal digits and separated by spaces only + + Raw string representation of the vector - - Size of the bucket in bytes. If zero, the bucket has - infinite capacity + + A vector with a value of 0,0 - - Rate that the bucket fills, in bytes per millisecond. If - zero, the bucket always remains full + + A vector with a value of 1,1 - - Number of tokens currently in the bucket + + A vector with a value of 1,0 - - Time of the last drip, in system ticks + + A vector with a value of 0,1 - + - The parent bucket of this bucket, or null if this bucket has no - parent. The parent bucket will limit the aggregate bandwidth of all - of its children buckets + An 8-bit color structure including an alpha channel - - - Maximum burst rate in bytes per second. This is the maximum number - of tokens that can accumulate in the bucket at any one time - + + Red - - - The speed limit of this bucket in bytes per second. This is the - number of tokens that are added to the bucket per second - - Tokens are added to the bucket any time - is called, at the granularity of - the system tick interval (typically around 15-22ms) + + Green - - - The number of bytes that can be sent at this moment. This is the - current number of tokens in the bucket - If this bucket has a parent bucket that does not have - enough tokens for a request, will - return false regardless of the content of this bucket + + Blue - - - Remove a given number of tokens from the bucket - - Number of tokens to remove from the bucket - True if the requested number of tokens were removed from - the bucket, otherwise false + + Alpha - + - Remove a given number of tokens from the bucket + - Number of tokens to remove from the bucket - True if tokens were added to the bucket - during this call, otherwise false - True if the requested number of tokens were removed from - the bucket, otherwise false + + + + - + - Add tokens to the bucket over time. The number of tokens added each - call depends on the length of time that has passed since the last - call to Drip - - True if tokens were added to the bucket, otherwise false - - - - A 128-bit Universally Unique Identifier, used throughout the Second - Life networking protocol - - - - - Constructor that takes a string UUID representation - - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID("11f8aa9c-b071-4242-836b-13b7abe0d489") - - - - Constructor that takes a System.Guid object - - A Guid object that contains the unique identifier - to be represented by this UUID - - - - Constructor that takes a byte array containing a UUID + Builds a color from a byte array - Byte array containing a 16 byte UUID - Beginning offset in the array + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 - + - Constructor that takes an unsigned 64-bit unsigned integer to - convert to a UUID + Returns the raw bytes for this vector - 64-bit unsigned integer to convert to a UUID + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted + A 16 byte array containing R, G, B, and A - + Copy constructor - UUID to copy - - - The System.Guid object this struct wraps around - - - An UUID with a value of all zeroes - - - A cache of UUID.Zero as a string to optimize a common path + Color to copy - + IComparable.CompareTo implementation + Sorting ends up like this: |--Grayscale--||--Color--|. + Alpha is only used when the colors are otherwise equivalent - - - Assigns this UUID from 16 bytes out of a byte array - - Byte array containing the UUID to assign this UUID to - Starting position of the UUID in the byte array - - + - Returns a copy of the raw bytes for this UUID + Builds a color from a byte array - A 16 byte array containing this UUID + Byte array containing a 16 byte color + Beginning position in the byte array + True if the byte array stores inverted values, + otherwise false. For example the color black (fully opaque) inverted + would be 0xFF 0xFF 0xFF 0x00 + True if the alpha value is inverted in + addition to whatever the inverted parameter is. Setting inverted true + and alphaInverted true will flip the alpha value back to non-inverted, + but keep the other color bytes inverted - + - Writes the raw bytes for this UUID to a byte array + Writes the raw bytes for this color to a byte array Destination byte array Position in the destination array to start writing. Must be at least 16 bytes before the end of the array - + - Calculate an LLCRC (cyclic redundancy check) for this UUID + Serializes this color into four bytes in a byte array - The CRC checksum for this UUID + Destination byte array + Position in the destination array to start + writing. Must be at least 4 bytes before the end of the array + True to invert the output (1.0 becomes 0 + instead of 255) - + - Create a 64-bit integer representation from the second half of this UUID + Writes the raw bytes for this color to a byte array - An integer created from the last eight bytes of this UUID + Destination byte array + Position in the destination array to start + writing. Must be at least 16 bytes before the end of the array - + - Generate a UUID from a string + Ensures that values are in range 0-1 - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - UUID.Parse("11f8aa9c-b071-4242-836b-13b7abe0d489") - + - Generate a UUID from a string + Create an RGB color from a hue, saturation, value combination - A string representation of a UUID, case - insensitive and can either be hyphenated or non-hyphenated - Will contain the parsed UUID if successful, - otherwise null - True if the string was successfully parse, otherwise false - UUID.TryParse("11f8aa9c-b071-4242-836b-13b7abe0d489", result) + Hue + Saturation + Value + An fully opaque RGB color (alpha is 1.0) - + - Combine two UUIDs together by taking the MD5 hash of a byte array - containing both UUIDs + Performs linear interpolation between two colors - First UUID to combine - Second UUID to combine - The UUID product of the combination + Color to start at + Color to end at + Amount to interpolate + The interpolated color - - - - - + + A Color4 with zero RGB values and fully opaque (alpha 1.0) - - - Return a hash code for this UUID, used by .NET for hash tables - - An integer composed of all the UUID bytes XORed together + + A Color4 with full RGB values (1.0) and fully opaque (alpha 1.0) - + - Comparison function + The different types of grid assets - An object to compare to this UUID - True if the object is a UUID and both UUIDs are equal - - - Comparison function - - UUID to compare to - True if the UUIDs are equal, otherwise false + + Unknown asset type - - - Get a hyphenated string representation of this UUID - - A string representation of this UUID, lowercase and - with hyphens - 11f8aa9c-b071-4242-836b-13b7abe0d489 + + Texture asset, stores in JPEG2000 J2C stream format - - - Equals operator - - First UUID for comparison - Second UUID for comparison - True if the UUIDs are byte for byte equal, otherwise false + + Sound asset - - - Not equals operator - - First UUID for comparison - Second UUID for comparison - True if the UUIDs are not equal, otherwise true + + Calling card for another avatar - - - XOR operator - - First UUID - Second UUID - A UUID that is a XOR combination of the two input UUIDs + + Link to a location in world - - - String typecasting operator - - A UUID in string form. Case insensitive, - hyphenated or non-hyphenated - A UUID built from the string representation + + Collection of textures and parameters that can be + worn by an avatar - - - Operating system - + + Primitive that can contain textures, sounds, + scripts and more - - Unknown + + Notecard asset - - Microsoft Windows + + Holds a collection of inventory items - - Microsoft Windows CE + + Root inventory folder - - Linux + + Linden scripting language script - - Apple OSX + + LSO bytecode for a script - - - Runtime platform - + + Uncompressed TGA texture - - .NET runtime + + Collection of textures and shape parameters that can + be worn - - Mono runtime: http://www.mono-project.com/ + + Trash folder - - Used for converting degrees to radians + + Snapshot folder - - Used for converting radians to degrees - - - Provide a single instance of the CultureInfo class to - help parsing in situations where the grid assumes an en-us - culture - - - UNIX epoch in DateTime format - - - Provide a single instance of the MD5 class to avoid making - duplicate copies and handle thread safety - - - Provide a single instance of the SHA-1 class to avoid - making duplicate copies and handle thread safety - - - Provide a single instance of a random number generator - to avoid making duplicate copies and handle thread safety - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Clamp a given value between a range - - Value to clamp - Minimum allowable value - Maximum allowable value - A value inclusively between lower and upper - - - - Round a floating-point value to the nearest integer - - Floating point number to round - Integer - - - - Test if a single precision float is a finite number - - - - - Test if a double precision float is a finite number - - - - - Get the distance between two floating-point values - - First value - Second value - The distance between the two values - - - - Compute the MD5 hash for a byte array - - Byte array to compute the hash for - MD5 hash of the input data - - - - Compute the SHA1 hash for a byte array - - Byte array to compute the hash for - SHA1 hash of the input data - - - - Calculate the SHA1 hash of a given string - - The string to hash - The SHA1 hash as a string - - - - Compute the SHA256 hash for a byte array - - Byte array to compute the hash for - SHA256 hash of the input data - - - - Calculate the SHA256 hash of a given string - - The string to hash - The SHA256 hash as a string - - - - Calculate the MD5 hash of a given string - - The password to hash - An MD5 hash in string format, with $1$ prepended - - - - Calculate the MD5 hash of a given string - - The string to hash - The MD5 hash as a string - - - - Generate a random double precision floating point value - - Random value of type double - - - - Get the current running platform - - Enumeration of the current platform we are running on - - - - Get the current running runtime - - Enumeration of the current runtime we are running on - - - - Convert the first two bytes starting in the byte array in - little endian ordering to a signed short integer - - An array two bytes or longer - A signed short integer, will be zero if a short can't be - read at the given position - - - - Convert the first two bytes starting at the given position in - little endian ordering to a signed short integer - - An array two bytes or longer - Position in the array to start reading - A signed short integer, will be zero if a short can't be - read at the given position - - - - Convert the first four bytes starting at the given position in - little endian ordering to a signed integer - - An array four bytes or longer - Position to start reading the int from - A signed integer, will be zero if an int can't be read - at the given position - - - - Convert the first four bytes of the given array in little endian - ordering to a signed integer - - An array four bytes or longer - A signed integer, will be zero if the array contains - less than four bytes - - - - Convert the first eight bytes of the given array in little endian - ordering to a signed long integer - - An array eight bytes or longer - A signed long integer, will be zero if the array contains - less than eight bytes - - - - Convert the first eight bytes starting at the given position in - little endian ordering to a signed long integer - - An array eight bytes or longer - Position to start reading the long from - A signed long integer, will be zero if a long can't be read - at the given position - - - - Convert the first two bytes starting at the given position in - little endian ordering to an unsigned short - - Byte array containing the ushort - Position to start reading the ushort from - An unsigned short, will be zero if a ushort can't be read - at the given position - - - - Convert two bytes in little endian ordering to an unsigned short - - Byte array containing the ushort - An unsigned short, will be zero if a ushort can't be - read - - - - Convert the first four bytes starting at the given position in - little endian ordering to an unsigned integer - - Byte array containing the uint - Position to start reading the uint from - An unsigned integer, will be zero if a uint can't be read - at the given position - - - - Convert the first four bytes of the given array in little endian - ordering to an unsigned integer - - An array four bytes or longer - An unsigned integer, will be zero if the array contains - less than four bytes - - - - Convert the first eight bytes of the given array in little endian - ordering to an unsigned 64-bit integer - - An array eight bytes or longer - An unsigned 64-bit integer, will be zero if the array - contains less than eight bytes - - - - Convert four bytes in little endian ordering to a floating point - value - - Byte array containing a little ending floating - point value - Starting position of the floating point value in - the byte array - Single precision value - - - - Convert an integer to a byte array in little endian format - - The integer to convert - A four byte little endian array - - - - Convert an integer to a byte array in big endian format - - The integer to convert - A four byte big endian array - - - - Convert a 64-bit integer to a byte array in little endian format - - The value to convert - An 8 byte little endian array - - - - Convert a 64-bit unsigned integer to a byte array in little endian - format - - The value to convert - An 8 byte little endian array - - - - Convert a floating point value to four bytes in little endian - ordering - - A floating point value - A four byte array containing the value in little endian - ordering - - - - Converts an unsigned integer to a hexadecimal string - - An unsigned integer to convert to a string - A hexadecimal string 10 characters long - 0x7fffffff - - - - Convert a variable length UTF8 byte array to a string - - The UTF8 encoded byte array to convert - The decoded string - - - - Converts a byte array to a string containing hexadecimal characters - - The byte array to convert to a string - The name of the field to prepend to each - line of the string - A string containing hexadecimal characters on multiple - lines. Each line is prepended with the field name - - - - Converts a byte array to a string containing hexadecimal characters - - The byte array to convert to a string - Number of bytes in the array to parse - A string to prepend to each line of the hex - dump - A string containing hexadecimal characters on multiple - lines. Each line is prepended with the field name - - - - Convert a string to a UTF8 encoded byte array - - The string to convert - A null-terminated UTF8 byte array - - - - Converts a string containing hexadecimal characters to a byte array - - String containing hexadecimal characters - If true, gracefully handles null, empty and - uneven strings as well as stripping unconvertable characters - The converted byte array - - - - Returns true is c is a hexadecimal digit (A-F, a-f, 0-9) - - Character to test - true if hex digit, false if not - - - - Converts 1 or 2 character string into equivalant byte value - - 1 or 2 character string - byte - - - - Convert a float value to a byte given a minimum and maximum range - - Value to convert to a byte - Minimum value range - Maximum value range - A single byte representing the original float value - - - - Convert a byte to a float value given a minimum and maximum range - - Byte array to get the byte from - Position in the byte array the desired byte is at - Minimum value range - Maximum value range - A float value inclusively between lower and upper - - - - Convert a byte to a float value given a minimum and maximum range - - Byte to convert to a float value - Minimum value range - Maximum value range - A float value inclusively between lower and upper - - - - Attempts to parse a floating point value from a string, using an - EN-US number format - - String to parse - Resulting floating point number - True if the parse was successful, otherwise false - - - - Attempts to parse a floating point value from a string, using an - EN-US number format - - String to parse - Resulting floating point number - True if the parse was successful, otherwise false - - - - Tries to parse an unsigned 32-bit integer from a hexadecimal string - - String to parse - Resulting integer - True if the parse was successful, otherwise false - - - - Returns text specified in EnumInfo attribute of the enumerator - To add the text use [EnumInfo(Text = "Some nice text here")] before declaration - of enum values - - Enum value - Text representation of the enum - - - - Takes an AssetType and returns the string representation - - The source - The string version of the AssetType - - - - Translate a string name of an AssetType into the proper Type - - A string containing the AssetType name - The AssetType which matches the string name, or AssetType.Unknown if no match was found - - - - Convert an InventoryType to a string - - The to convert - A string representation of the source - - - - Convert a string into a valid InventoryType - - A string representation of the InventoryType to convert - A InventoryType object which matched the type + + Lost and found folder - - - Convert a SaleType to a string - - The to convert - A string representation of the source + + Uncompressed sound - - - Convert a string into a valid SaleType - - A string representation of the SaleType to convert - A SaleType object which matched the type + + Uncompressed TGA non-square image, not to be used as a + texture - - - Converts a string used in LLSD to AttachmentPoint type - - String representation of AttachmentPoint to convert - AttachmentPoint enum + + Compressed JPEG non-square image, not to be used as a + texture - - - Copy a byte array - - Byte array to copy - A copy of the given byte array + + Animation - - - Packs to 32-bit unsigned integers in to a 64-bit unsigned integer - - The left-hand (or X) value - The right-hand (or Y) value - A 64-bit integer containing the two 32-bit input values + + Sequence of animations, sounds, chat, and pauses - - - Unpacks two 32-bit unsigned integers from a 64-bit unsigned integer - - The 64-bit input integer - The left-hand (or X) output value - The right-hand (or Y) output value + + Simstate file - - - Convert an IP address object to an unsigned 32-bit integer - - IP address to convert - 32-bit unsigned integer holding the IP address bits + + Contains landmarks for favorites - - - Gets a unix timestamp for the current time - - An unsigned integer representing a unix timestamp for now + + Asset is a link to another inventory item - - - Convert a UNIX timestamp to a native DateTime object - - An unsigned integer representing a UNIX - timestamp - A DateTime object containing the same time specified in - the given timestamp + + Asset is a link to another inventory folder - - - Convert a UNIX timestamp to a native DateTime object - - A signed integer representing a UNIX - timestamp - A DateTime object containing the same time specified in - the given timestamp + + Beginning of the range reserved for ensembles - - - Convert a native DateTime object to a UNIX timestamp - - A DateTime object you want to convert to a - timestamp - An unsigned integer representing a UNIX timestamp + + End of the range reserved for ensembles - - - Swap two values - - Type of the values to swap - First value - Second value + + Folder containing inventory links to wearables and attachments + that are part of the current outfit - - - Try to parse an enumeration value from a string - - Enumeration type - String value to parse - Enumeration value on success - True if the parsing succeeded, otherwise false + + Folder containing inventory items or links to + inventory items of wearables and attachments + together make a full outfit - - - Swaps the high and low words in a byte. Converts aaaabbbb to bbbbaaaa - - Byte to swap the words in - Byte value with the words swapped + + Root folder for the folders of type OutfitFolder - - - Attempts to convert a string representation of a hostname or IP - address to a - Hostname to convert to an IPAddress - Converted IP address object, or null if the conversion - failed + + - + - A two-dimensional vector with floating-point values + Inventory Item Types, eg Script, Notecard, Folder, etc - - X value - - - Y value - - - A vector with a value of 0,0 - - - A vector with a value of 1,1 + + Unknown - - A vector with a value of 1,0 + + Texture - - A vector with a value of 0,1 + + Sound - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false + + Calling Card - - - Test if this vector is composed of all finite numbers - + + Landmark - - - IComparable.CompareTo implementation - + + Notecard - - - Builds a vector from a byte array - - Byte array containing two four-byte floats - Beginning position in the byte array + + - - - Returns the raw bytes for this vector - - An eight-byte array containing X and Y + + Folder - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 8 bytes before the end of the array + + - - - Parse a vector from a string - - A string representation of a 2D vector, enclosed - in arrow brackets and separated by commas + + an LSL Script - - - Interpolates between two vectors using a cubic equation - + + - - - Get a formatted string representation of the vector - - A string representation of the vector + + - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector + + - - - A three-dimensional vector with floating-point values - + + - + + + + - Constructor, builds a vector from a byte array + Item Sale Status - Byte array containing three four-byte floats - Beginning position in the byte array - - X value + + Not for sale - - Y value + + The original is for sale - - Z value + + Copies are for sale - - A vector with a value of 0,0,0 + + The contents of the object are for sale - - A vector with a value of 1,1,1 + + + Types of wearable assets + - - A unit vector facing forward (X axis), value 1,0,0 + + Body shape - - A unit vector facing left (Y axis), value 0,1,0 + + Skin textures and attributes - - A unit vector facing up (Z axis), value 0,0,1 + + Hair - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false + + Eyes - - - IComparable.CompareTo implementation - + + Shirt - - - Test if this vector is composed of all finite numbers - + + Pants - - - Builds a vector from a byte array - - Byte array containing a 12 byte vector - Beginning position in the byte array + + Shoes - - - Returns the raw bytes for this vector - - A 12 byte array containing X, Y, and Z + + Socks - - - Writes the raw bytes for this vector to a byte array - - Destination byte array - Position in the destination array to start - writing. Must be at least 12 bytes before the end of the array + + Jacket - - - Parse a vector from a string - - A string representation of a 3D vector, enclosed - in arrow brackets and separated by commas + + Gloves - - - Calculate the rotation between two vectors - - Normalized directional vector (such as 1,0,0 for forward facing) - Normalized target vector + + Undershirt - - - Interpolates between two vectors using a cubic equation - + + Underpants - - - Get a formatted string representation of the vector - - A string representation of the vector + + Skirt - - - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only - - Raw string representation of the vector + + Alpha mask to hide parts of the avatar - - - Cross product between two vectors - + + Tattoo + + + Invalid wearable asset A three-dimensional vector with doubleing-point values - - - Constructor, builds a vector from a byte array - - Byte array containing three eight-byte doubles - Beginning position in the byte array - X value @@ -2500,20 +1834,12 @@ Z value - - A vector with a value of 0,0,0 - - - A vector with a value of 1,1,1 - - - A unit vector facing forward (X axis), value of 1,0,0 - - - A unit vector facing left (Y axis), value of 0,1,0 - - - A unit vector facing up (Z axis), value of 0,0,1 + + + Constructor, builds a vector from a byte array + + Byte array containing three eight-byte doubles + Beginning position in the byte array @@ -2561,7 +1887,7 @@ Parse a vector from a string - A string representation of a 3D vector, enclosed + A string representation of a 3D vector, enclosed in arrow brackets and separated by commas @@ -2587,91 +1913,45 @@ Cross product between two vectors - - - Constructor, builds a vector from a byte array - - Byte array containing four four-byte floats - Beginning position in the byte array - - - X value - - - Y value - - - Z value - - - W value - - - A vector with a value of 0,0,0,0 - - - A vector with a value of 1,1,1,1 - - - A vector with a value of 1,0,0,0 - - - A vector with a value of 0,1,0,0 - - - A vector with a value of 0,0,1,0 + + A vector with a value of 0,0,0 - - A vector with a value of 0,0,0,1 + + A vector with a value of 1,1,1 - - - Test if this vector is equal to another vector, within a given - tolerance range - - Vector to test against - The acceptable magnitude of difference - between the two vectors - True if the magnitude of difference between the two vectors - is less than the given tolerance, otherwise false + + A unit vector facing forward (X axis), value of 1,0,0 - - - IComparable.CompareTo implementation - + + A unit vector facing left (Y axis), value of 0,1,0 - - - Test if this vector is composed of all finite numbers - + + A unit vector facing up (Z axis), value of 0,0,1 - + - Builds a vector from a byte array + Determines the appropriate events to set, leaves the locks, and sets the events. - Byte array containing a 16 byte vector - Beginning position in the byte array - + - Returns the raw bytes for this vector + A routine for lazily creating a event outside the lock (so if errors + happen they are outside the lock and that we don't do much work + while holding a spin lock). If all goes well, reenter the lock and + set 'waitEvent' - A 16 byte array containing X, Y, Z, and W - + - Writes the raw bytes for this vector to a byte array + Waits on 'waitEvent' with a timeout of 'millisceondsTimeout. + Before the wait 'numWaiters' is incremented and is restored before leaving this routine. - Destination byte array - Position in the destination array to start - writing. Must be at least 16 bytes before the end of the array - + - Get a string representation of the vector elements with up to three - decimal digits and separated by spaces only + Copy constructor - Raw string representation of the vector + Circular queue to copy diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index b989bad..01dc3d8 100644 Binary files a/bin/OpenMetaverseTypes.dll and b/bin/OpenMetaverseTypes.dll differ -- cgit v1.1 From b1c8d0588829dfa76f89460eeb8406d9c4fc479f Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Wed, 20 Oct 2010 16:17:54 -0700 Subject: Major refactoring of appearance handling. AvatarService -- add two new methods, GetAppearance and SetAppearance to get around the lossy encoding in AvatarData. Preseve the old functions to avoid changing the behavior for ROBUST services. AvatarAppearance -- major refactor, moved the various encoding methods used by AgentCircuitData, ClientAgentUpdate and ScenePresence into one location. Changed initialization. AvatarAttachments -- added a class specifically to handle attachments in preparation for additional functionality that will be needed for viewer 2. AvatarFactory -- removed a number of unused or methods duplicated in other locations. Moved in all appearance event handling from ScenePresence. Required a change to IClientAPI that propogated throughout all the IClientAPI implementations. --- .../RemoteController/RemoteAdminPlugin.cs | 28 +- OpenSim/Client/MXP/ClientStack/MXPClientView.cs | 4 +- .../Client/MXP/PacketHandler/MXPPacketServer.cs | 4 +- .../Client/VWoHTTP/ClientStack/VWHClientView.cs | 2 +- OpenSim/Framework/AgentCircuitData.cs | 61 +- OpenSim/Framework/AvatarAppearance.cs | 839 ++++++++++----------- OpenSim/Framework/AvatarAttachment.cs | 78 ++ OpenSim/Framework/AvatarWearable.cs | 46 +- OpenSim/Framework/Capabilities/Caps.cs | 4 +- OpenSim/Framework/ChildAgentDataUpdate.cs | 70 +- OpenSim/Framework/IClientAPI.cs | 6 +- OpenSim/Framework/Tests/AgentCircuitDataTest.cs | 2 - .../Region/ClientStack/LindenUDP/LLClientView.cs | 8 +- .../Avatar/Attachments/AttachmentsModule.cs | 16 +- .../Avatar/AvatarFactory/AvatarFactoryModule.cs | 237 +++--- .../Avatar/LocalAvatarServiceConnector.cs | 11 + .../Region/Examples/SimpleModule/MyNpcCharacter.cs | 2 +- .../Region/Framework/Interfaces/IAvatarFactory.cs | 38 - OpenSim/Region/Framework/Scenes/Scene.cs | 7 - OpenSim/Region/Framework/Scenes/ScenePresence.cs | 163 ++-- .../Server/IRCClientView.cs | 4 +- .../Region/OptionalModules/World/NPC/NPCAvatar.cs | 2 +- .../Region/OptionalModules/World/NPC/NPCModule.cs | 16 +- OpenSim/Services/AvatarService/AvatarService.cs | 14 + .../Connectors/Avatar/AvatarServiceConnector.cs | 12 + .../SimianGrid/SimianAvatarServiceConnector.cs | 82 +- OpenSim/Services/Interfaces/IAvatarService.cs | 32 +- OpenSim/Services/LLLoginService/LLLoginService.cs | 10 +- OpenSim/Tests/Common/Mock/TestClient.cs | 2 +- 29 files changed, 988 insertions(+), 812 deletions(-) create mode 100644 OpenSim/Framework/AvatarAttachment.cs delete mode 100644 OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index aeed467..0589748 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -1472,12 +1472,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController { m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", destination, source); Scene scene = m_application.SceneManager.CurrentOrFirstScene; - AvatarAppearance avatarAppearance = null; - AvatarData avatar = scene.AvatarService.GetAvatar(source); - if (avatar != null) - avatarAppearance = avatar.ToAvatarAppearance(source); // If the model has no associated appearance we're done. + AvatarAppearance avatarAppearance = scene.AvatarService.GetAppearance(source); if (avatarAppearance == null) return; @@ -1491,8 +1488,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { CopyWearablesAndAttachments(destination, source, avatarAppearance); - AvatarData avatarData = new AvatarData(avatarAppearance); - scene.AvatarService.SetAvatar(destination, avatarData); + scene.AvatarService.SetAppearance(destination, avatarAppearance); } catch (Exception e) { @@ -1523,8 +1519,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController } } - AvatarData avatarData = new AvatarData(avatarAppearance); - scene.AvatarService.SetAvatar(destination, avatarData); + scene.AvatarService.SetAppearance(destination, avatarAppearance); } catch (Exception e) { @@ -1619,12 +1614,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController } // Attachments - Dictionary attachments = avatarAppearance.GetAttachmentDictionary(); + Dictionary attachments = avatarAppearance.Attachments; - foreach (KeyValuePair attachment in attachments) + foreach (KeyValuePair attachment in attachments) { - int attachpoint = attachment.Key; - UUID itemID = attachment.Value[0]; + int attachpoint = attachment.Value.AttachPoint; + UUID itemID = attachment.Value.ItemID; if (itemID != UUID.Zero) { @@ -1908,10 +1903,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController if (include) { // Setup for appearance processing - AvatarData avatarData = scene.AvatarService.GetAvatar(ID); - if (avatarData != null) - avatarAppearance = avatarData.ToAvatarAppearance(ID); - else + avatarAppearance = scene.AvatarService.GetAppearance(ID); + if (avatarAppearance == null) avatarAppearance = new AvatarAppearance(); AvatarWearable[] wearables = avatarAppearance.Wearables; @@ -2076,8 +2069,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController m_log.DebugFormat("[RADMIN] Outfit {0} load completed", outfitName); } // foreach outfit m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name); - AvatarData avatarData2 = new AvatarData(avatarAppearance); - scene.AvatarService.SetAvatar(ID, avatarData2); + scene.AvatarService.SetAppearance(ID, avatarAppearance); } catch (Exception e) { diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs index af9478e..19331c6 100644 --- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs +++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs @@ -596,7 +596,7 @@ namespace OpenSim.Client.MXP.ClientStack public event TeleportLandmarkRequest OnTeleportLandmarkRequest; public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; @@ -861,7 +861,7 @@ namespace OpenSim.Client.MXP.ClientStack OpenSim.Region.Framework.Scenes.Scene scene=(OpenSim.Region.Framework.Scenes.Scene)Scene; AvatarAppearance appearance; scene.GetAvatarAppearance(this,out appearance); - OnSetAppearance(appearance.Texture, (byte[])appearance.VisualParams.Clone()); + OnSetAppearance(this, appearance.Texture, (byte[])appearance.VisualParams.Clone()); } public void Stop() diff --git a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs index 7056e01..dcecb8b 100644 --- a/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs +++ b/OpenSim/Client/MXP/PacketHandler/MXPPacketServer.cs @@ -533,9 +533,7 @@ namespace OpenSim.Client.MXP.PacketHandler agent.InventoryFolder = UUID.Zero; agent.startpos = new Vector3(0, 0, 0); // TODO Fill in region start position agent.CapsPath = "http://localhost/"; - AvatarData avatar = scene.AvatarService.GetAvatar(account.PrincipalID); - if (avatar != null) - agent.Appearance = avatar.ToAvatarAppearance(account.PrincipalID); //userService.GetUserAppearance(userProfile.ID); + agent.Appearance = scene.AvatarService.GetAppearance(account.PrincipalID); if (agent.Appearance == null) { diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs index 99a46dc..0d23232 100644 --- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs +++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs @@ -245,7 +245,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack public event TeleportLandmarkRequest OnTeleportLandmarkRequest = delegate { }; public event DeRezObject OnDeRezObject = delegate { }; public event Action OnRegionHandShakeReply = delegate { }; - public event GenericCall2 OnRequestWearables = delegate { }; + public event GenericCall1 OnRequestWearables = delegate { }; public event GenericCall1 OnCompleteMovementToRegion = delegate { }; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate = delegate { }; diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 4f89d78..be98380 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -26,7 +26,9 @@ */ using System; +using System.Reflection; using System.Collections.Generic; +using log4net; using OpenMetaverse; using OpenMetaverse.StructuredData; @@ -38,6 +40,12 @@ namespace OpenSim.Framework /// public class AgentCircuitData { +// DEBUG ON + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); +// DEBUG OFF + /// /// Avatar Unique Agent Identifier /// @@ -205,6 +213,7 @@ namespace OpenSim.Framework args["mac"] = OSD.FromString(Mac); args["id0"] = OSD.FromString(Id0); +/* if (Appearance != null) { //System.Console.WriteLine("XXX Before packing Wearables"); @@ -221,20 +230,26 @@ namespace OpenSim.Framework } //System.Console.WriteLine("XXX Before packing Attachments"); - Dictionary attachments = Appearance.GetAttachmentDictionary(); + Dictionary attachments = Appearance.Attachments; if ((attachments != null) && (attachments.Count > 0)) { OSDArray attachs = new OSDArray(attachments.Count); - foreach (KeyValuePair kvp in attachments) + foreach (KeyValuePair kvp in attachments) { - AttachmentData adata = new AttachmentData(kvp.Key, kvp.Value[0], kvp.Value[1]); - attachs.Add(adata.PackUpdateMessage()); + AvatarAttachment adata = new AvatarAttachment(kvp.Value); + attachs.Add(adata.Pack()); //System.Console.WriteLine("XXX att.pt=" + kvp.Key + "; itemID=" + kvp.Value[0] + "; assetID=" + kvp.Value[1]); } args["attachments"] = attachs; } } - +*/ + if (Appearance != null) + { + OSDMap appmap = Appearance.Pack(); + args["packed_appearance"] = appmap; + } + if (ServiceURLs != null && ServiceURLs.Count > 0) { OSDArray urls = new OSDArray(ServiceURLs.Count * 2); @@ -317,9 +332,37 @@ namespace OpenSim.Framework if (args["start_pos"] != null) Vector3.TryParse(args["start_pos"].AsString(), out startpos); +// DEBUG ON + m_log.WarnFormat("[AGENTCIRCUITDATA] agentid={0}, child={1}, startpos={2}",AgentID,child,startpos.ToString()); +// DEBUG OFF + + try { + // Unpack various appearance elements Appearance = new AvatarAppearance(AgentID); + if (args["packed_appearance"] != null) + { + if (args["packed_appearance"].Type == OSDType.Map) + { + Appearance.Unpack((OSDMap)args["packed_appearance"]); + m_log.WarnFormat("[AGENTCIRCUITDATA] unpacked appearance"); + } + else + m_log.WarnFormat("[AGENTCIRCUITDATA] packed_appearance is not a map:\n{0}",args["packed_appearance"].ToString()); + } +// DEBUG ON + else + m_log.Warn("[AGENTCIRCUITDATA] failed to find a valid packed_appearance"); +// DEBUG OFF + } catch (Exception e) + { + m_log.ErrorFormat("[AGENTCIRCUITDATA] failed to unpack appearance; {0}",e.Message); + } + + +/* if (args["appearance_serial"] != null) Appearance.Serial = args["appearance_serial"].AsInteger(); + if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array) { OSDArray wears = (OSDArray)(args["wearables"]); @@ -328,23 +371,23 @@ namespace OpenSim.Framework Appearance.Wearables[i].ItemID = wears[i*2].AsUUID(); Appearance.Wearables[i].AssetID = wears[(i*2)+1].AsUUID(); } - } + } if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(args["attachments"]); - AttachmentData[] attachments = new AttachmentData[attachs.Count]; + AvatarAttachment[] attachments = new AvatarAttachment[attachs.Count]; int i = 0; foreach (OSD o in attachs) { if (o.Type == OSDType.Map) { - attachments[i++] = new AttachmentData((OSDMap)o); + attachments[i++] = new AvatarAttachment((OSDMap)o); } } Appearance.SetAttachments(attachments); } - +*/ ServiceURLs = new Dictionary(); if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) { diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 5da8ba1..55646dd 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -26,9 +26,12 @@ */ using System; +using System.Reflection; using System.Collections; using System.Collections.Generic; using OpenMetaverse; +using OpenMetaverse.StructuredData; +using log4net; namespace OpenSim.Framework { @@ -37,48 +40,26 @@ namespace OpenSim.Framework /// public class AvatarAppearance { - //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - // these are guessed at by the list here - - // http://wiki.secondlife.com/wiki/Avatar_Appearance. We'll - // correct them over time for when were are wrong. - public readonly static int BODY = 0; - public readonly static int SKIN = 1; - public readonly static int HAIR = 2; - public readonly static int EYES = 3; - public readonly static int SHIRT = 4; - public readonly static int PANTS = 5; - public readonly static int SHOES = 6; - public readonly static int SOCKS = 7; - public readonly static int JACKET = 8; - public readonly static int GLOVES = 9; - public readonly static int UNDERSHIRT = 10; - public readonly static int UNDERPANTS = 11; - public readonly static int SKIRT = 12; - - private readonly static int MAX_WEARABLES = 13; - - private static UUID BODY_ASSET = new UUID("66c41e39-38f9-f75a-024e-585989bfab73"); - private static UUID BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); - private static UUID SKIN_ASSET = new UUID("77c41e39-38f9-f75a-024e-585989bbabbb"); - private static UUID SKIN_ITEM = new UUID("77c41e39-38f9-f75a-024e-585989bfabc9"); - private static UUID SHIRT_ASSET = new UUID("00000000-38f9-1111-024e-222222111110"); - private static UUID SHIRT_ITEM = new UUID("77c41e39-38f9-f75a-0000-585989bf0000"); - private static UUID PANTS_ASSET = new UUID("00000000-38f9-1111-024e-222222111120"); - private static UUID PANTS_ITEM = new UUID("77c41e39-38f9-f75a-0000-5859892f1111"); - private static UUID HAIR_ASSET = new UUID("d342e6c0-b9d2-11dc-95ff-0800200c9a66"); - private static UUID HAIR_ITEM = new UUID("d342e6c1-b9d2-11dc-95ff-0800200c9a66"); + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public readonly static int VISUALPARAM_COUNT = 218; + public readonly static int TEXTURE_COUNT = 21; + protected UUID m_owner; + protected int m_serial = 1; + protected byte[] m_visualparams; + protected Primitive.TextureEntry m_texture; + protected AvatarWearable[] m_wearables; + protected Dictionary m_attachments; + protected float m_avatarHeight = 0; + protected float m_hipOffset = 0; public virtual UUID Owner { get { return m_owner; } set { m_owner = value; } } - protected int m_serial = 1; public virtual int Serial { @@ -86,15 +67,17 @@ namespace OpenSim.Framework set { m_serial = value; } } - protected byte[] m_visualparams; - public virtual byte[] VisualParams { get { return m_visualparams; } set { m_visualparams = value; } } - protected AvatarWearable[] m_wearables; + public virtual Primitive.TextureEntry Texture + { + get { return m_texture; } + set { m_texture = value; } + } public virtual AvatarWearable[] Wearables { @@ -102,287 +85,363 @@ namespace OpenSim.Framework set { m_wearables = value; } } + public virtual Dictionary Attachments + { + get { return m_attachments; } + } + public virtual UUID BodyItem { - get { return m_wearables[BODY].ItemID; } - set { m_wearables[BODY].ItemID = value; } + get { return m_wearables[AvatarWearable.BODY].ItemID; } + set { m_wearables[AvatarWearable.BODY].ItemID = value; } } public virtual UUID BodyAsset { - get { return m_wearables[BODY].AssetID; } - set { m_wearables[BODY].AssetID = value; } + get { return m_wearables[AvatarWearable.BODY].AssetID; } + set { m_wearables[AvatarWearable.BODY].AssetID = value; } } public virtual UUID SkinItem { - get { return m_wearables[SKIN].ItemID; } - set { m_wearables[SKIN].ItemID = value; } + get { return m_wearables[AvatarWearable.SKIN].ItemID; } + set { m_wearables[AvatarWearable.SKIN].ItemID = value; } } public virtual UUID SkinAsset { - get { return m_wearables[SKIN].AssetID; } - set { m_wearables[SKIN].AssetID = value; } + get { return m_wearables[AvatarWearable.SKIN].AssetID; } + set { m_wearables[AvatarWearable.SKIN].AssetID = value; } } public virtual UUID HairItem { - get { return m_wearables[HAIR].ItemID; } - set { m_wearables[HAIR].ItemID = value; } + get { return m_wearables[AvatarWearable.HAIR].ItemID; } + set { m_wearables[AvatarWearable.HAIR].ItemID = value; } } public virtual UUID HairAsset { - get { return m_wearables[HAIR].AssetID; } - set { m_wearables[HAIR].AssetID = value; } + get { return m_wearables[AvatarWearable.HAIR].AssetID; } + set { m_wearables[AvatarWearable.HAIR].AssetID = value; } } public virtual UUID EyesItem { - get { return m_wearables[EYES].ItemID; } - set { m_wearables[EYES].ItemID = value; } + get { return m_wearables[AvatarWearable.EYES].ItemID; } + set { m_wearables[AvatarWearable.EYES].ItemID = value; } } public virtual UUID EyesAsset { - get { return m_wearables[EYES].AssetID; } - set { m_wearables[EYES].AssetID = value; } + get { return m_wearables[AvatarWearable.EYES].AssetID; } + set { m_wearables[AvatarWearable.EYES].AssetID = value; } } public virtual UUID ShirtItem { - get { return m_wearables[SHIRT].ItemID; } - set { m_wearables[SHIRT].ItemID = value; } + get { return m_wearables[AvatarWearable.SHIRT].ItemID; } + set { m_wearables[AvatarWearable.SHIRT].ItemID = value; } } public virtual UUID ShirtAsset { - get { return m_wearables[SHIRT].AssetID; } - set { m_wearables[SHIRT].AssetID = value; } + get { return m_wearables[AvatarWearable.SHIRT].AssetID; } + set { m_wearables[AvatarWearable.SHIRT].AssetID = value; } } public virtual UUID PantsItem { - get { return m_wearables[PANTS].ItemID; } - set { m_wearables[PANTS].ItemID = value; } + get { return m_wearables[AvatarWearable.PANTS].ItemID; } + set { m_wearables[AvatarWearable.PANTS].ItemID = value; } } public virtual UUID PantsAsset { - get { return m_wearables[PANTS].AssetID; } - set { m_wearables[PANTS].AssetID = value; } + get { return m_wearables[AvatarWearable.PANTS].AssetID; } + set { m_wearables[AvatarWearable.PANTS].AssetID = value; } } public virtual UUID ShoesItem { - get { return m_wearables[SHOES].ItemID; } - set { m_wearables[SHOES].ItemID = value; } + get { return m_wearables[AvatarWearable.SHOES].ItemID; } + set { m_wearables[AvatarWearable.SHOES].ItemID = value; } } public virtual UUID ShoesAsset { - get { return m_wearables[SHOES].AssetID; } - set { m_wearables[SHOES].AssetID = value; } + get { return m_wearables[AvatarWearable.SHOES].AssetID; } + set { m_wearables[AvatarWearable.SHOES].AssetID = value; } } public virtual UUID SocksItem { - get { return m_wearables[SOCKS].ItemID; } - set { m_wearables[SOCKS].ItemID = value; } + get { return m_wearables[AvatarWearable.SOCKS].ItemID; } + set { m_wearables[AvatarWearable.SOCKS].ItemID = value; } } public virtual UUID SocksAsset { - get { return m_wearables[SOCKS].AssetID; } - set { m_wearables[SOCKS].AssetID = value; } + get { return m_wearables[AvatarWearable.SOCKS].AssetID; } + set { m_wearables[AvatarWearable.SOCKS].AssetID = value; } } public virtual UUID JacketItem { - get { return m_wearables[JACKET].ItemID; } - set { m_wearables[JACKET].ItemID = value; } + get { return m_wearables[AvatarWearable.JACKET].ItemID; } + set { m_wearables[AvatarWearable.JACKET].ItemID = value; } } public virtual UUID JacketAsset { - get { return m_wearables[JACKET].AssetID; } - set { m_wearables[JACKET].AssetID = value; } + get { return m_wearables[AvatarWearable.JACKET].AssetID; } + set { m_wearables[AvatarWearable.JACKET].AssetID = value; } } public virtual UUID GlovesItem { - get { return m_wearables[GLOVES].ItemID; } - set { m_wearables[GLOVES].ItemID = value; } + get { return m_wearables[AvatarWearable.GLOVES].ItemID; } + set { m_wearables[AvatarWearable.GLOVES].ItemID = value; } } public virtual UUID GlovesAsset { - get { return m_wearables[GLOVES].AssetID; } - set { m_wearables[GLOVES].AssetID = value; } + get { return m_wearables[AvatarWearable.GLOVES].AssetID; } + set { m_wearables[AvatarWearable.GLOVES].AssetID = value; } } public virtual UUID UnderShirtItem { - get { return m_wearables[UNDERSHIRT].ItemID; } - set { m_wearables[UNDERSHIRT].ItemID = value; } + get { return m_wearables[AvatarWearable.UNDERSHIRT].ItemID; } + set { m_wearables[AvatarWearable.UNDERSHIRT].ItemID = value; } } public virtual UUID UnderShirtAsset { - get { return m_wearables[UNDERSHIRT].AssetID; } - set { m_wearables[UNDERSHIRT].AssetID = value; } + get { return m_wearables[AvatarWearable.UNDERSHIRT].AssetID; } + set { m_wearables[AvatarWearable.UNDERSHIRT].AssetID = value; } } public virtual UUID UnderPantsItem { - get { return m_wearables[UNDERPANTS].ItemID; } - set { m_wearables[UNDERPANTS].ItemID = value; } + get { return m_wearables[AvatarWearable.UNDERPANTS].ItemID; } + set { m_wearables[AvatarWearable.UNDERPANTS].ItemID = value; } } public virtual UUID UnderPantsAsset { - get { return m_wearables[UNDERPANTS].AssetID; } - set { m_wearables[UNDERPANTS].AssetID = value; } + get { return m_wearables[AvatarWearable.UNDERPANTS].AssetID; } + set { m_wearables[AvatarWearable.UNDERPANTS].AssetID = value; } } public virtual UUID SkirtItem { - get { return m_wearables[SKIRT].ItemID; } - set { m_wearables[SKIRT].ItemID = value; } + get { return m_wearables[AvatarWearable.SKIRT].ItemID; } + set { m_wearables[AvatarWearable.SKIRT].ItemID = value; } } public virtual UUID SkirtAsset { - get { return m_wearables[SKIRT].AssetID; } - set { m_wearables[SKIRT].AssetID = value; } + get { return m_wearables[AvatarWearable.SKIRT].AssetID; } + set { m_wearables[AvatarWearable.SKIRT].AssetID = value; } } - public virtual void SetDefaultWearables() + public virtual float AvatarHeight { - m_wearables[BODY].AssetID = BODY_ASSET; - m_wearables[BODY].ItemID = BODY_ITEM; - m_wearables[SKIN].AssetID = SKIN_ASSET; - m_wearables[SKIN].ItemID = SKIN_ITEM; - m_wearables[HAIR].AssetID = HAIR_ASSET; - m_wearables[HAIR].ItemID = HAIR_ITEM; - m_wearables[SHIRT].AssetID = SHIRT_ASSET; - m_wearables[SHIRT].ItemID = SHIRT_ITEM; - m_wearables[PANTS].AssetID = PANTS_ASSET; - m_wearables[PANTS].ItemID = PANTS_ITEM; + get { return m_avatarHeight; } + set { m_avatarHeight = value; } } - public virtual void ClearWearables() + public virtual float HipOffset { - for (int i = 0; i < 13; i++) - { - m_wearables[i].AssetID = UUID.Zero; - m_wearables[i].ItemID = UUID.Zero; - } + get { return m_hipOffset; } } - public virtual void SetDefaultParams(byte[] vparams) + public AvatarAppearance() : this(UUID.Zero) {} + + public AvatarAppearance(UUID owner) { - // TODO: Figure out better values then 'fat scientist 150' or 'alien 0' - for (int i = 0; i < VISUALPARAM_COUNT; i++) - { - vparams[i] = 150; - } +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create empty appearance for {0}",owner); +// DEBUG OFF + m_serial = 0; + m_owner = owner; + + SetDefaultWearables(); + SetDefaultTexture(); + SetDefaultParams(); + SetHeight(); + + m_attachments = new Dictionary(); } + + public AvatarAppearance(UUID avatarID, OSDMap map) + { +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create appearance for {0} from OSDMap",avatarID); +// DEBUG OFF + m_owner = avatarID; + Unpack(map); + SetHeight(); + } + + public AvatarAppearance(UUID avatarID, AvatarWearable[] wearables, Primitive.TextureEntry textureEntry, byte[] visualParams) + { +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create initialized appearance for {0}",avatarID); +// DEBUG OFF + m_serial = 1; + m_owner = avatarID; - protected Primitive.TextureEntry m_texture; + if (wearables != null) + m_wearables = wearables; + else + SetDefaultWearables(); + + if (textureEntry != null) + m_texture = textureEntry; + else + SetDefaultTexture(); - public virtual Primitive.TextureEntry Texture - { - get { return m_texture; } - set { m_texture = value; } + if (visualParams != null) + m_visualparams = visualParams; + else + SetDefaultParams(); + + SetHeight(); + + m_attachments = new Dictionary(); } - protected float m_avatarHeight = 0; - protected float m_hipOffset = 0; + public AvatarAppearance(AvatarAppearance appearance) + { +// DEBUG ON + m_log.WarnFormat("[AVATAR APPEARANCE] create from an existing appearance"); +// DEBUG OFF + if (appearance == null) + { + m_serial = 0; + m_owner = UUID.Zero; - public virtual float AvatarHeight + SetDefaultWearables(); + SetDefaultTexture(); + SetDefaultParams(); + SetHeight(); + + m_attachments = new Dictionary(); + + return; + } + + m_serial = appearance.Serial; + m_owner = appearance.Owner; + + m_wearables = null; + if (appearance.Wearables != null) + { + m_wearables = new AvatarWearable[AvatarWearable.MAX_WEARABLES]; //should be 13 of these + for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) + SetWearable(i,appearance.Wearables[i]); + } + + m_texture = null; + if (appearance.Texture != null) + { + byte[] tbytes = appearance.Texture.GetBytes(); + m_texture = new Primitive.TextureEntry(tbytes,0,tbytes.Length); + } + + m_visualparams = null; + if (appearance.VisualParams != null) + m_visualparams = (byte[])appearance.VisualParams.Clone(); + + m_attachments = new Dictionary(); + foreach (KeyValuePair kvp in appearance.Attachments) + m_attachments[kvp.Key] = new AvatarAttachment(kvp.Value); + } + + protected virtual void SetDefaultWearables() { - get { return m_avatarHeight; } - set { m_avatarHeight = value; } + m_wearables = AvatarWearable.DefaultWearables; } - public virtual float HipOffset + protected virtual void SetDefaultParams() { - get { return m_hipOffset; } + m_visualparams = new byte[VISUALPARAM_COUNT]; + for (int i = 0; i < VISUALPARAM_COUNT; i++) + { + m_visualparams[i] = 150; + } } - //Builds the VisualParam Enum using LIBOMV's Visual Param NameValues - /* - public void BuildVisualParamEnum() + protected virtual void SetDefaultTexture() { - Dictionary IndexedParams = new Dictionary(); - int vpIndex = 0; - IndexedParams = new Dictionary(); - - System.Text.StringBuilder sb = new System.Text.StringBuilder(); + m_texture = new Primitive.TextureEntry(new UUID("C228D1CF-4B5D-4BA8-84F4-899A0796AA97")); + // The initialization of these seems to force a rebake regardless of whether it is needed + // m_textures.CreateFace(0).TextureID = new UUID("00000000-0000-1111-9999-000000000012"); + // m_textures.CreateFace(1).TextureID = Util.BLANK_TEXTURE_UUID; + // m_textures.CreateFace(2).TextureID = Util.BLANK_TEXTURE_UUID; + // m_textures.CreateFace(3).TextureID = new UUID("6522E74D-1660-4E7F-B601-6F48C1659A77"); + // m_textures.CreateFace(4).TextureID = new UUID("7CA39B4C-BD19-4699-AFF7-F93FD03D3E7B"); + // m_textures.CreateFace(5).TextureID = new UUID("00000000-0000-1111-9999-000000000010"); + // m_textures.CreateFace(6).TextureID = new UUID("00000000-0000-1111-9999-000000000011"); + } - sb.Append("public enum VPElement: int\n"); - sb.Append("{\n"); - foreach (KeyValuePair kvp in OpenMetaverse.VisualParams.Params) + /// + /// Set up appearance textures. + /// Returns boolean that indicates whether the new entries actually change the + /// existing values. + /// + public virtual bool SetTextureEntries(Primitive.TextureEntry textureEntry) + { + if (textureEntry == null) + return false; + + // There are much simpler versions of this copy that could be + // made. We determine if any of the textures actually + // changed to know if the appearance should be saved later + bool changed = false; + for (int i = 0; i < AvatarAppearance.TEXTURE_COUNT; i++) { - VisualParam vp = kvp.Value; - - // Only Group-0 parameters are sent in AgentSetAppearance packets - if (kvp.Value.Group == 0) - { + Primitive.TextureEntryFace newface = textureEntry.FaceTextures[i]; + Primitive.TextureEntryFace oldface = m_texture.FaceTextures[i]; - if (!IndexedParams.ContainsKey(vp.Name)) - { - - if (vp.Label.Length > 0 || vp.LabelMin.Length > 0 || vp.LabelMax.Length > 0) - { - - sb.Append("/// \n"); - if (vp.LabelMin.Length > 0 && vp.LabelMax.Length > 0) - sb.Append(string.Format("/// {0} - {1} 0--+255 {2}\n", vp.Label, vp.LabelMin, - vp.LabelMax)); - - else - sb.Append(string.Format("/// {0}\n", vp.Label)); - - sb.Append("/// \n"); - } - sb.Append(string.Format(" {0}_{1} = {2}", vp.Wearable.ToUpper(), vp.Name.ToUpper().Replace(" ", "_"),vpIndex)); - - IndexedParams.Add(vp.Name, vpIndex++); - } - else - { - sb.Append(string.Format(" {0}_{1}_{2} = {2}", vp.Wearable.ToUpper(), vp.Name.ToUpper().Replace(" ", "_"), vpIndex)); - vpIndex++; - //int i = 0; - } + if (newface == null) + { + if (oldface == null) continue; } - if (vpIndex < 217) - sb.Append(",\n"); else - sb.Append("\n"); + { + if (oldface != null && oldface.TextureID == newface.TextureID) continue; + } + m_texture.FaceTextures[i] = (newface != null) ? new Primitive.TextureEntryFace(newface) : null; + changed = true; +// DEBUG ON + if (newface != null) + m_log.WarnFormat("[SCENEPRESENCE] index {0}, new texture id {1}",i,newface.TextureID); +// DEBUG OFF } - sb.Append("}\n"); + return changed; } - */ - - public AvatarAppearance() : this(UUID.Zero) {} - - public AvatarAppearance(UUID owner) + + /// + /// Set up visual parameters for the avatar and refresh the avatar height + /// Returns boolean that indicates whether the new entries actually change the + /// existing values. + /// + public virtual bool SetVisualParams(byte[] visualParams) { - m_wearables = new AvatarWearable[MAX_WEARABLES]; - for (int i = 0; i < MAX_WEARABLES; i++) + if (visualParams == null) + return false; + + // There are much simpler versions of this copy that could be + // made. We determine if any of the visual parameters actually + // changed to know if the appearance should be saved later + bool changed = false; + for (int i = 0; i < AvatarAppearance.VISUALPARAM_COUNT; i++) { - // this makes them all null - m_wearables[i] = new AvatarWearable(); + if (visualParams[i] != m_visualparams[i]) + { +// DEBUG ON + m_log.WarnFormat("[AVATARAPPEARANCE] vparams changed [{0}] {1} ==> {2}", + i,m_visualparams[i],visualParams[i]); +// DEBUG OFF + m_visualparams[i] = visualParams[i]; + changed = true; + } } - m_serial = 0; - m_owner = owner; - //BuildVisualParamEnum() - m_visualparams = new byte[VISUALPARAM_COUNT]; - // This sets Visual Params with *less* weirder values then default. Instead of a ugly alien, it looks like a fat scientist - SetDefaultParams(m_visualparams); - SetDefaultWearables(); - m_texture = GetDefaultTexture(); + + // Reset the height if the visual parameters actually changed + if (changed) + SetHeight(); + + return changed; } - - public AvatarAppearance(UUID avatarID, AvatarWearable[] wearables, byte[] visualParams) + + public virtual void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams) { - m_owner = avatarID; - m_serial = 1; - m_wearables = wearables; - m_visualparams = visualParams; - m_texture = GetDefaultTexture(); + SetTextureEntries(textureEntry); + SetVisualParams(visualParams); } - - /// - /// Set up appearance textures and avatar parameters, including a height calculation - /// - public virtual void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams) + + public virtual void SetHeight() { - if (textureEntry != null) - m_texture = textureEntry; - if (visualParams != null) - m_visualparams = visualParams; - m_avatarHeight = 1.23077f // Shortest possible avatar height + 0.516945f * (float)m_visualparams[(int)VPElement.SHAPE_HEIGHT] / 255.0f // Body height + 0.072514f * (float)m_visualparams[(int)VPElement.SHAPE_HEAD_SIZE] / 255.0f // Head size @@ -390,217 +449,63 @@ namespace OpenSim.Framework + 0.08f * (float)m_visualparams[(int)VPElement.SHOES_PLATFORM_HEIGHT] / 255.0f // Shoe platform height + 0.07f * (float)m_visualparams[(int)VPElement.SHOES_HEEL_HEIGHT] / 255.0f // Shoe heel height + 0.076f * (float)m_visualparams[(int)VPElement.SHAPE_NECK_LENGTH] / 255.0f; // Neck length + m_hipOffset = (((1.23077f // Half of avatar + 0.516945f * (float)m_visualparams[(int)VPElement.SHAPE_HEIGHT] / 255.0f // Body height + 0.3836f * (float)m_visualparams[(int)VPElement.SHAPE_LEG_LENGTH] / 255.0f // Leg length + 0.08f * (float)m_visualparams[(int)VPElement.SHOES_PLATFORM_HEIGHT] / 255.0f // Shoe platform height + 0.07f * (float)m_visualparams[(int)VPElement.SHOES_HEEL_HEIGHT] / 255.0f // Shoe heel height ) / 2) - m_avatarHeight / 2) * 0.31f - 0.0425f; - - - - //System.Console.WriteLine(">>>>>>> [APPEARANCE]: Height {0} Hip offset {1}" + m_avatarHeight + " " + m_hipOffset); - //m_log.Debug("------------- Set Appearance Texture ---------------"); - //Primitive.TextureEntryFace[] faces = Texture.FaceTextures; - //foreach (Primitive.TextureEntryFace face in faces) - //{ - // if (face != null) - // m_log.Debug(" ++ " + face.TextureID); - // else - // m_log.Debug(" ++ NULL "); - //} - //m_log.Debug("----------------------------"); - } public virtual void SetWearable(int wearableId, AvatarWearable wearable) { - m_wearables[wearableId] = wearable; +// DEBUG ON +// m_log.WarnFormat("[AVATARAPPEARANCE] set wearable {0} --> {1}:{2}",wearableId,wearable.ItemID,wearable.AssetID); +// DEBUG OFF + m_wearables[wearableId] = new AvatarWearable(wearable.ItemID,wearable.AssetID); } - public static Primitive.TextureEntry GetDefaultTexture() - { - Primitive.TextureEntry textu = new Primitive.TextureEntry(new UUID("C228D1CF-4B5D-4BA8-84F4-899A0796AA97")); - textu.CreateFace(0).TextureID = new UUID("00000000-0000-1111-9999-000000000012"); - textu.CreateFace(1).TextureID = Util.BLANK_TEXTURE_UUID; - textu.CreateFace(2).TextureID = Util.BLANK_TEXTURE_UUID; - textu.CreateFace(3).TextureID = new UUID("6522E74D-1660-4E7F-B601-6F48C1659A77"); - textu.CreateFace(4).TextureID = new UUID("7CA39B4C-BD19-4699-AFF7-F93FD03D3E7B"); - textu.CreateFace(5).TextureID = new UUID("00000000-0000-1111-9999-000000000010"); - textu.CreateFace(6).TextureID = new UUID("00000000-0000-1111-9999-000000000011"); - return textu; - } - - public static byte[] GetDefaultVisualParams() - { - byte[] visualParams; - visualParams = new byte[VISUALPARAM_COUNT]; - for (int i = 0; i < VISUALPARAM_COUNT; i++) - { - visualParams[i] = 100; - } - return visualParams; - } +// DEBUG ON public override String ToString() { - String s = "[Wearables] =>"; - s += " Body Item: " + BodyItem.ToString() + ";"; - s += " Skin Item: " + SkinItem.ToString() + ";"; - s += " Shirt Item: " + ShirtItem.ToString() + ";"; - s += " Pants Item: " + PantsItem.ToString() + ";"; - return s; - } - - // this is used for OGS1 - public virtual Hashtable ToHashTable() - { - Hashtable h = new Hashtable(); - h["owner"] = Owner.ToString(); - h["serial"] = Serial.ToString(); - h["visual_params"] = VisualParams; - h["texture"] = Texture.GetBytes(); - h["avatar_height"] = AvatarHeight.ToString(); - h["body_item"] = BodyItem.ToString(); - h["body_asset"] = BodyAsset.ToString(); - h["skin_item"] = SkinItem.ToString(); - h["skin_asset"] = SkinAsset.ToString(); - h["hair_item"] = HairItem.ToString(); - h["hair_asset"] = HairAsset.ToString(); - h["eyes_item"] = EyesItem.ToString(); - h["eyes_asset"] = EyesAsset.ToString(); - h["shirt_item"] = ShirtItem.ToString(); - h["shirt_asset"] = ShirtAsset.ToString(); - h["pants_item"] = PantsItem.ToString(); - h["pants_asset"] = PantsAsset.ToString(); - h["shoes_item"] = ShoesItem.ToString(); - h["shoes_asset"] = ShoesAsset.ToString(); - h["socks_item"] = SocksItem.ToString(); - h["socks_asset"] = SocksAsset.ToString(); - h["jacket_item"] = JacketItem.ToString(); - h["jacket_asset"] = JacketAsset.ToString(); - h["gloves_item"] = GlovesItem.ToString(); - h["gloves_asset"] = GlovesAsset.ToString(); - h["undershirt_item"] = UnderShirtItem.ToString(); - h["undershirt_asset"] = UnderShirtAsset.ToString(); - h["underpants_item"] = UnderPantsItem.ToString(); - h["underpants_asset"] = UnderPantsAsset.ToString(); - h["skirt_item"] = SkirtItem.ToString(); - h["skirt_asset"] = SkirtAsset.ToString(); - - string attachments = GetAttachmentsString(); - if (attachments != String.Empty) - h["attachments"] = attachments; - - return h; - } - - public AvatarAppearance(Hashtable h) - { - Owner = new UUID((string)h["owner"]); - Serial = Convert.ToInt32((string)h["serial"]); - VisualParams = (byte[])h["visual_params"]; - - if (h.Contains("texture")) - { - byte[] te = h["texture"] as byte[]; - if (te != null && te.Length > 0) - Texture = new Primitive.TextureEntry(te, 0, te.Length); - } - else - { - // We shouldn't be receiving appearance hashtables without a TextureEntry, - // but in case we do this will prevent a failure when saving to the database - Texture = GetDefaultTexture(); - } - + String s = ""; + for (uint i = 0; i < AvatarAppearance.TEXTURE_COUNT; i++) + if (m_texture.FaceTextures[i] != null) + s += String.Format("Texture: {0} --> {1}\n",i,m_texture.FaceTextures[i].TextureID); + + foreach (AvatarWearable awear in m_wearables) + s += String.Format("Wearable: item={0}, asset={1}\n",awear.ItemID,awear.AssetID); + + s += "Visual Params: "; + for (uint j = 0; j < AvatarAppearance.VISUALPARAM_COUNT; j++) + s += String.Format("{0},",m_visualparams[j]); + s += "\n"; - AvatarHeight = (float)Convert.ToDouble((string)h["avatar_height"]); - - m_wearables = new AvatarWearable[MAX_WEARABLES]; - for (int i = 0; i < MAX_WEARABLES; i++) - { - // this makes them all null - m_wearables[i] = new AvatarWearable(); - } - - BodyItem = new UUID((string)h["body_item"]); - BodyAsset = new UUID((string)h["body_asset"]); - SkinItem = new UUID((string)h["skin_item"]); - SkinAsset = new UUID((string)h["skin_asset"]); - HairItem = new UUID((string)h["hair_item"]); - HairAsset = new UUID((string)h["hair_asset"]); - EyesItem = new UUID((string)h["eyes_item"]); - EyesAsset = new UUID((string)h["eyes_asset"]); - ShirtItem = new UUID((string)h["shirt_item"]); - ShirtAsset = new UUID((string)h["shirt_asset"]); - PantsItem = new UUID((string)h["pants_item"]); - PantsAsset = new UUID((string)h["pants_asset"]); - ShoesItem = new UUID((string)h["shoes_item"]); - ShoesAsset = new UUID((string)h["shoes_asset"]); - SocksItem = new UUID((string)h["socks_item"]); - SocksAsset = new UUID((string)h["socks_asset"]); - JacketItem = new UUID((string)h["jacket_item"]); - JacketAsset = new UUID((string)h["jacket_asset"]); - GlovesItem = new UUID((string)h["gloves_item"]); - GlovesAsset = new UUID((string)h["gloves_asset"]); - UnderShirtItem = new UUID((string)h["undershirt_item"]); - UnderShirtAsset = new UUID((string)h["undershirt_asset"]); - UnderPantsItem = new UUID((string)h["underpants_item"]); - UnderPantsAsset = new UUID((string)h["underpants_asset"]); - SkirtItem = new UUID((string)h["skirt_item"]); - SkirtAsset = new UUID((string)h["skirt_asset"]); - - if (h.ContainsKey("attachments")) - { - SetAttachmentsString(h["attachments"].ToString()); - } + return s; } +// DEBUG OFF - private Dictionary m_attachments = new Dictionary(); - - public void SetAttachments(AttachmentData[] data) + public void SetAttachments(AvatarAttachment[] data) { - foreach (AttachmentData a in data) - { - m_attachments[a.AttachPoint] = new UUID[2]; - m_attachments[a.AttachPoint][0] = a.ItemID; - m_attachments[a.AttachPoint][1] = a.AssetID; - } + foreach (AvatarAttachment attach in data) + m_attachments[attach.AttachPoint] = new AvatarAttachment(attach); } - public void SetAttachments(Hashtable data) + public void SetAttachment(int attachpoint, UUID item, UUID asset) { - m_attachments.Clear(); - - if (data == null) + if (attachpoint == 0) return; - foreach (DictionaryEntry e in data) + if (item == UUID.Zero) { - int attachpoint = Convert.ToInt32(e.Key); - if (m_attachments.ContainsKey(attachpoint)) - continue; - - UUID item; - UUID asset; - - Hashtable uuids = (Hashtable) e.Value; - UUID.TryParse(uuids["item"].ToString(), out item); - UUID.TryParse(uuids["asset"].ToString(), out asset); - - UUID[] attachment = new UUID[2]; - attachment[0] = item; - attachment[1] = asset; - - m_attachments[attachpoint] = attachment; + m_attachments.Remove(attachpoint); + return; } - } - public Dictionary GetAttachmentDictionary() - { - return m_attachments; + m_attachments[attachpoint] = new AvatarAttachment(attachpoint,item,asset); } public Hashtable GetAttachments() @@ -610,16 +515,13 @@ namespace OpenSim.Framework Hashtable ret = new Hashtable(); - foreach (KeyValuePair kvp in m_attachments) + foreach (KeyValuePair kvp in m_attachments) { - int attachpoint = kvp.Key; - UUID[] uuids = kvp.Value; - Hashtable data = new Hashtable(); - data["item"] = uuids[0].ToString(); - data["asset"] = uuids[1].ToString(); + data["item"] = kvp.Value.ItemID.ToString(); + data["asset"] = kvp.Value.AssetID.ToString(); - ret[attachpoint] = data; + ret[kvp.Key] = data; } return ret; @@ -635,7 +537,7 @@ namespace OpenSim.Framework if (!m_attachments.ContainsKey(attachpoint)) return UUID.Zero; - return m_attachments[attachpoint][0]; + return m_attachments[attachpoint].ItemID; } public UUID GetAttachedAsset(int attachpoint) @@ -643,33 +545,14 @@ namespace OpenSim.Framework if (!m_attachments.ContainsKey(attachpoint)) return UUID.Zero; - return m_attachments[attachpoint][1]; - } - - public void SetAttachment(int attachpoint, UUID item, UUID asset) - { - if (attachpoint == 0) - return; - - if (item == UUID.Zero) - { - if (m_attachments.ContainsKey(attachpoint)) - m_attachments.Remove(attachpoint); - return; - } - - if (!m_attachments.ContainsKey(attachpoint)) - m_attachments[attachpoint] = new UUID[2]; - - m_attachments[attachpoint][0] = item; - m_attachments[attachpoint][1] = asset; + return m_attachments[attachpoint].AssetID; } public int GetAttachpoint(UUID itemID) { - foreach (KeyValuePair kvp in m_attachments) + foreach (KeyValuePair kvp in m_attachments) { - if (kvp.Value[0] == itemID) + if (kvp.Value.ItemID == itemID) { return kvp.Key; } @@ -690,42 +573,126 @@ namespace OpenSim.Framework m_attachments.Clear(); } - string GetAttachmentsString() + /// + /// Create an OSDMap from the appearance data + /// + public OSDMap Pack() { - List strings = new List(); + OSDMap data = new OSDMap(); - foreach (KeyValuePair e in m_attachments) + data["serial"] = OSD.FromInteger(m_serial); + data["height"] = OSD.FromReal(m_avatarHeight); + data["hipoffset"] = OSD.FromReal(m_hipOffset); + + // Wearables + OSDArray wears = new OSDArray(AvatarWearable.MAX_WEARABLES); + for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) + wears.Add(m_wearables[i].Pack()); + data["wearables"] = wears; + + // Avatar Textures + OSDArray textures = new OSDArray(AvatarAppearance.TEXTURE_COUNT); + for (uint i = 0; i < AvatarAppearance.TEXTURE_COUNT; i++) { - strings.Add(e.Key.ToString()); - strings.Add(e.Value[0].ToString()); - strings.Add(e.Value[1].ToString()); + if (m_texture.FaceTextures[i] != null) + textures.Add(OSD.FromUUID(m_texture.FaceTextures[i].TextureID)); + else + textures.Add(OSD.FromUUID(UUID.Zero)); } + data["textures"] = textures; - return String.Join(",", strings.ToArray()); + // Visual Parameters + OSDBinary visualparams = new OSDBinary(m_visualparams); + data["visualparams"] = visualparams; + + // Attachments + OSDArray attachs = new OSDArray(m_attachments.Count); + foreach (KeyValuePair kvp in m_attachments) + attachs.Add(kvp.Value.Pack()); + data["attachments"] = attachs; + + return data; } - void SetAttachmentsString(string data) + /// + /// Unpack and OSDMap and initialize the appearance + /// from it + /// + public void Unpack(OSDMap data) { - string[] strings = data.Split(new char[] {','}); - int i = 0; + if ((data != null) && (data["appearance_serial"] != null)) + m_serial = data["appearance_serial"].AsInteger(); + if ((data != null) && (data["height"] != null)) + m_avatarHeight = (float)data["height"].AsReal(); + if ((data != null) && (data["hipoffset"] != null)) + m_hipOffset = (float)data["hipoffset"].AsReal(); + + try + { + // Wearables + SetDefaultWearables(); + if ((data != null) && (data["wearables"] != null) && (data["wearables"]).Type == OSDType.Array) + { + OSDArray wears = (OSDArray)(data["wearables"]); + for (int i = 0; i < wears.Count; i++) + m_wearables[i] = new AvatarWearable((OSDMap)wears[i]); + } + else + { + m_log.Warn("[AVATARAPPEARANCE] failed to unpack wearables"); + } - m_attachments.Clear(); + // Avatar Textures + SetDefaultTexture(); + if ((data != null) && (data["textures"] != null) && (data["textures"]).Type == OSDType.Array) + { + OSDArray textures = (OSDArray)(data["textures"]); + for (int i = 0; i < AvatarAppearance.TEXTURE_COUNT && i < textures.Count; i++) + { + if (textures[i] != null) + { + UUID textureID = textures[i].AsUUID(); + if (textureID != UUID.Zero) + m_texture.CreateFace((uint)i).TextureID = textureID; + } + } + } + else + { + m_log.Warn("[AVATARAPPEARANCE] failed to unpack textures"); + } - while (strings.Length - i > 2) - { - int attachpoint = Int32.Parse(strings[i]); - UUID item = new UUID(strings[i+1]); - UUID asset = new UUID(strings[i+2]); - i += 3; + // Visual Parameters + SetDefaultParams(); + if ((data != null) && (data["visualparams"] != null)) + { + if ((data["visualparams"].Type == OSDType.Binary) || (data["visualparams"].Type == OSDType.Array)) + m_visualparams = data["visualparams"].AsBinary(); + } + else + { + m_log.Warn("[AVATARAPPEARANCE] failed to unpack visual parameters"); + } - if (!m_attachments.ContainsKey(attachpoint)) + // Attachments + m_attachments = new Dictionary(); + if ((data != null) && (data["attachments"] != null) && (data["attachments"]).Type == OSDType.Array) { - m_attachments[attachpoint] = new UUID[2]; - m_attachments[attachpoint][0] = item; - m_attachments[attachpoint][1] = asset; + OSDArray attachs = (OSDArray)(data["attachments"]); + for (int i = 0; i < attachs.Count; i++) + { + AvatarAttachment attach = new AvatarAttachment((OSDMap)attachs[i]); + m_attachments[attach.AttachPoint] = attach; + } } } + catch (Exception e) + { + m_log.ErrorFormat("[AVATARAPPEARANCE] unpack failed badly: {0}",e.Message); + } } + + /// /// Viewer Params Array Element for AgentSetAppearance /// Generated from LibOMV's Visual Params list diff --git a/OpenSim/Framework/AvatarAttachment.cs b/OpenSim/Framework/AvatarAttachment.cs new file mode 100644 index 0000000..c68d78d --- /dev/null +++ b/OpenSim/Framework/AvatarAttachment.cs @@ -0,0 +1,78 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using OpenMetaverse; +using OpenMetaverse.StructuredData; + +namespace OpenSim.Framework +{ + public class AvatarAttachment + { + public int AttachPoint; + public UUID ItemID; + public UUID AssetID; + + public AvatarAttachment(AvatarAttachment attach) + { + AttachPoint = attach.AttachPoint; + ItemID = attach.ItemID; + AssetID = attach.AssetID; + } + + public AvatarAttachment(int point, UUID item, UUID asset) + { + AttachPoint = point; + ItemID = item; + AssetID = asset; + } + + public AvatarAttachment(OSDMap args) + { + Unpack(args); + } + + public OSDMap Pack() + { + OSDMap attachdata = new OSDMap(); + attachdata["point"] = OSD.FromInteger(AttachPoint); + attachdata["item"] = OSD.FromUUID(ItemID); + attachdata["asset"] = OSD.FromUUID(AssetID); + + return attachdata; + } + + + public void Unpack(OSDMap args) + { + if (args["point"] != null) + AttachPoint = args["point"].AsInteger(); + ItemID = (args["item"] != null) ? args["item"].AsUUID() : UUID.Zero; + AssetID = (args["asset"] != null) ? args["asset"].AsUUID() : UUID.Zero; + } + } +} diff --git a/OpenSim/Framework/AvatarWearable.cs b/OpenSim/Framework/AvatarWearable.cs index 30c5172..87098bf 100644 --- a/OpenSim/Framework/AvatarWearable.cs +++ b/OpenSim/Framework/AvatarWearable.cs @@ -26,14 +26,32 @@ */ using System; -using System.Runtime.Serialization; -using System.Security.Permissions; using OpenMetaverse; +using OpenMetaverse.StructuredData; namespace OpenSim.Framework { public class AvatarWearable { + // these are guessed at by the list here - + // http://wiki.secondlife.com/wiki/Avatar_Appearance. We'll + // correct them over time for when were are wrong. + public static readonly int BODY = 0; + public static readonly int SKIN = 1; + public static readonly int HAIR = 2; + public static readonly int EYES = 3; + public static readonly int SHIRT = 4; + public static readonly int PANTS = 5; + public static readonly int SHOES = 6; + public static readonly int SOCKS = 7; + public static readonly int JACKET = 8; + public static readonly int GLOVES = 9; + public static readonly int UNDERSHIRT = 10; + public static readonly int UNDERPANTS = 11; + public static readonly int SKIRT = 12; + + public static readonly int MAX_WEARABLES = 13; + public static readonly UUID DEFAULT_BODY_ITEM = new UUID("66c41e39-38f9-f75a-024e-585989bfaba9"); public static readonly UUID DEFAULT_BODY_ASSET = new UUID("66c41e39-38f9-f75a-024e-585989bfab73"); @@ -62,12 +80,32 @@ namespace OpenSim.Framework ItemID = itemId; } + public AvatarWearable(OSDMap args) + { + Unpack(args); + } + + public OSDMap Pack() + { + OSDMap weardata = new OSDMap(); + weardata["item"] = OSD.FromUUID(ItemID); + weardata["asset"] = OSD.FromUUID(AssetID); + + return weardata; + } + + public void Unpack(OSDMap args) + { + ItemID = (args["item"] != null) ? args["item"].AsUUID() : UUID.Zero; + AssetID = (args["asset"] != null) ? args["asset"].AsUUID() : UUID.Zero; + } + public static AvatarWearable[] DefaultWearables { get { - AvatarWearable[] defaultWearables = new AvatarWearable[13]; //should be 13 of these - for (int i = 0; i < 13; i++) + AvatarWearable[] defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 13 of these + for (int i = 0; i < MAX_WEARABLES; i++) { defaultWearables[i] = new AvatarWearable(); } diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs index 72283de..6b64e12 100644 --- a/OpenSim/Framework/Capabilities/Caps.cs +++ b/OpenSim/Framework/Capabilities/Caps.cs @@ -976,7 +976,9 @@ namespace OpenSim.Framework.Capabilities public void BakedTextureUploaded(UUID assetID, byte[] data) { - m_log.DebugFormat("[CAPS]: Received baked texture {0}", assetID.ToString()); +// DEBUG ON + m_log.WarnFormat("[CAPS]: Received baked texture {0}", assetID.ToString()); +// DEBUG OFF AssetBase asset; asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_agentID.ToString()); asset.Data = data; diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 0dc5dbc..fdebba3 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -225,46 +225,6 @@ namespace OpenSim.Framework } } - public class AttachmentData - { - public int AttachPoint; - public UUID ItemID; - public UUID AssetID; - - public AttachmentData(int point, UUID item, UUID asset) - { - AttachPoint = point; - ItemID = item; - AssetID = asset; - } - - public AttachmentData(OSDMap args) - { - UnpackUpdateMessage(args); - } - - public OSDMap PackUpdateMessage() - { - OSDMap attachdata = new OSDMap(); - attachdata["point"] = OSD.FromInteger(AttachPoint); - attachdata["item"] = OSD.FromUUID(ItemID); - attachdata["asset"] = OSD.FromUUID(AssetID); - - return attachdata; - } - - - public void UnpackUpdateMessage(OSDMap args) - { - if (args["point"] != null) - AttachPoint = args["point"].AsInteger(); - if (args["item"] != null) - ItemID = args["item"].AsUUID(); - if (args["asset"] != null) - AssetID = args["asset"].AsUUID(); - } - } - public class ControllerData { public UUID ItemID; @@ -348,11 +308,14 @@ namespace OpenSim.Framework public UUID GranterID; // Appearance + public AvatarAppearance Appearance; + +/* public byte[] AgentTextures; public byte[] VisualParams; public UUID[] Wearables; - public AttachmentData[] Attachments; - + public AvatarAttachment[] Attachments; +*/ // Scripted public ControllerData[] Controllers; @@ -413,6 +376,9 @@ namespace OpenSim.Framework args["animations"] = anims; } + if (Appearance != null) + args["packed_appearance"] = Appearance.Pack(); + //if ((AgentTextures != null) && (AgentTextures.Length > 0)) //{ // OSDArray textures = new OSDArray(AgentTextures.Length); @@ -421,7 +387,7 @@ namespace OpenSim.Framework // args["agent_textures"] = textures; //} - +/* if ((AgentTextures != null) && (AgentTextures.Length > 0)) args["texture_entry"] = OSD.FromBinary(AgentTextures); @@ -441,11 +407,11 @@ namespace OpenSim.Framework if ((Attachments != null) && (Attachments.Length > 0)) { OSDArray attachs = new OSDArray(Attachments.Length); - foreach (AttachmentData att in Attachments) - attachs.Add(att.PackUpdateMessage()); + foreach (AvatarAttachment att in Attachments) + attachs.Add(att.Pack()); args["attachments"] = attachs; } - +*/ if ((Controllers != null) && (Controllers.Length > 0)) { OSDArray controls = new OSDArray(Controllers.Length); @@ -581,6 +547,12 @@ namespace OpenSim.Framework // AgentTextures[i++] = o.AsUUID(); //} + if (args["packed_appearance"] != null) + Appearance = new AvatarAppearance(AgentID,(OSDMap)args["packed_appearance"]); + else + Appearance = new AvatarAppearance(AgentID); + +/* if (args["texture_entry"] != null) AgentTextures = args["texture_entry"].AsBinary(); @@ -599,17 +571,17 @@ namespace OpenSim.Framework if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(args["attachments"]); - Attachments = new AttachmentData[attachs.Count]; + Attachments = new AvatarAttachment[attachs.Count]; int i = 0; foreach (OSD o in attachs) { if (o.Type == OSDType.Map) { - Attachments[i++] = new AttachmentData((OSDMap)o); + Attachments[i++] = new AvatarAttachment((OSDMap)o); } } } - +*/ if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array) { OSDArray controls = (OSDArray)(args["controllers"]); diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 94815cd..027f9c5 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -43,7 +43,7 @@ namespace OpenSim.Framework public delegate void TextureRequest(Object sender, TextureRequestArgs e); - public delegate void AvatarNowWearing(Object sender, AvatarWearingArgs e); + public delegate void AvatarNowWearing(IClientAPI sender, AvatarWearingArgs e); public delegate void ImprovedInstantMessage(IClientAPI remoteclient, GridInstantMessage im); @@ -65,7 +65,7 @@ namespace OpenSim.Framework public delegate void NetworkStats(int inPackets, int outPackets, int unAckedBytes); - public delegate void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams); + public delegate void SetAppearance(IClientAPI remoteClient, Primitive.TextureEntry textureEntry, byte[] visualParams); public delegate void StartAnim(IClientAPI remoteClient, UUID animID); @@ -711,7 +711,7 @@ namespace OpenSim.Framework event TeleportLandmarkRequest OnTeleportLandmarkRequest; event DeRezObject OnDeRezObject; event Action OnRegionHandShakeReply; - event GenericCall2 OnRequestWearables; + event GenericCall1 OnRequestWearables; event GenericCall1 OnCompleteMovementToRegion; event UpdateAgent OnPreAgentUpdate; event UpdateAgent OnAgentUpdate; diff --git a/OpenSim/Framework/Tests/AgentCircuitDataTest.cs b/OpenSim/Framework/Tests/AgentCircuitDataTest.cs index 2fda6f3..05d8469 100644 --- a/OpenSim/Framework/Tests/AgentCircuitDataTest.cs +++ b/OpenSim/Framework/Tests/AgentCircuitDataTest.cs @@ -65,9 +65,7 @@ namespace OpenSim.Framework.Tests SessionId = UUID.Random(); AvAppearance = new AvatarAppearance(AgentId); - AvAppearance.SetDefaultWearables(); VisualParams = new byte[218]; - AvAppearance.SetDefaultParams(VisualParams); //body VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEIGHT] = 155; diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 48d5a12..426e1df 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -79,7 +79,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP public event DeRezObject OnDeRezObject; public event ModifyTerrain OnModifyTerrain; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event SetAppearance OnSetAppearance; public event AvatarNowWearing OnAvatarNowWearing; public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv; @@ -5647,11 +5647,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP private bool HandlerAgentWearablesRequest(IClientAPI sender, Packet Pack) { - GenericCall2 handlerRequestWearables = OnRequestWearables; + GenericCall1 handlerRequestWearables = OnRequestWearables; if (handlerRequestWearables != null) { - handlerRequestWearables(); + handlerRequestWearables(sender); } Action handlerRequestAvatarsData = OnRequestAvatarsData; @@ -5694,7 +5694,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (appear.ObjectData.TextureEntry.Length > 1) te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); - handlerSetAppearance(te, visualparams); + handlerSetAppearance(sender, te, visualparams); } catch (Exception e) { diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 2a0c0b1..ad6b1de 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -124,13 +124,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments // Save avatar attachment information ScenePresence presence; - if (m_scene.AvatarFactory != null && m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) + if (m_scene.AvatarService != null && m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) { m_log.Info( "[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId + ", AttachmentPoint: " + AttachmentPt); - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } } } @@ -382,8 +382,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments item = m_scene.InventoryService.GetItem(item); presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */); - if (m_scene.AvatarFactory != null) - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + if (m_scene.AvatarService != null) + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } } @@ -405,10 +405,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments presence.Appearance.DetachAttachment(itemID); // Save avatar attachment information - if (m_scene.AvatarFactory != null) + if (m_scene.AvatarService != null) { m_log.Debug("[ATTACHMENTS MODULE]: Detaching from UserID: " + remoteClient.AgentId + ", ItemID: " + itemID); - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } } @@ -435,9 +435,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments presence.Appearance.DetachAttachment(itemID); - if (m_scene.AvatarFactory != null) + if (m_scene.AvatarService != null) { - m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); + m_scene.AvatarService.SetAppearance(remoteClient.AgentId, presence.Appearance); } part.ParentGroup.DetachToGround(); diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 22c8937..9f7ff7f 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -38,48 +38,20 @@ using OpenSim.Services.Interfaces; namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { - public class AvatarFactoryModule : IAvatarFactory, IRegionModule + public class AvatarFactoryModule : IRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; private Scene m_scene = null; - private static readonly AvatarAppearance def = new AvatarAppearance(); - public bool TryGetAvatarAppearance(UUID avatarId, out AvatarAppearance appearance) - { - AvatarData avatar = m_scene.AvatarService.GetAvatar(avatarId); - //if ((profile != null) && (profile.RootFolder != null)) - if (avatar != null) - { - appearance = avatar.ToAvatarAppearance(avatarId); - return true; - } - - m_log.ErrorFormat("[APPEARANCE]: Appearance not found for {0}, creating default", avatarId); - appearance = CreateDefault(avatarId); - return false; - } - - private AvatarAppearance CreateDefault(UUID avatarId) - { - AvatarAppearance appearance = null; - AvatarWearable[] wearables; - byte[] visualParams; - GetDefaultAvatarAppearance(out wearables, out visualParams); - appearance = new AvatarAppearance(avatarId, wearables, visualParams); - - return appearance; - } + private bool m_startAnimationSet = false; public void Initialise(Scene scene, IConfigSource source) { - scene.RegisterModuleInterface(this); scene.EventManager.OnNewClient += NewClient; if (m_scene == null) - { m_scene = scene; - } - } public void PostInitialise() @@ -102,6 +74,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory public void NewClient(IClientAPI client) { + client.OnRequestWearables += SendWearables; + client.OnSetAppearance += SetAppearance; client.OnAvatarNowWearing += AvatarIsWearing; } @@ -110,42 +84,115 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // client.OnAvatarNowWearing -= AvatarIsWearing; } - public void SetAppearanceAssets(UUID userID, ref AvatarAppearance appearance) + /// + /// Set appearance data (textureentry and slider settings) received from the client + /// + /// + /// + public void SetAppearance(IClientAPI client, Primitive.TextureEntry textureEntry, byte[] visualParams) { - IInventoryService invService = m_scene.InventoryService; + ScenePresence sp = m_scene.GetScenePresence(client.AgentId); + if (sp == null) + { + m_log.WarnFormat("[AVFACTORY] SetAppearance unable to find presence for {0}",client.AgentId); + return; + } + +// DEBUG ON + m_log.WarnFormat("[AVFACTORY] SetAppearance for {0}",client.AgentId); +// DEBUG OFF - if (invService.GetRootFolder(userID) != null) +/* + if (m_physicsActor != null) { - for (int i = 0; i < 13; i++) + if (!IsChildAgent) { - if (appearance.Wearables[i].ItemID == UUID.Zero) - { - appearance.Wearables[i].AssetID = UUID.Zero; - } - else - { - InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i].ItemID, userID); - baseItem = invService.GetItem(baseItem); + // This may seem like it's redundant, remove the avatar from the physics scene + // just to add it back again, but it saves us from having to update + // 3 variables 10 times a second. + bool flyingTemp = m_physicsActor.Flying; + RemoveFromPhysicalScene(); + //m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); - if (baseItem != null) - { - appearance.Wearables[i].AssetID = baseItem.AssetID; - } - else + //PhysicsActor = null; + + AddToPhysicalScene(flyingTemp); + } + } +*/ + #region Bake Cache Check + + bool changed = false; + + // Process the texture entry + if (textureEntry != null) + { + for (int i = 0; i < BAKE_INDICES.Length; i++) + { + int j = BAKE_INDICES[i]; + Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; + + if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) + { + if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) { - m_log.ErrorFormat( - "[APPEARANCE]: Can't find inventory item {0} for {1}, setting to default", - appearance.Wearables[i].ItemID, (WearableType)i); - - appearance.Wearables[i].AssetID = def.Wearables[i].AssetID; + m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",face.TextureID,j,this.Name); + client.SendRebakeAvatarTextures(face.TextureID); } } } + changed = sp.Appearance.SetTextureEntries(textureEntry); + + } + + #endregion Bake Cache Check + + changed = sp.Appearance.SetVisualParams(visualParams) || changed; + + // If nothing changed (this happens frequently) just return + if (changed) + { +// DEBUG ON + m_log.Warn("[AVFACTORY] Appearance changed"); +// DEBUG OFF + sp.Appearance.SetAppearance(textureEntry, visualParams); + if (sp.Appearance.AvatarHeight > 0) + sp.SetHeight(sp.Appearance.AvatarHeight); + + m_scene.AvatarService.SetAppearance(client.AgentId, sp.Appearance); } +// DEBUG ON else + m_log.Warn("[AVFACTORY] Appearance did not change"); +// DEBUG OFF + + sp.SendAppearanceToAllOtherAgents(); + if (!m_startAnimationSet) + { + sp.Animator.UpdateMovementAnimations(); + m_startAnimationSet = true; + } + + client.SendAvatarDataImmediate(sp); + client.SendAppearance(sp.Appearance.Owner,sp.Appearance.VisualParams,sp.Appearance.Texture.GetBytes()); + } + + /// + /// Tell the client for this scene presence what items it should be wearing now + /// + public void SendWearables(IClientAPI client) + { + ScenePresence sp = m_scene.GetScenePresence(client.AgentId); + if (sp == null) { - m_log.WarnFormat("[APPEARANCE]: user {0} has no inventory, appearance isn't going to work", userID); + m_log.WarnFormat("[AVFACTORY] SendWearables unable to find presence for {0}",client.AgentId); + return; } + +// DEBUG ON + m_log.WarnFormat("[AVFACTORY]: Received request for wearables of {0}", client.AgentId); +// DEBUG OFF + client.SendWearables(sp.Appearance.Wearables,sp.Appearance.Serial++); } /// @@ -153,65 +200,81 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory /// /// /// - public void AvatarIsWearing(Object sender, AvatarWearingArgs e) + public void AvatarIsWearing(IClientAPI client, AvatarWearingArgs e) { - m_log.DebugFormat("[APPEARANCE]: AvatarIsWearing"); - - IClientAPI clientView = (IClientAPI)sender; - ScenePresence sp = m_scene.GetScenePresence(clientView.AgentId); - - if (sp == null) + ScenePresence sp = m_scene.GetScenePresence(client.AgentId); + if (sp == null) { - m_log.Error("[APPEARANCE]: Avatar is child agent, ignoring AvatarIsWearing event"); + m_log.WarnFormat("[AVFACTORY] AvatarIsWearing unable to find presence for {0}",client.AgentId); return; } + +// DEBUG ON + m_log.WarnFormat("[AVFACTORY]: AvatarIsWearing called for {0}",client.AgentId); +// DEBUG OFF + + AvatarAppearance avatAppearance = new AvatarAppearance(sp.Appearance); - AvatarAppearance avatAppearance = sp.Appearance; - //if (!TryGetAvatarAppearance(clientView.AgentId, out avatAppearance)) + //if (!TryGetAvatarAppearance(client.AgentId, out avatAppearance)) //{ - // m_log.Warn("[APPEARANCE]: We didn't seem to find the appearance, falling back to ScenePresence"); + // m_log.Warn("[AVFACTORY]: We didn't seem to find the appearance, falling back to ScenePresence"); // avatAppearance = sp.Appearance; //} - //m_log.DebugFormat("[APPEARANCE]: Received wearables for {0}", clientView.Name); + //m_log.DebugFormat("[AVFACTORY]: Received wearables for {0}", client.Name); foreach (AvatarWearingArgs.Wearable wear in e.NowWearing) { - if (wear.Type < 13) + if (wear.Type < AvatarWearable.MAX_WEARABLES) { - avatAppearance.Wearables[wear.Type].ItemID = wear.ItemID; + AvatarWearable newWearable = new AvatarWearable(wear.ItemID,UUID.Zero); + avatAppearance.SetWearable(wear.Type, newWearable); } } SetAppearanceAssets(sp.UUID, ref avatAppearance); - AvatarData adata = new AvatarData(avatAppearance); - m_scene.AvatarService.SetAvatar(clientView.AgentId, adata); + m_scene.AvatarService.SetAppearance(client.AgentId, avatAppearance); sp.Appearance = avatAppearance; } - public static void GetDefaultAvatarAppearance(out AvatarWearable[] wearables, out byte[] visualParams) + private void SetAppearanceAssets(UUID userID, ref AvatarAppearance appearance) { - visualParams = GetDefaultVisualParams(); - wearables = AvatarWearable.DefaultWearables; - } + IInventoryService invService = m_scene.InventoryService; - public void UpdateDatabase(UUID user, AvatarAppearance appearance) - { - //m_log.DebugFormat("[APPEARANCE]: UpdateDatabase"); - AvatarData adata = new AvatarData(appearance); - m_scene.AvatarService.SetAvatar(user, adata); - } + if (invService.GetRootFolder(userID) != null) + { + for (int i = 0; i < AvatarWearable.MAX_WEARABLES; i++) + { + if (appearance.Wearables[i].ItemID == UUID.Zero) + { + appearance.Wearables[i].AssetID = UUID.Zero; + } + else + { + InventoryItemBase baseItem = new InventoryItemBase(appearance.Wearables[i].ItemID, userID); + baseItem = invService.GetItem(baseItem); - private static byte[] GetDefaultVisualParams() - { - byte[] visualParams; - visualParams = new byte[218]; - for (int i = 0; i < 218; i++) + if (baseItem != null) + { + appearance.Wearables[i].AssetID = baseItem.AssetID; + } + else + { + m_log.ErrorFormat( + "[AVFACTORY]: Can't find inventory item {0} for {1}, setting to default", + appearance.Wearables[i].ItemID, (WearableType)i); + + appearance.Wearables[i].ItemID = UUID.Zero; + appearance.Wearables[i].AssetID = UUID.Zero; + } + } + } + } + else { - visualParams[i] = 100; + m_log.WarnFormat("[AVFACTORY]: user {0} has no inventory, appearance isn't going to work", userID); } - return visualParams; } } } diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs index 47f19a3..9ee19f8 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Avatar/LocalAvatarServiceConnector.cs @@ -30,6 +30,7 @@ using System.Collections.Generic; using System.Reflection; using log4net; using Nini.Config; +using OpenSim.Framework; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Server.Base; @@ -137,6 +138,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Avatar #region IAvatarService + public AvatarAppearance GetAppearance(UUID userID) + { + return m_AvatarService.GetAppearance(userID); + } + + public bool SetAppearance(UUID userID, AvatarAppearance appearance) + { + return m_AvatarService.SetAppearance(userID,appearance); + } + public AvatarData GetAvatar(UUID userID) { return m_AvatarService.GetAvatar(userID); diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 268612e..f128aa2 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -82,7 +82,7 @@ namespace OpenSim.Region.Examples.SimpleModule public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; diff --git a/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs b/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs deleted file mode 100644 index c967f30..0000000 --- a/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using OpenMetaverse; -using OpenSim.Framework; - -namespace OpenSim.Region.Framework.Interfaces -{ - public interface IAvatarFactory - { - bool TryGetAvatarAppearance(UUID avatarId, out AvatarAppearance appearance); - void UpdateDatabase(UUID userID, AvatarAppearance avatAppearance); - } -} diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 0cfc235..c69c9b1 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -119,7 +119,6 @@ namespace OpenSim.Region.Framework.Scenes protected IXMLRPC m_xmlrpcModule; protected IWorldComm m_worldCommModule; - protected IAvatarFactory m_AvatarFactory; protected IConfigSource m_config; protected IRegionSerialiserModule m_serialiser; protected IDialogModule m_dialogModule; @@ -399,11 +398,6 @@ namespace OpenSim.Region.Framework.Scenes public IAttachmentsModule AttachmentsModule { get; set; } - public IAvatarFactory AvatarFactory - { - get { return m_AvatarFactory; } - } - public ICapabilitiesModule CapsModule { get { return m_capsModule; } @@ -1161,7 +1155,6 @@ namespace OpenSim.Region.Framework.Scenes m_xmlrpcModule = RequestModuleInterface(); m_worldCommModule = RequestModuleInterface(); XferManager = RequestModuleInterface(); - m_AvatarFactory = RequestModuleInterface(); AttachmentsModule = RequestModuleInterface(); m_serialiser = RequestModuleInterface(); m_dialogModule = RequestModuleInterface(); diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 13d9964..5dc48d7 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -75,7 +75,6 @@ namespace OpenSim.Region.Framework.Scenes private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; // private static readonly byte[] DEFAULT_TEXTURE = AvatarAppearance.GetDefaultTexture().GetBytes(); private static readonly Array DIR_CONTROL_FLAGS = Enum.GetValues(typeof(Dir_ControlFlags)); private static readonly Vector3 HEAD_ADJUSTMENT = new Vector3(0f, 0f, 0.3f); @@ -137,8 +136,6 @@ namespace OpenSim.Region.Framework.Scenes private SendCourseLocationsMethod m_sendCourseLocationsMethod; - private bool m_startAnimationSet; - //private Vector3 m_requestedSitOffset = new Vector3(); private Vector3 m_LastFinitePos; @@ -713,13 +710,14 @@ namespace OpenSim.Region.Framework.Scenes SetDirectionVectors(); } +/* public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, AvatarWearable[] wearables) : this(client, world, reginfo) { m_appearance = new AvatarAppearance(m_uuid, wearables, visualParams); } - +*/ public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance) : this(client, world, reginfo) { @@ -733,8 +731,6 @@ namespace OpenSim.Region.Framework.Scenes public void RegisterToEvents() { - m_controllingClient.OnRequestWearables += SendWearables; - m_controllingClient.OnSetAppearance += SetAppearance; m_controllingClient.OnCompleteMovementToRegion += CompleteMovement; //m_controllingClient.OnCompleteMovementToRegion += SendInitialData; m_controllingClient.OnAgentUpdate += HandleAgentUpdate; @@ -1068,7 +1064,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// Sets avatar height in the phyiscs plugin /// - internal void SetHeight(float height) + public void SetHeight(float height) { m_avHeight = height; if (PhysicsActor != null && !IsChildAgent) @@ -1133,7 +1129,6 @@ namespace OpenSim.Region.Framework.Scenes if (friendsModule != null) friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); } - } /// @@ -2392,9 +2387,12 @@ namespace OpenSim.Region.Framework.Scenes if (m_appearance.Texture == null) return; - Vector3 pos = m_pos; - pos.Z += m_appearance.HipOffset; - + if (IsChildAgent) + { + m_log.WarnFormat("[SCENEPRESENCE] A child agent is attempting to send out avatar data"); + return; + } + remoteAvatar.m_controllingClient.SendAvatarDataImmediate(this); m_scene.StatsReporter.AddAgentUpdates(1); } @@ -2437,6 +2435,12 @@ namespace OpenSim.Region.Framework.Scenes m_perfMonMS = Util.EnvironmentTickCount(); // only send update from root agents to other clients; children are only "listening posts" + if (IsChildAgent) + { + m_log.Warn("[SCENEPRESENCE] attempt to send update from a childagent"); + return; + } + int count = 0; m_scene.ForEachScenePresence(delegate(ScenePresence sp) { @@ -2460,29 +2464,20 @@ namespace OpenSim.Region.Framework.Scenes // the inventory arrives // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); - Vector3 pos = m_pos; - pos.Z += m_appearance.HipOffset; - m_controllingClient.SendAvatarDataImmediate(this); + m_controllingClient.SendAppearance(m_appearance.Owner,m_appearance.VisualParams,m_appearance.Texture.GetBytes()); SendInitialFullUpdateToAllClients(); } /// - /// Tell the client for this scene presence what items it should be wearing now - /// - public void SendWearables() - { - m_log.DebugFormat("[SCENE]: Received request for wearables of {0}", Name); - - ControllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); - } - - /// /// /// public void SendAppearanceToAllOtherAgents() { +// DEBUG ON + m_log.WarnFormat("[SP] Send appearance from {0} to all other agents",m_uuid); +// DEBUG OFF m_perfMonMS = Util.EnvironmentTickCount(); m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) @@ -2502,87 +2497,13 @@ namespace OpenSim.Region.Framework.Scenes /// public void SendAppearanceToOtherAgent(ScenePresence avatar) { +// DEBUG ON + m_log.WarnFormat("[SP] Send appearance from {0} to {1}",m_uuid,avatar.ControllingClient.AgentId); +// DEBUG OFF avatar.ControllingClient.SendAppearance( m_appearance.Owner, m_appearance.VisualParams, m_appearance.Texture.GetBytes()); } - /// - /// Set appearance data (textureentry and slider settings) received from the client - /// - /// - /// - public void SetAppearance(Primitive.TextureEntry textureEntry, byte[] visualParams) - { - if (m_physicsActor != null) - { - if (!IsChildAgent) - { - // This may seem like it's redundant, remove the avatar from the physics scene - // just to add it back again, but it saves us from having to update - // 3 variables 10 times a second. - bool flyingTemp = m_physicsActor.Flying; - RemoveFromPhysicalScene(); - //m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); - - //PhysicsActor = null; - - AddToPhysicalScene(flyingTemp); - } - } - - #region Bake Cache Check - - if (textureEntry != null) - { - for (int i = 0; i < BAKE_INDICES.Length; i++) - { - int j = BAKE_INDICES[i]; - Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; - - if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) - { - if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) - { - m_log.Warn("[APPEARANCE]: Missing baked texture " + face.TextureID + " (" + j + ") for avatar " + this.Name); - this.ControllingClient.SendRebakeAvatarTextures(face.TextureID); - } - } - } - - } - - - #endregion Bake Cache Check - - m_appearance.SetAppearance(textureEntry, visualParams); - if (m_appearance.AvatarHeight > 0) - SetHeight(m_appearance.AvatarHeight); - - // This is not needed, because only the transient data changed - //AvatarData adata = new AvatarData(m_appearance); - //m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); - - SendAppearanceToAllOtherAgents(); - if (!m_startAnimationSet) - { - Animator.UpdateMovementAnimations(); - m_startAnimationSet = true; - } - - Vector3 pos = m_pos; - pos.Z += m_appearance.HipOffset; - - m_controllingClient.SendAvatarDataImmediate(this); - } - - public void SetWearable(int wearableId, AvatarWearable wearable) - { - m_appearance.SetWearable(wearableId, wearable); - AvatarData adata = new AvatarData(m_appearance); - m_scene.AvatarService.SetAvatar(m_controllingClient.AgentId, adata); - m_controllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); - } - // Because appearance setting is in a module, we actually need // to give it access to our appearance directly, otherwise we // get a synchronization issue. @@ -2976,6 +2897,9 @@ namespace OpenSim.Region.Framework.Scenes public void CopyTo(AgentData cAgent) { +// DEBUG ON + m_log.ErrorFormat("[SCENEPRESENCE] CALLING COPYTO"); +// DEBUG OFF cAgent.AgentID = UUID; cAgent.RegionID = Scene.RegionInfo.RegionID; @@ -3015,6 +2939,9 @@ namespace OpenSim.Region.Framework.Scenes cAgent.AlwaysRun = m_setAlwaysRun; + cAgent.Appearance = new AvatarAppearance(m_appearance); + +/* try { // We might not pass the Wearables in all cases... @@ -3054,14 +2981,14 @@ namespace OpenSim.Region.Framework.Scenes { //m_log.DebugFormat("[SCENE PRESENCE]: attachments {0}", attPoints.Count); int i = 0; - AttachmentData[] attachs = new AttachmentData[attPoints.Count]; + AvatarAttachment[] attachs = new AvatarAttachment[attPoints.Count]; foreach (int point in attPoints) { - attachs[i++] = new AttachmentData(point, m_appearance.GetAttachedItem(point), m_appearance.GetAttachedAsset(point)); + attachs[i++] = new AvatarAttachment(point, m_appearance.GetAttachedItem(point), m_appearance.GetAttachedAsset(point)); } cAgent.Attachments = attachs; } - +*/ lock (scriptedcontrols) { ControllerData[] controls = new ControllerData[scriptedcontrols.Count]; @@ -3088,6 +3015,9 @@ namespace OpenSim.Region.Framework.Scenes public void CopyFrom(AgentData cAgent) { +// DEBUG ON + m_log.ErrorFormat("[SCENEPRESENCE] CALLING COPYFROM"); +// DEBUG OFF m_originRegionID = cAgent.RegionID; m_callbackURI = cAgent.CallbackURI; @@ -3113,6 +3043,9 @@ namespace OpenSim.Region.Framework.Scenes m_godLevel = cAgent.GodLevel; m_setAlwaysRun = cAgent.AlwaysRun; + m_appearance = new AvatarAppearance(cAgent.Appearance); + +/* uint i = 0; try { @@ -3125,15 +3058,17 @@ namespace OpenSim.Region.Framework.Scenes UUID assetId = cAgent.Wearables[n + 1]; wears[i++] = new AvatarWearable(itemId, assetId); } - m_appearance.Wearables = wears; - Primitive.TextureEntry te; + // m_appearance.Wearables = wears; + Primitive.TextureEntry textures = null; if (cAgent.AgentTextures != null && cAgent.AgentTextures.Length > 1) - te = new Primitive.TextureEntry(cAgent.AgentTextures, 0, cAgent.AgentTextures.Length); - else - te = AvatarAppearance.GetDefaultTexture(); - if ((cAgent.VisualParams == null) || (cAgent.VisualParams.Length < AvatarAppearance.VISUALPARAM_COUNT)) - cAgent.VisualParams = AvatarAppearance.GetDefaultVisualParams(); - m_appearance.SetAppearance(te, (byte[])cAgent.VisualParams.Clone()); + textures = new Primitive.TextureEntry(cAgent.AgentTextures, 0, cAgent.AgentTextures.Length); + + byte[] visuals = null; + + if ((cAgent.VisualParams != null) && (cAgent.VisualParams.Length < AvatarAppearance.VISUALPARAM_COUNT)) + visuals = (byte[])cAgent.VisualParams.Clone(); + + m_appearance = new AvatarAppearance(cAgent.AgentID,wears,textures,visuals); } catch (Exception e) { @@ -3146,14 +3081,14 @@ namespace OpenSim.Region.Framework.Scenes if (cAgent.Attachments != null) { m_appearance.ClearAttachments(); - foreach (AttachmentData att in cAgent.Attachments) + foreach (AvatarAttachment att in cAgent.Attachments) { m_appearance.SetAttachment(att.AttachPoint, att.ItemID, att.AssetID); } } } catch { } - +*/ try { lock (scriptedcontrols) diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 159af79..fc17192 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -676,7 +676,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event TeleportLandmarkRequest OnTeleportLandmarkRequest; public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; @@ -899,7 +899,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server Scene scene = (Scene)Scene; AvatarAppearance appearance; scene.GetAvatarAppearance(this, out appearance); - OnSetAppearance(appearance.Texture, (byte[])appearance.VisualParams.Clone()); + OnSetAppearance(this, appearance.Texture, (byte[])appearance.VisualParams.Clone()); } public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args) diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index fae12b6..6928c4e 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs @@ -188,7 +188,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index ab0be77..c471636 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs @@ -64,15 +64,13 @@ namespace OpenSim.Region.OptionalModules.World.NPC if (m_appearanceCache.ContainsKey(target)) return m_appearanceCache[target]; - AvatarData adata = scene.AvatarService.GetAvatar(target); - if (adata != null) + AvatarAppearance appearance = scene.AvatarService.GetAppearance(target); + if (appearance != null) { - AvatarAppearance x = adata.ToAvatarAppearance(target); - - m_appearanceCache.Add(target, x); - - return x; + m_appearanceCache.Add(target, appearance); + return appearance; } + return new AvatarAppearance(); } @@ -169,7 +167,9 @@ namespace OpenSim.Region.OptionalModules.World.NPC { AvatarAppearance x = GetAppearance(p_cloneAppearanceFrom, p_scene); - sp.SetAppearance(x.Texture, (byte[])x.VisualParams.Clone()); + sp.Appearance.SetTextureEntries(x.Texture); + sp.Appearance.SetVisualParams((byte[])x.VisualParams.Clone()); + sp.SendAppearanceToAllOtherAgents(); } m_avatars.Add(npcAvatar.AgentId, npcAvatar); diff --git a/OpenSim/Services/AvatarService/AvatarService.cs b/OpenSim/Services/AvatarService/AvatarService.cs index 19e662c..a8ad413 100644 --- a/OpenSim/Services/AvatarService/AvatarService.cs +++ b/OpenSim/Services/AvatarService/AvatarService.cs @@ -51,6 +51,20 @@ namespace OpenSim.Services.AvatarService m_log.Debug("[AVATAR SERVICE]: Starting avatar service"); } + // Get|SetAppearance should preserve existing semantics + // until AvatarData can be removed completely + public AvatarAppearance GetAppearance(UUID principalID) + { + AvatarData avatar = GetAvatar(principalID); + return avatar.ToAvatarAppearance(principalID); + } + + public bool SetAppearance(UUID principalID, AvatarAppearance appearance) + { + AvatarData avatar = new AvatarData(appearance); + return SetAvatar(principalID,avatar); + } + public AvatarData GetAvatar(UUID principalID) { AvatarBaseData[] av = m_Database.Get("PrincipalID", principalID.ToString()); diff --git a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs index 96c05a9..1cd6bf8 100644 --- a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs @@ -87,6 +87,18 @@ namespace OpenSim.Services.Connectors #region IAvatarService + public AvatarAppearance GetAppearance(UUID userID) + { + AvatarData avatar = GetAvatar(userID); + return avatar.ToAvatarAppearance(userID); + } + + public bool SetAppearance(UUID userID, AvatarAppearance appearance) + { + AvatarData avatar = new AvatarData(appearance); + return SetAvatar(userID,avatar); + } + public AvatarData GetAvatar(UUID userID) { Dictionary sendData = new Dictionary(); diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs index 4d0d53e..ea9b4b4 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs @@ -28,6 +28,9 @@ using System; using System.Collections.Generic; using System.Collections.Specialized; +// DEBUG ON +using System.Diagnostics; +// DEBUG OFF using System.Reflection; using log4net; using Mono.Addins; @@ -106,6 +109,80 @@ namespace OpenSim.Services.Connectors.SimianGrid #region IAvatarService + // + // Retrieves the LLPackedAppearance field from user data and unpacks + // it into an AvatarAppearance structure + // + // + public AvatarAppearance GetAppearance(UUID userID) + { + NameValueCollection requestArgs = new NameValueCollection + { + { "RequestMethod", "GetUser" }, + { "UserID", userID.ToString() } + }; + + OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs); + if (response["Success"].AsBoolean()) + { + OSDMap map = null; + try { map = OSDParser.DeserializeJson(response["LLPackedAppearance"].AsString()) as OSDMap; } + catch { } + + if (map != null) + { + AvatarAppearance appearance = new AvatarAppearance(map); +// DEBUG ON + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR] retrieved appearance for {0}:\n{1}",userID,appearance.ToString()); +// DEBUG OFF + return appearance; + } + + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to decode appearance for {0}",userID); + return null; + } + + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to get appearance for {0}: {1}", + userID,response["Message"].AsString()); + return null; + } + + // + // + // + public bool SetAppearance(UUID userID, AvatarAppearance appearance) + { + OSDMap map = appearance.Pack(); + if (map == null) + { + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to encode appearance for {0}",userID); + return false; + } + +// DEBUG ON + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR] save appearance for {0}",userID); +// DEBUG OFF + + NameValueCollection requestArgs = new NameValueCollection + { + { "RequestMethod", "AddUserData" }, + { "UserID", userID.ToString() }, + { "LLPackedAppearance", OSDParser.SerializeJsonString(map) } + }; + + OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs); + bool success = response["Success"].AsBoolean(); + + if (! success) + m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to save appearance for {0}: {1}", + userID,response["Message"].AsString()); + + return success; + } + + // + // + // public AvatarData GetAvatar(UUID userID) { NameValueCollection requestArgs = new NameValueCollection @@ -154,7 +231,7 @@ namespace OpenSim.Services.Connectors.SimianGrid foreach (KeyValuePair kvp in map) avatar.Data[kvp.Key] = kvp.Value.AsString(); } - + return avatar; } else @@ -173,6 +250,9 @@ namespace OpenSim.Services.Connectors.SimianGrid return null; } + // + // + // public bool SetAvatar(UUID userID, AvatarData avatar) { m_log.Debug("[SIMIAN AVATAR CONNECTOR]: SetAvatar called for " + userID); diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index de3bcf9..93b977b 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs @@ -42,6 +42,21 @@ namespace OpenSim.Services.Interfaces /// /// /// + AvatarAppearance GetAppearance(UUID userID); + + /// + /// Called by everyone who can change the avatar data (so, regions) + /// + /// + /// + /// + bool SetAppearance(UUID userID, AvatarAppearance appearance); + + /// + /// Called by the login service + /// + /// + /// AvatarData GetAvatar(UUID userID); /// @@ -217,23 +232,26 @@ namespace OpenSim.Services.Interfaces foreach (KeyValuePair _kvp in Data) if (_kvp.Key.StartsWith("_ap_")) attchs[_kvp.Key] = _kvp.Value; - Hashtable aaAttachs = new Hashtable(); + foreach (KeyValuePair _kvp in attchs) { string pointStr = _kvp.Key.Substring(4); int point = 0; if (!Int32.TryParse(pointStr, out point)) continue; - Hashtable tmp = new Hashtable(); + UUID uuid = UUID.Zero; UUID.TryParse(_kvp.Value, out uuid); - tmp["item"] = uuid; - tmp["asset"] = UUID.Zero.ToString(); - aaAttachs[point] = tmp; + + appearance.SetAttachment(point,uuid,UUID.Zero); } - appearance.SetAttachments(aaAttachs); } - catch { } + catch + { + // We really should report something here, returning null + // will at least break the wrapper + return null; + } return appearance; } diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 127c4b2..a06476e 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs @@ -330,10 +330,10 @@ namespace OpenSim.Services.LLLoginService // // Get the avatar // - AvatarData avatar = null; + AvatarAppearance avatar = null; if (m_AvatarService != null) { - avatar = m_AvatarService.GetAvatar(account.PrincipalID); + avatar = m_AvatarService.GetAppearance(account.PrincipalID); } // @@ -601,7 +601,7 @@ namespace OpenSim.Services.LLLoginService } } - protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarData avatar, + protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarAppearance avatar, UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, string channel, string mac, string id0, IPEndPoint clientIP, out string where, out string reason, out GridRegion dest) { @@ -697,14 +697,14 @@ namespace OpenSim.Services.LLLoginService } private AgentCircuitData MakeAgent(GridRegion region, UserAccount account, - AvatarData avatar, UUID session, UUID secureSession, uint circuit, Vector3 position, + AvatarAppearance avatar, UUID session, UUID secureSession, uint circuit, Vector3 position, string ipaddress, string viewer, string channel, string mac, string id0) { AgentCircuitData aCircuit = new AgentCircuitData(); aCircuit.AgentID = account.PrincipalID; if (avatar != null) - aCircuit.Appearance = avatar.ToAvatarAppearance(account.PrincipalID); + aCircuit.Appearance = new AvatarAppearance(avatar); else aCircuit.Appearance = new AvatarAppearance(account.PrincipalID); diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs index e46f9b7..b2c8b35 100644 --- a/OpenSim/Tests/Common/Mock/TestClient.cs +++ b/OpenSim/Tests/Common/Mock/TestClient.cs @@ -94,7 +94,7 @@ namespace OpenSim.Tests.Common.Mock public event DeRezObject OnDeRezObject; public event Action OnRegionHandShakeReply; - public event GenericCall2 OnRequestWearables; + public event GenericCall1 OnRequestWearables; public event GenericCall1 OnCompleteMovementToRegion; public event UpdateAgent OnPreAgentUpdate; public event UpdateAgent OnAgentUpdate; -- cgit v1.1 From 267f18925d06ca05e2a5ffbfbb63582783762439 Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Thu, 21 Oct 2010 16:48:58 -0700 Subject: First attempt to get multiple attachments working to support viewer2. The attachment code appears to work correctly for 1.23 viewers so, in spite of some big changes in the internal representation, there don't appear to be regressions. That being said, I still can't get a viewer2 avatar to show correctly. --- .../RemoteController/RemoteAdminPlugin.cs | 8 +- .../Rest/Inventory/RestAppearanceServices.cs | 25 ++-- OpenSim/Framework/AvatarAppearance.cs | 138 +++++++++++---------- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 9 +- .../Scripting/Minimodule/SPAvatar.cs | 15 +-- OpenSim/Services/Interfaces/IAvatarService.cs | 16 +-- 6 files changed, 100 insertions(+), 111 deletions(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 0589748..1829c8d 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -1614,12 +1614,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController } // Attachments - Dictionary attachments = avatarAppearance.Attachments; + List attachments = avatarAppearance.GetAttachments(); - foreach (KeyValuePair attachment in attachments) + foreach (AvatarAttachment attachment in attachments) { - int attachpoint = attachment.Value.AttachPoint; - UUID itemID = attachment.Value.ItemID; + int attachpoint = attachment.AttachPoint; + UUID itemID = attachment.ItemID; if (itemID != UUID.Zero) { diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs index 8271d76..3f6d4d6 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs @@ -27,6 +27,7 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Xml; using OpenMetaverse; using OpenSim.Framework; @@ -765,25 +766,19 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory FormatPart(rdata, "UnderShirt", rdata.userAppearance.UnderShirtItem, rdata.userAppearance.UnderShirtAsset); FormatPart(rdata, "UnderPants", rdata.userAppearance.UnderPantsItem, rdata.userAppearance.UnderPantsAsset); - Hashtable attachments = rdata.userAppearance.GetAttachments(); + Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting attachments", MsgId); - if (attachments != null) + rdata.writer.WriteStartElement("Attachments"); + List attachments = rdata.userAppearance.GetAttachments(); + foreach (AvatarAttachment attach in attachments) { - - Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting attachments", MsgId); - - rdata.writer.WriteStartElement("Attachments"); - for (int i = 0; i < attachments.Count; i++) - { - Hashtable attachment = attachments[i] as Hashtable; - rdata.writer.WriteStartElement("Attachment"); - rdata.writer.WriteAttributeString("AtPoint", i.ToString()); - rdata.writer.WriteAttributeString("Item", (string) attachment["item"]); - rdata.writer.WriteAttributeString("Asset", (string) attachment["asset"]); - rdata.writer.WriteEndElement(); - } + rdata.writer.WriteStartElement("Attachment"); + rdata.writer.WriteAttributeString("AtPoint", attach.AttachPoint.ToString()); + rdata.writer.WriteAttributeString("Item", attach.ItemID.ToString()); + rdata.writer.WriteAttributeString("Asset", attach.AssetID.ToString()); rdata.writer.WriteEndElement(); } + rdata.writer.WriteEndElement(); Primitive.TextureEntry texture = rdata.userAppearance.Texture; diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 55646dd..ba0cad2 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -51,7 +51,7 @@ namespace OpenSim.Framework protected byte[] m_visualparams; protected Primitive.TextureEntry m_texture; protected AvatarWearable[] m_wearables; - protected Dictionary m_attachments; + protected Dictionary> m_attachments; protected float m_avatarHeight = 0; protected float m_hipOffset = 0; @@ -85,11 +85,6 @@ namespace OpenSim.Framework set { m_wearables = value; } } - public virtual Dictionary Attachments - { - get { return m_attachments; } - } - public virtual UUID BodyItem { get { return m_wearables[AvatarWearable.BODY].ItemID; } set { m_wearables[AvatarWearable.BODY].ItemID = value; } @@ -246,7 +241,7 @@ namespace OpenSim.Framework SetDefaultParams(); SetHeight(); - m_attachments = new Dictionary(); + m_attachments = new Dictionary>(); } public AvatarAppearance(UUID avatarID, OSDMap map) @@ -284,7 +279,7 @@ namespace OpenSim.Framework SetHeight(); - m_attachments = new Dictionary(); + m_attachments = new Dictionary>(); } public AvatarAppearance(AvatarAppearance appearance) @@ -302,7 +297,7 @@ namespace OpenSim.Framework SetDefaultParams(); SetHeight(); - m_attachments = new Dictionary(); + m_attachments = new Dictionary>(); return; } @@ -329,9 +324,10 @@ namespace OpenSim.Framework if (appearance.VisualParams != null) m_visualparams = (byte[])appearance.VisualParams.Clone(); - m_attachments = new Dictionary(); - foreach (KeyValuePair kvp in appearance.Attachments) - m_attachments[kvp.Key] = new AvatarAttachment(kvp.Value); + // Copy the attachment, force append mode since that ensures consistency + m_attachments = new Dictionary>(); + foreach (AvatarAttachment attachment in appearance.GetAttachments()) + AppendAttachment(new AvatarAttachment(attachment)); } protected virtual void SetDefaultWearables() @@ -487,12 +483,41 @@ namespace OpenSim.Framework } // DEBUG OFF - public void SetAttachments(AvatarAttachment[] data) + /// + /// Get a list of the attachments, note that there may be + /// duplicate attachpoints + /// + public List GetAttachments() + { + List alist = new List(); + foreach (KeyValuePair> kvp in m_attachments) + { + foreach (AvatarAttachment attach in kvp.Value) + alist.Add(new AvatarAttachment(attach)); + } + + return alist; + } + + internal void AppendAttachment(AvatarAttachment attach) { - foreach (AvatarAttachment attach in data) - m_attachments[attach.AttachPoint] = new AvatarAttachment(attach); + if (! m_attachments.ContainsKey(attach.AttachPoint)) + m_attachments[attach.AttachPoint] = new List(); + m_attachments[attach.AttachPoint].Add(attach); } + internal void ReplaceAttachment(AvatarAttachment attach) + { + m_attachments[attach.AttachPoint] = new List(); + m_attachments[attach.AttachPoint].Add(attach); + } + + /// + /// Add an attachment, if the attachpoint has the + /// 0x80 bit set then we assume this is an append + /// operation otherwise we replace whatever is + /// currently attached at the attachpoint + /// public void SetAttachment(int attachpoint, UUID item, UUID asset) { if (attachpoint == 0) @@ -505,67 +530,47 @@ namespace OpenSim.Framework return; } - m_attachments[attachpoint] = new AvatarAttachment(attachpoint,item,asset); - } - - public Hashtable GetAttachments() - { - if (m_attachments.Count == 0) - return null; - - Hashtable ret = new Hashtable(); - - foreach (KeyValuePair kvp in m_attachments) + // check if this is an append or a replace, 0x80 marks it as an append + if ((attachpoint & 0x80) > 0) { - Hashtable data = new Hashtable(); - data["item"] = kvp.Value.ItemID.ToString(); - data["asset"] = kvp.Value.AssetID.ToString(); - - ret[kvp.Key] = data; + // strip the append bit + int point = attachpoint & 0x7F; + AppendAttachment(new AvatarAttachment(point, item, asset)); + } + else + { + ReplaceAttachment(new AvatarAttachment(attachpoint,item,asset)); } - - return ret; - } - - public List GetAttachedPoints() - { - return new List(m_attachments.Keys); - } - - public UUID GetAttachedItem(int attachpoint) - { - if (!m_attachments.ContainsKey(attachpoint)) - return UUID.Zero; - - return m_attachments[attachpoint].ItemID; - } - - public UUID GetAttachedAsset(int attachpoint) - { - if (!m_attachments.ContainsKey(attachpoint)) - return UUID.Zero; - - return m_attachments[attachpoint].AssetID; } public int GetAttachpoint(UUID itemID) { - foreach (KeyValuePair kvp in m_attachments) + foreach (KeyValuePair> kvp in m_attachments) { - if (kvp.Value.ItemID == itemID) - { + int index = kvp.Value.FindIndex(delegate(AvatarAttachment a) { return a.ItemID == itemID; }); + if (index >= 0) return kvp.Key; - } } + return 0; } public void DetachAttachment(UUID itemID) { - int attachpoint = GetAttachpoint(itemID); + foreach (KeyValuePair> kvp in m_attachments) + { + int index = kvp.Value.FindIndex(delegate(AvatarAttachment a) { return a.ItemID == itemID; }); + if (index >= 0) + { + // Remove it from the list of attachments at that attach point + m_attachments[kvp.Key].RemoveAt(index); - if (attachpoint > 0) - m_attachments.Remove(attachpoint); + // And remove the list if there are no more attachments here + if (m_attachments[kvp.Key].Count == 0) + m_attachments.Remove(kvp.Key); + return; + } + } } public void ClearAttachments() @@ -607,8 +612,8 @@ namespace OpenSim.Framework // Attachments OSDArray attachs = new OSDArray(m_attachments.Count); - foreach (KeyValuePair kvp in m_attachments) - attachs.Add(kvp.Value.Pack()); + foreach (AvatarAttachment attach in GetAttachments()) + attachs.Add(attach.Pack()); data["attachments"] = attachs; return data; @@ -675,15 +680,12 @@ namespace OpenSim.Framework } // Attachments - m_attachments = new Dictionary(); + m_attachments = new Dictionary>(); if ((data != null) && (data["attachments"] != null) && (data["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(data["attachments"]); for (int i = 0; i < attachs.Count; i++) - { - AvatarAttachment attach = new AvatarAttachment((OSDMap)attachs[i]); - m_attachments[attach.AttachPoint] = attach; - } + AppendAttachment(new AvatarAttachment((OSDMap)attachs[i])); } } catch (Exception e) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 5dc48d7..f828a2d 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3657,15 +3657,16 @@ namespace OpenSim.Region.Framework.Scenes return; } - List attPoints = m_appearance.GetAttachedPoints(); - foreach (int p in attPoints) + List attachments = m_appearance.GetAttachments(); + foreach (AvatarAttachment attach in attachments) { if (m_isDeleted) return; - UUID itemID = m_appearance.GetAttachedItem(p); + int p = attach.AttachPoint; + UUID itemID = attach.ItemID; - //UUID assetID = m_appearance.GetAttachedAsset(p); + //UUID assetID = attach.AssetID; // For some reason assetIDs are being written as Zero's in the DB -- need to track tat down // But they're not used anyway, the item is being looked up for now, so let's proceed. //if (UUID.Zero == assetID) diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs index 0786bd9..922eaaf 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs @@ -29,6 +29,7 @@ using System.Collections; using System.Collections.Generic; using System.Security; using OpenMetaverse; +using OpenSim.Framework; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; @@ -81,16 +82,12 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule get { List attachments = new List(); - Hashtable internalAttachments = GetSP().Appearance.GetAttachments(); - if (internalAttachments != null) + List internalAttachments = GetSP().Appearance.GetAttachments(); + foreach (AvatarAttachment attach in internalAttachments) { - foreach (DictionaryEntry element in internalAttachments) - { - Hashtable attachInfo = (Hashtable)element.Value; - attachments.Add(new SPAvatarAttachment(m_rootScene, this, (int) element.Key, - new UUID((string) attachInfo["item"]), - new UUID((string) attachInfo["asset"]), m_security)); - } + attachments.Add(new SPAvatarAttachment(m_rootScene, this, attach.AttachPoint, + new UUID(attach.ItemID), + new UUID(attach.AssetID), m_security)); } return attachments.ToArray(); diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs index 93b977b..eaa6534 100644 --- a/OpenSim/Services/Interfaces/IAvatarService.cs +++ b/OpenSim/Services/Interfaces/IAvatarService.cs @@ -178,17 +178,11 @@ namespace OpenSim.Services.Interfaces Data["UnderShirtAsset"] = appearance.UnderShirtAsset.ToString(); // Attachments - Hashtable attachs = appearance.GetAttachments(); - if (attachs != null) - foreach (DictionaryEntry dentry in attachs) - { - if (dentry.Value != null) - { - Hashtable tab = (Hashtable)dentry.Value; - if (tab.ContainsKey("item") && tab["item"] != null) - Data["_ap_" + dentry.Key] = tab["item"].ToString(); - } - } + List attachments = appearance.GetAttachments(); + foreach (AvatarAttachment attach in attachments) + { + Data["_ap_" + attach.AttachPoint] = attach.ItemID.ToString(); + } } public AvatarAppearance ToAvatarAppearance(UUID owner) -- cgit v1.1 From 657cceb8847f94a9af0c8b2358124105d778486c Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Mon, 25 Oct 2010 09:41:08 -0700 Subject: Intermediate commit for backward compatability; does not compile yet --- OpenSim/Framework/AgentCircuitData.cs | 65 ++++++++++++++-------------- OpenSim/Framework/ChildAgentDataUpdate.cs | 70 ++++++++++++++++++------------- 2 files changed, 73 insertions(+), 62 deletions(-) diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index be98380..30a9548 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -206,16 +206,18 @@ namespace OpenSim.Framework args["service_session_id"] = OSD.FromString(ServiceSessionID); args["start_pos"] = OSD.FromString(startpos.ToString()); - args["appearance_serial"] = OSD.FromInteger(Appearance.Serial); args["client_ip"] = OSD.FromString(IPAddress); args["viewer"] = OSD.FromString(Viewer); args["channel"] = OSD.FromString(Channel); args["mac"] = OSD.FromString(Mac); args["id0"] = OSD.FromString(Id0); -/* + // Eventually this code should be deprecated, use full appearance + // packing in packed_appearance if (Appearance != null) { + args["appearance_serial"] = OSD.FromInteger(Appearance.Serial); + //System.Console.WriteLine("XXX Before packing Wearables"); if ((Appearance.Wearables != null) && (Appearance.Wearables.Length > 0)) { @@ -230,20 +232,19 @@ namespace OpenSim.Framework } //System.Console.WriteLine("XXX Before packing Attachments"); - Dictionary attachments = Appearance.Attachments; + List attachments = Appearance.GetAttachments(); if ((attachments != null) && (attachments.Count > 0)) { OSDArray attachs = new OSDArray(attachments.Count); - foreach (KeyValuePair kvp in attachments) + foreach (AvatarAttachment attach in attachments) { - AvatarAttachment adata = new AvatarAttachment(kvp.Value); - attachs.Add(adata.Pack()); + attachs.Add(attach.Pack()); //System.Console.WriteLine("XXX att.pt=" + kvp.Key + "; itemID=" + kvp.Value[0] + "; assetID=" + kvp.Value[1]); } args["attachments"] = attachs; } } -*/ + if (Appearance != null) { OSDMap appmap = Appearance.Pack(); @@ -339,27 +340,9 @@ namespace OpenSim.Framework try { // Unpack various appearance elements Appearance = new AvatarAppearance(AgentID); - if (args["packed_appearance"] != null) - { - if (args["packed_appearance"].Type == OSDType.Map) - { - Appearance.Unpack((OSDMap)args["packed_appearance"]); - m_log.WarnFormat("[AGENTCIRCUITDATA] unpacked appearance"); - } - else - m_log.WarnFormat("[AGENTCIRCUITDATA] packed_appearance is not a map:\n{0}",args["packed_appearance"].ToString()); - } -// DEBUG ON - else - m_log.Warn("[AGENTCIRCUITDATA] failed to find a valid packed_appearance"); -// DEBUG OFF - } catch (Exception e) - { - m_log.ErrorFormat("[AGENTCIRCUITDATA] failed to unpack appearance; {0}",e.Message); - } - - -/* + + // Eventually this code should be deprecated, use full appearance + // packing in packed_appearance if (args["appearance_serial"] != null) Appearance.Serial = args["appearance_serial"].AsInteger(); @@ -376,18 +359,34 @@ namespace OpenSim.Framework if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(args["attachments"]); - AvatarAttachment[] attachments = new AvatarAttachment[attachs.Count]; - int i = 0; foreach (OSD o in attachs) { if (o.Type == OSDType.Map) { - attachments[i++] = new AvatarAttachment((OSDMap)o); + Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o)); } } - Appearance.SetAttachments(attachments); } -*/ + + if (args["packed_appearance"] != null) + { + if (args["packed_appearance"].Type == OSDType.Map) + { + Appearance.Unpack((OSDMap)args["packed_appearance"]); + m_log.WarnFormat("[AGENTCIRCUITDATA] unpacked appearance"); + } + else + m_log.WarnFormat("[AGENTCIRCUITDATA] packed_appearance is not a map:\n{0}",args["packed_appearance"].ToString()); + } +// DEBUG ON + else + m_log.Warn("[AGENTCIRCUITDATA] failed to find a valid packed_appearance"); +// DEBUG OFF + } catch (Exception e) + { + m_log.ErrorFormat("[AGENTCIRCUITDATA] failed to unpack appearance; {0}",e.Message); + } + ServiceURLs = new Dictionary(); if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) { diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index fdebba3..d7a7d1e 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -387,31 +387,37 @@ namespace OpenSim.Framework // args["agent_textures"] = textures; //} -/* - if ((AgentTextures != null) && (AgentTextures.Length > 0)) - args["texture_entry"] = OSD.FromBinary(AgentTextures); + // The code to pack textures, visuals, wearables and attachments + // should be removed; packed appearance contains the full appearance + // This is retained for backward compatibility only + if ((Appearance.Texture != null) && (Appearance.Texture.Length > 0)) + args["texture_entry"] = OSD.FromBinary(Appearance.Texture); - if ((VisualParams != null) && (VisualParams.Length > 0)) - args["visual_params"] = OSD.FromBinary(VisualParams); + if ((Appearance.VisualParams != null) && (Appearance.VisualParams.Length > 0)) + args["visual_params"] = OSD.FromBinary(Appearance.VisualParams); // We might not pass this in all cases... - if ((Wearables != null) && (Wearables.Length > 0)) + if ((Appearance.Wearables != null) && (Appearance.Wearables.Length > 0)) { - OSDArray wears = new OSDArray(Wearables.Length); - foreach (UUID uuid in Wearables) - wears.Add(OSD.FromUUID(uuid)); + OSDArray wears = new OSDArray(Appearance.Wearables.Length * 2); + foreach (AvatarWearable awear in Appearance.Wearables) + { + wears.Add(OSD.FromUUID(awear.ItemID)); + wears.Add(OSD.FromUUID(awear.AssetID)); + } args["wearables"] = wears; } - - if ((Attachments != null) && (Attachments.Length > 0)) + List attachments = Appearance.GetAttachments(); + if ((attachments != null) && (attachments.Length > 0)) { - OSDArray attachs = new OSDArray(Attachments.Length); - foreach (AvatarAttachment att in Attachments) + OSDArray attachs = new OSDArray(attachments.Length); + foreach (AvatarAttachment att in attachments) attachs.Add(att.Pack()); args["attachments"] = attachs; } -*/ + // End of code to remove + if ((Controllers != null) && (Controllers.Length > 0)) { OSDArray controls = new OSDArray(Controllers.Length); @@ -547,41 +553,47 @@ namespace OpenSim.Framework // AgentTextures[i++] = o.AsUUID(); //} - if (args["packed_appearance"] != null) - Appearance = new AvatarAppearance(AgentID,(OSDMap)args["packed_appearance"]); - else - Appearance = new AvatarAppearance(AgentID); - -/* + + Appearance = new AvatarAppearance(AgentID); + + // The code to pack textures, visuals, wearables and attachments + // should be removed; packed appearance contains the full appearance + // This is retained for backward compatibility only if (args["texture_entry"] != null) - AgentTextures = args["texture_entry"].AsBinary(); + Appearance.SetTextureEntries(args["texture_entry"].AsBinary()); if (args["visual_params"] != null) - VisualParams = args["visual_params"].AsBinary(); + Appearance.SetVisualParams(args["visual_params"].AsBinary()); if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array) { OSDArray wears = (OSDArray)(args["wearables"]); - Wearables = new UUID[wears.Count]; - int i = 0; - foreach (OSD o in wears) - Wearables[i++] = o.AsUUID(); + for (int i = 0; i < wears.Count / 2; i++) + { + Appearance.Wearables[i].ItemID = wears[i*2].AsUUID(); + Appearance.Wearables[i].AssetID = wears[(i*2)+1].AsUUID(); + } } if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(args["attachments"]); - Attachments = new AvatarAttachment[attachs.Count]; + AvatarAttachment[] attachments = new AvatarAttachment[attachs.Count]; int i = 0; foreach (OSD o in attachs) { if (o.Type == OSDType.Map) { - Attachments[i++] = new AvatarAttachment((OSDMap)o); + attachments[i++] = new AvatarAttachment((OSDMap)o); } } + Appearance.SetAttachments(attachments); } -*/ + // end of code to remove + + if (args["packed_appearance"] != null) + Appearance = new AvatarAppearance(AgentID,(OSDMap)args["packed_appearance"]); + if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array) { OSDArray controls = (OSDArray)(args["controllers"]); -- cgit v1.1 From 6e58c3d563b50c5797d1cfffbaec3fe82f18c2ea Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Mon, 25 Oct 2010 14:11:47 -0700 Subject: Half of the compatibility is working. Login into a new region with old data works. Teleport out of a new region with old data works. Teleport into a new region with old data does not trigger the necessary rebake. --- OpenSim/Framework/AgentCircuitData.cs | 13 ++++----- OpenSim/Framework/AvatarAppearance.cs | 2 +- OpenSim/Framework/ChildAgentDataUpdate.cs | 33 ++++++++++++++-------- .../Avatar/AvatarFactory/AvatarFactoryModule.cs | 2 +- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 30a9548..098b33c 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -368,15 +368,12 @@ namespace OpenSim.Framework } } - if (args["packed_appearance"] != null) + if (args.ContainsKey("packed_appearance") && (args["packed_appearance"].Type == OSDType.Map)) { - if (args["packed_appearance"].Type == OSDType.Map) - { - Appearance.Unpack((OSDMap)args["packed_appearance"]); - m_log.WarnFormat("[AGENTCIRCUITDATA] unpacked appearance"); - } - else - m_log.WarnFormat("[AGENTCIRCUITDATA] packed_appearance is not a map:\n{0}",args["packed_appearance"].ToString()); + Appearance.Unpack((OSDMap)args["packed_appearance"]); +// DEBUG ON + m_log.WarnFormat("[AGENTCIRCUITDATA] unpacked appearance"); +// DEBUG OFF } // DEBUG ON else diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index ba0cad2..05330c7 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -389,7 +389,7 @@ namespace OpenSim.Framework changed = true; // DEBUG ON if (newface != null) - m_log.WarnFormat("[SCENEPRESENCE] index {0}, new texture id {1}",i,newface.TextureID); + m_log.WarnFormat("[AVATAR APPEARANCE] index {0}, new texture id {1}",i,newface.TextureID); // DEBUG OFF } diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index d7a7d1e..215682f 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -390,8 +390,11 @@ namespace OpenSim.Framework // The code to pack textures, visuals, wearables and attachments // should be removed; packed appearance contains the full appearance // This is retained for backward compatibility only - if ((Appearance.Texture != null) && (Appearance.Texture.Length > 0)) - args["texture_entry"] = OSD.FromBinary(Appearance.Texture); + if (Appearance.Texture != null) + { + byte[] rawtextures = Appearance.Texture.GetBytes(); + args["texture_entry"] = OSD.FromBinary(rawtextures); + } if ((Appearance.VisualParams != null) && (Appearance.VisualParams.Length > 0)) args["visual_params"] = OSD.FromBinary(Appearance.VisualParams); @@ -408,10 +411,10 @@ namespace OpenSim.Framework args["wearables"] = wears; } - List attachments = Appearance.GetAttachments(); - if ((attachments != null) && (attachments.Length > 0)) + List attachments = Appearance.GetAttachments(); + if ((attachments != null) && (attachments.Count > 0)) { - OSDArray attachs = new OSDArray(attachments.Length); + OSDArray attachs = new OSDArray(attachments.Count); foreach (AvatarAttachment att in attachments) attachs.Add(att.Pack()); args["attachments"] = attachs; @@ -560,7 +563,11 @@ namespace OpenSim.Framework // should be removed; packed appearance contains the full appearance // This is retained for backward compatibility only if (args["texture_entry"] != null) - Appearance.SetTextureEntries(args["texture_entry"].AsBinary()); + { + byte[] rawtextures = args["texture_entry"].AsBinary(); + Primitive.TextureEntry textures = new Primitive.TextureEntry(rawtextures,0,rawtextures.Length); + Appearance.SetTextureEntries(textures); + } if (args["visual_params"] != null) Appearance.SetVisualParams(args["visual_params"].AsBinary()); @@ -578,21 +585,25 @@ namespace OpenSim.Framework if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) { OSDArray attachs = (OSDArray)(args["attachments"]); - AvatarAttachment[] attachments = new AvatarAttachment[attachs.Count]; - int i = 0; foreach (OSD o in attachs) { if (o.Type == OSDType.Map) { - attachments[i++] = new AvatarAttachment((OSDMap)o); + // We know all of these must end up as attachments so we + // append rather than replace to ensure multiple attachments + // per point continues to work + Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o)); } } - Appearance.SetAttachments(attachments); } // end of code to remove - if (args["packed_appearance"] != null) + if (args.ContainsKey("packed_appearance") && (args["packed_appearance"]).Type == OSDType.Map) Appearance = new AvatarAppearance(AgentID,(OSDMap)args["packed_appearance"]); +// DEBUG ON + else + System.Console.WriteLine("No packed appearance in AgentUpdate"); +// DEBUG OFF if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array) { diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 9f7ff7f..b74cdc9 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -136,7 +136,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory { if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) { - m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",face.TextureID,j,this.Name); + m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",face.TextureID,j,client.Name); client.SendRebakeAvatarTextures(face.TextureID); } } -- cgit v1.1 From 9132e251aa0d0d7395dc4868fd57799dd679cdb7 Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Tue, 26 Oct 2010 12:53:15 -0700 Subject: Made the check for texture assets asynchronous. This is one part of a bigger clean up that needs to happen around locks on appearance. --- .../Avatar/AvatarFactory/AvatarFactoryModule.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index b74cdc9..5444f80 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -84,6 +84,15 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // client.OnAvatarNowWearing -= AvatarIsWearing; } + public void CheckBakedTextureAssets(IClientAPI client, UUID textureID, int idx) + { + if (m_scene.AssetService.Get(textureID.ToString()) == null) + { + m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",textureID,idx,client.Name); + client.SendRebakeAvatarTextures(textureID); + } + } + /// /// Set appearance data (textureentry and slider settings) received from the client /// @@ -133,13 +142,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) - { - if (m_scene.AssetService.Get(face.TextureID.ToString()) == null) - { - m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",face.TextureID,j,client.Name); - client.SendRebakeAvatarTextures(face.TextureID); - } - } + Util.FireAndForget(delegate(object o) { CheckBakedTextureAssets(client,face.TextureID,j); }); } changed = sp.Appearance.SetTextureEntries(textureEntry); -- cgit v1.1 From 9cfd3e1d5ac8383087fb09cf076e9ec199808fd7 Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Tue, 26 Oct 2010 12:54:28 -0700 Subject: Small cleanup and add more debugging information --- OpenSim/Framework/AgentCircuitData.cs | 4 ++-- OpenSim/Framework/ChildAgentDataUpdate.cs | 27 +++++++++++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 098b33c..640a646 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -351,8 +351,8 @@ namespace OpenSim.Framework OSDArray wears = (OSDArray)(args["wearables"]); for (int i = 0; i < wears.Count / 2; i++) { - Appearance.Wearables[i].ItemID = wears[i*2].AsUUID(); - Appearance.Wearables[i].AssetID = wears[(i*2)+1].AsUUID(); + AvatarWearable awear = new AvatarWearable(wears[i*2].AsUUID(),wears[(i*2)+1].AsUUID()); + Appearance.SetWearable(i,awear); } } diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs index 215682f..66487f7 100644 --- a/OpenSim/Framework/ChildAgentDataUpdate.cs +++ b/OpenSim/Framework/ChildAgentDataUpdate.cs @@ -28,6 +28,8 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Reflection; +using log4net; using OpenMetaverse; using OpenMetaverse.StructuredData; @@ -310,6 +312,12 @@ namespace OpenSim.Framework // Appearance public AvatarAppearance Appearance; +// DEBUG ON + private static readonly ILog m_log = + LogManager.GetLogger( + MethodBase.GetCurrentMethod().DeclaringType); +// DEBUG OFF + /* public byte[] AgentTextures; public byte[] VisualParams; @@ -323,6 +331,10 @@ namespace OpenSim.Framework public virtual OSDMap Pack() { +// DEBUG ON + m_log.WarnFormat("[CHILDAGENTDATAUPDATE] Pack data"); +// DEBUG OFF + OSDMap args = new OSDMap(); args["message_type"] = OSD.FromString("AgentData"); @@ -444,6 +456,10 @@ namespace OpenSim.Framework /// public virtual void Unpack(OSDMap args) { +// DEBUG ON + m_log.WarnFormat("[CHILDAGENTDATAUPDATE] Unpack data"); +// DEBUG OFF + if (args.ContainsKey("region_id")) UUID.TryParse(args["region_id"].AsString(), out RegionID); @@ -556,10 +572,9 @@ namespace OpenSim.Framework // AgentTextures[i++] = o.AsUUID(); //} - Appearance = new AvatarAppearance(AgentID); - // The code to pack textures, visuals, wearables and attachments + // The code to unpack textures, visuals, wearables and attachments // should be removed; packed appearance contains the full appearance // This is retained for backward compatibility only if (args["texture_entry"] != null) @@ -577,8 +592,8 @@ namespace OpenSim.Framework OSDArray wears = (OSDArray)(args["wearables"]); for (int i = 0; i < wears.Count / 2; i++) { - Appearance.Wearables[i].ItemID = wears[i*2].AsUUID(); - Appearance.Wearables[i].AssetID = wears[(i*2)+1].AsUUID(); + AvatarWearable awear = new AvatarWearable(wears[i*2].AsUUID(),wears[(i*2)+1].AsUUID()); + Appearance.SetWearable(i,awear); } } @@ -602,8 +617,8 @@ namespace OpenSim.Framework Appearance = new AvatarAppearance(AgentID,(OSDMap)args["packed_appearance"]); // DEBUG ON else - System.Console.WriteLine("No packed appearance in AgentUpdate"); -// DEBUG OFF + m_log.WarnFormat("[CHILDAGENTDATAUPDATE] No packed appearance"); +// DEBUG OFF if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array) { -- cgit v1.1 From a331fd4e24012a246bea9ac11689afe933e7968e Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Wed, 27 Oct 2010 00:01:03 -0400 Subject: Formatting cleanup. --- .../Region/CoreModules/Avatar/Chat/ChatModule.cs | 2 +- .../Archiver/InventoryArchiveReadRequest.cs | 8 +-- .../Archiver/InventoryArchiveWriteRequest.cs | 4 +- .../Archiver/ArchiveWriteRequestPreparation.cs | 6 +-- OpenSim/Region/CoreModules/World/Sun/SunModule.cs | 57 +++++++--------------- OpenSim/Region/Framework/Scenes/EventManager.cs | 6 +-- .../Scenes/Serialization/SceneObjectSerializer.cs | 2 +- .../Avatar/XmlRpcGroups/GroupsMessagingModule.cs | 4 +- .../Scripting/Minimodule/MRMModule.cs | 11 ++--- 9 files changed, 37 insertions(+), 63 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index d76ff47..4359c01 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs @@ -238,7 +238,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat } (scene as Scene).EventManager.TriggerOnChatToClients( - fromID, receiverIDs, message, c.Type, fromPos, fromName, sourceType, ChatAudibleLevel.Fully); + fromID, receiverIDs, message, c.Type, fromPos, fromName, sourceType, ChatAudibleLevel.Fully); } static private Vector3 CenterOfRegion = new Vector3(128, 128, 30); diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 5500557..046b05f 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs @@ -143,7 +143,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver if (filePath == ArchiveConstants.CONTROL_FILE_PATH) { LoadControlFile(filePath, data); - } + } else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH)) { if (LoadAsset(filePath, data)) @@ -479,11 +479,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver /// /// protected void LoadControlFile(string path, byte[] data) - { + { XDocument doc = XDocument.Parse(Encoding.ASCII.GetString(data)); XElement archiveElement = doc.Element("archive"); int majorVersion = int.Parse(archiveElement.Attribute("major_version").Value); - int minorVersion = int.Parse(archiveElement.Attribute("minor_version").Value); + int minorVersion = int.Parse(archiveElement.Attribute("minor_version").Value); string version = string.Format("{0}.{1}", majorVersion, minorVersion); if (majorVersion > MAX_MAJOR_VERSION) @@ -492,7 +492,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver string.Format( "The IAR you are trying to load has major version number of {0} but this version of OpenSim can only load IARs with major version number {1} and below", majorVersion, MAX_MAJOR_VERSION)); - } + } m_log.InfoFormat("[INVENTORY ARCHIVER]: Loading IAR with version {0}", version); } diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index 249a8b4..9080e1c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs @@ -213,7 +213,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver public void Execute() { try - { + { InventoryFolderBase inventoryFolder = null; InventoryItemBase inventoryItem = null; InventoryFolderBase rootFolder = m_scene.InventoryService.GetRootFolder(m_userInfo.PrincipalID); @@ -277,7 +277,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver // Write out control file. This has to be done first so that subsequent loaders will see this file first // XXX: I know this is a weak way of doing it since external non-OAR aware tar executables will not do this m_archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p1ControlFile()); - m_log.InfoFormat("[INVENTORY ARCHIVER]: Added control file to archive."); + m_log.InfoFormat("[INVENTORY ARCHIVER]: Added control file to archive."); if (inventoryFolder != null) { diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs index 1687d06..3182079 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequestPreparation.cs @@ -199,13 +199,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver { majorVersion = 1; minorVersion = 0; - } + } */ m_log.InfoFormat("[ARCHIVER]: Creating version {0}.{1} OAR", majorVersion, minorVersion); // if (majorVersion == 1) // { -// m_log.WarnFormat("[ARCHIVER]: Please be aware that version 1.0 OARs are not compatible with OpenSim 0.7.0.2 and earlier. Please use the --version=0 option if you want to produce a compatible OAR"); +// m_log.WarnFormat("[ARCHIVER]: Please be aware that version 1.0 OARs are not compatible with OpenSim 0.7.0.2 and earlier. Please use the --version=0 option if you want to produce a compatible OAR"); // } @@ -232,6 +232,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver sw.Close(); return s; - } + } } } diff --git a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs index a6dc2ec..cea7c78 100644 --- a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs +++ b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs @@ -44,10 +44,8 @@ namespace OpenSim.Region.CoreModules /// it is not based on ~06:00 == Sun Rise. Rather it is based on 00:00 being sun-rise. /// - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - // // Global Constants used to determine where in the sky the sun is // @@ -108,26 +106,25 @@ namespace OpenSim.Region.CoreModules private Scene m_scene = null; // Calculated Once in the lifetime of a region - private long TicksToEpoch; // Elapsed time for 1/1/1970 - private uint SecondsPerSunCycle; // Length of a virtual day in RW seconds - private uint SecondsPerYear; // Length of a virtual year in RW seconds - private double SunSpeed; // Rate of passage in radians/second - private double SeasonSpeed; // Rate of change for seasonal effects - // private double HoursToRadians; // Rate of change for seasonal effects - private long TicksUTCOffset = 0; // seconds offset from UTC + private long TicksToEpoch; // Elapsed time for 1/1/1970 + private uint SecondsPerSunCycle; // Length of a virtual day in RW seconds + private uint SecondsPerYear; // Length of a virtual year in RW seconds + private double SunSpeed; // Rate of passage in radians/second + private double SeasonSpeed; // Rate of change for seasonal effects + // private double HoursToRadians; // Rate of change for seasonal effects + private long TicksUTCOffset = 0; // seconds offset from UTC // Calculated every update - private float OrbitalPosition; // Orbital placement at a point in time - private double HorizonShift; // Axis offset to skew day and night - private double TotalDistanceTravelled; // Distance since beginning of time (in radians) - private double SeasonalOffset; // Seaonal variation of tilt - private float Magnitude; // Normal tilt - // private double VWTimeRatio; // VW time as a ratio of real time + private float OrbitalPosition; // Orbital placement at a point in time + private double HorizonShift; // Axis offset to skew day and night + private double TotalDistanceTravelled; // Distance since beginning of time (in radians) + private double SeasonalOffset; // Seaonal variation of tilt + private float Magnitude; // Normal tilt + // private double VWTimeRatio; // VW time as a ratio of real time // Working values private Vector3 Position = Vector3.Zero; private Vector3 Velocity = Vector3.Zero; - private Quaternion Tilt = new Quaternion(1.0f, 0.0f, 0.0f, 0.0f); - + private Quaternion Tilt = new Quaternion(1.0f, 0.0f, 0.0f, 0.0f); // Used to fix the sun in the sky so it doesn't move based on current time private bool m_SunFixed = false; @@ -135,8 +132,6 @@ namespace OpenSim.Region.CoreModules private const int TICKS_PER_SECOND = 10000000; - - // Current time in elapsed seconds since Jan 1st 1970 private ulong CurrentTime { @@ -149,8 +144,6 @@ namespace OpenSim.Region.CoreModules // Time in seconds since UTC to use to calculate sun position. ulong PosTime = 0; - - /// /// Calculate the sun's orbital position and its velocity. /// @@ -202,7 +195,6 @@ namespace OpenSim.Region.CoreModules PosTime += (ulong)(((CurDayPercentage - 0.5) / .5) * NightSeconds); } } - } TotalDistanceTravelled = SunSpeed * PosTime; // distance measured in radians @@ -251,7 +243,6 @@ namespace OpenSim.Region.CoreModules Velocity.X = 0; Velocity.Y = 0; Velocity.Z = 0; - } else { @@ -271,9 +262,7 @@ namespace OpenSim.Region.CoreModules private float GetCurrentTimeAsLindenSunHour() { if (m_SunFixed) - { return m_SunFixedHour + 6; - } return GetCurrentSunHour() + 6.0f; } @@ -297,8 +286,6 @@ namespace OpenSim.Region.CoreModules m_scene.AddCommand(this, String.Format("sun {0}", kvp.Key), String.Format("{0} - {1}", kvp.Key, kvp.Value), "", HandleSunConsoleCommand); } - - TimeZone local = TimeZone.CurrentTimeZone; TicksUTCOffset = local.GetUtcOffset(local.ToLocalTime(DateTime.Now)).Ticks; m_log.Debug("[SUN]: localtime offset is " + TicksUTCOffset); @@ -325,13 +312,11 @@ namespace OpenSim.Region.CoreModules // must hard code to ~.5 to match sun position in LL based viewers m_HorizonShift = config.Configs["Sun"].GetDouble("day_night_offset", d_day_night); - // Scales the sun hours 0...12 vs 12...24, essentially makes daylight hours longer/shorter vs nighttime hours m_DayTimeSunHourScale = config.Configs["Sun"].GetDouble("day_time_sun_hour_scale", d_DayTimeSunHourScale); // Update frequency in frames m_UpdateInterval = config.Configs["Sun"].GetInt("update_interval", d_frame_mod); - } catch (Exception e) { @@ -391,10 +376,8 @@ namespace OpenSim.Region.CoreModules } scene.RegisterModuleInterface(this); - } - public void PostInitialise() { } @@ -402,7 +385,7 @@ namespace OpenSim.Region.CoreModules public void Close() { ready = false; - + // Remove our hooks m_scene.EventManager.OnFrame -= SunUpdate; m_scene.EventManager.OnAvatarEnteringNewParcel -= AvatarEnteringParcel; @@ -419,6 +402,7 @@ namespace OpenSim.Region.CoreModules { get { return false; } } + #endregion #region EventManager Events @@ -446,9 +430,7 @@ namespace OpenSim.Region.CoreModules public void SunUpdate() { if (((m_frame++ % m_UpdateInterval) != 0) || !ready || m_SunFixed || !receivedEstateToolsSunUpdate) - { return; - } GenSunPos(); // Generate shared values once @@ -467,7 +449,7 @@ namespace OpenSim.Region.CoreModules } /// - /// + /// /// /// /// Is the sun's position fixed? @@ -484,7 +466,6 @@ namespace OpenSim.Region.CoreModules while (FixedSunHour < 0) FixedSunHour += 24; - m_SunFixedHour = FixedSunHour; m_SunFixed = FixedSun; @@ -499,14 +480,12 @@ namespace OpenSim.Region.CoreModules // When sun settings are updated, we should update all clients with new settings. SunUpdateToAllClients(); - m_log.DebugFormat("[SUN]: PosTime : {0}", PosTime.ToString()); } } #endregion - private void SunUpdateToAllClients() { m_scene.ForEachScenePresence(delegate(ScenePresence sp) @@ -553,7 +532,6 @@ namespace OpenSim.Region.CoreModules { float ticksleftover = CurrentTime % SecondsPerSunCycle; - return (24.0f * (ticksleftover / SecondsPerSunCycle)); } @@ -666,7 +644,6 @@ namespace OpenSim.Region.CoreModules // When sun settings are updated, we should update all clients with new settings. SunUpdateToAllClients(); - } return Output; diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 4feb3fc..c321a15 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -296,7 +296,7 @@ namespace OpenSim.Region.Framework.Scenes /// ChatToClientsEvent is triggered via ChatModule (or /// substitutes thereof) when a chat message is actually sent to clients. Clients will only be sent a /// received chat message if they satisfy various conditions (within audible range, etc.) - /// + /// public delegate void ChatToClientsEvent( UUID senderID, HashSet receiverIDs, string message, ChatTypeEnum type, Vector3 fromPos, string fromName, @@ -1636,8 +1636,8 @@ namespace OpenSim.Region.Framework.Scenes e.Message, e.StackTrace); } } - } - } + } + } public void TriggerOnChatBroadcast(Object sender, OSChatMessage chat) { diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 95908fc..e661ca9 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs @@ -804,7 +804,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization private static void ProcessShpTextureEntry(PrimitiveBaseShape shp, XmlTextReader reader) { byte[] teData = Convert.FromBase64String(reader.ReadElementString("TextureEntry")); - shp.Textures = new Primitive.TextureEntry(teData, 0, teData.Length); + shp.Textures = new Primitive.TextureEntry(teData, 0, teData.Length); } private static void ProcessShpExtraParams(PrimitiveBaseShape shp, XmlTextReader reader) diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs index 25dba7f..3d34441 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs @@ -220,7 +220,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups groupID, groupMembers.Count); foreach (GroupMembersData member in groupMembers) - { + { if (m_groupData.hasAgentDroppedGroupChatSession(member.AgentID, groupID)) { // Don't deliver messages to people who have dropped this session @@ -266,7 +266,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups void OnClientLogin(IClientAPI client) { - if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: OnInstantMessage registered for {0}", client.Name); + if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: OnInstantMessage registered for {0}", client.Name); } private void OnNewClient(IClientAPI client) diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs index 2ddc31b..f47e71c 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs @@ -50,7 +50,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private Scene m_scene; - + private readonly Dictionary m_scripts = new Dictionary(); private readonly Dictionary m_extensions = new Dictionary(); @@ -77,7 +77,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule { m_log.Info("[MRM] Enabling MRM Module"); m_scene = scene; - + // when hidden, we don't listen for client initiated script events // only making the MRM engine available for region modules if (!source.Configs["MRM"].GetBoolean("Hidden", false)) @@ -85,7 +85,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule scene.EventManager.OnRezScript += EventManager_OnRezScript; scene.EventManager.OnStopScript += EventManager_OnStopScript; } - + scene.EventManager.OnFrame += EventManager_OnFrame; scene.RegisterModuleInterface(this); @@ -304,7 +304,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule public void PostInitialise() { - } public void Close() @@ -350,7 +349,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule if (!Directory.Exists(tmp)) Directory.CreateDirectory(tmp); - m_log.Info("MRM 2"); try @@ -396,8 +394,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule parameters.IncludeDebugInformation = true; - string rootPath = - Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory); + string rootPath = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory); List libraries = new List(); string[] lines = Script.Split(new string[] {"\n"}, StringSplitOptions.RemoveEmptyEntries); -- cgit v1.1 From 5968d343bb21af4c73f1d925837560f953e5ef61 Mon Sep 17 00:00:00 2001 From: dahlia Date: Tue, 26 Oct 2010 21:19:33 -0700 Subject: Overload Scene.NewUserConnection() to facilitate NPCs and other region specific applications --- OpenSim/Region/Framework/Scenes/Scene.cs | 36 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 3dd0f3a..f0ae45e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3278,7 +3278,6 @@ namespace OpenSim.Region.Framework.Scenes m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", m_regInfo.RegionName); } - /// /// Do the work necessary to initiate a new user connection for a particular scene. /// At the moment, this consists of setting up the caps infrastructure @@ -3291,6 +3290,23 @@ namespace OpenSim.Region.Framework.Scenes /// also return a reason. public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason) { + return NewUserConnection(agent, teleportFlags, out reason, true); + } + + /// + /// Do the work necessary to initiate a new user connection for a particular scene. + /// At the moment, this consists of setting up the caps infrastructure + /// The return bool should allow for connections to be refused, but as not all calling paths + /// take proper notice of it let, we allowed banned users in still. + /// + /// CircuitData of the agent who is connecting + /// Outputs the reason for the false response on this string + /// True for normal presence. False for NPC + /// or other applications where a full grid/Hypergrid presence may not be required. + /// True if the region accepts this agent. False if it does not. False will + /// also return a reason. + public bool NewUserConnection(AgentCircuitData agent, uint teleportFlags, out string reason, bool requirePresenceLookup) + { bool vialogin = ((teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0 || (teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0); reason = String.Empty; @@ -3339,16 +3355,18 @@ namespace OpenSim.Region.Framework.Scenes if (sp == null) // We don't have an [child] agent here already { - - try + if (requirePresenceLookup) { - if (!VerifyUserPresence(agent, out reason)) + try + { + if (!VerifyUserPresence(agent, out reason)) + return false; + } + catch (Exception e) + { + m_log.ErrorFormat("[CONNECTION BEGIN]: Exception verifying presence " + e.ToString()); return false; - } - catch (Exception e) - { - m_log.ErrorFormat("[CONNECTION BEGIN]: Exception verifying presence " + e.ToString()); - return false; + } } try -- cgit v1.1 From 1fcac7203d0e92f735d10c42681768521d712ea5 Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 27 Oct 2010 20:47:27 +0100 Subject: Prevent nullrefs in scene object deletion. Mantis #5156 --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index f81c551..24d7334 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -406,11 +406,14 @@ namespace OpenSim.Region.Framework.Scenes public bool DeleteSceneObject(UUID uuid, bool resultOfObjectLinked) { EntityBase entity; - if (!Entities.TryGetValue(uuid, out entity) && entity is SceneObjectGroup) + if (!Entities.TryGetValue(uuid, out entity) || (!(entity is SceneObjectGroup))) return false; SceneObjectGroup grp = (SceneObjectGroup)entity; + if (entity == null) + return false; + if (!resultOfObjectLinked) { m_numPrim -= grp.PrimCount; -- cgit v1.1 From 727838f914d8e8aaf77df79356ef9d234ffc1b23 Mon Sep 17 00:00:00 2001 From: Jeff Ames Date: Thu, 28 Oct 2010 00:37:32 -0400 Subject: Formatting cleanup. --- OpenSim/Region/OptionalModules/Scripting/Minimodule/ExtensionHandler.cs | 2 +- OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ExtensionHandler.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ExtensionHandler.cs index d8f7a84..3f1bd54 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ExtensionHandler.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ExtensionHandler.cs @@ -32,7 +32,7 @@ using OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces; namespace OpenSim.Region.OptionalModules.Scripting.Minimodule { - class ExtensionHandler : IExtension + class ExtensionHandler : IExtension { private readonly Dictionary m_instances; diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs index f47e71c..df60709 100644 --- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs +++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs @@ -291,7 +291,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule public void InitializeMRM(MRMBase mmb, uint localID, UUID itemID) { - m_log.Info("[MRM] Created MRM Instance"); IWorld world; -- cgit v1.1 From 0f28fa400d1f853cc3c3ebd2707b08ed06d2f127 Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Thu, 28 Oct 2010 09:00:39 -0700 Subject: Added background thread to handle delayed send and save of appearance to accommodate batching of the many updates that happen on login and teleport. Fixed handling of the serial property in appearance. --- OpenSim/Framework/AvatarAppearance.cs | 11 +- .../Avatar/AvatarFactory/AvatarFactoryModule.cs | 219 +++++++++++++++------ 2 files changed, 171 insertions(+), 59 deletions(-) diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 05330c7..e66a1e7 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs @@ -233,7 +233,7 @@ namespace OpenSim.Framework // DEBUG ON m_log.WarnFormat("[AVATAR APPEARANCE] create empty appearance for {0}",owner); // DEBUG OFF - m_serial = 0; + m_serial = 1; m_owner = owner; SetDefaultWearables(); @@ -289,7 +289,7 @@ namespace OpenSim.Framework // DEBUG OFF if (appearance == null) { - m_serial = 0; + m_serial = 1; m_owner = UUID.Zero; SetDefaultWearables(); @@ -467,6 +467,9 @@ namespace OpenSim.Framework public override String ToString() { String s = ""; + + s += String.Format("Serial: {0}\n",m_serial); + for (uint i = 0; i < AvatarAppearance.TEXTURE_COUNT; i++) if (m_texture.FaceTextures[i] != null) s += String.Format("Texture: {0} --> {1}\n",i,m_texture.FaceTextures[i].TextureID); @@ -625,8 +628,8 @@ namespace OpenSim.Framework /// public void Unpack(OSDMap data) { - if ((data != null) && (data["appearance_serial"] != null)) - m_serial = data["appearance_serial"].AsInteger(); + if ((data != null) && (data["serial"] != null)) + m_serial = data["serial"].AsInteger(); if ((data != null) && (data["height"] != null)) m_avatarHeight = (float)data["height"].AsReal(); if ((data != null) && (data["hipoffset"] != null)) diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 5444f80..903e94b 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -32,6 +32,10 @@ using Nini.Config; using OpenMetaverse; using OpenSim.Framework; +using System.Threading; +using System.Timers; +using System.Collections.Generic; + using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Services.Interfaces; @@ -44,7 +48,15 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; private Scene m_scene = null; - private bool m_startAnimationSet = false; + private static readonly int m_savetime = 5; // seconds to wait before saving changed appearance + private static readonly int m_sendtime = 2; // seconds to wait before sending changed appearance + + private static readonly int m_checkTime = 500; // milliseconds to wait between checks for appearance updates + private System.Timers.Timer m_updateTimer = new System.Timers.Timer(); + private Dictionary m_savequeue = new Dictionary(); + private Dictionary m_sendqueue = new Dictionary(); + + #region RegionModule Members public void Initialise(Scene scene, IConfigSource source) { @@ -56,6 +68,10 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory public void PostInitialise() { + m_updateTimer.Enabled = false; + m_updateTimer.AutoReset = true; + m_updateTimer.Interval = m_checkTime; // 500 milliseconds wait to start async ops + m_updateTimer.Elapsed += new ElapsedEventHandler(HandleAppearanceUpdateTimer); } public void Close() @@ -84,15 +100,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory // client.OnAvatarNowWearing -= AvatarIsWearing; } - public void CheckBakedTextureAssets(IClientAPI client, UUID textureID, int idx) - { - if (m_scene.AssetService.Get(textureID.ToString()) == null) - { - m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",textureID,idx,client.Name); - client.SendRebakeAvatarTextures(textureID); - } - } - + #endregion + /// /// Set appearance data (textureentry and slider settings) received from the client /// @@ -100,6 +109,10 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory /// public void SetAppearance(IClientAPI client, Primitive.TextureEntry textureEntry, byte[] visualParams) { +// DEBUG ON + m_log.WarnFormat("[AVFACTORY] SetAppearance for {0}",client.AgentId); +// DEBUG OFF + ScenePresence sp = m_scene.GetScenePresence(client.AgentId); if (sp == null) { @@ -107,79 +120,175 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory return; } -// DEBUG ON - m_log.WarnFormat("[AVFACTORY] SetAppearance for {0}",client.AgentId); -// DEBUG OFF - -/* - if (m_physicsActor != null) - { - if (!IsChildAgent) - { - // This may seem like it's redundant, remove the avatar from the physics scene - // just to add it back again, but it saves us from having to update - // 3 variables 10 times a second. - bool flyingTemp = m_physicsActor.Flying; - RemoveFromPhysicalScene(); - //m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); - - //PhysicsActor = null; - - AddToPhysicalScene(flyingTemp); - } - } -*/ - #region Bake Cache Check - bool changed = false; // Process the texture entry if (textureEntry != null) { + changed = sp.Appearance.SetTextureEntries(textureEntry); + for (int i = 0; i < BAKE_INDICES.Length; i++) { - int j = BAKE_INDICES[i]; - Primitive.TextureEntryFace face = textureEntry.FaceTextures[j]; - + int idx = BAKE_INDICES[i]; + Primitive.TextureEntryFace face = sp.Appearance.Texture.FaceTextures[idx]; if (face != null && face.TextureID != AppearanceManager.DEFAULT_AVATAR_TEXTURE) - Util.FireAndForget(delegate(object o) { CheckBakedTextureAssets(client,face.TextureID,j); }); + Util.FireAndForget(delegate(object o) { CheckBakedTextureAssets(client,face.TextureID,idx); }); } - changed = sp.Appearance.SetTextureEntries(textureEntry); - } - #endregion Bake Cache Check - - changed = sp.Appearance.SetVisualParams(visualParams) || changed; - - // If nothing changed (this happens frequently) just return + // Process the visual params, this may change height as well + if (visualParams != null) + { + if (sp.Appearance.SetVisualParams(visualParams)) + { + changed = true; + if (sp.Appearance.AvatarHeight > 0) + sp.SetHeight(sp.Appearance.AvatarHeight); + } + } + + // If something changed in the appearance then queue an appearance save if (changed) + QueueAppearanceSave(client.AgentId); + + // And always queue up an appearance update to send out + QueueAppearanceSend(client.AgentId); + + // Send the appearance back to the avatar + AvatarAppearance avp = sp.Appearance; + sp.ControllingClient.SendAvatarDataImmediate(sp); + sp.ControllingClient.SendAppearance(avp.Owner,avp.VisualParams,avp.Texture.GetBytes()); + } + + /// + /// Checks for the existance of a baked texture asset and + /// requests the viewer rebake if the asset is not found + /// + /// + /// + /// + private void CheckBakedTextureAssets(IClientAPI client, UUID textureID, int idx) + { + if (m_scene.AssetService.Get(textureID.ToString()) == null) + { + m_log.WarnFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}", + textureID,idx,client.Name); + client.SendRebakeAvatarTextures(textureID); + } + } + + #region UpdateAppearanceTimer + + public void QueueAppearanceSend(UUID agentid) + { +// DEBUG ON + m_log.WarnFormat("[AVFACTORY] Queue appearance send for {0}",agentid); +// DEBUG OFF + + // 100 nanoseconds (ticks) we should wait + long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_sendtime * 10000000); + lock (m_sendqueue) { + m_sendqueue[agentid] = timestamp; + m_updateTimer.Start(); + } + } + + public void QueueAppearanceSave(UUID agentid) + { // DEBUG ON - m_log.Warn("[AVFACTORY] Appearance changed"); + m_log.WarnFormat("[AVFACTORY] Queue appearance save for {0}",agentid); // DEBUG OFF - sp.Appearance.SetAppearance(textureEntry, visualParams); - if (sp.Appearance.AvatarHeight > 0) - sp.SetHeight(sp.Appearance.AvatarHeight); - m_scene.AvatarService.SetAppearance(client.AgentId, sp.Appearance); + // 100 nanoseconds (ticks) we should wait + long timestamp = DateTime.Now.Ticks + Convert.ToInt64(m_savetime * 10000000); + lock (m_savequeue) + { + m_savequeue[agentid] = timestamp; + m_updateTimer.Start(); + } + } + + private void HandleAppearanceSend(UUID agentid) + { + ScenePresence sp = m_scene.GetScenePresence(agentid); + if (sp == null) + { + m_log.WarnFormat("[AVFACTORY] Agent {0} no longer in the scene",agentid); + return; } + // DEBUG ON - else - m_log.Warn("[AVFACTORY] Appearance did not change"); -// DEBUG OFF + m_log.WarnFormat("[AVFACTORY] Handle appearance send for {0}\n{1}",agentid,sp.Appearance.ToString()); +// DEBUG OFF + // Send the appearance to everyone in the scene sp.SendAppearanceToAllOtherAgents(); + + // Send the appearance back to the avatar + AvatarAppearance avp = sp.Appearance; + sp.ControllingClient.SendAvatarDataImmediate(sp); + sp.ControllingClient.SendAppearance(avp.Owner,avp.VisualParams,avp.Texture.GetBytes()); + +/* +// this needs to be fixed, the flag should be on scene presence not the region module + // Start the animations if necessary if (!m_startAnimationSet) { sp.Animator.UpdateMovementAnimations(); m_startAnimationSet = true; } +*/ + } - client.SendAvatarDataImmediate(sp); - client.SendAppearance(sp.Appearance.Owner,sp.Appearance.VisualParams,sp.Appearance.Texture.GetBytes()); + private void HandleAppearanceSave(UUID agentid) + { + ScenePresence sp = m_scene.GetScenePresence(agentid); + if (sp == null) + { + m_log.WarnFormat("[AVFACTORY] Agent {0} no longer in the scene",agentid); + return; + } + + m_scene.AvatarService.SetAppearance(agentid, sp.Appearance); } + private void HandleAppearanceUpdateTimer(object sender, EventArgs ea) + { + long now = DateTime.Now.Ticks; + + lock (m_sendqueue) + { + Dictionary sends = new Dictionary(m_sendqueue); + foreach (KeyValuePair kvp in sends) + { + if (kvp.Value < now) + { + Util.FireAndForget(delegate(object o) { HandleAppearanceSend(kvp.Key); }); + m_sendqueue.Remove(kvp.Key); + } + } + } + + lock (m_savequeue) + { + Dictionary saves = new Dictionary(m_savequeue); + foreach (KeyValuePair kvp in saves) + { + if (kvp.Value < now) + { + Util.FireAndForget(delegate(object o) { HandleAppearanceSave(kvp.Key); }); + m_savequeue.Remove(kvp.Key); + } + } + } + + if (m_savequeue.Count == 0 && m_sendqueue.Count == 0) + m_updateTimer.Stop(); + } + + #endregion + /// /// Tell the client for this scene presence what items it should be wearing now /// -- cgit v1.1 From 68666efd25f4d094949f31eae08ee17fd821b7e4 Mon Sep 17 00:00:00 2001 From: Master ScienceSim Date: Thu, 28 Oct 2010 12:00:04 -0700 Subject: Configuration of persistent baked textures and save/send delays. --- OpenSim/Framework/Capabilities/Caps.cs | 14 +++++++++++++- .../Avatar/AvatarFactory/AvatarFactoryModule.cs | 18 ++++++++++++++---- bin/OpenSimDefaults.ini | 14 ++++++++++++++ 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs index 6b64e12..872de9a 100644 --- a/OpenSim/Framework/Capabilities/Caps.cs +++ b/OpenSim/Framework/Capabilities/Caps.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using log4net; +using Nini.Config; using OpenMetaverse; using OpenSim.Framework.Servers; using OpenSim.Framework.Servers.HttpServer; @@ -112,6 +113,8 @@ namespace OpenSim.Framework.Capabilities private string m_regionName; private object m_fetchLock = new Object(); + private bool m_persistBakedTextures = false; + public bool SSLCaps { get { return m_httpListener.UseSSL; } @@ -145,6 +148,15 @@ namespace OpenSim.Framework.Capabilities m_httpListenPort = httpPort; + m_persistBakedTextures = false; + IConfigSource config = m_Scene.Config; + if (config != null) + { + IConfig sconfig = config.Configs["Startup"]; + if (sconfig != null) + m_persistBakedTextures = sconfig.GetBoolean("PersistBakedTextures",m_persistBakedTextures); + } + if (httpServer != null && httpServer.UseSSL) { m_httpListenPort = httpServer.SSLPort; @@ -983,7 +995,7 @@ namespace OpenSim.Framework.Capabilities asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_agentID.ToString()); asset.Data = data; asset.Temporary = true; - asset.Local = true; + asset.Local = ! m_persistBakedTextures; // Local assets aren't persisted, non-local are m_assetCache.Store(asset); } diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 903e94b..5f8b4f6 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs @@ -48,20 +48,30 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; private Scene m_scene = null; - private static readonly int m_savetime = 5; // seconds to wait before saving changed appearance - private static readonly int m_sendtime = 2; // seconds to wait before sending changed appearance + private int m_savetime = 5; // seconds to wait before saving changed appearance + private int m_sendtime = 2; // seconds to wait before sending changed appearance - private static readonly int m_checkTime = 500; // milliseconds to wait between checks for appearance updates + private int m_checkTime = 500; // milliseconds to wait between checks for appearance updates private System.Timers.Timer m_updateTimer = new System.Timers.Timer(); private Dictionary m_savequeue = new Dictionary(); private Dictionary m_sendqueue = new Dictionary(); #region RegionModule Members - public void Initialise(Scene scene, IConfigSource source) + public void Initialise(Scene scene, IConfigSource config) { scene.EventManager.OnNewClient += NewClient; + if (config != null) + { + IConfig sconfig = config.Configs["Startup"]; + if (sconfig != null) + { + m_savetime = Convert.ToInt32(sconfig.GetString("DelayBeforeAppearanceSave",Convert.ToString(m_savetime))); + m_sendtime = Convert.ToInt32(sconfig.GetString("DelayBeforeAppearanceSend",Convert.ToString(m_sendtime))); + } + } + if (m_scene == null) m_scene = scene; } diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 82267ed..5ced7d5 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -255,6 +255,20 @@ ; OpenJPEG if false ; UseCSJ2K = true + ; Persist avatar baked textures + ; Persisting baked textures can speed up login and region border + ; crossings especially with large numbers of users, though it + ; will store potentially large numbers of textures in your asset + ; database + PersistBakedTextures = false + + ; Control the delay before appearance is sent to other avatars and + ; saved in the avatar service. Attempts to limit the impact caused + ; by the very chatty dialog that sets appearance when an avatar + ; logs in or teleports into a region; values are in seconds + DelayBeforeAppearanceSave = 5 + DelayBeforeAppearanceSend = 2 + [SMTP] enabled=false -- cgit v1.1