Merge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork
commit
657dbb51af
|
@ -1673,16 +1673,25 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
|||
Hashtable responseData = (Hashtable)response.Value;
|
||||
Hashtable requestData = (Hashtable)request.Params[0];
|
||||
|
||||
int flags = 0;
|
||||
string text = String.Empty;
|
||||
int health = 0;
|
||||
responseData["success"] = true;
|
||||
|
||||
CheckRegionParams(requestData, responseData);
|
||||
|
||||
Scene scene = null;
|
||||
try
|
||||
{
|
||||
GetSceneFromRegionParams(requestData, responseData, out scene);
|
||||
health = scene.GetHealth(out flags, out text);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
responseData["error"] = null;
|
||||
}
|
||||
|
||||
int flags;
|
||||
string text;
|
||||
int health = scene.GetHealth(out flags, out text);
|
||||
responseData["success"] = true;
|
||||
responseData["health"] = health;
|
||||
responseData["flags"] = flags;
|
||||
responseData["message"] = text;
|
||||
|
|
|
@ -188,6 +188,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public static void PartCollisionSound(SceneObjectPart part, List<CollisionForSoundInfo> collidersinfolist)
|
||||
{
|
||||
// disable for now
|
||||
return;
|
||||
|
||||
if (collidersinfolist.Count == 0 || part == null)
|
||||
return;
|
||||
|
||||
|
@ -297,6 +300,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public static void AvatarCollisionSound(ScenePresence av, List<CollisionForSoundInfo> collidersinfolist)
|
||||
{
|
||||
// disable for now
|
||||
return;
|
||||
|
||||
if (collidersinfolist.Count == 0 || av == null)
|
||||
return;
|
||||
|
||||
|
|
|
@ -53,12 +53,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
get { return m_instance; }
|
||||
}
|
||||
|
||||
private readonly List<Scene> m_localScenes = new List<Scene>();
|
||||
private readonly DoubleDictionary<UUID, string, Scene> m_localScenes = new DoubleDictionary<UUID, string, Scene>();
|
||||
private Scene m_currentScene = null;
|
||||
|
||||
public List<Scene> Scenes
|
||||
{
|
||||
get { return new List<Scene>(m_localScenes); }
|
||||
get { return new List<Scene>(m_localScenes.FindAll(delegate(Scene s) { return true; })); }
|
||||
}
|
||||
|
||||
public Scene CurrentScene
|
||||
|
@ -72,13 +72,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
if (m_currentScene == null)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
if (m_localScenes.Count > 0)
|
||||
return m_localScenes[0];
|
||||
else
|
||||
List<Scene> sceneList = Scenes;
|
||||
if (sceneList.Count == 0)
|
||||
return null;
|
||||
}
|
||||
return sceneList[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -90,7 +87,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
public SceneManager()
|
||||
{
|
||||
m_instance = this;
|
||||
m_localScenes = new List<Scene>();
|
||||
m_localScenes = new DoubleDictionary<UUID, string, Scene>();
|
||||
}
|
||||
|
||||
public void Close()
|
||||
|
@ -98,20 +95,18 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// collect known shared modules in sharedModules
|
||||
Dictionary<string, IRegionModule> sharedModules = new Dictionary<string, IRegionModule>();
|
||||
|
||||
lock (m_localScenes)
|
||||
{
|
||||
for (int i = 0; i < m_localScenes.Count; i++)
|
||||
List<Scene> sceneList = Scenes;
|
||||
for (int i = 0; i < sceneList.Count; i++)
|
||||
{
|
||||
// extract known shared modules from scene
|
||||
foreach (string k in m_localScenes[i].Modules.Keys)
|
||||
foreach (string k in sceneList[i].Modules.Keys)
|
||||
{
|
||||
if (m_localScenes[i].Modules[k].IsSharedModule &&
|
||||
if (sceneList[i].Modules[k].IsSharedModule &&
|
||||
!sharedModules.ContainsKey(k))
|
||||
sharedModules[k] = m_localScenes[i].Modules[k];
|
||||
sharedModules[k] = sceneList[i].Modules[k];
|
||||
}
|
||||
// close scene/region
|
||||
m_localScenes[i].Close();
|
||||
}
|
||||
sceneList[i].Close();
|
||||
}
|
||||
|
||||
// all regions/scenes are now closed, we can now safely
|
||||
|
@ -120,31 +115,22 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
mod.Close();
|
||||
}
|
||||
|
||||
m_localScenes.Clear();
|
||||
}
|
||||
|
||||
public void Close(Scene cscene)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
if (m_localScenes.Contains(cscene))
|
||||
{
|
||||
for (int i = 0; i < m_localScenes.Count; i++)
|
||||
{
|
||||
if (m_localScenes[i].Equals(cscene))
|
||||
{
|
||||
m_localScenes[i].Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!m_localScenes.ContainsKey(cscene.RegionInfo.RegionID))
|
||||
return;
|
||||
cscene.Close();
|
||||
}
|
||||
|
||||
public void Add(Scene scene)
|
||||
{
|
||||
scene.OnRestart += HandleRestart;
|
||||
|
||||
lock (m_localScenes)
|
||||
m_localScenes.Add(scene);
|
||||
m_localScenes.Add(scene.RegionInfo.RegionID, scene.RegionInfo.RegionName, scene);
|
||||
}
|
||||
|
||||
public void HandleRestart(RegionInfo rdata)
|
||||
|
@ -152,24 +138,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_log.Error("[SCENEMANAGER]: Got Restart message for region:" + rdata.RegionName + " Sending up to main");
|
||||
int RegionSceneElement = -1;
|
||||
|
||||
lock (m_localScenes)
|
||||
{
|
||||
for (int i = 0; i < m_localScenes.Count; i++)
|
||||
{
|
||||
if (rdata.RegionName == m_localScenes[i].RegionInfo.RegionName)
|
||||
{
|
||||
RegionSceneElement = i;
|
||||
}
|
||||
}
|
||||
|
||||
// Now we make sure the region is no longer known about by the SceneManager
|
||||
// Prevents duplicates.
|
||||
|
||||
if (RegionSceneElement >= 0)
|
||||
{
|
||||
m_localScenes.RemoveAt(RegionSceneElement);
|
||||
}
|
||||
}
|
||||
m_localScenes.Remove(rdata.RegionID);
|
||||
|
||||
// Send signal to main that we're restarting this sim.
|
||||
OnRestartSim(rdata);
|
||||
|
@ -179,25 +148,23 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
RegionInfo Result = null;
|
||||
|
||||
lock (m_localScenes)
|
||||
Scene s = m_localScenes.FindValue(delegate(Scene x)
|
||||
{
|
||||
for (int i = 0; i < m_localScenes.Count; i++)
|
||||
{
|
||||
if (m_localScenes[i].RegionInfo.RegionHandle == regionHandle)
|
||||
{
|
||||
// Inform other regions to tell their avatar about me
|
||||
Result = m_localScenes[i].RegionInfo;
|
||||
}
|
||||
}
|
||||
if (x.RegionInfo.RegionHandle == regionHandle)
|
||||
return true;
|
||||
return false;
|
||||
});
|
||||
|
||||
if (Result != null)
|
||||
if (s != null)
|
||||
{
|
||||
for (int i = 0; i < m_localScenes.Count; i++)
|
||||
List<Scene> sceneList = Scenes;
|
||||
|
||||
for (int i = 0; i < sceneList.Count; i++)
|
||||
{
|
||||
if (m_localScenes[i].RegionInfo.RegionHandle != regionHandle)
|
||||
if (sceneList[i]!= s)
|
||||
{
|
||||
// Inform other regions to tell their avatar about me
|
||||
//m_localScenes[i].OtherRegionUp(Result);
|
||||
//sceneList[i].OtherRegionUp(Result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -206,7 +173,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_log.Error("[REGION]: Unable to notify Other regions of this Region coming up");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save the prims in the current scene to an xml file in OpenSimulator's original 'xml' format
|
||||
|
@ -308,8 +274,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
if (m_currentScene == null)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
m_localScenes.ForEach(func);
|
||||
List<Scene> sceneList = Scenes;
|
||||
sceneList.ForEach(func);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -338,17 +304,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
else
|
||||
{
|
||||
lock (m_localScenes)
|
||||
Scene s;
|
||||
|
||||
if (m_localScenes.TryGetValue(regionName, out s))
|
||||
{
|
||||
foreach (Scene scene in m_localScenes)
|
||||
{
|
||||
if (String.Compare(scene.RegionInfo.RegionName, regionName, true) == 0)
|
||||
{
|
||||
m_currentScene = scene;
|
||||
m_currentScene = s;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -358,62 +320,31 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
// m_log.Debug("Searching for Region: '" + regionID + "'");
|
||||
|
||||
lock (m_localScenes)
|
||||
Scene s;
|
||||
|
||||
if (m_localScenes.TryGetValue(regionID, out s))
|
||||
{
|
||||
foreach (Scene scene in m_localScenes)
|
||||
{
|
||||
if (scene.RegionInfo.RegionID == regionID)
|
||||
{
|
||||
m_currentScene = scene;
|
||||
m_currentScene = s;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool TryGetScene(string regionName, out Scene scene)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene mscene in m_localScenes)
|
||||
{
|
||||
if (String.Compare(mscene.RegionInfo.RegionName, regionName, true) == 0)
|
||||
{
|
||||
scene = mscene;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scene = null;
|
||||
return false;
|
||||
return m_localScenes.TryGetValue(regionName, out scene);
|
||||
}
|
||||
|
||||
public bool TryGetScene(UUID regionID, out Scene scene)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene mscene in m_localScenes)
|
||||
{
|
||||
if (mscene.RegionInfo.RegionID == regionID)
|
||||
{
|
||||
scene = mscene;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scene = null;
|
||||
return false;
|
||||
return m_localScenes.TryGetValue(regionID, out scene);
|
||||
}
|
||||
|
||||
public bool TryGetScene(uint locX, uint locY, out Scene scene)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene mscene in m_localScenes)
|
||||
List<Scene> sceneList = Scenes;
|
||||
foreach (Scene mscene in sceneList)
|
||||
{
|
||||
if (mscene.RegionInfo.RegionLocX == locX &&
|
||||
mscene.RegionInfo.RegionLocY == locY)
|
||||
|
@ -422,7 +353,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scene = null;
|
||||
return false;
|
||||
|
@ -430,9 +360,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public bool TryGetScene(IPEndPoint ipEndPoint, out Scene scene)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene mscene in m_localScenes)
|
||||
List<Scene> sceneList = Scenes;
|
||||
foreach (Scene mscene in sceneList)
|
||||
{
|
||||
if ((mscene.RegionInfo.InternalEndPoint.Equals(ipEndPoint.Address)) &&
|
||||
(mscene.RegionInfo.InternalEndPoint.Port == ipEndPoint.Port))
|
||||
|
@ -441,7 +370,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scene = null;
|
||||
return false;
|
||||
|
@ -504,15 +432,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public RegionInfo GetRegionInfo(UUID regionID)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
Scene s;
|
||||
if (m_localScenes.TryGetValue(regionID, out s))
|
||||
{
|
||||
foreach (Scene scene in m_localScenes)
|
||||
{
|
||||
if (scene.RegionInfo.RegionID == regionID)
|
||||
{
|
||||
return scene.RegionInfo;
|
||||
}
|
||||
}
|
||||
return s.RegionInfo;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -530,16 +453,14 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public bool TryGetScenePresence(UUID avatarId, out ScenePresence avatar)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene scene in m_localScenes)
|
||||
List<Scene> sceneList = Scenes;
|
||||
foreach (Scene scene in sceneList)
|
||||
{
|
||||
if (scene.TryGetScenePresence(avatarId, out avatar))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
avatar = null;
|
||||
return false;
|
||||
|
@ -547,16 +468,14 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public bool TryGetRootScenePresence(UUID avatarId, out ScenePresence avatar)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene scene in m_localScenes)
|
||||
List<Scene> sceneList = Scenes;
|
||||
foreach (Scene scene in sceneList)
|
||||
{
|
||||
avatar = scene.GetScenePresence(avatarId);
|
||||
|
||||
if (avatar != null && !avatar.IsChildAgent)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
avatar = null;
|
||||
return false;
|
||||
|
@ -564,24 +483,21 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public void CloseScene(Scene scene)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
m_localScenes.Remove(scene);
|
||||
m_localScenes.Remove(scene.RegionInfo.RegionID);
|
||||
|
||||
scene.Close();
|
||||
}
|
||||
|
||||
public bool TryGetAvatarByName(string avatarName, out ScenePresence avatar)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene scene in m_localScenes)
|
||||
List<Scene> sceneList = Scenes;
|
||||
foreach (Scene scene in sceneList)
|
||||
{
|
||||
if (scene.TryGetAvatarByName(avatarName, out avatar))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
avatar = null;
|
||||
return false;
|
||||
|
@ -589,15 +505,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public bool TryGetRootScenePresenceByName(string firstName, string lastName, out ScenePresence sp)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
{
|
||||
foreach (Scene scene in m_localScenes)
|
||||
List<Scene> sceneList = Scenes;
|
||||
foreach (Scene scene in sceneList)
|
||||
{
|
||||
sp = scene.GetScenePresence(firstName, lastName);
|
||||
if (sp != null && !sp.IsChildAgent)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
sp = null;
|
||||
return false;
|
||||
|
@ -605,8 +519,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public void ForEachScene(Action<Scene> action)
|
||||
{
|
||||
lock (m_localScenes)
|
||||
m_localScenes.ForEach(action);
|
||||
List<Scene> sceneList = Scenes;
|
||||
sceneList.ForEach(action);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3741,7 +3741,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
if ((change & ObjectChangeType.Position) != 0)
|
||||
{
|
||||
if (m_scene.Permissions.CanObjectEntry(group.UUID, false, data.position))
|
||||
if (IsAttachment || m_scene.Permissions.CanObjectEntry(group.UUID, false, data.position))
|
||||
UpdateGroupPosition(data.position);
|
||||
updateType = updatetype.groupterse;
|
||||
}
|
||||
|
|
|
@ -294,6 +294,34 @@ namespace OpenSim.Region.Physics.Manager
|
|||
public abstract Vector3 GeometricCenter { get; }
|
||||
public abstract Vector3 CenterOfMass { get; }
|
||||
|
||||
public virtual Vector3 OOBsize
|
||||
{
|
||||
get
|
||||
{
|
||||
Vector3 s=Size;
|
||||
s.X *=0.5f;
|
||||
s.Y *=0.5f;
|
||||
s.Z *=0.5f;
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual Vector3 OOBoffset
|
||||
{
|
||||
get
|
||||
{
|
||||
return Vector3.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual float OOBRadiusSQ
|
||||
{
|
||||
get
|
||||
{
|
||||
return Size.LengthSquared() * 0.25f; // ((0.5^2)
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Velocity of this actor.
|
||||
/// </summary>
|
||||
|
@ -429,7 +457,6 @@ namespace OpenSim.Region.Physics.Manager
|
|||
|
||||
public override void VehicleFloatParam(int param, float value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void VehicleVectorParam(int param, Vector3 value)
|
||||
|
|
|
@ -522,29 +522,6 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
}
|
||||
}
|
||||
|
||||
//UBit mess
|
||||
/* for later use
|
||||
public override Vector3 PrimOOBsize
|
||||
{
|
||||
get
|
||||
{
|
||||
Vector3 s=Size;
|
||||
s.X *=0.5f;
|
||||
s.Y *=0.5f;
|
||||
s.Z *=0.5f;
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
public override Vector3 PrimOOBoffset
|
||||
{
|
||||
get
|
||||
{
|
||||
return Vector3.Zero;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
public override PrimitiveBaseShape Shape
|
||||
{
|
||||
set { return; }
|
||||
|
|
|
@ -504,8 +504,8 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
public override Vector3 PrimOOBsize
|
||||
|
||||
public override Vector3 OOBsize
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -513,7 +513,7 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
}
|
||||
}
|
||||
|
||||
public override Vector3 PrimOOBoffset
|
||||
public override Vector3 OOBoffset
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -521,14 +521,14 @@ namespace OpenSim.Region.Physics.OdePlugin
|
|||
}
|
||||
}
|
||||
|
||||
public override float PrimOOBRadiusSQ
|
||||
public override float OOBRadiusSQ
|
||||
{
|
||||
get
|
||||
{
|
||||
return primOOBradiusSQ;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
public override PrimitiveBaseShape Shape
|
||||
{
|
||||
set
|
||||
|
|
Loading…
Reference in New Issue