Merge branch 'master' into httptests

httptests
UbitUmarov 2017-01-03 11:24:16 +00:00
commit 82a26671b8
15 changed files with 15408 additions and 14573 deletions

View File

@ -3674,12 +3674,18 @@ namespace OpenSim.Region.Framework.Scenes
// vec, Rotation, thisAddSpeedModifier, Name); // vec, Rotation, thisAddSpeedModifier, Name);
// rotate from avatar coord space to world // rotate from avatar coord space to world
// for now all controls assume this is only a rotation around Z Quaternion rot = Rotation;
// if not all checks below need to be done before this rotation if (!Flying && PresenceType != PresenceType.Npc)
Vector3 direc = vec * Rotation; {
// force rotation to be around Z only, if not flying
// needed for mouselook
rot.X = 0;
rot.Y = 0;
}
Vector3 direc = vec * rot;
direc.Normalize(); direc.Normalize();
// mouse look situation ?
if ((vec.Z == 0f) && !Flying) if ((vec.Z == 0f) && !Flying)
direc.Z = 0f; // Prevent camera WASD up. direc.Z = 0f; // Prevent camera WASD up.

View File

@ -2267,8 +2267,6 @@ namespace OpenSim.Region.PhysicsModule.ubOde
IntPtr HeightmapData = d.GeomHeightfieldDataCreate(); IntPtr HeightmapData = d.GeomHeightfieldDataCreate();
GC.Collect(1);
TerrainHeightFieldHeightsHandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned); TerrainHeightFieldHeightsHandler = GCHandle.Alloc(_heightmap, GCHandleType.Pinned);
d.GeomHeightfieldDataBuildSingle(HeightmapData, TerrainHeightFieldHeightsHandler.AddrOfPinnedObject(), 0, d.GeomHeightfieldDataBuildSingle(HeightmapData, TerrainHeightFieldHeightsHandler.AddrOfPinnedObject(), 0,

View File

@ -242,6 +242,18 @@ namespace OpenSim.Server.Base
className = parts[2]; className = parts[2];
} }
// Handle extra string arguments in a more generic way
if (dllName.Contains("@"))
{
string[] dllNameParts = dllName.Split(new char[] {'@'});
dllName = dllNameParts[dllNameParts.Length - 1];
List<Object> argList = new List<Object>(args);
for (int i = 0 ; i < dllNameParts.Length - 1 ; ++i)
argList.Add(dllNameParts[i]);
args = argList.ToArray();
}
return LoadPlugin<T>(dllName, className, args); return LoadPlugin<T>(dllName, className, args);
} }

View File

@ -63,6 +63,7 @@ namespace OpenSim.Services.Connectors
/// In this case, -1 is default timeout (100 seconds), not infinite. /// In this case, -1 is default timeout (100 seconds), not infinite.
/// </remarks> /// </remarks>
private int m_requestTimeoutSecs = -1; private int m_requestTimeoutSecs = -1;
private string m_configName = "InventoryService";
private const double CACHE_EXPIRATION_SECONDS = 20.0; private const double CACHE_EXPIRATION_SECONDS = 20.0;
private static ExpiringCache<UUID, InventoryItemBase> m_ItemCache = new ExpiringCache<UUID,InventoryItemBase>(); private static ExpiringCache<UUID, InventoryItemBase> m_ItemCache = new ExpiringCache<UUID,InventoryItemBase>();
@ -76,6 +77,13 @@ namespace OpenSim.Services.Connectors
m_ServerURI = serverURI.TrimEnd('/'); m_ServerURI = serverURI.TrimEnd('/');
} }
public XInventoryServicesConnector(IConfigSource source, string configName)
: base(source, configName)
{
m_configName = configName;
Initialise(source);
}
public XInventoryServicesConnector(IConfigSource source) public XInventoryServicesConnector(IConfigSource source)
: base(source, "InventoryService") : base(source, "InventoryService")
{ {
@ -84,10 +92,10 @@ namespace OpenSim.Services.Connectors
public virtual void Initialise(IConfigSource source) public virtual void Initialise(IConfigSource source)
{ {
IConfig config = source.Configs["InventoryService"]; IConfig config = source.Configs[m_configName];
if (config == null) if (config == null)
{ {
m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini"); m_log.ErrorFormat("[INVENTORY CONNECTOR]: {0} missing from OpenSim.ini", m_configName);
throw new Exception("Inventory connector init error"); throw new Exception("Inventory connector init error");
} }

View File

@ -668,6 +668,9 @@ namespace OpenSim.Services.FSAssetService
if (!m_DataConnector.Store(asset.Metadata, hash)) if (!m_DataConnector.Store(asset.Metadata, hash))
{ {
if (asset.Metadata.Type == -2)
return asset.ID;
return UUID.Zero.ToString(); return UUID.Zero.ToString();
} }
else else

View File

@ -0,0 +1,240 @@
/*
* 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 System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Xml;
using Nini.Config;
using log4net;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.Serialization.External;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Services.AssetService;
namespace OpenSim.Services.HypergridService
{
/// <summary>
/// Hypergrid asset service. It serves the IAssetService interface,
/// but implements it in ways that are appropriate for inter-grid
/// asset exchanges.
/// </summary>
public class HGRemoteAssetService : IAssetService
{
private static readonly ILog m_log =
LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
private string m_HomeURL;
private IUserAccountService m_UserAccountService;
private IAssetService m_assetConnector;
private UserAccountCache m_Cache;
private AssetPermissions m_AssetPerms;
public HGRemoteAssetService(IConfigSource config, string configName)
{
m_log.Debug("[HGRemoteAsset Service]: Starting");
IConfig assetConfig = config.Configs[configName];
if (assetConfig == null)
throw new Exception("No HGAssetService configuration");
Object[] args = new Object[] { config };
string assetConnectorDll = assetConfig.GetString("AssetConnector", String.Empty);
if (assetConnectorDll == String.Empty)
throw new Exception("Please specify AssetConnector in HGAssetService configuration");
m_assetConnector = ServerUtils.LoadPlugin<IAssetService>(assetConnectorDll, args);
if (m_assetConnector == null)
throw new Exception(String.Format("Unable to create AssetConnector from {0}", assetConnectorDll));
string userAccountsDll = assetConfig.GetString("UserAccountsService", string.Empty);
if (userAccountsDll == string.Empty)
throw new Exception("Please specify UserAccountsService in HGAssetService configuration");
m_UserAccountService = ServerUtils.LoadPlugin<IUserAccountService>(userAccountsDll, args);
if (m_UserAccountService == null)
throw new Exception(String.Format("Unable to create UserAccountService from {0}", userAccountsDll));
m_HomeURL = Util.GetConfigVarFromSections<string>(config, "HomeURI",
new string[] { "Startup", "Hypergrid", configName }, string.Empty);
if (m_HomeURL == string.Empty)
throw new Exception("[HGAssetService] No HomeURI specified");
m_Cache = UserAccountCache.CreateUserAccountCache(m_UserAccountService);
// Permissions
m_AssetPerms = new AssetPermissions(assetConfig);
}
#region IAssetService overrides
public AssetBase Get(string id)
{
AssetBase asset = m_assetConnector.Get(id);
if (asset == null)
return null;
if (!m_AssetPerms.AllowedExport(asset.Type))
return null;
if (asset.Metadata.Type == (sbyte)AssetType.Object)
asset.Data = AdjustIdentifiers(asset.Data);
AdjustIdentifiers(asset.Metadata);
return asset;
}
public AssetMetadata GetMetadata(string id)
{
AssetMetadata meta = m_assetConnector.GetMetadata(id);
if (meta == null)
return null;
AdjustIdentifiers(meta);
return meta;
}
public byte[] GetData(string id)
{
AssetBase asset = Get(id);
if (asset == null)
return null;
if (!m_AssetPerms.AllowedExport(asset.Type))
return null;
// Deal with bug introduced in Oct. 20 (1eb3e6cc43e2a7b4053bc1185c7c88e22356c5e8)
// Fix bad assets before sending them elsewhere
if (asset.Type == (int)AssetType.Object && asset.Data != null)
{
string xml = ExternalRepresentationUtils.SanitizeXml(Utils.BytesToString(asset.Data));
asset.Data = Utils.StringToBytes(xml);
}
return asset.Data;
}
// public delegate void AssetRetrieved(string id, Object sender, AssetBase asset);
public virtual bool Get(string id, Object sender, AssetRetrieved handler)
{
return m_assetConnector.Get(id, sender, (i, s, asset) =>
{
if (asset != null)
{
if (!m_AssetPerms.AllowedExport(asset.Type))
{
asset = null;
}
else
{
if (asset.Metadata.Type == (sbyte)AssetType.Object)
asset.Data = AdjustIdentifiers(asset.Data);
AdjustIdentifiers(asset.Metadata);
}
}
handler(i, s, asset);
});
}
public string Store(AssetBase asset)
{
if (!m_AssetPerms.AllowedImport(asset.Type))
return string.Empty;
// Deal with bug introduced in Oct. 20 (1eb3e6cc43e2a7b4053bc1185c7c88e22356c5e8)
// Fix bad assets before storing on this server
if (asset.Type == (int)AssetType.Object && asset.Data != null)
{
string xml = ExternalRepresentationUtils.SanitizeXml(Utils.BytesToString(asset.Data));
asset.Data = Utils.StringToBytes(xml);
}
return m_assetConnector.Store(asset);
}
public bool Delete(string id)
{
// NOGO
return false;
}
#endregion
protected void AdjustIdentifiers(AssetMetadata meta)
{
if (meta == null || m_Cache == null)
return;
UserAccount creator = m_Cache.GetUser(meta.CreatorID);
if (creator != null)
meta.CreatorID = meta.CreatorID + ";" + m_HomeURL + "/" + creator.FirstName + " " + creator.LastName;
}
// Only for Object
protected byte[] AdjustIdentifiers(byte[] data)
{
string xml = Utils.BytesToString(data);
// Deal with bug introduced in Oct. 20 (1eb3e6cc43e2a7b4053bc1185c7c88e22356c5e8)
// Fix bad assets before sending them elsewhere
xml = ExternalRepresentationUtils.SanitizeXml(xml);
return Utils.StringToBytes(ExternalRepresentationUtils.RewriteSOP(xml, "HGAssetService", m_HomeURL, m_Cache, UUID.Zero));
}
public AssetBase GetCached(string id)
{
return Get(id);
}
public bool[] AssetsExist(string[] ids)
{
return m_assetConnector.AssetsExist(ids);
}
public bool UpdateContent(string id, byte[] data)
{
// SO not happening!!
return false;
}
}
}

View File

@ -180,9 +180,14 @@ namespace OpenSim.Services.LLLoginService
string hgInvServicePlugin = m_LoginServerConfig.GetString("HGInventoryServicePlugin", String.Empty); string hgInvServicePlugin = m_LoginServerConfig.GetString("HGInventoryServicePlugin", String.Empty);
if (hgInvServicePlugin != string.Empty) if (hgInvServicePlugin != string.Empty)
{ {
// TODO: Remove HGInventoryServiceConstructorArg after 0.9 release
string hgInvServiceArg = m_LoginServerConfig.GetString("HGInventoryServiceConstructorArg", String.Empty); string hgInvServiceArg = m_LoginServerConfig.GetString("HGInventoryServiceConstructorArg", String.Empty);
Object[] args2 = new Object[] { config, hgInvServiceArg }; if (hgInvServiceArg != String.Empty)
m_HGInventoryService = ServerUtils.LoadPlugin<IInventoryService>(hgInvServicePlugin, args2); {
m_log.Warn("[LLOGIN SERVICE]: You are using HGInventoryServiceConstructorArg, which is deprecated. See example file for correct syntax.");
hgInvServicePlugin = hgInvServiceArg + "@" + hgInvServicePlugin;
}
m_HGInventoryService = ServerUtils.LoadPlugin<IInventoryService>(hgInvServicePlugin, args);
} }
// //

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -252,8 +252,7 @@
<summary>Link to a location in world</summary> <summary>Link to a location in world</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.Clothing"> <member name="F:OpenMetaverse.AssetType.Clothing">
<summary>Collection of textures and parameters that can be <summary>Collection of textures and parameters that can be worn by an avatar</summary>
worn by an avatar</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.Object"> <member name="F:OpenMetaverse.AssetType.Object">
<summary>Primitive that can contain textures, sounds, <summary>Primitive that can contain textures, sounds,
@ -263,10 +262,7 @@
<summary>Notecard asset</summary> <summary>Notecard asset</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.Folder"> <member name="F:OpenMetaverse.AssetType.Folder">
<summary>Holds a collection of inventory items</summary> <summary>Holds a collection of inventory items. "Category" in the Linden viewer</summary>
</member>
<member name="F:OpenMetaverse.AssetType.RootFolder">
<summary>Root inventory folder</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.LSLText"> <member name="F:OpenMetaverse.AssetType.LSLText">
<summary>Linden scripting language script</summary> <summary>Linden scripting language script</summary>
@ -278,17 +274,7 @@
<summary>Uncompressed TGA texture</summary> <summary>Uncompressed TGA texture</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.Bodypart"> <member name="F:OpenMetaverse.AssetType.Bodypart">
<summary>Collection of textures and shape parameters that can <summary>Collection of textures and shape parameters that can be worn</summary>
be worn</summary>
</member>
<member name="F:OpenMetaverse.AssetType.TrashFolder">
<summary>Trash folder</summary>
</member>
<member name="F:OpenMetaverse.AssetType.SnapshotFolder">
<summary>Snapshot folder</summary>
</member>
<member name="F:OpenMetaverse.AssetType.LostAndFoundFolder">
<summary>Lost and found folder</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.SoundWAV"> <member name="F:OpenMetaverse.AssetType.SoundWAV">
<summary>Uncompressed sound</summary> <summary>Uncompressed sound</summary>
@ -310,44 +296,109 @@
<member name="F:OpenMetaverse.AssetType.Simstate"> <member name="F:OpenMetaverse.AssetType.Simstate">
<summary>Simstate file</summary> <summary>Simstate file</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.FavoriteFolder">
<summary>Contains landmarks for favorites</summary>
</member>
<member name="F:OpenMetaverse.AssetType.Link"> <member name="F:OpenMetaverse.AssetType.Link">
<summary>Asset is a link to another inventory item</summary> <summary>Asset is a link to another inventory item</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.LinkFolder"> <member name="F:OpenMetaverse.AssetType.LinkFolder">
<summary>Asset is a link to another inventory folder</summary> <summary>Asset is a link to another inventory folder</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.EnsembleStart"> <member name="F:OpenMetaverse.AssetType.MarketplaceFolder">
<summary>Beginning of the range reserved for ensembles</summary> <summary>Marketplace Folder. Same as an Category but different display methods.</summary>
</member>
<member name="F:OpenMetaverse.AssetType.EnsembleEnd">
<summary>End of the range reserved for ensembles</summary>
</member>
<member name="F:OpenMetaverse.AssetType.CurrentOutfitFolder">
<summary>Folder containing inventory links to wearables and attachments
that are part of the current outfit</summary>
</member>
<member name="F:OpenMetaverse.AssetType.OutfitFolder">
<summary>Folder containing inventory items or links to
inventory items of wearables and attachments
together make a full outfit</summary>
</member>
<member name="F:OpenMetaverse.AssetType.MyOutfitsFolder">
<summary>Root folder for the folders of type OutfitFolder</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.Mesh"> <member name="F:OpenMetaverse.AssetType.Mesh">
<summary>Linden mesh format</summary> <summary>Linden mesh format</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.Inbox"> <member name="T:OpenMetaverse.FolderType">
<summary>
The different types of folder.
</summary>
</member>
<member name="F:OpenMetaverse.FolderType.None">
<summary>None folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Texture">
<summary>Texture folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Sound">
<summary>Sound folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.CallingCard">
<summary>Calling card folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Landmark">
<summary>Landmark folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Clothing">
<summary>Clothing folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Object">
<summary>Object folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Notecard">
<summary>Notecard folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Root">
<summary>The root folder type</summary>
</member>
<member name="F:OpenMetaverse.FolderType.LSLText">
<summary>LSLText folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.BodyPart">
<summary>Bodyparts folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Trash">
<summary>Trash folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Snapshot">
<summary>Snapshot folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.LostAndFound">
<summary>Lost And Found folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Animation">
<summary>Animation folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Gesture">
<summary>Gesture folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Favorites">
<summary>Favorites folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.EnsembleStart">
<summary>Ensemble beginning range</summary>
</member>
<member name="F:OpenMetaverse.FolderType.EnsembleEnd">
<summary>Ensemble ending range</summary>
</member>
<member name="F:OpenMetaverse.FolderType.CurrentOutfit">
<summary>Current outfit folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Outfit">
<summary>Outfit folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.MyOutfits">
<summary>My outfits folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Mesh">
<summary>Mesh folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Inbox">
<summary>Marketplace direct delivery inbox ("Received Items")</summary> <summary>Marketplace direct delivery inbox ("Received Items")</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.Outbox"> <member name="F:OpenMetaverse.FolderType.Outbox">
<summary>Marketplace direct delivery outbox</summary> <summary>Marketplace direct delivery outbox</summary>
</member> </member>
<member name="F:OpenMetaverse.AssetType.BasicRoot"> <member name="F:OpenMetaverse.FolderType.BasicRoot">
<summary></summary> <summary>Basic root folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.MarketplaceListings">
<summary>Marketplace listings folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.MarkplaceStock">
<summary>Marketplace stock folder</summary>
</member>
<member name="F:OpenMetaverse.FolderType.Suitcase">
<summary>Hypergrid Suitcase folder</summary>
</member> </member>
<member name="T:OpenMetaverse.InventoryType"> <member name="T:OpenMetaverse.InventoryType">
<summary> <summary>
@ -1071,38 +1122,6 @@
multiple writers multiple writers
</summary> </summary>
</member> </member>
<member name="F:OpenMetaverse.LocklessQueue`1.head">
<summary>Queue head</summary>
</member>
<member name="F:OpenMetaverse.LocklessQueue`1.tail">
<summary>Queue tail</summary>
</member>
<member name="F:OpenMetaverse.LocklessQueue`1.count">
<summary>Queue item count</summary>
</member>
<member name="M:OpenMetaverse.LocklessQueue`1.#ctor">
<summary>
Constructor
</summary>
</member>
<member name="M:OpenMetaverse.LocklessQueue`1.Enqueue(`0)">
<summary>
Enqueue an item
</summary>
<param name="item">Item to enqeue</param>
</member>
<member name="M:OpenMetaverse.LocklessQueue`1.TryDequeue(`0@)">
<summary>
Try to dequeue an item
</summary>
<param name="item">Dequeued item if the dequeue was successful</param>
<returns>True if an item was successfully deqeued, otherwise false</returns>
</member>
<member name="P:OpenMetaverse.LocklessQueue`1.Count">
<summary>Gets the current number of items in the queue. Since this
is a lockless collection this value should be treated as a close
estimate</summary>
</member>
<member name="T:OpenMetaverse.LocklessQueue`1.SingleLinkNode"> <member name="T:OpenMetaverse.LocklessQueue`1.SingleLinkNode">
<summary> <summary>
Provides a node container for data in a singly linked list Provides a node container for data in a singly linked list
@ -1124,6 +1143,38 @@
Constructor Constructor
</summary> </summary>
</member> </member>
<member name="F:OpenMetaverse.LocklessQueue`1.head">
<summary>Queue head</summary>
</member>
<member name="F:OpenMetaverse.LocklessQueue`1.tail">
<summary>Queue tail</summary>
</member>
<member name="F:OpenMetaverse.LocklessQueue`1.count">
<summary>Queue item count</summary>
</member>
<member name="P:OpenMetaverse.LocklessQueue`1.Count">
<summary>Gets the current number of items in the queue. Since this
is a lockless collection this value should be treated as a close
estimate</summary>
</member>
<member name="M:OpenMetaverse.LocklessQueue`1.#ctor">
<summary>
Constructor
</summary>
</member>
<member name="M:OpenMetaverse.LocklessQueue`1.Enqueue(`0)">
<summary>
Enqueue an item
</summary>
<param name="item">Item to enqeue</param>
</member>
<member name="M:OpenMetaverse.LocklessQueue`1.TryDequeue(`0@)">
<summary>
Try to dequeue an item
</summary>
<param name="item">Dequeued item if the dequeue was successful</param>
<returns>True if an item was successfully deqeued, otherwise false</returns>
</member>
<member name="M:OpenMetaverse.Matrix4.GetEulerAngles(System.Single@,System.Single@,System.Single@)"> <member name="M:OpenMetaverse.Matrix4.GetEulerAngles(System.Single@,System.Single@,System.Single@)">
<summary> <summary>
Convert this matrix to euler rotations Convert this matrix to euler rotations
@ -1334,6 +1385,37 @@
<member name="F:OpenMetaverse.TokenBucket.lastDrip"> <member name="F:OpenMetaverse.TokenBucket.lastDrip">
<summary>Time of the last drip, in system ticks</summary> <summary>Time of the last drip, in system ticks</summary>
</member> </member>
<member name="P:OpenMetaverse.TokenBucket.Parent">
<summary>
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
</summary>
</member>
<member name="P:OpenMetaverse.TokenBucket.MaxBurst">
<summary>
Maximum burst rate in bytes per second. This is the maximum number
of tokens that can accumulate in the bucket at any one time
</summary>
</member>
<member name="P:OpenMetaverse.TokenBucket.DripRate">
<summary>
The speed limit of this bucket in bytes per second. This is the
number of tokens that are added to the bucket per second
</summary>
<remarks>Tokens are added to the bucket any time
<seealso cref="M:OpenMetaverse.TokenBucket.RemoveTokens(System.Int32)"/> is called, at the granularity of
the system tick interval (typically around 15-22ms)</remarks>
</member>
<member name="P:OpenMetaverse.TokenBucket.Content">
<summary>
The number of bytes that can be sent at this moment. This is the
current number of tokens in the bucket
<remarks>If this bucket has a parent bucket that does not have
enough tokens for a request, <seealso cref="M:OpenMetaverse.TokenBucket.RemoveTokens(System.Int32)"/> will
return false regardless of the content of this bucket</remarks>
</summary>
</member>
<member name="M:OpenMetaverse.TokenBucket.#ctor(OpenMetaverse.TokenBucket,System.Int32,System.Int32)"> <member name="M:OpenMetaverse.TokenBucket.#ctor(OpenMetaverse.TokenBucket,System.Int32,System.Int32)">
<summary> <summary>
Default constructor Default constructor
@ -1371,36 +1453,36 @@
</summary> </summary>
<returns>True if tokens were added to the bucket, otherwise false</returns> <returns>True if tokens were added to the bucket, otherwise false</returns>
</member> </member>
<member name="P:OpenMetaverse.TokenBucket.Parent"> <member name="T:OpenMetaverse.Utils.Platform">
<summary> <summary>
The parent bucket of this bucket, or null if this bucket has no Operating system
parent. The parent bucket will limit the aggregate bandwidth of all
of its children buckets
</summary> </summary>
</member> </member>
<member name="P:OpenMetaverse.TokenBucket.MaxBurst"> <member name="F:OpenMetaverse.Utils.Platform.Unknown">
<summary>Unknown</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.Windows">
<summary>Microsoft Windows</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.WindowsCE">
<summary>Microsoft Windows CE</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.Linux">
<summary>Linux</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.OSX">
<summary>Apple OSX</summary>
</member>
<member name="T:OpenMetaverse.Utils.Runtime">
<summary> <summary>
Maximum burst rate in bytes per second. This is the maximum number Runtime platform
of tokens that can accumulate in the bucket at any one time
</summary> </summary>
</member> </member>
<member name="P:OpenMetaverse.TokenBucket.DripRate"> <member name="F:OpenMetaverse.Utils.Runtime.Windows">
<summary> <summary>.NET runtime</summary>
The speed limit of this bucket in bytes per second. This is the
number of tokens that are added to the bucket per second
</summary>
<remarks>Tokens are added to the bucket any time
<seealso cref="M:OpenMetaverse.TokenBucket.RemoveTokens(System.Int32)"/> is called, at the granularity of
the system tick interval (typically around 15-22ms)</remarks>
</member> </member>
<member name="P:OpenMetaverse.TokenBucket.Content"> <member name="F:OpenMetaverse.Utils.Runtime.Mono">
<summary> <summary>Mono runtime: http://www.mono-project.com/</summary>
The number of bytes that can be sent at this moment. This is the
current number of tokens in the bucket
<remarks>If this bucket has a parent bucket that does not have
enough tokens for a request, <seealso cref="M:OpenMetaverse.TokenBucket.RemoveTokens(System.Int32)"/> will
return false regardless of the content of this bucket</remarks>
</summary>
</member> </member>
<member name="F:OpenMetaverse.Utils.DEG_TO_RAD"> <member name="F:OpenMetaverse.Utils.DEG_TO_RAD">
<summary>Used for converting degrees to radians</summary> <summary>Used for converting degrees to radians</summary>
@ -1842,6 +1924,20 @@
<param name="type">A string containing the AssetType name</param> <param name="type">A string containing the AssetType name</param>
<returns>The AssetType which matches the string name, or AssetType.Unknown if no match was found</returns> <returns>The AssetType which matches the string name, or AssetType.Unknown if no match was found</returns>
</member> </member>
<member name="M:OpenMetaverse.Utils.FolderTypeToString(OpenMetaverse.FolderType)">
<summary>
Takes a FolderType and returns the string representation
</summary>
<param name="type">The source <seealso cref="T:OpenMetaverse.FolderType"/></param>
<returns>The string version of the FolderType</returns>
</member>
<member name="M:OpenMetaverse.Utils.StringToFolderType(System.String)">
<summary>
Translate a string name of an FolderType into the proper Type
</summary>
<param name="type">A string containing the FolderType name</param>
<returns>The FolderType which matches the string name, or FolderType. None if no match was found</returns>
</member>
<member name="M:OpenMetaverse.Utils.InventoryTypeToString(OpenMetaverse.InventoryType)"> <member name="M:OpenMetaverse.Utils.InventoryTypeToString(OpenMetaverse.InventoryType)">
<summary> <summary>
Convert an InventoryType to a string Convert an InventoryType to a string
@ -1972,37 +2068,6 @@
<returns>Converted IP address object, or null if the conversion <returns>Converted IP address object, or null if the conversion
failed</returns> failed</returns>
</member> </member>
<member name="T:OpenMetaverse.Utils.Platform">
<summary>
Operating system
</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.Unknown">
<summary>Unknown</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.Windows">
<summary>Microsoft Windows</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.WindowsCE">
<summary>Microsoft Windows CE</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.Linux">
<summary>Linux</summary>
</member>
<member name="F:OpenMetaverse.Utils.Platform.OSX">
<summary>Apple OSX</summary>
</member>
<member name="T:OpenMetaverse.Utils.Runtime">
<summary>
Runtime platform
</summary>
</member>
<member name="F:OpenMetaverse.Utils.Runtime.Windows">
<summary>.NET runtime</summary>
</member>
<member name="F:OpenMetaverse.Utils.Runtime.Mono">
<summary>Mono runtime: http://www.mono-project.com/</summary>
</member>
<member name="T:OpenMetaverse.UUID"> <member name="T:OpenMetaverse.UUID">
<summary> <summary>
A 128-bit Universally Unique Identifier, used throughout the Second A 128-bit Universally Unique Identifier, used throughout the Second

Binary file not shown.

View File

@ -496,8 +496,9 @@
UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService" UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
; This inventory service will be used to initialize the user's inventory ; This inventory service will be used to initialize the user's inventory
HGInventoryServicePlugin = "OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService" HGInventoryServicePlugin = "HGInventoryService@OpenSim.Services.HypergridService.dll:HGSuitcaseInventoryService"
HGInventoryServiceConstructorArg = "HGInventoryService" ; NOTE: HGInventoryServiceConstructorArg is deprecated. For now it will work, but see above
; for the correct method if passing additional arguments.
;; end hypergrid ;; end hypergrid
; Ask co-operative viewers to use a different currency name ; Ask co-operative viewers to use a different currency name

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
<linden_skeleton version="1.0" num_bones="53" num_collision_volumes="26">
<bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015">
<collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/>
<collision_volume name="BUTT" pos = "-0.06 0 -0.1" rot="0.000000 0.00000 0.000000" scale="0.1 0.1 0.1"/>
<bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073">
<collision_volume name="BELLY" pos = "0.028 0 0.04" rot="0.000000 8.00000 0.000000" scale="0.09 0.13 0.15"/>
<collision_volume name="LOWER_BACK" pos = "0.0 0.0 0.023" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/>
<collision_volume name="LEFT_HANDLE" pos = "0.0 0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/>
<collision_volume name="RIGHT_HANDLE" pos = "0.0 -0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/>
<bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877">
<collision_volume name="CHEST" pos = "0.028 0 0.07" rot="0.000000 -10.00000 0.000000" scale="0.11 0.15 0.2"/>
<collision_volume name="UPPER_BACK" pos = "0.0 0.0 0.017" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/>
<collision_volume name="LEFT_PEC" pos = "0.119 0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/>
<collision_volume name="RIGHT_PEC" pos = "0.119 -0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/>
<bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108">
<collision_volume name="NECK" pos = "0.0 0 0.02" rot="0.000000 0.000000 0.000000" scale="0.05 0.06 0.08"/>
<bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630">
<collision_volume name="HEAD" pos = "0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12"/>
<bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000">
</bone>
<bone name="mEyeRight" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" pivot="0.098466 -0.036000 0.079000">
</bone>
<bone name="mEyeLeft" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.098461 0.036000 0.079000">
</bone>
</bone>
</bone>
<bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396">
<collision_volume name="L_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/>
<bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000">
<collision_volume name="L_UPPER_ARM" pos = "0.0 0.12 0.01" rot="-5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/>
<bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000">
<collision_volume name="L_LOWER_ARM" pos = "0.0 0.1 0.0" rot="-3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/>
<bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000">
<collision_volume name="L_HAND" pos = "0.01 0.05 0.0" rot="-3.000000 0.00000 -10.000000" scale="0.05 0.08 0.03"/>
</bone>
</bone>
</bone>
</bone>
<bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396">
<collision_volume name="R_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/>
<bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000">
<collision_volume name="R_UPPER_ARM" pos = "0.0 -0.12 0.01" rot="5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/>
<bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000">
<collision_volume name="R_LOWER_ARM" pos = "0.0 -0.1 0.0" rot="3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/>
<bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000">
<collision_volume name="R_HAND" pos = "0.01 -0.05 0.0" rot="3.000000 0.00000 10.000000" scale="0.05 0.08 0.03"/>
</bone>
</bone>
</bone>
</bone>
</bone>
</bone>
<bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086">
<collision_volume name="R_UPPER_LEG" pos = "-0.02 0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/>
<bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922">
<collision_volume name="R_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/>
<bone name="mAnkleRight" pos="-0.029 0.000 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028869 0.000000 -0.468494">
<collision_volume name="R_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/>
<bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637">
<bone name="mToeRight" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105399 -0.010408 -0.000104">
</bone>
</bone>
</bone>
</bone>
</bone>
<bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998">
<collision_volume name="L_UPPER_LEG" pos = "-0.02 -0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/>
<bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053">
<collision_volume name="L_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/>
<bone name="mAnkleLeft" pos="-0.029 0.001 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028887 0.001378 -0.468449">
<collision_volume name="L_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/>
<bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620">
<bone name="mToeLeft" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105387 0.008270 0.000871">
</bone>
</bone>
</bone>
</bone>
</bone>
</bone>
</linden_skeleton>