From ec77e1eb17f032458dbe93c0a1eab5aee604112f Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 11 Nov 2007 00:08:18 +0000 Subject: * adds flag in OpenSim.ini for disabling physical prim. Look at OpenSim.ini.example in the bin folder for an example. --- OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | 2 +- OpenSim/Region/Environment/Scenes/Scene.cs | 9 +++++---- OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 13 ++++++++----- OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs | 4 ++-- 4 files changed, 16 insertions(+), 12 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes') diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index f5e6f63..f840845 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -446,7 +446,7 @@ namespace OpenSim.Region.Environment.Scenes AddEntity(group); group.AbsolutePosition = pos; SceneObjectPart rootPart = group.GetChildPart(group.UUID); - bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0); + bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0)&& m_physicalPrim); if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) { PrimitiveBaseShape pbs = rootPart.Shape; diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 7e1bbfa..b4c8b68 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -68,7 +68,7 @@ namespace OpenSim.Region.Environment.Scenes private int m_timeUpdateCount; private readonly Mutex updateLock; - + public bool m_physicalPrim; protected ModuleLoader m_moduleLoader; protected StorageManager m_storageManager; protected AgentCircuitManager m_authenticateHandler; @@ -192,7 +192,7 @@ namespace OpenSim.Region.Environment.Scenes public Scene(RegionInfo regInfo, AgentCircuitManager authen, CommunicationsManager commsMan, SceneCommunicationService sceneGridService, AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer, - ModuleLoader moduleLoader, bool dumpAssetsToFile) + ModuleLoader moduleLoader, bool dumpAssetsToFile, bool physicalPrim) { updateLock = new Mutex(false); @@ -207,6 +207,7 @@ namespace OpenSim.Region.Environment.Scenes m_regionName = m_regInfo.RegionName; m_datastore = m_regInfo.DataStore; RegisterRegionWithComms(); + m_physicalPrim = physicalPrim; m_LandManager = new LandManager(this, m_regInfo); m_estateManager = new EstateManager(this, m_regInfo); @@ -522,7 +523,7 @@ namespace OpenSim.Region.Environment.Scenes { AddEntityFromStorage(prim); SceneObjectPart rootPart = prim.GetChildPart(prim.UUID); - bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0); + bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim); if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) rootPart.PhysActor = phyScene.AddPrimShape( rootPart.Name, @@ -572,7 +573,7 @@ namespace OpenSim.Region.Environment.Scenes rootPart.ObjectFlags += (uint) LLObject.ObjectFlags.Phantom; } // if not phantom, add to physics - bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0); + bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim); if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) rootPart.PhysActor = phyScene.AddPrimShape( diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 7575fad..1604dad 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -770,7 +770,7 @@ namespace OpenSim.Region.Environment.Scenes { i += 46; //IsLocked = (data[i++] != 0) ? true : false; - UsePhysics = (data[i++] != 0) ? true : false; + UsePhysics = ((data[i++] != 0) && m_parentGroup.m_scene.m_physicalPrim) ? true : false; //System.Console.WriteLine("U" + packet.ToBytes().Length.ToString()); IsTemporary = (data[i++] != 0) ? true : false; IsPhantom = (data[i++] != 0) ? true : false; @@ -782,7 +782,7 @@ namespace OpenSim.Region.Environment.Scenes //Silently ignore it - TODO: FIXME Quick } - if (UsePhysics) + if (UsePhysics ) { AddFlag(LLObject.ObjectFlags.Physics); if (PhysActor != null) @@ -791,9 +791,12 @@ namespace OpenSim.Region.Environment.Scenes } else { - RemFlag(LLObject.ObjectFlags.Physics); - if (PhysActor != null) - PhysActor.OnRequestTerseUpdate -= PhysicsRequestingTerseUpdate; + if (m_parentGroup.m_scene.m_physicalPrim) + { + RemFlag(LLObject.ObjectFlags.Physics); + if (PhysActor != null) + PhysActor.OnRequestTerseUpdate -= PhysicsRequestingTerseUpdate; + } } if (IsPhantom) diff --git a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs index e0ddec5..c2bb019 100644 --- a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs +++ b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs @@ -44,7 +44,7 @@ namespace OpenSim.Region.Environment.Scenes m_innerScene.AddEntity(obj); SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); - bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0); + bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_parentScene.m_physicalPrim); if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) rootPart.PhysActor = m_innerScene.PhyScene.AddPrimShape( rootPart.Name, @@ -110,7 +110,7 @@ namespace OpenSim.Region.Environment.Scenes m_innerScene.AddEntityFromStorage(obj); SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); - bool UsePhysics = ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0); + bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_parentScene.m_physicalPrim); if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) rootPart.PhysActor = m_innerScene.PhyScene.AddPrimShape( rootPart.Name, -- cgit v1.1