* adds flag in OpenSim.ini for disabling physical prim. Look at OpenSim.ini.example in the bin folder for an example.

afrisby
Teravus Ovares 2007-11-11 00:08:18 +00:00
parent 9a4b4dae5e
commit ec77e1eb17
8 changed files with 87 additions and 79 deletions

View File

@ -73,6 +73,7 @@ namespace OpenSim
protected List<RegionInfo> m_regionData = new List<RegionInfo>(); protected List<RegionInfo> m_regionData = new List<RegionInfo>();
private bool m_verbose; private bool m_verbose;
private bool m_physicalPrim;
private readonly string m_logFilename = ("region-console.log"); private readonly string m_logFilename = ("region-console.log");
private bool m_permissions = false; private bool m_permissions = false;
@ -154,6 +155,7 @@ namespace OpenSim
config.Set("gridmode", false); config.Set("gridmode", false);
config.Set("physics", "basicphysics"); config.Set("physics", "basicphysics");
config.Set("verbose", true); config.Set("verbose", true);
config.Set("physical_prim", true);
config.Set("serverside_object_permissions", false); config.Set("serverside_object_permissions", false);
config.Set("storage_plugin", "OpenSim.DataStore.NullStorage.dll"); config.Set("storage_plugin", "OpenSim.DataStore.NullStorage.dll");
@ -213,6 +215,7 @@ namespace OpenSim
m_physicsEngine = startupConfig.GetString("physics", "basicphysics"); m_physicsEngine = startupConfig.GetString("physics", "basicphysics");
m_meshEngineName = startupConfig.GetString("meshing", "Meshmerizer"); m_meshEngineName = startupConfig.GetString("meshing", "Meshmerizer");
m_verbose = startupConfig.GetBoolean("verbose", true); m_verbose = startupConfig.GetBoolean("verbose", true);
m_physicalPrim = startupConfig.GetBoolean("physical_prim", true);
m_permissions = startupConfig.GetBoolean("serverside_object_permissions", false); m_permissions = startupConfig.GetBoolean("serverside_object_permissions", false);
m_storageDLL = startupConfig.GetString("storage_plugin", "OpenSim.DataStore.NullStorage.dll"); m_storageDLL = startupConfig.GetString("storage_plugin", "OpenSim.DataStore.NullStorage.dll");
@ -365,7 +368,7 @@ namespace OpenSim
SceneCommunicationService sceneGridService = new SceneCommunicationService(m_commsManager); SceneCommunicationService sceneGridService = new SceneCommunicationService(m_commsManager);
return return
new Scene(regionInfo, circuitManager, m_commsManager, sceneGridService, m_assetCache, storageManager, m_httpServer, new Scene(regionInfo, circuitManager, m_commsManager, sceneGridService, m_assetCache, storageManager, m_httpServer,
m_moduleLoader, m_dumpAssetsToFile); m_moduleLoader, m_dumpAssetsToFile, m_physicalPrim);
} }
protected override void Initialize() protected override void Initialize()

View File

@ -446,7 +446,7 @@ namespace OpenSim.Region.Environment.Scenes
AddEntity(group); AddEntity(group);
group.AbsolutePosition = pos; group.AbsolutePosition = pos;
SceneObjectPart rootPart = group.GetChildPart(group.UUID); 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) if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
{ {
PrimitiveBaseShape pbs = rootPart.Shape; PrimitiveBaseShape pbs = rootPart.Shape;

View File

@ -68,7 +68,7 @@ namespace OpenSim.Region.Environment.Scenes
private int m_timeUpdateCount; private int m_timeUpdateCount;
private readonly Mutex updateLock; private readonly Mutex updateLock;
public bool m_physicalPrim;
protected ModuleLoader m_moduleLoader; protected ModuleLoader m_moduleLoader;
protected StorageManager m_storageManager; protected StorageManager m_storageManager;
protected AgentCircuitManager m_authenticateHandler; protected AgentCircuitManager m_authenticateHandler;
@ -192,7 +192,7 @@ namespace OpenSim.Region.Environment.Scenes
public Scene(RegionInfo regInfo, AgentCircuitManager authen, CommunicationsManager commsMan, SceneCommunicationService sceneGridService, public Scene(RegionInfo regInfo, AgentCircuitManager authen, CommunicationsManager commsMan, SceneCommunicationService sceneGridService,
AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer, AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer,
ModuleLoader moduleLoader, bool dumpAssetsToFile) ModuleLoader moduleLoader, bool dumpAssetsToFile, bool physicalPrim)
{ {
updateLock = new Mutex(false); updateLock = new Mutex(false);
@ -207,6 +207,7 @@ namespace OpenSim.Region.Environment.Scenes
m_regionName = m_regInfo.RegionName; m_regionName = m_regInfo.RegionName;
m_datastore = m_regInfo.DataStore; m_datastore = m_regInfo.DataStore;
RegisterRegionWithComms(); RegisterRegionWithComms();
m_physicalPrim = physicalPrim;
m_LandManager = new LandManager(this, m_regInfo); m_LandManager = new LandManager(this, m_regInfo);
m_estateManager = new EstateManager(this, m_regInfo); m_estateManager = new EstateManager(this, m_regInfo);
@ -522,7 +523,7 @@ namespace OpenSim.Region.Environment.Scenes
{ {
AddEntityFromStorage(prim); AddEntityFromStorage(prim);
SceneObjectPart rootPart = prim.GetChildPart(prim.UUID); 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) if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
rootPart.PhysActor = phyScene.AddPrimShape( rootPart.PhysActor = phyScene.AddPrimShape(
rootPart.Name, rootPart.Name,
@ -572,7 +573,7 @@ namespace OpenSim.Region.Environment.Scenes
rootPart.ObjectFlags += (uint) LLObject.ObjectFlags.Phantom; rootPart.ObjectFlags += (uint) LLObject.ObjectFlags.Phantom;
} }
// if not phantom, add to physics // 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) if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
rootPart.PhysActor = rootPart.PhysActor =
phyScene.AddPrimShape( phyScene.AddPrimShape(

View File

@ -770,7 +770,7 @@ namespace OpenSim.Region.Environment.Scenes
{ {
i += 46; i += 46;
//IsLocked = (data[i++] != 0) ? true : false; //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()); //System.Console.WriteLine("U" + packet.ToBytes().Length.ToString());
IsTemporary = (data[i++] != 0) ? true : false; IsTemporary = (data[i++] != 0) ? true : false;
IsPhantom = (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 //Silently ignore it - TODO: FIXME Quick
} }
if (UsePhysics) if (UsePhysics )
{ {
AddFlag(LLObject.ObjectFlags.Physics); AddFlag(LLObject.ObjectFlags.Physics);
if (PhysActor != null) if (PhysActor != null)
@ -791,9 +791,12 @@ namespace OpenSim.Region.Environment.Scenes
} }
else else
{ {
RemFlag(LLObject.ObjectFlags.Physics); if (m_parentGroup.m_scene.m_physicalPrim)
if (PhysActor != null) {
PhysActor.OnRequestTerseUpdate -= PhysicsRequestingTerseUpdate; RemFlag(LLObject.ObjectFlags.Physics);
if (PhysActor != null)
PhysActor.OnRequestTerseUpdate -= PhysicsRequestingTerseUpdate;
}
} }
if (IsPhantom) if (IsPhantom)

View File

@ -44,7 +44,7 @@ namespace OpenSim.Region.Environment.Scenes
m_innerScene.AddEntity(obj); m_innerScene.AddEntity(obj);
SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); 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) if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0)
rootPart.PhysActor = m_innerScene.PhyScene.AddPrimShape( rootPart.PhysActor = m_innerScene.PhyScene.AddPrimShape(
rootPart.Name, rootPart.Name,
@ -110,7 +110,7 @@ namespace OpenSim.Region.Environment.Scenes
m_innerScene.AddEntityFromStorage(obj); m_innerScene.AddEntityFromStorage(obj);
SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); 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) if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0)
rootPart.PhysActor = m_innerScene.PhyScene.AddPrimShape( rootPart.PhysActor = m_innerScene.PhyScene.AddPrimShape(
rootPart.Name, rootPart.Name,

View File

@ -44,8 +44,8 @@ namespace SimpleApp
public MyWorld(RegionInfo regionInfo, AgentCircuitManager authen, CommunicationsManager commsMan, SceneCommunicationService sceneGridService, public MyWorld(RegionInfo regionInfo, AgentCircuitManager authen, CommunicationsManager commsMan, SceneCommunicationService sceneGridService,
AssetCache assetCach, StorageManager storeMan, BaseHttpServer httpServer, AssetCache assetCach, StorageManager storeMan, BaseHttpServer httpServer,
ModuleLoader moduleLoader) ModuleLoader moduleLoader, bool physicalPrim)
: base(regionInfo, authen, commsMan, sceneGridService, assetCach, storeMan, httpServer, moduleLoader, false) : base(regionInfo, authen, commsMan, sceneGridService, assetCach, storeMan, httpServer, moduleLoader, false, true)
{ {
m_avatars = new List<Avatar>(); m_avatars = new List<Avatar>();
} }

View File

@ -172,7 +172,7 @@ namespace SimpleApp
SceneCommunicationService sceneGridService = new SceneCommunicationService(m_commsManager); SceneCommunicationService sceneGridService = new SceneCommunicationService(m_commsManager);
return return
new MyWorld(regionInfo, circuitManager, m_commsManager, sceneGridService, m_assetCache, storageManager, m_httpServer, new MyWorld(regionInfo, circuitManager, m_commsManager, sceneGridService, m_assetCache, storageManager, m_httpServer,
new ModuleLoader(m_log, m_config)); new ModuleLoader(m_log, m_config), true);
} }
protected override StorageManager CreateStorageManager(RegionInfo regionInfo) protected override StorageManager CreateStorageManager(RegionInfo regionInfo)

View File

@ -1,63 +1,64 @@
[Startup] [Startup]
gridmode = false gridmode = false
physics = basicphysics physics = basicphysics
; Prim Storage ; Prim Storage
; if you would like to use sqlite uncomment the following line (and ; if you would like to use sqlite uncomment the following line (and
; comment the NullStorage line) ; comment the NullStorage line)
storage_plugin = "OpenSim.DataStore.MonoSqlite.dll" storage_plugin = "OpenSim.DataStore.MonoSqlite.dll"
;storage_plugin = "OpenSim.DataStore.NullStorage.dll" ;storage_plugin = "OpenSim.DataStore.NullStorage.dll"
startup_console_commands_file = "startup_commands.txt" startup_console_commands_file = "startup_commands.txt"
shutdown_console_commands_file = "shutdown_commands.txt" shutdown_console_commands_file = "shutdown_commands.txt"
serverside_object_permissions = false serverside_object_permissions = false
; asset_database = "db4o" ; asset_database = "db4o"
; to try sqlite as the asset database , comment out the above line, and uncomment following one ; to try sqlite as the asset database , comment out the above line, and uncomment following one
asset_database = "sqlite" asset_database = "sqlite"
verbose = true verbose = true
physical_prim = true
[StandAlone]
accounts_authenticate = true [StandAlone]
welcome_message = "Welcome to OpenSim" accounts_authenticate = true
inventory_plugin = "OpenSim.Framework.Data.SQLite.dll" welcome_message = "Welcome to OpenSim"
; userDatabase_plugin = "OpenSim.Framework.Data.DB4o.dll" inventory_plugin = "OpenSim.Framework.Data.SQLite.dll"
userDatabase_plugin = "OpenSim.Framework.Data.SQLite.dll" ; userDatabase_plugin = "OpenSim.Framework.Data.DB4o.dll"
default_location_x = 1000 userDatabase_plugin = "OpenSim.Framework.Data.SQLite.dll"
default_location_y = 1000 default_location_x = 1000
dump_assets_to_file = false default_location_y = 1000
dump_assets_to_file = false
[Network]
http_listener_port = 9000 [Network]
remoting_listener_port = 8895 http_listener_port = 9000
remoting_listener_port = 8895
grid_server_url = "http://127.0.0.1:8001"
grid_send_key = "null" grid_server_url = "http://127.0.0.1:8001"
grid_recv_key = "null" grid_send_key = "null"
grid_recv_key = "null"
user_server_url = "http://127.0.0.1:8002"
user_send_key = "null" user_server_url = "http://127.0.0.1:8002"
user_recv_key = "null" user_send_key = "null"
user_recv_key = "null"
asset_server_url = "http://127.0.0.1:8003"
asset_server_url = "http://127.0.0.1:8003"
[Chat]
whisper_distance = 10 [Chat]
say_distance = 30 whisper_distance = 10
shout_distance = 100 say_distance = 30
shout_distance = 100
; Uncomment the following for IRC bridge
; experimental, so if it breaks... keep both parts... yada yada ; Uncomment the following for IRC bridge
; also, not good error detection when it fails ; experimental, so if it breaks... keep both parts... yada yada
;[IRC] ; also, not good error detection when it fails
;server = name.of.irc.server.on.the.net ;[IRC]
;nick = OpenSimBotNameProbablyMakeThisShorter ;server = name.of.irc.server.on.the.net
;channel = #the_irc_channel_you_want_to_connect_to ;nick = OpenSimBotNameProbablyMakeThisShorter
;channel = #the_irc_channel_you_want_to_connect_to
; Uncomment the following to control the progression of daytime
; in the Sim. The defaults are what is shown below ; Uncomment the following to control the progression of daytime
;[Sun] ; in the Sim. The defaults are what is shown below
; number of wall clock hours for an opensim day. 24.0 would mean realtime ;[Sun]
;day_length = 0.5 ; number of wall clock hours for an opensim day. 24.0 would mean realtime
;day_length = 0.5
; send a Sun update ever frame_rate # of frames. A lower number will
; make for smoother sun transition at the cost of network ; send a Sun update ever frame_rate # of frames. A lower number will
;frame_rate = 100 ; make for smoother sun transition at the cost of network
;frame_rate = 100