Make it possible to force all prims to be phantom via the collidable_prim boolean setting in the OpenSim.ini config [Startup] section.

Naturally, default is true.
When set to false, "phantom" flags on prims can be set as usual but all prims remain phantom.
This setting is for test purposes.
This switch does not affect the collision of avatars with the terrain.
0.7.2-post-fixes
Justin Clark-Casey (justincc) 2011-12-22 19:44:52 +00:00
parent 2b19a112d9
commit 2135b89c07
3 changed files with 18 additions and 1 deletions

View File

@ -79,6 +79,14 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public bool m_physicalPrim; public bool m_physicalPrim;
/// <summary>
/// Controls whether prims can be collided with.
/// </summary>
/// <remarks>
/// If this is set to false then prims cannot be subject to physics either.
/// </summary>
public bool CollidablePrims { get; private set; }
public float m_maxNonphys = 256; public float m_maxNonphys = 256;
public float m_maxPhys = 10; public float m_maxPhys = 10;
public bool m_clampPrimSize; public bool m_clampPrimSize;
@ -667,6 +675,7 @@ namespace OpenSim.Region.Framework.Scenes
m_usePreJump = startupConfig.GetBoolean("enableprejump", false); m_usePreJump = startupConfig.GetBoolean("enableprejump", false);
m_physicalPrim = startupConfig.GetBoolean("physical_prim", true); m_physicalPrim = startupConfig.GetBoolean("physical_prim", true);
CollidablePrims = startupConfig.GetBoolean("collidable_prim", true);
m_maxNonphys = startupConfig.GetFloat("NonPhysicalPrimMax", m_maxNonphys); m_maxNonphys = startupConfig.GetFloat("NonPhysicalPrimMax", m_maxNonphys);
if (RegionInfo.NonphysPrimMax > 0) if (RegionInfo.NonphysPrimMax > 0)

View File

@ -1503,6 +1503,9 @@ namespace OpenSim.Region.Framework.Scenes
/// <param name="m_physicalPrim"></param> /// <param name="m_physicalPrim"></param>
public void ApplyPhysics(uint rootObjectFlags, bool VolumeDetectActive, bool m_physicalPrim) public void ApplyPhysics(uint rootObjectFlags, bool VolumeDetectActive, bool m_physicalPrim)
{ {
if (!ParentGroup.Scene.CollidablePrims)
return;
// m_log.DebugFormat( // m_log.DebugFormat(
// "[SCENE OBJECT PART]: Applying physics to {0} {1}, m_physicalPrim {2}", // "[SCENE OBJECT PART]: Applying physics to {0} {1}, m_physicalPrim {2}",
// Name, LocalId, UUID, m_physicalPrim); // Name, LocalId, UUID, m_physicalPrim);
@ -4358,7 +4361,7 @@ namespace OpenSim.Region.Framework.Scenes
if (ParentGroup.Scene == null) if (ParentGroup.Scene == null)
return; return;
if (PhysActor == null) if (ParentGroup.Scene.CollidablePrims && PhysActor == null)
{ {
// It's not phantom anymore. So make sure the physics engine get's knowledge of it // It's not phantom anymore. So make sure the physics engine get's knowledge of it
PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape( PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape(

View File

@ -173,6 +173,11 @@
; ## PHYSICS ; ## PHYSICS
; ## ; ##
; If true then prims can be collided with by avatars, other prims, etc.
; If false then all prims are phantom, no matter whether their phantom flag is checked or unchecked.
; Also, no prims are subject to physics.
collidable_prim = true
; If true then prims can be made subject to physics (gravity, pushing, etc.). ; If true then prims can be made subject to physics (gravity, pushing, etc.).
; If false then physics flag can be set but it is not honoured. However, prims are still solid for the purposes of collision direction ; If false then physics flag can be set but it is not honoured. However, prims are still solid for the purposes of collision direction
physical_prim = true physical_prim = true