diff options
Diffstat (limited to 'OpenSim/OpenSim.Region/World')
-rw-r--r-- | OpenSim/OpenSim.Region/World/Primitive.cs | 101 | ||||
-rw-r--r-- | OpenSim/OpenSim.Region/World/SceneObject.cs | 27 | ||||
-rw-r--r-- | OpenSim/OpenSim.Region/World/World.PacketHandlers.cs | 9 | ||||
-rw-r--r-- | OpenSim/OpenSim.Region/World/World.cs | 6 |
4 files changed, 84 insertions, 59 deletions
diff --git a/OpenSim/OpenSim.Region/World/Primitive.cs b/OpenSim/OpenSim.Region/World/Primitive.cs index dbdbdb9..0680eb3 100644 --- a/OpenSim/OpenSim.Region/World/Primitive.cs +++ b/OpenSim/OpenSim.Region/World/Primitive.cs | |||
@@ -41,9 +41,9 @@ namespace OpenSim.Region | |||
41 | { | 41 | { |
42 | public class Primitive : Entity | 42 | public class Primitive : Entity |
43 | { | 43 | { |
44 | protected PrimData primData; | 44 | internal PrimData primData; |
45 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); | 45 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); |
46 | private Dictionary<uint, IClientAPI> m_clientThreads; | 46 | // private Dictionary<uint, IClientAPI> m_clientThreads; |
47 | private ulong m_regionHandle; | 47 | private ulong m_regionHandle; |
48 | private const uint FULL_MASK_PERMISSIONS = 2147483647; | 48 | private const uint FULL_MASK_PERMISSIONS = 2147483647; |
49 | private bool physicsEnabled = false; | 49 | private bool physicsEnabled = false; |
@@ -95,7 +95,7 @@ namespace OpenSim.Region | |||
95 | /// <param name="world"></param> | 95 | /// <param name="world"></param> |
96 | public Primitive(Dictionary<uint, IClientAPI> clientThreads, ulong regionHandle, World world) | 96 | public Primitive(Dictionary<uint, IClientAPI> clientThreads, ulong regionHandle, World world) |
97 | { | 97 | { |
98 | m_clientThreads = clientThreads; | 98 | // m_clientThreads = clientThreads; |
99 | m_regionHandle = regionHandle; | 99 | m_regionHandle = regionHandle; |
100 | m_world = world; | 100 | m_world = world; |
101 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); | 101 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); |
@@ -112,7 +112,7 @@ namespace OpenSim.Region | |||
112 | /// <param name="localID"></param> | 112 | /// <param name="localID"></param> |
113 | public Primitive(Dictionary<uint, IClientAPI> clientThreads, ulong regionHandle, World world, LLUUID owner, LLUUID fullID, uint localID) | 113 | public Primitive(Dictionary<uint, IClientAPI> clientThreads, ulong regionHandle, World world, LLUUID owner, LLUUID fullID, uint localID) |
114 | { | 114 | { |
115 | m_clientThreads = clientThreads; | 115 | // m_clientThreads = clientThreads; |
116 | m_regionHandle = regionHandle; | 116 | m_regionHandle = regionHandle; |
117 | m_world = world; | 117 | m_world = world; |
118 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); | 118 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); |
@@ -134,7 +134,7 @@ namespace OpenSim.Region | |||
134 | /// <param name="position"></param> | 134 | /// <param name="position"></param> |
135 | public Primitive(Dictionary<uint, IClientAPI> clientThreads, ulong regionHandle, World world, LLUUID owner, uint localID, LLVector3 position) | 135 | public Primitive(Dictionary<uint, IClientAPI> clientThreads, ulong regionHandle, World world, LLUUID owner, uint localID, LLVector3 position) |
136 | { | 136 | { |
137 | m_clientThreads = clientThreads; | 137 | //m_clientThreads = clientThreads; |
138 | m_regionHandle = regionHandle; | 138 | m_regionHandle = regionHandle; |
139 | m_world = world; | 139 | m_world = world; |
140 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); | 140 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); |
@@ -191,11 +191,16 @@ namespace OpenSim.Region | |||
191 | /// </summary> | 191 | /// </summary> |
192 | public override void update() | 192 | public override void update() |
193 | { | 193 | { |
194 | if (this.updateFlag == 1) | 194 | if (this.updateFlag == 1) // is a new prim just been created/reloaded |
195 | { | 195 | { |
196 | this.SendFullUpdateToAllClients(); | 196 | this.SendFullUpdateToAllClients(); |
197 | this.updateFlag = 0; | 197 | this.updateFlag = 0; |
198 | } | 198 | } |
199 | if (this.updateFlag == 2) //some change has been made so update the clients | ||
200 | { | ||
201 | this.SendTerseUpdateToALLClients(); | ||
202 | this.updateFlag = 0; | ||
203 | } | ||
199 | } | 204 | } |
200 | 205 | ||
201 | /// <summary> | 206 | /// <summary> |
@@ -216,7 +221,8 @@ namespace OpenSim.Region | |||
216 | /// <param name="pos"></param> | 221 | /// <param name="pos"></param> |
217 | public void UpdatePosition(LLVector3 pos) | 222 | public void UpdatePosition(LLVector3 pos) |
218 | { | 223 | { |
219 | 224 | this.Pos = new LLVector3(pos.X, pos.Y, pos.Z); | |
225 | this.updateFlag = 2; | ||
220 | } | 226 | } |
221 | 227 | ||
222 | /// <summary> | 228 | /// <summary> |
@@ -272,58 +278,44 @@ namespace OpenSim.Region | |||
272 | 278 | ||
273 | } | 279 | } |
274 | 280 | ||
275 | /// <summary> | ||
276 | /// | ||
277 | /// </summary> | ||
278 | /// <param name="client"></param> | ||
279 | public void GetProperites(IClientAPI client) | ||
280 | { | ||
281 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); | ||
282 | proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; | ||
283 | proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); | ||
284 | proper.ObjectData[0].ItemID = LLUUID.Zero; | ||
285 | proper.ObjectData[0].CreationDate = (ulong)this.primData.CreationDate; | ||
286 | proper.ObjectData[0].CreatorID = this.primData.OwnerID; | ||
287 | proper.ObjectData[0].FolderID = LLUUID.Zero; | ||
288 | proper.ObjectData[0].FromTaskID = LLUUID.Zero; | ||
289 | proper.ObjectData[0].GroupID = LLUUID.Zero; | ||
290 | proper.ObjectData[0].InventorySerial = 0; | ||
291 | proper.ObjectData[0].LastOwnerID = LLUUID.Zero; | ||
292 | proper.ObjectData[0].ObjectID = this.uuid; | ||
293 | proper.ObjectData[0].OwnerID = primData.OwnerID; | ||
294 | proper.ObjectData[0].TouchName = new byte[0]; | ||
295 | proper.ObjectData[0].TextureID = new byte[0]; | ||
296 | proper.ObjectData[0].SitName = new byte[0]; | ||
297 | proper.ObjectData[0].Name = new byte[0]; | ||
298 | proper.ObjectData[0].Description = new byte[0]; | ||
299 | proper.ObjectData[0].OwnerMask = this.primData.OwnerMask; | ||
300 | proper.ObjectData[0].NextOwnerMask = this.primData.NextOwnerMask; | ||
301 | proper.ObjectData[0].GroupMask = this.primData.GroupMask; | ||
302 | proper.ObjectData[0].EveryoneMask = this.primData.EveryoneMask; | ||
303 | proper.ObjectData[0].BaseMask = this.primData.BaseMask; | ||
304 | |||
305 | client.OutPacket(proper); | ||
306 | } | ||
307 | |||
308 | #endregion | 281 | #endregion |
309 | 282 | ||
310 | # region Inventory Methods | 283 | # region Inventory Methods |
311 | 284 | /// <summary> | |
285 | /// | ||
286 | /// </summary> | ||
287 | /// <param name="item"></param> | ||
288 | /// <returns></returns> | ||
312 | public bool AddToInventory(InventoryItem item) | 289 | public bool AddToInventory(InventoryItem item) |
313 | { | 290 | { |
314 | return false; | 291 | return false; |
315 | } | 292 | } |
316 | 293 | ||
294 | /// <summary> | ||
295 | /// | ||
296 | /// </summary> | ||
297 | /// <param name="itemID"></param> | ||
298 | /// <returns></returns> | ||
317 | public InventoryItem RemoveFromInventory(LLUUID itemID) | 299 | public InventoryItem RemoveFromInventory(LLUUID itemID) |
318 | { | 300 | { |
319 | return null; | 301 | return null; |
320 | } | 302 | } |
321 | 303 | ||
304 | /// <summary> | ||
305 | /// | ||
306 | /// </summary> | ||
307 | /// <param name="simClient"></param> | ||
308 | /// <param name="packet"></param> | ||
322 | public void RequestInventoryInfo(IClientAPI simClient, RequestTaskInventoryPacket packet) | 309 | public void RequestInventoryInfo(IClientAPI simClient, RequestTaskInventoryPacket packet) |
323 | { | 310 | { |
324 | 311 | ||
325 | } | 312 | } |
326 | 313 | ||
314 | /// <summary> | ||
315 | /// | ||
316 | /// </summary> | ||
317 | /// <param name="simClient"></param> | ||
318 | /// <param name="xferID"></param> | ||
327 | public void RequestXferInventory(IClientAPI simClient, ulong xferID) | 319 | public void RequestXferInventory(IClientAPI simClient, ulong xferID) |
328 | { | 320 | { |
329 | //will only currently work if the total size of the inventory data array is under about 1000 bytes | 321 | //will only currently work if the total size of the inventory data array is under about 1000 bytes |
@@ -336,6 +328,10 @@ namespace OpenSim.Region | |||
336 | simClient.OutPacket(send); | 328 | simClient.OutPacket(send); |
337 | } | 329 | } |
338 | 330 | ||
331 | /// <summary> | ||
332 | /// | ||
333 | /// </summary> | ||
334 | /// <returns></returns> | ||
339 | public byte[] ConvertInventoryToBytes() | 335 | public byte[] ConvertInventoryToBytes() |
340 | { | 336 | { |
341 | System.Text.Encoding enc = System.Text.Encoding.ASCII; | 337 | System.Text.Encoding enc = System.Text.Encoding.ASCII; |
@@ -353,6 +349,10 @@ namespace OpenSim.Region | |||
353 | return result; | 349 | return result; |
354 | } | 350 | } |
355 | 351 | ||
352 | /// <summary> | ||
353 | /// | ||
354 | /// </summary> | ||
355 | /// <param name="data"></param> | ||
356 | public void CreateInventoryFromBytes(byte[] data) | 356 | public void CreateInventoryFromBytes(byte[] data) |
357 | { | 357 | { |
358 | 358 | ||
@@ -362,7 +362,22 @@ namespace OpenSim.Region | |||
362 | 362 | ||
363 | #region Update viewers Methods | 363 | #region Update viewers Methods |
364 | 364 | ||
365 | //should change these mehtods, so that outgoing packets are sent through the avatar class? | 365 | /// <summary> |
366 | /// | ||
367 | /// </summary> | ||
368 | /// <param name="remoteClient"></param> | ||
369 | public void SendFullUpdateForAllChildren(IClientAPI remoteClient) | ||
370 | { | ||
371 | this.SendFullUpdateToClient(remoteClient); | ||
372 | for (int i = 0; i < this.children.Count; i++) | ||
373 | { | ||
374 | if (this.children[i] is Primitive) | ||
375 | { | ||
376 | ((Primitive)this.children[i]).SendFullUpdateForAllChildren(remoteClient); | ||
377 | } | ||
378 | } | ||
379 | } | ||
380 | |||
366 | /// <summary> | 381 | /// <summary> |
367 | /// | 382 | /// |
368 | /// </summary> | 383 | /// </summary> |
@@ -491,7 +506,7 @@ namespace OpenSim.Region | |||
491 | { | 506 | { |
492 | this.CreateFromPrimData(primData, primData.Position, primData.LocalID, false); | 507 | this.CreateFromPrimData(primData, primData.Position, primData.LocalID, false); |
493 | } | 508 | } |
494 | 509 | ||
495 | /// <summary> | 510 | /// <summary> |
496 | /// | 511 | /// |
497 | /// </summary> | 512 | /// </summary> |
diff --git a/OpenSim/OpenSim.Region/World/SceneObject.cs b/OpenSim/OpenSim.Region/World/SceneObject.cs index 87c9bb0..6ded881 100644 --- a/OpenSim/OpenSim.Region/World/SceneObject.cs +++ b/OpenSim/OpenSim.Region/World/SceneObject.cs | |||
@@ -41,9 +41,10 @@ namespace OpenSim.Region | |||
41 | public class SceneObject : Entity | 41 | public class SceneObject : Entity |
42 | { | 42 | { |
43 | private LLUUID rootUUID; | 43 | private LLUUID rootUUID; |
44 | private Dictionary<LLUUID, Primitive> ChildPrimitives = new Dictionary<LLUUID, Primitive>(); | 44 | //private Dictionary<LLUUID, Primitive> ChildPrimitives = new Dictionary<LLUUID, Primitive>(); |
45 | private Dictionary<uint, IClientAPI> m_clientThreads; | 45 | protected Primitive rootPrimitive; |
46 | private World m_world; | 46 | private World m_world; |
47 | protected ulong regionHandle; | ||
47 | 48 | ||
48 | /// <summary> | 49 | /// <summary> |
49 | /// | 50 | /// |
@@ -61,6 +62,8 @@ namespace OpenSim.Region | |||
61 | /// <param name="localID"></param> | 62 | /// <param name="localID"></param> |
62 | public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID) | 63 | public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID) |
63 | { | 64 | { |
65 | this.rootPrimitive = new Primitive(null, this.regionHandle, this.m_world); | ||
66 | this.rootPrimitive.CreateFromPacket(addPacket, agentID, localID); | ||
64 | } | 67 | } |
65 | 68 | ||
66 | /// <summary> | 69 | /// <summary> |
@@ -94,33 +97,33 @@ namespace OpenSim.Region | |||
94 | /// <param name="client"></param> | 97 | /// <param name="client"></param> |
95 | public void GetProperites(IClientAPI client) | 98 | public void GetProperites(IClientAPI client) |
96 | { | 99 | { |
97 | /* | 100 | //needs changing |
98 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); | 101 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); |
99 | proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; | 102 | proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; |
100 | proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); | 103 | proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); |
101 | proper.ObjectData[0].ItemID = LLUUID.Zero; | 104 | proper.ObjectData[0].ItemID = LLUUID.Zero; |
102 | proper.ObjectData[0].CreationDate = (ulong)this.primData.CreationDate; | 105 | proper.ObjectData[0].CreationDate = (ulong)this.rootPrimitive.primData.CreationDate; |
103 | proper.ObjectData[0].CreatorID = this.primData.OwnerID; | 106 | proper.ObjectData[0].CreatorID = this.rootPrimitive.primData.OwnerID; |
104 | proper.ObjectData[0].FolderID = LLUUID.Zero; | 107 | proper.ObjectData[0].FolderID = LLUUID.Zero; |
105 | proper.ObjectData[0].FromTaskID = LLUUID.Zero; | 108 | proper.ObjectData[0].FromTaskID = LLUUID.Zero; |
106 | proper.ObjectData[0].GroupID = LLUUID.Zero; | 109 | proper.ObjectData[0].GroupID = LLUUID.Zero; |
107 | proper.ObjectData[0].InventorySerial = 0; | 110 | proper.ObjectData[0].InventorySerial = 0; |
108 | proper.ObjectData[0].LastOwnerID = LLUUID.Zero; | 111 | proper.ObjectData[0].LastOwnerID = LLUUID.Zero; |
109 | proper.ObjectData[0].ObjectID = this.uuid; | 112 | proper.ObjectData[0].ObjectID = this.uuid; |
110 | proper.ObjectData[0].OwnerID = primData.OwnerID; | 113 | proper.ObjectData[0].OwnerID = this.rootPrimitive.primData.OwnerID; |
111 | proper.ObjectData[0].TouchName = new byte[0]; | 114 | proper.ObjectData[0].TouchName = new byte[0]; |
112 | proper.ObjectData[0].TextureID = new byte[0]; | 115 | proper.ObjectData[0].TextureID = new byte[0]; |
113 | proper.ObjectData[0].SitName = new byte[0]; | 116 | proper.ObjectData[0].SitName = new byte[0]; |
114 | proper.ObjectData[0].Name = new byte[0]; | 117 | proper.ObjectData[0].Name = new byte[0]; |
115 | proper.ObjectData[0].Description = new byte[0]; | 118 | proper.ObjectData[0].Description = new byte[0]; |
116 | proper.ObjectData[0].OwnerMask = this.primData.OwnerMask; | 119 | proper.ObjectData[0].OwnerMask = this.rootPrimitive.primData.OwnerMask; |
117 | proper.ObjectData[0].NextOwnerMask = this.primData.NextOwnerMask; | 120 | proper.ObjectData[0].NextOwnerMask = this.rootPrimitive.primData.NextOwnerMask; |
118 | proper.ObjectData[0].GroupMask = this.primData.GroupMask; | 121 | proper.ObjectData[0].GroupMask = this.rootPrimitive.primData.GroupMask; |
119 | proper.ObjectData[0].EveryoneMask = this.primData.EveryoneMask; | 122 | proper.ObjectData[0].EveryoneMask = this.rootPrimitive.primData.EveryoneMask; |
120 | proper.ObjectData[0].BaseMask = this.primData.BaseMask; | 123 | proper.ObjectData[0].BaseMask = this.rootPrimitive.primData.BaseMask; |
121 | 124 | ||
122 | client.OutPacket(proper); | 125 | client.OutPacket(proper); |
123 | * */ | 126 | |
124 | } | 127 | } |
125 | 128 | ||
126 | } | 129 | } |
diff --git a/OpenSim/OpenSim.Region/World/World.PacketHandlers.cs b/OpenSim/OpenSim.Region/World/World.PacketHandlers.cs index f266d2a..85ca247 100644 --- a/OpenSim/OpenSim.Region/World/World.PacketHandlers.cs +++ b/OpenSim/OpenSim.Region/World/World.PacketHandlers.cs | |||
@@ -210,7 +210,14 @@ namespace OpenSim.Region | |||
210 | /// <param name="remoteClient"></param> | 210 | /// <param name="remoteClient"></param> |
211 | public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient) | 211 | public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient) |
212 | { | 212 | { |
213 | 213 | foreach (Entity ent in Entities.Values) | |
214 | { | ||
215 | if (ent.localid == localID) | ||
216 | { | ||
217 | ((OpenSim.Region.Primitive)ent).UpdatePosition(pos); | ||
218 | break; | ||
219 | } | ||
220 | } | ||
214 | } | 221 | } |
215 | 222 | ||
216 | /// <summary> | 223 | /// <summary> |
diff --git a/OpenSim/OpenSim.Region/World/World.cs b/OpenSim/OpenSim.Region/World/World.cs index da0da7a..8c1493e 100644 --- a/OpenSim/OpenSim.Region/World/World.cs +++ b/OpenSim/OpenSim.Region/World/World.cs | |||
@@ -511,9 +511,9 @@ namespace OpenSim.Region | |||
511 | remoteClient.OnChatFromViewer += new ChatFromViewer(this.SimChat); | 511 | remoteClient.OnChatFromViewer += new ChatFromViewer(this.SimChat); |
512 | remoteClient.OnRequestWearables += new GenericCall(this.InformClientOfNeighbours); | 512 | remoteClient.OnRequestWearables += new GenericCall(this.InformClientOfNeighbours); |
513 | remoteClient.OnAddPrim += new GenericCall4(this.AddNewPrim); | 513 | remoteClient.OnAddPrim += new GenericCall4(this.AddNewPrim); |
514 | 514 | remoteClient.OnUpdatePrimPosition += new UpdatePrimVector(this.UpdatePrimPosition); | |
515 | /* | 515 | |
516 | remoteClient.OnParcelPropertiesRequest += new ParcelPropertiesRequest(parcelManager.handleParcelPropertiesRequest); | 516 | /* remoteClient.OnParcelPropertiesRequest += new ParcelPropertiesRequest(parcelManager.handleParcelPropertiesRequest); |
517 | remoteClient.OnParcelDivideRequest += new ParcelDivideRequest(parcelManager.handleParcelDivideRequest); | 517 | remoteClient.OnParcelDivideRequest += new ParcelDivideRequest(parcelManager.handleParcelDivideRequest); |
518 | remoteClient.OnParcelJoinRequest += new ParcelJoinRequest(parcelManager.handleParcelJoinRequest); | 518 | remoteClient.OnParcelJoinRequest += new ParcelJoinRequest(parcelManager.handleParcelJoinRequest); |
519 | remoteClient.OnParcelPropertiesUpdateRequest += new ParcelPropertiesUpdateRequest(parcelManager.handleParcelPropertiesUpdateRequest); | 519 | remoteClient.OnParcelPropertiesUpdateRequest += new ParcelPropertiesUpdateRequest(parcelManager.handleParcelPropertiesUpdateRequest); |