mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
Fix bug where setting phantom on a prim would result in a server log message rather than setting phantom.
This was an oversight when removing some race conditions from PhysicsActor setting recently. Regression tests extended to probe this code path. Extending regression tests required implementation of a BasicPhysicsPrim (there was none before). However, BasicPhysics plugin is still of no current practical use other than to fill in as a component for other parts of regression testing.
This commit is contained in:
@@ -684,8 +684,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
//Animation states
|
||||
m_useFlySlow = startupConfig.GetBoolean("enableflyslow", false);
|
||||
|
||||
PhysicalPrims = startupConfig.GetBoolean("physical_prim", true);
|
||||
CollidablePrims = startupConfig.GetBoolean("collidable_prim", true);
|
||||
PhysicalPrims = startupConfig.GetBoolean("physical_prim", PhysicalPrims);
|
||||
CollidablePrims = startupConfig.GetBoolean("collidable_prim", CollidablePrims);
|
||||
|
||||
m_maxNonphys = startupConfig.GetFloat("NonphysicalPrimMax", m_maxNonphys);
|
||||
if (RegionInfo.NonphysPrimMax > 0)
|
||||
@@ -800,13 +800,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mock constructor for scene group persistency unit tests.
|
||||
/// SceneObjectGroup RegionId property is delegated to Scene.
|
||||
/// </summary>
|
||||
/// <param name="regInfo"></param>
|
||||
public Scene(RegionInfo regInfo)
|
||||
{
|
||||
PhysicalPrims = true;
|
||||
CollidablePrims = true;
|
||||
|
||||
BordersLocked = true;
|
||||
Border northBorder = new Border();
|
||||
northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, (int)Constants.RegionSize); //<---
|
||||
@@ -833,8 +831,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
m_eventManager = new EventManager();
|
||||
|
||||
m_permissions = new ScenePermissions(this);
|
||||
|
||||
// m_lastUpdate = Util.EnvironmentTickCount();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -4290,7 +4290,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
AddFlag(PrimFlags.Phantom);
|
||||
|
||||
if (PhysActor != null)
|
||||
{
|
||||
RemoveFromPhysics();
|
||||
pa = null;
|
||||
}
|
||||
}
|
||||
else // Not phantom
|
||||
{
|
||||
@@ -4356,7 +4359,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
pa.SetVolumeDetect(1);
|
||||
AddFlag(PrimFlags.Phantom); // We set this flag also if VD is active
|
||||
this.VolumeDetectActive = true;
|
||||
VolumeDetectActive = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -4364,9 +4367,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// Remove VolumeDetect in any case. Note, it's safe to call SetVolumeDetect as often as you like
|
||||
// (mumbles, well, at least if you have infinte CPU powers :-))
|
||||
if (pa != null)
|
||||
PhysActor.SetVolumeDetect(0);
|
||||
pa.SetVolumeDetect(0);
|
||||
|
||||
this.VolumeDetectActive = false;
|
||||
VolumeDetectActive = false;
|
||||
}
|
||||
|
||||
if (SetTemporary)
|
||||
|
||||
@@ -62,6 +62,8 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
{
|
||||
TestHelpers.InMethod();
|
||||
|
||||
m_scene.AddSceneObject(m_so1);
|
||||
|
||||
SceneObjectPart rootPart = m_so1.RootPart;
|
||||
Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user