Merge https://github.com/opensim/opensim into mantis5110
Conflicts: OpenSim/Region/Framework/Scenes/Scene.csviewer-2-initial-appearance
commit
562147475c
|
@ -351,7 +351,6 @@ namespace OpenSim.Framework
|
||||||
m_wearables[wearableId].Add(wearable[i].ItemID, wearable[i].AssetID);
|
m_wearables[wearableId].Add(wearable[i].ItemID, wearable[i].AssetID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// DEBUG ON
|
// DEBUG ON
|
||||||
public override String ToString()
|
public override String ToString()
|
||||||
{
|
{
|
||||||
|
|
|
@ -651,8 +651,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
// Make sure that we see any exception caused by the asynchronous operation.
|
// Make sure that we see any exception caused by the asynchronous operation.
|
||||||
m_log.Error(
|
m_log.ErrorFormat(
|
||||||
string.Format("[LLCLIENTVIEW]: Caught exception while processing {0}", packetObject.Pack), e);
|
"[LLCLIENTVIEW]: Caught exception while processing {0} for {1}, {2} {3}",
|
||||||
|
packetObject.Pack, Name, e.Message, e.StackTrace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,13 +178,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
UUID itemID = UUID.Zero;
|
UUID itemID = UUID.Zero;
|
||||||
if (sp != null)
|
if (sp != null)
|
||||||
{
|
{
|
||||||
foreach (SceneObjectGroup grp in sp.GetAttachments(AttachmentPt))
|
foreach (SceneObjectGroup grp in sp.Attachments)
|
||||||
|
{
|
||||||
|
if (grp.GetAttachmentPoint() == (byte)AttachmentPt)
|
||||||
{
|
{
|
||||||
itemID = grp.GetFromItemID();
|
itemID = grp.GetFromItemID();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (itemID != UUID.Zero)
|
if (itemID != UUID.Zero)
|
||||||
DetachSingleAttachmentToInv(itemID, remoteClient);
|
DetachSingleAttachmentToInv(itemID, remoteClient);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (group.GetFromItemID() == UUID.Zero)
|
if (group.GetFromItemID() == UUID.Zero)
|
||||||
{
|
{
|
||||||
|
|
|
@ -139,7 +139,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
|
||||||
return cached;
|
return cached;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Set appearance data (textureentry and slider settings) received from the client
|
/// Set appearance data (textureentry and slider settings) received from the client
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -435,6 +435,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
// Now let's make it officially a child agent
|
// Now let's make it officially a child agent
|
||||||
sp.MakeChildAgent();
|
sp.MakeChildAgent();
|
||||||
|
|
||||||
|
sp.Scene.CleanDroppedAttachments();
|
||||||
|
|
||||||
// Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
|
// Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
|
||||||
|
|
||||||
if (NeedsClosing(oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
|
if (NeedsClosing(oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
|
||||||
|
|
|
@ -1098,12 +1098,14 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
if (m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide)
|
if (m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide)
|
||||||
flags |= RegionFlags.AllowParcelChanges;
|
flags |= RegionFlags.AllowParcelChanges;
|
||||||
if (m_scene.RegionInfo.RegionSettings.BlockShowInSearch)
|
if (m_scene.RegionInfo.RegionSettings.BlockShowInSearch)
|
||||||
flags |= (RegionFlags)(1 << 29);
|
flags |= RegionFlags.BlockParcelSearch;
|
||||||
|
|
||||||
if (m_scene.RegionInfo.RegionSettings.FixedSun)
|
if (m_scene.RegionInfo.RegionSettings.FixedSun)
|
||||||
flags |= RegionFlags.SunFixed;
|
flags |= RegionFlags.SunFixed;
|
||||||
if (m_scene.RegionInfo.RegionSettings.Sandbox)
|
if (m_scene.RegionInfo.RegionSettings.Sandbox)
|
||||||
flags |= RegionFlags.Sandbox;
|
flags |= RegionFlags.Sandbox;
|
||||||
|
if (m_scene.RegionInfo.EstateSettings.AllowVoice)
|
||||||
|
flags |= RegionFlags.AllowVoice;
|
||||||
|
|
||||||
// Fudge these to always on, so the menu options activate
|
// Fudge these to always on, so the menu options activate
|
||||||
//
|
//
|
||||||
|
|
|
@ -88,7 +88,8 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
// caches ExtendedLandData
|
// caches ExtendedLandData
|
||||||
private Cache parcelInfoCache;
|
private Cache parcelInfoCache;
|
||||||
private Vector3? forcedPosition = null;
|
private Dictionary<UUID, Vector3> forcedPosition =
|
||||||
|
new Dictionary<UUID, Vector3>();
|
||||||
|
|
||||||
#region INonSharedRegionModule Members
|
#region INonSharedRegionModule Members
|
||||||
|
|
||||||
|
@ -177,7 +178,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
void ClientOnPreAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData)
|
void ClientOnPreAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData)
|
||||||
{
|
{
|
||||||
//If we are forcing a position for them to go
|
//If we are forcing a position for them to go
|
||||||
if (forcedPosition != null)
|
if (forcedPosition.ContainsKey(remoteClient.AgentId))
|
||||||
{
|
{
|
||||||
ScenePresence clientAvatar = m_scene.GetScenePresence(remoteClient.AgentId);
|
ScenePresence clientAvatar = m_scene.GetScenePresence(remoteClient.AgentId);
|
||||||
|
|
||||||
|
@ -187,23 +188,23 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
|
|
||||||
//Make sure we stop if they get about to the right place to prevent yoyo and prevents getting stuck on banlines
|
//Make sure we stop if they get about to the right place to prevent yoyo and prevents getting stuck on banlines
|
||||||
if (Vector3.Distance(clientAvatar.AbsolutePosition, forcedPosition.Value) < .2)
|
if (Vector3.Distance(clientAvatar.AbsolutePosition, forcedPosition[remoteClient.AgentId]) < .2)
|
||||||
{
|
{
|
||||||
Debug.WriteLine(string.Format("Stopping force position because {0} is close enough to position {1}", forcedPosition.Value, clientAvatar.AbsolutePosition));
|
Debug.WriteLine(string.Format("Stopping force position because {0} is close enough to position {1}", forcedPosition[remoteClient.AgentId], clientAvatar.AbsolutePosition));
|
||||||
forcedPosition = null;
|
forcedPosition.Remove(remoteClient.AgentId);
|
||||||
}
|
}
|
||||||
//if we are far away, teleport
|
//if we are far away, teleport
|
||||||
else if (Vector3.Distance(clientAvatar.AbsolutePosition, forcedPosition.Value) > 3)
|
else if (Vector3.Distance(clientAvatar.AbsolutePosition, forcedPosition[remoteClient.AgentId]) > 3)
|
||||||
{
|
{
|
||||||
Debug.WriteLine(string.Format("Teleporting out because {0} is too far from avatar position {1}", forcedPosition.Value, clientAvatar.AbsolutePosition));
|
Debug.WriteLine(string.Format("Teleporting out because {0} is too far from avatar position {1}", forcedPosition[remoteClient.AgentId], clientAvatar.AbsolutePosition));
|
||||||
clientAvatar.Teleport(forcedPosition.Value);
|
clientAvatar.Teleport(forcedPosition[remoteClient.AgentId]);
|
||||||
forcedPosition = null;
|
forcedPosition.Remove(remoteClient.AgentId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Forces them toward the forced position we want if they aren't there yet
|
//Forces them toward the forced position we want if they aren't there yet
|
||||||
agentData.UseClientAgentPosition = true;
|
agentData.UseClientAgentPosition = true;
|
||||||
agentData.ClientAgentPosition = forcedPosition.Value;
|
agentData.ClientAgentPosition = forcedPosition[remoteClient.AgentId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -326,7 +327,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
if (m_scene.Permissions.IsGod(avatar.UUID)) return;
|
if (m_scene.Permissions.IsGod(avatar.UUID)) return;
|
||||||
if (position.HasValue)
|
if (position.HasValue)
|
||||||
{
|
{
|
||||||
forcedPosition = position;
|
forcedPosition[avatar.ControllingClient.AgentId] = (Vector3)position;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,7 +458,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
parcel.IsBannedFromLand(clientAvatar.UUID))
|
parcel.IsBannedFromLand(clientAvatar.UUID))
|
||||||
{
|
{
|
||||||
//once we've sent the message once, keep going toward the target until we are done
|
//once we've sent the message once, keep going toward the target until we are done
|
||||||
if (forcedPosition == null)
|
if (forcedPosition.ContainsKey(clientAvatar.ControllingClient.AgentId))
|
||||||
{
|
{
|
||||||
SendYouAreBannedNotice(clientAvatar);
|
SendYouAreBannedNotice(clientAvatar);
|
||||||
ForceAvatarToPosition(clientAvatar, m_scene.GetNearestAllowedPosition(clientAvatar));
|
ForceAvatarToPosition(clientAvatar, m_scene.GetNearestAllowedPosition(clientAvatar));
|
||||||
|
@ -466,7 +467,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
else if (parcel.IsRestrictedFromLand(clientAvatar.UUID))
|
else if (parcel.IsRestrictedFromLand(clientAvatar.UUID))
|
||||||
{
|
{
|
||||||
//once we've sent the message once, keep going toward the target until we are done
|
//once we've sent the message once, keep going toward the target until we are done
|
||||||
if (forcedPosition == null)
|
if (forcedPosition.ContainsKey(clientAvatar.ControllingClient.AgentId))
|
||||||
{
|
{
|
||||||
SendYouAreRestrictedNotice(clientAvatar);
|
SendYouAreRestrictedNotice(clientAvatar);
|
||||||
ForceAvatarToPosition(clientAvatar, m_scene.GetNearestAllowedPosition(clientAvatar));
|
ForceAvatarToPosition(clientAvatar, m_scene.GetNearestAllowedPosition(clientAvatar));
|
||||||
|
@ -475,7 +476,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//when we are finally in a safe place, lets release the forced position lock
|
//when we are finally in a safe place, lets release the forced position lock
|
||||||
forcedPosition = null;
|
forcedPosition.Remove(clientAvatar.ControllingClient.AgentId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,6 @@ namespace OpenSim.Region.CoreModules.World.Sound
|
||||||
else
|
else
|
||||||
gain = (float)((double)gain * ((radius - dis) / radius));
|
gain = (float)((double)gain * ((radius - dis) / radius));
|
||||||
|
|
||||||
m_log.DebugFormat("Play sound, gain {0}", gain);
|
|
||||||
sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, ownerID, (float)gain, flags);
|
sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, ownerID, (float)gain, flags);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,6 +174,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private bool m_firstHeartbeat = true;
|
private bool m_firstHeartbeat = true;
|
||||||
|
|
||||||
private object m_deleting_scene_object = new object();
|
private object m_deleting_scene_object = new object();
|
||||||
|
private object m_cleaningAttachments = new object();
|
||||||
|
|
||||||
private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time;
|
private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time;
|
||||||
private bool m_reprioritizationEnabled = true;
|
private bool m_reprioritizationEnabled = true;
|
||||||
|
@ -3162,6 +3163,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
m_eventManager.TriggerOnRemovePresence(agentID);
|
m_eventManager.TriggerOnRemovePresence(agentID);
|
||||||
|
|
||||||
ForEachClient(
|
ForEachClient(
|
||||||
delegate(IClientAPI client)
|
delegate(IClientAPI client)
|
||||||
{
|
{
|
||||||
|
@ -3194,6 +3196,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
m_authenticateHandler.RemoveCircuit(avatar.ControllingClient.CircuitCode);
|
m_authenticateHandler.RemoveCircuit(avatar.ControllingClient.CircuitCode);
|
||||||
|
CleanDroppedAttachments();
|
||||||
//m_log.InfoFormat("[SCENE] Memory pre GC {0}", System.GC.GetTotalMemory(false));
|
//m_log.InfoFormat("[SCENE] Memory pre GC {0}", System.GC.GetTotalMemory(false));
|
||||||
//m_log.InfoFormat("[SCENE] Memory post GC {0}", System.GC.GetTotalMemory(true));
|
//m_log.InfoFormat("[SCENE] Memory post GC {0}", System.GC.GetTotalMemory(true));
|
||||||
}
|
}
|
||||||
|
@ -3408,6 +3411,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if (vialogin)
|
if (vialogin)
|
||||||
{
|
{
|
||||||
|
CleanDroppedAttachments();
|
||||||
|
|
||||||
if (TestBorderCross(agent.startpos, Cardinals.E))
|
if (TestBorderCross(agent.startpos, Cardinals.E))
|
||||||
{
|
{
|
||||||
Border crossedBorder = GetCrossedBorder(agent.startpos, Cardinals.E);
|
Border crossedBorder = GetCrossedBorder(agent.startpos, Cardinals.E);
|
||||||
|
@ -3756,7 +3761,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// We have to wait until the viewer contacts this region after receiving EAC.
|
// We have to wait until the viewer contacts this region after receiving EAC.
|
||||||
// That calls AddNewClient, which finally creates the ScenePresence
|
// That calls AddNewClient, which finally creates the ScenePresence
|
||||||
m_log.Debug("ICADU -> pre wait");
|
ILandObject nearestParcel = GetNearestAllowedParcel(cAgentData.AgentID, Constants.RegionSize / 2, Constants.RegionSize / 2);
|
||||||
|
if (nearestParcel == null)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[SCENE]: Denying root agent entry to {0}: no allowed parcel", cAgentData.AgentID);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
ScenePresence childAgentUpdate = WaitGetScenePresence(cAgentData.AgentID);
|
ScenePresence childAgentUpdate = WaitGetScenePresence(cAgentData.AgentID);
|
||||||
m_log.Debug("ICADU -> post wait");
|
m_log.Debug("ICADU -> post wait");
|
||||||
if (childAgentUpdate != null)
|
if (childAgentUpdate != null)
|
||||||
|
@ -4738,7 +4749,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Vector3 nearestRegionEdgePoint = GetNearestRegionEdgePosition(avatar);
|
Vector3 nearestRegionEdgePoint = GetNearestRegionEdgePosition(avatar);
|
||||||
//Debug.WriteLine("They are really in a place they don't belong, sending them to: " + nearestRegionEdgePoint.ToString());
|
//Debug.WriteLine("They are really in a place they don't belong, sending them to: " + nearestRegionEdgePoint.ToString());
|
||||||
return nearestRegionEdgePoint;
|
return nearestRegionEdgePoint;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector3 GetParcelCenterAtGround(ILandObject parcel)
|
private Vector3 GetParcelCenterAtGround(ILandObject parcel)
|
||||||
|
@ -4987,5 +4997,40 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
throw new Exception(error);
|
throw new Exception(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void CleanDroppedAttachments()
|
||||||
|
{
|
||||||
|
List<SceneObjectGroup> objectsToDelete =
|
||||||
|
new List<SceneObjectGroup>();
|
||||||
|
|
||||||
|
lock (m_cleaningAttachments)
|
||||||
|
{
|
||||||
|
ForEachSOG(delegate (SceneObjectGroup grp)
|
||||||
|
{
|
||||||
|
if (grp.RootPart.Shape.PCode == 0 && grp.RootPart.Shape.State != 0 && (!objectsToDelete.Contains(grp)))
|
||||||
|
{
|
||||||
|
UUID agentID = grp.OwnerID;
|
||||||
|
if (agentID == UUID.Zero)
|
||||||
|
{
|
||||||
|
objectsToDelete.Add(grp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ScenePresence sp = GetScenePresence(agentID);
|
||||||
|
if (sp == null)
|
||||||
|
{
|
||||||
|
objectsToDelete.Add(grp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (SceneObjectGroup grp in objectsToDelete)
|
||||||
|
{
|
||||||
|
m_log.InfoFormat("[SCENE]: Deleting dropped attachment {0} of user {1}", grp.UUID, grp.OwnerID);
|
||||||
|
DeleteSceneObject(grp, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9882,6 +9882,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
case "4":
|
case "4":
|
||||||
ret = ret + new LSL_List(land.Area);
|
ret = ret + new LSL_List(land.Area);
|
||||||
break;
|
break;
|
||||||
|
case "5":
|
||||||
|
ret = ret + new LSL_List(land.GlobalID);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ret = ret + new LSL_List(0);
|
ret = ret + new LSL_List(0);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -507,6 +507,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
public const int PARCEL_DETAILS_OWNER = 2;
|
public const int PARCEL_DETAILS_OWNER = 2;
|
||||||
public const int PARCEL_DETAILS_GROUP = 3;
|
public const int PARCEL_DETAILS_GROUP = 3;
|
||||||
public const int PARCEL_DETAILS_AREA = 4;
|
public const int PARCEL_DETAILS_AREA = 4;
|
||||||
|
public const int PARCEL_DETAILS_ID = 5;
|
||||||
|
|
||||||
// constants for llSetClickAction
|
// constants for llSetClickAction
|
||||||
public const int CLICK_ACTION_NONE = 0;
|
public const int CLICK_ACTION_NONE = 0;
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
StorageProvider = "OpenSim.Data.SQLiteLegacy.dll"
|
StorageProvider = "OpenSim.Data.SQLiteLegacy.dll"
|
||||||
ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
|
ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
|
||||||
|
|
||||||
|
[AssetService]
|
||||||
|
ConnectionString = "URI=file:Asset.db,version=3"
|
||||||
|
|
||||||
[AvatarService]
|
[AvatarService]
|
||||||
ConnectionString = "URI=file:avatars.db,version=3"
|
ConnectionString = "URI=file:avatars.db,version=3"
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
StorageProvider = "OpenSim.Data.SQLite.dll"
|
StorageProvider = "OpenSim.Data.SQLite.dll"
|
||||||
ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
|
ConnectionString = "URI=file:OpenSim.db,version=3,UseUTF16Encoding=True"
|
||||||
|
|
||||||
|
[AssetService]
|
||||||
|
ConnectionString = "URI=file:Asset.db,version=3"
|
||||||
|
|
||||||
[InventoryService]
|
[InventoryService]
|
||||||
;ConnectionString = "URI=file:inventory.db,version=3"
|
;ConnectionString = "URI=file:inventory.db,version=3"
|
||||||
; if you have a legacy inventory store use the connection string below
|
; if you have a legacy inventory store use the connection string below
|
||||||
|
|
|
@ -2155,7 +2155,7 @@
|
||||||
<Reference name="OpenSim.Region.Framework"/>
|
<Reference name="OpenSim.Region.Framework"/>
|
||||||
<Reference name="OpenMetaverseTypes" path="../../../bin/"/>
|
<Reference name="OpenMetaverseTypes" path="../../../bin/"/>
|
||||||
<Reference name="OpenMetaverse" path="../../../bin/"/>
|
<Reference name="OpenMetaverse" path="../../../bin/"/>
|
||||||
<Reference name="Mono.Data.SqliteClient"/>
|
<Reference name="Mono.Data.SqliteClient" path="../../../bin/"/>
|
||||||
<Reference name="Mono.Addins" path="../../../bin/"/>
|
<Reference name="Mono.Addins" path="../../../bin/"/>
|
||||||
<Reference name="log4net" path="../../../bin/"/>
|
<Reference name="log4net" path="../../../bin/"/>
|
||||||
|
|
||||||
|
@ -2503,7 +2503,7 @@
|
||||||
<Reference name="OpenSim.Framework.Servers.HttpServer"/>
|
<Reference name="OpenSim.Framework.Servers.HttpServer"/>
|
||||||
<Reference name="OpenSim.Framework.Statistics"/>
|
<Reference name="OpenSim.Framework.Statistics"/>
|
||||||
<Reference name="OpenSim.Region.Physics.Manager"/>
|
<Reference name="OpenSim.Region.Physics.Manager"/>
|
||||||
<Reference name="Mono.Data.SqliteClient"/>
|
<Reference name="Mono.Data.SqliteClient" path="../../../bin/"/>
|
||||||
<Reference name="Mono.Addins"/>
|
<Reference name="Mono.Addins"/>
|
||||||
|
|
||||||
<!-- For scripting in funny languages by default -->
|
<!-- For scripting in funny languages by default -->
|
||||||
|
|
Loading…
Reference in New Issue