Merge branch 'master' of ssh://MyConnection/var/git/opensim
commit
30ce56e721
|
@ -77,7 +77,6 @@ what it is today.
|
||||||
* Intimidated
|
* Intimidated
|
||||||
* Jeremy Bongio (IBM)
|
* Jeremy Bongio (IBM)
|
||||||
* jhurliman
|
* jhurliman
|
||||||
* Mike Osias (IBM)
|
|
||||||
* John R Sohn (XenReborn)
|
* John R Sohn (XenReborn)
|
||||||
* jonc
|
* jonc
|
||||||
* Junta Kohime
|
* Junta Kohime
|
||||||
|
@ -91,6 +90,7 @@ what it is today.
|
||||||
* maimedleech
|
* maimedleech
|
||||||
* Mic Bowman
|
* Mic Bowman
|
||||||
* Michelle Argus
|
* Michelle Argus
|
||||||
|
* Mike Osias (IBM)
|
||||||
* Mike Pitman (IBM)
|
* Mike Pitman (IBM)
|
||||||
* mikkopa/_someone - RealXtend
|
* mikkopa/_someone - RealXtend
|
||||||
* Mircea Kitsune
|
* Mircea Kitsune
|
||||||
|
@ -119,9 +119,11 @@ what it is today.
|
||||||
* Xantor
|
* Xantor
|
||||||
* Y. Nitta
|
* Y. Nitta
|
||||||
* YZh
|
* YZh
|
||||||
|
* Zackary Geers aka Kunnis Basiat
|
||||||
* Zha Ewry
|
* Zha Ewry
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LSL Devs
|
LSL Devs
|
||||||
|
|
||||||
* Alondria
|
* Alondria
|
||||||
|
|
|
@ -41,12 +41,18 @@ using OpenSim.Region.Framework.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Client.Linden
|
namespace OpenSim.Client.Linden
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Linden UDP Stack Region Module
|
||||||
|
/// </summary>
|
||||||
public class LLClientStackModule : INonSharedRegionModule
|
public class LLClientStackModule : INonSharedRegionModule
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
#region IRegionModule Members
|
#region IRegionModule Members
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Scene that contains the region's data
|
||||||
|
/// </summary>
|
||||||
protected Scene m_scene;
|
protected Scene m_scene;
|
||||||
protected bool m_createClientStack = false;
|
protected bool m_createClientStack = false;
|
||||||
protected IClientNetworkServer m_clientServer;
|
protected IClientNetworkServer m_clientServer;
|
||||||
|
|
|
@ -204,8 +204,16 @@ namespace OpenSim.Data.Tests
|
||||||
UUID webloginkey = UUID.Random();
|
UUID webloginkey = UUID.Random();
|
||||||
uint homeregx = (uint) random.Next();
|
uint homeregx = (uint) random.Next();
|
||||||
uint homeregy = (uint) random.Next();
|
uint homeregy = (uint) random.Next();
|
||||||
Vector3 homeloc = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
|
Vector3 homeloc
|
||||||
Vector3 homelookat = new Vector3((float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5),(float)Math.Round(random.NextDouble(),5));
|
= new Vector3(
|
||||||
|
(float)Math.Round(random.NextDouble(), 5),
|
||||||
|
(float)Math.Round(random.NextDouble(), 5),
|
||||||
|
(float)Math.Round(random.NextDouble(), 5));
|
||||||
|
Vector3 homelookat
|
||||||
|
= new Vector3(
|
||||||
|
(float)Math.Round(random.NextDouble(), 5),
|
||||||
|
(float)Math.Round(random.NextDouble(), 5),
|
||||||
|
(float)Math.Round(random.NextDouble(), 5));
|
||||||
int created = random.Next();
|
int created = random.Next();
|
||||||
int lastlogin = random.Next();
|
int lastlogin = random.Next();
|
||||||
string userinvuri = RandomName();
|
string userinvuri = RandomName();
|
||||||
|
|
|
@ -0,0 +1,298 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Reflection;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NUnit.Framework.Constraints;
|
||||||
|
using NUnit.Framework.SyntaxHelpers;
|
||||||
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
|
||||||
|
namespace OpenSim.Data.Tests
|
||||||
|
{
|
||||||
|
public static class Constraints
|
||||||
|
{
|
||||||
|
//This is here because C# has a gap in the language, you can't infer type from a constructor
|
||||||
|
public static PropertyCompareConstraint<T> PropertyCompareConstraint<T>(T expected)
|
||||||
|
{
|
||||||
|
return new PropertyCompareConstraint<T>(expected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PropertyCompareConstraint<T> : NUnit.Framework.Constraints.Constraint
|
||||||
|
{
|
||||||
|
private readonly object _expected;
|
||||||
|
//the reason everywhere uses propertyNames.Reverse().ToArray() is because the stack is backwards of the order we want to display the properties in.
|
||||||
|
private string failingPropertyName = string.Empty;
|
||||||
|
private object failingExpected;
|
||||||
|
private object failingActual;
|
||||||
|
|
||||||
|
public PropertyCompareConstraint(T expected)
|
||||||
|
{
|
||||||
|
_expected = expected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Matches(object actual)
|
||||||
|
{
|
||||||
|
return ObjectCompare(_expected, actual, new Stack<string>());
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool ObjectCompare(object expected, object actual, Stack<string> propertyNames)
|
||||||
|
{
|
||||||
|
if (actual.GetType() != expected.GetType())
|
||||||
|
{
|
||||||
|
propertyNames.Push("GetType()");
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
propertyNames.Pop();
|
||||||
|
failingActual = actual.GetType();
|
||||||
|
failingExpected = expected.GetType();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(actual.GetType() == typeof(Color))
|
||||||
|
{
|
||||||
|
Color actualColor = (Color) actual;
|
||||||
|
Color expectedColor = (Color) expected;
|
||||||
|
if (actualColor.R != expectedColor.R)
|
||||||
|
{
|
||||||
|
propertyNames.Push("R");
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
propertyNames.Pop();
|
||||||
|
failingActual = actualColor.R;
|
||||||
|
failingExpected = expectedColor.R;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (actualColor.G != expectedColor.G)
|
||||||
|
{
|
||||||
|
propertyNames.Push("G");
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
propertyNames.Pop();
|
||||||
|
failingActual = actualColor.G;
|
||||||
|
failingExpected = expectedColor.G;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (actualColor.B != expectedColor.B)
|
||||||
|
{
|
||||||
|
propertyNames.Push("B");
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
propertyNames.Pop();
|
||||||
|
failingActual = actualColor.B;
|
||||||
|
failingExpected = expectedColor.B;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (actualColor.A != expectedColor.A)
|
||||||
|
{
|
||||||
|
propertyNames.Push("A");
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
propertyNames.Pop();
|
||||||
|
failingActual = actualColor.A;
|
||||||
|
failingExpected = expectedColor.A;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip static properties. I had a nasty problem comparing colors because of all of the public static colors.
|
||||||
|
PropertyInfo[] properties = expected.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||||
|
foreach (var property in properties)
|
||||||
|
{
|
||||||
|
if (ignores.Contains(property.Name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
object actualValue = property.GetValue(actual, null);
|
||||||
|
object expectedValue = property.GetValue(expected, null);
|
||||||
|
|
||||||
|
//If they are both null, they are equal
|
||||||
|
if (actualValue == null && expectedValue == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
//If only one is null, then they aren't
|
||||||
|
if (actualValue == null || expectedValue == null)
|
||||||
|
{
|
||||||
|
propertyNames.Push(property.Name);
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
propertyNames.Pop();
|
||||||
|
failingActual = actualValue;
|
||||||
|
failingExpected = expectedValue;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
IComparable comp = actualValue as IComparable;
|
||||||
|
if (comp != null)
|
||||||
|
{
|
||||||
|
if (comp.CompareTo(expectedValue) != 0)
|
||||||
|
{
|
||||||
|
propertyNames.Push(property.Name);
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
propertyNames.Pop();
|
||||||
|
failingActual = actualValue;
|
||||||
|
failingExpected = expectedValue;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerable arr = actualValue as IEnumerable;
|
||||||
|
if (arr != null)
|
||||||
|
{
|
||||||
|
List<object> actualList = arr.Cast<object>().ToList();
|
||||||
|
List<object> expectedList = ((IEnumerable)expectedValue).Cast<object>().ToList();
|
||||||
|
if (actualList.Count != expectedList.Count)
|
||||||
|
{
|
||||||
|
propertyNames.Push(property.Name);
|
||||||
|
propertyNames.Push("Count");
|
||||||
|
failingPropertyName = string.Join(".", propertyNames.Reverse().ToArray());
|
||||||
|
failingActual = actualList.Count;
|
||||||
|
failingExpected = expectedList.Count;
|
||||||
|
propertyNames.Pop();
|
||||||
|
propertyNames.Pop();
|
||||||
|
}
|
||||||
|
//Todo: A value-wise comparison of all of the values.
|
||||||
|
//Everything seems okay...
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
propertyNames.Push(property.Name);
|
||||||
|
if (!ObjectCompare(expectedValue, actualValue, propertyNames))
|
||||||
|
return false;
|
||||||
|
propertyNames.Pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void WriteDescriptionTo(MessageWriter writer)
|
||||||
|
{
|
||||||
|
writer.WriteExpectedValue(failingExpected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void WriteActualValueTo(MessageWriter writer)
|
||||||
|
{
|
||||||
|
writer.WriteActualValue(failingActual);
|
||||||
|
writer.WriteLine();
|
||||||
|
writer.Write(" On Property: " + failingPropertyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
//These notes assume the lambda: (x=>x.Parent.Value)
|
||||||
|
//ignores should really contain like a fully dotted version of the property name, but I'm starting with small steps
|
||||||
|
readonly List<string> ignores = new List<string>();
|
||||||
|
public PropertyCompareConstraint<T> IgnoreProperty(Expression<Func<T, object>> func)
|
||||||
|
{
|
||||||
|
Expression express = func.Body;
|
||||||
|
PullApartExpression(express);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PullApartExpression(Expression express)
|
||||||
|
{
|
||||||
|
//This deals with any casts... like implicit casts to object. Not all UnaryExpression are casts, but this is a first attempt.
|
||||||
|
if (express is UnaryExpression)
|
||||||
|
PullApartExpression(((UnaryExpression)express).Operand);
|
||||||
|
if (express is MemberExpression)
|
||||||
|
{
|
||||||
|
//If the inside of the lambda is the access to x, we've hit the end of the chain.
|
||||||
|
// We should track by the fully scoped parameter name, but this is the first rev of doing this.
|
||||||
|
if (((MemberExpression)express).Expression is ParameterExpression)
|
||||||
|
{
|
||||||
|
ignores.Add(((MemberExpression)express).Member.Name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Otherwise there could be more parameters inside...
|
||||||
|
PullApartExpression(((MemberExpression)express).Expression);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
public class PropertyCompareConstraintTest
|
||||||
|
{
|
||||||
|
public class HasInt
|
||||||
|
{
|
||||||
|
public int TheValue { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void IntShouldMatch()
|
||||||
|
{
|
||||||
|
HasInt actual = new HasInt { TheValue = 5 };
|
||||||
|
HasInt expected = new HasInt { TheValue = 5 };
|
||||||
|
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||||
|
|
||||||
|
Assert.That(constraint.Matches(actual), Is.True);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void IntShouldNotMatch()
|
||||||
|
{
|
||||||
|
HasInt actual = new HasInt { TheValue = 5 };
|
||||||
|
HasInt expected = new HasInt { TheValue = 4 };
|
||||||
|
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||||
|
|
||||||
|
Assert.That(constraint.Matches(actual), Is.False);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void IntShouldIgnore()
|
||||||
|
{
|
||||||
|
HasInt actual = new HasInt { TheValue = 5 };
|
||||||
|
HasInt expected = new HasInt { TheValue = 4 };
|
||||||
|
var constraint = Constraints.PropertyCompareConstraint(expected).IgnoreProperty(x=>x.TheValue);
|
||||||
|
|
||||||
|
Assert.That(constraint.Matches(actual), Is.True);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void AssetShouldMatch()
|
||||||
|
{
|
||||||
|
UUID uuid1 = UUID.Random();
|
||||||
|
AssetBase actual = new AssetBase(uuid1, "asset one");
|
||||||
|
AssetBase expected = new AssetBase(uuid1, "asset one");
|
||||||
|
|
||||||
|
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||||
|
|
||||||
|
Assert.That(constraint.Matches(actual), Is.True);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void AssetShouldNotMatch()
|
||||||
|
{
|
||||||
|
UUID uuid1 = UUID.Random();
|
||||||
|
AssetBase actual = new AssetBase(uuid1, "asset one");
|
||||||
|
AssetBase expected = new AssetBase(UUID.Random(), "asset one");
|
||||||
|
|
||||||
|
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||||
|
|
||||||
|
Assert.That(constraint.Matches(actual), Is.False);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void AssetShouldNotMatch2()
|
||||||
|
{
|
||||||
|
UUID uuid1 = UUID.Random();
|
||||||
|
AssetBase actual = new AssetBase(uuid1, "asset one");
|
||||||
|
AssetBase expected = new AssetBase(uuid1, "asset two");
|
||||||
|
|
||||||
|
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||||
|
|
||||||
|
Assert.That(constraint.Matches(actual), Is.False);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestColors()
|
||||||
|
{
|
||||||
|
Color actual = Color.Red;
|
||||||
|
Color expected = Color.FromArgb(actual.A, actual.R, actual.G, actual.B);
|
||||||
|
|
||||||
|
var constraint = Constraints.PropertyCompareConstraint(expected);
|
||||||
|
|
||||||
|
Assert.That(constraint.Matches(actual), Is.True);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
|
||||||
|
namespace OpenSim.Data.Tests
|
||||||
|
{
|
||||||
|
public static class ScrambleForTesting
|
||||||
|
{
|
||||||
|
private static readonly Random random = new Random();
|
||||||
|
public static void Scramble(object obj)
|
||||||
|
{
|
||||||
|
PropertyInfo[] properties = obj.GetType().GetProperties();
|
||||||
|
foreach (var property in properties)
|
||||||
|
{
|
||||||
|
//Skip indexers of classes. We will assume that everything that has an indexer
|
||||||
|
// is also IEnumberable. May not always be true, but should be true normally.
|
||||||
|
if(property.GetIndexParameters().Length > 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
RandomizeProperty(obj, property, null);
|
||||||
|
}
|
||||||
|
//Now if it implments IEnumberable, it's probably some kind of list, so we should randomize
|
||||||
|
// everything inside of it.
|
||||||
|
IEnumerable enumerable = obj as IEnumerable;
|
||||||
|
if(enumerable != null)
|
||||||
|
{
|
||||||
|
foreach (object value in enumerable)
|
||||||
|
{
|
||||||
|
Scramble(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RandomizeProperty(object obj, PropertyInfo property, object[] index)
|
||||||
|
{
|
||||||
|
Type t = property.PropertyType;
|
||||||
|
if (!property.CanWrite)
|
||||||
|
return;
|
||||||
|
object value = property.GetValue(obj, index);
|
||||||
|
if (value == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (t == typeof (string))
|
||||||
|
property.SetValue(obj, RandomName(), index);
|
||||||
|
else if (t == typeof (UUID))
|
||||||
|
property.SetValue(obj, UUID.Random(), index);
|
||||||
|
else if (t == typeof (sbyte))
|
||||||
|
property.SetValue(obj, (sbyte)random.Next(sbyte.MinValue, sbyte.MaxValue), index);
|
||||||
|
else if (t == typeof (short))
|
||||||
|
property.SetValue(obj, (short)random.Next(short.MinValue, short.MaxValue), index);
|
||||||
|
else if (t == typeof (int))
|
||||||
|
property.SetValue(obj, random.Next(), index);
|
||||||
|
else if (t == typeof (long))
|
||||||
|
property.SetValue(obj, random.Next() * int.MaxValue, index);
|
||||||
|
else if (t == typeof (byte))
|
||||||
|
property.SetValue(obj, (byte)random.Next(byte.MinValue, byte.MaxValue), index);
|
||||||
|
else if (t == typeof (ushort))
|
||||||
|
property.SetValue(obj, (ushort)random.Next(ushort.MinValue, ushort.MaxValue), index);
|
||||||
|
else if (t == typeof (uint))
|
||||||
|
property.SetValue(obj, Convert.ToUInt32(random.Next()), index);
|
||||||
|
else if (t == typeof (ulong))
|
||||||
|
property.SetValue(obj, Convert.ToUInt64(random.Next()) * Convert.ToUInt64(UInt32.MaxValue), index);
|
||||||
|
else if (t == typeof (bool))
|
||||||
|
property.SetValue(obj, true, index);
|
||||||
|
else if (t == typeof (byte[]))
|
||||||
|
{
|
||||||
|
byte[] bytes = new byte[30];
|
||||||
|
random.NextBytes(bytes);
|
||||||
|
property.SetValue(obj, bytes, index);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Scramble(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string RandomName()
|
||||||
|
{
|
||||||
|
StringBuilder name = new StringBuilder();
|
||||||
|
int size = random.Next(5, 12);
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
char ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
|
||||||
|
name.Append(ch);
|
||||||
|
}
|
||||||
|
return name.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestFixture]
|
||||||
|
public class ScrableForTestingTest
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void TestScramble()
|
||||||
|
{
|
||||||
|
AssetBase actual = new AssetBase(UUID.Random(), "asset one");
|
||||||
|
ScrambleForTesting.Scramble(actual);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -46,6 +46,11 @@ namespace OpenSim.Framework
|
||||||
private Dictionary<string, Resource> Resources = new Dictionary<string, Resource>();
|
private Dictionary<string, Resource> Resources = new Dictionary<string, Resource>();
|
||||||
private Dictionary<string, Role> Roles = new Dictionary<string, Role>();
|
private Dictionary<string, Role> Roles = new Dictionary<string, Role>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a new role
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="role"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public ACL AddRole(Role role)
|
public ACL AddRole(Role role)
|
||||||
{
|
{
|
||||||
if (Roles.ContainsKey(role.Name))
|
if (Roles.ContainsKey(role.Name))
|
||||||
|
@ -56,6 +61,11 @@ namespace OpenSim.Framework
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a new resource
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="resource"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public ACL AddResource(Resource resource)
|
public ACL AddResource(Resource resource)
|
||||||
{
|
{
|
||||||
Resources.Add(resource.Name, resource);
|
Resources.Add(resource.Name, resource);
|
||||||
|
@ -63,6 +73,12 @@ namespace OpenSim.Framework
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Permision for user/roll on a resource
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="role"></param>
|
||||||
|
/// <param name="resource"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public Permission HasPermission(string role, string resource)
|
public Permission HasPermission(string role, string resource)
|
||||||
{
|
{
|
||||||
if (!Roles.ContainsKey(role))
|
if (!Roles.ContainsKey(role))
|
||||||
|
@ -234,6 +250,9 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
#region Tests
|
#region Tests
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ACL Test class
|
||||||
|
/// </summary>
|
||||||
internal class ACLTester
|
internal class ACLTester
|
||||||
{
|
{
|
||||||
public ACLTester()
|
public ACLTester()
|
||||||
|
|
|
@ -32,26 +32,83 @@ using OpenMetaverse.StructuredData;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Circuit data for an agent. Connection information shared between
|
||||||
|
/// regions that accept UDP connections from a client
|
||||||
|
/// </summary>
|
||||||
public class AgentCircuitData
|
public class AgentCircuitData
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Avatar Unique Agent Identifier
|
||||||
|
/// </summary>
|
||||||
public UUID AgentID;
|
public UUID AgentID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Avatar's Appearance
|
||||||
|
/// </summary>
|
||||||
public AvatarAppearance Appearance;
|
public AvatarAppearance Appearance;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Agent's root inventory folder
|
||||||
|
/// </summary>
|
||||||
public UUID BaseFolder;
|
public UUID BaseFolder;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Base Caps path for user
|
||||||
|
/// </summary>
|
||||||
public string CapsPath = String.Empty;
|
public string CapsPath = String.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Seed caps for neighbor regions that the user can see into
|
||||||
|
/// </summary>
|
||||||
public Dictionary<ulong, string> ChildrenCapSeeds;
|
public Dictionary<ulong, string> ChildrenCapSeeds;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Root agent, or Child agent
|
||||||
|
/// </summary>
|
||||||
public bool child;
|
public bool child;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number given to the client when they log-in that they provide
|
||||||
|
/// as credentials to the UDP server
|
||||||
|
/// </summary>
|
||||||
public uint circuitcode;
|
public uint circuitcode;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Agent's account first name
|
||||||
|
/// </summary>
|
||||||
public string firstname;
|
public string firstname;
|
||||||
public UUID InventoryFolder;
|
public UUID InventoryFolder;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Agent's account last name
|
||||||
|
/// </summary>
|
||||||
public string lastname;
|
public string lastname;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Random Unique GUID for this session. Client gets this at login and it's
|
||||||
|
/// only supposed to be disclosed over secure channels
|
||||||
|
/// </summary>
|
||||||
public UUID SecureSessionID;
|
public UUID SecureSessionID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Non secure Session ID
|
||||||
|
/// </summary>
|
||||||
public UUID SessionID;
|
public UUID SessionID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Position the Agent's Avatar starts in the region
|
||||||
|
/// </summary>
|
||||||
public Vector3 startpos;
|
public Vector3 startpos;
|
||||||
|
|
||||||
public AgentCircuitData()
|
public AgentCircuitData()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create AgentCircuitData from a Serializable AgentCircuitData
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cAgent"></param>
|
||||||
public AgentCircuitData(sAgentCircuitData cAgent)
|
public AgentCircuitData(sAgentCircuitData cAgent)
|
||||||
{
|
{
|
||||||
AgentID = new UUID(cAgent.AgentID);
|
AgentID = new UUID(cAgent.AgentID);
|
||||||
|
@ -68,6 +125,10 @@ namespace OpenSim.Framework
|
||||||
ChildrenCapSeeds = cAgent.ChildrenCapSeeds;
|
ChildrenCapSeeds = cAgent.ChildrenCapSeeds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pack AgentCircuitData into an OSDMap for transmission over LLSD XML or LLSD json
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>map of the agent circuit data</returns>
|
||||||
public OSDMap PackAgentCircuitData()
|
public OSDMap PackAgentCircuitData()
|
||||||
{
|
{
|
||||||
OSDMap args = new OSDMap();
|
OSDMap args = new OSDMap();
|
||||||
|
@ -98,6 +159,10 @@ namespace OpenSim.Framework
|
||||||
return args;
|
return args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unpack agent circuit data map into an AgentCiruitData object
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args"></param>
|
||||||
public void UnpackAgentCircuitData(OSDMap args)
|
public void UnpackAgentCircuitData(OSDMap args)
|
||||||
{
|
{
|
||||||
if (args["agent_id"] != null)
|
if (args["agent_id"] != null)
|
||||||
|
@ -150,6 +215,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Serializable Agent Circuit Data
|
||||||
|
/// </summary>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class sAgentCircuitData
|
public class sAgentCircuitData
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,18 +30,52 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Client provided parameters for avatar movement
|
||||||
|
/// </summary>
|
||||||
public class AgentUpdateArgs : EventArgs
|
public class AgentUpdateArgs : EventArgs
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Agent's unique ID
|
||||||
|
/// </summary>
|
||||||
public UUID AgentID;
|
public UUID AgentID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rotation of the avatar's body
|
||||||
|
/// </summary>
|
||||||
public Quaternion BodyRotation;
|
public Quaternion BodyRotation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AT portion of the camera matrix
|
||||||
|
/// </summary>
|
||||||
public Vector3 CameraAtAxis;
|
public Vector3 CameraAtAxis;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Position of the camera in the Scene
|
||||||
|
/// </summary>
|
||||||
public Vector3 CameraCenter;
|
public Vector3 CameraCenter;
|
||||||
public Vector3 CameraLeftAxis;
|
public Vector3 CameraLeftAxis;
|
||||||
public Vector3 CameraUpAxis;
|
public Vector3 CameraUpAxis;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Bitflag field for agent movement. Fly, forward, backward, turn left, turn right, go up, go down, Straffe, etc.
|
||||||
|
/// </summary>
|
||||||
public uint ControlFlags;
|
public uint ControlFlags;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Agent's client Draw distance setting
|
||||||
|
/// </summary>
|
||||||
public float Far;
|
public float Far;
|
||||||
public byte Flags;
|
public byte Flags;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rotation of the avatar's head
|
||||||
|
/// </summary>
|
||||||
public Quaternion HeadRotation;
|
public Quaternion HeadRotation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Session Id
|
||||||
|
/// </summary>
|
||||||
public UUID SessionID;
|
public UUID SessionID;
|
||||||
public byte State;
|
public byte State;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,10 +31,17 @@ using OpenMetaverse.StructuredData;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Information about an Animation
|
||||||
|
/// </summary>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class Animation
|
public class Animation
|
||||||
{
|
{
|
||||||
private UUID animID;
|
private UUID animID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID of Animation
|
||||||
|
/// </summary>
|
||||||
public UUID AnimID
|
public UUID AnimID
|
||||||
{
|
{
|
||||||
get { return animID; }
|
get { return animID; }
|
||||||
|
@ -49,6 +56,10 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
|
|
||||||
private UUID objectID;
|
private UUID objectID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unique ID of object that is being animated
|
||||||
|
/// </summary>
|
||||||
public UUID ObjectID
|
public UUID ObjectID
|
||||||
{
|
{
|
||||||
get { return objectID; }
|
get { return objectID; }
|
||||||
|
@ -59,6 +70,12 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates an Animation based on the data
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="animID">UUID ID of animation</param>
|
||||||
|
/// <param name="sequenceNum"></param>
|
||||||
|
/// <param name="objectID">ID of object to be animated</param>
|
||||||
public Animation(UUID animID, int sequenceNum, UUID objectID)
|
public Animation(UUID animID, int sequenceNum, UUID objectID)
|
||||||
{
|
{
|
||||||
this.animID = animID;
|
this.animID = animID;
|
||||||
|
@ -66,11 +83,20 @@ namespace OpenSim.Framework
|
||||||
this.objectID = objectID;
|
this.objectID = objectID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Animation from OSDMap from LLSD XML or LLSD json
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args"></param>
|
||||||
public Animation(OSDMap args)
|
public Animation(OSDMap args)
|
||||||
{
|
{
|
||||||
UnpackUpdateMessage(args);
|
UnpackUpdateMessage(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Pack this object up as an OSDMap for transferring via LLSD XML or LLSD json
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
public OSDMap PackUpdateMessage()
|
public OSDMap PackUpdateMessage()
|
||||||
{
|
{
|
||||||
OSDMap anim = new OSDMap();
|
OSDMap anim = new OSDMap();
|
||||||
|
@ -80,6 +106,10 @@ namespace OpenSim.Framework
|
||||||
return anim;
|
return anim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fill object with data from OSDMap
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args"></param>
|
||||||
public void UnpackUpdateMessage(OSDMap args)
|
public void UnpackUpdateMessage(OSDMap args)
|
||||||
{
|
{
|
||||||
if (args["animation"] != null)
|
if (args["animation"] != null)
|
||||||
|
|
|
@ -31,10 +31,20 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Asset class. All Assets are reference by this class or a class derived from this class
|
||||||
|
/// </summary>
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class AssetBase
|
public class AssetBase
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Data of the Asset
|
||||||
|
/// </summary>
|
||||||
private byte[] m_data;
|
private byte[] m_data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Meta Data of the Asset
|
||||||
|
/// </summary>
|
||||||
private AssetMetadata m_metadata;
|
private AssetMetadata m_metadata;
|
||||||
|
|
||||||
public AssetBase()
|
public AssetBase()
|
||||||
|
@ -71,6 +81,9 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if this asset is a binary or text asset
|
||||||
|
/// </summary>
|
||||||
public bool IsBinaryAsset
|
public bool IsBinaryAsset
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -102,12 +115,17 @@ namespace OpenSim.Framework
|
||||||
set { m_data = value; }
|
set { m_data = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Asset UUID
|
||||||
|
/// </summary>
|
||||||
public UUID FullID
|
public UUID FullID
|
||||||
{
|
{
|
||||||
get { return m_metadata.FullID; }
|
get { return m_metadata.FullID; }
|
||||||
set { m_metadata.FullID = value; }
|
set { m_metadata.FullID = value; }
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Asset MetaData ID (transferring from UUID to string ID)
|
||||||
|
/// </summary>
|
||||||
public string ID
|
public string ID
|
||||||
{
|
{
|
||||||
get { return m_metadata.ID; }
|
get { return m_metadata.ID; }
|
||||||
|
@ -126,18 +144,27 @@ namespace OpenSim.Framework
|
||||||
set { m_metadata.Description = value; }
|
set { m_metadata.Description = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// (sbyte) AssetType enum
|
||||||
|
/// </summary>
|
||||||
public sbyte Type
|
public sbyte Type
|
||||||
{
|
{
|
||||||
get { return m_metadata.Type; }
|
get { return m_metadata.Type; }
|
||||||
set { m_metadata.Type = value; }
|
set { m_metadata.Type = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is this a region only asset, or does this exist on the asset server also
|
||||||
|
/// </summary>
|
||||||
public bool Local
|
public bool Local
|
||||||
{
|
{
|
||||||
get { return m_metadata.Local; }
|
get { return m_metadata.Local; }
|
||||||
set { m_metadata.Local = value; }
|
set { m_metadata.Local = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is this asset going to be saved to the asset database?
|
||||||
|
/// </summary>
|
||||||
public bool Temporary
|
public bool Temporary
|
||||||
{
|
{
|
||||||
get { return m_metadata.Temporary; }
|
get { return m_metadata.Temporary; }
|
||||||
|
|
|
@ -28,14 +28,13 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime.Serialization;
|
|
||||||
using System.Security.Permissions;
|
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using log4net;
|
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Contains the Avatar's Appearance and methods to manipulate the appearance.
|
||||||
|
/// </summary>
|
||||||
public class AvatarAppearance
|
public class AvatarAppearance
|
||||||
{
|
{
|
||||||
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
|
@ -29,10 +29,24 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Avatar returned by the Avatar Picker request
|
||||||
|
/// </summary>
|
||||||
public class AvatarPickerAvatar
|
public class AvatarPickerAvatar
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Avatar's Unique ID
|
||||||
|
/// </summary>
|
||||||
public UUID AvatarID;
|
public UUID AvatarID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Avatar's Account first name
|
||||||
|
/// </summary>
|
||||||
public string firstName;
|
public string firstName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Avatar's Account last name
|
||||||
|
/// </summary>
|
||||||
public string lastName;
|
public string lastName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,9 +30,19 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Args to return to a client that queries picker data
|
||||||
|
/// </summary>
|
||||||
public class AvatarPickerReplyAgentDataArgs : EventArgs
|
public class AvatarPickerReplyAgentDataArgs : EventArgs
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Unique Agent ID
|
||||||
|
/// </summary>
|
||||||
public UUID AgentID;
|
public UUID AgentID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID of query user submitted
|
||||||
|
/// </summary>
|
||||||
public UUID QueryID;
|
public UUID QueryID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,9 @@ namespace OpenSim.Framework
|
||||||
get { return m_cultureInfo; }
|
get { return m_cultureInfo; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set Culture to en-US to make string processing of numbers simpler.
|
||||||
|
/// </summary>
|
||||||
public static void SetCurrentCulture()
|
public static void SetCurrentCulture()
|
||||||
{
|
{
|
||||||
Thread.CurrentThread.CurrentCulture = m_cultureInfo;
|
Thread.CurrentThread.CurrentCulture = m_cultureInfo;
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* 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.Collections;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace OpenSim.Framework
|
||||||
|
{
|
||||||
|
public interface IProfileModule
|
||||||
|
{
|
||||||
|
Hashtable GetProfileData(UUID userID);
|
||||||
|
}
|
||||||
|
}
|
|
@ -68,5 +68,24 @@ namespace OpenSim.Framework
|
||||||
get { return _version; }
|
get { return _version; }
|
||||||
set { _version = value; }
|
set { _version = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public InventoryFolderBase()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public InventoryFolderBase(UUID id)
|
||||||
|
{
|
||||||
|
ID = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InventoryFolderBase(UUID id, string name, UUID owner, short type, UUID parent, ushort version)
|
||||||
|
{
|
||||||
|
ID = id;
|
||||||
|
Name = name;
|
||||||
|
Owner = owner;
|
||||||
|
Type = type;
|
||||||
|
ParentID = parent;
|
||||||
|
Version = version;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,9 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Framework
|
namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Details of a Parcel of land
|
||||||
|
/// </summary>
|
||||||
public class LandData
|
public class LandData
|
||||||
{
|
{
|
||||||
private Vector3 _AABBMax = new Vector3();
|
private Vector3 _AABBMax = new Vector3();
|
||||||
|
@ -80,6 +83,9 @@ namespace OpenSim.Framework
|
||||||
private int _dwell = 0;
|
private int _dwell = 0;
|
||||||
private int _otherCleanTime = 0;
|
private int _otherCleanTime = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Upper corner of the AABB for the parcel
|
||||||
|
/// </summary>
|
||||||
public Vector3 AABBMax {
|
public Vector3 AABBMax {
|
||||||
get {
|
get {
|
||||||
return _AABBMax;
|
return _AABBMax;
|
||||||
|
@ -88,7 +94,9 @@ namespace OpenSim.Framework
|
||||||
_AABBMax = value;
|
_AABBMax = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Lower corner of the AABB for the parcel
|
||||||
|
/// </summary>
|
||||||
public Vector3 AABBMin {
|
public Vector3 AABBMin {
|
||||||
get {
|
get {
|
||||||
return _AABBMin;
|
return _AABBMin;
|
||||||
|
@ -98,6 +106,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Area in meters^2 the parcel contains
|
||||||
|
/// </summary>
|
||||||
public int Area {
|
public int Area {
|
||||||
get {
|
get {
|
||||||
return _area;
|
return _area;
|
||||||
|
@ -107,6 +118,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID of auction (3rd Party Integration) when parcel is being auctioned
|
||||||
|
/// </summary>
|
||||||
public uint AuctionID {
|
public uint AuctionID {
|
||||||
get {
|
get {
|
||||||
return _auctionID;
|
return _auctionID;
|
||||||
|
@ -116,6 +130,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// UUID of authorized buyer of parcel. This is UUID.Zero if anyone can buy it.
|
||||||
|
/// </summary>
|
||||||
public UUID AuthBuyerID {
|
public UUID AuthBuyerID {
|
||||||
get {
|
get {
|
||||||
return _authBuyerID;
|
return _authBuyerID;
|
||||||
|
@ -125,6 +142,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Category of parcel. Used for classifying the parcel in classified listings
|
||||||
|
/// </summary>
|
||||||
public ParcelCategory Category {
|
public ParcelCategory Category {
|
||||||
get {
|
get {
|
||||||
return _category;
|
return _category;
|
||||||
|
@ -134,6 +154,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Date that the current owner purchased or claimed the parcel
|
||||||
|
/// </summary>
|
||||||
public int ClaimDate {
|
public int ClaimDate {
|
||||||
get {
|
get {
|
||||||
return _claimDate;
|
return _claimDate;
|
||||||
|
@ -143,6 +166,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The last price that the parcel was sold at
|
||||||
|
/// </summary>
|
||||||
public int ClaimPrice {
|
public int ClaimPrice {
|
||||||
get {
|
get {
|
||||||
return _claimPrice;
|
return _claimPrice;
|
||||||
|
@ -152,6 +178,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Global ID for the parcel. (3rd Party Integration)
|
||||||
|
/// </summary>
|
||||||
public UUID GlobalID {
|
public UUID GlobalID {
|
||||||
get {
|
get {
|
||||||
return _globalID;
|
return _globalID;
|
||||||
|
@ -161,6 +190,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unique ID of the Group that owns
|
||||||
|
/// </summary>
|
||||||
public UUID GroupID {
|
public UUID GroupID {
|
||||||
get {
|
get {
|
||||||
return _groupID;
|
return _groupID;
|
||||||
|
@ -170,6 +202,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of SceneObjectPart that are owned by a Group
|
||||||
|
/// </summary>
|
||||||
public int GroupPrims {
|
public int GroupPrims {
|
||||||
get {
|
get {
|
||||||
return _groupPrims;
|
return _groupPrims;
|
||||||
|
@ -179,6 +214,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true if the Land Parcel is owned by a group
|
||||||
|
/// </summary>
|
||||||
public bool IsGroupOwned {
|
public bool IsGroupOwned {
|
||||||
get {
|
get {
|
||||||
return _isGroupOwned;
|
return _isGroupOwned;
|
||||||
|
@ -188,6 +226,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// jp2 data for the image representative of the parcel in the parcel dialog
|
||||||
|
/// </summary>
|
||||||
public byte[] Bitmap {
|
public byte[] Bitmap {
|
||||||
get {
|
get {
|
||||||
return _bitmap;
|
return _bitmap;
|
||||||
|
@ -197,6 +238,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parcel Description
|
||||||
|
/// </summary>
|
||||||
public string Description {
|
public string Description {
|
||||||
get {
|
get {
|
||||||
return _description;
|
return _description;
|
||||||
|
@ -206,6 +250,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parcel settings. Access flags, Fly, NoPush, Voice, Scripts allowed, etc. ParcelFlags
|
||||||
|
/// </summary>
|
||||||
public uint Flags {
|
public uint Flags {
|
||||||
get {
|
get {
|
||||||
return _flags;
|
return _flags;
|
||||||
|
@ -215,6 +262,10 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines if people are able to teleport where they please on the parcel or if they
|
||||||
|
/// get constrainted to a specific point on teleport within the parcel
|
||||||
|
/// </summary>
|
||||||
public byte LandingType {
|
public byte LandingType {
|
||||||
get {
|
get {
|
||||||
return _landingType;
|
return _landingType;
|
||||||
|
@ -224,6 +275,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parcel Name
|
||||||
|
/// </summary>
|
||||||
public string Name {
|
public string Name {
|
||||||
get {
|
get {
|
||||||
return _name;
|
return _name;
|
||||||
|
@ -233,6 +287,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Status of Parcel, Leased, Abandoned, For Sale
|
||||||
|
/// </summary>
|
||||||
public ParcelStatus Status {
|
public ParcelStatus Status {
|
||||||
get {
|
get {
|
||||||
return _status;
|
return _status;
|
||||||
|
@ -242,6 +299,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Internal ID of the parcel. Sometimes the client will try to use this value
|
||||||
|
/// </summary>
|
||||||
public int LocalID {
|
public int LocalID {
|
||||||
get {
|
get {
|
||||||
return _localID;
|
return _localID;
|
||||||
|
@ -251,6 +311,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines if we scale the media based on the surface it's on
|
||||||
|
/// </summary>
|
||||||
public byte MediaAutoScale {
|
public byte MediaAutoScale {
|
||||||
get {
|
get {
|
||||||
return _mediaAutoScale;
|
return _mediaAutoScale;
|
||||||
|
@ -260,6 +323,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Texture Guid to replace with the output of the media stream
|
||||||
|
/// </summary>
|
||||||
public UUID MediaID {
|
public UUID MediaID {
|
||||||
get {
|
get {
|
||||||
return _mediaID;
|
return _mediaID;
|
||||||
|
@ -269,6 +335,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// URL to the media file to display
|
||||||
|
/// </summary>
|
||||||
public string MediaURL {
|
public string MediaURL {
|
||||||
get {
|
get {
|
||||||
return _mediaURL;
|
return _mediaURL;
|
||||||
|
@ -278,6 +347,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// URL to the shoutcast music stream to play on the parcel
|
||||||
|
/// </summary>
|
||||||
public string MusicURL {
|
public string MusicURL {
|
||||||
get {
|
get {
|
||||||
return _musicURL;
|
return _musicURL;
|
||||||
|
@ -287,6 +359,10 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of SceneObjectPart that are owned by users who do not own the parcel
|
||||||
|
/// and don't have the 'group. These are elegable for AutoReturn collection
|
||||||
|
/// </summary>
|
||||||
public int OtherPrims {
|
public int OtherPrims {
|
||||||
get {
|
get {
|
||||||
return _otherPrims;
|
return _otherPrims;
|
||||||
|
@ -296,6 +372,10 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Owner Avatar or Group of the parcel. Naturally, all land masses must be
|
||||||
|
/// owned by someone
|
||||||
|
/// </summary>
|
||||||
public UUID OwnerID {
|
public UUID OwnerID {
|
||||||
get {
|
get {
|
||||||
return _ownerID;
|
return _ownerID;
|
||||||
|
@ -305,6 +385,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of SceneObjectPart that are owned by the owner of the parcel
|
||||||
|
/// </summary>
|
||||||
public int OwnerPrims {
|
public int OwnerPrims {
|
||||||
get {
|
get {
|
||||||
return _ownerPrims;
|
return _ownerPrims;
|
||||||
|
@ -314,6 +397,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// List of access data for the parcel. User data, some bitflags, and a time
|
||||||
|
/// </summary>
|
||||||
public List<ParcelManager.ParcelAccessEntry> ParcelAccessList {
|
public List<ParcelManager.ParcelAccessEntry> ParcelAccessList {
|
||||||
get {
|
get {
|
||||||
return _parcelAccessList;
|
return _parcelAccessList;
|
||||||
|
@ -323,6 +409,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// How long in hours a Pass to the parcel is given
|
||||||
|
/// </summary>
|
||||||
public float PassHours {
|
public float PassHours {
|
||||||
get {
|
get {
|
||||||
return _passHours;
|
return _passHours;
|
||||||
|
@ -332,6 +421,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Price to purchase a Pass to a restricted parcel
|
||||||
|
/// </summary>
|
||||||
public int PassPrice {
|
public int PassPrice {
|
||||||
get {
|
get {
|
||||||
return _passPrice;
|
return _passPrice;
|
||||||
|
@ -341,6 +433,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When the parcel is being sold, this is the price to purchase the parcel
|
||||||
|
/// </summary>
|
||||||
public int SalePrice {
|
public int SalePrice {
|
||||||
get {
|
get {
|
||||||
return _salePrice;
|
return _salePrice;
|
||||||
|
@ -350,6 +445,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of SceneObjectPart that are currently selected by avatar
|
||||||
|
/// </summary>
|
||||||
public int SelectedPrims {
|
public int SelectedPrims {
|
||||||
get {
|
get {
|
||||||
return _selectedPrims;
|
return _selectedPrims;
|
||||||
|
@ -359,6 +457,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of meters^2 in the Simulator
|
||||||
|
/// </summary>
|
||||||
public int SimwideArea {
|
public int SimwideArea {
|
||||||
get {
|
get {
|
||||||
return _simwideArea;
|
return _simwideArea;
|
||||||
|
@ -368,6 +469,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of SceneObjectPart in the Simulator
|
||||||
|
/// </summary>
|
||||||
public int SimwidePrims {
|
public int SimwidePrims {
|
||||||
get {
|
get {
|
||||||
return _simwidePrims;
|
return _simwidePrims;
|
||||||
|
@ -377,6 +481,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID of the snapshot used in the client parcel dialog of the parcel
|
||||||
|
/// </summary>
|
||||||
public UUID SnapshotID {
|
public UUID SnapshotID {
|
||||||
get {
|
get {
|
||||||
return _snapshotID;
|
return _snapshotID;
|
||||||
|
@ -386,6 +493,10 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When teleporting is restricted to a certain point, this is the location
|
||||||
|
/// that the user will be redirected to
|
||||||
|
/// </summary>
|
||||||
public Vector3 UserLocation {
|
public Vector3 UserLocation {
|
||||||
get {
|
get {
|
||||||
return _userLocation;
|
return _userLocation;
|
||||||
|
@ -395,6 +506,10 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When teleporting is restricted to a certain point, this is the rotation
|
||||||
|
/// that the user will be positioned
|
||||||
|
/// </summary>
|
||||||
public Vector3 UserLookAt {
|
public Vector3 UserLookAt {
|
||||||
get {
|
get {
|
||||||
return _userLookAt;
|
return _userLookAt;
|
||||||
|
@ -404,6 +519,9 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Depreciated idea. Number of visitors ~= free money
|
||||||
|
/// </summary>
|
||||||
public int Dwell {
|
public int Dwell {
|
||||||
get {
|
get {
|
||||||
return _dwell;
|
return _dwell;
|
||||||
|
@ -413,6 +531,10 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of minutes to return SceneObjectGroup that are owned by someone who doesn't own
|
||||||
|
/// the parcel and isn't set to the same 'group' as the parcel.
|
||||||
|
/// </summary>
|
||||||
public int OtherCleanTime {
|
public int OtherCleanTime {
|
||||||
get {
|
get {
|
||||||
return _otherCleanTime;
|
return _otherCleanTime;
|
||||||
|
@ -422,11 +544,16 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public LandData()
|
public LandData()
|
||||||
{
|
{
|
||||||
_globalID = UUID.Random();
|
_globalID = UUID.Random();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Make a new copy of the land data
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
public LandData Copy()
|
public LandData Copy()
|
||||||
{
|
{
|
||||||
LandData landData = new LandData();
|
LandData landData = new LandData();
|
||||||
|
|
|
@ -443,7 +443,7 @@ namespace OpenSim.Framework.Servers
|
||||||
string inputLine;
|
string inputLine;
|
||||||
int strcmp;
|
int strcmp;
|
||||||
|
|
||||||
if (File.Exists( gitCommitFileName))
|
if (File.Exists(gitCommitFileName))
|
||||||
{
|
{
|
||||||
StreamReader CommitFile = File.OpenText(gitCommitFileName);
|
StreamReader CommitFile = File.OpenText(gitCommitFileName);
|
||||||
buildVersion = Environment.NewLine + "git# " + CommitFile.ReadLine();
|
buildVersion = Environment.NewLine + "git# " + CommitFile.ReadLine();
|
||||||
|
|
|
@ -964,8 +964,10 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
response.ContentType = "application/llsd+json";
|
// response.ContentType = "application/llsd+json";
|
||||||
return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(llsdResponse));
|
// return Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(llsdResponse));
|
||||||
|
response.ContentType = "application/llsd+xml";
|
||||||
|
return OSDParser.SerializeLLSDXmlBytes(llsdResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -0,0 +1,339 @@
|
||||||
|
/*
|
||||||
|
* 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.Collections.Generic;
|
||||||
|
using OpenMetaverse;
|
||||||
|
using OpenMetaverse.StructuredData;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
|
||||||
|
namespace OpenSim.Framework.Tests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class AgentCircuitDataTest
|
||||||
|
{
|
||||||
|
private UUID AgentId;
|
||||||
|
private AvatarAppearance AvAppearance;
|
||||||
|
private byte[] VisualParams;
|
||||||
|
private UUID BaseFolder;
|
||||||
|
private string CapsPath;
|
||||||
|
private Dictionary<ulong, string> ChildrenCapsPaths;
|
||||||
|
private uint circuitcode = 0949030;
|
||||||
|
private string firstname;
|
||||||
|
private string lastname;
|
||||||
|
private UUID SecureSessionId;
|
||||||
|
private UUID SessionId;
|
||||||
|
private Vector3 StartPos;
|
||||||
|
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void setup()
|
||||||
|
{
|
||||||
|
AgentId = UUID.Random();
|
||||||
|
BaseFolder = UUID.Random();
|
||||||
|
CapsPath = "http://www.opensimulator.org/Caps/Foo";
|
||||||
|
ChildrenCapsPaths = new Dictionary<ulong, string>();
|
||||||
|
ChildrenCapsPaths.Add(ulong.MaxValue, "http://www.opensimulator.org/Caps/Foo2");
|
||||||
|
firstname = "CoolAvatarTest";
|
||||||
|
lastname = "test";
|
||||||
|
StartPos = new Vector3(5,23,125);
|
||||||
|
|
||||||
|
SecureSessionId = UUID.Random();
|
||||||
|
SessionId = UUID.Random();
|
||||||
|
|
||||||
|
AvAppearance = new AvatarAppearance(AgentId);
|
||||||
|
AvAppearance.SetDefaultWearables();
|
||||||
|
VisualParams = new byte[218];
|
||||||
|
AvAppearance.SetDefaultParams(VisualParams);
|
||||||
|
|
||||||
|
//body
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEIGHT] = 155;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_THICKNESS] = 00;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BODY_FAT] = 0;
|
||||||
|
|
||||||
|
//Torso
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_TORSO_MUSCLES] = 48;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NECK_THICKNESS] = 43;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NECK_LENGTH] = 255;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SHOULDERS] = 94;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CHEST_MALE_NO_PECS] = 199;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_ARM_LENGTH] = 255;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HAND_SIZE] = 33;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_TORSO_LENGTH] = 240;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LOVE_HANDLES] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BELLY_SIZE] = 0;
|
||||||
|
|
||||||
|
// legs
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LEG_MUSCLES] = 82;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LEG_LENGTH] = 255;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HIP_WIDTH] = 84;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HIP_LENGTH] = 166;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BUTT_SIZE] = 64;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SADDLEBAGS] = 89;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BOWED_LEGS] = 127;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_FOOT_SIZE] = 45;
|
||||||
|
|
||||||
|
|
||||||
|
// head
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEAD_SIZE] = 255;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SQUASH_STRETCH_HEAD] = 0; // head stretch
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEAD_SHAPE] = 155;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EGG_HEAD] = 127;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_POINTY_EARS] = 255;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HEAD_LENGTH] = 45;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_FACE_SHEAR] = 127;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_FOREHEAD_ANGLE] = 104;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BIG_BROW] = 94;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_PUFFY_UPPER_CHEEKS] = 0; // upper cheeks
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_DOUBLE_CHIN] = 122; // lower cheeks
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_HIGH_CHEEK_BONES] = 130;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// eyes
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYE_SIZE] = 105;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_EYES] = 135;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYE_SPACING] = 184;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYELID_CORNER_UP] = 230;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYELID_INNER_CORNER_UP] = 120;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYE_DEPTH] = 158;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_UPPER_EYELID_FOLD] = 69;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BAGGY_EYES] = 38;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EYELASHES_LONG] = 127;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_POP_EYE] = 127;
|
||||||
|
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.EYES_EYE_COLOR] = 25;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.EYES_EYE_LIGHTNESS] = 127;
|
||||||
|
|
||||||
|
// ears
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BIG_EARS] = 255;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_EARS_OUT] = 127;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_ATTACHED_EARLOBES] = 127;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_POINTY_EARS] = 255;
|
||||||
|
|
||||||
|
// nose
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NOSE_BIG_OUT] = 79;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_NOSE] = 35;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BROAD_NOSTRILS] = 86;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LOW_SEPTUM_NOSE] = 112; // nostril division
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BULBOUS_NOSE] = 25;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_NOBLE_NOSE_BRIDGE] = 25; // upper bridge
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LOWER_BRIDGE_NOSE] = 25; // lower bridge
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_NOSE_BRIDGE] = 25;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_UPTURNED_NOSE_TIP] = 107;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_BULBOUS_NOSE_TIP] = 25;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CROOKED_NOSE] = 127;
|
||||||
|
|
||||||
|
|
||||||
|
// Mouth
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_WIDTH] = 122;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_TALL_LIPS] = 10; // lip fullness
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_THICKNESS] = 112;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_RATIO] = 137;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_MOUTH_HEIGHT] = 176;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_MOUTH_CORNER] = 140; // Sad --> happy
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_LIP_CLEFT_DEEP] = 84;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WIDE_LIP_CLEFT] = 84;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SHIFT_MOUTH] = 127;
|
||||||
|
|
||||||
|
|
||||||
|
// chin
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_WEAK_CHIN] = 119;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_SQUARE_JAW] = 5;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_DEEP_CHIN] = 132;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_JAW_ANGLE] = 153;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_JAW_JUT] = 100;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_JOWLS] = 38;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CLEFT_CHIN] = 89;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_CLEFT_CHIN_UPPER] = 89;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.SHAPE_DOUBLE_CHIN] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// hair color
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_WHITE_HAIR] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_RAINBOW_COLOR_39] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_BLONDE_HAIR] = 24;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_RED_HAIR] = 0;
|
||||||
|
|
||||||
|
// hair style
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_VOLUME] = 160;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_FRONT] = 153;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SIDES] = 153;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BACK] = 170;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BIG_FRONT] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BIG_TOP] = 117;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_BIG_BACK] = 170;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_FRONT_FRINGE] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_SIDE_FRINGE] = 142;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_BACK_FRINGE] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SIDES_FULL] = 146;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SWEEP] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SHEAR_FRONT] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SHEAR_BACK] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_TAPER_FRONT] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_TAPER_BACK] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_RUMPLED] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_PIGTAILS] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_PONYTAIL] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_SPIKED] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_TILT] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_PART_MIDDLE] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_PART_RIGHT] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_PART_LEFT] = 0;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_BANGS_PART_MIDDLE] = 155;
|
||||||
|
|
||||||
|
//Eyebrows
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_EYEBROW_SIZE] = 20;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_EYEBROW_DENSITY] = 140;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_LOWER_EYEBROWS] = 200; // eyebrow height
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_ARCED_EYEBROWS] = 124;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_POINTY_EYEBROWS] = 65;
|
||||||
|
|
||||||
|
//Facial hair
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_HAIR_THICKNESS] = 65;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_SIDEBURNS] = 235;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_MOUSTACHE] = 75;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_CHIN_CURTAINS] = 140;
|
||||||
|
VisualParams[(int)AvatarAppearance.VPElement.HAIR_SOULPATCH] = 0;
|
||||||
|
|
||||||
|
AvAppearance.VisualParams = VisualParams;
|
||||||
|
|
||||||
|
List<byte> wearbyte = new List<byte>();
|
||||||
|
for (int i = 0; i < VisualParams.Length; i++)
|
||||||
|
{
|
||||||
|
wearbyte.Add(VisualParams[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AvAppearance.SetAppearance(AvAppearance.Texture.GetBytes(), wearbyte);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Test to ensure that the serialization format is the same and the underlying types don't change without notice
|
||||||
|
/// oldSerialization is just a json serialization of the OSDMap packed for the AgentCircuitData.
|
||||||
|
/// The idea is that if the current json serializer cannot parse the old serialization, then the underlying types
|
||||||
|
/// have changed and are incompatible.
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void HistoricalAgentCircuitDataOSDConversion()
|
||||||
|
{
|
||||||
|
string oldSerialization = "{\"agent_id\":\"522675bd-8214-40c1-b3ca-9c7f7fd170be\",\"base_folder\":\"c40b5f5f-476f-496b-bd69-b5a539c434d8\",\"caps_path\":\"http://www.opensimulator.org/Caps/Foo\",\"children_seeds\":[{\"handle\":\"18446744073709551615\",\"seed\":\"http://www.opensimulator.org/Caps/Foo2\"}],\"child\":false,\"circuit_code\":\"949030\",\"first_name\":\"CoolAvatarTest\",\"last_name\":\"test\",\"inventory_folder\":\"c40b5f5f-476f-496b-bd69-b5a539c434d8\",\"secure_session_id\":\"1e608e2b-0ddb-41f6-be0f-926f61cd3e0a\",\"session_id\":\"aa06f798-9d70-4bdb-9bbf-012a02ee2baf\",\"start_pos\":\"<5, 23, 125>\"}";
|
||||||
|
AgentCircuitData Agent1Data = new AgentCircuitData();
|
||||||
|
Agent1Data.AgentID = new UUID("522675bd-8214-40c1-b3ca-9c7f7fd170be");
|
||||||
|
Agent1Data.Appearance = AvAppearance;
|
||||||
|
Agent1Data.BaseFolder = new UUID("c40b5f5f-476f-496b-bd69-b5a539c434d8");
|
||||||
|
Agent1Data.CapsPath = CapsPath;
|
||||||
|
Agent1Data.child = false;
|
||||||
|
Agent1Data.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||||
|
Agent1Data.circuitcode = circuitcode;
|
||||||
|
Agent1Data.firstname = firstname;
|
||||||
|
Agent1Data.InventoryFolder = new UUID("c40b5f5f-476f-496b-bd69-b5a539c434d8");
|
||||||
|
Agent1Data.lastname = lastname;
|
||||||
|
Agent1Data.SecureSessionID = new UUID("1e608e2b-0ddb-41f6-be0f-926f61cd3e0a");
|
||||||
|
Agent1Data.SessionID = new UUID("aa06f798-9d70-4bdb-9bbf-012a02ee2baf");
|
||||||
|
Agent1Data.startpos = StartPos;
|
||||||
|
|
||||||
|
OSDMap map2 = (OSDMap)OSDParser.DeserializeJson(oldSerialization);
|
||||||
|
|
||||||
|
|
||||||
|
AgentCircuitData Agent2Data = new AgentCircuitData();
|
||||||
|
Agent2Data.UnpackAgentCircuitData(map2);
|
||||||
|
|
||||||
|
Assert.That((Agent1Data.AgentID == Agent2Data.AgentID));
|
||||||
|
Assert.That((Agent1Data.BaseFolder == Agent2Data.BaseFolder));
|
||||||
|
|
||||||
|
Assert.That((Agent1Data.CapsPath == Agent2Data.CapsPath));
|
||||||
|
Assert.That((Agent1Data.child == Agent2Data.child));
|
||||||
|
Assert.That((Agent1Data.ChildrenCapSeeds.Count == Agent2Data.ChildrenCapSeeds.Count));
|
||||||
|
Assert.That((Agent1Data.circuitcode == Agent2Data.circuitcode));
|
||||||
|
Assert.That((Agent1Data.firstname == Agent2Data.firstname));
|
||||||
|
Assert.That((Agent1Data.InventoryFolder == Agent2Data.InventoryFolder));
|
||||||
|
Assert.That((Agent1Data.lastname == Agent2Data.lastname));
|
||||||
|
Assert.That((Agent1Data.SecureSessionID == Agent2Data.SecureSessionID));
|
||||||
|
Assert.That((Agent1Data.SessionID == Agent2Data.SessionID));
|
||||||
|
Assert.That((Agent1Data.startpos == Agent2Data.startpos));
|
||||||
|
/*
|
||||||
|
Enable this once VisualParams go in the packing method
|
||||||
|
for (int i=0;i<208;i++)
|
||||||
|
Assert.That((Agent1Data.Appearance.VisualParams[i] == Agent2Data.Appearance.VisualParams[i]));
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Test to ensure that the packing and unpacking methods work.
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void TestAgentCircuitDataOSDConversion()
|
||||||
|
{
|
||||||
|
AgentCircuitData Agent1Data = new AgentCircuitData();
|
||||||
|
Agent1Data.AgentID = AgentId;
|
||||||
|
Agent1Data.Appearance = AvAppearance;
|
||||||
|
Agent1Data.BaseFolder = BaseFolder;
|
||||||
|
Agent1Data.CapsPath = CapsPath;
|
||||||
|
Agent1Data.child = false;
|
||||||
|
Agent1Data.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||||
|
Agent1Data.circuitcode = circuitcode;
|
||||||
|
Agent1Data.firstname = firstname;
|
||||||
|
Agent1Data.InventoryFolder = BaseFolder;
|
||||||
|
Agent1Data.lastname = lastname;
|
||||||
|
Agent1Data.SecureSessionID = SecureSessionId;
|
||||||
|
Agent1Data.SessionID = SessionId;
|
||||||
|
Agent1Data.startpos = StartPos;
|
||||||
|
|
||||||
|
|
||||||
|
OSDMap map = Agent1Data.PackAgentCircuitData();
|
||||||
|
string str = OSDParser.SerializeJsonString(map);
|
||||||
|
//System.Console.WriteLine(str);
|
||||||
|
OSDMap map2 = (OSDMap)OSDParser.DeserializeJson(str);
|
||||||
|
|
||||||
|
|
||||||
|
AgentCircuitData Agent2Data = new AgentCircuitData();
|
||||||
|
Agent2Data.UnpackAgentCircuitData(map2);
|
||||||
|
|
||||||
|
Assert.That((Agent1Data.AgentID == Agent2Data.AgentID));
|
||||||
|
Assert.That((Agent1Data.BaseFolder == Agent2Data.BaseFolder));
|
||||||
|
|
||||||
|
Assert.That((Agent1Data.CapsPath == Agent2Data.CapsPath));
|
||||||
|
Assert.That((Agent1Data.child == Agent2Data.child));
|
||||||
|
Assert.That((Agent1Data.ChildrenCapSeeds.Count == Agent2Data.ChildrenCapSeeds.Count));
|
||||||
|
Assert.That((Agent1Data.circuitcode == Agent2Data.circuitcode));
|
||||||
|
Assert.That((Agent1Data.firstname == Agent2Data.firstname));
|
||||||
|
Assert.That((Agent1Data.InventoryFolder == Agent2Data.InventoryFolder));
|
||||||
|
Assert.That((Agent1Data.lastname == Agent2Data.lastname));
|
||||||
|
Assert.That((Agent1Data.SecureSessionID == Agent2Data.SecureSessionID));
|
||||||
|
Assert.That((Agent1Data.SessionID == Agent2Data.SessionID));
|
||||||
|
Assert.That((Agent1Data.startpos == Agent2Data.startpos));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Enable this once VisualParams go in the packing method
|
||||||
|
for (int i = 0; i < 208; i++)
|
||||||
|
Assert.That((Agent1Data.Appearance.VisualParams[i] == Agent2Data.Appearance.VisualParams[i]));
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,201 @@
|
||||||
|
/*
|
||||||
|
* 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.Collections.Generic;
|
||||||
|
using OpenMetaverse;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace OpenSim.Framework.Tests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class AgentCircuitManagerTests
|
||||||
|
{
|
||||||
|
private AgentCircuitData m_agentCircuitData1;
|
||||||
|
private AgentCircuitData m_agentCircuitData2;
|
||||||
|
private UUID AgentId1;
|
||||||
|
private UUID AgentId2;
|
||||||
|
private uint circuitcode1;
|
||||||
|
private uint circuitcode2;
|
||||||
|
|
||||||
|
private UUID SessionId1;
|
||||||
|
private UUID SessionId2;
|
||||||
|
private Random rnd = new Random(Environment.TickCount);
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void setup()
|
||||||
|
{
|
||||||
|
|
||||||
|
AgentId1 = UUID.Random();
|
||||||
|
AgentId2 = UUID.Random();
|
||||||
|
circuitcode1 = (uint) rnd.Next((int)uint.MinValue, int.MaxValue);
|
||||||
|
circuitcode2 = (uint) rnd.Next((int)uint.MinValue, int.MaxValue);
|
||||||
|
SessionId1 = UUID.Random();
|
||||||
|
SessionId2 = UUID.Random();
|
||||||
|
UUID BaseFolder = UUID.Random();
|
||||||
|
string CapsPath = "http://www.opensimulator.org/Caps/Foo";
|
||||||
|
Dictionary<ulong,string> ChildrenCapsPaths = new Dictionary<ulong, string>();
|
||||||
|
ChildrenCapsPaths.Add(ulong.MaxValue, "http://www.opensimulator.org/Caps/Foo2");
|
||||||
|
string firstname = "CoolAvatarTest";
|
||||||
|
string lastname = "test";
|
||||||
|
Vector3 StartPos = new Vector3(5, 23, 125);
|
||||||
|
|
||||||
|
UUID SecureSessionId = UUID.Random();
|
||||||
|
UUID SessionId = UUID.Random();
|
||||||
|
|
||||||
|
m_agentCircuitData1 = new AgentCircuitData();
|
||||||
|
m_agentCircuitData1.AgentID = AgentId1;
|
||||||
|
m_agentCircuitData1.Appearance = new AvatarAppearance(AgentId1);
|
||||||
|
m_agentCircuitData1.BaseFolder = BaseFolder;
|
||||||
|
m_agentCircuitData1.CapsPath = CapsPath;
|
||||||
|
m_agentCircuitData1.child = false;
|
||||||
|
m_agentCircuitData1.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||||
|
m_agentCircuitData1.circuitcode = circuitcode1;
|
||||||
|
m_agentCircuitData1.firstname = firstname;
|
||||||
|
m_agentCircuitData1.InventoryFolder = BaseFolder;
|
||||||
|
m_agentCircuitData1.lastname = lastname;
|
||||||
|
m_agentCircuitData1.SecureSessionID = SecureSessionId;
|
||||||
|
m_agentCircuitData1.SessionID = SessionId1;
|
||||||
|
m_agentCircuitData1.startpos = StartPos;
|
||||||
|
|
||||||
|
m_agentCircuitData2 = new AgentCircuitData();
|
||||||
|
m_agentCircuitData2.AgentID = AgentId2;
|
||||||
|
m_agentCircuitData2.Appearance = new AvatarAppearance(AgentId2);
|
||||||
|
m_agentCircuitData2.BaseFolder = BaseFolder;
|
||||||
|
m_agentCircuitData2.CapsPath = CapsPath;
|
||||||
|
m_agentCircuitData2.child = false;
|
||||||
|
m_agentCircuitData2.ChildrenCapSeeds = ChildrenCapsPaths;
|
||||||
|
m_agentCircuitData2.circuitcode = circuitcode2;
|
||||||
|
m_agentCircuitData2.firstname = firstname;
|
||||||
|
m_agentCircuitData2.InventoryFolder = BaseFolder;
|
||||||
|
m_agentCircuitData2.lastname = lastname;
|
||||||
|
m_agentCircuitData2.SecureSessionID = SecureSessionId;
|
||||||
|
m_agentCircuitData2.SessionID = SessionId2;
|
||||||
|
m_agentCircuitData2.startpos = StartPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validate that adding the circuit works appropriately
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void AddAgentCircuitTest()
|
||||||
|
{
|
||||||
|
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode1,m_agentCircuitData1);
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||||
|
AgentCircuitData agent = agentCircuitManager.GetAgentCircuitData(circuitcode1);
|
||||||
|
|
||||||
|
Assert.That((m_agentCircuitData1.AgentID == agent.AgentID));
|
||||||
|
Assert.That((m_agentCircuitData1.BaseFolder == agent.BaseFolder));
|
||||||
|
|
||||||
|
Assert.That((m_agentCircuitData1.CapsPath == agent.CapsPath));
|
||||||
|
Assert.That((m_agentCircuitData1.child == agent.child));
|
||||||
|
Assert.That((m_agentCircuitData1.ChildrenCapSeeds.Count == agent.ChildrenCapSeeds.Count));
|
||||||
|
Assert.That((m_agentCircuitData1.circuitcode == agent.circuitcode));
|
||||||
|
Assert.That((m_agentCircuitData1.firstname == agent.firstname));
|
||||||
|
Assert.That((m_agentCircuitData1.InventoryFolder == agent.InventoryFolder));
|
||||||
|
Assert.That((m_agentCircuitData1.lastname == agent.lastname));
|
||||||
|
Assert.That((m_agentCircuitData1.SecureSessionID == agent.SecureSessionID));
|
||||||
|
Assert.That((m_agentCircuitData1.SessionID == agent.SessionID));
|
||||||
|
Assert.That((m_agentCircuitData1.startpos == agent.startpos));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validate that removing the circuit code removes it appropriately
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void RemoveAgentCircuitTest()
|
||||||
|
{
|
||||||
|
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode1, m_agentCircuitData1);
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||||
|
agentCircuitManager.RemoveCircuit(circuitcode2);
|
||||||
|
|
||||||
|
AgentCircuitData agent = agentCircuitManager.GetAgentCircuitData(circuitcode2);
|
||||||
|
Assert.That(agent == null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validate that changing the circuit code works
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void ChangeAgentCircuitCodeTest()
|
||||||
|
{
|
||||||
|
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode1, m_agentCircuitData1);
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
result = agentCircuitManager.TryChangeCiruitCode(circuitcode1, 393930);
|
||||||
|
|
||||||
|
AgentCircuitData agent = agentCircuitManager.GetAgentCircuitData(393930);
|
||||||
|
AgentCircuitData agent2 = agentCircuitManager.GetAgentCircuitData(circuitcode1);
|
||||||
|
Assert.That(agent != null);
|
||||||
|
Assert.That(agent2 == null);
|
||||||
|
Assert.That(result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validates that the login authentication scheme is working
|
||||||
|
/// First one should be authorized
|
||||||
|
/// Rest should not be authorized
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void ValidateLoginTest()
|
||||||
|
{
|
||||||
|
AgentCircuitManager agentCircuitManager = new AgentCircuitManager();
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode1, m_agentCircuitData1);
|
||||||
|
agentCircuitManager.AddNewCircuit(circuitcode2, m_agentCircuitData2);
|
||||||
|
|
||||||
|
// should be authorized
|
||||||
|
AuthenticateResponse resp = agentCircuitManager.AuthenticateSession(SessionId1, AgentId1, circuitcode1);
|
||||||
|
Assert.That(resp.Authorised);
|
||||||
|
|
||||||
|
|
||||||
|
//should not be authorized
|
||||||
|
resp = agentCircuitManager.AuthenticateSession(SessionId1, UUID.Random(), circuitcode1);
|
||||||
|
Assert.That(!resp.Authorised);
|
||||||
|
|
||||||
|
resp = agentCircuitManager.AuthenticateSession(UUID.Random(), AgentId1, circuitcode1);
|
||||||
|
Assert.That(!resp.Authorised);
|
||||||
|
|
||||||
|
resp = agentCircuitManager.AuthenticateSession(SessionId1, AgentId1, circuitcode2);
|
||||||
|
Assert.That(!resp.Authorised);
|
||||||
|
|
||||||
|
resp = agentCircuitManager.AuthenticateSession(SessionId2, AgentId1, circuitcode2);
|
||||||
|
Assert.That(!resp.Authorised);
|
||||||
|
|
||||||
|
agentCircuitManager.RemoveCircuit(circuitcode2);
|
||||||
|
|
||||||
|
resp = agentCircuitManager.AuthenticateSession(SessionId2, AgentId2, circuitcode2);
|
||||||
|
Assert.That(!resp.Authorised);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,192 @@
|
||||||
|
/*
|
||||||
|
* 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 NUnit.Framework;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace OpenSim.Framework.Tests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class ThreadTrackerTests
|
||||||
|
{
|
||||||
|
private bool running = true;
|
||||||
|
private bool running2 = true;
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void DefaultThreadTrackerTest()
|
||||||
|
{
|
||||||
|
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||||
|
|
||||||
|
/*
|
||||||
|
foreach (Thread t in lThread)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine(t.Name);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
Assert.That(lThread.Count == 1);
|
||||||
|
Assert.That(lThread[0].Name == "ThreadTrackerThread");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validate that adding a thread to the thread tracker works
|
||||||
|
/// Validate that removing a thread from the thread tracker also works.
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void AddThreadToThreadTrackerTestAndRemoveTest()
|
||||||
|
{
|
||||||
|
Thread t = new Thread(run);
|
||||||
|
t.Name = "TestThread";
|
||||||
|
t.Priority = ThreadPriority.BelowNormal;
|
||||||
|
t.IsBackground = true;
|
||||||
|
t.SetApartmentState(ApartmentState.MTA);
|
||||||
|
t.Start();
|
||||||
|
ThreadTracker.Add(t);
|
||||||
|
|
||||||
|
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||||
|
|
||||||
|
Assert.That(lThread.Count == 2);
|
||||||
|
|
||||||
|
foreach (Thread tr in lThread)
|
||||||
|
{
|
||||||
|
Assert.That((tr.Name == "ThreadTrackerThread" || tr.Name == "TestThread"));
|
||||||
|
}
|
||||||
|
running = false;
|
||||||
|
ThreadTracker.Remove(t);
|
||||||
|
|
||||||
|
lThread = ThreadTracker.GetThreads();
|
||||||
|
|
||||||
|
Assert.That(lThread.Count == 1);
|
||||||
|
|
||||||
|
foreach (Thread tr in lThread)
|
||||||
|
{
|
||||||
|
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Test a dead thread removal by aborting it and setting it's last seen active date to 50 seconds
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void DeadThreadTest()
|
||||||
|
{
|
||||||
|
Thread t = new Thread(run2);
|
||||||
|
t.Name = "TestThread";
|
||||||
|
t.Priority = ThreadPriority.BelowNormal;
|
||||||
|
t.IsBackground = true;
|
||||||
|
t.SetApartmentState(ApartmentState.MTA);
|
||||||
|
t.Start();
|
||||||
|
ThreadTracker.Add(t);
|
||||||
|
t.Abort();
|
||||||
|
Thread.Sleep(5000);
|
||||||
|
ThreadTracker.m_Threads[1].LastSeenActive = DateTime.Now.Ticks - (50*10000000);
|
||||||
|
ThreadTracker.CleanUp();
|
||||||
|
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||||
|
|
||||||
|
Assert.That(lThread.Count == 1);
|
||||||
|
|
||||||
|
foreach (Thread tr in lThread)
|
||||||
|
{
|
||||||
|
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void UnstartedThreadTest()
|
||||||
|
{
|
||||||
|
Thread t = new Thread(run2);
|
||||||
|
t.Name = "TestThread";
|
||||||
|
t.Priority = ThreadPriority.BelowNormal;
|
||||||
|
t.IsBackground = true;
|
||||||
|
t.SetApartmentState(ApartmentState.MTA);
|
||||||
|
ThreadTracker.Add(t);
|
||||||
|
ThreadTracker.m_Threads[1].LastSeenActive = DateTime.Now.Ticks - (50 * 10000000);
|
||||||
|
ThreadTracker.CleanUp();
|
||||||
|
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||||
|
|
||||||
|
Assert.That(lThread.Count == 1);
|
||||||
|
|
||||||
|
foreach (Thread tr in lThread)
|
||||||
|
{
|
||||||
|
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void NullThreadTest()
|
||||||
|
{
|
||||||
|
Thread t = null;
|
||||||
|
ThreadTracker.Add(t);
|
||||||
|
|
||||||
|
List<Thread> lThread = ThreadTracker.GetThreads();
|
||||||
|
|
||||||
|
Assert.That(lThread.Count == 1);
|
||||||
|
|
||||||
|
foreach (Thread tr in lThread)
|
||||||
|
{
|
||||||
|
Assert.That((tr.Name == "ThreadTrackerThread"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Worker thread 0
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="o"></param>
|
||||||
|
public void run( object o)
|
||||||
|
{
|
||||||
|
while (running)
|
||||||
|
{
|
||||||
|
Thread.Sleep(5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Worker thread 1
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="o"></param>
|
||||||
|
public void run2(object o)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
while (running2)
|
||||||
|
{
|
||||||
|
Thread.Sleep(5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (ThreadAbortException)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -77,6 +77,8 @@ namespace OpenSim.Framework
|
||||||
public static void Add(Thread thread)
|
public static void Add(Thread thread)
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
if (thread != null)
|
||||||
|
{
|
||||||
lock (m_Threads)
|
lock (m_Threads)
|
||||||
{
|
{
|
||||||
ThreadTrackerItem tti = new ThreadTrackerItem();
|
ThreadTrackerItem tti = new ThreadTrackerItem();
|
||||||
|
@ -84,6 +86,7 @@ namespace OpenSim.Framework
|
||||||
tti.LastSeenActive = DateTime.Now.Ticks;
|
tti.LastSeenActive = DateTime.Now.Ticks;
|
||||||
m_Threads.Add(tti);
|
m_Threads.Add(tti);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,6 +110,10 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
foreach (ThreadTrackerItem tti in new ArrayList(m_Threads))
|
foreach (ThreadTrackerItem tti in new ArrayList(m_Threads))
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
if (tti.Thread.IsAlive)
|
if (tti.Thread.IsAlive)
|
||||||
{
|
{
|
||||||
// Its active
|
// Its active
|
||||||
|
@ -119,6 +126,11 @@ namespace OpenSim.Framework
|
||||||
m_Threads.Remove(tti);
|
m_Threads.Remove(tti);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (NullReferenceException)
|
||||||
|
{
|
||||||
|
m_Threads.Remove(tti);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,25 +36,47 @@ using OpenSim.Framework.Console;
|
||||||
|
|
||||||
namespace OpenSim
|
namespace OpenSim
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Starting class for the OpenSimulator Region
|
||||||
|
/// </summary>
|
||||||
public class Application
|
public class Application
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Text Console Logger
|
||||||
|
/// </summary>
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Path to the main ini Configuration file
|
||||||
|
/// </summary>
|
||||||
public static string iniFilePath = "";
|
public static string iniFilePath = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Save Crashes in the bin/crashes folder. Configurable with m_crashDir
|
||||||
|
/// </summary>
|
||||||
public static bool m_saveCrashDumps = false;
|
public static bool m_saveCrashDumps = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Directory to save crash reports to. Relative to bin/
|
||||||
|
/// </summary>
|
||||||
public static string m_crashDir = "crashes";
|
public static string m_crashDir = "crashes";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Instance of the OpenSim class. This could be OpenSim or OpenSimBackground depending on the configuration
|
||||||
|
/// </summary>
|
||||||
protected static OpenSimBase m_sim = null;
|
protected static OpenSimBase m_sim = null;
|
||||||
|
|
||||||
//could move our main function into OpenSimMain and kill this class
|
//could move our main function into OpenSimMain and kill this class
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
// First line
|
// First line, hook the appdomain to the crash reporter
|
||||||
AppDomain.CurrentDomain.UnhandledException +=
|
AppDomain.CurrentDomain.UnhandledException +=
|
||||||
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
||||||
|
|
||||||
|
// Add the arguments supplied when running the application to the configuration
|
||||||
ArgvConfigSource configSource = new ArgvConfigSource(args);
|
ArgvConfigSource configSource = new ArgvConfigSource(args);
|
||||||
|
|
||||||
|
// Configure Log4Net
|
||||||
configSource.AddSwitch("Startup", "logconfig");
|
configSource.AddSwitch("Startup", "logconfig");
|
||||||
string logConfigFile = configSource.Configs["Startup"].GetString("logconfig", String.Empty);
|
string logConfigFile = configSource.Configs["Startup"].GetString("logconfig", String.Empty);
|
||||||
if (logConfigFile != String.Empty)
|
if (logConfigFile != String.Empty)
|
||||||
|
@ -69,6 +91,8 @@ namespace OpenSim
|
||||||
m_log.Info("[OPENSIM MAIN]: configured log4net using default OpenSim.exe.config");
|
m_log.Info("[OPENSIM MAIN]: configured log4net using default OpenSim.exe.config");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if the system is compatible with OpenSimulator.
|
||||||
|
// Ensures that the minimum system requirements are met
|
||||||
m_log.Info("Performing compatibility checks... ");
|
m_log.Info("Performing compatibility checks... ");
|
||||||
string supported = String.Empty;
|
string supported = String.Empty;
|
||||||
if (Util.IsEnvironmentSupported(ref supported))
|
if (Util.IsEnvironmentSupported(ref supported))
|
||||||
|
@ -80,6 +104,7 @@ namespace OpenSim
|
||||||
m_log.Warn("Environment is unsupported (" + supported + ")\n");
|
m_log.Warn("Environment is unsupported (" + supported + ")\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Configure nIni aliases and localles
|
||||||
Culture.SetCurrentCulture();
|
Culture.SetCurrentCulture();
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,8 +124,13 @@ namespace OpenSim
|
||||||
configSource.AddConfig("StandAlone");
|
configSource.AddConfig("StandAlone");
|
||||||
configSource.AddConfig("Network");
|
configSource.AddConfig("Network");
|
||||||
|
|
||||||
|
// Check if we're running in the background or not
|
||||||
bool background = configSource.Configs["Startup"].GetBoolean("background", false);
|
bool background = configSource.Configs["Startup"].GetBoolean("background", false);
|
||||||
|
|
||||||
|
// Check if we're saving crashes
|
||||||
m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false);
|
m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false);
|
||||||
|
|
||||||
|
// load Crash directory config
|
||||||
m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir);
|
m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir);
|
||||||
|
|
||||||
if (background)
|
if (background)
|
||||||
|
@ -118,6 +148,7 @@ namespace OpenSim
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// Block thread here for input
|
||||||
MainConsole.Instance.Prompt();
|
MainConsole.Instance.Prompt();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
|
@ -37,12 +37,32 @@ using OpenSim.Framework;
|
||||||
|
|
||||||
namespace OpenSim
|
namespace OpenSim
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Loads the Configuration files into nIni
|
||||||
|
/// </summary>
|
||||||
public class ConfigurationLoader
|
public class ConfigurationLoader
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Various Config settings the region needs to start
|
||||||
|
/// Physics Engine, Mesh Engine, GridMode, PhysicsPrim allowed, Neighbor,
|
||||||
|
/// StorageDLL, Storage Connection String, Estate connection String, Client Stack
|
||||||
|
/// Standalone settings.
|
||||||
|
/// </summary>
|
||||||
protected ConfigSettings m_configSettings;
|
protected ConfigSettings m_configSettings;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A source of Configuration data
|
||||||
|
/// </summary>
|
||||||
protected OpenSimConfigSource m_config;
|
protected OpenSimConfigSource m_config;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Grid Service Information. This refers to classes and addresses of the grid service
|
||||||
|
/// </summary>
|
||||||
protected NetworkServersInfo m_networkServersInfo;
|
protected NetworkServersInfo m_networkServersInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Console logger
|
||||||
|
/// </summary>
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log =
|
||||||
LogManager.GetLogger(
|
LogManager.GetLogger(
|
||||||
MethodBase.GetCurrentMethod().DeclaringType);
|
MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
@ -51,6 +71,13 @@ namespace OpenSim
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads the region configuration
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="argvSource">Parameters passed into the process when started</param>
|
||||||
|
/// <param name="configSettings"></param>
|
||||||
|
/// <param name="networkInfo"></param>
|
||||||
|
/// <returns>A configuration that gets passed to modules</returns>
|
||||||
public OpenSimConfigSource LoadConfigSettings(
|
public OpenSimConfigSource LoadConfigSettings(
|
||||||
IConfigSource argvSource, out ConfigSettings configSettings,
|
IConfigSource argvSource, out ConfigSettings configSettings,
|
||||||
out NetworkServersInfo networkInfo)
|
out NetworkServersInfo networkInfo)
|
||||||
|
@ -169,15 +196,22 @@ namespace OpenSim
|
||||||
return m_config;
|
return m_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds the included files as ini configuration files
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sources">List of URL strings or filename strings</param>
|
||||||
private void AddIncludes(List<string> sources)
|
private void AddIncludes(List<string> sources)
|
||||||
{
|
{
|
||||||
|
//loop over config sources
|
||||||
foreach (IConfig config in m_config.Source.Configs)
|
foreach (IConfig config in m_config.Source.Configs)
|
||||||
{
|
{
|
||||||
|
// Look for Include-* in the key name
|
||||||
string[] keys = config.GetKeys();
|
string[] keys = config.GetKeys();
|
||||||
foreach (string k in keys)
|
foreach (string k in keys)
|
||||||
{
|
{
|
||||||
if (k.StartsWith("Include-"))
|
if (k.StartsWith("Include-"))
|
||||||
{
|
{
|
||||||
|
// read the config file to be included.
|
||||||
string file = config.GetString(k);
|
string file = config.GetString(k);
|
||||||
if (IsUri(file))
|
if (IsUri(file))
|
||||||
{
|
{
|
||||||
|
@ -199,7 +233,11 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Check if we can convert the string to a URI
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="file">String uri to the remote resource</param>
|
||||||
|
/// <returns>true if we can convert the string to a Uri object</returns>
|
||||||
bool IsUri(string file)
|
bool IsUri(string file)
|
||||||
{
|
{
|
||||||
Uri configUri;
|
Uri configUri;
|
||||||
|
@ -253,7 +291,7 @@ namespace OpenSim
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Setup a default config values in case they aren't present in the ini file
|
/// Setup a default config values in case they aren't present in the ini file
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns>A Configuration source containing the default configuration</returns>
|
||||||
private static IConfigSource DefaultConfig()
|
private static IConfigSource DefaultConfig()
|
||||||
{
|
{
|
||||||
IConfigSource defaultConfig = new IniConfigSource();
|
IConfigSource defaultConfig = new IniConfigSource();
|
||||||
|
@ -322,6 +360,9 @@ namespace OpenSim
|
||||||
return defaultConfig;
|
return defaultConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Read initial region settings from the ConfigSource
|
||||||
|
/// </summary>
|
||||||
protected virtual void ReadConfigSettings()
|
protected virtual void ReadConfigSettings()
|
||||||
{
|
{
|
||||||
IConfig startupConfig = m_config.Source.Configs["Startup"];
|
IConfig startupConfig = m_config.Source.Configs["Startup"];
|
||||||
|
|
|
@ -29,12 +29,24 @@ using OpenSim.Framework;
|
||||||
|
|
||||||
namespace OpenSim
|
namespace OpenSim
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// OpenSimulator Application Plugin framework interface
|
||||||
|
/// </summary>
|
||||||
public interface IApplicationPlugin : IPlugin
|
public interface IApplicationPlugin : IPlugin
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Initialize the Plugin
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="openSim">The Application instance</param>
|
||||||
void Initialise(OpenSimBase openSim);
|
void Initialise(OpenSimBase openSim);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when the application loading is completed
|
||||||
|
/// </summary>
|
||||||
void PostInitialise();
|
void PostInitialise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class ApplicationPluginInitialiser : PluginInitialiserBase
|
public class ApplicationPluginInitialiser : PluginInitialiserBase
|
||||||
{
|
{
|
||||||
private OpenSimBase server;
|
private OpenSimBase server;
|
||||||
|
|
|
@ -146,6 +146,9 @@ namespace OpenSim
|
||||||
ChangeSelectedRegion("region", new string[] {"change", "region", "root"});
|
ChangeSelectedRegion("region", new string[] {"change", "region", "root"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Register standard set of region console commands
|
||||||
|
/// </summary>
|
||||||
private void RegisterConsoleCommands()
|
private void RegisterConsoleCommands()
|
||||||
{
|
{
|
||||||
m_console.Commands.AddCommand("region", false, "clear assets",
|
m_console.Commands.AddCommand("region", false, "clear assets",
|
||||||
|
@ -332,6 +335,11 @@ namespace OpenSim
|
||||||
base.ShutdownSpecific();
|
base.ShutdownSpecific();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Timer to run a specific text file as console commands. Configured in in the main ini file
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
private void RunAutoTimerScript(object sender, EventArgs e)
|
private void RunAutoTimerScript(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (m_timedScript != "disabled")
|
if (m_timedScript != "disabled")
|
||||||
|
@ -342,6 +350,11 @@ namespace OpenSim
|
||||||
|
|
||||||
#region Console Commands
|
#region Console Commands
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Kicks users off the region
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmdparams">name of avatar to kick</param>
|
||||||
private void KickUserCommand(string module, string[] cmdparams)
|
private void KickUserCommand(string module, string[] cmdparams)
|
||||||
{
|
{
|
||||||
if (cmdparams.Length < 4)
|
if (cmdparams.Length < 4)
|
||||||
|
@ -401,6 +414,10 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Opens a file and uses it as input to the console command parser.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="fileName">name of file to use as input to the console</param>
|
||||||
private static void PrintFileToConsole(string fileName)
|
private static void PrintFileToConsole(string fileName)
|
||||||
{
|
{
|
||||||
if (File.Exists(fileName))
|
if (File.Exists(fileName))
|
||||||
|
@ -419,12 +436,22 @@ namespace OpenSim
|
||||||
m_log.Info("Not implemented.");
|
m_log.Info("Not implemented.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Force resending of all updates to all clients in active region(s)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="args"></param>
|
||||||
private void HandleForceUpdate(string module, string[] args)
|
private void HandleForceUpdate(string module, string[] args)
|
||||||
{
|
{
|
||||||
m_log.Info("Updating all clients");
|
m_log.Info("Updating all clients");
|
||||||
m_sceneManager.ForceCurrentSceneClientUpdate();
|
m_sceneManager.ForceCurrentSceneClientUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Edits the scale of a primative with the name specified
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="args">0,1, name, x, y, z</param>
|
||||||
private void HandleEditScale(string module, string[] args)
|
private void HandleEditScale(string module, string[] args)
|
||||||
{
|
{
|
||||||
if (args.Length == 6)
|
if (args.Length == 6)
|
||||||
|
@ -437,6 +464,11 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new region based on the parameters specified. This will ask the user questions on the console
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmd">0,1,region name, region XML file</param>
|
||||||
private void HandleCreateRegion(string module, string[] cmd)
|
private void HandleCreateRegion(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
if (cmd.Length < 4)
|
if (cmd.Length < 4)
|
||||||
|
@ -473,16 +505,32 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enable logins
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
private void HandleLoginEnable(string module, string[] cmd)
|
private void HandleLoginEnable(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
ProcessLogin(true);
|
ProcessLogin(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Disable logins
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
private void HandleLoginDisable(string module, string[] cmd)
|
private void HandleLoginDisable(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
ProcessLogin(false);
|
ProcessLogin(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Log login status to the console
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
private void HandleLoginStatus(string module, string[] cmd)
|
private void HandleLoginStatus(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
if (m_commsManager.GridService.RegionLoginsEnabled == false)
|
if (m_commsManager.GridService.RegionLoginsEnabled == false)
|
||||||
|
@ -492,6 +540,12 @@ namespace OpenSim
|
||||||
m_log.Info("[ Login ] Login are enabled");
|
m_log.Info("[ Login ] Login are enabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Change and load configuration file data.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
private void HandleConfig(string module, string[] cmd)
|
private void HandleConfig(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
List<string> args = new List<string>(cmd);
|
List<string> args = new List<string>(cmd);
|
||||||
|
@ -557,6 +611,12 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Load, Unload, and list Region modules in use
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
private void HandleModules(string module, string[] cmd)
|
private void HandleModules(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
List<string> args = new List<string>(cmd);
|
List<string> args = new List<string>(cmd);
|
||||||
|
@ -797,6 +857,11 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
|
|
||||||
// see BaseOpenSimServer
|
// see BaseOpenSimServer
|
||||||
|
/// <summary>
|
||||||
|
/// Many commands list objects for debugging. Some of the types are listed here
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="mod"></param>
|
||||||
|
/// <param name="cmd"></param>
|
||||||
public override void HandleShow(string mod, string[] cmd)
|
public override void HandleShow(string mod, string[] cmd)
|
||||||
{
|
{
|
||||||
base.HandleShow(mod, cmd);
|
base.HandleShow(mod, cmd);
|
||||||
|
@ -902,6 +967,10 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// print UDP Queue data for each client
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
private string GetQueuesReport()
|
private string GetQueuesReport()
|
||||||
{
|
{
|
||||||
string report = String.Empty;
|
string report = String.Empty;
|
||||||
|
@ -1010,6 +1079,11 @@ namespace OpenSim
|
||||||
m_commsManager.UserAdminService.ResetUserPassword(firstName, lastName, newPassword);
|
m_commsManager.UserAdminService.ResetUserPassword(firstName, lastName, newPassword);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use XML2 format to serialize data to a file
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmdparams"></param>
|
||||||
protected void SavePrimsXml2(string module, string[] cmdparams)
|
protected void SavePrimsXml2(string module, string[] cmdparams)
|
||||||
{
|
{
|
||||||
if (cmdparams.Length > 5)
|
if (cmdparams.Length > 5)
|
||||||
|
@ -1022,6 +1096,11 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Use XML format to serialize data to a file
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmdparams"></param>
|
||||||
protected void SaveXml(string module, string[] cmdparams)
|
protected void SaveXml(string module, string[] cmdparams)
|
||||||
{
|
{
|
||||||
m_log.Error("[CONSOLE]: PLEASE NOTE, save-xml is DEPRECATED and may be REMOVED soon. If you are using this and there is some reason you can't use save-xml2, please file a mantis detailing the reason.");
|
m_log.Error("[CONSOLE]: PLEASE NOTE, save-xml is DEPRECATED and may be REMOVED soon. If you are using this and there is some reason you can't use save-xml2, please file a mantis detailing the reason.");
|
||||||
|
@ -1036,6 +1115,11 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads data and region objects from XML format.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmdparams"></param>
|
||||||
protected void LoadXml(string module, string[] cmdparams)
|
protected void LoadXml(string module, string[] cmdparams)
|
||||||
{
|
{
|
||||||
m_log.Error("[CONSOLE]: PLEASE NOTE, load-xml is DEPRECATED and may be REMOVED soon. If you are using this and there is some reason you can't use load-xml2, please file a mantis detailing the reason.");
|
m_log.Error("[CONSOLE]: PLEASE NOTE, load-xml is DEPRECATED and may be REMOVED soon. If you are using this and there is some reason you can't use load-xml2, please file a mantis detailing the reason.");
|
||||||
|
@ -1079,7 +1163,11 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Serialize region data to XML2Format
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmdparams"></param>
|
||||||
protected void SaveXml2(string module, string[] cmdparams)
|
protected void SaveXml2(string module, string[] cmdparams)
|
||||||
{
|
{
|
||||||
if (cmdparams.Length > 2)
|
if (cmdparams.Length > 2)
|
||||||
|
@ -1092,6 +1180,11 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Load region data from Xml2Format
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="module"></param>
|
||||||
|
/// <param name="cmdparams"></param>
|
||||||
protected void LoadXml2(string module, string[] cmdparams)
|
protected void LoadXml2(string module, string[] cmdparams)
|
||||||
{
|
{
|
||||||
if (cmdparams.Length > 2)
|
if (cmdparams.Length > 2)
|
||||||
|
|
|
@ -40,9 +40,6 @@ namespace OpenSim.Region.Communications.Hypergrid
|
||||||
{
|
{
|
||||||
public class HGCommunicationsGridMode : CommunicationsManager // CommunicationsOGS1
|
public class HGCommunicationsGridMode : CommunicationsManager // CommunicationsOGS1
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log
|
|
||||||
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
IHyperlink m_osw = null;
|
IHyperlink m_osw = null;
|
||||||
public IHyperlink HGServices
|
public IHyperlink HGServices
|
||||||
{
|
{
|
||||||
|
|
|
@ -74,7 +74,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Test saving a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet).
|
/// Test saving a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
//[Test]
|
[Test]
|
||||||
public void TestSaveIarV0_1()
|
public void TestSaveIarV0_1()
|
||||||
{
|
{
|
||||||
TestHelper.InMethod();
|
TestHelper.InMethod();
|
||||||
|
@ -82,7 +82,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
|
|
||||||
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
|
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
|
||||||
|
|
||||||
Scene scene = SceneSetupHelpers.SetupScene("");
|
Scene scene = SceneSetupHelpers.SetupScene("Inventory");
|
||||||
SceneSetupHelpers.SetupSceneModules(scene, archiverModule);
|
SceneSetupHelpers.SetupSceneModules(scene, archiverModule);
|
||||||
CommunicationsManager cm = scene.CommsManager;
|
CommunicationsManager cm = scene.CommsManager;
|
||||||
|
|
||||||
|
@ -222,7 +222,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
/// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where
|
/// Test loading a V0.1 OpenSim Inventory Archive (subject to change since there is no fixed format yet) where
|
||||||
/// an account exists with the creator name.
|
/// an account exists with the creator name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
//[Test]
|
[Test]
|
||||||
public void TestLoadIarV0_1ExistingUsers()
|
public void TestLoadIarV0_1ExistingUsers()
|
||||||
{
|
{
|
||||||
TestHelper.InMethod();
|
TestHelper.InMethod();
|
||||||
|
@ -262,7 +262,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
|
InventoryArchiverModule archiverModule = new InventoryArchiverModule();
|
||||||
|
|
||||||
// Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene
|
// Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene
|
||||||
Scene scene = SceneSetupHelpers.SetupScene();
|
Scene scene = SceneSetupHelpers.SetupScene("inventory");
|
||||||
IUserAdminService userAdminService = scene.CommsManager.UserAdminService;
|
IUserAdminService userAdminService = scene.CommsManager.UserAdminService;
|
||||||
|
|
||||||
SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
|
SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule);
|
||||||
|
@ -276,16 +276,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
|
|
||||||
CachedUserInfo userInfo
|
CachedUserInfo userInfo
|
||||||
= scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName);
|
= scene.CommsManager.UserProfileCacheService.GetUserDetails(userFirstName, userLastName);
|
||||||
//userInfo.FetchInventory();
|
|
||||||
/*
|
|
||||||
for (int i = 0 ; i < 50 ; i++)
|
|
||||||
{
|
|
||||||
if (userInfo.HasReceivedInventory == true)
|
|
||||||
break;
|
|
||||||
Thread.Sleep(200);
|
|
||||||
}
|
|
||||||
Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
|
|
||||||
*/
|
|
||||||
InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName);
|
InventoryItemBase foundItem = userInfo.RootFolder.FindItemByPath(itemName);
|
||||||
Assert.That(foundItem, Is.Not.Null, "Didn't find loaded item");
|
Assert.That(foundItem, Is.Not.Null, "Didn't find loaded item");
|
||||||
Assert.That(
|
Assert.That(
|
||||||
|
@ -396,17 +387,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
Monitor.Wait(this, 60000);
|
Monitor.Wait(this, 60000);
|
||||||
}
|
}
|
||||||
|
|
||||||
//userInfo.FetchInventory();
|
|
||||||
/*
|
|
||||||
for (int i = 0 ; i < 50 ; i++)
|
|
||||||
{
|
|
||||||
if (userInfo.HasReceivedInventory == true)
|
|
||||||
break;
|
|
||||||
Thread.Sleep(200);
|
|
||||||
}
|
|
||||||
Assert.That(userInfo.HasReceivedInventory, Is.True, "FetchInventory timed out (10 seconds)");
|
|
||||||
*/
|
|
||||||
|
|
||||||
Console.WriteLine("userInfo.RootFolder 1: {0}", userInfo.RootFolder);
|
Console.WriteLine("userInfo.RootFolder 1: {0}", userInfo.RootFolder);
|
||||||
|
|
||||||
Dictionary <string, InventoryFolderImpl> foldersCreated = new Dictionary<string, InventoryFolderImpl>();
|
Dictionary <string, InventoryFolderImpl> foldersCreated = new Dictionary<string, InventoryFolderImpl>();
|
||||||
|
@ -429,10 +409,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
|
|
||||||
Console.WriteLine("userInfo.RootFolder 2: {0}", userInfo.RootFolder);
|
Console.WriteLine("userInfo.RootFolder 2: {0}", userInfo.RootFolder);
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
new InventoryArchiveReadRequest(userInfo, null, (Stream)null, null, null)
|
new InventoryArchiveReadRequest(userInfo, null, (Stream)null, null, null)
|
||||||
.ReplicateArchivePathToUserInventory(itemArchivePath, false, userInfo.RootFolder, foldersCreated, nodesLoaded);
|
.ReplicateArchivePathToUserInventory(
|
||||||
|
itemArchivePath, false, userInfo.RootFolder, foldersCreated, nodesLoaded);
|
||||||
|
|
||||||
Console.WriteLine("userInfo.RootFolder 3: {0}", userInfo.RootFolder);
|
Console.WriteLine("userInfo.RootFolder 3: {0}", userInfo.RootFolder);
|
||||||
InventoryFolderImpl folder1 = userInfo.RootFolder.FindFolderByPath("a");
|
InventoryFolderImpl folder1 = userInfo.RootFolder.FindFolderByPath("a");
|
||||||
|
@ -440,11 +419,5 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
|
||||||
InventoryFolderImpl folder2 = folder1.FindFolderByPath("b");
|
InventoryFolderImpl folder2 = folder1.FindFolderByPath("b");
|
||||||
Assert.That(folder2, Is.Not.Null, "Could not find folder b");
|
Assert.That(folder2, Is.Not.Null, "Could not find folder b");
|
||||||
}
|
}
|
||||||
catch (NullReferenceException e)
|
|
||||||
{
|
|
||||||
// Non fatal for now until we resolve the race condition
|
|
||||||
Console.WriteLine("Test failed with {0}", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using log4net;
|
using log4net;
|
||||||
|
@ -41,6 +42,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
private Scene m_scene;
|
private Scene m_scene;
|
||||||
|
private IProfileModule m_profileModule = null;
|
||||||
|
|
||||||
public AvatarProfilesModule()
|
public AvatarProfilesModule()
|
||||||
{
|
{
|
||||||
|
@ -56,6 +58,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
|
||||||
|
|
||||||
public void PostInitialise()
|
public void PostInitialise()
|
||||||
{
|
{
|
||||||
|
m_profileModule = m_scene.RequestModuleInterface<IProfileModule>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
|
@ -108,6 +111,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Profiles
|
||||||
charterMember = Utils.StringToBytes(profile.CustomType);
|
charterMember = Utils.StringToBytes(profile.CustomType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_profileModule != null)
|
||||||
|
{
|
||||||
|
Hashtable profileData = m_profileModule.GetProfileData(remoteClient.AgentId);
|
||||||
|
if (profileData["ProfileUrl"] != null)
|
||||||
|
profile.ProfileUrl = profileData["ProfileUrl"].ToString();
|
||||||
|
}
|
||||||
remoteClient.SendAvatarProperties(profile.ID, profile.AboutText,
|
remoteClient.SendAvatarProperties(profile.ID, profile.AboutText,
|
||||||
Util.ToDateTime(profile.Created).ToString("M/d/yyyy", CultureInfo.InvariantCulture),
|
Util.ToDateTime(profile.Created).ToString("M/d/yyyy", CultureInfo.InvariantCulture),
|
||||||
charterMember, profile.FirstLifeAboutText, (uint)(profile.UserFlags & 0xff),
|
charterMember, profile.FirstLifeAboutText, (uint)(profile.UserFlags & 0xff),
|
||||||
|
|
|
@ -0,0 +1,206 @@
|
||||||
|
/*
|
||||||
|
* 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 OpenMetaverse;
|
||||||
|
using Nini.Config;
|
||||||
|
using log4net;
|
||||||
|
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Services.Interfaces;
|
||||||
|
|
||||||
|
|
||||||
|
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
|
{
|
||||||
|
public abstract class BaseInventoryConnector : IInventoryService
|
||||||
|
{
|
||||||
|
protected InventoryCache m_cache;
|
||||||
|
|
||||||
|
protected virtual void Init(IConfigSource source)
|
||||||
|
{
|
||||||
|
m_cache = new InventoryCache();
|
||||||
|
m_cache.Init(source, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create the entire inventory for a given user
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="user"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract bool CreateUserInventory(UUID user);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the skeleton of the inventory -- folders only
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract List<InventoryFolderBase> GetInventorySkeleton(UUID userId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Synchronous inventory fetch.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userID"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract InventoryCollection GetUserInventory(UUID userID);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Request the inventory for a user. This is an asynchronous operation that will call the callback when the
|
||||||
|
/// inventory has been received
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userID"></param>
|
||||||
|
/// <param name="callback"></param>
|
||||||
|
public abstract void GetUserInventory(UUID userID, InventoryReceiptCallback callback);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Retrieve the root inventory folder for the given user.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userID"></param>
|
||||||
|
/// <returns>null if no root folder was found</returns>
|
||||||
|
public abstract InventoryFolderBase GetRootFolder(UUID userID);
|
||||||
|
|
||||||
|
public abstract Dictionary<AssetType, InventoryFolderBase> GetSystemFolders(UUID userID);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the user folder for the given folder-type
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userID"></param>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
|
||||||
|
{
|
||||||
|
return m_cache.GetFolderForType(userID, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets everything (folders and items) inside a folder
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <param name="folderID"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract InventoryCollection GetFolderContent(UUID userID, UUID folderID);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the items inside a folder
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userID"></param>
|
||||||
|
/// <param name="folderID"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add a new folder to the user's inventory
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="folder"></param>
|
||||||
|
/// <returns>true if the folder was successfully added</returns>
|
||||||
|
public abstract bool AddFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Update a folder in the user's inventory
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="folder"></param>
|
||||||
|
/// <returns>true if the folder was successfully updated</returns>
|
||||||
|
public abstract bool UpdateFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Move an inventory folder to a new location
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="folder">A folder containing the details of the new location</param>
|
||||||
|
/// <returns>true if the folder was successfully moved</returns>
|
||||||
|
public abstract bool MoveFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Purge an inventory folder of all its items and subfolders.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="folder"></param>
|
||||||
|
/// <returns>true if the folder was successfully purged</returns>
|
||||||
|
public abstract bool PurgeFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add a new item to the user's inventory.
|
||||||
|
/// If the given item has to parent folder, it tries to find the most
|
||||||
|
/// suitable folder for it.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item"></param>
|
||||||
|
/// <returns>true if the item was successfully added</returns>
|
||||||
|
public bool AddItem(InventoryItemBase item)
|
||||||
|
{
|
||||||
|
if (item.Folder == UUID.Zero)
|
||||||
|
{
|
||||||
|
InventoryFolderBase f = GetFolderForType(item.Owner, (AssetType)item.AssetType);
|
||||||
|
if (f != null)
|
||||||
|
item.Folder = f.ID;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f = GetRootFolder(item.Owner);
|
||||||
|
if (f != null)
|
||||||
|
item.Folder = f.ID;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return AddItemPlain(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract bool AddItemPlain(InventoryItemBase item);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Update an item in the user's inventory
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item"></param>
|
||||||
|
/// <returns>true if the item was successfully updated</returns>
|
||||||
|
public abstract bool UpdateItem(InventoryItemBase item);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Delete an item from the user's inventory
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item"></param>
|
||||||
|
/// <returns>true if the item was successfully deleted</returns>
|
||||||
|
public abstract bool DeleteItem(InventoryItemBase item);
|
||||||
|
|
||||||
|
public abstract InventoryItemBase QueryItem(InventoryItemBase item);
|
||||||
|
|
||||||
|
public abstract InventoryFolderBase QueryFolder(InventoryFolderBase folder);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Does the given user have an inventory structure?
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userID"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract bool HasInventoryForUser(UUID userID);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the active gestures of the agent.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract List<InventoryItemBase> GetActiveGestures(UUID userId);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -41,7 +41,7 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
{
|
{
|
||||||
public class HGInventoryBroker : InventoryCache, ISharedRegionModule, IInventoryService
|
public class HGInventoryBroker : BaseInventoryConnector, ISharedRegionModule, IInventoryService
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log =
|
||||||
LogManager.GetLogger(
|
LogManager.GetLogger(
|
||||||
|
@ -138,7 +138,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void AddRegion(Scene scene)
|
public void AddRegion(Scene scene)
|
||||||
{
|
{
|
||||||
if (!m_Enabled)
|
if (!m_Enabled)
|
||||||
return;
|
return;
|
||||||
|
@ -156,12 +156,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||||
base.AddRegion(scene);
|
m_cache.AddRegion(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
{
|
{
|
||||||
base.RemoveRegion(scene);
|
if (!m_Enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_cache.RemoveRegion(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegionLoaded(Scene scene)
|
public void RegionLoaded(Scene scene)
|
||||||
|
@ -175,17 +178,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
|
|
||||||
#region IInventoryService
|
#region IInventoryService
|
||||||
|
|
||||||
public bool CreateUserInventory(UUID userID)
|
public override bool CreateUserInventory(UUID userID)
|
||||||
{
|
{
|
||||||
return m_GridService.CreateUserInventory(userID);
|
return m_GridService.CreateUserInventory(userID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
public override List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||||
{
|
{
|
||||||
return m_GridService.GetInventorySkeleton(userId);
|
return m_GridService.GetInventorySkeleton(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryCollection GetUserInventory(UUID userID)
|
public override InventoryCollection GetUserInventory(UUID userID)
|
||||||
{
|
{
|
||||||
if (IsLocalGridUser(userID))
|
if (IsLocalGridUser(userID))
|
||||||
return m_GridService.GetUserInventory(userID);
|
return m_GridService.GetUserInventory(userID);
|
||||||
|
@ -193,7 +196,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||||
{
|
{
|
||||||
if (IsLocalGridUser(userID))
|
if (IsLocalGridUser(userID))
|
||||||
m_GridService.GetUserInventory(userID, callback);
|
m_GridService.GetUserInventory(userID, callback);
|
||||||
|
@ -220,7 +223,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||||
{
|
{
|
||||||
if (IsLocalGridUser(userID))
|
if (IsLocalGridUser(userID))
|
||||||
return m_GridService.GetFolderContent(userID, folderID);
|
return m_GridService.GetFolderContent(userID, folderID);
|
||||||
|
@ -271,12 +274,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return new Dictionary<AssetType, InventoryFolderBase>();
|
return new Dictionary<AssetType, InventoryFolderBase>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||||
{
|
{
|
||||||
return new List<InventoryItemBase>();
|
return new List<InventoryItemBase>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddFolder(InventoryFolderBase folder)
|
public override bool AddFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -291,7 +294,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateFolder(InventoryFolderBase folder)
|
public override bool UpdateFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -306,7 +309,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool MoveFolder(InventoryFolderBase folder)
|
public override bool MoveFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -321,7 +324,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool PurgeFolder(InventoryFolderBase folder)
|
public override bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -336,7 +339,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddItem(InventoryItemBase item)
|
// public bool AddItem(InventoryItemBase item) inherited
|
||||||
|
// Uses AddItemPlain
|
||||||
|
|
||||||
|
protected override bool AddItemPlain(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -351,7 +357,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateItem(InventoryItemBase item)
|
public override bool UpdateItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -366,7 +372,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteItem(InventoryItemBase item)
|
public override bool DeleteItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -381,7 +387,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryItemBase QueryItem(InventoryItemBase item)
|
public override InventoryItemBase QueryItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
@ -396,7 +402,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
public override InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return null;
|
return null;
|
||||||
|
@ -411,17 +417,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasInventoryForUser(UUID userID)
|
public override bool HasInventoryForUser(UUID userID)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolderBase GetRootFolder(UUID userID)
|
public override InventoryFolderBase GetRootFolder(UUID userID)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
public override List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||||
{
|
{
|
||||||
return new List<InventoryItemBase>();
|
return new List<InventoryItemBase>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,31 @@
|
||||||
using System;
|
/*
|
||||||
|
* 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.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
|
@ -12,21 +39,23 @@ using log4net;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
{
|
{
|
||||||
public abstract class InventoryCache
|
public class InventoryCache
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log =
|
||||||
LogManager.GetLogger(
|
LogManager.GetLogger(
|
||||||
MethodBase.GetCurrentMethod().DeclaringType);
|
MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
protected BaseInventoryConnector m_Connector;
|
||||||
protected List<Scene> m_Scenes;
|
protected List<Scene> m_Scenes;
|
||||||
|
|
||||||
// The cache proper
|
// The cache proper
|
||||||
protected Dictionary<UUID, Dictionary<AssetType, InventoryFolderBase>> m_InventoryCache;
|
protected Dictionary<UUID, Dictionary<AssetType, InventoryFolderBase>> m_InventoryCache;
|
||||||
|
|
||||||
protected virtual void Init(IConfigSource source)
|
public virtual void Init(IConfigSource source, BaseInventoryConnector connector)
|
||||||
{
|
{
|
||||||
m_Scenes = new List<Scene>();
|
m_Scenes = new List<Scene>();
|
||||||
m_InventoryCache = new Dictionary<UUID, Dictionary<AssetType, InventoryFolderBase>>();
|
m_InventoryCache = new Dictionary<UUID, Dictionary<AssetType, InventoryFolderBase>>();
|
||||||
|
m_Connector = connector;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void AddRegion(Scene scene)
|
public virtual void AddRegion(Scene scene)
|
||||||
|
@ -59,21 +88,23 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
|
|
||||||
// If not, go get them and place them in the cache
|
// If not, go get them and place them in the cache
|
||||||
Dictionary<AssetType, InventoryFolderBase> folders = GetSystemFolders(presence.UUID);
|
Dictionary<AssetType, InventoryFolderBase> folders = m_Connector.GetSystemFolders(presence.UUID);
|
||||||
m_log.DebugFormat("[INVENTORY CACHE]: OnMakeRootAgent, fetched system folders for {0} {1}: count {2}",
|
m_log.DebugFormat("[INVENTORY CACHE]: OnMakeRootAgent in {0}, fetched system folders for {1} {2}: count {3}",
|
||||||
presence.Firstname, presence.Lastname, folders.Count);
|
presence.Scene.RegionInfo.RegionName, presence.Firstname, presence.Lastname, folders.Count);
|
||||||
if (folders.Count > 0)
|
if (folders.Count > 0)
|
||||||
lock (m_InventoryCache)
|
lock (m_InventoryCache)
|
||||||
m_InventoryCache.Add(presence.UUID, folders);
|
m_InventoryCache.Add(presence.UUID, folders);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClientClosed(UUID clientID, Scene scene)
|
void OnClientClosed(UUID clientID, Scene scene)
|
||||||
|
{
|
||||||
|
if (m_InventoryCache.ContainsKey(clientID)) // if it's still in cache
|
||||||
{
|
{
|
||||||
ScenePresence sp = null;
|
ScenePresence sp = null;
|
||||||
foreach (Scene s in m_Scenes)
|
foreach (Scene s in m_Scenes)
|
||||||
{
|
{
|
||||||
s.TryGetAvatar(clientID, out sp);
|
s.TryGetAvatar(clientID, out sp);
|
||||||
if ((sp != null) && !sp.IsChildAgent)
|
if ((sp != null) && !sp.IsChildAgent && (s != scene))
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, but user {1} still in sim. Keeping system folders in cache",
|
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, but user {1} still in sim. Keeping system folders in cache",
|
||||||
scene.RegionInfo.RegionName, clientID);
|
scene.RegionInfo.RegionName, clientID);
|
||||||
|
@ -81,16 +112,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, user {1} out of sim. Dropping system folders",
|
|
||||||
scene.RegionInfo.RegionName, clientID);
|
|
||||||
// Drop system folders
|
// Drop system folders
|
||||||
lock (m_InventoryCache)
|
lock (m_InventoryCache)
|
||||||
if (m_InventoryCache.ContainsKey(clientID))
|
if (m_InventoryCache.ContainsKey(clientID))
|
||||||
m_InventoryCache.Remove(clientID);
|
{
|
||||||
|
m_log.DebugFormat("[INVENTORY CACHE]: OnClientClosed in {0}, user {1} out of sim. Dropping system folders",
|
||||||
|
scene.RegionInfo.RegionName, clientID);
|
||||||
|
|
||||||
|
m_InventoryCache.Remove(clientID);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Dictionary<AssetType, InventoryFolderBase> GetSystemFolders(UUID userID);
|
|
||||||
|
|
||||||
public InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
|
public InventoryFolderBase GetFolderForType(UUID userID, AssetType type)
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,7 +41,7 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
{
|
{
|
||||||
public class LocalInventoryServicesConnector : InventoryCache, ISharedRegionModule, IInventoryService
|
public class LocalInventoryServicesConnector : BaseInventoryConnector, ISharedRegionModule, IInventoryService
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log =
|
||||||
LogManager.GetLogger(
|
LogManager.GetLogger(
|
||||||
|
@ -124,7 +124,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void AddRegion(Scene scene)
|
public void AddRegion(Scene scene)
|
||||||
{
|
{
|
||||||
if (!m_Enabled)
|
if (!m_Enabled)
|
||||||
return;
|
return;
|
||||||
|
@ -141,12 +141,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
// "[INVENTORY CONNECTOR]: Registering IInventoryService to scene {0}", scene.RegionInfo.RegionName);
|
// "[INVENTORY CONNECTOR]: Registering IInventoryService to scene {0}", scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||||
base.AddRegion(scene);
|
m_cache.AddRegion(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
{
|
{
|
||||||
base.RemoveRegion(scene);
|
if (!m_Enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_cache.RemoveRegion(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegionLoaded(Scene scene)
|
public void RegionLoaded(Scene scene)
|
||||||
|
@ -160,22 +163,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
|
|
||||||
#region IInventoryService
|
#region IInventoryService
|
||||||
|
|
||||||
public bool CreateUserInventory(UUID user)
|
public override bool CreateUserInventory(UUID user)
|
||||||
{
|
{
|
||||||
return m_InventoryService.CreateUserInventory(user);
|
return m_InventoryService.CreateUserInventory(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
public override List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||||
{
|
{
|
||||||
return m_InventoryService.GetInventorySkeleton(userId);
|
return m_InventoryService.GetInventorySkeleton(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryCollection GetUserInventory(UUID id)
|
public override InventoryCollection GetUserInventory(UUID id)
|
||||||
{
|
{
|
||||||
return m_InventoryService.GetUserInventory(id);
|
return m_InventoryService.GetUserInventory(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||||
{
|
{
|
||||||
m_InventoryService.GetUserInventory(userID, callback);
|
m_InventoryService.GetUserInventory(userID, callback);
|
||||||
}
|
}
|
||||||
|
@ -207,13 +210,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return new Dictionary<AssetType, InventoryFolderBase>();
|
return new Dictionary<AssetType, InventoryFolderBase>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||||
{
|
{
|
||||||
return m_InventoryService.GetFolderContent(userID, folderID);
|
return m_InventoryService.GetFolderContent(userID, folderID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||||
{
|
{
|
||||||
return m_InventoryService.GetFolderItems(userID, folderID);
|
return m_InventoryService.GetFolderItems(userID, folderID);
|
||||||
}
|
}
|
||||||
|
@ -223,7 +226,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder"></param>
|
/// <param name="folder"></param>
|
||||||
/// <returns>true if the folder was successfully added</returns>
|
/// <returns>true if the folder was successfully added</returns>
|
||||||
public bool AddFolder(InventoryFolderBase folder)
|
public override bool AddFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return m_InventoryService.AddFolder(folder);
|
return m_InventoryService.AddFolder(folder);
|
||||||
}
|
}
|
||||||
|
@ -233,7 +236,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder"></param>
|
/// <param name="folder"></param>
|
||||||
/// <returns>true if the folder was successfully updated</returns>
|
/// <returns>true if the folder was successfully updated</returns>
|
||||||
public bool UpdateFolder(InventoryFolderBase folder)
|
public override bool UpdateFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return m_InventoryService.UpdateFolder(folder);
|
return m_InventoryService.UpdateFolder(folder);
|
||||||
}
|
}
|
||||||
|
@ -243,7 +246,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder">A folder containing the details of the new location</param>
|
/// <param name="folder">A folder containing the details of the new location</param>
|
||||||
/// <returns>true if the folder was successfully moved</returns>
|
/// <returns>true if the folder was successfully moved</returns>
|
||||||
public bool MoveFolder(InventoryFolderBase folder)
|
public override bool MoveFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return m_InventoryService.MoveFolder(folder);
|
return m_InventoryService.MoveFolder(folder);
|
||||||
}
|
}
|
||||||
|
@ -253,17 +256,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="folder"></param>
|
/// <param name="folder"></param>
|
||||||
/// <returns>true if the folder was successfully purged</returns>
|
/// <returns>true if the folder was successfully purged</returns>
|
||||||
public bool PurgeFolder(InventoryFolderBase folder)
|
public override bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return m_InventoryService.PurgeFolder(folder);
|
return m_InventoryService.PurgeFolder(folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a new item to the user's inventory
|
/// Add a new item to the user's inventory, plain
|
||||||
|
/// Called by base class AddItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
/// <returns>true if the item was successfully added</returns>
|
/// <returns>true if the item was successfully added</returns>
|
||||||
public bool AddItem(InventoryItemBase item)
|
protected override bool AddItemPlain(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
return m_InventoryService.AddItem(item);
|
return m_InventoryService.AddItem(item);
|
||||||
}
|
}
|
||||||
|
@ -273,7 +277,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
/// <returns>true if the item was successfully updated</returns>
|
/// <returns>true if the item was successfully updated</returns>
|
||||||
public bool UpdateItem(InventoryItemBase item)
|
public override bool UpdateItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
return m_InventoryService.UpdateItem(item);
|
return m_InventoryService.UpdateItem(item);
|
||||||
}
|
}
|
||||||
|
@ -283,17 +287,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
/// <returns>true if the item was successfully deleted</returns>
|
/// <returns>true if the item was successfully deleted</returns>
|
||||||
public bool DeleteItem(InventoryItemBase item)
|
public override bool DeleteItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
return m_InventoryService.DeleteItem(item);
|
return m_InventoryService.DeleteItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryItemBase QueryItem(InventoryItemBase item)
|
public override InventoryItemBase QueryItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
return m_InventoryService.QueryItem(item);
|
return m_InventoryService.QueryItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
public override InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
return m_InventoryService.QueryFolder(folder);
|
return m_InventoryService.QueryFolder(folder);
|
||||||
}
|
}
|
||||||
|
@ -303,7 +307,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool HasInventoryForUser(UUID userID)
|
public override bool HasInventoryForUser(UUID userID)
|
||||||
{
|
{
|
||||||
return m_InventoryService.HasInventoryForUser(userID);
|
return m_InventoryService.HasInventoryForUser(userID);
|
||||||
}
|
}
|
||||||
|
@ -313,12 +317,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userID"></param>
|
/// <param name="userID"></param>
|
||||||
/// <returns>null if no root folder was found</returns>
|
/// <returns>null if no root folder was found</returns>
|
||||||
public InventoryFolderBase GetRootFolder(UUID userID)
|
public override InventoryFolderBase GetRootFolder(UUID userID)
|
||||||
{
|
{
|
||||||
return m_InventoryService.GetRootFolder(userID);
|
return m_InventoryService.GetRootFolder(userID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
public override List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||||
{
|
{
|
||||||
return m_InventoryService.GetActiveGestures(userId);
|
return m_InventoryService.GetActiveGestures(userId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ using OpenMetaverse;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
{
|
{
|
||||||
public class RemoteInventoryServicesConnector : InventoryCache, ISharedRegionModule, IInventoryService
|
public class RemoteInventoryServicesConnector : BaseInventoryConnector, ISharedRegionModule, IInventoryService
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log =
|
||||||
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
@ -102,7 +102,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void AddRegion(Scene scene)
|
public void AddRegion(Scene scene)
|
||||||
{
|
{
|
||||||
if (!m_Enabled)
|
if (!m_Enabled)
|
||||||
return;
|
return;
|
||||||
|
@ -117,12 +117,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
}
|
}
|
||||||
|
|
||||||
scene.RegisterModuleInterface<IInventoryService>(this);
|
scene.RegisterModuleInterface<IInventoryService>(this);
|
||||||
base.AddRegion(scene);
|
m_cache.AddRegion(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
{
|
{
|
||||||
base.RemoveRegion(scene);
|
if (!m_Enabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_cache.RemoveRegion(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegionLoaded(Scene scene)
|
public void RegionLoaded(Scene scene)
|
||||||
|
@ -138,22 +141,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
|
|
||||||
#region IInventoryService
|
#region IInventoryService
|
||||||
|
|
||||||
public bool CreateUserInventory(UUID user)
|
public override bool CreateUserInventory(UUID user)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
public override List<InventoryFolderBase> GetInventorySkeleton(UUID userId)
|
||||||
{
|
{
|
||||||
return new List<InventoryFolderBase>();
|
return new List<InventoryFolderBase>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryCollection GetUserInventory(UUID userID)
|
public override InventoryCollection GetUserInventory(UUID userID)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback)
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(userID);
|
UUID sessionID = GetSessionID(userID);
|
||||||
try
|
try
|
||||||
|
@ -180,7 +183,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.GetSystemFolders(userID.ToString(), sessionID);
|
return m_RemoteConnector.GetSystemFolders(userID.ToString(), sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
public override InventoryCollection GetFolderContent(UUID userID, UUID folderID)
|
||||||
{
|
{
|
||||||
UUID sessionID = GetSessionID(userID);
|
UUID sessionID = GetSessionID(userID);
|
||||||
try
|
try
|
||||||
|
@ -199,12 +202,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return nullCollection;
|
return nullCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
public override List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID)
|
||||||
{
|
{
|
||||||
return new List<InventoryItemBase>();
|
return new List<InventoryItemBase>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddFolder(InventoryFolderBase folder)
|
public override bool AddFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -213,7 +216,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.AddFolder(folder.Owner.ToString(), folder, sessionID);
|
return m_RemoteConnector.AddFolder(folder.Owner.ToString(), folder, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateFolder(InventoryFolderBase folder)
|
public override bool UpdateFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -222,7 +225,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.UpdateFolder(folder.Owner.ToString(), folder, sessionID);
|
return m_RemoteConnector.UpdateFolder(folder.Owner.ToString(), folder, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool MoveFolder(InventoryFolderBase folder)
|
public override bool MoveFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -231,7 +234,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID);
|
return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool PurgeFolder(InventoryFolderBase folder)
|
public override bool PurgeFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -240,7 +243,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.PurgeFolder(folder.Owner.ToString(), folder, sessionID);
|
return m_RemoteConnector.PurgeFolder(folder.Owner.ToString(), folder, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddItem(InventoryItemBase item)
|
// public bool AddItem(InventoryItemBase item) inherited
|
||||||
|
// Uses AddItemPlain
|
||||||
|
|
||||||
|
protected override bool AddItemPlain(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -249,7 +255,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.AddItem(item.Owner.ToString(), item, sessionID);
|
return m_RemoteConnector.AddItem(item.Owner.ToString(), item, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateItem(InventoryItemBase item)
|
public override bool UpdateItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -258,7 +264,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID);
|
return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DeleteItem(InventoryItemBase item)
|
public override bool DeleteItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -267,7 +273,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.DeleteItem(item.Owner.ToString(), item, sessionID);
|
return m_RemoteConnector.DeleteItem(item.Owner.ToString(), item, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryItemBase QueryItem(InventoryItemBase item)
|
public override InventoryItemBase QueryItem(InventoryItemBase item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
@ -276,7 +282,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.QueryItem(item.Owner.ToString(), item, sessionID);
|
return m_RemoteConnector.QueryItem(item.Owner.ToString(), item, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
public override InventoryFolderBase QueryFolder(InventoryFolderBase folder)
|
||||||
{
|
{
|
||||||
if (folder == null)
|
if (folder == null)
|
||||||
return null;
|
return null;
|
||||||
|
@ -285,17 +291,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
|
||||||
return m_RemoteConnector.QueryFolder(folder.Owner.ToString(), folder, sessionID);
|
return m_RemoteConnector.QueryFolder(folder.Owner.ToString(), folder, sessionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasInventoryForUser(UUID userID)
|
public override bool HasInventoryForUser(UUID userID)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryFolderBase GetRootFolder(UUID userID)
|
public override InventoryFolderBase GetRootFolder(UUID userID)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<InventoryItemBase> GetActiveGestures(UUID userId)
|
public override List<InventoryItemBase> GetActiveGestures(UUID userId)
|
||||||
{
|
{
|
||||||
return new List<InventoryItemBase>();
|
return new List<InventoryItemBase>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -429,7 +429,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private RequestParcelPrimCountUpdate handlerRequestParcelPrimCountUpdate = null;
|
private RequestParcelPrimCountUpdate handlerRequestParcelPrimCountUpdate = null;
|
||||||
private ParcelPrimCountTainted handlerParcelPrimCountTainted = null;
|
private ParcelPrimCountTainted handlerParcelPrimCountTainted = null;
|
||||||
private ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = null;
|
private ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = null;
|
||||||
private ScriptTimerEvent handlerScriptTimerEvent = null;
|
// TODO: unused: private ScriptTimerEvent handlerScriptTimerEvent = null;
|
||||||
private EstateToolsSunUpdate handlerEstateToolsSunUpdate = null;
|
private EstateToolsSunUpdate handlerEstateToolsSunUpdate = null;
|
||||||
|
|
||||||
private ScriptColliding handlerCollidingStart = null;
|
private ScriptColliding handlerCollidingStart = null;
|
||||||
|
|
|
@ -624,6 +624,24 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void HandleMoveInventoryFolder2(IClientAPI remoteClient, UUID folderID, UUID parentID)
|
||||||
|
{
|
||||||
|
InventoryFolderBase folder = new InventoryFolderBase(folderID);
|
||||||
|
folder = InventoryService.QueryFolder(folder);
|
||||||
|
if (folder != null)
|
||||||
|
{
|
||||||
|
folder.ParentID = parentID;
|
||||||
|
if (!InventoryService.MoveFolder(folder))
|
||||||
|
m_log.WarnFormat("[AGENT INVENTORY]: could not move folder {0}", folderID);
|
||||||
|
else
|
||||||
|
m_log.DebugFormat("[AGENT INVENTORY]: folder {0} moved to parent {1}", folderID, parentID);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("[AGENT INVENTORY]: request to move folder {0} but folder not found", folderID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This should delete all the items and folders in the given directory.
|
/// This should delete all the items and folders in the given directory.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -648,5 +666,16 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
remoteClient.Name, remoteClient.AgentId);
|
remoteClient.Name, remoteClient.AgentId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void HandlePurgeInventoryDescendents2(IClientAPI remoteClient, UUID folderID)
|
||||||
|
{
|
||||||
|
InventoryFolderBase folder = new InventoryFolderBase(folderID);
|
||||||
|
|
||||||
|
if (InventoryService.PurgeFolder(folder))
|
||||||
|
m_log.DebugFormat("[AGENT INVENTORY]: folder {0} purged successfully", folderID);
|
||||||
|
else
|
||||||
|
m_log.WarnFormat("[AGENT INVENTORY]: could not purge folder {0}", folderID);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1038,6 +1038,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Send out simstats data to all clients
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="stats">Stats on the Simulator's performance</param>
|
||||||
private void SendSimStatsPackets(SimStats stats)
|
private void SendSimStatsPackets(SimStats stats)
|
||||||
{
|
{
|
||||||
List<ScenePresence> StatSendAgents = GetScenePresences();
|
List<ScenePresence> StatSendAgents = GetScenePresences();
|
||||||
|
@ -1050,6 +1054,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recount SceneObjectPart in parcel aabb
|
||||||
|
/// </summary>
|
||||||
private void UpdateLand()
|
private void UpdateLand()
|
||||||
{
|
{
|
||||||
if (LandChannel != null)
|
if (LandChannel != null)
|
||||||
|
@ -1061,11 +1068,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Update the terrain if it needs to be updated.
|
||||||
|
/// </summary>
|
||||||
private void UpdateTerrain()
|
private void UpdateTerrain()
|
||||||
{
|
{
|
||||||
EventManager.TriggerTerrainTick();
|
EventManager.TriggerTerrainTick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Back up queued up changes
|
||||||
|
/// </summary>
|
||||||
private void UpdateStorageBackup()
|
private void UpdateStorageBackup()
|
||||||
{
|
{
|
||||||
if (!m_backingup)
|
if (!m_backingup)
|
||||||
|
@ -1078,6 +1091,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sends out the OnFrame event to the modules
|
||||||
|
/// </summary>
|
||||||
private void UpdateEvents()
|
private void UpdateEvents()
|
||||||
{
|
{
|
||||||
m_eventManager.TriggerOnFrame();
|
m_eventManager.TriggerOnFrame();
|
||||||
|
@ -1133,6 +1149,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Synchronous force backup. For deletes and links/unlinks
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="group">Object to be backed up</param>
|
||||||
public void ForceSceneObjectBackup(SceneObjectGroup group)
|
public void ForceSceneObjectBackup(SceneObjectGroup group)
|
||||||
{
|
{
|
||||||
if (group != null)
|
if (group != null)
|
||||||
|
@ -1141,6 +1161,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Return object to avatar Message
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="agentID">Avatar Unique Id</param>
|
||||||
|
/// <param name="objectName">Name of object returned</param>
|
||||||
|
/// <param name="location">Location of object returned</param>
|
||||||
|
/// <param name="reason">Reasion for object return</param>
|
||||||
public void AddReturn(UUID agentID, string objectName, Vector3 location, string reason)
|
public void AddReturn(UUID agentID, string objectName, Vector3 location, string reason)
|
||||||
{
|
{
|
||||||
lock (m_returns)
|
lock (m_returns)
|
||||||
|
@ -1167,6 +1194,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#region Load Terrain
|
#region Load Terrain
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Store the terrain in the persistant data store
|
||||||
|
/// </summary>
|
||||||
public void SaveTerrain()
|
public void SaveTerrain()
|
||||||
{
|
{
|
||||||
m_storageManager.DataStore.StoreTerrain(Heightmap.GetDoubles(), RegionInfo.RegionID);
|
m_storageManager.DataStore.StoreTerrain(Heightmap.GetDoubles(), RegionInfo.RegionID);
|
||||||
|
@ -1269,6 +1299,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#region Load Land
|
#region Load Land
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads all Parcel data from the datastore for region identified by regionID
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="regionID">Unique Identifier of the Region to load parcel data for</param>
|
||||||
public void loadAllLandObjectsFromStorage(UUID regionID)
|
public void loadAllLandObjectsFromStorage(UUID regionID)
|
||||||
{
|
{
|
||||||
m_log.Info("[SCENE]: Loading land objects from storage");
|
m_log.Info("[SCENE]: Loading land objects from storage");
|
||||||
|
@ -1322,6 +1356,20 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a new rez location based on the raycast and the size of the object that is being rezzed.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="RayStart"></param>
|
||||||
|
/// <param name="RayEnd"></param>
|
||||||
|
/// <param name="RayTargetID"></param>
|
||||||
|
/// <param name="rot"></param>
|
||||||
|
/// <param name="bypassRayCast"></param>
|
||||||
|
/// <param name="RayEndIsIntersection"></param>
|
||||||
|
/// <param name="frontFacesOnly"></param>
|
||||||
|
/// <param name="scale"></param>
|
||||||
|
/// <param name="FaceCenter"></param>
|
||||||
|
/// <returns></returns>
|
||||||
public Vector3 GetNewRezLocation(Vector3 RayStart, Vector3 RayEnd, UUID RayTargetID, Quaternion rot, byte bypassRayCast, byte RayEndIsIntersection, bool frontFacesOnly, Vector3 scale, bool FaceCenter)
|
public Vector3 GetNewRezLocation(Vector3 RayStart, Vector3 RayEnd, UUID RayTargetID, Quaternion rot, byte bypassRayCast, byte RayEndIsIntersection, bool frontFacesOnly, Vector3 scale, bool FaceCenter)
|
||||||
{
|
{
|
||||||
Vector3 pos = Vector3.Zero;
|
Vector3 pos = Vector3.Zero;
|
||||||
|
@ -1412,6 +1460,19 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a New SceneObjectGroup/Part by raycasting
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ownerID"></param>
|
||||||
|
/// <param name="groupID"></param>
|
||||||
|
/// <param name="RayEnd"></param>
|
||||||
|
/// <param name="rot"></param>
|
||||||
|
/// <param name="shape"></param>
|
||||||
|
/// <param name="bypassRaycast"></param>
|
||||||
|
/// <param name="RayStart"></param>
|
||||||
|
/// <param name="RayTargetID"></param>
|
||||||
|
/// <param name="RayEndIsIntersection"></param>
|
||||||
public virtual void AddNewPrim(UUID ownerID, UUID groupID, Vector3 RayEnd, Quaternion rot, PrimitiveBaseShape shape,
|
public virtual void AddNewPrim(UUID ownerID, UUID groupID, Vector3 RayEnd, Quaternion rot, PrimitiveBaseShape shape,
|
||||||
byte bypassRaycast, Vector3 RayStart, UUID RayTargetID,
|
byte bypassRaycast, Vector3 RayStart, UUID RayTargetID,
|
||||||
byte RayEndIsIntersection)
|
byte RayEndIsIntersection)
|
||||||
|
@ -1829,6 +1890,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Attachment rezzing
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userID">Agent Unique ID</param>
|
||||||
|
/// <param name="itemID">Object ID</param>
|
||||||
|
/// <returns>False</returns>
|
||||||
public virtual bool IncomingCreateObject(UUID userID, UUID itemID)
|
public virtual bool IncomingCreateObject(UUID userID, UUID itemID)
|
||||||
{
|
{
|
||||||
ScenePresence sp = GetScenePresence(userID);
|
ScenePresence sp = GetScenePresence(userID);
|
||||||
|
@ -1841,6 +1908,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a Scene Object group to the Scene.
|
||||||
|
/// Verifies that the creator of the object is not banned from the simulator.
|
||||||
|
/// Checks if the item is an Attachment
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sceneObject"></param>
|
||||||
|
/// <returns>True if the SceneObjectGroup was added, False if it was not</returns>
|
||||||
public bool AddSceneObject(SceneObjectGroup sceneObject)
|
public bool AddSceneObject(SceneObjectGroup sceneObject)
|
||||||
{
|
{
|
||||||
// If the user is banned, we won't let any of their objects
|
// If the user is banned, we won't let any of their objects
|
||||||
|
@ -1933,6 +2007,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
#region Add/Remove Avatar Methods
|
#region Add/Remove Avatar Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adding a New Client and Create a Presence for it.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="client"></param>
|
||||||
public override void AddNewClient(IClientAPI client)
|
public override void AddNewClient(IClientAPI client)
|
||||||
{
|
{
|
||||||
SubscribeToClientEvents(client);
|
SubscribeToClientEvents(client);
|
||||||
|
@ -1977,6 +2055,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
EventManager.TriggerOnNewClient(client);
|
EventManager.TriggerOnNewClient(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Register for events from the client
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="client">The IClientAPI of the connected client</param>
|
||||||
protected virtual void SubscribeToClientEvents(IClientAPI client)
|
protected virtual void SubscribeToClientEvents(IClientAPI client)
|
||||||
{
|
{
|
||||||
client.OnRegionHandShakeReply += SendLayerData;
|
client.OnRegionHandShakeReply += SendLayerData;
|
||||||
|
@ -2019,12 +2101,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags;
|
client.OnUpdatePrimFlags += m_sceneGraph.UpdatePrimFlags;
|
||||||
client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily;
|
client.OnRequestObjectPropertiesFamily += m_sceneGraph.RequestObjectPropertiesFamily;
|
||||||
client.OnObjectPermissions += HandleObjectPermissionsUpdate;
|
client.OnObjectPermissions += HandleObjectPermissionsUpdate;
|
||||||
|
|
||||||
client.OnCreateNewInventoryItem += CreateNewInventoryItem;
|
client.OnCreateNewInventoryItem += CreateNewInventoryItem;
|
||||||
client.OnCreateNewInventoryFolder += HandleCreateInventoryFolder;
|
client.OnCreateNewInventoryFolder += HandleCreateInventoryFolder;
|
||||||
client.OnUpdateInventoryFolder += HandleUpdateInventoryFolder;
|
client.OnUpdateInventoryFolder += HandleUpdateInventoryFolder;
|
||||||
client.OnMoveInventoryFolder += HandleMoveInventoryFolder;
|
client.OnMoveInventoryFolder += HandleMoveInventoryFolder; // 2; //!!
|
||||||
client.OnFetchInventoryDescendents += HandleFetchInventoryDescendents;
|
client.OnFetchInventoryDescendents += HandleFetchInventoryDescendents;
|
||||||
client.OnPurgeInventoryDescendents += HandlePurgeInventoryDescendents;
|
client.OnPurgeInventoryDescendents += HandlePurgeInventoryDescendents; // 2; //!!
|
||||||
client.OnFetchInventory += HandleFetchInventory;
|
client.OnFetchInventory += HandleFetchInventory;
|
||||||
client.OnUpdateInventoryItem += UpdateInventoryItemAsset;
|
client.OnUpdateInventoryItem += UpdateInventoryItemAsset;
|
||||||
client.OnCopyInventoryItem += CopyInventoryItem;
|
client.OnCopyInventoryItem += CopyInventoryItem;
|
||||||
|
@ -2036,6 +2119,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
client.OnRemoveTaskItem += RemoveTaskInventory;
|
client.OnRemoveTaskItem += RemoveTaskInventory;
|
||||||
client.OnUpdateTaskInventory += UpdateTaskInventory;
|
client.OnUpdateTaskInventory += UpdateTaskInventory;
|
||||||
client.OnMoveTaskItem += ClientMoveTaskInventoryItem;
|
client.OnMoveTaskItem += ClientMoveTaskInventoryItem;
|
||||||
|
|
||||||
client.OnGrabObject += ProcessObjectGrab;
|
client.OnGrabObject += ProcessObjectGrab;
|
||||||
client.OnDeGrabObject += ProcessObjectDeGrab;
|
client.OnDeGrabObject += ProcessObjectDeGrab;
|
||||||
client.OnMoneyTransferRequest += ProcessMoneyTransferRequest;
|
client.OnMoneyTransferRequest += ProcessMoneyTransferRequest;
|
||||||
|
@ -2068,8 +2152,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Teleport an avatar to their home region
|
/// Teleport an avatar to their home region
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agentId"></param>
|
/// <param name="agentId">The avatar's Unique ID</param>
|
||||||
/// <param name="client"></param>
|
/// <param name="client">The IClientAPI for the client</param>
|
||||||
public virtual void TeleportClientHome(UUID agentId, IClientAPI client)
|
public virtual void TeleportClientHome(UUID agentId, IClientAPI client)
|
||||||
{
|
{
|
||||||
UserProfileData UserProfile = CommsManager.UserService.GetUserProfile(agentId);
|
UserProfileData UserProfile = CommsManager.UserService.GetUserProfile(agentId);
|
||||||
|
@ -2097,6 +2181,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Duplicates object specified by localID at position raycasted against RayTargetObject using
|
||||||
|
/// RayEnd and RayStart to determine what the angle of the ray is
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="localID">ID of object to duplicate</param>
|
||||||
|
/// <param name="dupeFlags"></param>
|
||||||
|
/// <param name="AgentID">Agent doing the duplication</param>
|
||||||
|
/// <param name="GroupID">Group of new object</param>
|
||||||
|
/// <param name="RayTargetObj">The target of the Ray</param>
|
||||||
|
/// <param name="RayEnd">The ending of the ray (farthest away point)</param>
|
||||||
|
/// <param name="RayStart">The Beginning of the ray (closest point)</param>
|
||||||
|
/// <param name="BypassRaycast">Bool to bypass raycasting</param>
|
||||||
|
/// <param name="RayEndIsIntersection">The End specified is the place to add the object</param>
|
||||||
|
/// <param name="CopyCenters">Position the object at the center of the face that it's colliding with</param>
|
||||||
|
/// <param name="CopyRotates">Rotate the object the same as the localID object</param>
|
||||||
public void doObjectDuplicateOnRay(uint localID, uint dupeFlags, UUID AgentID, UUID GroupID,
|
public void doObjectDuplicateOnRay(uint localID, uint dupeFlags, UUID AgentID, UUID GroupID,
|
||||||
UUID RayTargetObj, Vector3 RayEnd, Vector3 RayStart,
|
UUID RayTargetObj, Vector3 RayEnd, Vector3 RayStart,
|
||||||
bool BypassRaycast, bool RayEndIsIntersection, bool CopyCenters, bool CopyRotates)
|
bool BypassRaycast, bool RayEndIsIntersection, bool CopyCenters, bool CopyRotates)
|
||||||
|
@ -2168,6 +2267,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the Home Point. The GridService uses this to know where to put a user when they log-in
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="remoteClient"></param>
|
||||||
|
/// <param name="regionHandle"></param>
|
||||||
|
/// <param name="position"></param>
|
||||||
|
/// <param name="lookAt"></param>
|
||||||
|
/// <param name="flags"></param>
|
||||||
public virtual void SetHomeRezPoint(IClientAPI remoteClient, ulong regionHandle, Vector3 position, Vector3 lookAt, uint flags)
|
public virtual void SetHomeRezPoint(IClientAPI remoteClient, ulong regionHandle, Vector3 position, Vector3 lookAt, uint flags)
|
||||||
{
|
{
|
||||||
UserProfileData UserProfile = CommsManager.UserService.GetUserProfile(remoteClient.AgentId);
|
UserProfileData UserProfile = CommsManager.UserService.GetUserProfile(remoteClient.AgentId);
|
||||||
|
@ -2338,6 +2445,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes region from an avatar's known region list. This coincides with child agents. For each child agent, there will be a known region entry.
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="avatarID"></param>
|
||||||
|
/// <param name="regionslst"></param>
|
||||||
public void HandleRemoveKnownRegionsFromAvatar(UUID avatarID, List<ulong> regionslst)
|
public void HandleRemoveKnownRegionsFromAvatar(UUID avatarID, List<ulong> regionslst)
|
||||||
{
|
{
|
||||||
ScenePresence av = GetScenePresence(avatarID);
|
ScenePresence av = GetScenePresence(avatarID);
|
||||||
|
@ -2353,12 +2466,19 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Closes all endpoints with the circuitcode provided.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="circuitcode">Circuit Code of the endpoint to close</param>
|
||||||
public override void CloseAllAgents(uint circuitcode)
|
public override void CloseAllAgents(uint circuitcode)
|
||||||
{
|
{
|
||||||
// Called by ClientView to kill all circuit codes
|
// Called by ClientView to kill all circuit codes
|
||||||
ClientManager.CloseAllAgents(circuitcode);
|
ClientManager.CloseAllAgents(circuitcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inform all other ScenePresences on this Scene that someone else has changed position on the minimap.
|
||||||
|
/// </summary>
|
||||||
public void NotifyMyCoarseLocationChange()
|
public void NotifyMyCoarseLocationChange()
|
||||||
{
|
{
|
||||||
ForEachScenePresence(delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
|
ForEachScenePresence(delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
|
||||||
|
@ -2453,9 +2573,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// The return bool should allow for connections to be refused, but as not all calling paths
|
/// 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.
|
/// take proper notice of it let, we allowed banned users in still.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="regionHandle"></param>
|
/// <param name="agent">CircuitData of the agent who is connecting</param>
|
||||||
/// <param name="agent"></param>
|
/// <param name="reason">Outputs the reason for the false response on this string</param>
|
||||||
/// <param name="reason"></param>
|
/// <returns>True if the region accepts this agent. False if it does not. False will
|
||||||
|
/// also return a reason.</returns>
|
||||||
public bool NewUserConnection(AgentCircuitData agent, out string reason)
|
public bool NewUserConnection(AgentCircuitData agent, out string reason)
|
||||||
{
|
{
|
||||||
// Don't disable this log message - it's too helpful
|
// Don't disable this log message - it's too helpful
|
||||||
|
@ -2528,6 +2649,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verifies that the user has a session on the Grid
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="agent">Circuit Data of the Agent we're verifying</param>
|
||||||
|
/// <param name="reason">Outputs the reason for the false response on this string</param>
|
||||||
|
/// <returns>True if the user has a session on the grid. False if it does not. False will
|
||||||
|
/// also return a reason.</returns>
|
||||||
public virtual bool AuthenticateUser(AgentCircuitData agent, out string reason)
|
public virtual bool AuthenticateUser(AgentCircuitData agent, out string reason)
|
||||||
{
|
{
|
||||||
reason = String.Empty;
|
reason = String.Empty;
|
||||||
|
@ -2540,6 +2668,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verify if the user can connect to this region. Checks the banlist and ensures that the region is set for public access
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="agent">The circuit data for the agent</param>
|
||||||
|
/// <param name="reason">outputs the reason to this string</param>
|
||||||
|
/// <returns>True if the region accepts this agent. False if it does not. False will
|
||||||
|
/// also return a reason.</returns>
|
||||||
protected virtual bool AuthorizeUser(AgentCircuitData agent, out string reason)
|
protected virtual bool AuthorizeUser(AgentCircuitData agent, out string reason)
|
||||||
{
|
{
|
||||||
reason = String.Empty;
|
reason = String.Empty;
|
||||||
|
@ -2598,16 +2733,32 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Update an AgentCircuitData object with new information
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="data">Information to update the AgentCircuitData with</param>
|
||||||
public void UpdateCircuitData(AgentCircuitData data)
|
public void UpdateCircuitData(AgentCircuitData data)
|
||||||
{
|
{
|
||||||
m_authenticateHandler.UpdateAgentData(data);
|
m_authenticateHandler.UpdateAgentData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Change the Circuit Code for the user's Circuit Data
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="oldcc">The old Circuit Code. Must match a previous circuit code</param>
|
||||||
|
/// <param name="newcc">The new Circuit Code. Must not be an already existing circuit code</param>
|
||||||
|
/// <returns>True if we successfully changed it. False if we did not</returns>
|
||||||
public bool ChangeCircuitCode(uint oldcc, uint newcc)
|
public bool ChangeCircuitCode(uint oldcc, uint newcc)
|
||||||
{
|
{
|
||||||
return m_authenticateHandler.TryChangeCiruitCode(oldcc, newcc);
|
return m_authenticateHandler.TryChangeCiruitCode(oldcc, newcc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The Grid has requested that we log-off a user. Log them off.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="AvatarID">Unique ID of the avatar to log-off</param>
|
||||||
|
/// <param name="RegionSecret">SecureSessionID of the user, or the RegionSecret text when logging on to the grid</param>
|
||||||
|
/// <param name="message">message to display to the user. Reason for being logged off</param>
|
||||||
public void HandleLogOffUserFromGrid(UUID AvatarID, UUID RegionSecret, string message)
|
public void HandleLogOffUserFromGrid(UUID AvatarID, UUID RegionSecret, string message)
|
||||||
{
|
{
|
||||||
ScenePresence loggingOffUser = null;
|
ScenePresence loggingOffUser = null;
|
||||||
|
@ -2673,6 +2824,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// We've got an update about an agent that sees into this region,
|
||||||
|
/// send it to ScenePresence for processing It's the full data.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cAgentData">Agent that contains all of the relevant things about an agent.
|
||||||
|
/// Appearance, animations, position, etc.</param>
|
||||||
|
/// <returns>true if we handled it.</returns>
|
||||||
public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData)
|
public virtual bool IncomingChildAgentDataUpdate(AgentData cAgentData)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
|
@ -2690,6 +2848,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// We've got an update about an agent that sees into this region,
|
||||||
|
/// send it to ScenePresence for processing It's only positional data
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cAgentData">AgentPosition that contains agent positional data so we can know what to send</param>
|
||||||
|
/// <returns>true if we handled it.</returns>
|
||||||
public virtual bool IncomingChildAgentDataUpdate(AgentPosition cAgentData)
|
public virtual bool IncomingChildAgentDataUpdate(AgentPosition cAgentData)
|
||||||
{
|
{
|
||||||
//m_log.Debug(" XXX Scene IncomingChildAgentDataUpdate POSITION in " + RegionInfo.RegionName);
|
//m_log.Debug(" XXX Scene IncomingChildAgentDataUpdate POSITION in " + RegionInfo.RegionName);
|
||||||
|
|
|
@ -48,6 +48,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
public delegate void RemoveKnownRegionsFromAvatarList(UUID avatarID, List<ulong> regionlst);
|
public delegate void RemoveKnownRegionsFromAvatarList(UUID avatarID, List<ulong> regionlst);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Class that Region communications runs through
|
||||||
|
/// </summary>
|
||||||
public class SceneCommunicationService //one instance per region
|
public class SceneCommunicationService //one instance per region
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
@ -60,15 +63,46 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
protected List<UUID> m_agentsInTransit;
|
protected List<UUID> m_agentsInTransit;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// An agent is crossing into this region
|
||||||
|
/// </summary>
|
||||||
public event AgentCrossing OnAvatarCrossingIntoRegion;
|
public event AgentCrossing OnAvatarCrossingIntoRegion;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A user will arrive shortly, set up appropriate credentials so it can connect
|
||||||
|
/// </summary>
|
||||||
public event ExpectUserDelegate OnExpectUser;
|
public event ExpectUserDelegate OnExpectUser;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A Prim will arrive shortly
|
||||||
|
/// </summary>
|
||||||
public event ExpectPrimDelegate OnExpectPrim;
|
public event ExpectPrimDelegate OnExpectPrim;
|
||||||
public event CloseAgentConnection OnCloseAgentConnection;
|
public event CloseAgentConnection OnCloseAgentConnection;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A new prim has arrived
|
||||||
|
/// </summary>
|
||||||
public event PrimCrossing OnPrimCrossingIntoRegion;
|
public event PrimCrossing OnPrimCrossingIntoRegion;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A New Region is up and available
|
||||||
|
/// </summary>
|
||||||
public event RegionUp OnRegionUp;
|
public event RegionUp OnRegionUp;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// We have a child agent for this avatar and we're getting a status update about it
|
||||||
|
/// </summary>
|
||||||
public event ChildAgentUpdate OnChildAgentUpdate;
|
public event ChildAgentUpdate OnChildAgentUpdate;
|
||||||
//public event RemoveKnownRegionsFromAvatarList OnRemoveKnownRegionFromAvatar;
|
//public event RemoveKnownRegionsFromAvatarList OnRemoveKnownRegionFromAvatar;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Time to log one of our users off. Grid Service sends this mostly
|
||||||
|
/// </summary>
|
||||||
public event LogOffUser OnLogOffUser;
|
public event LogOffUser OnLogOffUser;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A region wants land data from us!
|
||||||
|
/// </summary>
|
||||||
public event GetLandData OnGetLandData;
|
public event GetLandData OnGetLandData;
|
||||||
|
|
||||||
private AgentCrossing handlerAvatarCrossingIntoRegion = null; // OnAvatarCrossingIntoRegion;
|
private AgentCrossing handlerAvatarCrossingIntoRegion = null; // OnAvatarCrossingIntoRegion;
|
||||||
|
@ -123,11 +157,20 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a region with the name closest to string provided
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="name">Partial Region Name for matching</param>
|
||||||
|
/// <returns>Region Information for the region</returns>
|
||||||
public RegionInfo RequestClosestRegion(string name)
|
public RegionInfo RequestClosestRegion(string name)
|
||||||
{
|
{
|
||||||
return m_commsProvider.GridService.RequestClosestRegion(name);
|
return m_commsProvider.GridService.RequestClosestRegion(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This region is shutting down, de-register all events!
|
||||||
|
/// De-Register region from Grid!
|
||||||
|
/// </summary>
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
if (regionCommsHost != null)
|
if (regionCommsHost != null)
|
||||||
|
@ -159,10 +202,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
#region CommsManager Event handlers
|
#region CommsManager Event handlers
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
/// A New User will arrive shortly, Informs the scene that there's a new user on the way
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="regionHandle"></param>
|
/// <param name="agent">Data we need to ensure that the agent can connect</param>
|
||||||
/// <param name="agent"></param>
|
|
||||||
///
|
///
|
||||||
protected void NewUserConnection(AgentCircuitData agent)
|
protected void NewUserConnection(AgentCircuitData agent)
|
||||||
{
|
{
|
||||||
|
@ -174,6 +216,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The Grid has requested us to log-off the user
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="AgentID">Unique ID of agent to log-off</param>
|
||||||
|
/// <param name="RegionSecret">The secret string that the region establishes with the grid when registering</param>
|
||||||
|
/// <param name="message">The message to send to the user that tells them why they were logged off</param>
|
||||||
protected void GridLogOffUser(UUID AgentID, UUID RegionSecret, string message)
|
protected void GridLogOffUser(UUID AgentID, UUID RegionSecret, string message)
|
||||||
{
|
{
|
||||||
handlerLogOffUser = OnLogOffUser;
|
handlerLogOffUser = OnLogOffUser;
|
||||||
|
@ -183,6 +231,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A New Region is now available. Inform the scene that there is a new region available.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="region">Information about the new region that is available</param>
|
||||||
|
/// <returns>True if the event was handled</returns>
|
||||||
protected bool newRegionUp(RegionInfo region)
|
protected bool newRegionUp(RegionInfo region)
|
||||||
{
|
{
|
||||||
handlerRegionUp = OnRegionUp;
|
handlerRegionUp = OnRegionUp;
|
||||||
|
@ -194,6 +247,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Inform the scene that we've got an update about a child agent that we have
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cAgentData"></param>
|
||||||
|
/// <returns></returns>
|
||||||
protected bool ChildAgentUpdate(ChildAgentDataUpdate cAgentData)
|
protected bool ChildAgentUpdate(ChildAgentDataUpdate cAgentData)
|
||||||
{
|
{
|
||||||
handlerChildAgentUpdate = OnChildAgentUpdate;
|
handlerChildAgentUpdate = OnChildAgentUpdate;
|
||||||
|
@ -204,6 +262,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void AgentCrossing(UUID agentID, Vector3 position, bool isFlying)
|
protected void AgentCrossing(UUID agentID, Vector3 position, bool isFlying)
|
||||||
{
|
{
|
||||||
handlerAvatarCrossingIntoRegion = OnAvatarCrossingIntoRegion;
|
handlerAvatarCrossingIntoRegion = OnAvatarCrossingIntoRegion;
|
||||||
|
@ -213,6 +272,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// We have a new prim from a neighbor
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="primID">unique ID for the primative</param>
|
||||||
|
/// <param name="objXMLData">XML2 encoded data of the primative</param>
|
||||||
|
/// <param name="XMLMethod">An Int that represents the version of the XMLMethod</param>
|
||||||
|
/// <returns>True if the prim was accepted, false if it was not</returns>
|
||||||
protected bool IncomingPrimCrossing(UUID primID, String objXMLData, int XMLMethod)
|
protected bool IncomingPrimCrossing(UUID primID, String objXMLData, int XMLMethod)
|
||||||
{
|
{
|
||||||
handlerExpectPrim = OnExpectPrim;
|
handlerExpectPrim = OnExpectPrim;
|
||||||
|
|
|
@ -1098,30 +1098,29 @@ if (m_shape != null) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleTimerAccounting(uint localID, double interval)
|
// TODO: unused:
|
||||||
{
|
// private void handleTimerAccounting(uint localID, double interval)
|
||||||
if (localID == LocalId)
|
// {
|
||||||
{
|
// if (localID == LocalId)
|
||||||
|
// {
|
||||||
float sec = (float)interval;
|
// float sec = (float)interval;
|
||||||
if (m_parentGroup != null)
|
// if (m_parentGroup != null)
|
||||||
{
|
// {
|
||||||
if (sec == 0)
|
// if (sec == 0)
|
||||||
{
|
// {
|
||||||
if (m_parentGroup.scriptScore + 0.001f >= float.MaxValue - 0.001)
|
// if (m_parentGroup.scriptScore + 0.001f >= float.MaxValue - 0.001)
|
||||||
m_parentGroup.scriptScore = 0;
|
// m_parentGroup.scriptScore = 0;
|
||||||
|
//
|
||||||
m_parentGroup.scriptScore += 0.001f;
|
// m_parentGroup.scriptScore += 0.001f;
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if (m_parentGroup.scriptScore + (0.001f / sec) >= float.MaxValue - (0.001f / sec))
|
// if (m_parentGroup.scriptScore + (0.001f / sec) >= float.MaxValue - (0.001f / sec))
|
||||||
m_parentGroup.scriptScore = 0;
|
// m_parentGroup.scriptScore = 0;
|
||||||
m_parentGroup.scriptScore += (0.001f / sec);
|
// m_parentGroup.scriptScore += (0.001f / sec);
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
}
|
// }
|
||||||
}
|
|
||||||
|
|
||||||
#endregion Private Methods
|
#endregion Private Methods
|
||||||
|
|
||||||
|
@ -1248,7 +1247,6 @@ if (m_shape != null) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// hook to the physics scene to apply angular impulse
|
/// hook to the physics scene to apply angular impulse
|
||||||
/// This is sent up to the group, which then finds the root prim
|
/// This is sent up to the group, which then finds the root prim
|
||||||
|
@ -1809,7 +1807,6 @@ if (m_shape != null) {
|
||||||
m_parentGroup.SetHoverHeight(0f, PIDHoverType.Ground, 0f);
|
m_parentGroup.SetHoverHeight(0f, PIDHoverType.Ground, 0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public virtual void OnGrab(Vector3 offsetPos, IClientAPI remoteClient)
|
public virtual void OnGrab(Vector3 offsetPos, IClientAPI remoteClient)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,6 +113,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
agent.InventoryFolder = UUID.Zero;
|
agent.InventoryFolder = UUID.Zero;
|
||||||
agent.startpos = Vector3.Zero;
|
agent.startpos = Vector3.Zero;
|
||||||
agent.CapsPath = GetRandomCapsObjectPath();
|
agent.CapsPath = GetRandomCapsObjectPath();
|
||||||
|
agent.ChildrenCapSeeds = new Dictionary<ulong, string>();
|
||||||
|
|
||||||
string reason;
|
string reason;
|
||||||
scene.NewUserConnection(agent, out reason);
|
scene.NewUserConnection(agent, out reason);
|
||||||
|
@ -147,7 +148,13 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
TestHelper.InMethod();
|
TestHelper.InMethod();
|
||||||
|
|
||||||
string reason;
|
string reason;
|
||||||
|
|
||||||
|
if (acd1 == null)
|
||||||
|
fixNullPresence();
|
||||||
|
|
||||||
scene.NewUserConnection(acd1, out reason);
|
scene.NewUserConnection(acd1, out reason);
|
||||||
|
if (testclient == null)
|
||||||
|
testclient = new TestClient(acd1, scene);
|
||||||
scene.AddNewClient(testclient);
|
scene.AddNewClient(testclient);
|
||||||
|
|
||||||
ScenePresence presence = scene.GetScenePresence(agent1);
|
ScenePresence presence = scene.GetScenePresence(agent1);
|
||||||
|
@ -162,6 +169,24 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
|
|
||||||
Assert.That(neighbours.Count, Is.EqualTo(2));
|
Assert.That(neighbours.Count, Is.EqualTo(2));
|
||||||
}
|
}
|
||||||
|
public void fixNullPresence()
|
||||||
|
{
|
||||||
|
string firstName = "testfirstname";
|
||||||
|
|
||||||
|
AgentCircuitData agent = new AgentCircuitData();
|
||||||
|
agent.AgentID = agent1;
|
||||||
|
agent.firstname = firstName;
|
||||||
|
agent.lastname = "testlastname";
|
||||||
|
agent.SessionID = UUID.Zero;
|
||||||
|
agent.SecureSessionID = UUID.Zero;
|
||||||
|
agent.circuitcode = 123;
|
||||||
|
agent.BaseFolder = UUID.Zero;
|
||||||
|
agent.InventoryFolder = UUID.Zero;
|
||||||
|
agent.startpos = Vector3.Zero;
|
||||||
|
agent.CapsPath = GetRandomCapsObjectPath();
|
||||||
|
|
||||||
|
acd1 = agent;
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void T013_TestRemoveNeighbourRegion()
|
public void T013_TestRemoveNeighbourRegion()
|
||||||
|
|
|
@ -38,6 +38,7 @@ using OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion;
|
||||||
using OpenSim.Tests.Common;
|
using OpenSim.Tests.Common;
|
||||||
using OpenSim.Tests.Common.Mock;
|
using OpenSim.Tests.Common.Mock;
|
||||||
using OpenSim.Tests.Common.Setup;
|
using OpenSim.Tests.Common.Setup;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace OpenSim.Region.Framework.Scenes.Tests
|
namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
{
|
{
|
||||||
|
@ -55,9 +56,47 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
public void TestSimpleNotNeighboursTeleport()
|
public void TestSimpleNotNeighboursTeleport()
|
||||||
{
|
{
|
||||||
TestHelper.InMethod();
|
TestHelper.InMethod();
|
||||||
|
ThreadRunResults results = new ThreadRunResults();
|
||||||
|
results.Result = false;
|
||||||
|
results.Message = "Test did not run";
|
||||||
|
TestRunning testClass = new TestRunning(results);
|
||||||
|
|
||||||
|
Thread testThread = new Thread(testClass.run);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Seems kind of redundant to start a thread and then join it, however.. We need to protect against
|
||||||
|
// A thread abort exception in the simulator code.
|
||||||
|
testThread.Start();
|
||||||
|
testThread.Join();
|
||||||
|
}
|
||||||
|
catch (ThreadAbortException)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
Assert.That(testClass.results.Result, Is.EqualTo(true), testClass.results.Message);
|
||||||
// Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod());
|
// Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ThreadRunResults
|
||||||
|
{
|
||||||
|
public bool Result = false;
|
||||||
|
public string Message = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestRunning
|
||||||
|
{
|
||||||
|
public ThreadRunResults results;
|
||||||
|
public TestRunning(ThreadRunResults t)
|
||||||
|
{
|
||||||
|
results = t;
|
||||||
|
}
|
||||||
|
public void run(object o)
|
||||||
|
{
|
||||||
|
|
||||||
|
//results.Result = true;
|
||||||
log4net.Config.XmlConfigurator.Configure();
|
log4net.Config.XmlConfigurator.Configure();
|
||||||
|
|
||||||
UUID sceneAId = UUID.Parse("00000000-0000-0000-0000-000000000100");
|
UUID sceneAId = UUID.Parse("00000000-0000-0000-0000-000000000100");
|
||||||
|
@ -80,26 +119,62 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
|
|
||||||
ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface<ICapabilitiesModule>();
|
ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface<ICapabilitiesModule>();
|
||||||
|
|
||||||
|
results.Result = (sceneACapsModule.GetCapsPath(agentId) == client.CapsSeedUrl);
|
||||||
|
|
||||||
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Incorrect caps object path set up in sceneA";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
Assert.That(
|
Assert.That(
|
||||||
sceneACapsModule.GetCapsPath(agentId),
|
sceneACapsModule.GetCapsPath(agentId),
|
||||||
Is.EqualTo(client.CapsSeedUrl),
|
Is.EqualTo(client.CapsSeedUrl),
|
||||||
"Incorrect caps object path set up in sceneA");
|
"Incorrect caps object path set up in sceneA");
|
||||||
|
*/
|
||||||
// FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used.
|
// FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used.
|
||||||
|
|
||||||
|
|
||||||
client.TeleportTargetScene = sceneB;
|
client.TeleportTargetScene = sceneB;
|
||||||
client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40));
|
client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40));
|
||||||
|
|
||||||
Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB");
|
results.Result = (sceneB.GetScenePresence(agentId) != null);
|
||||||
Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA");
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Client does not have an agent in sceneB";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB");
|
||||||
|
|
||||||
|
//Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA");
|
||||||
|
|
||||||
|
results.Result = (sceneA.GetScenePresence(agentId) == null);
|
||||||
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Client still had an agent in sceneA";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface<ICapabilitiesModule>();
|
ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface<ICapabilitiesModule>();
|
||||||
|
|
||||||
|
|
||||||
|
results.Result = ("http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort +
|
||||||
|
"/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/" == client.CapsSeedUrl);
|
||||||
|
if (!results.Result)
|
||||||
|
{
|
||||||
|
results.Message = "Incorrect caps object path set up in sceneB";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Temporary assertion - caps url construction should at least be doable through a method.
|
// Temporary assertion - caps url construction should at least be doable through a method.
|
||||||
|
/*
|
||||||
Assert.That(
|
Assert.That(
|
||||||
"http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/",
|
"http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/",
|
||||||
Is.EqualTo(client.CapsSeedUrl),
|
Is.EqualTo(client.CapsSeedUrl),
|
||||||
"Incorrect caps object path set up in sceneB");
|
"Incorrect caps object path set up in sceneB");
|
||||||
|
*/
|
||||||
// This assertion will currently fail since we don't remove the caps paths when no longer needed
|
// This assertion will currently fail since we don't remove the caps paths when no longer needed
|
||||||
//Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path");
|
//Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path");
|
||||||
|
|
||||||
|
|
|
@ -304,12 +304,10 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f);
|
public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f);
|
||||||
public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f);
|
public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f);
|
||||||
|
|
||||||
private uint heightmapWidth = m_regionWidth + 1;
|
// TODO: unused: private uint heightmapWidth = m_regionWidth + 1;
|
||||||
private uint heightmapHeight = m_regionHeight + 1;
|
// TODO: unused: private uint heightmapHeight = m_regionHeight + 1;
|
||||||
|
// TODO: unused: private uint heightmapWidthSamples;
|
||||||
private uint heightmapWidthSamples;
|
// TODO: unused: private uint heightmapHeightSamples;
|
||||||
|
|
||||||
private uint heightmapHeightSamples;
|
|
||||||
|
|
||||||
private volatile int m_global_contactcount = 0;
|
private volatile int m_global_contactcount = 0;
|
||||||
|
|
||||||
|
|
|
@ -125,9 +125,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if (lease.CurrentState == LeaseState.Initial)
|
if (lease.CurrentState == LeaseState.Initial)
|
||||||
{
|
{
|
||||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
|
lease.InitialLeaseTime = TimeSpan.FromMinutes(0);
|
||||||
lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
// lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||||
lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
// lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||||
}
|
}
|
||||||
return lease;
|
return lease;
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,9 +166,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if (lease.CurrentState == LeaseState.Initial)
|
if (lease.CurrentState == LeaseState.Initial)
|
||||||
{
|
{
|
||||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
|
lease.InitialLeaseTime = TimeSpan.FromMinutes(0);
|
||||||
lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
// lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||||
lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
// lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||||
}
|
}
|
||||||
return lease;
|
return lease;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,16 +42,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
public partial class ScriptBaseClass : MarshalByRefObject, IScript
|
public partial class ScriptBaseClass : MarshalByRefObject, IScript
|
||||||
{
|
{
|
||||||
private Dictionary<string, MethodInfo> inits = new Dictionary<string, MethodInfo>();
|
private Dictionary<string, MethodInfo> inits = new Dictionary<string, MethodInfo>();
|
||||||
private ScriptSponsor m_sponser;
|
// private ScriptSponsor m_sponser;
|
||||||
|
|
||||||
public override Object InitializeLifetimeService()
|
public override Object InitializeLifetimeService()
|
||||||
{
|
{
|
||||||
ILease lease = (ILease)base.InitializeLifetimeService();
|
ILease lease = (ILease)base.InitializeLifetimeService();
|
||||||
if (lease.CurrentState == LeaseState.Initial)
|
if (lease.CurrentState == LeaseState.Initial)
|
||||||
{
|
{
|
||||||
lease.InitialLeaseTime = TimeSpan.FromMinutes(1.0);
|
// Infinite
|
||||||
lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
lease.InitialLeaseTime = TimeSpan.FromMinutes(0);
|
||||||
lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
// lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0);
|
||||||
|
// lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0);
|
||||||
}
|
}
|
||||||
return lease;
|
return lease;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +80,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_sponser = new ScriptSponsor();
|
// m_sponser = new ScriptSponsor();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Executor m_Executor = null;
|
private Executor m_Executor = null;
|
||||||
|
@ -112,7 +113,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ILease lease = (ILease)RemotingServices.GetLifetimeService(data as MarshalByRefObject);
|
ILease lease = (ILease)RemotingServices.GetLifetimeService(data as MarshalByRefObject);
|
||||||
lease.Register(m_sponser);
|
// lease.Register(m_sponser);
|
||||||
|
|
||||||
MethodInfo mi = inits[api];
|
MethodInfo mi = inits[api];
|
||||||
|
|
||||||
|
@ -126,7 +127,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
m_sponser.Close();
|
// m_sponser.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<string, object> GetVars()
|
public Dictionary<string, object> GetVars()
|
||||||
|
|
|
@ -53,7 +53,7 @@ using OpenSim.Region.ScriptEngine.Interfaces;
|
||||||
|
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
{
|
{
|
||||||
public class ScriptInstance : MarshalByRefObject, IScriptInstance, ISponsor
|
public class ScriptInstance : MarshalByRefObject, IScriptInstance
|
||||||
{
|
{
|
||||||
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
@ -261,7 +261,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
"SecondLife.Script");
|
"SecondLife.Script");
|
||||||
|
|
||||||
ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as ScriptBaseClass);
|
ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as ScriptBaseClass);
|
||||||
lease.Register(this);
|
// lease.Register(this);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
@ -1006,10 +1006,5 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TimeSpan Renewal(ILease lease)
|
|
||||||
{
|
|
||||||
return lease.InitialLeaseTime;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine.Tests
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Scene presence tests
|
/// Scene presence tests
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// Commented out XEngineTests that don't do anything
|
||||||
|
/*
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class XEngineTest
|
public class XEngineTest
|
||||||
{
|
{
|
||||||
|
@ -65,4 +67,5 @@ namespace OpenSim.Region.ScriptEngine.XEngine.Tests
|
||||||
xengine.RegionLoaded(scene);
|
xengine.RegionLoaded(scene);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -729,8 +729,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
item.Name, startParam, postOnRez,
|
item.Name, startParam, postOnRez,
|
||||||
stateSource, m_MaxScriptQueue);
|
stateSource, m_MaxScriptQueue);
|
||||||
|
|
||||||
m_log.DebugFormat("[XEngine] Loaded script {0}.{1}",
|
m_log.DebugFormat("[XEngine] Loaded script {0}.{1}, script UUID {2}, prim UUID {3} @ {4}",
|
||||||
part.ParentGroup.RootPart.Name, item.Name);
|
part.ParentGroup.RootPart.Name, item.Name, assetID, part.UUID, part.ParentGroup.RootPart.AbsolutePosition.ToString());
|
||||||
|
|
||||||
instance.AppDomain = appDomain;
|
instance.AppDomain = appDomain;
|
||||||
instance.LineMap = linemap;
|
instance.LineMap = linemap;
|
||||||
|
|
|
@ -34,25 +34,53 @@ namespace OpenSim.Services.Interfaces
|
||||||
|
|
||||||
public interface IAssetService
|
public interface IAssetService
|
||||||
{
|
{
|
||||||
// Three different ways to retrieve an asset
|
/// <summary>
|
||||||
//
|
/// Get an asset synchronously.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
AssetBase Get(string id);
|
AssetBase Get(string id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get an asset's metadata
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
AssetMetadata GetMetadata(string id);
|
AssetMetadata GetMetadata(string id);
|
||||||
|
|
||||||
byte[] GetData(string id);
|
byte[] GetData(string id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get an asset asynchronously
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">The asset id</param>
|
||||||
|
/// <param name="sender">Represents the requester. Passed back via the handler</param>
|
||||||
|
/// <param name="handler">The handler to call back once the asset has been retrieved</param>
|
||||||
|
/// <returns>True if the id was parseable, false otherwise</returns>
|
||||||
bool Get(string id, Object sender, AssetRetrieved handler);
|
bool Get(string id, Object sender, AssetRetrieved handler);
|
||||||
|
|
||||||
// Creates a new asset
|
/// <summary>
|
||||||
// Returns a random ID if none is passed into it
|
/// Creates a new asset
|
||||||
//
|
/// </summary>
|
||||||
|
/// Returns a random ID if none is passed into it
|
||||||
|
/// <param name="asset"></param>
|
||||||
|
/// <returns></returns>
|
||||||
string Store(AssetBase asset);
|
string Store(AssetBase asset);
|
||||||
|
|
||||||
// Attachments and bare scripts need this!!
|
/// <summary>
|
||||||
//
|
/// Update an asset's content
|
||||||
|
/// </summary>
|
||||||
|
/// Attachments and bare scripts need this!!
|
||||||
|
/// <param name="id"> </param>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <returns></returns>
|
||||||
bool UpdateContent(string id, byte[] data);
|
bool UpdateContent(string id, byte[] data);
|
||||||
|
|
||||||
// Kill an asset
|
/// <summary>
|
||||||
//
|
/// Delete an asset
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
bool Delete(string id);
|
bool Delete(string id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,13 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
|
|
||||||
public AssetBase Get(string id)
|
public AssetBase Get(string id)
|
||||||
{
|
{
|
||||||
return Assets[ id ];
|
AssetBase asset;
|
||||||
|
if (Assets.ContainsKey(id))
|
||||||
|
asset = Assets[id];
|
||||||
|
else
|
||||||
|
asset = null;
|
||||||
|
|
||||||
|
return asset;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AssetMetadata GetMetadata(string id)
|
public AssetMetadata GetMetadata(string id)
|
||||||
|
@ -60,7 +66,9 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
|
|
||||||
public bool Get(string id, object sender, AssetRetrieved handler)
|
public bool Get(string id, object sender, AssetRetrieved handler)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
handler(id, sender, Get(id));
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Store(AssetBase asset)
|
public string Store(AssetBase asset)
|
||||||
|
|
|
@ -1,4 +1,31 @@
|
||||||
using System;
|
/*
|
||||||
|
* 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.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
|
|
|
@ -25,7 +25,7 @@ See configuring OpenSim
|
||||||
== Installation on Linux ==
|
== Installation on Linux ==
|
||||||
|
|
||||||
Prereqs:
|
Prereqs:
|
||||||
* Mono >= 2.4 (>= 2.4.2 is better)
|
* Mono >= 2.0.1 (>= 2.4.2 is better)
|
||||||
* Nant >= 0.86beta
|
* Nant >= 0.86beta
|
||||||
* sqlite3 or mysql 5.x (you'll need a back end database)
|
* sqlite3 or mysql 5.x (you'll need a back end database)
|
||||||
|
|
||||||
|
|
226
prebuild.xml
226
prebuild.xml
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
<!-- Core OpenSim Projects -->
|
<!-- Core OpenSim Projects -->
|
||||||
<!--
|
<!--
|
||||||
<Project name="OpenSim.Model" path="OpenSim/Model" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Model" path="OpenSim/Model" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Servers.HttpServer" path="OpenSim/Framework/Servers/HttpServer" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers.HttpServer" path="OpenSim/Framework/Servers/HttpServer" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -91,7 +91,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Console" path="OpenSim/Framework/Console" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Console" path="OpenSim/Framework/Console" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework" path="OpenSim/Framework" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework" path="OpenSim/Framework" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../bin/</OutputPath>
|
<OutputPath>../../bin/</OutputPath>
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Serialization" path="OpenSim/Framework/Serialization" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Serialization" path="OpenSim/Framework/Serialization" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -170,7 +170,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Statistics" path="OpenSim/Framework/Statistics" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Statistics" path="OpenSim/Framework/Statistics" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -194,7 +194,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data" path="OpenSim/Data" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data" path="OpenSim/Data" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../bin/</OutputPath>
|
<OutputPath>../../bin/</OutputPath>
|
||||||
|
@ -223,7 +223,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Configuration.XML" path="OpenSim/Framework/Configuration/XML" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Configuration.XML" path="OpenSim/Framework/Configuration/XML" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -248,7 +248,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Configuration.HTTP" path="OpenSim/Framework/Configuration/HTTP" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Configuration.HTTP" path="OpenSim/Framework/Configuration/HTTP" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -275,7 +275,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.AssetLoader.Filesystem" path="OpenSim/Framework/AssetLoader/Filesystem" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.AssetLoader.Filesystem" path="OpenSim/Framework/AssetLoader/Filesystem" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -300,7 +300,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.RegionLoader.Web" path="OpenSim/Framework/RegionLoader/Web" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.RegionLoader.Web" path="OpenSim/Framework/RegionLoader/Web" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -326,7 +326,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.RegionLoader.Filesystem" path="OpenSim/Framework/RegionLoader/Filesystem" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.RegionLoader.Filesystem" path="OpenSim/Framework/RegionLoader/Filesystem" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -351,7 +351,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Servers" path="OpenSim/Framework/Servers" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers" path="OpenSim/Framework/Servers" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -384,7 +384,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Physics.Manager" path="OpenSim/Region/Physics/Manager" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.Manager" path="OpenSim/Region/Physics/Manager" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -412,7 +412,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<!-- Physics Plug-ins -->
|
<!-- Physics Plug-ins -->
|
||||||
<Project name="OpenSim.Region.Physics.BasicPhysicsPlugin" path="OpenSim/Region/Physics/BasicPhysicsPlugin" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.BasicPhysicsPlugin" path="OpenSim/Region/Physics/BasicPhysicsPlugin" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||||
|
@ -435,7 +435,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Physics.POSPlugin" path="OpenSim/Region/Physics/POSPlugin" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.POSPlugin" path="OpenSim/Region/Physics/POSPlugin" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||||
|
@ -458,7 +458,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Physics.PhysXPlugin" path="OpenSim/Region/Physics/PhysXPlugin" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.PhysXPlugin" path="OpenSim/Region/Physics/PhysXPlugin" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||||
|
@ -483,7 +483,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Physics.OdePlugin" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.OdePlugin" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||||
|
@ -512,7 +512,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Physics.BulletXPlugin" path="OpenSim/Region/Physics/BulletXPlugin" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.BulletXPlugin" path="OpenSim/Region/Physics/BulletXPlugin" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||||
|
@ -542,7 +542,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Physics.Meshing" path="OpenSim/Region/Physics/Meshing" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.Meshing" path="OpenSim/Region/Physics/Meshing" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||||
|
@ -570,7 +570,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Physics.BulletDotNETPlugin" path="OpenSim/Region/Physics/BulletDotNETPlugin" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.BulletDotNETPlugin" path="OpenSim/Region/Physics/BulletDotNETPlugin" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/Physics/</OutputPath>
|
<OutputPath>../../../../bin/Physics/</OutputPath>
|
||||||
|
@ -598,7 +598,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Services.Interfaces" path="OpenSim/Services/Interfaces" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.Interfaces" path="OpenSim/Services/Interfaces" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -626,7 +626,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Capabilities" path="OpenSim/Framework/Capabilities" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Capabilities" path="OpenSim/Framework/Capabilities" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -660,7 +660,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Communications" path="OpenSim/Framework/Communications" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Communications" path="OpenSim/Framework/Communications" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -702,7 +702,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Framework" path="OpenSim/Region/Framework" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Framework" path="OpenSim/Region/Framework" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -752,7 +752,7 @@
|
||||||
|
|
||||||
<!-- OpenSim.Framework.Communications -->
|
<!-- OpenSim.Framework.Communications -->
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Communications.Local" path="OpenSim/Region/Communications/Local" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Communications.Local" path="OpenSim/Region/Communications/Local" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -783,7 +783,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Communications.OGS1" path="OpenSim/Region/Communications/OGS1" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Communications.OGS1" path="OpenSim/Region/Communications/OGS1" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -820,7 +820,7 @@
|
||||||
|
|
||||||
<!-- OGS projects -->
|
<!-- OGS projects -->
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.Communications.OGS1" path="OpenSim/Grid/Communications/OGS1" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.Communications.OGS1" path="OpenSim/Grid/Communications/OGS1" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -847,7 +847,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.Framework" path="OpenSim/Grid/Framework" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.Framework" path="OpenSim/Grid/Framework" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -878,7 +878,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.GridServer" path="OpenSim/Grid/GridServer" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.GridServer" path="OpenSim/Grid/GridServer" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -913,7 +913,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.GridServer.Modules" path="OpenSim/Grid/GridServer.Modules" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.GridServer.Modules" path="OpenSim/Grid/GridServer.Modules" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -950,7 +950,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.AssetServer" path="OpenSim/Grid/AssetServer" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetServer" path="OpenSim/Grid/AssetServer" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -982,7 +982,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.AssetInventoryServer" path="OpenSim/Grid/AssetInventoryServer" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer" path="OpenSim/Grid/AssetInventoryServer" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1012,7 +1012,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.AssetInventoryServer.Plugins" path="OpenSim/Grid/AssetInventoryServer/Plugins" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer.Plugins" path="OpenSim/Grid/AssetInventoryServer/Plugins" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -1043,7 +1043,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.AssetInventoryServer.Plugins.Simple" path="OpenSim/Grid/AssetInventoryServer/Plugins/Simple" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer.Plugins.Simple" path="OpenSim/Grid/AssetInventoryServer/Plugins/Simple" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -1072,7 +1072,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim" path="OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.AssetInventoryServer.Plugins.OpenSim" path="OpenSim/Grid/AssetInventoryServer/Plugins/OpenSim" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -1104,7 +1104,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.UserServer.Modules" path="OpenSim/Grid/UserServer.Modules" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.UserServer.Modules" path="OpenSim/Grid/UserServer.Modules" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1143,7 +1143,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.UserServer" path="OpenSim/Grid/UserServer" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.UserServer" path="OpenSim/Grid/UserServer" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1181,7 +1181,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.InventoryServer" path="OpenSim/Grid/InventoryServer" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.InventoryServer" path="OpenSim/Grid/InventoryServer" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1213,7 +1213,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.MessagingServer.Modules" path="OpenSim/Grid/MessagingServer.Modules" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.MessagingServer.Modules" path="OpenSim/Grid/MessagingServer.Modules" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1247,7 +1247,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Grid.MessagingServer" path="OpenSim/Grid/MessagingServer" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.Grid.MessagingServer" path="OpenSim/Grid/MessagingServer" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1281,7 +1281,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Services.Base" path="OpenSim/Services/Base" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.Base" path="OpenSim/Services/Base" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1308,7 +1308,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Services.UserService" path="OpenSim/Services/UserService" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.UserService" path="OpenSim/Services/UserService" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1338,7 +1338,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Services.Connectors" path="OpenSim/Services/Connectors" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.Connectors" path="OpenSim/Services/Connectors" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1371,7 +1371,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Services.AssetService" path="OpenSim/Services/AssetService" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.AssetService" path="OpenSim/Services/AssetService" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1402,7 +1402,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Services.FreeswitchService" path="OpenSim/Services/FreeswitchService" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.FreeswitchService" path="OpenSim/Services/FreeswitchService" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1433,7 +1433,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Services.AuthenticationService" path="OpenSim/Services/AuthenticationService" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.AuthenticationService" path="OpenSim/Services/AuthenticationService" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1464,7 +1464,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Services.InventoryService" path="OpenSim/Services/InventoryService" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Services.InventoryService" path="OpenSim/Services/InventoryService" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1496,7 +1496,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Server.Base" path="OpenSim/Server/Base" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Server.Base" path="OpenSim/Server/Base" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1524,7 +1524,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Server.Handlers" path="OpenSim/Server/Handlers" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Server.Handlers" path="OpenSim/Server/Handlers" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1560,7 +1560,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Server" path="OpenSim/Server" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.Server" path="OpenSim/Server" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../bin/</OutputPath>
|
<OutputPath>../../bin/</OutputPath>
|
||||||
|
@ -1593,7 +1593,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.CoreModules" path="OpenSim/Region/CoreModules" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.CoreModules" path="OpenSim/Region/CoreModules" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1654,7 +1654,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.CoreModules.World.Terrain.DefaultEffects" path="OpenSim/Region/CoreModules/World/Terrain/DefaultEffects" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.CoreModules.World.Terrain.DefaultEffects" path="OpenSim/Region/CoreModules/World/Terrain/DefaultEffects" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../../bin/Terrain/</OutputPath>
|
<OutputPath>../../../../../../bin/Terrain/</OutputPath>
|
||||||
|
@ -1677,7 +1677,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Region.OptionalModules" path="OpenSim/Region/OptionalModules" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.OptionalModules" path="OpenSim/Region/OptionalModules" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1736,7 +1736,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Communications.Hypergrid" path="OpenSim/Region/Communications/Hypergrid" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Communications.Hypergrid" path="OpenSim/Region/Communications/Hypergrid" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -1773,7 +1773,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ClientStack" path="OpenSim/Region/ClientStack" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack" path="OpenSim/Region/ClientStack" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1810,7 +1810,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<!-- ClientStack Plugins -->
|
<!-- ClientStack Plugins -->
|
||||||
<Project name="OpenSim.Region.ClientStack.LindenUDP" path="OpenSim/Region/ClientStack/LindenUDP" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack.LindenUDP" path="OpenSim/Region/ClientStack/LindenUDP" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -1851,7 +1851,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<!-- Datastore Plugins -->
|
<!-- Datastore Plugins -->
|
||||||
<Project name="OpenSim.Data.Null" path="OpenSim/Data/Null" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.Null" path="OpenSim/Data/Null" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1878,7 +1878,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<!-- OpenSim app -->
|
<!-- OpenSim app -->
|
||||||
<Project name="OpenSim" path="OpenSim/Region/Application" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim" path="OpenSim/Region/Application" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1920,7 +1920,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ApplicationPlugins.LoadRegions" path="OpenSim/ApplicationPlugins/LoadRegions" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.LoadRegions" path="OpenSim/ApplicationPlugins/LoadRegions" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1955,7 +1955,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ApplicationPlugins.RegionModulesController" path="OpenSim/ApplicationPlugins/RegionModulesController" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.RegionModulesController" path="OpenSim/ApplicationPlugins/RegionModulesController" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -1985,7 +1985,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ApplicationPlugins.CreateCommsManager" path="OpenSim/ApplicationPlugins/CreateCommsManager" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.CreateCommsManager" path="OpenSim/ApplicationPlugins/CreateCommsManager" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2028,7 +2028,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ApplicationPlugins.RemoteController" path="OpenSim/ApplicationPlugins/RemoteController" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.RemoteController" path="OpenSim/ApplicationPlugins/RemoteController" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2068,7 +2068,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<!-- REST plugins -->
|
<!-- REST plugins -->
|
||||||
<Project name="OpenSim.ApplicationPlugins.Rest"
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.Rest"
|
||||||
path="OpenSim/ApplicationPlugins/Rest" type="Library">
|
path="OpenSim/ApplicationPlugins/Rest" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
|
@ -2104,7 +2104,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ApplicationPlugins.Rest.Regions"
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.Rest.Regions"
|
||||||
path="OpenSim/ApplicationPlugins/Rest/Regions" type="Library">
|
path="OpenSim/ApplicationPlugins/Rest/Regions" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
|
@ -2142,7 +2142,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ApplicationPlugins.Rest.Inventory"
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.Rest.Inventory"
|
||||||
path="OpenSim/ApplicationPlugins/Rest/Inventory" type="Library">
|
path="OpenSim/ApplicationPlugins/Rest/Inventory" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
|
@ -2187,7 +2187,7 @@
|
||||||
|
|
||||||
<!-- Scene Server API Example Apps -->
|
<!-- Scene Server API Example Apps -->
|
||||||
|
|
||||||
<Project name="OpenSim.Region.DataSnapshot" path="OpenSim/Region/DataSnapshot" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.DataSnapshot" path="OpenSim/Region/DataSnapshot" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2220,7 +2220,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Examples.SimpleModule" path="OpenSim/Region/Examples/SimpleModule" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Examples.SimpleModule" path="OpenSim/Region/Examples/SimpleModule" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>bin/</OutputPath>
|
<OutputPath>bin/</OutputPath>
|
||||||
|
@ -2250,7 +2250,7 @@
|
||||||
<!-- Client Stack Modules -->
|
<!-- Client Stack Modules -->
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Client.MXP" path="OpenSim/Client/MXP" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Client.MXP" path="OpenSim/Client/MXP" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2279,7 +2279,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Client.VWoHTTP" path="OpenSim/Client/VWoHTTP" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Client.VWoHTTP" path="OpenSim/Client/VWoHTTP" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2310,7 +2310,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Client.Linden" path="OpenSim/Client/Linden" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Client.Linden" path="OpenSim/Client/Linden" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2350,7 +2350,7 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- Data Base Modules -->
|
<!-- Data Base Modules -->
|
||||||
<Project name="OpenSim.Data.MySQL" path="OpenSim/Data/MySQL" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.MySQL" path="OpenSim/Data/MySQL" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2386,7 +2386,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data.MSSQL" path="OpenSim/Data/MSSQL" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.MSSQL" path="OpenSim/Data/MSSQL" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2419,7 +2419,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data.SQLite" path="OpenSim/Data/SQLite" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.SQLite" path="OpenSim/Data/SQLite" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2456,7 +2456,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data.NHibernate" path="OpenSim/Data/NHibernate" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.NHibernate" path="OpenSim/Data/NHibernate" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2496,7 +2496,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="SmartThreadPool" path="ThirdParty/SmartThreadPool" type="Library">
|
<Project frameworkVersion="v3_5" name="SmartThreadPool" path="ThirdParty/SmartThreadPool" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../bin/</OutputPath>
|
<OutputPath>../../bin/</OutputPath>
|
||||||
|
@ -2518,7 +2518,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.Shared" path="OpenSim/Region/ScriptEngine/Shared" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared" path="OpenSim/Region/ScriptEngine/Shared" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -2557,7 +2557,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.Shared.Api.Runtime" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.Api.Runtime" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../../bin/</OutputPath>
|
||||||
|
@ -2592,7 +2592,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.Shared.YieldProlog" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.YieldProlog" path="OpenSim/Region/ScriptEngine/Shared/Api/Runtime/YieldProlog/" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../../../bin/</OutputPath>
|
||||||
|
@ -2626,7 +2626,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.Shared.Api" path="OpenSim/Region/ScriptEngine/Shared/Api/Implementation" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.Api" path="OpenSim/Region/ScriptEngine/Shared/Api/Implementation" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../../bin/</OutputPath>
|
||||||
|
@ -2665,7 +2665,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.Shared.CodeTools" path="OpenSim/Region/ScriptEngine/Shared/CodeTools" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.CodeTools" path="OpenSim/Region/ScriptEngine/Shared/CodeTools" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -2698,7 +2698,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.Shared.Instance" path="OpenSim/Region/ScriptEngine/Shared/Instance" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Shared.Instance" path="OpenSim/Region/ScriptEngine/Shared/Instance" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -2737,7 +2737,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.XEngine" path="OpenSim/Region/ScriptEngine/XEngine" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.XEngine" path="OpenSim/Region/ScriptEngine/XEngine" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -2780,7 +2780,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.DotNetEngine" path="OpenSim/Region/ScriptEngine/DotNetEngine" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.DotNetEngine" path="OpenSim/Region/ScriptEngine/DotNetEngine" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -2820,7 +2820,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Shared.Script" path="OpenSim/ScriptEngine/Shared.Script" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Shared.Script" path="OpenSim/ScriptEngine/Shared.Script" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2842,7 +2842,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Shared" path="OpenSim/ScriptEngine/Shared" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Shared" path="OpenSim/ScriptEngine/Shared" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2880,7 +2880,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ApplicationPlugins.ScriptEngine" path="OpenSim/ApplicationPlugins/ScriptEngine" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ApplicationPlugins.ScriptEngine" path="OpenSim/ApplicationPlugins/ScriptEngine" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -2921,7 +2921,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_LSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_LSL" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_LSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_LSL" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -2960,7 +2960,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_OSSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_OSSL" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Commands_OSSL" path="OpenSim/ScriptEngine/Components/DotNetEngine/Commands_OSSL" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -2999,7 +2999,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Compilers" path="OpenSim/ScriptEngine/Components/DotNetEngine/Compilers" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Compilers" path="OpenSim/ScriptEngine/Components/DotNetEngine/Compilers" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -3041,7 +3041,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Events" path="OpenSim/ScriptEngine/Components/DotNetEngine/Events" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Events" path="OpenSim/ScriptEngine/Components/DotNetEngine/Events" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -3081,7 +3081,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Components.DotNetEngine.Scheduler" path="OpenSim/ScriptEngine/Components/DotNetEngine/Scheduler" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Components.DotNetEngine.Scheduler" path="OpenSim/ScriptEngine/Components/DotNetEngine/Scheduler" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -3121,7 +3121,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.ScriptEngine.Engines.DotNetEngine" path="OpenSim/ScriptEngine/Engines/DotNetEngine" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.ScriptEngine.Engines.DotNetEngine" path="OpenSim/ScriptEngine/Engines/DotNetEngine" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3166,7 +3166,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.UserStatistics" path="OpenSim/Region/UserStatistics" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.UserStatistics" path="OpenSim/Region/UserStatistics" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3217,7 +3217,7 @@
|
||||||
|
|
||||||
<!-- Tools -->
|
<!-- Tools -->
|
||||||
|
|
||||||
<Project name="pCampBot" path="OpenSim/Tools/pCampBot" type="Exe">
|
<Project frameworkVersion="v3_5" name="pCampBot" path="OpenSim/Tools/pCampBot" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3244,7 +3244,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<!-- Test Suite -->
|
<!-- Test Suite -->
|
||||||
<Project name="OpenSim.TestSuite" path="OpenSim/TestSuite" type="Exe">
|
<Project frameworkVersion="v3_5" name="OpenSim.TestSuite" path="OpenSim/TestSuite" type="Exe">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../bin/</OutputPath>
|
<OutputPath>../../bin/</OutputPath>
|
||||||
|
@ -3271,7 +3271,7 @@
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<!-- Test assemblies -->
|
<!-- Test assemblies -->
|
||||||
<Project name="OpenSim.Tests.Common" path="OpenSim/Tests/Common" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Tests.Common" path="OpenSim/Tests/Common" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3311,7 +3311,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data.Tests" path="OpenSim/Data/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.Tests" path="OpenSim/Data/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3326,6 +3326,7 @@
|
||||||
<ReferencePath>../../../bin/</ReferencePath>
|
<ReferencePath>../../../bin/</ReferencePath>
|
||||||
<Reference name="System"/>
|
<Reference name="System"/>
|
||||||
<Reference name="System.Xml"/>
|
<Reference name="System.Xml"/>
|
||||||
|
<Reference name="System.Core"/>
|
||||||
<Reference name="System.Drawing"/>
|
<Reference name="System.Drawing"/>
|
||||||
<Reference name="System.Data"/>
|
<Reference name="System.Data"/>
|
||||||
<Reference name="OpenMetaverse.dll"/>
|
<Reference name="OpenMetaverse.dll"/>
|
||||||
|
@ -3342,7 +3343,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data.MySQL.Tests" path="OpenSim/Data/MySQL/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.MySQL.Tests" path="OpenSim/Data/MySQL/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3378,7 +3379,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data.NHibernate.Tests" path="OpenSim/Data/NHibernate/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.NHibernate.Tests" path="OpenSim/Data/NHibernate/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3417,7 +3418,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Data.SQLite.Tests" path="OpenSim/Data/SQLite/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Data.SQLite.Tests" path="OpenSim/Data/SQLite/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3454,7 +3455,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Tests" path="OpenSim/Framework/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Tests" path="OpenSim/Framework/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3472,6 +3473,7 @@
|
||||||
<Reference name="System.Data"/>
|
<Reference name="System.Data"/>
|
||||||
<Reference name="OpenMetaverse.dll"/>
|
<Reference name="OpenMetaverse.dll"/>
|
||||||
<Reference name="OpenMetaverseTypes.dll"/>
|
<Reference name="OpenMetaverseTypes.dll"/>
|
||||||
|
<Reference name="OpenMetaverse.StructuredData.dll"/>
|
||||||
<Reference name="XMLRPC.dll"/>
|
<Reference name="XMLRPC.dll"/>
|
||||||
<Reference name="OpenSim.Framework.Console"/>
|
<Reference name="OpenSim.Framework.Console"/>
|
||||||
<Reference name="OpenSim.Framework"/>
|
<Reference name="OpenSim.Framework"/>
|
||||||
|
@ -3483,7 +3485,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Servers.Tests" path="OpenSim/Framework/Servers/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers.Tests" path="OpenSim/Framework/Servers/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3513,7 +3515,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Servers.HttpServer.Tests" path="OpenSim/Framework/Servers/HttpServer/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Servers.HttpServer.Tests" path="OpenSim/Framework/Servers/HttpServer/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -3542,7 +3544,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Communications.Tests" path="OpenSim/Framework/Communications/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Framework.Communications.Tests" path="OpenSim/Framework/Communications/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3577,7 +3579,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.CoreModules.Tests" path="OpenSim/Region/CoreModules" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.CoreModules.Tests" path="OpenSim/Region/CoreModules" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3638,7 +3640,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.Framework.Tests" path="OpenSim/Region/Framework" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Framework.Tests" path="OpenSim/Region/Framework" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3694,7 +3696,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ClientStack.LindenUDP.Tests" path="OpenSim/Region/ClientStack/LindenUDP/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ClientStack.LindenUDP.Tests" path="OpenSim/Region/ClientStack/LindenUDP/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../../bin/</OutputPath>
|
<OutputPath>../../../../../bin/</OutputPath>
|
||||||
|
@ -3727,7 +3729,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Region.ScriptEngine.Tests" path="OpenSim/Region/ScriptEngine" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.ScriptEngine.Tests" path="OpenSim/Region/ScriptEngine" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../bin/</OutputPath>
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
@ -3773,7 +3775,7 @@
|
||||||
TODO: this is kind of lame, we basically build a duplicate
|
TODO: this is kind of lame, we basically build a duplicate
|
||||||
assembly but with tests added in, just because we can't resolve cross-bin-dir-refs.
|
assembly but with tests added in, just because we can't resolve cross-bin-dir-refs.
|
||||||
-->
|
-->
|
||||||
<Project name="OpenSim.Region.Physics.OdePlugin.Tests" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Region.Physics.OdePlugin.Tests" path="OpenSim/Region/Physics/OdePlugin" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3801,7 +3803,7 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Server.Handlers.Tests" path="OpenSim/Server/Handlers/Tests" type="Library">
|
<Project frameworkVersion="v3_5" name="OpenSim.Server.Handlers.Tests" path="OpenSim/Server/Handlers/Tests" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<OutputPath>../../../../bin/</OutputPath>
|
<OutputPath>../../../../bin/</OutputPath>
|
||||||
|
@ -3860,7 +3862,7 @@
|
||||||
</Options>
|
</Options>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
|
|
||||||
<Project name="Prebuild" path="src/" language="C#" assemblyName="Prebuild" icon="App.ico" type="Exe" rootNamespace="Prebuild" startupObject="Prebuild.Prebuild">
|
<Project frameworkVersion="v3_5" name="Prebuild" path="src/" language="C#" assemblyName="Prebuild" icon="App.ico" type="Exe" rootNamespace="Prebuild" startupObject="Prebuild.Prebuild">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
<CompilerDefines>DEBUG;TRACE</CompilerDefines>
|
<CompilerDefines>DEBUG;TRACE</CompilerDefines>
|
||||||
|
|
Loading…
Reference in New Issue