diff options
Diffstat (limited to 'OpenSim/OpenSim.World/World.cs')
-rw-r--r-- | OpenSim/OpenSim.World/World.cs | 133 |
1 files changed, 39 insertions, 94 deletions
diff --git a/OpenSim/OpenSim.World/World.cs b/OpenSim/OpenSim.World/World.cs index 29c75e8..77af862 100644 --- a/OpenSim/OpenSim.World/World.cs +++ b/OpenSim/OpenSim.World/World.cs | |||
@@ -36,6 +36,9 @@ namespace OpenSim.world | |||
36 | public string m_datastore; | 36 | public string m_datastore; |
37 | 37 | ||
38 | #region Properties | 38 | #region Properties |
39 | /// <summary> | ||
40 | /// | ||
41 | /// </summary> | ||
39 | public PhysicsScene PhysScene | 42 | public PhysicsScene PhysScene |
40 | { | 43 | { |
41 | set | 44 | set |
@@ -79,12 +82,11 @@ namespace OpenSim.world | |||
79 | TerrainManager = new TerrainManager(new SecondLife()); | 82 | TerrainManager = new TerrainManager(new SecondLife()); |
80 | Terrain = new TerrainEngine(); | 83 | Terrain = new TerrainEngine(); |
81 | Avatar.SetupTemplate("avatar-texture.dat"); | 84 | Avatar.SetupTemplate("avatar-texture.dat"); |
82 | // MainConsole.Instance.WriteLine("World.cs - Creating script engine instance"); | 85 | |
83 | // Initialise this only after the world has loaded | ||
84 | // Scripts = new ScriptEngine(this); | ||
85 | Avatar.LoadAnims(); | 86 | Avatar.LoadAnims(); |
86 | this.SetDefaultScripts(); | 87 | |
87 | this.LoadScriptEngines(); | 88 | //this.SetDefaultScripts(); |
89 | //this.LoadScriptEngines(); | ||
88 | 90 | ||
89 | 91 | ||
90 | } | 92 | } |
@@ -95,6 +97,9 @@ namespace OpenSim.world | |||
95 | } | 97 | } |
96 | #endregion | 98 | #endregion |
97 | 99 | ||
100 | /// <summary> | ||
101 | /// | ||
102 | /// </summary> | ||
98 | public void StartTimer() | 103 | public void StartTimer() |
99 | { | 104 | { |
100 | m_heartbeatTimer.Enabled = true; | 105 | m_heartbeatTimer.Enabled = true; |
@@ -102,79 +107,7 @@ namespace OpenSim.world | |||
102 | m_heartbeatTimer.Elapsed += new ElapsedEventHandler(this.Heartbeat); | 107 | m_heartbeatTimer.Elapsed += new ElapsedEventHandler(this.Heartbeat); |
103 | } | 108 | } |
104 | 109 | ||
105 | #region Script Methods | 110 | |
106 | /// <summary> | ||
107 | /// Loads a new script into the specified entity | ||
108 | /// </summary> | ||
109 | /// <param name="entity">Entity to be scripted</param> | ||
110 | /// <param name="script">The script to load</param> | ||
111 | public void AddScript(Entity entity, Script script) | ||
112 | { | ||
113 | try | ||
114 | { | ||
115 | ScriptHandler scriptHandler = new ScriptHandler(script, entity, this); | ||
116 | m_scriptHandlers.Add(scriptHandler.ScriptId, scriptHandler); | ||
117 | } | ||
118 | catch (Exception e) | ||
119 | { | ||
120 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, "World.cs: AddScript() - Failed with exception " + e.ToString()); | ||
121 | } | ||
122 | } | ||
123 | |||
124 | /// <summary> | ||
125 | /// Loads a new script into the specified entity, using a script loaded from a string. | ||
126 | /// </summary> | ||
127 | /// <param name="entity">The entity to be scripted</param> | ||
128 | /// <param name="scriptData">The string containing the script</param> | ||
129 | public void AddScript(Entity entity, string scriptData) | ||
130 | { | ||
131 | try | ||
132 | { | ||
133 | int scriptstart = 0; | ||
134 | int scriptend = 0; | ||
135 | string substring; | ||
136 | scriptstart = scriptData.LastIndexOf("<Script>"); | ||
137 | scriptend = scriptData.LastIndexOf("</Script>"); | ||
138 | substring = scriptData.Substring(scriptstart + 8, scriptend - scriptstart - 8); | ||
139 | substring = substring.Trim(); | ||
140 | //Console.WriteLine("searching for script to add: " + substring); | ||
141 | |||
142 | ScriptFactory scriptFactory; | ||
143 | //Console.WriteLine("script string is " + substring); | ||
144 | if (substring.StartsWith("<ScriptEngine:")) | ||
145 | { | ||
146 | string substring1 = ""; | ||
147 | string script = ""; | ||
148 | // Console.WriteLine("searching for script engine"); | ||
149 | substring1 = substring.Remove(0, 14); | ||
150 | int dev = substring1.IndexOf(','); | ||
151 | string sEngine = substring1.Substring(0, dev); | ||
152 | substring1 = substring1.Remove(0, dev + 1); | ||
153 | int end = substring1.IndexOf('>'); | ||
154 | string sName = substring1.Substring(0, end); | ||
155 | //Console.WriteLine(" script info : " + sEngine + " , " + sName); | ||
156 | int startscript = substring.IndexOf('>'); | ||
157 | script = substring.Remove(0, startscript + 1); | ||
158 | // Console.WriteLine("script data is " + script); | ||
159 | if (this.scriptEngines.ContainsKey(sEngine)) | ||
160 | { | ||
161 | this.scriptEngines[sEngine].LoadScript(script, sName, entity.localid); | ||
162 | } | ||
163 | } | ||
164 | else if (this.m_scripts.TryGetValue(substring, out scriptFactory)) | ||
165 | { | ||
166 | //Console.WriteLine("added script"); | ||
167 | this.AddScript(entity, scriptFactory()); | ||
168 | } | ||
169 | } | ||
170 | catch (Exception e) | ||
171 | { | ||
172 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, "World.cs: AddScript() - Failed with exception " + e.ToString()); | ||
173 | } | ||
174 | } | ||
175 | |||
176 | #endregion | ||
177 | |||
178 | #region Update Methods | 111 | #region Update Methods |
179 | 112 | ||
180 | 113 | ||
@@ -240,6 +173,10 @@ namespace OpenSim.world | |||
240 | updateLock.ReleaseMutex(); | 173 | updateLock.ReleaseMutex(); |
241 | } | 174 | } |
242 | 175 | ||
176 | /// <summary> | ||
177 | /// | ||
178 | /// </summary> | ||
179 | /// <returns></returns> | ||
243 | public bool Backup() | 180 | public bool Backup() |
244 | { | 181 | { |
245 | try | 182 | try |
@@ -321,14 +258,6 @@ namespace OpenSim.world | |||
321 | } | 258 | } |
322 | } | 259 | } |
323 | 260 | ||
324 | public void SetDefaultScripts() | ||
325 | { | ||
326 | this.m_scripts.Add("FollowRandomAvatar", delegate() | ||
327 | { | ||
328 | return new OpenSim.RegionServer.world.scripting.FollowRandomAvatar(); | ||
329 | }); | ||
330 | } | ||
331 | |||
332 | #endregion | 261 | #endregion |
333 | 262 | ||
334 | #region Regenerate Terrain | 263 | #region Regenerate Terrain |
@@ -453,14 +382,6 @@ namespace OpenSim.world | |||
453 | 382 | ||
454 | #region Primitives Methods | 383 | #region Primitives Methods |
455 | 384 | ||
456 | /// <summary> | ||
457 | /// Sends prims to a client | ||
458 | /// </summary> | ||
459 | /// <param name="RemoteClient">Client to send to</param> | ||
460 | public void GetInitialPrims(IClientAPI RemoteClient) | ||
461 | { | ||
462 | |||
463 | } | ||
464 | 385 | ||
465 | /// <summary> | 386 | /// <summary> |
466 | /// Loads the World's objects | 387 | /// Loads the World's objects |
@@ -487,11 +408,21 @@ namespace OpenSim.world | |||
487 | 408 | ||
488 | } | 409 | } |
489 | 410 | ||
411 | /// <summary> | ||
412 | /// | ||
413 | /// </summary> | ||
414 | /// <param name="addPacket"></param> | ||
415 | /// <param name="agentClient"></param> | ||
490 | public void AddNewPrim(Packet addPacket, IClientAPI agentClient) | 416 | public void AddNewPrim(Packet addPacket, IClientAPI agentClient) |
491 | { | 417 | { |
492 | AddNewPrim((ObjectAddPacket)addPacket, agentClient.AgentId); | 418 | AddNewPrim((ObjectAddPacket)addPacket, agentClient.AgentId); |
493 | } | 419 | } |
494 | 420 | ||
421 | /// <summary> | ||
422 | /// | ||
423 | /// </summary> | ||
424 | /// <param name="addPacket"></param> | ||
425 | /// <param name="ownerID"></param> | ||
495 | public void AddNewPrim(ObjectAddPacket addPacket, LLUUID ownerID) | 426 | public void AddNewPrim(ObjectAddPacket addPacket, LLUUID ownerID) |
496 | { | 427 | { |
497 | 428 | ||
@@ -501,6 +432,12 @@ namespace OpenSim.world | |||
501 | 432 | ||
502 | #region Add/Remove Avatar Methods | 433 | #region Add/Remove Avatar Methods |
503 | 434 | ||
435 | /// <summary> | ||
436 | /// | ||
437 | /// </summary> | ||
438 | /// <param name="remoteClient"></param> | ||
439 | /// <param name="agentID"></param> | ||
440 | /// <param name="child"></param> | ||
504 | public override void AddNewAvatar(IClientAPI remoteClient, LLUUID agentID, bool child) | 441 | public override void AddNewAvatar(IClientAPI remoteClient, LLUUID agentID, bool child) |
505 | { | 442 | { |
506 | remoteClient.OnRegionHandShakeReply += new GenericCall(this.SendLayerData); | 443 | remoteClient.OnRegionHandShakeReply += new GenericCall(this.SendLayerData); |
@@ -552,6 +489,10 @@ namespace OpenSim.world | |||
552 | return; | 489 | return; |
553 | } | 490 | } |
554 | 491 | ||
492 | /// <summary> | ||
493 | /// | ||
494 | /// </summary> | ||
495 | /// <param name="agentID"></param> | ||
555 | public override void RemoveAvatar(LLUUID agentID) | 496 | public override void RemoveAvatar(LLUUID agentID) |
556 | { | 497 | { |
557 | return; | 498 | return; |
@@ -562,6 +503,10 @@ namespace OpenSim.world | |||
562 | //The idea is to have a group of method that return a list of avatars meeting some requirement | 503 | //The idea is to have a group of method that return a list of avatars meeting some requirement |
563 | // ie it could be all Avatars within a certain range of the calling prim/avatar. | 504 | // ie it could be all Avatars within a certain range of the calling prim/avatar. |
564 | 505 | ||
506 | /// <summary> | ||
507 | /// | ||
508 | /// </summary> | ||
509 | /// <returns></returns> | ||
565 | public List<Avatar> RequestAvatarList() | 510 | public List<Avatar> RequestAvatarList() |
566 | { | 511 | { |
567 | List<Avatar> result = new List<Avatar>(); | 512 | List<Avatar> result = new List<Avatar>(); |