diff options
author | mingchen | 2007-06-08 21:30:51 +0000 |
---|---|---|
committer | mingchen | 2007-06-08 21:30:51 +0000 |
commit | 2c04171990df9e01cd4c5aa600a6eaa1487f9605 (patch) | |
tree | c5664038ce624fb0f6edb63db6c62587e45518a3 /OpenSim | |
parent | *Moved SendRegionHandshake back to IClientAPI and modded sendRegionHandshakeT... (diff) | |
download | opensim-SC_OLD-2c04171990df9e01cd4c5aa600a6eaa1487f9605.zip opensim-SC_OLD-2c04171990df9e01cd4c5aa600a6eaa1487f9605.tar.gz opensim-SC_OLD-2c04171990df9e01cd4c5aa600a6eaa1487f9605.tar.bz2 opensim-SC_OLD-2c04171990df9e01cd4c5aa600a6eaa1487f9605.tar.xz |
*Added delegates and events for parcel and estate management
*Only thing left is to get the master user setup in both sandbox and grid mode
Diffstat (limited to '')
-rw-r--r-- | OpenSim/OpenSim.RegionServer/ClientView.API.cs | 8 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs | 25 | ||||
-rw-r--r-- | OpenSim/OpenSim.World/Avatar.cs | 7 | ||||
-rw-r--r-- | OpenSim/OpenSim.World/ParcelManager.cs | 58 | ||||
-rw-r--r-- | OpenSim/OpenSim.World/World.cs | 10 | ||||
-rw-r--r-- | OpenSim/OpenSim/OpenSimMain.cs | 9 |
6 files changed, 112 insertions, 5 deletions
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.API.cs b/OpenSim/OpenSim.RegionServer/ClientView.API.cs index dd9adac..a6e5317 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.API.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.API.cs | |||
@@ -4,6 +4,7 @@ using System.Text; | |||
4 | using OpenSim.Framework.Interfaces; | 4 | using OpenSim.Framework.Interfaces; |
5 | using OpenSim.Framework.Inventory; | 5 | using OpenSim.Framework.Inventory; |
6 | using OpenSim.Framework.Types; | 6 | using OpenSim.Framework.Types; |
7 | |||
7 | using libsecondlife; | 8 | using libsecondlife; |
8 | using libsecondlife.Packets; | 9 | using libsecondlife.Packets; |
9 | 10 | ||
@@ -36,6 +37,13 @@ namespace OpenSim | |||
36 | public event NewAvatar OnNewAvatar; | 37 | public event NewAvatar OnNewAvatar; |
37 | public event GenericCall6 OnRemoveAvatar; | 38 | public event GenericCall6 OnRemoveAvatar; |
38 | 39 | ||
40 | public event ParcelPropertiesRequest OnParcelPropertiesRequest; | ||
41 | public event ParcelDivideRequest OnParcelDivideRequest; | ||
42 | public event ParcelJoinRequest OnParcelJoinRequest; | ||
43 | public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest; | ||
44 | |||
45 | public event EstateOwnerMessageRequest OnEstateOwnerMessage; | ||
46 | |||
39 | /// <summary> | 47 | /// <summary> |
40 | /// | 48 | /// |
41 | /// </summary> | 49 | /// </summary> |
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs index d215a23..8b94a82 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs | |||
@@ -454,6 +454,31 @@ namespace OpenSim | |||
454 | break; | 454 | break; |
455 | #endregion | 455 | #endregion |
456 | 456 | ||
457 | #region Parcel related packets | ||
458 | case PacketType.ParcelPropertiesRequest: | ||
459 | ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack; | ||
460 | OnParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West), (int)Math.Round(propertiesRequest.ParcelData.South), (int)Math.Round(propertiesRequest.ParcelData.East), (int)Math.Round(propertiesRequest.ParcelData.North), propertiesRequest.ParcelData.SequenceID, propertiesRequest.ParcelData.SnapSelection, this); | ||
461 | break; | ||
462 | case PacketType.ParcelDivide: | ||
463 | ParcelDividePacket parcelDivide = (ParcelDividePacket)Pack; | ||
464 | OnParcelDivideRequest((int)Math.Round(parcelDivide.ParcelData.West), (int)Math.Round(parcelDivide.ParcelData.South), (int)Math.Round(parcelDivide.ParcelData.East), (int)Math.Round(parcelDivide.ParcelData.North), this); | ||
465 | break; | ||
466 | case PacketType.ParcelJoin: | ||
467 | ParcelJoinPacket parcelJoin = (ParcelJoinPacket)Pack; | ||
468 | OnParcelJoinRequest((int)Math.Round(parcelJoin.ParcelData.West), (int)Math.Round(parcelJoin.ParcelData.South), (int)Math.Round(parcelJoin.ParcelData.East), (int)Math.Round(parcelJoin.ParcelData.North), this); | ||
469 | break; | ||
470 | case PacketType.ParcelPropertiesUpdate: | ||
471 | ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket)Pack; | ||
472 | OnParcelPropertiesUpdateRequest(updatePacket, this); | ||
473 | break; | ||
474 | #endregion | ||
475 | |||
476 | #region Estate Packets | ||
477 | case PacketType.EstateOwnerMessage: | ||
478 | EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack; | ||
479 | OnEstateOwnerMessage(messagePacket, this); | ||
480 | break; | ||
481 | #endregion | ||
457 | #region unimplemented handlers | 482 | #region unimplemented handlers |
458 | case PacketType.AgentIsNowWearing: | 483 | case PacketType.AgentIsNowWearing: |
459 | // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; | 484 | // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; |
diff --git a/OpenSim/OpenSim.World/Avatar.cs b/OpenSim/OpenSim.World/Avatar.cs index d597ca7..6a4c0f8 100644 --- a/OpenSim/OpenSim.World/Avatar.cs +++ b/OpenSim/OpenSim.World/Avatar.cs | |||
@@ -83,6 +83,13 @@ namespace OpenSim.world | |||
83 | ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); | 83 | ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); |
84 | ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); | 84 | ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); |
85 | * */ | 85 | * */ |
86 | |||
87 | ControllingClient.OnParcelPropertiesRequest +=new ParcelPropertiesRequest(this.m_world.parcelManager.handleParcelPropertiesRequest); | ||
88 | ControllingClient.OnParcelDivideRequest += new ParcelDivideRequest(this.m_world.parcelManager.handleParcelDivideRequest); | ||
89 | ControllingClient.OnParcelJoinRequest += new ParcelJoinRequest(this.m_world.parcelManager.handleParcelJoinRequest); | ||
90 | ControllingClient.OnParcelPropertiesUpdateRequest += new ParcelPropertiesUpdateRequest(this.m_world.parcelManager.handleParcelPropertiesUpdateRequest); | ||
91 | |||
92 | ControllingClient.OnEstateOwnerMessage += new EstateOwnerMessageRequest(this.m_world.estateManager.handleEstateOwnerMessage); | ||
86 | } | 93 | } |
87 | 94 | ||
88 | /// <summary> | 95 | /// <summary> |
diff --git a/OpenSim/OpenSim.World/ParcelManager.cs b/OpenSim/OpenSim.World/ParcelManager.cs index 9fbacd6..4a9bfb1 100644 --- a/OpenSim/OpenSim.World/ParcelManager.cs +++ b/OpenSim/OpenSim.World/ParcelManager.cs | |||
@@ -166,7 +166,7 @@ namespace OpenSim.world | |||
166 | parcelList.Remove(local_id); | 166 | parcelList.Remove(local_id); |
167 | } | 167 | } |
168 | 168 | ||
169 | public void performFinalParcelJoin(Parcel master, Parcel slave) | 169 | private void performFinalParcelJoin(Parcel master, Parcel slave) |
170 | { | 170 | { |
171 | int x, y; | 171 | int x, y; |
172 | bool[,] parcelBitmapSlave = slave.getParcelBitmap(); | 172 | bool[,] parcelBitmapSlave = slave.getParcelBitmap(); |
@@ -212,7 +212,7 @@ namespace OpenSim.world | |||
212 | /// <param name="end_y">North Point</param> | 212 | /// <param name="end_y">North Point</param> |
213 | /// <param name="attempting_user_id">LLUUID of user who is trying to subdivide</param> | 213 | /// <param name="attempting_user_id">LLUUID of user who is trying to subdivide</param> |
214 | /// <returns>Returns true if successful</returns> | 214 | /// <returns>Returns true if successful</returns> |
215 | public bool subdivide(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id) | 215 | private bool subdivide(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id) |
216 | { | 216 | { |
217 | //First, lets loop through the points and make sure they are all in the same parcel | 217 | //First, lets loop through the points and make sure they are all in the same parcel |
218 | //Get the parcel at start | 218 | //Get the parcel at start |
@@ -278,7 +278,7 @@ namespace OpenSim.world | |||
278 | /// <param name="end_y">y value in second parcel</param> | 278 | /// <param name="end_y">y value in second parcel</param> |
279 | /// <param name="attempting_user_id">LLUUID of the avatar trying to join the parcels</param> | 279 | /// <param name="attempting_user_id">LLUUID of the avatar trying to join the parcels</param> |
280 | /// <returns>Returns true if successful</returns> | 280 | /// <returns>Returns true if successful</returns> |
281 | public bool join(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id) | 281 | private bool join(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id) |
282 | { | 282 | { |
283 | end_x -= 4; | 283 | end_x -= 4; |
284 | end_y -= 4; | 284 | end_y -= 4; |
@@ -406,6 +406,58 @@ namespace OpenSim.world | |||
406 | packet.ParcelData.SequenceID = sequenceID; //Eh? | 406 | packet.ParcelData.SequenceID = sequenceID; //Eh? |
407 | remote_client.OutPacket((Packet)packet); | 407 | remote_client.OutPacket((Packet)packet); |
408 | } | 408 | } |
409 | |||
410 | public void handleParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client) | ||
411 | { | ||
412 | //Get the parcels within the bounds | ||
413 | List<Parcel> temp = new List<Parcel>(); | ||
414 | int x, y, i; | ||
415 | int inc_x = end_x - start_x; | ||
416 | int inc_y = end_y - start_y; | ||
417 | for (x = 0; x < inc_x; x++) | ||
418 | { | ||
419 | for (y = 0; y < inc_y; y++) | ||
420 | { | ||
421 | OpenSim.world.Parcel currentParcel = getParcel(start_x + x, start_y + y); | ||
422 | if (!temp.Contains(currentParcel)) | ||
423 | { | ||
424 | currentParcel.forceUpdateParcelInfo(); | ||
425 | temp.Add(currentParcel); | ||
426 | } | ||
427 | } | ||
428 | } | ||
429 | |||
430 | int requestResult = ParcelManager.PARCEL_RESULT_ONE_PARCEL; | ||
431 | if (temp.Count > 1) | ||
432 | { | ||
433 | requestResult = ParcelManager.PARCEL_RESULT_MULTIPLE_PARCELS; | ||
434 | } | ||
435 | |||
436 | for (i = 0; i < temp.Count; i++) | ||
437 | { | ||
438 | temp[i].sendParcelProperties(sequence_id, snap_selection, requestResult, remote_client); | ||
439 | } | ||
440 | |||
441 | |||
442 | sendParcelOverlay(remote_client); | ||
443 | } | ||
444 | |||
445 | public void handleParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client) | ||
446 | { | ||
447 | if (parcelList.ContainsKey(packet.ParcelData.LocalID)) | ||
448 | { | ||
449 | parcelList[packet.ParcelData.LocalID].updateParcelProperties(packet, remote_client); | ||
450 | } | ||
451 | } | ||
452 | public void handleParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) | ||
453 | { | ||
454 | subdivide(west, south, east, north, remote_client.AgentId); | ||
455 | } | ||
456 | public void handleParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client) | ||
457 | { | ||
458 | join(west, south, east, north, remote_client.AgentId); | ||
459 | |||
460 | } | ||
409 | #endregion | 461 | #endregion |
410 | 462 | ||
411 | /// <summary> | 463 | /// <summary> |
diff --git a/OpenSim/OpenSim.World/World.cs b/OpenSim/OpenSim.World/World.cs index e51c983..dc9602e 100644 --- a/OpenSim/OpenSim.World/World.cs +++ b/OpenSim/OpenSim.World/World.cs | |||
@@ -217,6 +217,16 @@ namespace OpenSim.world | |||
217 | Entities[UUID].BackUp(); | 217 | Entities[UUID].BackUp(); |
218 | } | 218 | } |
219 | 219 | ||
220 | //Parcel backup routines | ||
221 | ParcelData[] parcels = new ParcelData[parcelManager.parcelList.Count]; | ||
222 | int i = 0; | ||
223 | foreach (OpenSim.world.Parcel parcel in parcelManager.parcelList.Values) | ||
224 | { | ||
225 | parcels[i] = parcel.parcelData; | ||
226 | i++; | ||
227 | } | ||
228 | localStorage.SaveParcels(parcels); | ||
229 | |||
220 | // Backup successful | 230 | // Backup successful |
221 | return true; | 231 | return true; |
222 | } | 232 | } |
diff --git a/OpenSim/OpenSim/OpenSimMain.cs b/OpenSim/OpenSim/OpenSimMain.cs index cbcf3db..1864e06 100644 --- a/OpenSim/OpenSim/OpenSimMain.cs +++ b/OpenSim/OpenSim/OpenSimMain.cs | |||
@@ -253,6 +253,8 @@ namespace OpenSim | |||
253 | LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this.m_physicsEngine); | 253 | LocalWorld.PhysScene = this.physManager.GetPhysicsScene(this.m_physicsEngine); |
254 | LocalWorld.PhysScene.SetTerrain(LocalWorld.Terrain.getHeights1D()); | 254 | LocalWorld.PhysScene.SetTerrain(LocalWorld.Terrain.getHeights1D()); |
255 | LocalWorld.LoadPrimsFromStorage(); | 255 | LocalWorld.LoadPrimsFromStorage(); |
256 | LocalWorld.localStorage.LoadParcels((ILocalStorageParcelReceiver)LocalWorld.parcelManager); | ||
257 | |||
256 | 258 | ||
257 | LocalWorld.StartTimer(); | 259 | LocalWorld.StartTimer(); |
258 | } | 260 | } |
@@ -417,11 +419,14 @@ namespace OpenSim | |||
417 | break; | 419 | break; |
418 | 420 | ||
419 | case "show": | 421 | case "show": |
420 | Show(cmdparams[0]); | 422 | if (cmdparams.Length > 0) |
423 | { | ||
424 | Show(cmdparams[0]); | ||
425 | } | ||
421 | break; | 426 | break; |
422 | 427 | ||
423 | case "terrain": | 428 | case "terrain": |
424 | string result = ""; | 429 | //string result = ""; |
425 | /* if (!((World)m_localWorld).Terrain.RunTerrainCmd(cmdparams, ref result)) | 430 | /* if (!((World)m_localWorld).Terrain.RunTerrainCmd(cmdparams, ref result)) |
426 | { | 431 | { |
427 | m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, result); | 432 | m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, result); |