diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Application/Application.cs | 71 | ||||
-rw-r--r-- | OpenSim/Region/Application/OpenSimMain.cs | 73 | ||||
-rw-r--r-- | OpenSim/Region/Environment/PermissionManager.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs | 12 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs | 14 |
5 files changed, 71 insertions, 101 deletions
diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs index a8c40ec..b07a4d6 100644 --- a/OpenSim/Region/Application/Application.cs +++ b/OpenSim/Region/Application/Application.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using OpenSim.Framework.Console; | 29 | using OpenSim.Framework.Console; |
30 | using OpenSim.Region.Environment.Scenes; | 30 | using OpenSim.Region.Environment.Scenes; |
31 | using Nini.Config; | ||
31 | 32 | ||
32 | namespace OpenSim | 33 | namespace OpenSim |
33 | { | 34 | { |
@@ -52,70 +53,16 @@ namespace OpenSim | |||
52 | 53 | ||
53 | Console.WriteLine("Starting...\n"); | 54 | Console.WriteLine("Starting...\n"); |
54 | 55 | ||
55 | bool sandBoxMode = true; | 56 | ArgvConfigSource source = new ArgvConfigSource(args); |
56 | bool startLoginServer = true; | ||
57 | string physicsEngine = "basicphysics"; | ||
58 | 57 | ||
59 | bool userAccounts = false; | 58 | source.AddSwitch("Startup", "inifile"); |
60 | bool gridLocalAsset = false; | 59 | source.AddSwitch("Startup", "configfile"); |
61 | bool useConfigFile = false; | 60 | source.AddSwitch("Startup", "gridmode"); |
62 | bool silent = false; | 61 | source.AddSwitch("Startup", "physics"); |
63 | string configFile = "simconfig.xml"; | 62 | source.AddSwitch("Startup", "config"); |
64 | 63 | source.AddSwitch("Startup", "noverbose"); | |
65 | for (int i = 0; i < args.Length; i++) | ||
66 | { | ||
67 | if (args[i] == "-gridmode") | ||
68 | { | ||
69 | sandBoxMode = false; | ||
70 | startLoginServer = false; | ||
71 | } | ||
72 | |||
73 | if (args[i] == "-accounts") | ||
74 | { | ||
75 | userAccounts = true; | ||
76 | } | ||
77 | if (args[i] == "-realphysx") | ||
78 | { | ||
79 | physicsEngine = "RealPhysX"; | ||
80 | } | ||
81 | if (args[i] == "-bulletX") | ||
82 | { | ||
83 | physicsEngine = "BulletXEngine"; | ||
84 | } | ||
85 | if (args[i] == "-ode") | ||
86 | { | ||
87 | physicsEngine = "OpenDynamicsEngine"; | ||
88 | } | ||
89 | if (args[i] == "-localasset") | ||
90 | { | ||
91 | gridLocalAsset = true; | ||
92 | } | ||
93 | if (args[i] == "-configfile") | ||
94 | { | ||
95 | useConfigFile = true; | ||
96 | } | ||
97 | if (args[i] == "-noverbose") | ||
98 | { | ||
99 | silent = true; | ||
100 | } | ||
101 | if (args[i] == "-config") | ||
102 | { | ||
103 | try | ||
104 | { | ||
105 | i++; | ||
106 | configFile = args[i]; | ||
107 | } | ||
108 | catch (Exception e) | ||
109 | { | ||
110 | Console.WriteLine("-config: Please specify a config file. (" + e.ToString() + ")"); | ||
111 | } | ||
112 | } | ||
113 | } | ||
114 | |||
115 | OpenSimMain sim = new OpenSimMain(sandBoxMode, startLoginServer, physicsEngine, useConfigFile, silent, configFile); | ||
116 | 64 | ||
117 | sim.user_accounts = userAccounts; | 65 | OpenSimMain sim = new OpenSimMain(source); |
118 | sim.m_gridLocalAsset = gridLocalAsset; | ||
119 | 66 | ||
120 | sim.StartUp(); | 67 | sim.StartUp(); |
121 | 68 | ||
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index fbd6790..c68f75e 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs | |||
@@ -29,6 +29,7 @@ | |||
29 | using System; | 29 | using System; |
30 | using System.IO; | 30 | using System.IO; |
31 | using libsecondlife; | 31 | using libsecondlife; |
32 | using Nini.Config; | ||
32 | using OpenSim.Assets; | 33 | using OpenSim.Assets; |
33 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
@@ -39,7 +40,7 @@ using OpenSim.Framework.Servers; | |||
39 | using OpenSim.Framework.Types; | 40 | using OpenSim.Framework.Types; |
40 | using OpenSim.Framework.Configuration; | 41 | using OpenSim.Framework.Configuration; |
41 | using OpenSim.Physics.Manager; | 42 | using OpenSim.Physics.Manager; |
42 | 43 | ||
43 | using OpenSim.Region.ClientStack; | 44 | using OpenSim.Region.ClientStack; |
44 | using OpenSim.Region.Communications.Local; | 45 | using OpenSim.Region.Communications.Local; |
45 | using OpenSim.Region.Communications.OGS1; | 46 | using OpenSim.Region.Communications.OGS1; |
@@ -57,7 +58,6 @@ namespace OpenSim | |||
57 | { | 58 | { |
58 | public string m_physicsEngine; | 59 | public string m_physicsEngine; |
59 | public bool m_sandbox; | 60 | public bool m_sandbox; |
60 | public bool m_loginserver; | ||
61 | public bool user_accounts; | 61 | public bool user_accounts; |
62 | public bool m_gridLocalAsset; | 62 | public bool m_gridLocalAsset; |
63 | protected bool m_useConfigFile; | 63 | protected bool m_useConfigFile; |
@@ -70,18 +70,37 @@ namespace OpenSim | |||
70 | private bool m_silent; | 70 | private bool m_silent; |
71 | private string m_logFilename = ("region-console-" + Guid.NewGuid().ToString() + ".log"); | 71 | private string m_logFilename = ("region-console-" + Guid.NewGuid().ToString() + ".log"); |
72 | 72 | ||
73 | public OpenSimMain(bool sandBoxMode, bool startLoginServer, string physicsEngineName, bool useConfigFile, bool silent, string configFileName) | 73 | public OpenSimMain(IConfigSource configSource) |
74 | :base( ) | 74 | : base() |
75 | { | ||
76 | IConfigSource startupSource = configSource; | ||
77 | string iniFile = startupSource.Configs["Startup"].GetString("inifile", "NA"); | ||
78 | if (iniFile != "NA") | ||
79 | { | ||
80 | //a ini is set to be used for startup settings | ||
81 | string iniFilePath = Path.Combine(Util.configDir(), iniFile); | ||
82 | if (File.Exists(iniFilePath)) | ||
83 | { | ||
84 | startupSource = new IniConfigSource(iniFilePath); | ||
85 | |||
86 | //enable follow line, if we want the original config source(normally commandline args) merged with ini file settings. | ||
87 | //in this case we have it so if both sources have the same named setting, command line value will overwrite the ini file value. | ||
88 | //(as if someone has bothered to enter a command line arg, we should take notice of it) | ||
89 | //startupSource.Merge(configSource); | ||
90 | } | ||
91 | } | ||
92 | ReadConfigSettings(startupSource); | ||
93 | } | ||
94 | |||
95 | protected void ReadConfigSettings(IConfigSource configSource) | ||
75 | { | 96 | { |
76 | m_useConfigFile = useConfigFile; | 97 | m_useConfigFile = configSource.Configs["Startup"].GetBoolean("configfile", false); |
77 | m_sandbox = sandBoxMode; | 98 | m_sandbox = !configSource.Configs["Startup"].GetBoolean("gridmode", false); |
78 | m_loginserver = startLoginServer; | 99 | m_physicsEngine = configSource.Configs["Startup"].GetString("physics", "basicphysics"); |
79 | m_physicsEngine = physicsEngineName; | 100 | m_configFileName = configSource.Configs["Startup"].GetString("config", "simconfig.xml"); |
80 | m_configFileName = configFileName; | 101 | m_silent = configSource.Configs["Startup"].GetBoolean("noverbose", false); |
81 | m_silent = silent; | ||
82 | } | 102 | } |
83 | 103 | ||
84 | |||
85 | /// <summary> | 104 | /// <summary> |
86 | /// Performs initialisation of the scene, such as loading configuration from disk. | 105 | /// Performs initialisation of the scene, such as loading configuration from disk. |
87 | /// </summary> | 106 | /// </summary> |
@@ -91,7 +110,7 @@ namespace OpenSim | |||
91 | { | 110 | { |
92 | Directory.CreateDirectory(Util.logDir()); | 111 | Directory.CreateDirectory(Util.logDir()); |
93 | } | 112 | } |
94 | m_log = new LogBase(Path.Combine(Util.logDir(),m_logFilename), "Region", this, m_silent); | 113 | m_log = new LogBase(Path.Combine(Util.logDir(), m_logFilename), "Region", this, m_silent); |
95 | MainLog.Instance = m_log; | 114 | MainLog.Instance = m_log; |
96 | 115 | ||
97 | base.StartUp(); | 116 | base.StartUp(); |
@@ -103,11 +122,11 @@ namespace OpenSim | |||
103 | 122 | ||
104 | if (m_sandbox) | 123 | if (m_sandbox) |
105 | { | 124 | { |
106 | m_commsManager = new CommunicationsLocal( m_networkServersInfo, m_httpServer, m_assetCache); | 125 | m_commsManager = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache); |
107 | } | 126 | } |
108 | else | 127 | else |
109 | { | 128 | { |
110 | m_commsManager = new CommunicationsOGS1( m_networkServersInfo, m_httpServer , m_assetCache); | 129 | m_commsManager = new CommunicationsOGS1(m_networkServersInfo, m_httpServer, m_assetCache); |
111 | } | 130 | } |
112 | 131 | ||
113 | 132 | ||
@@ -129,15 +148,15 @@ namespace OpenSim | |||
129 | 148 | ||
130 | for (int i = 0; i < configFiles.Length; i++) | 149 | for (int i = 0; i < configFiles.Length; i++) |
131 | { | 150 | { |
132 | Console.WriteLine("Loading region config file"); | 151 | //Console.WriteLine("Loading region config file"); |
133 | RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), configFiles[i]); | 152 | RegionInfo regionInfo = new RegionInfo("REGION CONFIG #" + (i + 1), configFiles[i]); |
134 | 153 | ||
135 | UDPServer udpServer; | 154 | UDPServer udpServer; |
136 | Scene scene = SetupScene(regionInfo, out udpServer); | 155 | Scene scene = SetupScene(regionInfo, out udpServer); |
137 | 156 | ||
138 | m_localScenes.Add(scene); | 157 | m_localScenes.Add(scene); |
139 | 158 | ||
140 | 159 | ||
141 | m_udpServers.Add(udpServer); | 160 | m_udpServers.Add(udpServer); |
142 | m_regionData.Add(regionInfo); | 161 | m_regionData.Add(regionInfo); |
143 | } | 162 | } |
@@ -148,7 +167,7 @@ namespace OpenSim | |||
148 | this.m_udpServers[i].ServerListener(); | 167 | this.m_udpServers[i].ServerListener(); |
149 | } | 168 | } |
150 | 169 | ||
151 | 170 | ||
152 | } | 171 | } |
153 | 172 | ||
154 | protected override StorageManager CreateStorageManager(RegionInfo regionInfo) | 173 | protected override StorageManager CreateStorageManager(RegionInfo regionInfo) |
@@ -160,10 +179,10 @@ namespace OpenSim | |||
160 | { | 179 | { |
161 | return new Scene(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer); | 180 | return new Scene(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer); |
162 | } | 181 | } |
163 | 182 | ||
164 | protected override void Initialize() | 183 | protected override void Initialize() |
165 | { | 184 | { |
166 | m_networkServersInfo = new NetworkServersInfo("NETWORK SERVERS INFO", Path.Combine(Util.configDir(),"network_servers_information.xml")); | 185 | m_networkServersInfo = new NetworkServersInfo("NETWORK SERVERS INFO", Path.Combine(Util.configDir(), "network_servers_information.xml")); |
167 | m_httpServerPort = m_networkServersInfo.HttpListenerPort; | 186 | m_httpServerPort = m_networkServersInfo.HttpListenerPort; |
168 | m_assetCache = new AssetCache("OpenSim.Region.GridInterfaces.Local.dll", m_networkServersInfo.AssetURL, m_networkServersInfo.AssetSendKey); | 187 | m_assetCache = new AssetCache("OpenSim.Region.GridInterfaces.Local.dll", m_networkServersInfo.AssetURL, m_networkServersInfo.AssetSendKey); |
169 | } | 188 | } |
@@ -174,15 +193,15 @@ namespace OpenSim | |||
174 | { | 193 | { |
175 | Directory.CreateDirectory(Util.logDir()); | 194 | Directory.CreateDirectory(Util.logDir()); |
176 | } | 195 | } |
177 | 196 | ||
178 | return new LogBase((Path.Combine(Util.logDir(),m_logFilename)), "Region", this, m_silent); | 197 | return new LogBase((Path.Combine(Util.logDir(), m_logFilename)), "Region", this, m_silent); |
179 | } | 198 | } |
180 | 199 | ||
181 | # region Setup methods | 200 | # region Setup methods |
182 | 201 | ||
183 | protected override PhysicsScene GetPhysicsScene( ) | 202 | protected override PhysicsScene GetPhysicsScene() |
184 | { | 203 | { |
185 | return GetPhysicsScene( m_physicsEngine ); | 204 | return GetPhysicsScene(m_physicsEngine); |
186 | } | 205 | } |
187 | 206 | ||
188 | private class SimStatusHandler : IStreamHandler | 207 | private class SimStatusHandler : IStreamHandler |
@@ -201,7 +220,7 @@ namespace OpenSim | |||
201 | { | 220 | { |
202 | get { return "GET"; } | 221 | get { return "GET"; } |
203 | } | 222 | } |
204 | 223 | ||
205 | public string Path | 224 | public string Path |
206 | { | 225 | { |
207 | get { return "/simstatus/"; } | 226 | get { return "/simstatus/"; } |
diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs index 3f1ba18..ea93050 100644 --- a/OpenSim/Region/Environment/PermissionManager.cs +++ b/OpenSim/Region/Environment/PermissionManager.cs | |||
@@ -57,7 +57,7 @@ namespace OpenSim.Region.Environment | |||
57 | return false; | 57 | return false; |
58 | 58 | ||
59 | SceneObject task = (SceneObject)m_scene.Entities[obj]; | 59 | SceneObject task = (SceneObject)m_scene.Entities[obj]; |
60 | LLUUID taskOwner = null; // Since we dont have a 'owner' property on task yet | 60 | LLUUID taskOwner = task.rootPrimitive.OwnerID; |
61 | 61 | ||
62 | // Object owners should be able to edit their own content | 62 | // Object owners should be able to edit their own content |
63 | if (user == taskOwner) | 63 | if (user == taskOwner) |
diff --git a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs index 8ed04d9..3eb34b4 100644 --- a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs +++ b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs | |||
@@ -94,16 +94,24 @@ namespace OpenSim.Region.Environment.Scenes | |||
94 | return dupe; | 94 | return dupe; |
95 | } | 95 | } |
96 | 96 | ||
97 | /// <summary> | ||
98 | /// | ||
99 | /// </summary> | ||
100 | /// <param name="part"></param> | ||
97 | public void CopyRootPart(AllNewSceneObjectPart2 part) | 101 | public void CopyRootPart(AllNewSceneObjectPart2 part) |
98 | { | 102 | { |
99 | AllNewSceneObjectPart2 newPart = part.Copy(m_scene); | 103 | AllNewSceneObjectPart2 newPart = part.Copy(m_scene.PrimIDAllocate()); |
100 | this.m_parts.Add(newPart.UUID, newPart); | 104 | this.m_parts.Add(newPart.UUID, newPart); |
101 | this.SetPartAsRoot(newPart); | 105 | this.SetPartAsRoot(newPart); |
102 | } | 106 | } |
103 | 107 | ||
108 | /// <summary> | ||
109 | /// | ||
110 | /// </summary> | ||
111 | /// <param name="part"></param> | ||
104 | public void CopyPart(AllNewSceneObjectPart2 part) | 112 | public void CopyPart(AllNewSceneObjectPart2 part) |
105 | { | 113 | { |
106 | AllNewSceneObjectPart2 newPart = part.Copy(m_scene); | 114 | AllNewSceneObjectPart2 newPart = part.Copy(m_scene.PrimIDAllocate()); |
107 | this.m_parts.Add(newPart.UUID, newPart); | 115 | this.m_parts.Add(newPart.UUID, newPart); |
108 | this.SetPartAsNonRoot(newPart); | 116 | this.SetPartAsNonRoot(newPart); |
109 | } | 117 | } |
diff --git a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs index 65b4287..42acab9 100644 --- a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs +++ b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs | |||
@@ -27,7 +27,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
27 | public uint EveryoneMask = FULL_MASK_PERMISSIONS; | 27 | public uint EveryoneMask = FULL_MASK_PERMISSIONS; |
28 | public uint BaseMask = FULL_MASK_PERMISSIONS; | 28 | public uint BaseMask = FULL_MASK_PERMISSIONS; |
29 | 29 | ||
30 | protected PrimitiveBaseShape m_shape; | 30 | |
31 | protected byte[] m_particleSystem = new byte[0]; | 31 | protected byte[] m_particleSystem = new byte[0]; |
32 | 32 | ||
33 | protected AllNewSceneObjectGroup2 m_parentGroup; | 33 | protected AllNewSceneObjectGroup2 m_parentGroup; |
@@ -54,9 +54,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
54 | } | 54 | } |
55 | 55 | ||
56 | protected string m_name; | 56 | protected string m_name; |
57 | /// <summary> | ||
58 | /// | ||
59 | /// </summary> | ||
60 | public virtual string Name | 57 | public virtual string Name |
61 | { | 58 | { |
62 | get { return m_name; } | 59 | get { return m_name; } |
@@ -154,9 +151,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
154 | set { m_touchName = value; } | 151 | set { m_touchName = value; } |
155 | } | 152 | } |
156 | 153 | ||
154 | protected PrimitiveBaseShape m_shape; | ||
157 | public PrimitiveBaseShape Shape | 155 | public PrimitiveBaseShape Shape |
158 | { | 156 | { |
159 | |||
160 | get { return this.m_shape; } | 157 | get { return this.m_shape; } |
161 | set { m_shape = value; } | 158 | set { m_shape = value; } |
162 | } | 159 | } |
@@ -245,14 +242,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
245 | /// | 242 | /// |
246 | /// </summary> | 243 | /// </summary> |
247 | /// <returns></returns> | 244 | /// <returns></returns> |
248 | public AllNewSceneObjectPart2 Copy(Scene scene) | 245 | public AllNewSceneObjectPart2 Copy(uint localID) |
249 | { | 246 | { |
250 | AllNewSceneObjectPart2 dupe = (AllNewSceneObjectPart2)this.MemberwiseClone(); | 247 | AllNewSceneObjectPart2 dupe = (AllNewSceneObjectPart2)this.MemberwiseClone(); |
251 | dupe.m_shape = m_shape.Copy(); | 248 | dupe.m_shape = m_shape.Copy(); |
252 | dupe.m_regionHandle = m_regionHandle; | 249 | dupe.m_regionHandle = m_regionHandle; |
253 | uint newLocalID = scene.PrimIDAllocate(); | ||
254 | dupe.UUID = LLUUID.Random(); | 250 | dupe.UUID = LLUUID.Random(); |
255 | dupe.LocalID = newLocalID; | 251 | dupe.LocalID = localID; |
256 | dupe.OffsetPosition = new LLVector3(OffsetPosition.X, OffsetPosition.Y, OffsetPosition.Z); | 252 | dupe.OffsetPosition = new LLVector3(OffsetPosition.X, OffsetPosition.Y, OffsetPosition.Z); |
257 | dupe.RotationOffset = new LLQuaternion(RotationOffset.X, RotationOffset.Y, RotationOffset.Z, RotationOffset.W); | 253 | dupe.RotationOffset = new LLQuaternion(RotationOffset.X, RotationOffset.Y, RotationOffset.Z, RotationOffset.W); |
258 | dupe.Velocity = new LLVector3(0, 0, 0); | 254 | dupe.Velocity = new LLVector3(0, 0, 0); |
@@ -303,7 +299,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
303 | } | 299 | } |
304 | else | 300 | else |
305 | { | 301 | { |
306 | if (m_updateFlag == 2) // is a new prim just been created/reloaded or has major changes | 302 | if (m_updateFlag == 2) // is a new prim, just created/reloaded or has major changes |
307 | { | 303 | { |
308 | SendFullUpdateToAllClients(); | 304 | SendFullUpdateToAllClients(); |
309 | ClearUpdateSchedule(); | 305 | ClearUpdateSchedule(); |