aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r--OpenSim/Region/Environment/Scenes/AvatarAnimations.cs17
-rw-r--r--OpenSim/Region/Environment/Scenes/AvatarAppearance.cs14
-rw-r--r--OpenSim/Region/Environment/Scenes/EntityBase.cs5
-rw-r--r--OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs1
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs123
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs189
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs19
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs400
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneBase.cs11
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs72
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneEvents.cs12
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneManager.cs9
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs93
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs414
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs132
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs25
-rw-r--r--OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/SimStatsReporter.cs69
19 files changed, 816 insertions, 793 deletions
diff --git a/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs b/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs
index cffe846..5466865 100644
--- a/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs
+++ b/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs
@@ -25,11 +25,11 @@
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28using System;
28using System.Collections.Generic; 29using System.Collections.Generic;
29using System.Xml; 30using System.Xml;
30using libsecondlife; 31using libsecondlife;
31using libsecondlife.Packets; 32using OpenSim.Framework.Console;
32
33 33
34namespace OpenSim.Region.Environment.Scenes 34namespace OpenSim.Region.Environment.Scenes
35{ 35{
@@ -37,11 +37,11 @@ namespace OpenSim.Region.Environment.Scenes
37 { 37 {
38 public Dictionary<string, LLUUID> AnimsLLUUID = new Dictionary<string, LLUUID>(); 38 public Dictionary<string, LLUUID> AnimsLLUUID = new Dictionary<string, LLUUID>();
39 public Dictionary<LLUUID, string> AnimsNames = new Dictionary<LLUUID, string>(); 39 public Dictionary<LLUUID, string> AnimsNames = new Dictionary<LLUUID, string>();
40 40
41 public AvatarAnimations() 41 public AvatarAnimations()
42 { 42 {
43 } 43 }
44 44
45 public void LoadAnims() 45 public void LoadAnims()
46 { 46 {
47 //MainLog.Instance.Verbose("CLIENT", "Loading avatar animations"); 47 //MainLog.Instance.Verbose("CLIENT", "Loading avatar animations");
@@ -57,7 +57,7 @@ namespace OpenSim.Region.Environment.Scenes
57 } 57 }
58 } 58 }
59 } 59 }
60 60
61 // MainLog.Instance.Verbose("CLIENT", "Loaded " + AnimsLLUUID.Count.ToString() + " animation(s)"); 61 // MainLog.Instance.Verbose("CLIENT", "Loaded " + AnimsLLUUID.Count.ToString() + " animation(s)");
62 62
63 try 63 try
@@ -68,11 +68,10 @@ namespace OpenSim.Region.Environment.Scenes
68 AnimsNames.Add(kp.Value, kp.Key); 68 AnimsNames.Add(kp.Value, kp.Key);
69 } 69 }
70 } 70 }
71 catch (System.InvalidOperationException) 71 catch (InvalidOperationException)
72 { 72 {
73 OpenSim.Framework.Console.MainLog.Instance.Warn("AVATAR", "Unable to load animation names for an Avatar"); 73 MainLog.Instance.Warn("AVATAR", "Unable to load animation names for an Avatar");
74 } 74 }
75
76 } 75 }
77 } 76 }
78} 77} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/AvatarAppearance.cs b/OpenSim/Region/Environment/Scenes/AvatarAppearance.cs
index 2ec4dbe..1583124 100644
--- a/OpenSim/Region/Environment/Scenes/AvatarAppearance.cs
+++ b/OpenSim/Region/Environment/Scenes/AvatarAppearance.cs
@@ -1,4 +1,4 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
@@ -26,15 +26,9 @@
26* 26*
27*/ 27*/
28 28
29using System;
30using System.Collections.Generic;
31using System.Text;
32using libsecondlife; 29using libsecondlife;
33using libsecondlife.Packets; 30using libsecondlife.Packets;
34using OpenSim.Framework; 31using OpenSim.Framework;
35using OpenSim.Framework.Console;
36using OpenSim.Framework.Communications;
37using OpenSim.Region.Environment.Types;
38 32
39namespace OpenSim.Region.Environment.Scenes 33namespace OpenSim.Region.Environment.Scenes
40{ 34{
@@ -106,8 +100,8 @@ namespace OpenSim.Region.Environment.Scenes
106 // Teravus : Nifty AV Height Getting Maaaaagical formula. Oh how we love turning 0-255 into meters. 100 // Teravus : Nifty AV Height Getting Maaaaagical formula. Oh how we love turning 0-255 into meters.
107 // (float)m_visualParams[25] = Height 101 // (float)m_visualParams[25] = Height
108 // (float)m_visualParams[125] = LegLength 102 // (float)m_visualParams[125] = LegLength
109 m_avatarHeight = (1.50856f + (((float)m_visualParams[25] / 255.0f) * (2.525506f - 1.50856f))) 103 m_avatarHeight = (1.50856f + (((float) m_visualParams[25]/255.0f)*(2.525506f - 1.50856f)))
110 + (((float)m_visualParams[125] / 255.0f) / 1.5f); 104 + (((float) m_visualParams[125]/255.0f)/1.5f);
111 } 105 }
112 106
113 /// <summary> 107 /// <summary>
@@ -144,4 +138,4 @@ namespace OpenSim.Region.Environment.Scenes
144 return textu; 138 return textu;
145 } 139 }
146 } 140 }
147} 141} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/EntityBase.cs b/OpenSim/Region/Environment/Scenes/EntityBase.cs
index 4556c63..18799e4 100644
--- a/OpenSim/Region/Environment/Scenes/EntityBase.cs
+++ b/OpenSim/Region/Environment/Scenes/EntityBase.cs
@@ -145,7 +145,6 @@ namespace OpenSim.Region.Environment.Scenes
145 return (EntityBase) MemberwiseClone(); 145 return (EntityBase) MemberwiseClone();
146 } 146 }
147 147
148
149 148
150 public abstract void SetText(string text, Vector3 color, double alpha); 149 public abstract void SetText(string text, Vector3 color, double alpha);
151 } 150 }
@@ -161,15 +160,13 @@ namespace OpenSim.Region.Environment.Scenes
161 160
162 public EntityIntersection() 161 public EntityIntersection()
163 { 162 {
164
165
166 } 163 }
164
167 public EntityIntersection(Vector3 _ipoint, float _normal, bool _HitTF) 165 public EntityIntersection(Vector3 _ipoint, float _normal, bool _HitTF)
168 { 166 {
169 ipoint = _ipoint; 167 ipoint = _ipoint;
170 normal = _normal; 168 normal = _normal;
171 HitTF = _HitTF; 169 HitTF = _HitTF;
172 } 170 }
173
174 } 171 }
175} \ No newline at end of file 172} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs b/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs
index b9d1232..3e87981 100644
--- a/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs
+++ b/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs
@@ -27,7 +27,6 @@
27*/ 27*/
28 28
29using libsecondlife; 29using libsecondlife;
30using libsecondlife.Packets;
31using OpenSim.Framework; 30using OpenSim.Framework;
32 31
33namespace OpenSim.Region.Environment.Scenes 32namespace OpenSim.Region.Environment.Scenes
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index 0ca3405..4233853 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -1,4 +1,4 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
@@ -28,7 +28,6 @@
28 28
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text;
32using Axiom.Math; 31using Axiom.Math;
33using libsecondlife; 32using libsecondlife;
34using libsecondlife.Packets; 33using libsecondlife.Packets;
@@ -44,10 +43,13 @@ namespace OpenSim.Region.Environment.Scenes
44 public class InnerScene 43 public class InnerScene
45 { 44 {
46 #region Events 45 #region Events
46
47 public event PhysicsCrash UnRecoverableError; 47 public event PhysicsCrash UnRecoverableError;
48
48 #endregion 49 #endregion
49 50
50 #region Fields 51 #region Fields
52
51 public Dictionary<LLUUID, ScenePresence> ScenePresences; 53 public Dictionary<LLUUID, ScenePresence> ScenePresences;
52 public Dictionary<LLUUID, SceneObjectGroup> SceneObjects; 54 public Dictionary<LLUUID, SceneObjectGroup> SceneObjects;
53 public Dictionary<LLUUID, EntityBase> Entities; 55 public Dictionary<LLUUID, EntityBase> Entities;
@@ -65,6 +67,7 @@ namespace OpenSim.Region.Environment.Scenes
65 internal object m_syncRoot = new object(); 67 internal object m_syncRoot = new object();
66 68
67 public PhysicsScene _PhyScene; 69 public PhysicsScene _PhyScene;
70
68 #endregion 71 #endregion
69 72
70 public InnerScene(Scene parent, RegionInfo regInfo, PermissionManager permissionsMngr) 73 public InnerScene(Scene parent, RegionInfo regInfo, PermissionManager permissionsMngr)
@@ -79,28 +82,27 @@ namespace OpenSim.Region.Environment.Scenes
79 82
80 public PhysicsScene PhysicsScene 83 public PhysicsScene PhysicsScene
81 { 84 {
82 get 85 get { return _PhyScene; }
83 { return _PhyScene; }
84 set 86 set
85 { 87 {
86 // If we're not doing the initial set 88 // If we're not doing the initial set
87 // Then we've got to remove the previous 89 // Then we've got to remove the previous
88 // event handler 90 // event handler
89 try 91 try
90 { 92 {
91 _PhyScene.OnPhysicsCrash -= physicsBasedCrash; 93 _PhyScene.OnPhysicsCrash -= physicsBasedCrash;
92 } 94 }
93 catch (System.NullReferenceException) 95 catch (NullReferenceException)
94 { 96 {
95 // This occurs when storing to _PhyScene the first time. 97 // This occurs when storing to _PhyScene the first time.
96 // Is there a better way to check the event handler before 98 // Is there a better way to check the event handler before
97 // getting here 99 // getting here
98 // This can be safely ignored. We're setting the first inital 100 // This can be safely ignored. We're setting the first inital
99 // there are no event handler's registered. 101 // there are no event handler's registered.
100 } 102 }
101 103
102 _PhyScene = value; 104 _PhyScene = value;
103 105
104 _PhyScene.OnPhysicsCrash += physicsBasedCrash; 106 _PhyScene.OnPhysicsCrash += physicsBasedCrash;
105 } 107 }
106 } 108 }
@@ -113,6 +115,7 @@ namespace OpenSim.Region.Environment.Scenes
113 } 115 }
114 116
115 #region Update Methods 117 #region Update Methods
118
116 internal void UpdatePreparePhysics() 119 internal void UpdatePreparePhysics()
117 { 120 {
118 // If we are using a threaded physics engine 121 // If we are using a threaded physics engine
@@ -141,7 +144,7 @@ namespace OpenSim.Region.Environment.Scenes
141 { 144 {
142 lock (m_syncRoot) 145 lock (m_syncRoot)
143 { 146 {
144 return _PhyScene.Simulate((float)elapsed); 147 return _PhyScene.Simulate((float) elapsed);
145 } 148 }
146 } 149 }
147 150
@@ -151,12 +154,14 @@ namespace OpenSim.Region.Environment.Scenes
151 154
152 foreach (EntityBase entity in moveEntities) 155 foreach (EntityBase entity in moveEntities)
153 { 156 {
154 entity.UpdateMovement(); 157 entity.UpdateMovement();
155 } 158 }
156 } 159 }
160
157 #endregion 161 #endregion
158 162
159 #region Entity Methods 163 #region Entity Methods
164
160 public void AddEntityFromStorage(SceneObjectGroup sceneObject) 165 public void AddEntityFromStorage(SceneObjectGroup sceneObject)
161 { 166 {
162 sceneObject.RegionHandle = m_regInfo.RegionHandle; 167 sceneObject.RegionHandle = m_regInfo.RegionHandle;
@@ -181,14 +186,17 @@ namespace OpenSim.Region.Environment.Scenes
181 m_numPrim++; 186 m_numPrim++;
182 } 187 }
183 } 188 }
189
184 public void AddPhysicalPrim(int number) 190 public void AddPhysicalPrim(int number)
185 { 191 {
186 m_physicalPrim++; 192 m_physicalPrim++;
187 } 193 }
194
188 public void RemovePhysicalPrim(int number) 195 public void RemovePhysicalPrim(int number)
189 { 196 {
190 m_physicalPrim--; 197 m_physicalPrim--;
191 } 198 }
199
192 public void RemovePrim(uint localID, LLUUID avatar_deleter) 200 public void RemovePrim(uint localID, LLUUID avatar_deleter)
193 { 201 {
194 List<EntityBase> EntityList = GetEntities(); 202 List<EntityBase> EntityList = GetEntities();
@@ -197,9 +205,9 @@ namespace OpenSim.Region.Environment.Scenes
197 { 205 {
198 if (obj is SceneObjectGroup) 206 if (obj is SceneObjectGroup)
199 { 207 {
200 if (((SceneObjectGroup)obj).LocalId == localID) 208 if (((SceneObjectGroup) obj).LocalId == localID)
201 { 209 {
202 m_parentScene.RemoveEntity((SceneObjectGroup)obj); 210 m_parentScene.RemoveEntity((SceneObjectGroup) obj);
203 m_numPrim--; 211 m_numPrim--;
204 return; 212 return;
205 } 213 }
@@ -253,7 +261,8 @@ namespace OpenSim.Region.Environment.Scenes
253 261
254 return newAvatar; 262 return newAvatar;
255 } 263 }
256 public void SwapRootChildAgent(bool direction_RC_CR_T_F) 264
265 public void SwapRootChildAgent(bool direction_RC_CR_T_F)
257 { 266 {
258 if (direction_RC_CR_T_F) 267 if (direction_RC_CR_T_F)
259 { 268 {
@@ -266,25 +275,29 @@ namespace OpenSim.Region.Environment.Scenes
266 m_numRootAgents++; 275 m_numRootAgents++;
267 } 276 }
268 } 277 }
278
269 public void removeUserCount(bool TypeRCTF) 279 public void removeUserCount(bool TypeRCTF)
270 { 280 {
271 if (TypeRCTF) 281 if (TypeRCTF)
272 { 282 {
273 m_numRootAgents--; 283 m_numRootAgents--;
274 } 284 }
275 else 285 else
276 { 286 {
277 m_numChildAgents--; 287 m_numChildAgents--;
278 } 288 }
279 } 289 }
290
280 public void RemoveAPrimCount() 291 public void RemoveAPrimCount()
281 { 292 {
282 m_numPrim--; 293 m_numPrim--;
283 } 294 }
295
284 public void AddAPrimCount() 296 public void AddAPrimCount()
285 { 297 {
286 m_numPrim++; 298 m_numPrim++;
287 } 299 }
300
288 public int GetChildAgentCount() 301 public int GetChildAgentCount()
289 { 302 {
290 return m_numChildAgents; 303 return m_numChildAgents;
@@ -375,8 +388,8 @@ namespace OpenSim.Region.Environment.Scenes
375 { 388 {
376 if (ent is SceneObjectGroup) 389 if (ent is SceneObjectGroup)
377 { 390 {
378 if (((SceneObjectGroup)ent).HasChildPrim(localID)) 391 if (((SceneObjectGroup) ent).HasChildPrim(localID))
379 return (SceneObjectGroup)ent; 392 return (SceneObjectGroup) ent;
380 } 393 }
381 } 394 }
382 return null; 395 return null;
@@ -390,8 +403,8 @@ namespace OpenSim.Region.Environment.Scenes
390 { 403 {
391 if (ent is SceneObjectGroup) 404 if (ent is SceneObjectGroup)
392 { 405 {
393 if (((SceneObjectGroup)ent).HasChildPrim(fullID)) 406 if (((SceneObjectGroup) ent).HasChildPrim(fullID))
394 return (SceneObjectGroup)ent; 407 return (SceneObjectGroup) ent;
395 } 408 }
396 } 409 }
397 return null; 410 return null;
@@ -406,7 +419,7 @@ namespace OpenSim.Region.Environment.Scenes
406 { 419 {
407 if (ent is SceneObjectGroup) 420 if (ent is SceneObjectGroup)
408 { 421 {
409 SceneObjectGroup reportingG = (SceneObjectGroup)ent; 422 SceneObjectGroup reportingG = (SceneObjectGroup) ent;
410 EntityIntersection result = reportingG.TestIntersection(hray); 423 EntityIntersection result = reportingG.TestIntersection(hray);
411 if (result.HitTF) 424 if (result.HitTF)
412 { 425 {
@@ -417,7 +430,6 @@ namespace OpenSim.Region.Environment.Scenes
417 } 430 }
418 } 431 }
419 } 432 }
420
421 } 433 }
422 return returnResult; 434 return returnResult;
423 } 435 }
@@ -531,17 +543,16 @@ namespace OpenSim.Region.Environment.Scenes
531 //float distResult = Vector3Distance(avPosition, objPosition); 543 //float distResult = Vector3Distance(avPosition, objPosition);
532 //if (distResult > 512) 544 //if (distResult > 512)
533 //{ 545 //{
534 //int x = 0; 546 //int x = 0;
535 //} 547 //}
536 //if (distResult < presence.DrawDistance) 548 //if (distResult < presence.DrawDistance)
537 //{ 549 //{
538 ((SceneObjectGroup)ent).ScheduleFullUpdateToAvatar(presence); 550 ((SceneObjectGroup) ent).ScheduleFullUpdateToAvatar(presence);
539 //} 551 //}
540
541 } 552 }
542 else 553 else
543 { 554 {
544 ((SceneObjectGroup)ent).ScheduleFullUpdateToAvatar(presence); 555 ((SceneObjectGroup) ent).ScheduleFullUpdateToAvatar(presence);
545 } 556 }
546 } 557 }
547 } 558 }
@@ -554,9 +565,11 @@ namespace OpenSim.Region.Environment.Scenes
554 action(presence.ControllingClient); 565 action(presence.ControllingClient);
555 } 566 }
556 } 567 }
568
557 #endregion 569 #endregion
558 570
559 #region Client Event handlers 571 #region Client Event handlers
572
560 /// <summary> 573 /// <summary>
561 /// 574 ///
562 /// </summary> 575 /// </summary>
@@ -583,13 +596,12 @@ namespace OpenSim.Region.Environment.Scenes
583 /// <param name="AgentID"></param> 596 /// <param name="AgentID"></param>
584 /// <param name="RequestFlags"></param> 597 /// <param name="RequestFlags"></param>
585 /// <param name="ObjectID"></param> 598 /// <param name="ObjectID"></param>
586 public void RequestObjectPropertiesFamily(IClientAPI remoteClient, LLUUID AgentID, uint RequestFlags, LLUUID ObjectID) 599 public void RequestObjectPropertiesFamily(IClientAPI remoteClient, LLUUID AgentID, uint RequestFlags,
600 LLUUID ObjectID)
587 { 601 {
588 SceneObjectGroup group = GetGroupByPrim(ObjectID); 602 SceneObjectGroup group = GetGroupByPrim(ObjectID);
589 if (group != null) 603 if (group != null)
590 group.ServiceObjectPropertiesFamilyRequest(remoteClient, AgentID, RequestFlags); 604 group.ServiceObjectPropertiesFamilyRequest(remoteClient, AgentID, RequestFlags);
591
592
593 } 605 }
594 606
595 /// <summary> 607 /// <summary>
@@ -708,10 +720,9 @@ namespace OpenSim.Region.Environment.Scenes
708 { 720 {
709 if (PermissionsMngr.CanEditObject(remoteClient.AgentId, group.UUID)) 721 if (PermissionsMngr.CanEditObject(remoteClient.AgentId, group.UUID))
710 { 722 {
711 group.UpdatePrimFlags(localID, (ushort)packet.Type, true, packet.ToBytes()); 723 group.UpdatePrimFlags(localID, (ushort) packet.Type, true, packet.ToBytes());
712 } 724 }
713 } 725 }
714
715 } 726 }
716 727
717 public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) 728 public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
@@ -763,7 +774,7 @@ namespace OpenSim.Region.Environment.Scenes
763 public void UpdateExtraParam(LLUUID agentID, uint primLocalID, ushort type, bool inUse, byte[] data) 774 public void UpdateExtraParam(LLUUID agentID, uint primLocalID, ushort type, bool inUse, byte[] data)
764 { 775 {
765 SceneObjectGroup group = GetGroupByPrim(primLocalID); 776 SceneObjectGroup group = GetGroupByPrim(primLocalID);
766 777
767 if (group != null) 778 if (group != null)
768 { 779 {
769 if (PermissionsMngr.CanEditObject(agentID, group.UUID)) 780 if (PermissionsMngr.CanEditObject(agentID, group.UUID))
@@ -771,7 +782,6 @@ namespace OpenSim.Region.Environment.Scenes
771 group.UpdateExtraParam(primLocalID, type, inUse, data); 782 group.UpdateExtraParam(primLocalID, type, inUse, data);
772 } 783 }
773 } 784 }
774
775 } 785 }
776 786
777 /// <summary> 787 /// <summary>
@@ -786,7 +796,6 @@ namespace OpenSim.Region.Environment.Scenes
786 { 796 {
787 if (PermissionsMngr.CanEditObjectPosition(agentID, group.GetPartsFullID(primLocalID))) 797 if (PermissionsMngr.CanEditObjectPosition(agentID, group.GetPartsFullID(primLocalID)))
788 { 798 {
789
790 group.UpdateShape(shapeBlock, primLocalID); 799 group.UpdateShape(shapeBlock, primLocalID);
791 } 800 }
792 } 801 }
@@ -806,9 +815,9 @@ namespace OpenSim.Region.Environment.Scenes
806 { 815 {
807 if (ent is SceneObjectGroup) 816 if (ent is SceneObjectGroup)
808 { 817 {
809 if (((SceneObjectGroup)ent).LocalId == parentPrim) 818 if (((SceneObjectGroup) ent).LocalId == parentPrim)
810 { 819 {
811 parenPrim = (SceneObjectGroup)ent; 820 parenPrim = (SceneObjectGroup) ent;
812 break; 821 break;
813 } 822 }
814 } 823 }
@@ -823,9 +832,9 @@ namespace OpenSim.Region.Environment.Scenes
823 { 832 {
824 if (ent is SceneObjectGroup) 833 if (ent is SceneObjectGroup)
825 { 834 {
826 if (((SceneObjectGroup)ent).LocalId == childPrims[i]) 835 if (((SceneObjectGroup) ent).LocalId == childPrims[i])
827 { 836 {
828 children.Add((SceneObjectGroup)ent); 837 children.Add((SceneObjectGroup) ent);
829 } 838 }
830 } 839 }
831 } 840 }
@@ -857,7 +866,7 @@ namespace OpenSim.Region.Environment.Scenes
857 { 866 {
858 if (ent is SceneObjectGroup) 867 if (ent is SceneObjectGroup)
859 { 868 {
860 SceneObjectGroup obj = (SceneObjectGroup)ent; 869 SceneObjectGroup obj = (SceneObjectGroup) ent;
861 sceneObjects.Add(obj.LocalId, obj); 870 sceneObjects.Add(obj.LocalId, obj);
862 } 871 }
863 } 872 }
@@ -882,9 +891,9 @@ namespace OpenSim.Region.Environment.Scenes
882 } 891 }
883 else 892 else
884 { 893 {
885 MainLog.Instance.Verbose("SCENE", 894 MainLog.Instance.Verbose("SCENE",
886 "DelinkObjects(): Could not find a root prim out of {0} as given to a delink request!", 895 "DelinkObjects(): Could not find a root prim out of {0} as given to a delink request!",
887 primIds); 896 primIds);
888 } 897 }
889 } 898 }
890 899
@@ -903,9 +912,9 @@ namespace OpenSim.Region.Environment.Scenes
903 { 912 {
904 if (ent is SceneObjectGroup) 913 if (ent is SceneObjectGroup)
905 { 914 {
906 if (((SceneObjectGroup)ent).LocalId == originalPrim) 915 if (((SceneObjectGroup) ent).LocalId == originalPrim)
907 { 916 {
908 originPrim = (SceneObjectGroup)ent; 917 originPrim = (SceneObjectGroup) ent;
909 break; 918 break;
910 } 919 }
911 } 920 }
@@ -929,7 +938,6 @@ namespace OpenSim.Region.Environment.Scenes
929 { 938 {
930 MainLog.Instance.Warn("client", "Attempted to duplicate nonexistant prim"); 939 MainLog.Instance.Warn("client", "Attempted to duplicate nonexistant prim");
931 } 940 }
932
933 } 941 }
934 942
935 /// <summary> 943 /// <summary>
@@ -943,8 +951,11 @@ namespace OpenSim.Region.Environment.Scenes
943 // We don't really need the double floating point precision... 951 // We don't really need the double floating point precision...
944 // so casting it to a single 952 // so casting it to a single
945 953
946 return (float)Math.Sqrt((v1.x - v2.x) * (v1.x - v2.x) + (v1.y - v2.y) * (v1.y - v2.y) + (v1.z - v2.z) * (v1.z - v2.z)); 954 return
955 (float)
956 Math.Sqrt((v1.x - v2.x)*(v1.x - v2.x) + (v1.y - v2.y)*(v1.y - v2.y) + (v1.z - v2.z)*(v1.z - v2.z));
947 } 957 }
958
948 #endregion 959 #endregion
949 } 960 }
950} 961} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 0689177..4c6e1c8 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -26,14 +26,12 @@
26* 26*
27*/ 27*/
28 28
29using Axiom.Math; 29using System.Collections.Generic;
30using libsecondlife; 30using libsecondlife;
31using libsecondlife.Packets; 31using libsecondlife.Packets;
32using OpenSim.Framework; 32using OpenSim.Framework;
33using OpenSim.Framework.Communications.Cache; 33using OpenSim.Framework.Communications.Cache;
34using OpenSim.Framework.Console; 34using OpenSim.Framework.Console;
35using OpenSim.Region.Physics.Manager;
36using System.Collections.Generic;
37 35
38namespace OpenSim.Region.Environment.Scenes 36namespace OpenSim.Region.Environment.Scenes
39{ 37{
@@ -41,7 +39,7 @@ namespace OpenSim.Region.Environment.Scenes
41 { 39 {
42 //split these method into this partial as a lot of these (hopefully) are only temporary and won't be needed once Caps is more complete 40 //split these method into this partial as a lot of these (hopefully) are only temporary and won't be needed once Caps is more complete
43 // or at least some of they can be moved somewhere else 41 // or at least some of they can be moved somewhere else
44 42
45 /// <summary> 43 /// <summary>
46 /// Add an inventory item to an avatar's inventory. 44 /// Add an inventory item to an avatar's inventory.
47 /// </summary> 45 /// </summary>
@@ -57,7 +55,7 @@ namespace OpenSim.Region.Environment.Scenes
57 remoteClient.SendInventoryItemCreateUpdate(item); 55 remoteClient.SendInventoryItemCreateUpdate(item);
58 } 56 }
59 } 57 }
60 58
61 /// <summary> 59 /// <summary>
62 /// <see>AddInventoryItem(LLUUID, InventoryItemBase)</see> 60 /// <see>AddInventoryItem(LLUUID, InventoryItemBase)</see>
63 /// </summary> 61 /// </summary>
@@ -71,10 +69,10 @@ namespace OpenSim.Region.Environment.Scenes
71 if (!TryGetAvatar(avatarId, out avatar)) 69 if (!TryGetAvatar(avatarId, out avatar))
72 { 70 {
73 MainLog.Instance.Error( 71 MainLog.Instance.Error(
74 "AGENTINVENTORY", "Could not find avatar {0} to add inventory item", avatarId); 72 "AGENTINVENTORY", "Could not find avatar {0} to add inventory item", avatarId);
75 return; 73 return;
76 } 74 }
77 75
78 AddInventoryItem(avatar.ControllingClient, item); 76 AddInventoryItem(avatar.ControllingClient, item);
79 } 77 }
80 78
@@ -95,7 +93,9 @@ namespace OpenSim.Region.Environment.Scenes
95 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 93 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
96 if (item != null) 94 if (item != null)
97 { 95 {
98 AssetBase asset = CreateAsset(item.inventoryName, item.inventoryDescription, (sbyte) item.invType, (sbyte) item.assetType, data); 96 AssetBase asset =
97 CreateAsset(item.inventoryName, item.inventoryDescription, (sbyte) item.invType,
98 (sbyte) item.assetType, data);
99 AssetCache.AddAsset(asset); 99 AssetCache.AddAsset(asset);
100 100
101 item.assetID = asset.FullID; 101 item.assetID = asset.FullID;
@@ -117,7 +117,7 @@ namespace OpenSim.Region.Environment.Scenes
117 } 117 }
118 return LLUUID.Zero; 118 return LLUUID.Zero;
119 } 119 }
120 120
121 /// <summary> 121 /// <summary>
122 /// <see>CapsUpdatedInventoryItemAsset(IClientAPI, LLUUID, byte[])</see> 122 /// <see>CapsUpdatedInventoryItemAsset(IClientAPI, LLUUID, byte[])</see>
123 /// </summary> 123 /// </summary>
@@ -132,14 +132,14 @@ namespace OpenSim.Region.Environment.Scenes
132 else 132 else
133 { 133 {
134 MainLog.Instance.Error( 134 MainLog.Instance.Error(
135 "AGENTINVENTORY", 135 "AGENTINVENTORY",
136 "Avatar {0} cannot be found to update its inventory item asset", 136 "Avatar {0} cannot be found to update its inventory item asset",
137 avatarId); 137 avatarId);
138 } 138 }
139 139
140 return LLUUID.Zero; 140 return LLUUID.Zero;
141 } 141 }
142 142
143 /// <summary> 143 /// <summary>
144 /// Capability originating call to update the asset of a script in a prim's (task's) inventory 144 /// Capability originating call to update the asset of a script in a prim's (task's) inventory
145 /// </summary> 145 /// </summary>
@@ -149,17 +149,17 @@ namespace OpenSim.Region.Environment.Scenes
149 /// <param name="isScriptRunning">Indicates whether the script to update is currently running</param> 149 /// <param name="isScriptRunning">Indicates whether the script to update is currently running</param>
150 /// <param name="data"></param> 150 /// <param name="data"></param>
151 /// <returns>Asset LLUID created</returns> 151 /// <returns>Asset LLUID created</returns>
152 public void CapsUpdateTaskInventoryScriptAsset(IClientAPI remoteClient, LLUUID itemId, 152 public void CapsUpdateTaskInventoryScriptAsset(IClientAPI remoteClient, LLUUID itemId,
153 LLUUID primId, bool isScriptRunning, byte[] data) 153 LLUUID primId, bool isScriptRunning, byte[] data)
154 { 154 {
155 // TODO Not currently doing anything with the isScriptRunning bool 155 // TODO Not currently doing anything with the isScriptRunning bool
156 156
157 MainLog.Instance.Verbose( 157 MainLog.Instance.Verbose(
158 "PRIMINVENTORY", 158 "PRIMINVENTORY",
159 "Prim inventory script save functionality not yet implemented." 159 "Prim inventory script save functionality not yet implemented."
160 + " remoteClient: {0}, itemID: {1}, primID: {2}, isScriptRunning: {3}", 160 + " remoteClient: {0}, itemID: {1}, primID: {2}, isScriptRunning: {3}",
161 remoteClient, itemId, primId, isScriptRunning); 161 remoteClient, itemId, primId, isScriptRunning);
162 162
163 // TODO 163 // TODO
164 // Retrieve client LLUID 164 // Retrieve client LLUID
165 // Retrieve sog containing primID 165 // Retrieve sog containing primID
@@ -170,13 +170,13 @@ namespace OpenSim.Region.Environment.Scenes
170 // Trigger rerunning of script (use TriggerRezScript event, see RezScript) 170 // Trigger rerunning of script (use TriggerRezScript event, see RezScript)
171 // return new asset id 171 // return new asset id
172 } 172 }
173 173
174 /// <summary> 174 /// <summary>
175 /// <see>CapsUpdateTaskInventoryScriptAsset(IClientAPI, LLUUID, LLUUID, bool, byte[])</see> 175 /// <see>CapsUpdateTaskInventoryScriptAsset(IClientAPI, LLUUID, LLUUID, bool, byte[])</see>
176 /// </summary> 176 /// </summary>
177 private void CapsUpdateTaskInventoryScriptAsset(LLUUID avatarId, LLUUID itemId, 177 private void CapsUpdateTaskInventoryScriptAsset(LLUUID avatarId, LLUUID itemId,
178 LLUUID primId, bool isScriptRunning, byte[] data) 178 LLUUID primId, bool isScriptRunning, byte[] data)
179 { 179 {
180 ScenePresence avatar; 180 ScenePresence avatar;
181 181
182 if (TryGetAvatar(avatarId, out avatar)) 182 if (TryGetAvatar(avatarId, out avatar))
@@ -187,10 +187,10 @@ namespace OpenSim.Region.Environment.Scenes
187 else 187 else
188 { 188 {
189 MainLog.Instance.Error( 189 MainLog.Instance.Error(
190 "PRIMINVENTORY", 190 "PRIMINVENTORY",
191 "Avatar {0} cannot be found to update its prim item asset", 191 "Avatar {0} cannot be found to update its prim item asset",
192 avatarId); 192 avatarId);
193 } 193 }
194 } 194 }
195 195
196 /// <summary> 196 /// <summary>
@@ -204,74 +204,75 @@ namespace OpenSim.Region.Environment.Scenes
204 /// <param name="name">The name of the updated item</param> 204 /// <param name="name">The name of the updated item</param>
205 /// <param name="description">The description of the updated item</param> 205 /// <param name="description">The description of the updated item</param>
206 /// <param name="nextOwnerMask">The permissions of the updated item</param> 206 /// <param name="nextOwnerMask">The permissions of the updated item</param>
207 public void UpdateInventoryItemAsset(IClientAPI remoteClient, LLUUID transactionID, 207 public void UpdateInventoryItemAsset(IClientAPI remoteClient, LLUUID transactionID,
208 LLUUID itemID, string name, string description, 208 LLUUID itemID, string name, string description,
209 uint nextOwnerMask) 209 uint nextOwnerMask)
210 { 210 {
211 CachedUserInfo userInfo 211 CachedUserInfo userInfo
212 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 212 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
213 213
214 if (userInfo != null && userInfo.RootFolder != null) 214 if (userInfo != null && userInfo.RootFolder != null)
215 { 215 {
216 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 216 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
217 if (item != null) 217 if (item != null)
218 { 218 {
219 if (LLUUID.Zero == transactionID) 219 if (LLUUID.Zero == transactionID)
220 { 220 {
221 item.inventoryName = name; 221 item.inventoryName = name;
222 item.inventoryDescription = description; 222 item.inventoryDescription = description;
223 item.inventoryNextPermissions = nextOwnerMask; 223 item.inventoryNextPermissions = nextOwnerMask;
224 224
225 userInfo.UpdateItem(remoteClient.AgentId, item); 225 userInfo.UpdateItem(remoteClient.AgentId, item);
226 } 226 }
227 else 227 else
228 { 228 {
229 AgentAssetTransactions transactions 229 AgentAssetTransactions transactions
230 = CommsManager.TransactionsManager.GetUserTransActions(remoteClient.AgentId); 230 = CommsManager.TransactionsManager.GetUserTransActions(remoteClient.AgentId);
231 231
232 if (transactions != null) 232 if (transactions != null)
233 { 233 {
234 LLUUID assetID = libsecondlife.LLUUID.Combine(transactionID, remoteClient.SecureSessionId); 234 LLUUID assetID = LLUUID.Combine(transactionID, remoteClient.SecureSessionId);
235 AssetBase asset 235 AssetBase asset
236 = AssetCache.GetAsset( 236 = AssetCache.GetAsset(
237 assetID, (item.assetType == (int)AssetType.Texture ? true : false)); 237 assetID, (item.assetType == (int) AssetType.Texture ? true : false));
238 238
239 if (asset == null) 239 if (asset == null)
240 { 240 {
241 asset = transactions.GetTransactionAsset(transactionID); 241 asset = transactions.GetTransactionAsset(transactionID);
242 } 242 }
243 243
244 if (asset != null && asset.FullID == assetID) 244 if (asset != null && asset.FullID == assetID)
245 { 245 {
246 asset.Name = item.inventoryName; 246 asset.Name = item.inventoryName;
247 asset.Description = item.inventoryDescription; 247 asset.Description = item.inventoryDescription;
248 asset.InvType = (sbyte) item.invType; 248 asset.InvType = (sbyte) item.invType;
249 asset.Type = (sbyte) item.assetType; 249 asset.Type = (sbyte) item.assetType;
250 item.assetID = asset.FullID; 250 item.assetID = asset.FullID;
251 251
252 AssetCache.AddAsset(asset); 252 AssetCache.AddAsset(asset);
253 } 253 }
254 254
255 userInfo.UpdateItem(remoteClient.AgentId, item); 255 userInfo.UpdateItem(remoteClient.AgentId, item);
256 } 256 }
257 } 257 }
258 } 258 }
259 else 259 else
260 { 260 {
261 MainLog.Instance.Warn( 261 MainLog.Instance.Warn(
262 "AGENTINVENTORY", 262 "AGENTINVENTORY",
263 "Item ID " + itemID + " not found for an inventory item update."); 263 "Item ID " + itemID + " not found for an inventory item update.");
264 } 264 }
265 } 265 }
266 else 266 else
267 { 267 {
268 MainLog.Instance.Warn( 268 MainLog.Instance.Warn(
269 "AGENTINVENTORY", 269 "AGENTINVENTORY",
270 "Agent ID " + remoteClient.AgentId + " not found for an inventory item update."); 270 "Agent ID " + remoteClient.AgentId + " not found for an inventory item update.");
271 } 271 }
272 } 272 }
273 273
274 public void CopyInventoryItem(IClientAPI remoteClient, uint callbackID, LLUUID oldAgentID, LLUUID oldItemID, LLUUID newFolderID, string newName) 274 public void CopyInventoryItem(IClientAPI remoteClient, uint callbackID, LLUUID oldAgentID, LLUUID oldItemID,
275 LLUUID newFolderID, string newName)
275 { 276 {
276 InventoryItemBase item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(oldItemID); 277 InventoryItemBase item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(oldItemID);
277 if (item == null) 278 if (item == null)
@@ -308,7 +309,7 @@ namespace OpenSim.Region.Environment.Scenes
308 } 309 }
309 310
310 asset.Name = (newName.Length == 0) ? item.inventoryName : newName; 311 asset.Name = (newName.Length == 0) ? item.inventoryName : newName;
311 312
312 // TODO: preserve current permissions? 313 // TODO: preserve current permissions?
313 CreateNewInventoryItem(remoteClient, newFolderID, callbackID, asset, item.inventoryNextPermissions); 314 CreateNewInventoryItem(remoteClient, newFolderID, callbackID, asset, item.inventoryNextPermissions);
314 } 315 }
@@ -325,12 +326,13 @@ namespace OpenSim.Region.Environment.Scenes
325 return asset; 326 return asset;
326 } 327 }
327 328
328 public void MoveInventoryItem(IClientAPI remoteClient,LLUUID folderID, LLUUID itemID, int length, string newName) 329 public void MoveInventoryItem(IClientAPI remoteClient, LLUUID folderID, LLUUID itemID, int length,
330 string newName)
329 { 331 {
330 MainLog.Instance.Verbose( 332 MainLog.Instance.Verbose(
331 "AGENTINVENTORY", 333 "AGENTINVENTORY",
332 "Moving item for " + remoteClient.AgentId.ToString()); 334 "Moving item for " + remoteClient.AgentId.ToString());
333 335
334 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 336 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
335 if (userInfo == null) 337 if (userInfo == null)
336 { 338 {
@@ -364,8 +366,6 @@ namespace OpenSim.Region.Environment.Scenes
364 MainLog.Instance.Warn("AGENTINVENTORY", "Failed to find item " + itemID.ToString() + ", no root folder"); 366 MainLog.Instance.Warn("AGENTINVENTORY", "Failed to find item " + itemID.ToString() + ", no root folder");
365 return; 367 return;
366 } 368 }
367
368
369 } 369 }
370 370
371 private void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID folderID, uint callbackID, 371 private void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID folderID, uint callbackID,
@@ -406,7 +406,8 @@ namespace OpenSim.Region.Environment.Scenes
406 /// <param name="wearableType"></param> 406 /// <param name="wearableType"></param>
407 /// <param name="nextOwnerMask"></param> 407 /// <param name="nextOwnerMask"></param>
408 public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, 408 public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID,
409 uint callbackID, string description, string name, sbyte invType, sbyte assetType, 409 uint callbackID, string description, string name, sbyte invType,
410 sbyte assetType,
410 byte wearableType, uint nextOwnerMask) 411 byte wearableType, uint nextOwnerMask)
411 { 412 {
412 if (transActionID == LLUUID.Zero) 413 if (transActionID == LLUUID.Zero)
@@ -437,8 +438,8 @@ namespace OpenSim.Region.Environment.Scenes
437 { 438 {
438 if (ent is SceneObjectGroup) 439 if (ent is SceneObjectGroup)
439 { 440 {
440 if (((SceneObjectGroup)ent).HasChildPrim(localID)) 441 if (((SceneObjectGroup) ent).HasChildPrim(localID))
441 return (SceneObjectGroup)ent; 442 return (SceneObjectGroup) ent;
442 } 443 }
443 } 444 }
444 return null; 445 return null;
@@ -491,13 +492,13 @@ namespace OpenSim.Region.Environment.Scenes
491 else 492 else
492 { 493 {
493 MainLog.Instance.Warn( 494 MainLog.Instance.Warn(
494 "PRIMINVENTORY", 495 "PRIMINVENTORY",
495 "Removal of item {0} requested of prim {1} but this prim does not exist", 496 "Removal of item {0} requested of prim {1} but this prim does not exist",
496 itemID, 497 itemID,
497 localID); 498 localID);
498 } 499 }
499 } 500 }
500 501
501 /// <summary> 502 /// <summary>
502 /// Update an item in a prim (task) inventory. 503 /// Update an item in a prim (task) inventory.
503 /// This method does not handle scripts, <see>RezScript(IClientAPI, LLUUID, unit)</see> 504 /// This method does not handle scripts, <see>RezScript(IClientAPI, LLUUID, unit)</see>
@@ -506,7 +507,7 @@ namespace OpenSim.Region.Environment.Scenes
506 /// <param name="itemID"></param> 507 /// <param name="itemID"></param>
507 /// <param name="folderID"></param> 508 /// <param name="folderID"></param>
508 /// <param name="primLocalID"></param> 509 /// <param name="primLocalID"></param>
509 public void UpdateTaskInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID folderID, 510 public void UpdateTaskInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID folderID,
510 uint primLocalID) 511 uint primLocalID)
511 { 512 {
512 SceneObjectGroup group = GetGroupByPrim(primLocalID); 513 SceneObjectGroup group = GetGroupByPrim(primLocalID);
@@ -515,17 +516,17 @@ namespace OpenSim.Region.Environment.Scenes
515 // TODO Retrieve itemID from client's inventory to pass on 516 // TODO Retrieve itemID from client's inventory to pass on
516 //group.AddInventoryItem(rmoteClient, primLocalID, null); 517 //group.AddInventoryItem(rmoteClient, primLocalID, null);
517 MainLog.Instance.Verbose( 518 MainLog.Instance.Verbose(
518 "PRIMINVENTORY", 519 "PRIMINVENTORY",
519 "UpdateTaskInventory called with script {0}, folder {1}, primLocalID {2}, user {3}", 520 "UpdateTaskInventory called with script {0}, folder {1}, primLocalID {2}, user {3}",
520 itemID, folderID, primLocalID, remoteClient.Name); 521 itemID, folderID, primLocalID, remoteClient.Name);
521 } 522 }
522 else 523 else
523 { 524 {
524 MainLog.Instance.Warn( 525 MainLog.Instance.Warn(
525 "PRIMINVENTORY", 526 "PRIMINVENTORY",
526 "Update with script {0} requested of prim {1} for {2} but this prim does not exist", 527 "Update with script {0} requested of prim {1} for {2} but this prim does not exist",
527 itemID, primLocalID, remoteClient.Name); 528 itemID, primLocalID, remoteClient.Name);
528 } 529 }
529 } 530 }
530 531
531 /// <summary> 532 /// <summary>
@@ -551,7 +552,7 @@ namespace OpenSim.Region.Environment.Scenes
551 { 552 {
552 isTexture = true; 553 isTexture = true;
553 } 554 }
554 555
555 AssetBase rezAsset = AssetCache.GetAsset(item.assetID, isTexture); 556 AssetBase rezAsset = AssetCache.GetAsset(item.assetID, isTexture);
556 557
557 if (rezAsset != null) 558 if (rezAsset != null)
@@ -569,18 +570,18 @@ namespace OpenSim.Region.Environment.Scenes
569 // TODO: do we care about the value of this bool? 570 // TODO: do we care about the value of this bool?
570 group.AddInventoryItem(remoteClient, localID, item, copyID); 571 group.AddInventoryItem(remoteClient, localID, item, copyID);
571 group.GetProperites(remoteClient); 572 group.GetProperites(remoteClient);
572 573
573 MainLog.Instance.Verbose( 574 MainLog.Instance.Verbose(
574 "PRIMINVENTORY", 575 "PRIMINVENTORY",
575 "Rezzed script {0} (asset {1}) into prim {2} for user {3}", 576 "Rezzed script {0} (asset {1}) into prim {2} for user {3}",
576 item.inventoryName, rezAsset.FullID, localID, remoteClient.Name); 577 item.inventoryName, rezAsset.FullID, localID, remoteClient.Name);
577 } 578 }
578 else 579 else
579 { 580 {
580 MainLog.Instance.Warn( 581 MainLog.Instance.Warn(
581 "PRIMINVENTORY", 582 "PRIMINVENTORY",
582 "Could not rez script {0} into prim {1} for user {2}" 583 "Could not rez script {0} into prim {1} for user {2}"
583 + " because the prim could not be found in the region!", 584 + " because the prim could not be found in the region!",
584 item.inventoryName, localID, remoteClient.Name); 585 item.inventoryName, localID, remoteClient.Name);
585 } 586 }
586 } 587 }
@@ -589,7 +590,7 @@ namespace OpenSim.Region.Environment.Scenes
589 MainLog.Instance.Warn( 590 MainLog.Instance.Warn(
590 "PRIMINVENTORY", 591 "PRIMINVENTORY",
591 "Could not rez script {0} into prim {1} for user {2}" 592 "Could not rez script {0} into prim {1} for user {2}"
592 + " because the item asset {3} could not be found!", 593 + " because the item asset {3} could not be found!",
593 item.inventoryName, localID, item.assetID, remoteClient.Name); 594 item.inventoryName, localID, item.assetID, remoteClient.Name);
594 } 595 }
595 } 596 }
@@ -638,7 +639,8 @@ namespace OpenSim.Region.Environment.Scenes
638 if (PermissionsMngr.CanDeRezObject(remoteClient.AgentId, ((SceneObjectGroup) selectedEnt).UUID)) 639 if (PermissionsMngr.CanDeRezObject(remoteClient.AgentId, ((SceneObjectGroup) selectedEnt).UUID))
639 { 640 {
640 string sceneObjectXml = ((SceneObjectGroup) selectedEnt).ToXmlString(); 641 string sceneObjectXml = ((SceneObjectGroup) selectedEnt).ToXmlString();
641 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 642 CachedUserInfo userInfo =
643 CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
642 if (userInfo != null) 644 if (userInfo != null)
643 { 645 {
644 AssetBase asset = CreateAsset( 646 AssetBase asset = CreateAsset(
@@ -661,9 +663,10 @@ namespace OpenSim.Region.Environment.Scenes
661 item.parentFolderID = DeRezPacket.AgentBlock.DestinationID; 663 item.parentFolderID = DeRezPacket.AgentBlock.DestinationID;
662 item.inventoryCurrentPermissions = 2147483647; 664 item.inventoryCurrentPermissions = 2147483647;
663 item.inventoryNextPermissions = 2147483647; 665 item.inventoryNextPermissions = 2147483647;
664 item.inventoryEveryOnePermissions = ((SceneObjectGroup)selectedEnt).RootPart.EveryoneMask; 666 item.inventoryEveryOnePermissions =
665 item.inventoryBasePermissions = ((SceneObjectGroup)selectedEnt).RootPart.BaseMask; 667 ((SceneObjectGroup) selectedEnt).RootPart.EveryoneMask;
666 item.inventoryCurrentPermissions = ((SceneObjectGroup)selectedEnt).RootPart.OwnerMask; 668 item.inventoryBasePermissions = ((SceneObjectGroup) selectedEnt).RootPart.BaseMask;
669 item.inventoryCurrentPermissions = ((SceneObjectGroup) selectedEnt).RootPart.OwnerMask;
667 670
668 userInfo.AddItem(remoteClient.AgentId, item); 671 userInfo.AddItem(remoteClient.AgentId, item);
669 remoteClient.SendInventoryItemCreateUpdate(item); 672 remoteClient.SendInventoryItemCreateUpdate(item);
@@ -730,20 +733,20 @@ namespace OpenSim.Region.Environment.Scenes
730 //bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0)&& m_physicalPrim); 733 //bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0)&& m_physicalPrim);
731 //if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) 734 //if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
732 //{ 735 //{
733 //PrimitiveBaseShape pbs = rootPart.Shape; 736 //PrimitiveBaseShape pbs = rootPart.Shape;
734 //rootPart.PhysActor = PhysicsScene.AddPrimShape( 737 //rootPart.PhysActor = PhysicsScene.AddPrimShape(
735 //rootPart.Name, 738 //rootPart.Name,
736 //pbs, 739 //pbs,
737 //new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y, 740 //new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y,
738 // rootPart.AbsolutePosition.Z), 741 // rootPart.AbsolutePosition.Z),
739 //new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z), 742 //new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
740 //new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X, 743 //new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
741 // rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics); 744 // rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
742 745
743 // rootPart.DoPhysicsPropertyUpdate(UsePhysics, true); 746 // rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
744 747
745 // } 748 // }
746 rootPart.ScheduleFullUpdate(); 749 rootPart.ScheduleFullUpdate();
747 } 750 }
748 } 751 }
749} 752} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
index 6a7c266..999b70f 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
@@ -29,8 +29,6 @@ using System.Collections.Generic;
29using libsecondlife; 29using libsecondlife;
30using libsecondlife.Packets; 30using libsecondlife.Packets;
31using OpenSim.Framework; 31using OpenSim.Framework;
32using OpenSim.Framework.UserManagement;
33using OpenSim.Framework.Console;
34 32
35namespace OpenSim.Region.Environment.Scenes 33namespace OpenSim.Region.Environment.Scenes
36{ 34{
@@ -45,7 +43,8 @@ namespace OpenSim.Region.Environment.Scenes
45 /// <param name="action">The action to be performed</param> 43 /// <param name="action">The action to be performed</param>
46 /// <param name="north">Distance from the north border where the cursor is located</param> 44 /// <param name="north">Distance from the north border where the cursor is located</param>
47 /// <param name="west">Distance from the west border where the cursor is located</param> 45 /// <param name="west">Distance from the west border where the cursor is located</param>
48 public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, float south, float east, 46 public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west,
47 float south, float east,
49 IClientAPI remoteUser) 48 IClientAPI remoteUser)
50 { 49 {
51 // Do a permissions check before allowing terraforming. 50 // Do a permissions check before allowing terraforming.
@@ -157,7 +156,7 @@ namespace OpenSim.Region.Environment.Scenes
157 } 156 }
158 } 157 }
159 } 158 }
160 159
161 public void ProcessAvatarPickerRequest(IClientAPI client, LLUUID avatarID, LLUUID RequestID, string query) 160 public void ProcessAvatarPickerRequest(IClientAPI client, LLUUID avatarID, LLUUID RequestID, string query)
162 { 161 {
163 //EventManager.TriggerAvatarPickerRequest(); 162 //EventManager.TriggerAvatarPickerRequest();
@@ -166,13 +165,14 @@ namespace OpenSim.Region.Environment.Scenes
166 AvatarResponses = CommsManager.GenerateAgentPickerRequestResponse(RequestID, query); 165 AvatarResponses = CommsManager.GenerateAgentPickerRequestResponse(RequestID, query);
167 166
168 AvatarPickerReplyPacket replyPacket = new AvatarPickerReplyPacket(); 167 AvatarPickerReplyPacket replyPacket = new AvatarPickerReplyPacket();
169 AvatarPickerReplyPacket.DataBlock[] searchData = new AvatarPickerReplyPacket.DataBlock[AvatarResponses.Count]; 168 AvatarPickerReplyPacket.DataBlock[] searchData =
169 new AvatarPickerReplyPacket.DataBlock[AvatarResponses.Count];
170 AvatarPickerReplyPacket.AgentDataBlock agentData = new AvatarPickerReplyPacket.AgentDataBlock(); 170 AvatarPickerReplyPacket.AgentDataBlock agentData = new AvatarPickerReplyPacket.AgentDataBlock();
171 171
172 agentData.AgentID = avatarID; 172 agentData.AgentID = avatarID;
173 agentData.QueryID = RequestID; 173 agentData.QueryID = RequestID;
174 replyPacket.AgentData = agentData; 174 replyPacket.AgentData = agentData;
175 byte[] bytes = new byte[AvatarResponses.Count * 32]; 175 byte[] bytes = new byte[AvatarResponses.Count*32];
176 176
177 int i = 0; 177 int i = 0;
178 foreach (AvatarPickerAvatar item in AvatarResponses) 178 foreach (AvatarPickerAvatar item in AvatarResponses)
@@ -180,10 +180,9 @@ namespace OpenSim.Region.Environment.Scenes
180 LLUUID translatedIDtem = item.AvatarID; 180 LLUUID translatedIDtem = item.AvatarID;
181 searchData[i] = new AvatarPickerReplyPacket.DataBlock(); 181 searchData[i] = new AvatarPickerReplyPacket.DataBlock();
182 searchData[i].AvatarID = translatedIDtem; 182 searchData[i].AvatarID = translatedIDtem;
183 searchData[i].FirstName = Helpers.StringToField((string)item.firstName); 183 searchData[i].FirstName = Helpers.StringToField((string) item.firstName);
184 searchData[i].LastName = Helpers.StringToField((string)item.lastName); 184 searchData[i].LastName = Helpers.StringToField((string) item.lastName);
185 i++; 185 i++;
186
187 } 186 }
188 if (AvatarResponses.Count == 0) 187 if (AvatarResponses.Count == 0)
189 { 188 {
@@ -193,4 +192,4 @@ namespace OpenSim.Region.Environment.Scenes
193 client.SendAvatarPickerReply(replyPacket); 192 client.SendAvatarPickerReply(replyPacket);
194 } 193 }
195 } 194 }
196} 195} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 0144c4c..c0fda61 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -27,27 +27,28 @@
27*/ 27*/
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.IO; 30using System.Drawing;
31using System.Net; 31using System.Drawing.Imaging;
32using System.Threading; 32using System.Threading;
33using System.Timers; 33using System.Timers;
34using System.Xml;
35using Axiom.Math; 34using Axiom.Math;
36using libsecondlife; 35using libsecondlife;
36using libsecondlife.Packets;
37using OpenJPEGNet;
37using OpenSim.Framework; 38using OpenSim.Framework;
38using OpenSim.Framework.Communications; 39using OpenSim.Framework.Communications;
39using OpenSim.Framework.Communications.Cache; 40using OpenSim.Framework.Communications.Cache;
40using OpenSim.Framework.Console; 41using OpenSim.Framework.Console;
41using OpenSim.Region.Environment.LandManagement;
42using OpenSim.Framework.Servers; 42using OpenSim.Framework.Servers;
43using OpenSim.Region.Capabilities;
44using OpenSim.Region.Environment.Interfaces; 43using OpenSim.Region.Environment.Interfaces;
44using OpenSim.Region.Environment.LandManagement;
45using OpenSim.Region.Environment.Modules; 45using OpenSim.Region.Environment.Modules;
46using OpenSim.Region.Environment.Scenes.Scripting; 46using OpenSim.Region.Environment.Scenes.Scripting;
47using OpenSim.Region.Environment.Types;
48using OpenSim.Region.Physics.Manager; 47using OpenSim.Region.Physics.Manager;
49using OpenSim.Region.Terrain; 48using OpenSim.Region.Terrain;
50using Timer = System.Timers.Timer; 49using Caps=OpenSim.Region.Capabilities.Caps;
50using Image=System.Drawing.Image;
51using Timer=System.Timers.Timer;
51 52
52namespace OpenSim.Region.Environment.Scenes 53namespace OpenSim.Region.Environment.Scenes
53{ 54{
@@ -56,6 +57,7 @@ namespace OpenSim.Region.Environment.Scenes
56 public partial class Scene : SceneBase 57 public partial class Scene : SceneBase
57 { 58 {
58 #region Fields 59 #region Fields
60
59 protected Timer m_heartbeatTimer = new Timer(); 61 protected Timer m_heartbeatTimer = new Timer();
60 protected Timer m_restartWaitTimer = new Timer(); 62 protected Timer m_restartWaitTimer = new Timer();
61 63
@@ -88,7 +90,7 @@ namespace OpenSim.Region.Environment.Scenes
88 protected SceneCommunicationService m_sceneGridService; 90 protected SceneCommunicationService m_sceneGridService;
89 protected SceneXmlLoader m_sceneXmlLoader; 91 protected SceneXmlLoader m_sceneXmlLoader;
90 92
91 protected Dictionary<LLUUID, OpenSim.Region.Capabilities.Caps> m_capsHandlers = new Dictionary<LLUUID, OpenSim.Region.Capabilities.Caps>(); 93 protected Dictionary<LLUUID, Caps> m_capsHandlers = new Dictionary<LLUUID, Caps>();
92 protected BaseHttpServer httpListener; 94 protected BaseHttpServer httpListener;
93 95
94 protected Dictionary<string, IRegionModule> Modules = new Dictionary<string, IRegionModule>(); 96 protected Dictionary<string, IRegionModule> Modules = new Dictionary<string, IRegionModule>();
@@ -122,6 +124,7 @@ namespace OpenSim.Region.Environment.Scenes
122 private int m_update_terrain = 50; 124 private int m_update_terrain = 50;
123 private int m_update_land = 1; 125 private int m_update_land = 1;
124 private int m_update_avatars = 1; 126 private int m_update_avatars = 1;
127
125 #endregion 128 #endregion
126 129
127 #region Properties 130 #region Properties
@@ -145,6 +148,7 @@ namespace OpenSim.Region.Environment.Scenes
145 set { m_innerScene.PhysicsScene = value; } 148 set { m_innerScene.PhysicsScene = value; }
146 get { return (m_innerScene.PhysicsScene); } 149 get { return (m_innerScene.PhysicsScene); }
147 } 150 }
151
148 // This gets locked so things stay thread safe. 152 // This gets locked so things stay thread safe.
149 public object SyncRoot 153 public object SyncRoot
150 { 154 {
@@ -204,7 +208,8 @@ namespace OpenSim.Region.Environment.Scenes
204 208
205 #region Constructors 209 #region Constructors
206 210
207 public Scene(RegionInfo regInfo, AgentCircuitManager authen, PermissionManager permissionManager, CommunicationsManager commsMan, SceneCommunicationService sceneGridService, 211 public Scene(RegionInfo regInfo, AgentCircuitManager authen, PermissionManager permissionManager,
212 CommunicationsManager commsMan, SceneCommunicationService sceneGridService,
208 AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer, 213 AssetCache assetCach, StorageManager storeManager, BaseHttpServer httpServer,
209 ModuleLoader moduleLoader, bool dumpAssetsToFile, bool physicalPrim, bool SendTasksToChild) 214 ModuleLoader moduleLoader, bool dumpAssetsToFile, bool physicalPrim, bool SendTasksToChild)
210 { 215 {
@@ -230,9 +235,11 @@ namespace OpenSim.Region.Environment.Scenes
230 m_LandManager = new LandManager(this, m_regInfo); 235 m_LandManager = new LandManager(this, m_regInfo);
231 236
232 //Bind Storage Manager functions to some land manager functions for this scene 237 //Bind Storage Manager functions to some land manager functions for this scene
233 EventManager.OnLandObjectAdded += new EventManager.LandObjectAdded(m_storageManager.DataStore.StoreLandObject); 238 EventManager.OnLandObjectAdded +=
234 EventManager.OnLandObjectRemoved += new EventManager.LandObjectRemoved(m_storageManager.DataStore.RemoveLandObject); 239 new EventManager.LandObjectAdded(m_storageManager.DataStore.StoreLandObject);
235 240 EventManager.OnLandObjectRemoved +=
241 new EventManager.LandObjectRemoved(m_storageManager.DataStore.RemoveLandObject);
242
236 m_estateManager = new EstateManager(this, m_regInfo); 243 m_estateManager = new EstateManager(this, m_regInfo);
237 244
238 m_permissionManager = permissionManager; 245 m_permissionManager = permissionManager;
@@ -258,7 +265,7 @@ namespace OpenSim.Region.Environment.Scenes
258 m_sceneObjects = new Dictionary<LLUUID, SceneObjectGroup>(); 265 m_sceneObjects = new Dictionary<LLUUID, SceneObjectGroup>();
259 266
260 MainLog.Instance.Verbose("SCENE", "Creating LandMap"); 267 MainLog.Instance.Verbose("SCENE", "Creating LandMap");
261 Terrain = new TerrainEngine((int)RegionInfo.RegionLocX, (int)RegionInfo.RegionLocY); 268 Terrain = new TerrainEngine((int) RegionInfo.RegionLocX, (int) RegionInfo.RegionLocY);
262 269
263 ScenePresence.LoadAnims(); 270 ScenePresence.LoadAnims();
264 271
@@ -276,7 +283,7 @@ namespace OpenSim.Region.Environment.Scenes
276 protected virtual void RegisterDefaultSceneEvents() 283 protected virtual void RegisterDefaultSceneEvents()
277 { 284 {
278 m_eventManager.OnParcelPrimCountAdd += m_LandManager.addPrimToLandPrimCounts; 285 m_eventManager.OnParcelPrimCountAdd += m_LandManager.addPrimToLandPrimCounts;
279 m_eventManager.OnParcelPrimCountUpdate += this.addPrimsToParcelCounts; 286 m_eventManager.OnParcelPrimCountUpdate += addPrimsToParcelCounts;
280 m_eventManager.OnPermissionError += SendPermissionAlert; 287 m_eventManager.OnPermissionError += SendPermissionAlert;
281 } 288 }
282 289
@@ -295,68 +302,65 @@ namespace OpenSim.Region.Environment.Scenes
295 302
296 if (RegionInfo.RegionHandle != otherRegion.RegionHandle) 303 if (RegionInfo.RegionHandle != otherRegion.RegionHandle)
297 { 304 {
298 for (int i = 0; i < m_neighbours.Count; i++) 305 for (int i = 0; i < m_neighbours.Count; i++)
306 {
307 // The purpose of this loop is to re-update the known neighbors
308 // when another region comes up on top of another one.
309 // The latest region in that location ends up in the
310 // 'known neighbors list'
311 // Additionally, the commFailTF property gets reset to false.
312 if (m_neighbours[i].RegionHandle == otherRegion.RegionHandle)
299 { 313 {
300 // The purpose of this loop is to re-update the known neighbors 314 lock (m_neighbours)
301 // when another region comes up on top of another one.
302 // The latest region in that location ends up in the
303 // 'known neighbors list'
304 // Additionally, the commFailTF property gets reset to false.
305 if (m_neighbours[i].RegionHandle == otherRegion.RegionHandle)
306 { 315 {
307 lock (m_neighbours) 316 m_neighbours[i] = otherRegion;
308 {
309 m_neighbours[i] = otherRegion;
310 }
311 } 317 }
312 } 318 }
319 }
313 320
314 // If the value isn't in the neighbours, add it. 321 // If the value isn't in the neighbours, add it.
315 // If the RegionInfo isn't exact but is for the same XY World location, 322 // If the RegionInfo isn't exact but is for the same XY World location,
316 // then the above loop will fix that. 323 // then the above loop will fix that.
317 324
318 if (!(m_neighbours.Contains(otherRegion))) 325 if (!(m_neighbours.Contains(otherRegion)))
326 {
327 lock (m_neighbours)
319 { 328 {
320 lock (m_neighbours) 329 m_neighbours.Add(otherRegion);
321 {
322 m_neighbours.Add(otherRegion);
323 }
324 } 330 }
325 if ((Math.Abs(otherRegion.RegionLocX - RegionInfo.RegionLocX) <= 1) && (Math.Abs(otherRegion.RegionLocY - RegionInfo.RegionLocY) <= 1)) 331 }
332 if ((Math.Abs(otherRegion.RegionLocX - RegionInfo.RegionLocX) <= 1) &&
333 (Math.Abs(otherRegion.RegionLocY - RegionInfo.RegionLocY) <= 1))
326 { 334 {
327 try 335 try
328 { 336 {
329
330 ForEachScenePresence(delegate(ScenePresence agent) 337 ForEachScenePresence(delegate(ScenePresence agent)
331 { 338 {
332 // If agent is a root agent. 339 // If agent is a root agent.
333 if (!agent.IsChildAgent) 340 if (!agent.IsChildAgent)
334 { 341 {
335 342 //agent.ControllingClient.new
336 //agent.ControllingClient.new 343 //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo());
337 //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); 344 InformClientOfNeighbor(agent, otherRegion);
338 InformClientOfNeighbor(agent, otherRegion); 345 }
339 } 346 }
340 } 347 );
341
342 );
343 } 348 }
344 catch (System.NullReferenceException) 349 catch (NullReferenceException)
345 { 350 {
346 // This means that we're not booted up completely yet. 351 // This means that we're not booted up completely yet.
347 // This shouldn't happen too often anymore. 352 // This shouldn't happen too often anymore.
348 MainLog.Instance.Error("SCENE", "Couldn't inform client of regionup because we got a null reference exception"); 353 MainLog.Instance.Error("SCENE",
354 "Couldn't inform client of regionup because we got a null reference exception");
349 } 355 }
350 } 356 }
351 else 357 else
352 { 358 {
353 MainLog.Instance.Verbose("INTERGRID", "Got notice about far away Region: " + otherRegion.RegionName.ToString() + 359 MainLog.Instance.Verbose("INTERGRID",
354 " at (" + otherRegion.RegionLocX.ToString() + ", " + otherRegion.RegionLocY.ToString() + ")" ); 360 "Got notice about far away Region: " + otherRegion.RegionName.ToString() +
361 " at (" + otherRegion.RegionLocX.ToString() + ", " +
362 otherRegion.RegionLocY.ToString() + ")");
355 } 363 }
356
357
358
359
360 } 364 }
361 return true; 365 return true;
362 } 366 }
@@ -379,11 +383,11 @@ namespace OpenSim.Region.Environment.Scenes
379 { 383 {
380 // Now we figure out what to set the timer to that does the notifications and calls, RestartNow() 384 // Now we figure out what to set the timer to that does the notifications and calls, RestartNow()
381 m_restartTimer.Interval = 15000; 385 m_restartTimer.Interval = 15000;
382 m_incrementsof15seconds = (int)seconds / 15; 386 m_incrementsof15seconds = (int) seconds/15;
383 m_RestartTimerCounter = 0; 387 m_RestartTimerCounter = 0;
384 m_restartTimer.AutoReset = true; 388 m_restartTimer.AutoReset = true;
385 m_restartTimer.Elapsed += new ElapsedEventHandler(RestartTimer_Elapsed); 389 m_restartTimer.Elapsed += new ElapsedEventHandler(RestartTimer_Elapsed);
386 MainLog.Instance.Error("REGION", "Restarting Region in " + (seconds / 60) + " minutes"); 390 MainLog.Instance.Error("REGION", "Restarting Region in " + (seconds/60) + " minutes");
387 m_restartTimer.Start(); 391 m_restartTimer.Start();
388 SendGeneralAlert(RegionInfo.RegionName + ": Restarting in 2 Minutes"); 392 SendGeneralAlert(RegionInfo.RegionName + ": Restarting in 2 Minutes");
389 } 393 }
@@ -399,7 +403,8 @@ namespace OpenSim.Region.Environment.Scenes
399 if (m_RestartTimerCounter <= m_incrementsof15seconds) 403 if (m_RestartTimerCounter <= m_incrementsof15seconds)
400 { 404 {
401 if (m_RestartTimerCounter == 4 || m_RestartTimerCounter == 6 || m_RestartTimerCounter == 7) 405 if (m_RestartTimerCounter == 4 || m_RestartTimerCounter == 6 || m_RestartTimerCounter == 7)
402 SendGeneralAlert(RegionInfo.RegionName + ": Restarting in " + ((8 - m_RestartTimerCounter) * 15) + " seconds"); 406 SendGeneralAlert(RegionInfo.RegionName + ": Restarting in " + ((8 - m_RestartTimerCounter)*15) +
407 " seconds");
403 } 408 }
404 else 409 else
405 { 410 {
@@ -432,21 +437,19 @@ namespace OpenSim.Region.Environment.Scenes
432 { 437 {
433 try 438 try
434 { 439 {
435
436 ForEachScenePresence(delegate(ScenePresence agent) 440 ForEachScenePresence(delegate(ScenePresence agent)
437 { 441 {
438 // If agent is a root agent. 442 // If agent is a root agent.
439 if (!agent.IsChildAgent) 443 if (!agent.IsChildAgent)
440 { 444 {
441 //agent.ControllingClient.new 445 //agent.ControllingClient.new
442 //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); 446 //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo());
443 InformClientOfNeighbor(agent, region); 447 InformClientOfNeighbor(agent, region);
444 } 448 }
445 } 449 }
446 450 );
447 );
448 } 451 }
449 catch (System.NullReferenceException) 452 catch (NullReferenceException)
450 { 453 {
451 // This means that we're not booted up completely yet. 454 // This means that we're not booted up completely yet.
452 // This shouldn't happen too often anymore. 455 // This shouldn't happen too often anymore.
@@ -464,24 +467,22 @@ namespace OpenSim.Region.Environment.Scenes
464 MainLog.Instance.Warn("SCENE", "Closing down the single simulator: " + RegionInfo.RegionName); 467 MainLog.Instance.Warn("SCENE", "Closing down the single simulator: " + RegionInfo.RegionName);
465 // Kick all ROOT agents with the message, 'The simulator is going down' 468 // Kick all ROOT agents with the message, 'The simulator is going down'
466 ForEachScenePresence(delegate(ScenePresence avatar) 469 ForEachScenePresence(delegate(ScenePresence avatar)
467 { 470 {
468 if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle)) 471 if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle))
469 avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle); 472 avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle);
470 473
471 if (!avatar.IsChildAgent) 474 if (!avatar.IsChildAgent)
472 avatar.ControllingClient.Kick("The simulator is going down."); 475 avatar.ControllingClient.Kick("The simulator is going down.");
473 476
474 avatar.ControllingClient.OutPacket(new libsecondlife.Packets.DisableSimulatorPacket(), ThrottleOutPacketType.Task); 477 avatar.ControllingClient.OutPacket(new DisableSimulatorPacket(),
475 }); 478 ThrottleOutPacketType.Task);
479 });
476 480
477 // Wait here, or the kick messages won't actually get to the agents before the scene terminates. 481 // Wait here, or the kick messages won't actually get to the agents before the scene terminates.
478 Thread.Sleep(500); 482 Thread.Sleep(500);
479 483
480 // Stop all client threads. 484 // Stop all client threads.
481 ForEachScenePresence(delegate(ScenePresence avatar) 485 ForEachScenePresence(delegate(ScenePresence avatar) { avatar.ControllingClient.Close(true); });
482 {
483 avatar.ControllingClient.Close(true);
484 });
485 // Stop updating the scene objects and agents. 486 // Stop updating the scene objects and agents.
486 m_heartbeatTimer.Close(); 487 m_heartbeatTimer.Close();
487 // close the inner scene 488 // close the inner scene
@@ -509,7 +510,7 @@ namespace OpenSim.Region.Environment.Scenes
509 public void StartTimer() 510 public void StartTimer()
510 { 511 {
511 m_heartbeatTimer.Enabled = true; 512 m_heartbeatTimer.Enabled = true;
512 m_heartbeatTimer.Interval = (int)(m_timespan * 1000); 513 m_heartbeatTimer.Interval = (int) (m_timespan*1000);
513 m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); 514 m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat);
514 } 515 }
515 516
@@ -555,30 +556,30 @@ namespace OpenSim.Region.Environment.Scenes
555 if (m_frame == Int32.MaxValue) 556 if (m_frame == Int32.MaxValue)
556 m_frame = 0; 557 m_frame = 0;
557 558
558 if (m_frame % m_update_physics == 0) 559 if (m_frame%m_update_physics == 0)
559 m_innerScene.UpdatePreparePhysics(); 560 m_innerScene.UpdatePreparePhysics();
560 561
561 if (m_frame % m_update_entitymovement == 0) 562 if (m_frame%m_update_entitymovement == 0)
562 m_innerScene.UpdateEntityMovement(); 563 m_innerScene.UpdateEntityMovement();
563 564
564 if (m_frame % m_update_physics == 0) 565 if (m_frame%m_update_physics == 0)
565 physicsFPS = m_innerScene.UpdatePhysics( 566 physicsFPS = m_innerScene.UpdatePhysics(
566 Math.Max(SinceLastFrame.TotalSeconds, m_timespan) 567 Math.Max(SinceLastFrame.TotalSeconds, m_timespan)
567 ); 568 );
568 569
569 if (m_frame % m_update_entities == 0) 570 if (m_frame%m_update_entities == 0)
570 m_innerScene.UpdateEntities(); 571 m_innerScene.UpdateEntities();
571 572
572 if (m_frame % m_update_events == 0) 573 if (m_frame%m_update_events == 0)
573 UpdateEvents(); 574 UpdateEvents();
574 575
575 if (m_frame % m_update_backup == 0) 576 if (m_frame%m_update_backup == 0)
576 UpdateStorageBackup(); 577 UpdateStorageBackup();
577 578
578 if (m_frame % m_update_terrain == 0) 579 if (m_frame%m_update_terrain == 0)
579 UpdateTerrain(); 580 UpdateTerrain();
580 581
581 if (m_frame % m_update_land == 0) 582 if (m_frame%m_update_land == 0)
582 UpdateLand(); 583 UpdateLand();
583 584
584 // if (m_frame%m_update_avatars == 0) 585 // if (m_frame%m_update_avatars == 0)
@@ -592,7 +593,6 @@ namespace OpenSim.Region.Environment.Scenes
592 m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount()); 593 m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount());
593 m_statsReporter.SetObjects(m_innerScene.GetTotalObjects()); 594 m_statsReporter.SetObjects(m_innerScene.GetTotalObjects());
594 m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjects()); 595 m_statsReporter.SetActiveObjects(m_innerScene.GetActiveObjects());
595
596 } 596 }
597 catch (NotImplementedException) 597 catch (NotImplementedException)
598 { 598 {
@@ -606,10 +606,11 @@ namespace OpenSim.Region.Environment.Scenes
606 { 606 {
607 updateLock.ReleaseMutex(); 607 updateLock.ReleaseMutex();
608 608
609 m_timedilation = m_timespan / (float)SinceLastFrame.TotalSeconds; 609 m_timedilation = m_timespan/(float) SinceLastFrame.TotalSeconds;
610 m_lastupdate = DateTime.Now; 610 m_lastupdate = DateTime.Now;
611 } 611 }
612 } 612 }
613
613 //Updates the time in the viewer. 614 //Updates the time in the viewer.
614 private void UpdateInWorldTime() 615 private void UpdateInWorldTime()
615 { 616 {
@@ -631,7 +632,7 @@ namespace OpenSim.Region.Environment.Scenes
631 } 632 }
632 } 633 }
633 634
634 private void SendSimStatsPackets(libsecondlife.Packets.SimStatsPacket pack) 635 private void SendSimStatsPackets(SimStatsPacket pack)
635 { 636 {
636 List<ScenePresence> StatSendAgents = GetScenePresences(); 637 List<ScenePresence> StatSendAgents = GetScenePresences();
637 foreach (ScenePresence agent in StatSendAgents) 638 foreach (ScenePresence agent in StatSendAgents)
@@ -639,11 +640,10 @@ namespace OpenSim.Region.Environment.Scenes
639 if (!agent.IsChildAgent) 640 if (!agent.IsChildAgent)
640 { 641 {
641 agent.ControllingClient.OutPacket(pack, ThrottleOutPacketType.Task); 642 agent.ControllingClient.OutPacket(pack, ThrottleOutPacketType.Task);
642
643 } 643 }
644 } 644 }
645
646 } 645 }
646
647 private void UpdateLand() 647 private void UpdateLand()
648 { 648 {
649 if (m_LandManager.landPrimCountTainted) 649 if (m_LandManager.landPrimCountTainted)
@@ -676,7 +676,7 @@ namespace OpenSim.Region.Environment.Scenes
676 { 676 {
677 for (int y = 0; y < 16; y++) 677 for (int y = 0; y < 16; y++)
678 { 678 {
679 if (Terrain.Tainted(x * 16, y * 16)) 679 if (Terrain.Tainted(x*16, y*16))
680 { 680 {
681 client.SendLayerData(x, y, terData); 681 client.SendLayerData(x, y, terData);
682 } 682 }
@@ -724,13 +724,17 @@ namespace OpenSim.Region.Environment.Scenes
724 724
725 public void ExportWorldMap(string fileName) 725 public void ExportWorldMap(string fileName)
726 { 726 {
727 List<MapBlockData> mapBlocks = this.CommsManager.GridService.RequestNeighbourMapBlocks((int)(this.RegionInfo.RegionLocX - 9), (int)(this.RegionInfo.RegionLocY - 9), (int)(this.RegionInfo.RegionLocX + 9), (int)(this.RegionInfo.RegionLocY + 9)); 727 List<MapBlockData> mapBlocks =
728 CommsManager.GridService.RequestNeighbourMapBlocks((int) (RegionInfo.RegionLocX - 9),
729 (int) (RegionInfo.RegionLocY - 9),
730 (int) (RegionInfo.RegionLocX + 9),
731 (int) (RegionInfo.RegionLocY + 9));
728 List<AssetBase> textures = new List<AssetBase>(); 732 List<AssetBase> textures = new List<AssetBase>();
729 List<System.Drawing.Image> bitImages = new List<System.Drawing.Image>(); 733 List<Image> bitImages = new List<Image>();
730 734
731 foreach (MapBlockData mapBlock in mapBlocks) 735 foreach (MapBlockData mapBlock in mapBlocks)
732 { 736 {
733 AssetBase texAsset = this.AssetCache.GetAsset(mapBlock.MapImageId, true); 737 AssetBase texAsset = AssetCache.GetAsset(mapBlock.MapImageId, true);
734 738
735 if (texAsset != null) 739 if (texAsset != null)
736 { 740 {
@@ -738,7 +742,7 @@ namespace OpenSim.Region.Environment.Scenes
738 } 742 }
739 else 743 else
740 { 744 {
741 texAsset = this.AssetCache.GetAsset(mapBlock.MapImageId, true); 745 texAsset = AssetCache.GetAsset(mapBlock.MapImageId, true);
742 if (texAsset != null) 746 if (texAsset != null)
743 { 747 {
744 textures.Add(texAsset); 748 textures.Add(texAsset);
@@ -748,22 +752,22 @@ namespace OpenSim.Region.Environment.Scenes
748 752
749 foreach (AssetBase asset in textures) 753 foreach (AssetBase asset in textures)
750 { 754 {
751 System.Drawing.Image image = OpenJPEGNet.OpenJPEG.DecodeToImage(asset.Data); 755 Image image = OpenJPEG.DecodeToImage(asset.Data);
752 bitImages.Add(image); 756 bitImages.Add(image);
753 } 757 }
754 758
755 System.Drawing.Bitmap mapTexture = new System.Drawing.Bitmap(2560, 2560); 759 Bitmap mapTexture = new Bitmap(2560, 2560);
756 System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(mapTexture); 760 Graphics g = Graphics.FromImage(mapTexture);
757 System.Drawing.SolidBrush sea = new System.Drawing.SolidBrush(System.Drawing.Color.DarkBlue); 761 SolidBrush sea = new SolidBrush(Color.DarkBlue);
758 g.FillRectangle(sea, 0, 0, 2560, 2560); 762 g.FillRectangle(sea, 0, 0, 2560, 2560);
759 763
760 for (int i = 0; i < mapBlocks.Count; i++) 764 for (int i = 0; i < mapBlocks.Count; i++)
761 { 765 {
762 ushort x = (ushort)((mapBlocks[i].X - this.RegionInfo.RegionLocX) + 10); 766 ushort x = (ushort) ((mapBlocks[i].X - RegionInfo.RegionLocX) + 10);
763 ushort y = (ushort)((mapBlocks[i].Y - this.RegionInfo.RegionLocY) + 10); 767 ushort y = (ushort) ((mapBlocks[i].Y - RegionInfo.RegionLocY) + 10);
764 g.DrawImage(bitImages[i], (x * 128), (y * 128), 128, 128); 768 g.DrawImage(bitImages[i], (x*128), (y*128), 128, 128);
765 } 769 }
766 mapTexture.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg); 770 mapTexture.Save(fileName, ImageFormat.Jpeg);
767 } 771 }
768 772
769 /// <summary> 773 /// <summary>
@@ -861,7 +865,7 @@ namespace OpenSim.Region.Environment.Scenes
861 public void loadAllLandObjectsFromStorage() 865 public void loadAllLandObjectsFromStorage()
862 { 866 {
863 MainLog.Instance.Verbose("SCENE", "Loading land objects from storage"); 867 MainLog.Instance.Verbose("SCENE", "Loading land objects from storage");
864 List<Framework.LandData> landData = m_storageManager.DataStore.LoadLandObjects(RegionInfo.RegionID); 868 List<LandData> landData = m_storageManager.DataStore.LoadLandObjects(RegionInfo.RegionID);
865 if (landData.Count == 0) 869 if (landData.Count == 0)
866 { 870 {
867 m_LandManager.NoLandDataFromStorage(); 871 m_LandManager.NoLandDataFromStorage();
@@ -871,7 +875,7 @@ namespace OpenSim.Region.Environment.Scenes
871 m_LandManager.IncomingLandObjectsFromStorage(landData); 875 m_LandManager.IncomingLandObjectsFromStorage(landData);
872 } 876 }
873 } 877 }
874 878
875 #endregion 879 #endregion
876 880
877 #region Primitives Methods 881 #region Primitives Methods
@@ -889,8 +893,8 @@ namespace OpenSim.Region.Environment.Scenes
889 SceneObjectPart rootPart = prim.GetChildPart(prim.UUID); 893 SceneObjectPart rootPart = prim.GetChildPart(prim.UUID);
890 rootPart.ApplySanePermissions(); 894 rootPart.ApplySanePermissions();
891 895
892 bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim); 896 bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim);
893 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) 897 if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
894 rootPart.PhysActor = PhysicsScene.AddPrimShape( 898 rootPart.PhysActor = PhysicsScene.AddPrimShape(
895 rootPart.Name, 899 rootPart.Name,
896 rootPart.Shape, 900 rootPart.Shape,
@@ -931,9 +935,8 @@ namespace OpenSim.Region.Environment.Scenes
931 935
932 if (PermissionsMngr.CanRezObject(ownerID, pos)) 936 if (PermissionsMngr.CanRezObject(ownerID, pos))
933 { 937 {
934
935 EntityIntersection rayTracing = null; 938 EntityIntersection rayTracing = null;
936 ScenePresence presence = ((ScenePresence)GetScenePresence(ownerID)); 939 ScenePresence presence = ((ScenePresence) GetScenePresence(ownerID));
937 if (presence != null) 940 if (presence != null)
938 { 941 {
939 Vector3 CameraPosition = presence.CameraPosition; 942 Vector3 CameraPosition = presence.CameraPosition;
@@ -941,14 +944,13 @@ namespace OpenSim.Region.Environment.Scenes
941 944
942 float raydistance = m_innerScene.Vector3Distance(CameraPosition, rayEnd); 945 float raydistance = m_innerScene.Vector3Distance(CameraPosition, rayEnd);
943 946
944 Vector3 rayDirection = new Vector3(rayEnd.x / raydistance, rayEnd.y / raydistance, rayEnd.z / raydistance); 947 Vector3 rayDirection = new Vector3(rayEnd.x/raydistance, rayEnd.y/raydistance, rayEnd.z/raydistance);
945 948
946 Ray rezRay = new Ray(CameraPosition, rayDirection); 949 Ray rezRay = new Ray(CameraPosition, rayDirection);
947 950
948 Vector3 RezDirectionFromCamera = rezRay.Direction; 951 Vector3 RezDirectionFromCamera = rezRay.Direction;
949 952
950 rayTracing = m_innerScene.GetClosestIntersectingPrim(rezRay); 953 rayTracing = m_innerScene.GetClosestIntersectingPrim(rezRay);
951
952 } 954 }
953 955
954 if ((rayTracing != null) && (rayTracing.HitTF)) 956 if ((rayTracing != null) && (rayTracing.HitTF))
@@ -957,7 +959,8 @@ namespace OpenSim.Region.Environment.Scenes
957 // We will rez the object somewhere close to the prim. Better math needed. This is a Stub 959 // We will rez the object somewhere close to the prim. Better math needed. This is a Stub
958 //Vector3 Newpos = new Vector3(rayTracing.obj.AbsolutePosition.X,rayTracing.obj.AbsolutePosition.Y,rayTracing.obj.AbsolutePosition.Z); 960 //Vector3 Newpos = new Vector3(rayTracing.obj.AbsolutePosition.X,rayTracing.obj.AbsolutePosition.Y,rayTracing.obj.AbsolutePosition.Z);
959 Vector3 Newpos = rayTracing.ipoint; 961 Vector3 Newpos = rayTracing.ipoint;
960 Vector3 NewScale = new Vector3(rayTracing.obj.Scale.X, rayTracing.obj.Scale.Y, rayTracing.obj.Scale.Z); 962 Vector3 NewScale =
963 new Vector3(rayTracing.obj.Scale.X, rayTracing.obj.Scale.Y, rayTracing.obj.Scale.Z);
961 964
962 Quaternion ParentRot = rayTracing.obj.ParentGroup.Rotation; 965 Quaternion ParentRot = rayTracing.obj.ParentGroup.Rotation;
963 //Quaternion ParentRot = new Quaternion(primParentRot.W,primParentRot.X,primParentRot.Y,primParentRot.Z); 966 //Quaternion ParentRot = new Quaternion(primParentRot.W,primParentRot.X,primParentRot.Y,primParentRot.Z);
@@ -965,7 +968,7 @@ namespace OpenSim.Region.Environment.Scenes
965 LLQuaternion primLocalRot = rayTracing.obj.RotationOffset; 968 LLQuaternion primLocalRot = rayTracing.obj.RotationOffset;
966 Quaternion LocalRot = new Quaternion(primLocalRot.W, primLocalRot.X, primLocalRot.Y, primLocalRot.Z); 969 Quaternion LocalRot = new Quaternion(primLocalRot.W, primLocalRot.X, primLocalRot.Y, primLocalRot.Z);
967 970
968 Quaternion NewRot = LocalRot * ParentRot; 971 Quaternion NewRot = LocalRot*ParentRot;
969 972
970 Vector3 RezPoint = Newpos; 973 Vector3 RezPoint = Newpos;
971 974
@@ -990,8 +993,8 @@ namespace OpenSim.Region.Environment.Scenes
990 //rootPart.ObjectFlags += (uint)LLObject.ObjectFlags.Phantom; 993 //rootPart.ObjectFlags += (uint)LLObject.ObjectFlags.Phantom;
991 } 994 }
992 // if not phantom, add to physics 995 // if not phantom, add to physics
993 bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim); 996 bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim);
994 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) 997 if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
995 { 998 {
996 rootPart.PhysActor = 999 rootPart.PhysActor =
997 PhysicsScene.AddPrimShape( 1000 PhysicsScene.AddPrimShape(
@@ -1007,14 +1010,14 @@ namespace OpenSim.Region.Environment.Scenes
1007 } 1010 }
1008 1011
1009 public void AddTree(LLVector3 scale, LLQuaternion rotation, LLVector3 position, 1012 public void AddTree(LLVector3 scale, LLQuaternion rotation, LLVector3 position,
1010 Tree treeType, bool newTree) 1013 Tree treeType, bool newTree)
1011 { 1014 {
1012 PrimitiveBaseShape treeShape = new PrimitiveBaseShape(); 1015 PrimitiveBaseShape treeShape = new PrimitiveBaseShape();
1013 treeShape.PathCurve = 16; 1016 treeShape.PathCurve = 16;
1014 treeShape.PathEnd = 49900; 1017 treeShape.PathEnd = 49900;
1015 treeShape.PCode = newTree ? (byte)PCode.NewTree : (byte)PCode.Tree; 1018 treeShape.PCode = newTree ? (byte) PCode.NewTree : (byte) PCode.Tree;
1016 treeShape.Scale = scale; 1019 treeShape.Scale = scale;
1017 treeShape.State = (byte)treeType; 1020 treeShape.State = (byte) treeType;
1018 AddNewPrim(LLUUID.Random(), position, rotation, treeShape); 1021 AddNewPrim(LLUUID.Random(), position, rotation, treeShape);
1019 } 1022 }
1020 1023
@@ -1135,7 +1138,8 @@ namespace OpenSim.Region.Environment.Scenes
1135 client.OnParcelObjectOwnerRequest += 1138 client.OnParcelObjectOwnerRequest +=
1136 new ParcelObjectOwnerRequest(m_LandManager.handleParcelObjectOwnersRequest); 1139 new ParcelObjectOwnerRequest(m_LandManager.handleParcelObjectOwnersRequest);
1137 client.OnParcelAccessListRequest += new ParcelAccessListRequest(m_LandManager.handleParcelAccessRequest); 1140 client.OnParcelAccessListRequest += new ParcelAccessListRequest(m_LandManager.handleParcelAccessRequest);
1138 client.OnParcelAccessListUpdateRequest += new ParcelAccessListUpdateRequest(m_LandManager.handleParcelAccessUpdateRequest); 1141 client.OnParcelAccessListUpdateRequest +=
1142 new ParcelAccessListUpdateRequest(m_LandManager.handleParcelAccessUpdateRequest);
1139 1143
1140 client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(m_estateManager.handleEstateOwnerMessage); 1144 client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(m_estateManager.handleEstateOwnerMessage);
1141 client.OnRegionInfoRequest += m_estateManager.HandleRegionInfoRequest; 1145 client.OnRegionInfoRequest += m_estateManager.HandleRegionInfoRequest;
@@ -1157,8 +1161,8 @@ namespace OpenSim.Region.Environment.Scenes
1157 client.OnAssetUploadRequest += CommsManager.TransactionsManager.HandleUDPUploadRequest; 1161 client.OnAssetUploadRequest += CommsManager.TransactionsManager.HandleUDPUploadRequest;
1158 client.OnXferReceive += CommsManager.TransactionsManager.HandleXfer; 1162 client.OnXferReceive += CommsManager.TransactionsManager.HandleXfer;
1159 client.OnRezScript += RezScript; 1163 client.OnRezScript += RezScript;
1160 1164
1161 client.OnRequestTaskInventory += RequestTaskInventory; 1165 client.OnRequestTaskInventory += RequestTaskInventory;
1162 client.OnRemoveTaskItem += RemoveTaskInventory; 1166 client.OnRemoveTaskItem += RemoveTaskInventory;
1163 client.OnUpdateTaskInventory += UpdateTaskInventory; 1167 client.OnUpdateTaskInventory += UpdateTaskInventory;
1164 1168
@@ -1216,23 +1220,23 @@ namespace OpenSim.Region.Environment.Scenes
1216 m_innerScene.removeUserCount(true); 1220 m_innerScene.removeUserCount(true);
1217 } 1221 }
1218 } 1222 }
1219 catch (System.NullReferenceException) 1223 catch (NullReferenceException)
1220 { 1224 {
1221 // We don't know which count to remove it from 1225 // We don't know which count to remove it from
1222 // Avatar is already disposed :/ 1226 // Avatar is already disposed :/
1223 } 1227 }
1224 m_eventManager.TriggerOnRemovePresence(agentID); 1228 m_eventManager.TriggerOnRemovePresence(agentID);
1225 Broadcast(delegate(IClientAPI client) 1229 Broadcast(delegate(IClientAPI client)
1226 {
1227 try
1228 {
1229 client.SendKillObject(avatar.RegionHandle, avatar.LocalId);
1230 }
1231 catch (System.NullReferenceException)
1232 { 1230 {
1233 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. 1231 try
1234 } 1232 {
1235 }); 1233 client.SendKillObject(avatar.RegionHandle, avatar.LocalId);
1234 }
1235 catch (NullReferenceException)
1236 {
1237 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway.
1238 }
1239 });
1236 1240
1237 ForEachScenePresence( 1241 ForEachScenePresence(
1238 delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); 1242 delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
@@ -1251,7 +1255,7 @@ namespace OpenSim.Region.Environment.Scenes
1251 { 1255 {
1252 avatar.Close(); 1256 avatar.Close();
1253 } 1257 }
1254 catch (System.NullReferenceException) 1258 catch (NullReferenceException)
1255 { 1259 {
1256 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. 1260 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway.
1257 } 1261 }
@@ -1263,19 +1267,22 @@ namespace OpenSim.Region.Environment.Scenes
1263 // Remove client agent from profile, so new logins will work 1267 // Remove client agent from profile, so new logins will work
1264 CommsManager.UserService.clearUserAgent(agentID); 1268 CommsManager.UserService.clearUserAgent(agentID);
1265 } 1269 }
1266 public override void CloseAllAgents(uint circuitcode) 1270
1271 public override void CloseAllAgents(uint circuitcode)
1267 { 1272 {
1268 // Called by ClientView to kill all circuit codes 1273 // Called by ClientView to kill all circuit codes
1269 ClientManager.CloseAllAgents(circuitcode); 1274 ClientManager.CloseAllAgents(circuitcode);
1270
1271 } 1275 }
1276
1272 public void NotifyMyCoarseLocationChange() 1277 public void NotifyMyCoarseLocationChange()
1273 { 1278 {
1274 ForEachScenePresence(delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); 1279 ForEachScenePresence(delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
1275 } 1280 }
1281
1276 #endregion 1282 #endregion
1277 1283
1278 #region Entities 1284 #region Entities
1285
1279 /// <summary> 1286 /// <summary>
1280 /// 1287 ///
1281 /// </summary> 1288 /// </summary>
@@ -1312,7 +1319,7 @@ namespace OpenSim.Region.Environment.Scenes
1312 m_sceneGridService.OnCloseAgentConnection += CloseConnection; 1319 m_sceneGridService.OnCloseAgentConnection += CloseConnection;
1313 m_sceneGridService.OnRegionUp += OtherRegionUp; 1320 m_sceneGridService.OnRegionUp += OtherRegionUp;
1314 m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; 1321 m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate;
1315 1322
1316 1323
1317 m_sceneGridService.KillObject = SendKillObject; 1324 m_sceneGridService.KillObject = SendKillObject;
1318 } 1325 }
@@ -1321,17 +1328,16 @@ namespace OpenSim.Region.Environment.Scenes
1321 /// 1328 ///
1322 /// </summary> 1329 /// </summary>
1323 public void UnRegisterReginWithComms() 1330 public void UnRegisterReginWithComms()
1324 { 1331 {
1325
1326 m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; 1332 m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate;
1327 m_sceneGridService.OnRegionUp -= OtherRegionUp; 1333 m_sceneGridService.OnRegionUp -= OtherRegionUp;
1328 m_sceneGridService.OnExpectUser -= NewUserConnection; 1334 m_sceneGridService.OnExpectUser -= NewUserConnection;
1329 m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing; 1335 m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing;
1330 m_sceneGridService.OnCloseAgentConnection -= CloseConnection; 1336 m_sceneGridService.OnCloseAgentConnection -= CloseConnection;
1331 1337
1332 m_sceneGridService.Close(); 1338 m_sceneGridService.Close();
1333 } 1339 }
1334 1340
1335 1341
1336 /// <summary> 1342 /// <summary>
1337 /// 1343 ///
@@ -1344,18 +1350,19 @@ namespace OpenSim.Region.Environment.Scenes
1344 { 1350 {
1345 if (agent.CapsPath != "") 1351 if (agent.CapsPath != "")
1346 { 1352 {
1347 OpenSim.Region.Capabilities.Caps cap = 1353 Caps cap =
1348 new OpenSim.Region.Capabilities.Caps(AssetCache, httpListener, m_regInfo.ExternalHostName, httpListener.Port, 1354 new Caps(AssetCache, httpListener, m_regInfo.ExternalHostName, httpListener.Port,
1349 agent.CapsPath, agent.AgentID, m_dumpAssetsToFile); 1355 agent.CapsPath, agent.AgentID, m_dumpAssetsToFile);
1350 1356
1351 Util.SetCapsURL(agent.AgentID, "http://" + m_regInfo.ExternalHostName + ":" + httpListener.Port.ToString() + 1357 Util.SetCapsURL(agent.AgentID,
1352 "/CAPS/" + agent.CapsPath + "0000/"); 1358 "http://" + m_regInfo.ExternalHostName + ":" + httpListener.Port.ToString() +
1359 "/CAPS/" + agent.CapsPath + "0000/");
1353 cap.RegisterHandlers(); 1360 cap.RegisterHandlers();
1354 1361
1355 cap.AddNewInventoryItem = AddInventoryItem; 1362 cap.AddNewInventoryItem = AddInventoryItem;
1356 cap.ItemUpdatedCall = CapsUpdateInventoryItemAsset; 1363 cap.ItemUpdatedCall = CapsUpdateInventoryItemAsset;
1357 cap.TaskScriptUpdatedCall = CapsUpdateTaskInventoryScriptAsset; 1364 cap.TaskScriptUpdatedCall = CapsUpdateTaskInventoryScriptAsset;
1358 1365
1359 if (m_capsHandlers.ContainsKey(agent.AgentID)) 1366 if (m_capsHandlers.ContainsKey(agent.AgentID))
1360 { 1367 {
1361 //MainLog.Instance.Warn("client", "Adding duplicate CAPS entry for user " + 1368 //MainLog.Instance.Warn("client", "Adding duplicate CAPS entry for user " +
@@ -1364,7 +1371,7 @@ namespace OpenSim.Region.Environment.Scenes
1364 { 1371 {
1365 m_capsHandlers[agent.AgentID] = cap; 1372 m_capsHandlers[agent.AgentID] = cap;
1366 } 1373 }
1367 catch (System.Collections.Generic.KeyNotFoundException) 1374 catch (KeyNotFoundException)
1368 { 1375 {
1369 // Fix for a potential race condition. 1376 // Fix for a potential race condition.
1370 m_capsHandlers.Add(agent.AgentID, cap); 1377 m_capsHandlers.Add(agent.AgentID, cap);
@@ -1396,10 +1403,10 @@ namespace OpenSim.Region.Environment.Scenes
1396 { 1403 {
1397 m_scenePresences[agentID].MakeRootAgent(position, isFlying); 1404 m_scenePresences[agentID].MakeRootAgent(position, isFlying);
1398 } 1405 }
1399 catch (System.Exception e) 1406 catch (Exception e)
1400 { 1407 {
1401 MainLog.Instance.Verbose("SCENE", "Unable to do Agent Crossing."); 1408 MainLog.Instance.Verbose("SCENE", "Unable to do Agent Crossing.");
1402 MainLog.Instance.Debug("SCENE",e.ToString()); 1409 MainLog.Instance.Debug("SCENE", e.ToString());
1403 } 1410 }
1404 //m_innerScene.SwapRootChildAgent(false); 1411 //m_innerScene.SwapRootChildAgent(false);
1405 } 1412 }
@@ -1419,11 +1426,11 @@ namespace OpenSim.Region.Environment.Scenes
1419 childAgentUpdate.ChildAgentDataUpdate(cAgentData); 1426 childAgentUpdate.ChildAgentDataUpdate(cAgentData);
1420 // Not Implemented: 1427 // Not Implemented:
1421 //TODO: Do we need to pass the message on to one of our neighbors? 1428 //TODO: Do we need to pass the message on to one of our neighbors?
1422
1423 } 1429 }
1424 } 1430 }
1425 return true; 1431 return true;
1426 } 1432 }
1433
1427 /// <summary> 1434 /// <summary>
1428 /// Tell a single agent to disconnect from the region. 1435 /// Tell a single agent to disconnect from the region.
1429 /// </summary> 1436 /// </summary>
@@ -1445,7 +1452,7 @@ namespace OpenSim.Region.Environment.Scenes
1445 m_innerScene.removeUserCount(true); 1452 m_innerScene.removeUserCount(true);
1446 } 1453 }
1447 // Tell a single agent to disconnect from the region. 1454 // Tell a single agent to disconnect from the region.
1448 libsecondlife.Packets.DisableSimulatorPacket disable = new libsecondlife.Packets.DisableSimulatorPacket(); 1455 DisableSimulatorPacket disable = new DisableSimulatorPacket();
1449 presence.ControllingClient.OutPacket(disable, ThrottleOutPacketType.Task); 1456 presence.ControllingClient.OutPacket(disable, ThrottleOutPacketType.Task);
1450 } 1457 }
1451 } 1458 }
@@ -1511,7 +1518,8 @@ namespace OpenSim.Region.Environment.Scenes
1511 { 1518 {
1512 if (m_scenePresences.ContainsKey(remoteClient.AgentId)) 1519 if (m_scenePresences.ContainsKey(remoteClient.AgentId))
1513 { 1520 {
1514 m_sceneGridService.RequestTeleportToLocation(m_scenePresences[remoteClient.AgentId], regionHandle, position, lookAt, flags); 1521 m_sceneGridService.RequestTeleportToLocation(m_scenePresences[remoteClient.AgentId], regionHandle,
1522 position, lookAt, flags);
1515 } 1523 }
1516 } 1524 }
1517 1525
@@ -1551,9 +1559,9 @@ namespace OpenSim.Region.Environment.Scenes
1551 /// <param name="mod"></param> 1559 /// <param name="mod"></param>
1552 public void RegisterModuleInterface<M>(M mod) 1560 public void RegisterModuleInterface<M>(M mod)
1553 { 1561 {
1554 if (!ModuleInterfaces.ContainsKey(typeof(M))) 1562 if (!ModuleInterfaces.ContainsKey(typeof (M)))
1555 { 1563 {
1556 ModuleInterfaces.Add(typeof(M), mod); 1564 ModuleInterfaces.Add(typeof (M), mod);
1557 } 1565 }
1558 } 1566 }
1559 1567
@@ -1563,9 +1571,9 @@ namespace OpenSim.Region.Environment.Scenes
1563 /// <returns></returns> 1571 /// <returns></returns>
1564 public T RequestModuleInterface<T>() 1572 public T RequestModuleInterface<T>()
1565 { 1573 {
1566 if (ModuleInterfaces.ContainsKey(typeof(T))) 1574 if (ModuleInterfaces.ContainsKey(typeof (T)))
1567 { 1575 {
1568 return (T)ModuleInterfaces[typeof(T)]; 1576 return (T) ModuleInterfaces[typeof (T)];
1569 } 1577 }
1570 else 1578 else
1571 { 1579 {
@@ -1642,7 +1650,7 @@ namespace OpenSim.Region.Environment.Scenes
1642 { 1650 {
1643 if (obj is SceneObjectGroup) 1651 if (obj is SceneObjectGroup)
1644 { 1652 {
1645 m_eventManager.TriggerParcelPrimCountAdd((SceneObjectGroup)obj); 1653 m_eventManager.TriggerParcelPrimCountAdd((SceneObjectGroup) obj);
1646 } 1654 }
1647 } 1655 }
1648 } 1656 }
@@ -1650,6 +1658,7 @@ namespace OpenSim.Region.Environment.Scenes
1650 #endregion 1658 #endregion
1651 1659
1652 #region Console Commands 1660 #region Console Commands
1661
1653 #region Alert Methods 1662 #region Alert Methods
1654 1663
1655 private void SendPermissionAlert(LLUUID user, string reason) 1664 private void SendPermissionAlert(LLUUID user, string reason)
@@ -1692,7 +1701,8 @@ namespace OpenSim.Region.Environment.Scenes
1692 /// <param name="sessionID"></param> 1701 /// <param name="sessionID"></param>
1693 /// <param name="token"></param> 1702 /// <param name="token"></param>
1694 /// <param name="controllingClient"></param> 1703 /// <param name="controllingClient"></param>
1695 public void handleRequestGodlikePowers(LLUUID agentID, LLUUID sessionID, LLUUID token, IClientAPI controllingClient) 1704 public void handleRequestGodlikePowers(LLUUID agentID, LLUUID sessionID, LLUUID token,
1705 IClientAPI controllingClient)
1696 { 1706 {
1697 // First check that this is the sim owner 1707 // First check that this is the sim owner
1698 if (agentID == RegionInfo.MasterAvatarAssignedUUID) 1708 if (agentID == RegionInfo.MasterAvatarAssignedUUID)
@@ -1736,37 +1746,38 @@ namespace OpenSim.Region.Environment.Scenes
1736 if (agentID == kickUserID) 1746 if (agentID == kickUserID)
1737 { 1747 {
1738 ClientManager.ForEachClient(delegate(IClientAPI controller) 1748 ClientManager.ForEachClient(delegate(IClientAPI controller)
1739 {
1740 ScenePresence p = GetScenePresence(controller.AgentId);
1741 bool childagent = !p.Equals(null) && p.IsChildAgent;
1742 if (controller.AgentId != godID && !childagent) // Do we really want to kick the initiator of this madness?
1743 { 1749 {
1744 controller.Kick(Helpers.FieldToUTF8String(reason)); 1750 ScenePresence p = GetScenePresence(controller.AgentId);
1745 1751 bool childagent = !p.Equals(null) && p.IsChildAgent;
1746 if (childagent) 1752 if (controller.AgentId != godID && !childagent)
1753 // Do we really want to kick the initiator of this madness?
1747 { 1754 {
1748 m_innerScene.removeUserCount(false); 1755 controller.Kick(Helpers.FieldToUTF8String(reason));
1756
1757 if (childagent)
1758 {
1759 m_innerScene.removeUserCount(false);
1760 }
1761 else
1762 {
1763 m_innerScene.removeUserCount(true);
1764 }
1749 } 1765 }
1750 else
1751 {
1752 m_innerScene.removeUserCount(true);
1753 }
1754
1755 } 1766 }
1756 }
1757 ); 1767 );
1758 // This is a bit crude. It seems the client will be null before it actually stops the thread 1768 // This is a bit crude. It seems the client will be null before it actually stops the thread
1759 // The thread will kill itself eventually :/ 1769 // The thread will kill itself eventually :/
1760 // Is there another way to make sure *all* clients get this 'inter region' message? 1770 // Is there another way to make sure *all* clients get this 'inter region' message?
1761 ClientManager.ForEachClient(delegate(IClientAPI controller) 1771 ClientManager.ForEachClient(delegate(IClientAPI controller)
1762 {
1763 ScenePresence p = GetScenePresence(controller.AgentId);
1764 bool childagent = !p.Equals(null) && p.IsChildAgent;
1765 if (controller.AgentId != godID && !childagent) // Do we really want to kick the initiator of this madness?
1766 { 1772 {
1767 controller.Close(true); 1773 ScenePresence p = GetScenePresence(controller.AgentId);
1774 bool childagent = !p.Equals(null) && p.IsChildAgent;
1775 if (controller.AgentId != godID && !childagent)
1776 // Do we really want to kick the initiator of this madness?
1777 {
1778 controller.Close(true);
1779 }
1768 } 1780 }
1769 }
1770 ); 1781 );
1771 } 1782 }
1772 else 1783 else
@@ -1799,7 +1810,8 @@ namespace OpenSim.Region.Environment.Scenes
1799 /// <param name="agentID"></param> 1810 /// <param name="agentID"></param>
1800 /// <param name="sessionID"></param> 1811 /// <param name="sessionID"></param>
1801 /// <param name="permChanges"></param> 1812 /// <param name="permChanges"></param>
1802 public void HandleObjectPermissionsUpdate(IClientAPI controller, LLUUID agentID, LLUUID sessionID, List<libsecondlife.Packets.ObjectPermissionsPacket.ObjectDataBlock> permChanges) 1813 public void HandleObjectPermissionsUpdate(IClientAPI controller, LLUUID agentID, LLUUID sessionID,
1814 List<ObjectPermissionsPacket.ObjectDataBlock> permChanges)
1803 { 1815 {
1804 // Check for spoofing.. since this is permissions we're talking about here! 1816 // Check for spoofing.. since this is permissions we're talking about here!
1805 if ((controller.SessionId == sessionID) && (controller.AgentId == agentID)) 1817 if ((controller.SessionId == sessionID) && (controller.AgentId == agentID))
@@ -1879,7 +1891,7 @@ namespace OpenSim.Region.Environment.Scenes
1879 { 1891 {
1880 if (ent is SceneObjectGroup) 1892 if (ent is SceneObjectGroup)
1881 { 1893 {
1882 ((SceneObjectGroup)ent).ScheduleGroupForFullUpdate(); 1894 ((SceneObjectGroup) ent).ScheduleGroupForFullUpdate();
1883 } 1895 }
1884 } 1896 }
1885 } 1897 }
@@ -1899,7 +1911,7 @@ namespace OpenSim.Region.Environment.Scenes
1899 { 1911 {
1900 if (ent is SceneObjectGroup) 1912 if (ent is SceneObjectGroup)
1901 { 1913 {
1902 SceneObjectPart part = ((SceneObjectGroup)ent).GetChildPart(((SceneObjectGroup)ent).UUID); 1914 SceneObjectPart part = ((SceneObjectGroup) ent).GetChildPart(((SceneObjectGroup) ent).UUID);
1903 if (part != null) 1915 if (part != null)
1904 { 1916 {
1905 if (part.Name == cmdparams[0]) 1917 if (part.Name == cmdparams[0])
@@ -1967,10 +1979,12 @@ namespace OpenSim.Region.Environment.Scenes
1967 { 1979 {
1968 m_eventManager.TriggerOnPluginConsole(args); 1980 m_eventManager.TriggerOnPluginConsole(args);
1969 } 1981 }
1982
1970 public double GetLandHeight(int x, int y) 1983 public double GetLandHeight(int x, int y)
1971 { 1984 {
1972 return Terrain.GetHeight(x, y); 1985 return Terrain.GetHeight(x, y);
1973 } 1986 }
1987
1974 public LLUUID GetLandOwner(float x, float y) 1988 public LLUUID GetLandOwner(float x, float y)
1975 { 1989 {
1976 Land land = LandManager.getLandObject(x, y); 1990 Land land = LandManager.getLandObject(x, y);
@@ -1983,7 +1997,7 @@ namespace OpenSim.Region.Environment.Scenes
1983 return land.landData.ownerID; 1997 return land.landData.ownerID;
1984 } 1998 }
1985 } 1999 }
1986 2000
1987 public LandData GetLandData(float x, float y) 2001 public LandData GetLandData(float x, float y)
1988 { 2002 {
1989 return LandManager.getLandObject(x, y).landData; 2003 return LandManager.getLandObject(x, y).landData;
@@ -2034,6 +2048,7 @@ namespace OpenSim.Region.Environment.Scenes
2034 { 2048 {
2035 return m_innerScene.ConvertLocalIDToFullID(localID); 2049 return m_innerScene.ConvertLocalIDToFullID(localID);
2036 } 2050 }
2051
2037 public void SwapRootAgentCount(bool rootChildChildRootTF) 2052 public void SwapRootAgentCount(bool rootChildChildRootTF)
2038 { 2053 {
2039 m_innerScene.SwapRootChildAgent(rootChildChildRootTF); 2054 m_innerScene.SwapRootChildAgent(rootChildChildRootTF);
@@ -2108,13 +2123,16 @@ namespace OpenSim.Region.Environment.Scenes
2108 // We don't want to try to send messages if there are no avatar. 2123 // We don't want to try to send messages if there are no avatar.
2109 if (!(m_scenePresences.Equals(null))) 2124 if (!(m_scenePresences.Equals(null)))
2110 { 2125 {
2111 try { 2126 try
2112 List<ScenePresence> presenceList = GetScenePresences(); 2127 {
2128 List<ScenePresence> presenceList = GetScenePresences();
2113 foreach (ScenePresence presence in presenceList) 2129 foreach (ScenePresence presence in presenceList)
2114 { 2130 {
2115 action(presence); 2131 action(presence);
2116 } 2132 }
2117 } catch (Exception e) { 2133 }
2134 catch (Exception e)
2135 {
2118 MainLog.Instance.Verbose("BUG", e.ToString()); 2136 MainLog.Instance.Verbose("BUG", e.ToString());
2119 } 2137 }
2120 } 2138 }
@@ -2181,4 +2199,4 @@ namespace OpenSim.Region.Environment.Scenes
2181 2199
2182 #endregion 2200 #endregion
2183 } 2201 }
2184} 2202} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/SceneBase.cs b/OpenSim/Region/Environment/Scenes/SceneBase.cs
index 35d88eb..fe8f8da 100644
--- a/OpenSim/Region/Environment/Scenes/SceneBase.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneBase.cs
@@ -26,8 +26,6 @@
26* 26*
27*/ 27*/
28using System; 28using System;
29using System.Collections.Generic;
30using System.Timers;
31using libsecondlife; 29using libsecondlife;
32using OpenSim.Framework; 30using OpenSim.Framework;
33using OpenSim.Framework.Communications.Cache; 31using OpenSim.Framework.Communications.Cache;
@@ -43,8 +41,9 @@ namespace OpenSim.Region.Environment.Scenes
43 public event restart OnRestart; 41 public event restart OnRestart;
44 42
45 #endregion 43 #endregion
46 44
47 #region Fields 45 #region Fields
46
48 private readonly ClientManager m_clientManager = new ClientManager(); 47 private readonly ClientManager m_clientManager = new ClientManager();
49 48
50 public ClientManager ClientManager 49 public ClientManager ClientManager
@@ -92,8 +91,6 @@ namespace OpenSim.Region.Environment.Scenes
92 /// </summary> 91 /// </summary>
93 public abstract void Update(); 92 public abstract void Update();
94 93
95
96
97 #endregion 94 #endregion
98 95
99 #region Terrain Methods 96 #region Terrain Methods
@@ -163,8 +160,8 @@ namespace OpenSim.Region.Environment.Scenes
163 160
164 public abstract bool OtherRegionUp(RegionInfo thisRegion); 161 public abstract bool OtherRegionUp(RegionInfo thisRegion);
165 162
166
167 #endregion 163 #endregion
164
168 #region Shutdown 165 #region Shutdown
169 166
170 /// <summary> 167 /// <summary>
@@ -184,4 +181,4 @@ namespace OpenSim.Region.Environment.Scenes
184 181
185 #endregion 182 #endregion
186 } 183 }
187} 184} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
index b184af2..3942397 100644
--- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
@@ -1,4 +1,4 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
@@ -29,11 +29,10 @@
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Net; 31using System.Net;
32using System.Text;
33using libsecondlife; 32using libsecondlife;
34using OpenSim.Framework; 33using OpenSim.Framework;
35using OpenSim.Framework.Console;
36using OpenSim.Framework.Communications; 34using OpenSim.Framework.Communications;
35using OpenSim.Framework.Console;
37 36
38namespace OpenSim.Region.Environment.Scenes 37namespace OpenSim.Region.Environment.Scenes
39{ 38{
@@ -52,7 +51,7 @@ namespace OpenSim.Region.Environment.Scenes
52 public event PrimCrossing OnPrimCrossingIntoRegion; 51 public event PrimCrossing OnPrimCrossingIntoRegion;
53 public event RegionUp OnRegionUp; 52 public event RegionUp OnRegionUp;
54 public event ChildAgentUpdate OnChildAgentUpdate; 53 public event ChildAgentUpdate OnChildAgentUpdate;
55 54
56 55
57 public KillObjectDelegate KillObject; 56 public KillObjectDelegate KillObject;
58 public string _debugRegionName = ""; 57 public string _debugRegionName = "";
@@ -60,10 +59,7 @@ namespace OpenSim.Region.Environment.Scenes
60 public string debugRegionName 59 public string debugRegionName
61 { 60 {
62 get { return _debugRegionName; } 61 get { return _debugRegionName; }
63 set 62 set { _debugRegionName = value; }
64 {
65 _debugRegionName = value;
66 }
67 } 63 }
68 64
69 public SceneCommunicationService(CommunicationsManager commsMan) 65 public SceneCommunicationService(CommunicationsManager commsMan)
@@ -90,7 +86,6 @@ namespace OpenSim.Region.Environment.Scenes
90 regionCommsHost.OnCloseAgentConnection += CloseConnection; 86 regionCommsHost.OnCloseAgentConnection += CloseConnection;
91 regionCommsHost.OnRegionUp += newRegionUp; 87 regionCommsHost.OnRegionUp += newRegionUp;
92 regionCommsHost.OnChildAgentUpdate += ChildAgentUpdate; 88 regionCommsHost.OnChildAgentUpdate += ChildAgentUpdate;
93
94 } 89 }
95 else 90 else
96 { 91 {
@@ -102,7 +97,6 @@ namespace OpenSim.Region.Environment.Scenes
102 { 97 {
103 if (regionCommsHost != null) 98 if (regionCommsHost != null)
104 { 99 {
105
106 regionCommsHost.OnChildAgentUpdate -= ChildAgentUpdate; 100 regionCommsHost.OnChildAgentUpdate -= ChildAgentUpdate;
107 regionCommsHost.OnRegionUp -= newRegionUp; 101 regionCommsHost.OnRegionUp -= newRegionUp;
108 regionCommsHost.OnExpectUser -= NewUserConnection; 102 regionCommsHost.OnExpectUser -= NewUserConnection;
@@ -115,6 +109,7 @@ namespace OpenSim.Region.Environment.Scenes
115 } 109 }
116 110
117 #region CommsManager Event handlers 111 #region CommsManager Event handlers
112
118 /// <summary> 113 /// <summary>
119 /// 114 ///
120 /// </summary> 115 /// </summary>
@@ -139,6 +134,7 @@ namespace OpenSim.Region.Environment.Scenes
139 } 134 }
140 return true; 135 return true;
141 } 136 }
137
142 protected bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData) 138 protected bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData)
143 { 139 {
144 if (OnChildAgentUpdate != null) 140 if (OnChildAgentUpdate != null)
@@ -155,6 +151,7 @@ namespace OpenSim.Region.Environment.Scenes
155 OnAvatarCrossingIntoRegion(regionHandle, agentID, position, isFlying); 151 OnAvatarCrossingIntoRegion(regionHandle, agentID, position, isFlying);
156 } 152 }
157 } 153 }
154
158 protected void PrimCrossing(ulong regionHandle, LLUUID primID, LLVector3 position, bool isPhysical) 155 protected void PrimCrossing(ulong regionHandle, LLUUID primID, LLVector3 position, bool isPhysical)
159 { 156 {
160 if (OnPrimCrossingIntoRegion != null) 157 if (OnPrimCrossingIntoRegion != null)
@@ -174,12 +171,13 @@ namespace OpenSim.Region.Environment.Scenes
174 #endregion 171 #endregion
175 172
176 #region Inform Client of Neighbours 173 #region Inform Client of Neighbours
174
177 private delegate void InformClientOfNeighbourDelegate( 175 private delegate void InformClientOfNeighbourDelegate(
178 ScenePresence avatar, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint); 176 ScenePresence avatar, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint);
179 177
180 private void InformClientOfNeighbourCompleted(IAsyncResult iar) 178 private void InformClientOfNeighbourCompleted(IAsyncResult iar)
181 { 179 {
182 InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate)iar.AsyncState; 180 InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate) iar.AsyncState;
183 icon.EndInvoke(iar); 181 icon.EndInvoke(iar);
184 } 182 }
185 183
@@ -215,8 +213,6 @@ namespace OpenSim.Region.Environment.Scenes
215 213
216 //blah.Address = region.RemotingAddress; 214 //blah.Address = region.RemotingAddress;
217 //blah.Port = region.RemotingPort; 215 //blah.Port = region.RemotingPort;
218
219
220 } 216 }
221 217
222 /// <summary> 218 /// <summary>
@@ -227,7 +223,7 @@ namespace OpenSim.Region.Environment.Scenes
227 { 223 {
228 List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>(); 224 List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>();
229 225
230 //m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY); 226 //m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
231 for (int i = 0; i < lstneighbours.Count; i++) 227 for (int i = 0; i < lstneighbours.Count; i++)
232 { 228 {
233 // We don't want to keep sending to regions that consistently fail on comms. 229 // We don't want to keep sending to regions that consistently fail on comms.
@@ -245,7 +241,6 @@ namespace OpenSim.Region.Environment.Scenes
245 { 241 {
246 for (int i = 0; i < neighbours.Count; i++) 242 for (int i = 0; i < neighbours.Count; i++)
247 { 243 {
248
249 AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo(); 244 AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo();
250 agent.BaseFolder = LLUUID.Zero; 245 agent.BaseFolder = LLUUID.Zero;
251 agent.InventoryFolder = LLUUID.Zero; 246 agent.InventoryFolder = LLUUID.Zero;
@@ -259,6 +254,7 @@ namespace OpenSim.Region.Environment.Scenes
259 } 254 }
260 } 255 }
261 } 256 }
257
262 /// <summary> 258 /// <summary>
263 /// This informs a single neighboring region about agent "avatar". 259 /// This informs a single neighboring region about agent "avatar".
264 /// Calls an asynchronous method to do so.. so it doesn't lag the sim. 260 /// Calls an asynchronous method to do so.. so it doesn't lag the sim.
@@ -278,11 +274,12 @@ namespace OpenSim.Region.Environment.Scenes
278 } 274 }
279 275
280 #endregion 276 #endregion
277
281 public delegate void InformNeighbourThatRegionUpDelegate(RegionInfo region, ulong regionhandle); 278 public delegate void InformNeighbourThatRegionUpDelegate(RegionInfo region, ulong regionhandle);
282 279
283 private void InformNeighborsThatRegionisUpCompleted(IAsyncResult iar) 280 private void InformNeighborsThatRegionisUpCompleted(IAsyncResult iar)
284 { 281 {
285 InformNeighbourThatRegionUpDelegate icon = (InformNeighbourThatRegionUpDelegate)iar.AsyncState; 282 InformNeighbourThatRegionUpDelegate icon = (InformNeighbourThatRegionUpDelegate) iar.AsyncState;
286 icon.EndInvoke(iar); 283 icon.EndInvoke(iar);
287 } 284 }
288 285
@@ -290,7 +287,8 @@ namespace OpenSim.Region.Environment.Scenes
290 private void InformNeighboursThatRegionIsUpAsync(RegionInfo region, ulong regionhandle) 287 private void InformNeighboursThatRegionIsUpAsync(RegionInfo region, ulong regionhandle)
291 { 288 {
292 MainLog.Instance.Notice("INTERGRID", "Starting to inform neighbors that I'm here"); 289 MainLog.Instance.Notice("INTERGRID", "Starting to inform neighbors that I'm here");
293 bool regionAccepted = m_commsProvider.InterRegion.RegionUp((new SearializableRegionInfo(region)), regionhandle); 290 bool regionAccepted =
291 m_commsProvider.InterRegion.RegionUp((new SearializableRegionInfo(region)), regionhandle);
294 292
295 if (regionAccepted) 293 if (regionAccepted)
296 { 294 {
@@ -301,6 +299,7 @@ namespace OpenSim.Region.Environment.Scenes
301 MainLog.Instance.Notice("INTERGRID", "Failed to inform neighbors that I'm here"); 299 MainLog.Instance.Notice("INTERGRID", "Failed to inform neighbors that I'm here");
302 } 300 }
303 } 301 }
302
304 /// <summary> 303 /// <summary>
305 /// Called by scene when region is initialized (not always when it's listening for agents) 304 /// Called by scene when region is initialized (not always when it's listening for agents)
306 /// This is an inter-region message that informs the surrounding neighbors that the sim is up. 305 /// This is an inter-region message that informs the surrounding neighbors that the sim is up.
@@ -317,7 +316,6 @@ namespace OpenSim.Region.Environment.Scenes
317 { 316 {
318 for (int i = 0; i < neighbours.Count; i++) 317 for (int i = 0; i < neighbours.Count; i++)
319 { 318 {
320
321 InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync; 319 InformNeighbourThatRegionUpDelegate d = InformNeighboursThatRegionIsUpAsync;
322 320
323 d.BeginInvoke(region, neighbours[i].RegionHandle, 321 d.BeginInvoke(region, neighbours[i].RegionHandle,
@@ -325,9 +323,10 @@ namespace OpenSim.Region.Environment.Scenes
325 d); 323 d);
326 } 324 }
327 } 325 }
328 326
329 //bool val = m_commsProvider.InterRegion.RegionUp(new SearializableRegionInfo(region)); 327 //bool val = m_commsProvider.InterRegion.RegionUp(new SearializableRegionInfo(region));
330 } 328 }
329
331 public delegate void SendChildAgentDataUpdateDelegate(ulong regionHandle, ChildAgentDataUpdate cAgentData); 330 public delegate void SendChildAgentDataUpdateDelegate(ulong regionHandle, ChildAgentDataUpdate cAgentData);
332 331
333 /// <summary> 332 /// <summary>
@@ -340,7 +339,7 @@ namespace OpenSim.Region.Environment.Scenes
340 private void SendChildAgentDataUpdateAsync(ulong regionHandle, ChildAgentDataUpdate cAgentData) 339 private void SendChildAgentDataUpdateAsync(ulong regionHandle, ChildAgentDataUpdate cAgentData)
341 { 340 {
342 MainLog.Instance.Notice("INTERGRID", "Informing a neighbor about my agent."); 341 MainLog.Instance.Notice("INTERGRID", "Informing a neighbor about my agent.");
343 bool regionAccepted = m_commsProvider.InterRegion.ChildAgentUpdate(regionHandle,cAgentData); 342 bool regionAccepted = m_commsProvider.InterRegion.ChildAgentUpdate(regionHandle, cAgentData);
344 343
345 if (regionAccepted) 344 if (regionAccepted)
346 { 345 {
@@ -351,11 +350,13 @@ namespace OpenSim.Region.Environment.Scenes
351 MainLog.Instance.Notice("INTERGRID", "Failed sending a neighbor an update about my agent"); 350 MainLog.Instance.Notice("INTERGRID", "Failed sending a neighbor an update about my agent");
352 } 351 }
353 } 352 }
353
354 private void SendChildAgentDataUpdateCompleted(IAsyncResult iar) 354 private void SendChildAgentDataUpdateCompleted(IAsyncResult iar)
355 { 355 {
356 SendChildAgentDataUpdateDelegate icon = (SendChildAgentDataUpdateDelegate)iar.AsyncState; 356 SendChildAgentDataUpdateDelegate icon = (SendChildAgentDataUpdateDelegate) iar.AsyncState;
357 icon.EndInvoke(iar); 357 icon.EndInvoke(iar);
358 } 358 }
359
359 public void SendChildAgentDataUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData) 360 public void SendChildAgentDataUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData)
360 { 361 {
361 // This assumes that we know what our neighbors are. 362 // This assumes that we know what our neighbors are.
@@ -363,9 +364,8 @@ namespace OpenSim.Region.Environment.Scenes
363 d.BeginInvoke(regionHandle, cAgentData, 364 d.BeginInvoke(regionHandle, cAgentData,
364 SendChildAgentDataUpdateCompleted, 365 SendChildAgentDataUpdateCompleted,
365 d); 366 d);
366
367 } 367 }
368 368
369 369
370 /// <summary> 370 /// <summary>
371 /// Helper function to request neighbors from grid-comms 371 /// Helper function to request neighbors from grid-comms
@@ -401,15 +401,13 @@ namespace OpenSim.Region.Environment.Scenes
401 /// <param name="lookAt"></param> 401 /// <param name="lookAt"></param>
402 /// <param name="flags"></param> 402 /// <param name="flags"></param>
403 public virtual void RequestTeleportToLocation(ScenePresence avatar, ulong regionHandle, LLVector3 position, 403 public virtual void RequestTeleportToLocation(ScenePresence avatar, ulong regionHandle, LLVector3 position,
404 LLVector3 lookAt, uint flags) 404 LLVector3 lookAt, uint flags)
405 { 405 {
406 if (regionHandle == m_regionInfo.RegionHandle) 406 if (regionHandle == m_regionInfo.RegionHandle)
407 { 407 {
408
409 avatar.ControllingClient.SendTeleportLocationStart(); 408 avatar.ControllingClient.SendTeleportLocationStart();
410 avatar.ControllingClient.SendLocalTeleport(position, lookAt, flags); 409 avatar.ControllingClient.SendLocalTeleport(position, lookAt, flags);
411 avatar.Teleport(position); 410 avatar.Teleport(position);
412
413 } 411 }
414 else 412 else
415 { 413 {
@@ -424,20 +422,22 @@ namespace OpenSim.Region.Environment.Scenes
424 agent.child = true; 422 agent.child = true;
425 avatar.Close(); 423 avatar.Close();
426 m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent); 424 m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent);
427 m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId, position, false); 425 m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId,
426 position, false);
428 AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo(); 427 AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
429 string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId); 428 string capsPath = Util.GetCapsURL(avatar.ControllingClient.AgentId);
430 avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4), capsPath); 429 avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
430 capsPath);
431 avatar.MakeChildAgent(); 431 avatar.MakeChildAgent();
432 if (KillObject != null) 432 if (KillObject != null)
433 { 433 {
434 KillObject(avatar.LocalId); 434 KillObject(avatar.LocalId);
435 } 435 }
436 uint newRegionX = (uint)(regionHandle >> 40); 436 uint newRegionX = (uint) (regionHandle >> 40);
437 uint newRegionY = (((uint)(regionHandle)) >> 8); 437 uint newRegionY = (((uint) (regionHandle)) >> 8);
438 uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40); 438 uint oldRegionX = (uint) (m_regionInfo.RegionHandle >> 40);
439 uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8); 439 uint oldRegionY = (((uint) (m_regionInfo.RegionHandle)) >> 8);
440 if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3) 440 if (Util.fast_distance2d((int) (newRegionX - oldRegionX), (int) (newRegionY - oldRegionY)) > 3)
441 { 441 {
442 CloseChildAgentConnections(avatar); 442 CloseChildAgentConnections(avatar);
443 } 443 }
@@ -465,7 +465,8 @@ namespace OpenSim.Region.Environment.Scenes
465 { 465 {
466 foreach (ulong regionHandle in presence.KnownChildRegions) 466 foreach (ulong regionHandle in presence.KnownChildRegions)
467 { 467 {
468 m_commsProvider.InterRegion.TellRegionToCloseChildConnection(regionHandle, presence.ControllingClient.AgentId); 468 m_commsProvider.InterRegion.TellRegionToCloseChildConnection(regionHandle,
469 presence.ControllingClient.AgentId);
469 presence.RemoveNeighbourRegion(regionHandle); 470 presence.RemoveNeighbourRegion(regionHandle);
470 } 471 }
471 } 472 }
@@ -474,6 +475,5 @@ namespace OpenSim.Region.Environment.Scenes
474 { 475 {
475 return m_commsProvider.GridService.GetGridSettings(); 476 return m_commsProvider.GridService.GetGridSettings();
476 } 477 }
477
478 } 478 }
479} 479} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/SceneEvents.cs b/OpenSim/Region/Environment/Scenes/SceneEvents.cs
index 9c8c62b..a6a8fb6 100644
--- a/OpenSim/Region/Environment/Scenes/SceneEvents.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneEvents.cs
@@ -105,7 +105,7 @@ namespace OpenSim.Region.Environment.Scenes
105 public delegate void LandObjectAdded(Land newParcel, LLUUID regionUUID); 105 public delegate void LandObjectAdded(Land newParcel, LLUUID regionUUID);
106 106
107 public event LandObjectAdded OnLandObjectAdded; 107 public event LandObjectAdded OnLandObjectAdded;
108 108
109 public delegate void LandObjectRemoved(LLUUID globalID); 109 public delegate void LandObjectRemoved(LLUUID globalID);
110 110
111 public event LandObjectRemoved OnLandObjectRemoved; 111 public event LandObjectRemoved OnLandObjectRemoved;
@@ -117,7 +117,7 @@ namespace OpenSim.Region.Environment.Scenes
117 117
118 public void TriggerOnClientMovement(ScenePresence avatar) 118 public void TriggerOnClientMovement(ScenePresence avatar)
119 { 119 {
120 if(OnClientMovement != null) 120 if (OnClientMovement != null)
121 OnClientMovement(avatar); 121 OnClientMovement(avatar);
122 } 122 }
123 123
@@ -223,7 +223,7 @@ namespace OpenSim.Region.Environment.Scenes
223 { 223 {
224 if (OnSceneGroupMove != null) 224 if (OnSceneGroupMove != null)
225 { 225 {
226 return OnSceneGroupMove(groupID, delta); 226 return OnSceneGroupMove(groupID, delta);
227 } 227 }
228 return true; 228 return true;
229 } 229 }
@@ -236,13 +236,14 @@ namespace OpenSim.Region.Environment.Scenes
236 } 236 }
237 } 237 }
238 238
239 public void TriggerLandObjectAdded(Land newParcel,LLUUID regionID) 239 public void TriggerLandObjectAdded(Land newParcel, LLUUID regionID)
240 { 240 {
241 if (OnLandObjectAdded != null) 241 if (OnLandObjectAdded != null)
242 { 242 {
243 OnLandObjectAdded(newParcel, regionID); 243 OnLandObjectAdded(newParcel, regionID);
244 } 244 }
245 } 245 }
246
246 public void TriggerLandObjectRemoved(LLUUID globalID) 247 public void TriggerLandObjectRemoved(LLUUID globalID)
247 { 248 {
248 if (OnLandObjectRemoved != null) 249 if (OnLandObjectRemoved != null)
@@ -250,10 +251,11 @@ namespace OpenSim.Region.Environment.Scenes
250 OnLandObjectRemoved(globalID); 251 OnLandObjectRemoved(globalID);
251 } 252 }
252 } 253 }
254
253 public void TriggerLandObjectUpdated(uint localParcelID, Land newParcel) 255 public void TriggerLandObjectUpdated(uint localParcelID, Land newParcel)
254 { 256 {
255 //triggerLandObjectRemoved(localParcelID); 257 //triggerLandObjectRemoved(localParcelID);
256 TriggerLandObjectAdded(newParcel,newParcel.m_scene.RegionInfo.RegionID); 258 TriggerLandObjectAdded(newParcel, newParcel.m_scene.RegionInfo.RegionID);
257 } 259 }
258 260
259 public void TriggerAvatarEnteringNewParcel(ScenePresence avatar, int localLandID, LLUUID regionID) 261 public void TriggerAvatarEnteringNewParcel(ScenePresence avatar, int localLandID, LLUUID regionID)
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs
index e822874..1eac61b 100644
--- a/OpenSim/Region/Environment/Scenes/SceneManager.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs
@@ -84,7 +84,6 @@ namespace OpenSim.Region.Environment.Scenes
84 { 84 {
85 if (m_localScenes[i].Equals(cscene)) 85 if (m_localScenes[i].Equals(cscene))
86 { 86 {
87
88 m_localScenes[i].Close(); 87 m_localScenes[i].Close();
89 } 88 }
90 } 89 }
@@ -99,7 +98,8 @@ namespace OpenSim.Region.Environment.Scenes
99 98
100 public void HandleRestart(RegionInfo rdata) 99 public void HandleRestart(RegionInfo rdata)
101 { 100 {
102 MainLog.Instance.Error("SCENEMANAGER", "Got Restart message for region:" + rdata.RegionName +" Sending up to main"); 101 MainLog.Instance.Error("SCENEMANAGER",
102 "Got Restart message for region:" + rdata.RegionName + " Sending up to main");
103 int RegionSceneElement = -1; 103 int RegionSceneElement = -1;
104 for (int i = 0; i < m_localScenes.Count; i++) 104 for (int i = 0; i < m_localScenes.Count; i++)
105 { 105 {
@@ -127,7 +127,6 @@ namespace OpenSim.Region.Environment.Scenes
127 127
128 for (int i = 0; i < m_localScenes.Count; i++) 128 for (int i = 0; i < m_localScenes.Count; i++)
129 { 129 {
130
131 if (m_localScenes[i].RegionInfo.RegionHandle == regionHandle) 130 if (m_localScenes[i].RegionInfo.RegionHandle == regionHandle)
132 { 131 {
133 // Inform other regions to tell their avatar about me 132 // Inform other regions to tell their avatar about me
@@ -223,7 +222,7 @@ namespace OpenSim.Region.Environment.Scenes
223 { 222 {
224 ForEachCurrentScene(delegate(Scene scene) { scene.Backup(); }); 223 ForEachCurrentScene(delegate(Scene scene) { scene.Backup(); });
225 } 224 }
226 225
227 public void HandleAlertCommandOnCurrentScene(string[] cmdparams) 226 public void HandleAlertCommandOnCurrentScene(string[] cmdparams)
228 { 227 {
229 ForEachCurrentScene(delegate(Scene scene) { scene.HandleAlertCommand(cmdparams); }); 228 ForEachCurrentScene(delegate(Scene scene) { scene.HandleAlertCommand(cmdparams); });
@@ -423,4 +422,4 @@ namespace OpenSim.Region.Environment.Scenes
423 m_localScenes.ForEach(action); 422 m_localScenes.ForEach(action);
424 } 423 }
425 } 424 }
426} 425} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index 20d596a..5b74c9b 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -28,6 +28,7 @@
28 28
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Drawing;
31using System.IO; 32using System.IO;
32using System.Text; 33using System.Text;
33using System.Xml; 34using System.Xml;
@@ -38,7 +39,6 @@ using OpenSim.Framework;
38using OpenSim.Framework.Console; 39using OpenSim.Framework.Console;
39using OpenSim.Region.Environment.Interfaces; 40using OpenSim.Region.Environment.Interfaces;
40using OpenSim.Region.Physics.Manager; 41using OpenSim.Region.Physics.Manager;
41using System.Drawing;
42 42
43namespace OpenSim.Region.Environment.Scenes 43namespace OpenSim.Region.Environment.Scenes
44{ 44{
@@ -74,11 +74,13 @@ namespace OpenSim.Region.Environment.Scenes
74 { 74 {
75 get { return m_rootPart.RotationOffset; } 75 get { return m_rootPart.RotationOffset; }
76 } 76 }
77
77 public LLUUID GroupID 78 public LLUUID GroupID
78 { 79 {
79 get { return m_rootPart.GroupID; } 80 get { return m_rootPart.GroupID; }
80 set { m_rootPart.GroupID = value; } 81 set { m_rootPart.GroupID = value; }
81 } 82 }
83
82 /// <summary> 84 /// <summary>
83 /// 85 ///
84 /// </summary> 86 /// </summary>
@@ -242,7 +244,7 @@ namespace OpenSim.Region.Environment.Scenes
242 part.ParentID = 0; 244 part.ParentID = 0;
243 part.LinkNum = 0; 245 part.LinkNum = 0;
244 m_parts.Add(part.UUID, part); 246 m_parts.Add(part.UUID, part);
245 247
246 SetPartAsRoot(part); 248 SetPartAsRoot(part);
247 249
248 RegionHandle = regionHandle; 250 RegionHandle = regionHandle;
@@ -295,7 +297,6 @@ namespace OpenSim.Region.Environment.Scenes
295 sr.Close(); 297 sr.Close();
296 298
297 299
298
299 m_rootPart.LocalID = m_scene.PrimIDAllocate(); 300 m_rootPart.LocalID = m_scene.PrimIDAllocate();
300 m_rootPart.ParentID = 0; 301 m_rootPart.ParentID = 0;
301 m_rootPart.RegionHandle = m_regionHandle; 302 m_rootPart.RegionHandle = m_regionHandle;
@@ -376,9 +377,10 @@ namespace OpenSim.Region.Environment.Scenes
376 377
377 foreach (SceneObjectPart part in m_parts.Values) 378 foreach (SceneObjectPart part in m_parts.Values)
378 { 379 {
379 380 Vector3 partPosition =
380 Vector3 partPosition = new Vector3(part.AbsolutePosition.X, part.AbsolutePosition.Y, part.AbsolutePosition.Z); 381 new Vector3(part.AbsolutePosition.X, part.AbsolutePosition.Y, part.AbsolutePosition.Z);
381 Quaternion parentrotation = new Quaternion(GroupRotation.W, GroupRotation.X, GroupRotation.Y, GroupRotation.Z); 382 Quaternion parentrotation =
383 new Quaternion(GroupRotation.W, GroupRotation.X, GroupRotation.Y, GroupRotation.Z);
382 384
383 // Telling the prim to raytrace. 385 // Telling the prim to raytrace.
384 EntityIntersection inter = part.TestIntersection(hRay, parentrotation); 386 EntityIntersection inter = part.TestIntersection(hRay, parentrotation);
@@ -389,14 +391,11 @@ namespace OpenSim.Region.Environment.Scenes
389 float idist = 256f; 391 float idist = 256f;
390 392
391 393
392
393
394 if (inter.HitTF) 394 if (inter.HitTF)
395 { 395 {
396 // We need to find the closest prim to return to the testcaller along the ray 396 // We need to find the closest prim to return to the testcaller along the ray
397 if (inter.distance < idist) 397 if (inter.distance < idist)
398 { 398 {
399
400 idist = inter.distance; 399 idist = inter.distance;
401 returnresult.HitTF = true; 400 returnresult.HitTF = true;
402 returnresult.ipoint = inter.ipoint; 401 returnresult.ipoint = inter.ipoint;
@@ -405,15 +404,11 @@ namespace OpenSim.Region.Environment.Scenes
405 returnresult.distance = inter.distance; 404 returnresult.distance = inter.distance;
406 } 405 }
407 } 406 }
408
409
410 } 407 }
411 return returnresult; 408 return returnresult;
412
413 } 409 }
414 410
415 411
416
417 /// <summary> 412 /// <summary>
418 /// 413 ///
419 /// </summary> 414 /// </summary>
@@ -524,7 +519,7 @@ namespace OpenSim.Region.Environment.Scenes
524 /// <returns></returns> 519 /// <returns></returns>
525 public SceneObjectGroup Copy(LLUUID cAgentID, LLUUID cGroupID) 520 public SceneObjectGroup Copy(LLUUID cAgentID, LLUUID cGroupID)
526 { 521 {
527 SceneObjectGroup dupe = (SceneObjectGroup)MemberwiseClone(); 522 SceneObjectGroup dupe = (SceneObjectGroup) MemberwiseClone();
528 dupe.m_parts = new Dictionary<LLUUID, SceneObjectPart>(); 523 dupe.m_parts = new Dictionary<LLUUID, SceneObjectPart>();
529 dupe.m_parts.Clear(); 524 dupe.m_parts.Clear();
530 //dupe.OwnerID = AgentID; 525 //dupe.OwnerID = AgentID;
@@ -549,9 +544,8 @@ namespace OpenSim.Region.Environment.Scenes
549 new PhysicsVector(dupe.RootPart.Scale.X, dupe.RootPart.Scale.Y, dupe.RootPart.Scale.Z), 544 new PhysicsVector(dupe.RootPart.Scale.X, dupe.RootPart.Scale.Y, dupe.RootPart.Scale.Z),
550 new Quaternion(dupe.RootPart.RotationOffset.W, dupe.RootPart.RotationOffset.X, 545 new Quaternion(dupe.RootPart.RotationOffset.W, dupe.RootPart.RotationOffset.X,
551 dupe.RootPart.RotationOffset.Y, dupe.RootPart.RotationOffset.Z), 546 dupe.RootPart.RotationOffset.Y, dupe.RootPart.RotationOffset.Z),
552 dupe.RootPart.PhysActor.IsPhysical); 547 dupe.RootPart.PhysActor.IsPhysical);
553 dupe.RootPart.DoPhysicsPropertyUpdate(dupe.RootPart.PhysActor.IsPhysical, true); 548 dupe.RootPart.DoPhysicsPropertyUpdate(dupe.RootPart.PhysActor.IsPhysical, true);
554
555 } 549 }
556 // Now we've made a copy that replaces this one, we need to 550 // Now we've made a copy that replaces this one, we need to
557 // switch the owner to the person who did the copying 551 // switch the owner to the person who did the copying
@@ -559,8 +553,8 @@ namespace OpenSim.Region.Environment.Scenes
559 // So, we have to make a copy of this one, set it in it's place then set the owner on this one 553 // So, we have to make a copy of this one, set it in it's place then set the owner on this one
560 554
561 SetRootPartOwner(m_rootPart, cAgentID, cGroupID); 555 SetRootPartOwner(m_rootPart, cAgentID, cGroupID);
562 556
563 557
564 m_rootPart.ScheduleFullUpdate(); 558 m_rootPart.ScheduleFullUpdate();
565 559
566 List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values); 560 List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values);
@@ -571,7 +565,6 @@ namespace OpenSim.Region.Environment.Scenes
571 dupe.CopyPart(part, OwnerID, GroupID); 565 dupe.CopyPart(part, OwnerID, GroupID);
572 SetPartOwner(part, cAgentID, cGroupID); 566 SetPartOwner(part, cAgentID, cGroupID);
573 part.ScheduleFullUpdate(); 567 part.ScheduleFullUpdate();
574
575 } 568 }
576 } 569 }
577 dupe.UpdateParentIDs(); 570 dupe.UpdateParentIDs();
@@ -601,7 +594,7 @@ namespace OpenSim.Region.Environment.Scenes
601 part.OwnerID = cAgentID; 594 part.OwnerID = cAgentID;
602 part.GroupID = cGroupID; 595 part.GroupID = cGroupID;
603 596
604 597
605 if (part.OwnerID != cAgentID) 598 if (part.OwnerID != cAgentID)
606 { 599 {
607 // Apply Next Owner Permissions if we're not bypassing permissions 600 // Apply Next Owner Permissions if we're not bypassing permissions
@@ -637,6 +630,7 @@ namespace OpenSim.Region.Environment.Scenes
637 m_parts.Add(part.UUID, part); 630 m_parts.Add(part.UUID, part);
638 } 631 }
639 } 632 }
633
640 /// <summary> 634 /// <summary>
641 /// 635 ///
642 /// </summary> 636 /// </summary>
@@ -666,8 +660,8 @@ namespace OpenSim.Region.Environment.Scenes
666 objPropDB.Description = Helpers.StringToField(RootPart.Description); 660 objPropDB.Description = Helpers.StringToField(RootPart.Description);
667 objPropFamilyPack.ObjectData = objPropDB; 661 objPropFamilyPack.ObjectData = objPropDB;
668 remoteClient.OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task); 662 remoteClient.OutPacket(objPropFamilyPack, ThrottleOutPacketType.Task);
669
670 } 663 }
664
671 public void SetPartOwner(SceneObjectPart part, LLUUID cAgentID, LLUUID cGroupID) 665 public void SetPartOwner(SceneObjectPart part, LLUUID cAgentID, LLUUID cGroupID)
672 { 666 {
673 part.OwnerID = cAgentID; 667 part.OwnerID = cAgentID;
@@ -884,12 +878,12 @@ namespace OpenSim.Region.Environment.Scenes
884 Quaternion parentRot = 878 Quaternion parentRot =
885 new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, m_rootPart.RotationOffset.Y, 879 new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, m_rootPart.RotationOffset.Y,
886 m_rootPart.RotationOffset.Z); 880 m_rootPart.RotationOffset.Z);
887 axPos = parentRot.Inverse() * axPos; 881 axPos = parentRot.Inverse()*axPos;
888 linkPart.OffsetPosition = new LLVector3(axPos.x, axPos.y, axPos.z); 882 linkPart.OffsetPosition = new LLVector3(axPos.x, axPos.y, axPos.z);
889 Quaternion oldRot = 883 Quaternion oldRot =
890 new Quaternion(linkPart.RotationOffset.W, linkPart.RotationOffset.X, linkPart.RotationOffset.Y, 884 new Quaternion(linkPart.RotationOffset.W, linkPart.RotationOffset.X, linkPart.RotationOffset.Y,
891 linkPart.RotationOffset.Z); 885 linkPart.RotationOffset.Z);
892 Quaternion newRot = parentRot.Inverse() * oldRot; 886 Quaternion newRot = parentRot.Inverse()*oldRot;
893 linkPart.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w); 887 linkPart.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w);
894 linkPart.ParentID = m_rootPart.LocalID; 888 linkPart.ParentID = m_rootPart.LocalID;
895 linkPart.LinkNum = m_parts.Count; 889 linkPart.LinkNum = m_parts.Count;
@@ -949,7 +943,7 @@ namespace OpenSim.Region.Environment.Scenes
949 linkPart.OffsetPosition.Y, 943 linkPart.OffsetPosition.Y,
950 linkPart.OffsetPosition.Z); 944 linkPart.OffsetPosition.Z);
951 945
952 axPos = parentRot * axPos; 946 axPos = parentRot*axPos;
953 linkPart.OffsetPosition = new LLVector3(axPos.x, axPos.y, axPos.z); 947 linkPart.OffsetPosition = new LLVector3(axPos.x, axPos.y, axPos.z);
954 linkPart.GroupPosition = AbsolutePosition + linkPart.OffsetPosition; 948 linkPart.GroupPosition = AbsolutePosition + linkPart.OffsetPosition;
955 linkPart.OffsetPosition = new LLVector3(0, 0, 0); 949 linkPart.OffsetPosition = new LLVector3(0, 0, 0);
@@ -960,7 +954,7 @@ namespace OpenSim.Region.Environment.Scenes
960 linkPart.RotationOffset.X, 954 linkPart.RotationOffset.X,
961 linkPart.RotationOffset.Y, 955 linkPart.RotationOffset.Y,
962 linkPart.RotationOffset.Z); 956 linkPart.RotationOffset.Z);
963 Quaternion newRot = parentRot * oldRot; 957 Quaternion newRot = parentRot*oldRot;
964 linkPart.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w); 958 linkPart.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w);
965 959
966 // Add physics information back to delinked part if appropriate 960 // Add physics information back to delinked part if appropriate
@@ -978,7 +972,6 @@ namespace OpenSim.Region.Environment.Scenes
978 linkPart.RotationOffset.Y, linkPart.RotationOffset.Z), 972 linkPart.RotationOffset.Y, linkPart.RotationOffset.Z),
979 m_rootPart.PhysActor.IsPhysical); 973 m_rootPart.PhysActor.IsPhysical);
980 m_rootPart.DoPhysicsPropertyUpdate(m_rootPart.PhysActor.IsPhysical, true); 974 m_rootPart.DoPhysicsPropertyUpdate(m_rootPart.PhysActor.IsPhysical, true);
981
982 } 975 }
983 976
984 SceneObjectGroup objectGroup = new SceneObjectGroup(m_scene, m_regionHandle, linkPart); 977 SceneObjectGroup objectGroup = new SceneObjectGroup(m_scene, m_regionHandle, linkPart);
@@ -990,8 +983,8 @@ namespace OpenSim.Region.Environment.Scenes
990 else 983 else
991 { 984 {
992 MainLog.Instance.Verbose("SCENE", 985 MainLog.Instance.Verbose("SCENE",
993 "DelinkFromGroup(): Child prim local id {0} not found in object with root prim id {1}", 986 "DelinkFromGroup(): Child prim local id {0} not found in object with root prim id {1}",
994 partID, LocalId); 987 partID, LocalId);
995 } 988 }
996 } 989 }
997 990
@@ -1008,7 +1001,7 @@ namespace OpenSim.Region.Environment.Scenes
1008 m_parts.Add(part.UUID, part); 1001 m_parts.Add(part.UUID, part);
1009 1002
1010 Vector3 axiomOldPos = new Vector3(part.OffsetPosition.X, part.OffsetPosition.Y, part.OffsetPosition.Z); 1003 Vector3 axiomOldPos = new Vector3(part.OffsetPosition.X, part.OffsetPosition.Y, part.OffsetPosition.Z);
1011 axiomOldPos = oldGroupRotation * axiomOldPos; 1004 axiomOldPos = oldGroupRotation*axiomOldPos;
1012 axiomOldPos += oldGroupPosition; 1005 axiomOldPos += oldGroupPosition;
1013 LLVector3 oldAbsolutePosition = new LLVector3(axiomOldPos.x, axiomOldPos.y, axiomOldPos.z); 1006 LLVector3 oldAbsolutePosition = new LLVector3(axiomOldPos.x, axiomOldPos.y, axiomOldPos.z);
1014 part.OffsetPosition = oldAbsolutePosition - AbsolutePosition; 1007 part.OffsetPosition = oldAbsolutePosition - AbsolutePosition;
@@ -1018,15 +1011,15 @@ namespace OpenSim.Region.Environment.Scenes
1018 m_rootPart.RotationOffset.Z); 1011 m_rootPart.RotationOffset.Z);
1019 1012
1020 Vector3 axiomPos = new Vector3(part.OffsetPosition.X, part.OffsetPosition.Y, part.OffsetPosition.Z); 1013 Vector3 axiomPos = new Vector3(part.OffsetPosition.X, part.OffsetPosition.Y, part.OffsetPosition.Z);
1021 axiomPos = axiomRootRotation.Inverse() * axiomPos; 1014 axiomPos = axiomRootRotation.Inverse()*axiomPos;
1022 part.OffsetPosition = new LLVector3(axiomPos.x, axiomPos.y, axiomPos.z); 1015 part.OffsetPosition = new LLVector3(axiomPos.x, axiomPos.y, axiomPos.z);
1023 1016
1024 Quaternion axiomPartRotation = 1017 Quaternion axiomPartRotation =
1025 new Quaternion(part.RotationOffset.W, part.RotationOffset.X, part.RotationOffset.Y, 1018 new Quaternion(part.RotationOffset.W, part.RotationOffset.X, part.RotationOffset.Y,
1026 part.RotationOffset.Z); 1019 part.RotationOffset.Z);
1027 1020
1028 axiomPartRotation = oldGroupRotation * axiomPartRotation; 1021 axiomPartRotation = oldGroupRotation*axiomPartRotation;
1029 axiomPartRotation = axiomRootRotation.Inverse() * axiomPartRotation; 1022 axiomPartRotation = axiomRootRotation.Inverse()*axiomPartRotation;
1030 part.RotationOffset = 1023 part.RotationOffset =
1031 new LLQuaternion(axiomPartRotation.x, axiomPartRotation.y, axiomPartRotation.z, axiomPartRotation.w); 1024 new LLQuaternion(axiomPartRotation.x, axiomPartRotation.y, axiomPartRotation.z, axiomPartRotation.w);
1032 } 1025 }
@@ -1056,12 +1049,12 @@ namespace OpenSim.Region.Environment.Scenes
1056 proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; 1049 proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1];
1057 proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); 1050 proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock();
1058 proper.ObjectData[0].ItemID = LLUUID.Zero; 1051 proper.ObjectData[0].ItemID = LLUUID.Zero;
1059 proper.ObjectData[0].CreationDate = (ulong)m_rootPart.CreationDate; 1052 proper.ObjectData[0].CreationDate = (ulong) m_rootPart.CreationDate;
1060 proper.ObjectData[0].CreatorID = m_rootPart.CreatorID; 1053 proper.ObjectData[0].CreatorID = m_rootPart.CreatorID;
1061 proper.ObjectData[0].FolderID = LLUUID.Zero; 1054 proper.ObjectData[0].FolderID = LLUUID.Zero;
1062 proper.ObjectData[0].FromTaskID = LLUUID.Zero; 1055 proper.ObjectData[0].FromTaskID = LLUUID.Zero;
1063 proper.ObjectData[0].GroupID = LLUUID.Zero; 1056 proper.ObjectData[0].GroupID = LLUUID.Zero;
1064 proper.ObjectData[0].InventorySerial = (short)m_rootPart.InventorySerial; 1057 proper.ObjectData[0].InventorySerial = (short) m_rootPart.InventorySerial;
1065 proper.ObjectData[0].LastOwnerID = m_rootPart.LastOwnerID; 1058 proper.ObjectData[0].LastOwnerID = m_rootPart.LastOwnerID;
1066 proper.ObjectData[0].ObjectID = UUID; 1059 proper.ObjectData[0].ObjectID = UUID;
1067 proper.ObjectData[0].OwnerID = m_rootPart.OwnerID; 1060 proper.ObjectData[0].OwnerID = m_rootPart.OwnerID;
@@ -1155,7 +1148,7 @@ namespace OpenSim.Region.Environment.Scenes
1155 else 1148 else
1156 { 1149 {
1157 MainLog.Instance.Warn( 1150 MainLog.Instance.Warn(
1158 "SCENE", 1151 "SCENE",
1159 "Couldn't find part {0} in object group {1} ({2}) to retreive prim inventory", 1152 "Couldn't find part {0} in object group {1} ({2}) to retreive prim inventory",
1160 localID, LocalId, UUID); 1153 localID, LocalId, UUID);
1161 } 1154 }
@@ -1272,10 +1265,8 @@ namespace OpenSim.Region.Environment.Scenes
1272 public void UpdatePermissions(LLUUID AgentID, byte field, uint localID, uint mask, byte addRemTF) 1265 public void UpdatePermissions(LLUUID AgentID, byte field, uint localID, uint mask, byte addRemTF)
1273 { 1266 {
1274 SceneObjectPart updatePart = GetChildPart(localID); 1267 SceneObjectPart updatePart = GetChildPart(localID);
1275 updatePart.UpdatePermissions(AgentID,field,localID,mask,addRemTF); 1268 updatePart.UpdatePermissions(AgentID, field, localID, mask, addRemTF);
1276 } 1269 }
1277
1278
1279 1270
1280 #endregion 1271 #endregion
1281 1272
@@ -1304,9 +1295,8 @@ namespace OpenSim.Region.Environment.Scenes
1304 new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, 1295 new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X,
1305 m_rootPart.RotationOffset.Y, m_rootPart.RotationOffset.Z), 1296 m_rootPart.RotationOffset.Y, m_rootPart.RotationOffset.Z),
1306 m_rootPart.PhysActor.IsPhysical); 1297 m_rootPart.PhysActor.IsPhysical);
1307 bool UsePhysics = ((m_rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) != 0); 1298 bool UsePhysics = ((m_rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) != 0);
1308 m_rootPart.DoPhysicsPropertyUpdate(UsePhysics, true); 1299 m_rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
1309
1310 } 1300 }
1311 } 1301 }
1312 1302
@@ -1350,11 +1340,10 @@ namespace OpenSim.Region.Environment.Scenes
1350 if (m_scene.EventManager.TriggerGroupMove(UUID, pos)) 1340 if (m_scene.EventManager.TriggerGroupMove(UUID, pos))
1351 { 1341 {
1352 AbsolutePosition = pos; 1342 AbsolutePosition = pos;
1353
1354 } 1343 }
1355 //we need to do a terse update even if the move wasn't allowed 1344 //we need to do a terse update even if the move wasn't allowed
1356 // so that the position is reset in the client (the object snaps back) 1345 // so that the position is reset in the client (the object snaps back)
1357 ScheduleGroupForTerseUpdate(); 1346 ScheduleGroupForTerseUpdate();
1358 } 1347 }
1359 1348
1360 /// <summary> 1349 /// <summary>
@@ -1394,7 +1383,7 @@ namespace OpenSim.Region.Environment.Scenes
1394 Quaternion partRotation = 1383 Quaternion partRotation =
1395 new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, m_rootPart.RotationOffset.Y, 1384 new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, m_rootPart.RotationOffset.Y,
1396 m_rootPart.RotationOffset.Z); 1385 m_rootPart.RotationOffset.Z);
1397 axDiff = partRotation.Inverse() * axDiff; 1386 axDiff = partRotation.Inverse()*axDiff;
1398 diff.X = axDiff.x; 1387 diff.X = axDiff.x;
1399 diff.Y = axDiff.y; 1388 diff.Y = axDiff.y;
1400 diff.Z = axDiff.z; 1389 diff.Z = axDiff.z;
@@ -1496,14 +1485,14 @@ namespace OpenSim.Region.Environment.Scenes
1496 if (prim.UUID != m_rootPart.UUID) 1485 if (prim.UUID != m_rootPart.UUID)
1497 { 1486 {
1498 Vector3 axPos = new Vector3(prim.OffsetPosition.X, prim.OffsetPosition.Y, prim.OffsetPosition.Z); 1487 Vector3 axPos = new Vector3(prim.OffsetPosition.X, prim.OffsetPosition.Y, prim.OffsetPosition.Z);
1499 axPos = oldParentRot * axPos; 1488 axPos = oldParentRot*axPos;
1500 axPos = axRot.Inverse() * axPos; 1489 axPos = axRot.Inverse()*axPos;
1501 prim.OffsetPosition = new LLVector3(axPos.x, axPos.y, axPos.z); 1490 prim.OffsetPosition = new LLVector3(axPos.x, axPos.y, axPos.z);
1502 Quaternion primsRot = 1491 Quaternion primsRot =
1503 new Quaternion(prim.RotationOffset.W, prim.RotationOffset.X, prim.RotationOffset.Y, 1492 new Quaternion(prim.RotationOffset.W, prim.RotationOffset.X, prim.RotationOffset.Y,
1504 prim.RotationOffset.Z); 1493 prim.RotationOffset.Z);
1505 Quaternion newRot = oldParentRot * primsRot; 1494 Quaternion newRot = oldParentRot*primsRot;
1506 newRot = axRot.Inverse() * newRot; 1495 newRot = axRot.Inverse()*newRot;
1507 prim.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w); 1496 prim.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w);
1508 prim.ScheduleTerseUpdate(); 1497 prim.ScheduleTerseUpdate();
1509 } 1498 }
@@ -1736,10 +1725,10 @@ namespace OpenSim.Region.Environment.Scenes
1736 1725
1737 public override void SetText(string text, Vector3 color, double alpha) 1726 public override void SetText(string text, Vector3 color, double alpha)
1738 { 1727 {
1739 Color = Color.FromArgb(0xff - (int)(alpha * 0xff), 1728 Color = Color.FromArgb(0xff - (int) (alpha*0xff),
1740 (int)(color.x * 0xff), 1729 (int) (color.x*0xff),
1741 (int)(color.y * 0xff), 1730 (int) (color.y*0xff),
1742 (int)(color.z * 0xff)); 1731 (int) (color.z*0xff));
1743 Text = text; 1732 Text = text;
1744 } 1733 }
1745 1734
@@ -1748,4 +1737,4 @@ namespace OpenSim.Region.Environment.Scenes
1748 m_rootPart.ApplyPhysics(); 1737 m_rootPart.ApplyPhysics();
1749 } 1738 }
1750 } 1739 }
1751} 1740} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index f226150..90a975c 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -28,6 +28,7 @@
28 28
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Drawing;
31using System.Xml; 32using System.Xml;
32using System.Xml.Serialization; 33using System.Xml.Serialization;
33using Axiom.Math; 34using Axiom.Math;
@@ -38,23 +39,26 @@ using OpenSim.Framework.Console;
38using OpenSim.Region.Environment.Interfaces; 39using OpenSim.Region.Environment.Interfaces;
39using OpenSim.Region.Environment.Scenes.Scripting; 40using OpenSim.Region.Environment.Scenes.Scripting;
40using OpenSim.Region.Physics.Manager; 41using OpenSim.Region.Physics.Manager;
41using System.Drawing;
42 42
43namespace OpenSim.Region.Environment.Scenes 43namespace OpenSim.Region.Environment.Scenes
44{ 44{
45 public class SceneObjectPart : IScriptHost 45 public class SceneObjectPart : IScriptHost
46 { 46 {
47 private const LLObject.ObjectFlags OBJFULL_MASK_GENERAL = LLObject.ObjectFlags.ObjectCopy | LLObject.ObjectFlags.ObjectModify | LLObject.ObjectFlags.ObjectTransfer; 47 private const LLObject.ObjectFlags OBJFULL_MASK_GENERAL =
48 private const LLObject.ObjectFlags OBJFULL_MASK_OWNER = LLObject.ObjectFlags.ObjectCopy | LLObject.ObjectFlags.ObjectModify | LLObject.ObjectFlags.ObjectOwnerModify | LLObject.ObjectFlags.ObjectTransfer | LLObject.ObjectFlags.ObjectYouOwner; 48 LLObject.ObjectFlags.ObjectCopy | LLObject.ObjectFlags.ObjectModify | LLObject.ObjectFlags.ObjectTransfer;
49
50 private const LLObject.ObjectFlags OBJFULL_MASK_OWNER =
51 LLObject.ObjectFlags.ObjectCopy | LLObject.ObjectFlags.ObjectModify | LLObject.ObjectFlags.ObjectOwnerModify |
52 LLObject.ObjectFlags.ObjectTransfer | LLObject.ObjectFlags.ObjectYouOwner;
53
49 private const uint OBJNEXT_OWNER = 2147483647; 54 private const uint OBJNEXT_OWNER = 2147483647;
50 55
51 private const uint FULL_MASK_PERMISSIONS_GENERAL = 2147483647; 56 private const uint FULL_MASK_PERMISSIONS_GENERAL = 2147483647;
52 private const uint FULL_MASK_PERMISSIONS_OWNER = 2147483647; 57 private const uint FULL_MASK_PERMISSIONS_OWNER = 2147483647;
53 private string m_inventoryFileName = ""; 58 private string m_inventoryFileName = "";
54 private LLUUID m_folderID = LLUUID.Zero; 59 private LLUUID m_folderID = LLUUID.Zero;
55 60
56 [XmlIgnore] 61 [XmlIgnore] public PhysicsActor PhysActor = null;
57 public PhysicsActor PhysActor = null;
58 62
59 protected Dictionary<LLUUID, TaskInventoryItem> TaskInventory = new Dictionary<LLUUID, TaskInventoryItem>(); 63 protected Dictionary<LLUUID, TaskInventoryItem> TaskInventory = new Dictionary<LLUUID, TaskInventoryItem>();
60 public LLUUID LastOwnerID; 64 public LLUUID LastOwnerID;
@@ -72,25 +76,20 @@ namespace OpenSim.Region.Environment.Scenes
72 private Quaternion m_sitTargetOrientation = new Quaternion(0, 0, 0, 1); 76 private Quaternion m_sitTargetOrientation = new Quaternion(0, 0, 0, 1);
73 private LLUUID m_SitTargetAvatar = LLUUID.Zero; 77 private LLUUID m_SitTargetAvatar = LLUUID.Zero;
74 78
75
76
77 79
78 // Main grid has default permissions as follows 80 // Main grid has default permissions as follows
79 // 81 //
80 public uint OwnerMask = FULL_MASK_PERMISSIONS_OWNER; 82 public uint OwnerMask = FULL_MASK_PERMISSIONS_OWNER;
81 public uint NextOwnerMask = OBJNEXT_OWNER; 83 public uint NextOwnerMask = OBJNEXT_OWNER;
82 public uint GroupMask = (uint) LLObject.ObjectFlags.None; 84 public uint GroupMask = (uint) LLObject.ObjectFlags.None;
83 public uint EveryoneMask = (uint) LLObject.ObjectFlags.None; 85 public uint EveryoneMask = (uint) LLObject.ObjectFlags.None;
84 public uint BaseMask = FULL_MASK_PERMISSIONS_OWNER; 86 public uint BaseMask = FULL_MASK_PERMISSIONS_OWNER;
85 87
86 protected byte[] m_particleSystem = new byte[0]; 88 protected byte[] m_particleSystem = new byte[0];
87 89
88 [XmlIgnore] 90 [XmlIgnore] public uint TimeStampFull = 0;
89 public uint TimeStampFull = 0; 91 [XmlIgnore] public uint TimeStampTerse = 0;
90 [XmlIgnore] 92 [XmlIgnore] public uint TimeStampLastActivity = 0; // Will be used for AutoReturn
91 public uint TimeStampTerse = 0;
92 [XmlIgnore]
93 public uint TimeStampLastActivity = 0; // Will be used for AutoReturn
94 93
95 /// <summary> 94 /// <summary>
96 /// Only used internally to schedule client updates 95 /// Only used internally to schedule client updates
@@ -145,16 +144,16 @@ namespace OpenSim.Region.Environment.Scenes
145 144
146 public uint ObjectFlags 145 public uint ObjectFlags
147 { 146 {
148 get { return (uint)m_flags; } 147 get { return (uint) m_flags; }
149 set { m_flags = (LLObject.ObjectFlags)value; } 148 set { m_flags = (LLObject.ObjectFlags) value; }
150 } 149 }
151 150
152 protected LLObject.MaterialType m_material = 0; 151 protected LLObject.MaterialType m_material = 0;
153 152
154 public byte Material 153 public byte Material
155 { 154 {
156 get { return (byte)m_material; } 155 get { return (byte) m_material; }
157 set { m_material = (LLObject.MaterialType)value; } 156 set { m_material = (LLObject.MaterialType) value; }
158 } 157 }
159 158
160 protected ulong m_regionHandle; 159 protected ulong m_regionHandle;
@@ -168,7 +167,6 @@ namespace OpenSim.Region.Environment.Scenes
168 //unkown if this will be kept, added as a way of removing the group position from the group class 167 //unkown if this will be kept, added as a way of removing the group position from the group class
169 protected LLVector3 m_groupPosition; 168 protected LLVector3 m_groupPosition;
170 169
171
172 170
173 public LLVector3 GroupPosition 171 public LLVector3 GroupPosition
174 { 172 {
@@ -225,7 +223,7 @@ namespace OpenSim.Region.Environment.Scenes
225 if (PhysActor != null) 223 if (PhysActor != null)
226 { 224 {
227 if (PhysActor.Orientation.x != 0 || PhysActor.Orientation.y != 0 225 if (PhysActor.Orientation.x != 0 || PhysActor.Orientation.y != 0
228 || PhysActor.Orientation.z != 0 || PhysActor.Orientation.w != 0) 226 || PhysActor.Orientation.z != 0 || PhysActor.Orientation.w != 0)
229 { 227 {
230 m_rotationOffset.X = PhysActor.Orientation.x; 228 m_rotationOffset.X = PhysActor.Orientation.x;
231 m_rotationOffset.Y = PhysActor.Orientation.y; 229 m_rotationOffset.Y = PhysActor.Orientation.y;
@@ -281,6 +279,7 @@ namespace OpenSim.Region.Environment.Scenes
281 } 279 }
282 set { m_velocity = value; } 280 set { m_velocity = value; }
283 } 281 }
282
284 public LLVector3 RotationalVelocity 283 public LLVector3 RotationalVelocity
285 { 284 {
286 get 285 get
@@ -351,6 +350,7 @@ namespace OpenSim.Region.Environment.Scenes
351 { 350 {
352 get { return m_sitTargetPosition; } 351 get { return m_sitTargetPosition; }
353 } 352 }
353
354 public Quaternion SitTargetOrientation 354 public Quaternion SitTargetOrientation
355 { 355 {
356 get { return m_sitTargetOrientation; } 356 get { return m_sitTargetOrientation; }
@@ -383,6 +383,7 @@ namespace OpenSim.Region.Environment.Scenes
383 } 383 }
384 384
385 private int m_linkNum = 0; 385 private int m_linkNum = 0;
386
386 public int LinkNum 387 public int LinkNum
387 { 388 {
388 get { return m_linkNum; } 389 get { return m_linkNum; }
@@ -390,13 +391,14 @@ namespace OpenSim.Region.Environment.Scenes
390 } 391 }
391 392
392 private byte m_clickAction = 0; 393 private byte m_clickAction = 0;
394
393 public byte ClickAction 395 public byte ClickAction
394 { 396 {
395 get { return m_clickAction; } 397 get { return m_clickAction; }
396 set 398 set
397 { 399 {
398 m_clickAction = value; 400 m_clickAction = value;
399 this.ScheduleFullUpdate(); 401 ScheduleFullUpdate();
400 } 402 }
401 } 403 }
402 404
@@ -423,6 +425,7 @@ namespace OpenSim.Region.Environment.Scenes
423 425
424 // FIXME, TODO, ERROR: 'ParentGroup' can't be in here, move it out. 426 // FIXME, TODO, ERROR: 'ParentGroup' can't be in here, move it out.
425 protected SceneObjectGroup m_parentGroup; 427 protected SceneObjectGroup m_parentGroup;
428
426 public SceneObjectGroup ParentGroup 429 public SceneObjectGroup ParentGroup
427 { 430 {
428 get { return m_parentGroup; } 431 get { return m_parentGroup; }
@@ -434,7 +437,6 @@ namespace OpenSim.Region.Environment.Scenes
434 set { m_updateFlag = value; } 437 set { m_updateFlag = value; }
435 } 438 }
436 439
437
438 #region Constructors 440 #region Constructors
439 441
440 /// <summary> 442 /// <summary>
@@ -469,18 +471,18 @@ namespace OpenSim.Region.Environment.Scenes
469 m_regionHandle = regionHandle; 471 m_regionHandle = regionHandle;
470 m_parentGroup = parent; 472 m_parentGroup = parent;
471 473
472 CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; 474 CreationDate = (Int32) (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
473 OwnerID = ownerID; 475 OwnerID = ownerID;
474 CreatorID = OwnerID; 476 CreatorID = OwnerID;
475 LastOwnerID = LLUUID.Zero; 477 LastOwnerID = LLUUID.Zero;
476 UUID = LLUUID.Random(); 478 UUID = LLUUID.Random();
477 LocalID = (uint)(localID); 479 LocalID = (uint) (localID);
478 Shape = shape; 480 Shape = shape;
479 // Todo: Add More Object Parameter from above! 481 // Todo: Add More Object Parameter from above!
480 OwnershipCost = 0; 482 OwnershipCost = 0;
481 ObjectSaleType = (byte)0; 483 ObjectSaleType = (byte) 0;
482 SalePrice = 0; 484 SalePrice = 0;
483 Category = (uint)0; 485 Category = (uint) 0;
484 LastOwnerID = CreatorID; 486 LastOwnerID = CreatorID;
485 // End Todo: /// 487 // End Todo: ///
486 GroupPosition = groupPosition; 488 GroupPosition = groupPosition;
@@ -495,9 +497,9 @@ namespace OpenSim.Region.Environment.Scenes
495 m_folderID = LLUUID.Random(); 497 m_folderID = LLUUID.Random();
496 498
497 m_flags = 0; 499 m_flags = 0;
498 m_flags |= LLObject.ObjectFlags.Touch | 500 m_flags |= LLObject.ObjectFlags.Touch |
499 LLObject.ObjectFlags.AllowInventoryDrop | 501 LLObject.ObjectFlags.AllowInventoryDrop |
500 LLObject.ObjectFlags.CreateSelected; 502 LLObject.ObjectFlags.CreateSelected;
501 503
502 ApplySanePermissions(); 504 ApplySanePermissions();
503 505
@@ -520,18 +522,18 @@ namespace OpenSim.Region.Environment.Scenes
520 { 522 {
521 m_regionHandle = regionHandle; 523 m_regionHandle = regionHandle;
522 m_parentGroup = parent; 524 m_parentGroup = parent;
523 TimeStampTerse = (uint)Util.UnixTimeSinceEpoch(); 525 TimeStampTerse = (uint) Util.UnixTimeSinceEpoch();
524 CreationDate = creationDate; 526 CreationDate = creationDate;
525 OwnerID = ownerID; 527 OwnerID = ownerID;
526 CreatorID = creatorID; 528 CreatorID = creatorID;
527 LastOwnerID = lastOwnerID; 529 LastOwnerID = lastOwnerID;
528 UUID = LLUUID.Random(); 530 UUID = LLUUID.Random();
529 LocalID = (uint)(localID); 531 LocalID = (uint) (localID);
530 Shape = shape; 532 Shape = shape;
531 OwnershipCost = 0; 533 OwnershipCost = 0;
532 ObjectSaleType = (byte)0; 534 ObjectSaleType = (byte) 0;
533 SalePrice = 0; 535 SalePrice = 0;
534 Category = (uint)0; 536 Category = (uint) 0;
535 LastOwnerID = CreatorID; 537 LastOwnerID = CreatorID;
536 OffsetPosition = position; 538 OffsetPosition = position;
537 RotationOffset = rotation; 539 RotationOffset = rotation;
@@ -552,18 +554,18 @@ namespace OpenSim.Region.Environment.Scenes
552 /// <returns></returns> 554 /// <returns></returns>
553 public static SceneObjectPart FromXml(XmlReader xmlReader) 555 public static SceneObjectPart FromXml(XmlReader xmlReader)
554 { 556 {
555 XmlSerializer serializer = new XmlSerializer(typeof(SceneObjectPart)); 557 XmlSerializer serializer = new XmlSerializer(typeof (SceneObjectPart));
556 SceneObjectPart newobject = (SceneObjectPart)serializer.Deserialize(xmlReader); 558 SceneObjectPart newobject = (SceneObjectPart) serializer.Deserialize(xmlReader);
557 return newobject; 559 return newobject;
558 } 560 }
559 561
560 public void ApplyPhysics() 562 public void ApplyPhysics()
561 { 563 {
562 bool isPhysical = ((ObjectFlags & (uint)LLObject.ObjectFlags.Physics) != 0); 564 bool isPhysical = ((ObjectFlags & (uint) LLObject.ObjectFlags.Physics) != 0);
563 bool isPhantom = ((ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) != 0); 565 bool isPhantom = ((ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) != 0);
564 566
565 bool usePhysics = isPhysical && !isPhantom; 567 bool usePhysics = isPhysical && !isPhantom;
566 568
567 if (usePhysics) 569 if (usePhysics)
568 { 570 {
569 PhysActor = m_parentGroup.m_scene.PhysicsScene.AddPrimShape( 571 PhysActor = m_parentGroup.m_scene.PhysicsScene.AddPrimShape(
@@ -576,101 +578,102 @@ namespace OpenSim.Region.Environment.Scenes
576 RotationOffset.Y, RotationOffset.Z), usePhysics); 578 RotationOffset.Y, RotationOffset.Z), usePhysics);
577 } 579 }
578 580
579 DoPhysicsPropertyUpdate(usePhysics, true); 581 DoPhysicsPropertyUpdate(usePhysics, true);
580 } 582 }
583
581 public void ApplyNextOwnerPermissions() 584 public void ApplyNextOwnerPermissions()
582 { 585 {
583 BaseMask = NextOwnerMask; 586 BaseMask = NextOwnerMask;
584 OwnerMask = NextOwnerMask; 587 OwnerMask = NextOwnerMask;
585 } 588 }
589
586 public void ApplySanePermissions() 590 public void ApplySanePermissions()
587 { 591 {
588 // These are some flags that The OwnerMask should never have 592 // These are some flags that The OwnerMask should never have
589 OwnerMask &= ~(uint)LLObject.ObjectFlags.ObjectGroupOwned; 593 OwnerMask &= ~(uint) LLObject.ObjectFlags.ObjectGroupOwned;
590 OwnerMask &= ~(uint)LLObject.ObjectFlags.Physics; 594 OwnerMask &= ~(uint) LLObject.ObjectFlags.Physics;
591 OwnerMask &= ~(uint)LLObject.ObjectFlags.Phantom; 595 OwnerMask &= ~(uint) LLObject.ObjectFlags.Phantom;
592 OwnerMask &= ~(uint)LLObject.ObjectFlags.Scripted; 596 OwnerMask &= ~(uint) LLObject.ObjectFlags.Scripted;
593 OwnerMask &= ~(uint)LLObject.ObjectFlags.Touch; 597 OwnerMask &= ~(uint) LLObject.ObjectFlags.Touch;
594 OwnerMask &= ~(uint)LLObject.ObjectFlags.Temporary; 598 OwnerMask &= ~(uint) LLObject.ObjectFlags.Temporary;
595 OwnerMask &= ~(uint)LLObject.ObjectFlags.TemporaryOnRez; 599 OwnerMask &= ~(uint) LLObject.ObjectFlags.TemporaryOnRez;
596 OwnerMask &= ~(uint)LLObject.ObjectFlags.ZlibCompressed; 600 OwnerMask &= ~(uint) LLObject.ObjectFlags.ZlibCompressed;
597 OwnerMask &= ~(uint)LLObject.ObjectFlags.AllowInventoryDrop; 601 OwnerMask &= ~(uint) LLObject.ObjectFlags.AllowInventoryDrop;
598 OwnerMask &= ~(uint)LLObject.ObjectFlags.AnimSource; 602 OwnerMask &= ~(uint) LLObject.ObjectFlags.AnimSource;
599 OwnerMask &= ~(uint)LLObject.ObjectFlags.Money; 603 OwnerMask &= ~(uint) LLObject.ObjectFlags.Money;
600 OwnerMask &= ~(uint)LLObject.ObjectFlags.CastShadows; 604 OwnerMask &= ~(uint) LLObject.ObjectFlags.CastShadows;
601 OwnerMask &= ~(uint)LLObject.ObjectFlags.InventoryEmpty; 605 OwnerMask &= ~(uint) LLObject.ObjectFlags.InventoryEmpty;
602 OwnerMask &= ~(uint)LLObject.ObjectFlags.CreateSelected; 606 OwnerMask &= ~(uint) LLObject.ObjectFlags.CreateSelected;
603 607
604 608
605 // These are some flags that the next owner mask should never have 609 // These are some flags that the next owner mask should never have
606 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.ObjectYouOwner; 610 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.ObjectYouOwner;
607 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.ObjectTransfer; 611 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.ObjectTransfer;
608 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.ObjectOwnerModify; 612 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.ObjectOwnerModify;
609 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.ObjectGroupOwned; 613 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.ObjectGroupOwned;
610 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.Physics; 614 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.Physics;
611 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.Phantom; 615 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.Phantom;
612 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.Scripted; 616 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.Scripted;
613 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.Touch; 617 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.Touch;
614 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.Temporary; 618 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.Temporary;
615 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.TemporaryOnRez; 619 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.TemporaryOnRez;
616 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.ZlibCompressed; 620 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.ZlibCompressed;
617 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.AllowInventoryDrop; 621 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.AllowInventoryDrop;
618 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.AnimSource; 622 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.AnimSource;
619 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.Money; 623 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.Money;
620 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.CastShadows; 624 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.CastShadows;
621 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.InventoryEmpty; 625 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.InventoryEmpty;
622 NextOwnerMask &= ~(uint)LLObject.ObjectFlags.CreateSelected; 626 NextOwnerMask &= ~(uint) LLObject.ObjectFlags.CreateSelected;
623 627
624 628
625 // These are some flags that the GroupMask should never have 629 // These are some flags that the GroupMask should never have
626 GroupMask &= ~(uint)LLObject.ObjectFlags.ObjectYouOwner; 630 GroupMask &= ~(uint) LLObject.ObjectFlags.ObjectYouOwner;
627 GroupMask &= ~(uint)LLObject.ObjectFlags.ObjectTransfer; 631 GroupMask &= ~(uint) LLObject.ObjectFlags.ObjectTransfer;
628 GroupMask &= ~(uint)LLObject.ObjectFlags.ObjectOwnerModify; 632 GroupMask &= ~(uint) LLObject.ObjectFlags.ObjectOwnerModify;
629 GroupMask &= ~(uint)LLObject.ObjectFlags.ObjectGroupOwned; 633 GroupMask &= ~(uint) LLObject.ObjectFlags.ObjectGroupOwned;
630 GroupMask &= ~(uint)LLObject.ObjectFlags.Physics; 634 GroupMask &= ~(uint) LLObject.ObjectFlags.Physics;
631 GroupMask &= ~(uint)LLObject.ObjectFlags.Phantom; 635 GroupMask &= ~(uint) LLObject.ObjectFlags.Phantom;
632 GroupMask &= ~(uint)LLObject.ObjectFlags.Scripted; 636 GroupMask &= ~(uint) LLObject.ObjectFlags.Scripted;
633 GroupMask &= ~(uint)LLObject.ObjectFlags.Touch; 637 GroupMask &= ~(uint) LLObject.ObjectFlags.Touch;
634 GroupMask &= ~(uint)LLObject.ObjectFlags.Temporary; 638 GroupMask &= ~(uint) LLObject.ObjectFlags.Temporary;
635 GroupMask &= ~(uint)LLObject.ObjectFlags.TemporaryOnRez; 639 GroupMask &= ~(uint) LLObject.ObjectFlags.TemporaryOnRez;
636 GroupMask &= ~(uint)LLObject.ObjectFlags.ZlibCompressed; 640 GroupMask &= ~(uint) LLObject.ObjectFlags.ZlibCompressed;
637 GroupMask &= ~(uint)LLObject.ObjectFlags.AllowInventoryDrop; 641 GroupMask &= ~(uint) LLObject.ObjectFlags.AllowInventoryDrop;
638 GroupMask &= ~(uint)LLObject.ObjectFlags.AnimSource; 642 GroupMask &= ~(uint) LLObject.ObjectFlags.AnimSource;
639 GroupMask &= ~(uint)LLObject.ObjectFlags.Money; 643 GroupMask &= ~(uint) LLObject.ObjectFlags.Money;
640 GroupMask &= ~(uint)LLObject.ObjectFlags.CastShadows; 644 GroupMask &= ~(uint) LLObject.ObjectFlags.CastShadows;
641 GroupMask &= ~(uint)LLObject.ObjectFlags.InventoryEmpty; 645 GroupMask &= ~(uint) LLObject.ObjectFlags.InventoryEmpty;
642 GroupMask &= ~(uint)LLObject.ObjectFlags.CreateSelected; 646 GroupMask &= ~(uint) LLObject.ObjectFlags.CreateSelected;
643 647
644 648
645 // These are some flags that EveryoneMask should never have 649 // These are some flags that EveryoneMask should never have
646 EveryoneMask &= ~(uint)LLObject.ObjectFlags.ObjectYouOwner; 650 EveryoneMask &= ~(uint) LLObject.ObjectFlags.ObjectYouOwner;
647 EveryoneMask &= ~(uint)LLObject.ObjectFlags.ObjectTransfer; 651 EveryoneMask &= ~(uint) LLObject.ObjectFlags.ObjectTransfer;
648 EveryoneMask &= ~(uint)LLObject.ObjectFlags.ObjectOwnerModify; 652 EveryoneMask &= ~(uint) LLObject.ObjectFlags.ObjectOwnerModify;
649 EveryoneMask &= ~(uint)LLObject.ObjectFlags.ObjectGroupOwned; 653 EveryoneMask &= ~(uint) LLObject.ObjectFlags.ObjectGroupOwned;
650 EveryoneMask &= ~(uint)LLObject.ObjectFlags.Physics; 654 EveryoneMask &= ~(uint) LLObject.ObjectFlags.Physics;
651 EveryoneMask &= ~(uint)LLObject.ObjectFlags.Phantom; 655 EveryoneMask &= ~(uint) LLObject.ObjectFlags.Phantom;
652 EveryoneMask &= ~(uint)LLObject.ObjectFlags.Scripted; 656 EveryoneMask &= ~(uint) LLObject.ObjectFlags.Scripted;
653 EveryoneMask &= ~(uint)LLObject.ObjectFlags.Touch; 657 EveryoneMask &= ~(uint) LLObject.ObjectFlags.Touch;
654 EveryoneMask &= ~(uint)LLObject.ObjectFlags.Temporary; 658 EveryoneMask &= ~(uint) LLObject.ObjectFlags.Temporary;
655 EveryoneMask &= ~(uint)LLObject.ObjectFlags.TemporaryOnRez; 659 EveryoneMask &= ~(uint) LLObject.ObjectFlags.TemporaryOnRez;
656 EveryoneMask &= ~(uint)LLObject.ObjectFlags.ZlibCompressed; 660 EveryoneMask &= ~(uint) LLObject.ObjectFlags.ZlibCompressed;
657 EveryoneMask &= ~(uint)LLObject.ObjectFlags.AllowInventoryDrop; 661 EveryoneMask &= ~(uint) LLObject.ObjectFlags.AllowInventoryDrop;
658 EveryoneMask &= ~(uint)LLObject.ObjectFlags.AnimSource; 662 EveryoneMask &= ~(uint) LLObject.ObjectFlags.AnimSource;
659 EveryoneMask &= ~(uint)LLObject.ObjectFlags.Money; 663 EveryoneMask &= ~(uint) LLObject.ObjectFlags.Money;
660 EveryoneMask &= ~(uint)LLObject.ObjectFlags.CastShadows; 664 EveryoneMask &= ~(uint) LLObject.ObjectFlags.CastShadows;
661 EveryoneMask &= ~(uint)LLObject.ObjectFlags.InventoryEmpty; 665 EveryoneMask &= ~(uint) LLObject.ObjectFlags.InventoryEmpty;
662 EveryoneMask &= ~(uint)LLObject.ObjectFlags.CreateSelected; 666 EveryoneMask &= ~(uint) LLObject.ObjectFlags.CreateSelected;
663
664 667
665 // These are some flags that ObjectFlags (m_flags) should never have
666 ObjectFlags &= ~(uint)LLObject.ObjectFlags.ObjectYouOwner;
667 ObjectFlags &= ~(uint)LLObject.ObjectFlags.ObjectTransfer;
668 ObjectFlags &= ~(uint)LLObject.ObjectFlags.ObjectOwnerModify;
669 ObjectFlags &= ~(uint)LLObject.ObjectFlags.ObjectYouOfficer;
670 ObjectFlags &= ~(uint)LLObject.ObjectFlags.ObjectCopy;
671 ObjectFlags &= ~(uint)LLObject.ObjectFlags.ObjectModify;
672 ObjectFlags &= ~(uint)LLObject.ObjectFlags.ObjectMove;
673 668
669 // These are some flags that ObjectFlags (m_flags) should never have
670 ObjectFlags &= ~(uint) LLObject.ObjectFlags.ObjectYouOwner;
671 ObjectFlags &= ~(uint) LLObject.ObjectFlags.ObjectTransfer;
672 ObjectFlags &= ~(uint) LLObject.ObjectFlags.ObjectOwnerModify;
673 ObjectFlags &= ~(uint) LLObject.ObjectFlags.ObjectYouOfficer;
674 ObjectFlags &= ~(uint) LLObject.ObjectFlags.ObjectCopy;
675 ObjectFlags &= ~(uint) LLObject.ObjectFlags.ObjectModify;
676 ObjectFlags &= ~(uint) LLObject.ObjectFlags.ObjectMove;
674 } 677 }
675 678
676 /// <summary> 679 /// <summary>
@@ -679,13 +682,12 @@ namespace OpenSim.Region.Environment.Scenes
679 /// <param name="xmlWriter"></param> 682 /// <param name="xmlWriter"></param>
680 public void ToXml(XmlWriter xmlWriter) 683 public void ToXml(XmlWriter xmlWriter)
681 { 684 {
682 XmlSerializer serializer = new XmlSerializer(typeof(SceneObjectPart)); 685 XmlSerializer serializer = new XmlSerializer(typeof (SceneObjectPart));
683 serializer.Serialize(xmlWriter, this); 686 serializer.Serialize(xmlWriter, this);
684 } 687 }
685 688
686 public EntityIntersection TestIntersection(Ray iray, Quaternion parentrot) 689 public EntityIntersection TestIntersection(Ray iray, Quaternion parentrot)
687 { 690 {
688
689 // In this case we're using a sphere with a radius of the largest dimention of the prim 691 // In this case we're using a sphere with a radius of the largest dimention of the prim
690 // TODO: Change to take shape into account 692 // TODO: Change to take shape into account
691 693
@@ -693,35 +695,34 @@ namespace OpenSim.Region.Environment.Scenes
693 EntityIntersection returnresult = new EntityIntersection(); 695 EntityIntersection returnresult = new EntityIntersection();
694 Vector3 vAbsolutePosition = new Vector3(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z); 696 Vector3 vAbsolutePosition = new Vector3(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z);
695 Vector3 vScale = new Vector3(Scale.X, Scale.Y, Scale.Z); 697 Vector3 vScale = new Vector3(Scale.X, Scale.Y, Scale.Z);
696 Quaternion qRotation = new Quaternion(RotationOffset.W, RotationOffset.X, RotationOffset.Y, RotationOffset.Z); 698 Quaternion qRotation =
697 699 new Quaternion(RotationOffset.W, RotationOffset.X, RotationOffset.Y, RotationOffset.Z);
698 700
699 701
700 Quaternion worldRotation = (qRotation * parentrot); 702 Quaternion worldRotation = (qRotation*parentrot);
701 Matrix3 worldRotM = worldRotation.ToRotationMatrix(); 703 Matrix3 worldRotM = worldRotation.ToRotationMatrix();
702 704
703 705
704
705 Vector3 rOrigin = iray.Origin; 706 Vector3 rOrigin = iray.Origin;
706 Vector3 rDirection = iray.Direction; 707 Vector3 rDirection = iray.Direction;
707 708
708 709
709 // Buidling the first part of the Quadratic equation 710 // Buidling the first part of the Quadratic equation
710 Vector3 r2ndDirection = rDirection * rDirection; 711 Vector3 r2ndDirection = rDirection*rDirection;
711 float itestPart1 = r2ndDirection.x + r2ndDirection.y + r2ndDirection.z; 712 float itestPart1 = r2ndDirection.x + r2ndDirection.y + r2ndDirection.z;
712 713
713 // Buidling the second part of the Quadratic equation 714 // Buidling the second part of the Quadratic equation
714 Vector3 tmVal2 = rOrigin - vAbsolutePosition; 715 Vector3 tmVal2 = rOrigin - vAbsolutePosition;
715 Vector3 r2Direction = rDirection * 2.0f; 716 Vector3 r2Direction = rDirection*2.0f;
716 Vector3 tmVal3 = r2Direction * tmVal2; 717 Vector3 tmVal3 = r2Direction*tmVal2;
717 718
718 float itestPart2 = tmVal3.x + tmVal3.y + tmVal3.z; 719 float itestPart2 = tmVal3.x + tmVal3.y + tmVal3.z;
719 720
720 // Buidling the third part of the Quadratic equation 721 // Buidling the third part of the Quadratic equation
721 Vector3 tmVal4 = rOrigin * rOrigin; 722 Vector3 tmVal4 = rOrigin*rOrigin;
722 Vector3 tmVal5 = vAbsolutePosition * vAbsolutePosition; 723 Vector3 tmVal5 = vAbsolutePosition*vAbsolutePosition;
723 724
724 Vector3 tmVal6 = vAbsolutePosition * rOrigin; 725 Vector3 tmVal6 = vAbsolutePosition*rOrigin;
725 726
726 727
727 // Set Radius to the largest dimention of the prim 728 // Set Radius to the largest dimention of the prim
@@ -735,21 +736,22 @@ namespace OpenSim.Region.Environment.Scenes
735 736
736 //radius = radius; 737 //radius = radius;
737 738
738 float itestPart3 = tmVal4.x + tmVal4.y + tmVal4.z + tmVal5.x + tmVal5.y + tmVal5.z - (2.0f * (tmVal6.x + tmVal6.y + tmVal6.z + (radius * radius))); 739 float itestPart3 = tmVal4.x + tmVal4.y + tmVal4.z + tmVal5.x + tmVal5.y + tmVal5.z -
740 (2.0f*(tmVal6.x + tmVal6.y + tmVal6.z + (radius*radius)));
739 741
740 // Yuk Quadradrics.. Solve first 742 // Yuk Quadradrics.. Solve first
741 float rootsqr = (itestPart2 * itestPart2) - (4.0f * itestPart1 * itestPart3); 743 float rootsqr = (itestPart2*itestPart2) - (4.0f*itestPart1*itestPart3);
742 if (rootsqr < 0.0f) 744 if (rootsqr < 0.0f)
743 { 745 {
744 // No intersection 746 // No intersection
745 return returnresult; 747 return returnresult;
746 } 748 }
747 float root = ((-itestPart2) - (float)Math.Sqrt((double)rootsqr)) / (itestPart1 * 2.0f); 749 float root = ((-itestPart2) - (float) Math.Sqrt((double) rootsqr))/(itestPart1*2.0f);
748 750
749 if (root < 0.0f) 751 if (root < 0.0f)
750 { 752 {
751 // perform second quadratic root solution 753 // perform second quadratic root solution
752 root = ((-itestPart2) + (float)Math.Sqrt((double)rootsqr)) / (itestPart1 * 2.0f); 754 root = ((-itestPart2) + (float) Math.Sqrt((double) rootsqr))/(itestPart1*2.0f);
753 755
754 // is there any intersection? 756 // is there any intersection?
755 if (root < 0.0f) 757 if (root < 0.0f)
@@ -761,7 +763,9 @@ namespace OpenSim.Region.Environment.Scenes
761 763
762 // We got an intersection. putting together an EntityIntersection object with the 764 // We got an intersection. putting together an EntityIntersection object with the
763 // intersection information 765 // intersection information
764 Vector3 ipoint = new Vector3(iray.Origin.x + (iray.Direction.x * root), iray.Origin.y + (iray.Direction.y * root), iray.Origin.z + (iray.Direction.z * root)); 766 Vector3 ipoint =
767 new Vector3(iray.Origin.x + (iray.Direction.x*root), iray.Origin.y + (iray.Direction.y*root),
768 iray.Origin.z + (iray.Direction.z*root));
765 769
766 returnresult.HitTF = true; 770 returnresult.HitTF = true;
767 returnresult.ipoint = ipoint; 771 returnresult.ipoint = ipoint;
@@ -775,7 +779,7 @@ namespace OpenSim.Region.Environment.Scenes
775 779
776 LLVector3 distanceConvert1 = new LLVector3(iray.Origin.x, iray.Origin.y, iray.Origin.z); 780 LLVector3 distanceConvert1 = new LLVector3(iray.Origin.x, iray.Origin.y, iray.Origin.z);
777 LLVector3 distanceConvert2 = new LLVector3(ipoint.x, ipoint.y, ipoint.z); 781 LLVector3 distanceConvert2 = new LLVector3(ipoint.x, ipoint.y, ipoint.z);
778 float distance = (float)Util.GetDistanceTo(distanceConvert1, distanceConvert2); 782 float distance = (float) Util.GetDistanceTo(distanceConvert1, distanceConvert2);
779 783
780 returnresult.distance = distance; 784 returnresult.distance = distance;
781 785
@@ -783,7 +787,6 @@ namespace OpenSim.Region.Environment.Scenes
783 } 787 }
784 788
785 789
786
787 /// <summary> 790 /// <summary>
788 /// 791 ///
789 /// </summary> 792 /// </summary>
@@ -797,6 +800,7 @@ namespace OpenSim.Region.Environment.Scenes
797 m_sitTargetPosition = offset; 800 m_sitTargetPosition = offset;
798 m_sitTargetOrientation = orientation; 801 m_sitTargetOrientation = orientation;
799 } 802 }
803
800 public LLVector3 GetSitTargetPositionLL() 804 public LLVector3 GetSitTargetPositionLL()
801 { 805 {
802 return new LLVector3(m_sitTargetPosition.x, m_sitTargetPosition.y, m_sitTargetPosition.z); 806 return new LLVector3(m_sitTargetPosition.x, m_sitTargetPosition.y, m_sitTargetPosition.z);
@@ -804,13 +808,17 @@ namespace OpenSim.Region.Environment.Scenes
804 808
805 public LLQuaternion GetSitTargetOrientationLL() 809 public LLQuaternion GetSitTargetOrientationLL()
806 { 810 {
807 return new LLQuaternion( m_sitTargetOrientation.x, m_sitTargetOrientation.y, m_sitTargetOrientation.z,m_sitTargetOrientation.w); 811 return
812 new LLQuaternion(m_sitTargetOrientation.x, m_sitTargetOrientation.y, m_sitTargetOrientation.z,
813 m_sitTargetOrientation.w);
808 } 814 }
809 815
810 // Utility function so the databases don't have to reference axiom.math 816 // Utility function so the databases don't have to reference axiom.math
811 public void SetSitTargetLL(LLVector3 offset, LLQuaternion orientation) 817 public void SetSitTargetLL(LLVector3 offset, LLQuaternion orientation)
812 { 818 {
813 if (!(offset.X == 0 && offset.Y == 0 && offset.Z == 0 && (orientation.W == 0 || orientation.W == 1) && orientation.X == 0 && orientation.Y == 0 && orientation.Z == 0)) 819 if (
820 !(offset.X == 0 && offset.Y == 0 && offset.Z == 0 && (orientation.W == 0 || orientation.W == 1) &&
821 orientation.X == 0 && orientation.Y == 0 && orientation.Z == 0))
814 { 822 {
815 m_sitTargetPosition = new Vector3(offset.X, offset.Y, offset.Z); 823 m_sitTargetPosition = new Vector3(offset.X, offset.Y, offset.Z);
816 m_sitTargetOrientation = new Quaternion(orientation.W, orientation.X, orientation.Y, orientation.Z); 824 m_sitTargetOrientation = new Quaternion(orientation.W, orientation.X, orientation.Y, orientation.Z);
@@ -869,7 +877,7 @@ namespace OpenSim.Region.Environment.Scenes
869 /// <returns></returns> 877 /// <returns></returns>
870 public SceneObjectPart Copy(uint localID, LLUUID AgentID, LLUUID GroupID) 878 public SceneObjectPart Copy(uint localID, LLUUID AgentID, LLUUID GroupID)
871 { 879 {
872 SceneObjectPart dupe = (SceneObjectPart)MemberwiseClone(); 880 SceneObjectPart dupe = (SceneObjectPart) MemberwiseClone();
873 dupe.m_shape = m_shape.Copy(); 881 dupe.m_shape = m_shape.Copy();
874 dupe.m_regionHandle = m_regionHandle; 882 dupe.m_regionHandle = m_regionHandle;
875 dupe.UUID = LLUUID.Random(); 883 dupe.UUID = LLUUID.Random();
@@ -896,7 +904,7 @@ namespace OpenSim.Region.Environment.Scenes
896 byte[] extraP = new byte[Shape.ExtraParams.Length]; 904 byte[] extraP = new byte[Shape.ExtraParams.Length];
897 Array.Copy(Shape.ExtraParams, extraP, extraP.Length); 905 Array.Copy(Shape.ExtraParams, extraP, extraP.Length);
898 dupe.Shape.ExtraParams = extraP; 906 dupe.Shape.ExtraParams = extraP;
899 bool UsePhysics = ((dupe.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) != 0); 907 bool UsePhysics = ((dupe.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) != 0);
900 dupe.DoPhysicsPropertyUpdate(UsePhysics, true); 908 dupe.DoPhysicsPropertyUpdate(UsePhysics, true);
901 909
902 return dupe; 910 return dupe;
@@ -923,7 +931,7 @@ namespace OpenSim.Region.Environment.Scenes
923 { 931 {
924 m_parentGroup.HasChanged = true; 932 m_parentGroup.HasChanged = true;
925 } 933 }
926 TimeStampFull = (uint)Util.UnixTimeSinceEpoch(); 934 TimeStampFull = (uint) Util.UnixTimeSinceEpoch();
927 m_updateFlag = 2; 935 m_updateFlag = 2;
928 } 936 }
929 937
@@ -931,11 +939,10 @@ namespace OpenSim.Region.Environment.Scenes
931 { 939 {
932 LLObject.ObjectFlags prevflag = m_flags; 940 LLObject.ObjectFlags prevflag = m_flags;
933 //uint objflags = m_flags; 941 //uint objflags = m_flags;
934 if ((ObjectFlags & (uint)flag) == 0) 942 if ((ObjectFlags & (uint) flag) == 0)
935 { 943 {
936 //Console.WriteLine("Adding flag: " + ((LLObject.ObjectFlags) flag).ToString()); 944 //Console.WriteLine("Adding flag: " + ((LLObject.ObjectFlags) flag).ToString());
937 m_flags |= flag; 945 m_flags |= flag;
938
939 } 946 }
940 //uint currflag = (uint)m_flags; 947 //uint currflag = (uint)m_flags;
941 //System.Console.WriteLine("Aprev: " + prevflag.ToString() + " curr: " + m_flags.ToString()); 948 //System.Console.WriteLine("Aprev: " + prevflag.ToString() + " curr: " + m_flags.ToString());
@@ -945,11 +952,10 @@ namespace OpenSim.Region.Environment.Scenes
945 public void RemFlag(LLObject.ObjectFlags flag) 952 public void RemFlag(LLObject.ObjectFlags flag)
946 { 953 {
947 LLObject.ObjectFlags prevflag = m_flags; 954 LLObject.ObjectFlags prevflag = m_flags;
948 if ((ObjectFlags & (uint)flag) != 0) 955 if ((ObjectFlags & (uint) flag) != 0)
949 { 956 {
950 //Console.WriteLine("Removing flag: " + ((LLObject.ObjectFlags)flag).ToString()); 957 //Console.WriteLine("Removing flag: " + ((LLObject.ObjectFlags)flag).ToString());
951 m_flags &= ~flag; 958 m_flags &= ~flag;
952
953 } 959 }
954 //System.Console.WriteLine("prev: " + prevflag.ToString() + " curr: " + m_flags.ToString()); 960 //System.Console.WriteLine("prev: " + prevflag.ToString() + " curr: " + m_flags.ToString());
955 //ScheduleFullUpdate(); 961 //ScheduleFullUpdate();
@@ -966,7 +972,7 @@ namespace OpenSim.Region.Environment.Scenes
966 { 972 {
967 m_parentGroup.HasChanged = true; 973 m_parentGroup.HasChanged = true;
968 } 974 }
969 TimeStampTerse = (uint)Util.UnixTimeSinceEpoch(); 975 TimeStampTerse = (uint) Util.UnixTimeSinceEpoch();
970 m_updateFlag = 1; 976 m_updateFlag = 1;
971 } 977 }
972 } 978 }
@@ -1074,7 +1080,7 @@ namespace OpenSim.Region.Environment.Scenes
1074 { 1080 {
1075 if (m_inventorySerial > 0) 1081 if (m_inventorySerial > 0)
1076 { 1082 {
1077 client.SendTaskInventory(m_uuid, (short)m_inventorySerial, 1083 client.SendTaskInventory(m_uuid, (short) m_inventorySerial,
1078 Helpers.StringToField(m_inventoryFileName)); 1084 Helpers.StringToField(m_inventoryFileName));
1079 return true; 1085 return true;
1080 } 1086 }
@@ -1134,7 +1140,7 @@ namespace OpenSim.Region.Environment.Scenes
1134 bool IsTemporary = false; 1140 bool IsTemporary = false;
1135 bool IsPhantom = false; 1141 bool IsPhantom = false;
1136 bool castsShadows = false; 1142 bool castsShadows = false;
1137 bool wasUsingPhysics = ((ObjectFlags & (uint)LLObject.ObjectFlags.Physics) != 0); 1143 bool wasUsingPhysics = ((ObjectFlags & (uint) LLObject.ObjectFlags.Physics) != 0);
1138 //bool IsLocked = false; 1144 //bool IsLocked = false;
1139 int i = 0; 1145 int i = 0;
1140 1146
@@ -1162,7 +1168,6 @@ namespace OpenSim.Region.Environment.Scenes
1162 { 1168 {
1163 DoPhysicsPropertyUpdate(usePhysics, false); 1169 DoPhysicsPropertyUpdate(usePhysics, false);
1164 } 1170 }
1165
1166 } 1171 }
1167 else 1172 else
1168 { 1173 {
@@ -1174,9 +1179,6 @@ namespace OpenSim.Region.Environment.Scenes
1174 } 1179 }
1175 1180
1176 1181
1177
1178
1179
1180 if (IsPhantom) 1182 if (IsPhantom)
1181 { 1183 {
1182 AddFlag(LLObject.ObjectFlags.Phantom); 1184 AddFlag(LLObject.ObjectFlags.Phantom);
@@ -1220,19 +1222,18 @@ namespace OpenSim.Region.Environment.Scenes
1220 // System.Console.WriteLine("Update: PHY:" + UsePhysics.ToString() + ", T:" + IsTemporary.ToString() + ", PHA:" + IsPhantom.ToString() + " S:" + CastsShadows.ToString()); 1222 // System.Console.WriteLine("Update: PHY:" + UsePhysics.ToString() + ", T:" + IsTemporary.ToString() + ", PHA:" + IsPhantom.ToString() + " S:" + CastsShadows.ToString());
1221 ScheduleFullUpdate(); 1223 ScheduleFullUpdate();
1222 } 1224 }
1225
1223 public void DoPhysicsPropertyUpdate(bool UsePhysics, bool isNew) 1226 public void DoPhysicsPropertyUpdate(bool UsePhysics, bool isNew)
1224 { 1227 {
1225
1226 if (PhysActor != null) 1228 if (PhysActor != null)
1227 { 1229 {
1228 if (UsePhysics != PhysActor.IsPhysical || isNew) 1230 if (UsePhysics != PhysActor.IsPhysical || isNew)
1229 { 1231 {
1230
1231 if (PhysActor.IsPhysical) 1232 if (PhysActor.IsPhysical)
1232 { 1233 {
1233 if (!isNew) 1234 if (!isNew)
1234 this.ParentGroup.m_scene.RemovePhysicalPrim(1); 1235 ParentGroup.m_scene.RemovePhysicalPrim(1);
1235 1236
1236 PhysActor.OnRequestTerseUpdate -= PhysicsRequestingTerseUpdate; 1237 PhysActor.OnRequestTerseUpdate -= PhysicsRequestingTerseUpdate;
1237 PhysActor.OnOutOfBounds -= PhysicsOutOfBounds; 1238 PhysActor.OnOutOfBounds -= PhysicsOutOfBounds;
1238 } 1239 }
@@ -1244,7 +1245,7 @@ namespace OpenSim.Region.Environment.Scenes
1244 //PhysActor = null; 1245 //PhysActor = null;
1245 1246
1246 1247
1247 if ((ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) 1248 if ((ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
1248 { 1249 {
1249 //PhysActor = m_parentGroup.m_scene.PhysicsScene.AddPrimShape( 1250 //PhysActor = m_parentGroup.m_scene.PhysicsScene.AddPrimShape(
1250 //Name, 1251 //Name,
@@ -1256,8 +1257,8 @@ namespace OpenSim.Region.Environment.Scenes
1256 //RotationOffset.Y, RotationOffset.Z), UsePhysics); 1257 //RotationOffset.Y, RotationOffset.Z), UsePhysics);
1257 if (UsePhysics) 1258 if (UsePhysics)
1258 { 1259 {
1259 this.ParentGroup.m_scene.AddPhysicalPrim(1); 1260 ParentGroup.m_scene.AddPhysicalPrim(1);
1260 1261
1261 PhysActor.OnRequestTerseUpdate += PhysicsRequestingTerseUpdate; 1262 PhysActor.OnRequestTerseUpdate += PhysicsRequestingTerseUpdate;
1262 PhysActor.OnOutOfBounds += PhysicsOutOfBounds; 1263 PhysActor.OnOutOfBounds += PhysicsOutOfBounds;
1263 } 1264 }
@@ -1271,15 +1272,15 @@ namespace OpenSim.Region.Environment.Scenes
1271 { 1272 {
1272 m_shape.ExtraParams = new byte[data.Length + 7]; 1273 m_shape.ExtraParams = new byte[data.Length + 7];
1273 int i = 0; 1274 int i = 0;
1274 uint length = (uint)data.Length; 1275 uint length = (uint) data.Length;
1275 m_shape.ExtraParams[i++] = 1; 1276 m_shape.ExtraParams[i++] = 1;
1276 m_shape.ExtraParams[i++] = (byte)(type % 256); 1277 m_shape.ExtraParams[i++] = (byte) (type%256);
1277 m_shape.ExtraParams[i++] = (byte)((type >> 8) % 256); 1278 m_shape.ExtraParams[i++] = (byte) ((type >> 8)%256);
1278 1279
1279 m_shape.ExtraParams[i++] = (byte)(length % 256); 1280 m_shape.ExtraParams[i++] = (byte) (length%256);
1280 m_shape.ExtraParams[i++] = (byte)((length >> 8) % 256); 1281 m_shape.ExtraParams[i++] = (byte) ((length >> 8)%256);
1281 m_shape.ExtraParams[i++] = (byte)((length >> 16) % 256); 1282 m_shape.ExtraParams[i++] = (byte) ((length >> 16)%256);
1282 m_shape.ExtraParams[i++] = (byte)((length >> 24) % 256); 1283 m_shape.ExtraParams[i++] = (byte) ((length >> 24)%256);
1283 Array.Copy(data, 0, m_shape.ExtraParams, i, data.Length); 1284 Array.Copy(data, 0, m_shape.ExtraParams, i, data.Length);
1284 1285
1285 ScheduleFullUpdate(); 1286 ScheduleFullUpdate();
@@ -1305,7 +1306,7 @@ namespace OpenSim.Region.Environment.Scenes
1305 { 1306 {
1306 if (PhysActor != null) 1307 if (PhysActor != null)
1307 { 1308 {
1308 return new LLVector3(PhysActor.CenterOfMass.X,PhysActor.CenterOfMass.Y,PhysActor.CenterOfMass.Z); 1309 return new LLVector3(PhysActor.CenterOfMass.X, PhysActor.CenterOfMass.Y, PhysActor.CenterOfMass.Z);
1309 } 1310 }
1310 else 1311 else
1311 { 1312 {
@@ -1323,7 +1324,7 @@ namespace OpenSim.Region.Environment.Scenes
1323 /// <param name="textureEntry"></param> 1324 /// <param name="textureEntry"></param>
1324 public void UpdateTextureEntry(byte[] textureEntry) 1325 public void UpdateTextureEntry(byte[] textureEntry)
1325 { 1326 {
1326 m_shape.Textures = new LLObject.TextureEntry( textureEntry, 0, textureEntry.Length ); 1327 m_shape.Textures = new LLObject.TextureEntry(textureEntry, 0, textureEntry.Length);
1327 ScheduleFullUpdate(); 1328 ScheduleFullUpdate();
1328 } 1329 }
1329 1330
@@ -1337,20 +1338,20 @@ namespace OpenSim.Region.Environment.Scenes
1337 { 1338 {
1338 if (tex.FaceTextures[i] != null) 1339 if (tex.FaceTextures[i] != null)
1339 { 1340 {
1340 tmpcolor = tex.GetFace((uint)i).RGBA; 1341 tmpcolor = tex.GetFace((uint) i).RGBA;
1341 tmpcolor.A = tmpcolor.A * 255; 1342 tmpcolor.A = tmpcolor.A*255;
1342 tmpcolor.R = tmpcolor.R * 255; 1343 tmpcolor.R = tmpcolor.R*255;
1343 tmpcolor.G = tmpcolor.G * 255; 1344 tmpcolor.G = tmpcolor.G*255;
1344 tmpcolor.B = tmpcolor.B * 255; 1345 tmpcolor.B = tmpcolor.B*255;
1345 tex.FaceTextures[i].RGBA = tmpcolor; 1346 tex.FaceTextures[i].RGBA = tmpcolor;
1346 } 1347 }
1347 } 1348 }
1348 tmpcolor = tex.DefaultTexture.RGBA; 1349 tmpcolor = tex.DefaultTexture.RGBA;
1349 tmpcolor.A = tmpcolor.A * 255; 1350 tmpcolor.A = tmpcolor.A*255;
1350 tmpcolor.R = tmpcolor.R * 255; 1351 tmpcolor.R = tmpcolor.R*255;
1351 tmpcolor.G = tmpcolor.G * 255; 1352 tmpcolor.G = tmpcolor.G*255;
1352 tmpcolor.B = tmpcolor.B * 255; 1353 tmpcolor.B = tmpcolor.B*255;
1353 tex.DefaultTexture.RGBA = tmpcolor; 1354 tex.DefaultTexture.RGBA = tmpcolor;
1354 UpdateTextureEntry(tex.ToBytes()); 1355 UpdateTextureEntry(tex.ToBytes());
1355 } 1356 }
1356 1357
@@ -1416,34 +1417,33 @@ namespace OpenSim.Region.Environment.Scenes
1416 // Are we the owner? 1417 // Are we the owner?
1417 if (AgentID == OwnerID) 1418 if (AgentID == OwnerID)
1418 { 1419 {
1419 MainLog.Instance.Verbose("PERMISSIONS", "field: " + field.ToString() + ", mask: " + mask.ToString() + " addRemTF: " + addRemTF.ToString()); 1420 MainLog.Instance.Verbose("PERMISSIONS",
1420 1421 "field: " + field.ToString() + ", mask: " + mask.ToString() + " addRemTF: " +
1422 addRemTF.ToString());
1423
1421 //Field 8 = EveryoneMask 1424 //Field 8 = EveryoneMask
1422 if (field == (byte)8) 1425 if (field == (byte) 8)
1423 { 1426 {
1424 MainLog.Instance.Verbose("PERMISSIONS", "Left over: " + (OwnerMask - EveryoneMask)); 1427 MainLog.Instance.Verbose("PERMISSIONS", "Left over: " + (OwnerMask - EveryoneMask));
1425 if (addRemTF == (byte)0) 1428 if (addRemTF == (byte) 0)
1426 { 1429 {
1427 //EveryoneMask = (uint)0; 1430 //EveryoneMask = (uint)0;
1428 EveryoneMask &= ~mask; 1431 EveryoneMask &= ~mask;
1429 //EveryoneMask &= ~(uint)57344; 1432 //EveryoneMask &= ~(uint)57344;
1430
1431
1432 } 1433 }
1433 else 1434 else
1434 { 1435 {
1435 //EveryoneMask = (uint)0; 1436 //EveryoneMask = (uint)0;
1436 EveryoneMask |= mask; 1437 EveryoneMask |= mask;
1437 //EveryoneMask |= (uint)57344; 1438 //EveryoneMask |= (uint)57344;
1438
1439 } 1439 }
1440 //ScheduleFullUpdate(); 1440 //ScheduleFullUpdate();
1441 SendFullUpdateToAllClients(); 1441 SendFullUpdateToAllClients();
1442 } 1442 }
1443 //Field 16 = NextownerMask 1443 //Field 16 = NextownerMask
1444 if (field == (byte)16) 1444 if (field == (byte) 16)
1445 { 1445 {
1446 if (addRemTF == (byte)0) 1446 if (addRemTF == (byte) 0)
1447 { 1447 {
1448 NextOwnerMask &= ~mask; 1448 NextOwnerMask &= ~mask;
1449 } 1449 }
@@ -1453,7 +1453,6 @@ namespace OpenSim.Region.Environment.Scenes
1453 } 1453 }
1454 SendFullUpdateToAllClients(); 1454 SendFullUpdateToAllClients();
1455 } 1455 }
1456
1457 } 1456 }
1458 } 1457 }
1459 1458
@@ -1482,7 +1481,8 @@ namespace OpenSim.Region.Environment.Scenes
1482 for (int i = 0; i < avatars.Count; i++) 1481 for (int i = 0; i < avatars.Count; i++)
1483 { 1482 {
1484 // Ugly reference :( 1483 // Ugly reference :(
1485 m_parentGroup.SendPartFullUpdate(avatars[i].ControllingClient, this, avatars[i].GenerateClientFlags(this.UUID)); 1484 m_parentGroup.SendPartFullUpdate(avatars[i].ControllingClient, this,
1485 avatars[i].GenerateClientFlags(UUID));
1486 } 1486 }
1487 } 1487 }
1488 1488
@@ -1515,19 +1515,19 @@ namespace OpenSim.Region.Environment.Scenes
1515 { 1515 {
1516 LLQuaternion lRot; 1516 LLQuaternion lRot;
1517 lRot = RotationOffset; 1517 lRot = RotationOffset;
1518 clientFlags &= ~(uint)LLObject.ObjectFlags.CreateSelected; 1518 clientFlags &= ~(uint) LLObject.ObjectFlags.CreateSelected;
1519 1519
1520 if (remoteClient.AgentId == OwnerID) 1520 if (remoteClient.AgentId == OwnerID)
1521 { 1521 {
1522 if ((uint)(m_flags & LLObject.ObjectFlags.CreateSelected) != 0) 1522 if ((uint) (m_flags & LLObject.ObjectFlags.CreateSelected) != 0)
1523 { 1523 {
1524 clientFlags |= (uint)LLObject.ObjectFlags.CreateSelected; 1524 clientFlags |= (uint) LLObject.ObjectFlags.CreateSelected;
1525 m_flags &= ~LLObject.ObjectFlags.CreateSelected; 1525 m_flags &= ~LLObject.ObjectFlags.CreateSelected;
1526 } 1526 }
1527 } 1527 }
1528 1528
1529 1529
1530 byte[] color = new byte[] { m_color.R, m_color.G, m_color.B, m_color.A }; 1530 byte[] color = new byte[] {m_color.R, m_color.G, m_color.B, m_color.A};
1531 remoteClient.SendPrimitiveToClient(m_regionHandle, 64096, LocalID, m_shape, lPos, clientFlags, m_uuid, 1531 remoteClient.SendPrimitiveToClient(m_regionHandle, 64096, LocalID, m_shape, lPos, clientFlags, m_uuid,
1532 OwnerID, 1532 OwnerID,
1533 m_text, color, ParentID, m_particleSystem, lRot, m_clickAction); 1533 m_text, color, ParentID, m_particleSystem, lRot, m_clickAction);
@@ -1574,26 +1574,28 @@ namespace OpenSim.Region.Environment.Scenes
1574 LLVector3 lPos; 1574 LLVector3 lPos;
1575 lPos = OffsetPosition; 1575 lPos = OffsetPosition;
1576 LLQuaternion mRot = RotationOffset; 1576 LLQuaternion mRot = RotationOffset;
1577 if ((ObjectFlags & (uint)LLObject.ObjectFlags.Physics) == 0) 1577 if ((ObjectFlags & (uint) LLObject.ObjectFlags.Physics) == 0)
1578 { 1578 {
1579 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot); 1579 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot);
1580 } 1580 }
1581 else 1581 else
1582 { 1582 {
1583 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot, Velocity, RotationalVelocity); 1583 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot, Velocity,
1584 RotationalVelocity);
1584 } 1585 }
1585 } 1586 }
1586 1587
1587 public void SendTerseUpdateToClient(IClientAPI remoteClient, LLVector3 lPos) 1588 public void SendTerseUpdateToClient(IClientAPI remoteClient, LLVector3 lPos)
1588 { 1589 {
1589 LLQuaternion mRot = RotationOffset; 1590 LLQuaternion mRot = RotationOffset;
1590 if ((ObjectFlags & (uint)LLObject.ObjectFlags.Physics) == 0) 1591 if ((ObjectFlags & (uint) LLObject.ObjectFlags.Physics) == 0)
1591 { 1592 {
1592 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot); 1593 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot);
1593 } 1594 }
1594 else 1595 else
1595 { 1596 {
1596 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot, Velocity, RotationalVelocity); 1597 remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot, Velocity,
1598 RotationalVelocity);
1597 //System.Console.WriteLine("RVel:" + RotationalVelocity); 1599 //System.Console.WriteLine("RVel:" + RotationalVelocity);
1598 } 1600 }
1599 } 1601 }
@@ -1603,13 +1605,16 @@ namespace OpenSim.Region.Environment.Scenes
1603 public virtual void UpdateMovement() 1605 public virtual void UpdateMovement()
1604 { 1606 {
1605 } 1607 }
1608
1606 #region Events 1609 #region Events
1610
1607 public void PhysicsRequestingTerseUpdate() 1611 public void PhysicsRequestingTerseUpdate()
1608 { 1612 {
1609 ScheduleTerseUpdate(); 1613 ScheduleTerseUpdate();
1610 1614
1611 //SendTerseUpdateToAllClients(); 1615 //SendTerseUpdateToAllClients();
1612 } 1616 }
1617
1613 #endregion 1618 #endregion
1614 1619
1615 public void PhysicsOutOfBounds(PhysicsVector pos) 1620 public void PhysicsOutOfBounds(PhysicsVector pos)
@@ -1626,10 +1631,10 @@ namespace OpenSim.Region.Environment.Scenes
1626 1631
1627 public void SetText(string text, Vector3 color, double alpha) 1632 public void SetText(string text, Vector3 color, double alpha)
1628 { 1633 {
1629 Color = Color.FromArgb(0xff - (int)(alpha * 0xff), 1634 Color = Color.FromArgb(0xff - (int) (alpha*0xff),
1630 (int)(color.x * 0xff), 1635 (int) (color.x*0xff),
1631 (int)(color.y * 0xff), 1636 (int) (color.y*0xff),
1632 (int)(color.z * 0xff)); 1637 (int) (color.z*0xff));
1633 Text = text; 1638 Text = text;
1634 } 1639 }
1635 1640
@@ -1725,7 +1730,6 @@ namespace OpenSim.Region.Environment.Scenes
1725 public TaskInventoryItem() 1730 public TaskInventoryItem()
1726 { 1731 {
1727 } 1732 }
1728
1729 } 1733 }
1730 } 1734 }
1731} 1735} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 9a937a2..9454de0 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -32,7 +32,6 @@ using libsecondlife;
32using libsecondlife.Packets; 32using libsecondlife.Packets;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Console; 34using OpenSim.Framework.Console;
35using OpenSim.Framework.Communications;
36using OpenSim.Region.Environment.Types; 35using OpenSim.Region.Environment.Types;
37using OpenSim.Region.Physics.Manager; 36using OpenSim.Region.Physics.Manager;
38 37
@@ -60,14 +59,14 @@ namespace OpenSim.Region.Environment.Scenes
60 private bool m_setAlwaysRun = false; 59 private bool m_setAlwaysRun = false;
61 60
62 private Quaternion m_bodyRot; 61 private Quaternion m_bodyRot;
63 62
64 public bool IsRestrictedToRegion = false; 63 public bool IsRestrictedToRegion = false;
65 64
66 // Agent moves with a PID controller causing a force to be exerted. 65 // Agent moves with a PID controller causing a force to be exerted.
67 private bool m_newForce = false; 66 private bool m_newForce = false;
68 private bool m_newCoarseLocations = true; 67 private bool m_newCoarseLocations = true;
69 private bool m_gotAllObjectsInScene = false; 68 private bool m_gotAllObjectsInScene = false;
70 69
71 // Default AV Height 70 // Default AV Height
72 private float m_avHeight = 127.0f; 71 private float m_avHeight = 127.0f;
73 72
@@ -76,7 +75,7 @@ namespace OpenSim.Region.Environment.Scenes
76 75
77 private readonly Vector3[] Dir_Vectors = new Vector3[6]; 76 private readonly Vector3[] Dir_Vectors = new Vector3[6];
78 private LLVector3 lastPhysPos = new LLVector3(); 77 private LLVector3 lastPhysPos = new LLVector3();
79 78
80 // Position of agent's camera in world (region cordinates) 79 // Position of agent's camera in world (region cordinates)
81 protected Vector3 m_CameraCenter = new Vector3(0, 0, 0); 80 protected Vector3 m_CameraCenter = new Vector3(0, 0, 0);
82 81
@@ -85,17 +84,18 @@ namespace OpenSim.Region.Environment.Scenes
85 protected Vector3 m_CameraAtAxis = new Vector3(0, 0, 0); 84 protected Vector3 m_CameraAtAxis = new Vector3(0, 0, 0);
86 protected Vector3 m_CameraLeftAxis = new Vector3(0, 0, 0); 85 protected Vector3 m_CameraLeftAxis = new Vector3(0, 0, 0);
87 protected Vector3 m_CameraUpAxis = new Vector3(0, 0, 0); 86 protected Vector3 m_CameraUpAxis = new Vector3(0, 0, 0);
88 private uint m_AgentControlFlags = (uint)0; 87 private uint m_AgentControlFlags = (uint) 0;
89 private LLQuaternion m_headrotation = new LLQuaternion(); 88 private LLQuaternion m_headrotation = new LLQuaternion();
90 private byte m_state = (byte)0; 89 private byte m_state = (byte) 0;
91 90
92 // Agent's Draw distance. 91 // Agent's Draw distance.
93 protected float m_DrawDistance = 0f; 92 protected float m_DrawDistance = 0f;
94 93
95 protected AvatarAppearance m_appearance; 94 protected AvatarAppearance m_appearance;
96 95
97 private readonly List<ulong> m_knownChildRegions = new List<ulong>(); //neighbouring regions we have enabled a child agent in 96 private readonly List<ulong> m_knownChildRegions = new List<ulong>();
98 97 //neighbouring regions we have enabled a child agent in
98
99 99
100 /// <summary> 100 /// <summary>
101 /// Implemented Control Flags 101 /// Implemented Control Flags
@@ -172,6 +172,7 @@ namespace OpenSim.Region.Environment.Scenes
172 } 172 }
173 173
174 protected bool m_allowMovement = true; 174 protected bool m_allowMovement = true;
175
175 public bool AllowMovement 176 public bool AllowMovement
176 { 177 {
177 get { return m_allowMovement; } 178 get { return m_allowMovement; }
@@ -181,8 +182,8 @@ namespace OpenSim.Region.Environment.Scenes
181 /// <summary> 182 /// <summary>
182 /// This works out to be the ClientView object associated with this avatar, or it's UDP connection manager 183 /// This works out to be the ClientView object associated with this avatar, or it's UDP connection manager
183 /// </summary> 184 /// </summary>
184
185 private readonly IClientAPI m_controllingClient; 185 private readonly IClientAPI m_controllingClient;
186
186 protected PhysicsActor m_physicsActor; 187 protected PhysicsActor m_physicsActor;
187 188
188 public IClientAPI ControllingClient 189 public IClientAPI ControllingClient
@@ -228,6 +229,7 @@ namespace OpenSim.Region.Environment.Scenes
228 m_pos = value; 229 m_pos = value;
229 } 230 }
230 } 231 }
232
231 /// <summary> 233 /// <summary>
232 /// Current Velocity of the avatar. 234 /// Current Velocity of the avatar.
233 /// </summary> 235 /// </summary>
@@ -294,6 +296,7 @@ namespace OpenSim.Region.Environment.Scenes
294 { 296 {
295 get { return m_knownChildRegions; } 297 get { return m_knownChildRegions; }
296 } 298 }
299
297 #endregion 300 #endregion
298 301
299 #region Constructor(s) 302 #region Constructor(s)
@@ -336,7 +339,7 @@ namespace OpenSim.Region.Environment.Scenes
336 public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance) 339 public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance)
337 : this(client, world, reginfo) 340 : this(client, world, reginfo)
338 { 341 {
339 m_appearance = appearance; 342 m_appearance = appearance;
340 } 343 }
341 344
342 private void RegisterToEvents() 345 private void RegisterToEvents()
@@ -366,6 +369,7 @@ namespace OpenSim.Region.Environment.Scenes
366 Dir_Vectors[5] = new Vector3(0, 0, -1); //DOWN 369 Dir_Vectors[5] = new Vector3(0, 0, -1); //DOWN
367 Dir_Vectors[5] = new Vector3(0, 0, -0.5f); //DOWN_Nudge 370 Dir_Vectors[5] = new Vector3(0, 0, -0.5f); //DOWN_Nudge
368 } 371 }
372
369 #endregion 373 #endregion
370 374
371 public void QueuePartForUpdate(SceneObjectPart part) 375 public void QueuePartForUpdate(SceneObjectPart part)
@@ -381,7 +385,7 @@ namespace OpenSim.Region.Environment.Scenes
381 385
382 public uint GenerateClientFlags(LLUUID ObjectID) 386 public uint GenerateClientFlags(LLUUID ObjectID)
383 { 387 {
384 return m_scene.PermissionsMngr.GenerateClientFlags(this.m_uuid, ObjectID); 388 return m_scene.PermissionsMngr.GenerateClientFlags(m_uuid, ObjectID);
385 } 389 }
386 390
387 public void SendPrimUpdates() 391 public void SendPrimUpdates()
@@ -461,6 +465,7 @@ namespace OpenSim.Region.Environment.Scenes
461 } 465 }
462 466
463 #region Status Methods 467 #region Status Methods
468
464 /// <summary> 469 /// <summary>
465 /// This turns a child agent, into a root agent 470 /// This turns a child agent, into a root agent
466 /// This is called when an agent teleports into a region, or if an 471 /// This is called when an agent teleports into a region, or if an
@@ -531,6 +536,7 @@ namespace OpenSim.Region.Environment.Scenes
531 public void StopMovement() 536 public void StopMovement()
532 { 537 {
533 } 538 }
539
534 public void StopFlying() 540 public void StopFlying()
535 { 541 {
536 // It turns out to get the agent to stop flying, you have to feed it stop flying velocities 542 // It turns out to get the agent to stop flying, you have to feed it stop flying velocities
@@ -560,9 +566,11 @@ namespace OpenSim.Region.Environment.Scenes
560 m_knownChildRegions.Remove(regionHandle); 566 m_knownChildRegions.Remove(regionHandle);
561 } 567 }
562 } 568 }
569
563 #endregion 570 #endregion
564 571
565 #region Event Handlers 572 #region Event Handlers
573
566 /// <summary> 574 /// <summary>
567 /// Sets avatar height in the phyiscs plugin 575 /// Sets avatar height in the phyiscs plugin
568 /// </summary> 576 /// </summary>
@@ -603,7 +611,6 @@ namespace OpenSim.Region.Environment.Scenes
603 /// </summary> 611 /// </summary>
604 public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdatePacket agentData) 612 public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdatePacket agentData)
605 { 613 {
606
607 //if (m_isChildAgent) 614 //if (m_isChildAgent)
608 //{ 615 //{
609 // // Console.WriteLine("DEBUG: HandleAgentUpdate: child agent"); 616 // // Console.WriteLine("DEBUG: HandleAgentUpdate: child agent");
@@ -639,7 +646,7 @@ namespace OpenSim.Region.Environment.Scenes
639 // The Agent's Draw distance setting 646 // The Agent's Draw distance setting
640 m_DrawDistance = agentData.AgentData.Far; 647 m_DrawDistance = agentData.AgentData.Far;
641 648
642 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_STAND_UP) != 0) 649 if ((flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_STAND_UP) != 0)
643 { 650 {
644 StandUp(); 651 StandUp();
645 } 652 }
@@ -649,7 +656,7 @@ namespace OpenSim.Region.Environment.Scenes
649 return; 656 return;
650 } 657 }
651 658
652 if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0) 659 if ((flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0)
653 { 660 {
654 // TODO: This doesn't quite work yet -- probably a parent ID problem 661 // TODO: This doesn't quite work yet -- probably a parent ID problem
655 // m_parentID = (what should this be?) 662 // m_parentID = (what should this be?)
@@ -672,7 +679,7 @@ namespace OpenSim.Region.Environment.Scenes
672 Quaternion q = new Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z); 679 Quaternion q = new Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z);
673 bool oldflying = PhysicsActor.Flying; 680 bool oldflying = PhysicsActor.Flying;
674 681
675 PhysicsActor.Flying = ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); 682 PhysicsActor.Flying = ((flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0);
676 if (PhysicsActor.Flying != oldflying) 683 if (PhysicsActor.Flying != oldflying)
677 { 684 {
678 update_movementflag = true; 685 update_movementflag = true;
@@ -686,23 +693,23 @@ namespace OpenSim.Region.Environment.Scenes
686 693
687 if (m_parentID == 0) 694 if (m_parentID == 0)
688 { 695 {
689 foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof(Dir_ControlFlags))) 696 foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags)))
690 { 697 {
691 if ((flags & (uint)DCF) != 0) 698 if ((flags & (uint) DCF) != 0)
692 { 699 {
693 DCFlagKeyPressed = true; 700 DCFlagKeyPressed = true;
694 agent_control_v3 += Dir_Vectors[i]; 701 agent_control_v3 += Dir_Vectors[i];
695 if ((m_movementflag & (uint)DCF) == 0) 702 if ((m_movementflag & (uint) DCF) == 0)
696 { 703 {
697 m_movementflag += (byte)(uint)DCF; 704 m_movementflag += (byte) (uint) DCF;
698 update_movementflag = true; 705 update_movementflag = true;
699 } 706 }
700 } 707 }
701 else 708 else
702 { 709 {
703 if ((m_movementflag & (uint)DCF) != 0) 710 if ((m_movementflag & (uint) DCF) != 0)
704 { 711 {
705 m_movementflag -= (byte)(uint)DCF; 712 m_movementflag -= (byte) (uint) DCF;
706 update_movementflag = true; 713 update_movementflag = true;
707 } 714 }
708 } 715 }
@@ -719,8 +726,9 @@ namespace OpenSim.Region.Environment.Scenes
719 if (m_physicsActor.Flying) 726 if (m_physicsActor.Flying)
720 { 727 {
721 // Are the landing controls requirements filled? 728 // Are the landing controls requirements filled?
722 bool controlland = (((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); 729 bool controlland = (((flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) ||
723 730 ((flags & (uint) AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0));
731
724 // Are the collision requirements fulfilled? 732 // Are the collision requirements fulfilled?
725 bool colliding = (m_physicsActor.IsColliding == true); 733 bool colliding = (m_physicsActor.IsColliding == true);
726 734
@@ -748,7 +756,6 @@ namespace OpenSim.Region.Environment.Scenes
748 { 756 {
749 if (m_parentID != 0) 757 if (m_parentID != 0)
750 { 758 {
751
752 SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); 759 SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID);
753 if (part != null) 760 if (part != null)
754 { 761 {
@@ -757,7 +764,7 @@ namespace OpenSim.Region.Environment.Scenes
757 part.SetAvatarOnSitTarget(LLUUID.Zero); 764 part.SetAvatarOnSitTarget(LLUUID.Zero);
758 } 765 }
759 766
760 m_pos += m_parentPosition + new LLVector3(0.0f, 0.0f, 2.0f * m_sitAvatarHeight); 767 m_pos += m_parentPosition + new LLVector3(0.0f, 0.0f, 2.0f*m_sitAvatarHeight);
761 m_parentPosition = new LLVector3(); 768 m_parentPosition = new LLVector3();
762 769
763 if (m_physicsActor == null) 770 if (m_physicsActor == null)
@@ -778,14 +785,14 @@ namespace OpenSim.Region.Environment.Scenes
778 785
779 bool autopilot = true; 786 bool autopilot = true;
780 LLVector3 pos = new LLVector3(); 787 LLVector3 pos = new LLVector3();
781 LLQuaternion sitOrientation = new LLQuaternion(0,0,0,1); 788 LLQuaternion sitOrientation = new LLQuaternion(0, 0, 0, 1);
782 789
783 SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); 790 SceneObjectPart part = m_scene.GetSceneObjectPart(targetID);
784 if (part != null) 791 if (part != null)
785 { 792 {
786 // TODO: determine position to sit at based on scene geometry; don't trust offset from client 793 // TODO: determine position to sit at based on scene geometry; don't trust offset from client
787 // see http://wiki.secondlife.com/wiki/User:Andrew_Linden/Office_Hours/2007_11_06 for details on how LL does it 794 // see http://wiki.secondlife.com/wiki/User:Andrew_Linden/Office_Hours/2007_11_06 for details on how LL does it
788 795
789 796
790 // Is a sit target available? 797 // Is a sit target available?
791 Vector3 avSitOffSet = part.GetSitTargetPosition(); 798 Vector3 avSitOffSet = part.GetSitTargetPosition();
@@ -793,15 +800,17 @@ namespace OpenSim.Region.Environment.Scenes
793 LLUUID avOnTargetAlready = part.GetAvatarOnSitTarget(); 800 LLUUID avOnTargetAlready = part.GetAvatarOnSitTarget();
794 801
795 bool SitTargetUnOccupied = (!(avOnTargetAlready != LLUUID.Zero)); 802 bool SitTargetUnOccupied = (!(avOnTargetAlready != LLUUID.Zero));
796 bool SitTargetisSet = (!(avSitOffSet.x == 0 && avSitOffSet.y == 0 && avSitOffSet.z == 0 && avSitOrientation.w == 0 && avSitOrientation.x == 0 && avSitOrientation.y == 0 && avSitOrientation.z == 1)); 803 bool SitTargetisSet =
804 (!(avSitOffSet.x == 0 && avSitOffSet.y == 0 && avSitOffSet.z == 0 && avSitOrientation.w == 0 &&
805 avSitOrientation.x == 0 && avSitOrientation.y == 0 && avSitOrientation.z == 1));
797 806
798 if (SitTargetisSet && SitTargetUnOccupied) 807 if (SitTargetisSet && SitTargetUnOccupied)
799 { 808 {
800 part.SetAvatarOnSitTarget(UUID); 809 part.SetAvatarOnSitTarget(UUID);
801 offset = new LLVector3(avSitOffSet.x,avSitOffSet.y,avSitOffSet.z); 810 offset = new LLVector3(avSitOffSet.x, avSitOffSet.y, avSitOffSet.z);
802 sitOrientation = new LLQuaternion(avSitOrientation.w,avSitOrientation.x,avSitOrientation.y,avSitOrientation.z); 811 sitOrientation =
812 new LLQuaternion(avSitOrientation.w, avSitOrientation.x, avSitOrientation.y, avSitOrientation.z);
803 autopilot = false; 813 autopilot = false;
804
805 } 814 }
806 815
807 816
@@ -817,43 +826,37 @@ namespace OpenSim.Region.Environment.Scenes
817 826
818 if (autopilot) 827 if (autopilot)
819 { 828 {
820
821 if (Util.GetDistanceTo(AbsolutePosition, pos) < 4.5) 829 if (Util.GetDistanceTo(AbsolutePosition, pos) < 4.5)
822 { 830 {
823 autopilot = false; 831 autopilot = false;
824 832
825 RemoveFromPhysicalScene(); 833 RemoveFromPhysicalScene();
826 AbsolutePosition = pos + new LLVector3(0.0f, 0.0f, m_sitAvatarHeight); 834 AbsolutePosition = pos + new LLVector3(0.0f, 0.0f, m_sitAvatarHeight);
827
828 } 835 }
829 else 836 else
830 { 837 {
831
832 } 838 }
833 } 839 }
834 else 840 else
835 { 841 {
836 RemoveFromPhysicalScene(); 842 RemoveFromPhysicalScene();
837
838
839 } 843 }
840 } // Physactor != null 844 } // Physactor != null
841 } // part != null 845 } // part != null
842 846
843 847
844 avatarSitResponse.SitTransform.AutoPilot = autopilot; 848 avatarSitResponse.SitTransform.AutoPilot = autopilot;
845 avatarSitResponse.SitTransform.SitPosition = offset; 849 avatarSitResponse.SitTransform.SitPosition = offset;
846 avatarSitResponse.SitTransform.SitRotation = sitOrientation; 850 avatarSitResponse.SitTransform.SitRotation = sitOrientation;
847 851
848 remoteClient.OutPacket(avatarSitResponse, ThrottleOutPacketType.Task); 852 remoteClient.OutPacket(avatarSitResponse, ThrottleOutPacketType.Task);
849 853
850 // This calls HandleAgentSit twice, once from here, and the client calls 854 // This calls HandleAgentSit twice, once from here, and the client calls
851 // HandleAgentSit itself after it gets to the location 855 // HandleAgentSit itself after it gets to the location
852 // It doesn't get to the location until we've moved them there though 856 // It doesn't get to the location until we've moved them there though
853 // which happens in HandleAgentSit :P 857 // which happens in HandleAgentSit :P
854 if (!autopilot) 858 if (!autopilot)
855 HandleAgentSit(remoteClient, UUID); 859 HandleAgentSit(remoteClient, UUID);
856
857 } 860 }
858 861
859 public void HandleAgentRequestSit(IClientAPI remoteClient, LLUUID agentID, LLUUID targetID, LLVector3 offset) 862 public void HandleAgentRequestSit(IClientAPI remoteClient, LLUUID agentID, LLUUID targetID, LLVector3 offset)
@@ -863,7 +866,6 @@ namespace OpenSim.Region.Environment.Scenes
863 StandUp(); 866 StandUp();
864 } 867 }
865 868
866
867 869
868 SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); 870 SceneObjectPart part = m_scene.GetSceneObjectPart(targetID);
869 871
@@ -919,7 +921,6 @@ namespace OpenSim.Region.Environment.Scenes
919 // This may seem stupid, but Our Full updates don't send avatar rotation :P 921 // This may seem stupid, but Our Full updates don't send avatar rotation :P
920 // So we're also sending a terse update (which has avatar rotation) 922 // So we're also sending a terse update (which has avatar rotation)
921 SendTerseUpdateToAllClients(); 923 SendTerseUpdateToAllClients();
922
923 } 924 }
924 925
925 /// <summary> 926 /// <summary>
@@ -1003,7 +1004,7 @@ namespace OpenSim.Region.Environment.Scenes
1003 // We are flying 1004 // We are flying
1004 SetMovementAnimation(Animations.AnimsLLUUID["FLY"], 1); 1005 SetMovementAnimation(Animations.AnimsLLUUID["FLY"], 1);
1005 } 1006 }
1006 else if (((m_movementflag & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) && 1007 else if (((m_movementflag & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) &&
1007 PhysicsActor.IsColliding) 1008 PhysicsActor.IsColliding)
1008 { 1009 {
1009 // Client is pressing the page down button and moving and is colliding with something 1010 // Client is pressing the page down button and moving and is colliding with something
@@ -1014,7 +1015,8 @@ namespace OpenSim.Region.Environment.Scenes
1014 // Client is moving and falling at a velocity greater then 6 meters per unit 1015 // Client is moving and falling at a velocity greater then 6 meters per unit
1015 SetMovementAnimation(Animations.AnimsLLUUID["FALLDOWN"], 1); 1016 SetMovementAnimation(Animations.AnimsLLUUID["FALLDOWN"], 1);
1016 } 1017 }
1017 else if (!PhysicsActor.IsColliding && Velocity.Z > 0 && (m_movementflag & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0) 1018 else if (!PhysicsActor.IsColliding && Velocity.Z > 0 &&
1019 (m_movementflag & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0)
1018 { 1020 {
1019 // Client is moving, and colliding and pressing the page up button but isn't flying 1021 // Client is moving, and colliding and pressing the page up button but isn't flying
1020 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1); 1022 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1);
@@ -1034,7 +1036,7 @@ namespace OpenSim.Region.Environment.Scenes
1034 { 1036 {
1035 // Not moving 1037 // Not moving
1036 1038
1037 if (((m_movementflag & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) && 1039 if (((m_movementflag & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) &&
1038 PhysicsActor.IsColliding) 1040 PhysicsActor.IsColliding)
1039 { 1041 {
1040 // Client pressing the page down button 1042 // Client pressing the page down button
@@ -1045,7 +1047,8 @@ namespace OpenSim.Region.Environment.Scenes
1045 // Not colliding and not flying, and we're falling at high speed 1047 // Not colliding and not flying, and we're falling at high speed
1046 SetMovementAnimation(Animations.AnimsLLUUID["FALLDOWN"], 1); 1048 SetMovementAnimation(Animations.AnimsLLUUID["FALLDOWN"], 1);
1047 } 1049 }
1048 else if (!PhysicsActor.IsColliding && Velocity.Z > 0 && !m_physicsActor.Flying && (m_movementflag & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0) 1050 else if (!PhysicsActor.IsColliding && Velocity.Z > 0 && !m_physicsActor.Flying &&
1051 (m_movementflag & (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0)
1049 { 1052 {
1050 // This is the standing jump 1053 // This is the standing jump
1051 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1); 1054 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1);
@@ -1063,6 +1066,7 @@ namespace OpenSim.Region.Environment.Scenes
1063 } 1066 }
1064 } 1067 }
1065 } 1068 }
1069
1066 /// <summary> 1070 /// <summary>
1067 /// Adds a new movement 1071 /// Adds a new movement
1068 /// </summary> 1072 /// </summary>
@@ -1075,10 +1079,10 @@ namespace OpenSim.Region.Environment.Scenes
1075 } 1079 }
1076 m_rotation = rotation; 1080 m_rotation = rotation;
1077 NewForce newVelocity = new NewForce(); 1081 NewForce newVelocity = new NewForce();
1078 Vector3 direc = rotation * vec; 1082 Vector3 direc = rotation*vec;
1079 direc.Normalize(); 1083 direc.Normalize();
1080 1084
1081 direc *= 0.03f * 128f; 1085 direc *= 0.03f*128f;
1082 if (m_physicsActor.Flying) 1086 if (m_physicsActor.Flying)
1083 { 1087 {
1084 direc *= 4; 1088 direc *= 4;
@@ -1108,7 +1112,6 @@ namespace OpenSim.Region.Environment.Scenes
1108 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1); 1112 SetMovementAnimation(Animations.AnimsLLUUID["JUMP"], 1);
1109 } 1113 }
1110 } 1114 }
1111
1112 } 1115 }
1113 1116
1114 newVelocity.X = direc.x; 1117 newVelocity.X = direc.x;
@@ -1173,7 +1176,7 @@ namespace OpenSim.Region.Environment.Scenes
1173 { 1176 {
1174 LLVector3 pos = m_pos; 1177 LLVector3 pos = m_pos;
1175 LLVector3 vel = Velocity; 1178 LLVector3 vel = Velocity;
1176 LLQuaternion rot=new LLQuaternion(m_bodyRot.x, m_bodyRot.y, m_bodyRot.z, m_bodyRot.w); 1179 LLQuaternion rot = new LLQuaternion(m_bodyRot.x, m_bodyRot.y, m_bodyRot.z, m_bodyRot.w);
1177 remoteClient.SendAvatarTerseUpdate(m_regionHandle, 64096, LocalId, new LLVector3(pos.X, pos.Y, pos.Z), 1180 remoteClient.SendAvatarTerseUpdate(m_regionHandle, 64096, LocalId, new LLVector3(pos.X, pos.Y, pos.Z),
1178 new LLVector3(vel.X, vel.Y, vel.Z), rot); 1181 new LLVector3(vel.X, vel.Y, vel.Z), rot);
1179 } 1182 }
@@ -1213,7 +1216,8 @@ namespace OpenSim.Region.Environment.Scenes
1213 public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar) 1216 public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar)
1214 { 1217 {
1215 remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, 1218 remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid,
1216 LocalId, m_pos, m_appearance.TextureEntry.ToBytes(), m_parentID); 1219 LocalId, m_pos, m_appearance.TextureEntry.ToBytes(),
1220 m_parentID);
1217 } 1221 }
1218 1222
1219 /// <summary> 1223 /// <summary>
@@ -1303,10 +1307,8 @@ namespace OpenSim.Region.Environment.Scenes
1303 /// <param name="seqs"></param> 1307 /// <param name="seqs"></param>
1304 public void SendAnimPack(LLUUID[] animations, int[] seqs) 1308 public void SendAnimPack(LLUUID[] animations, int[] seqs)
1305 { 1309 {
1306 m_scene.Broadcast(delegate(IClientAPI client) 1310 m_scene.Broadcast(
1307 { 1311 delegate(IClientAPI client) { client.SendAnimations(animations, seqs, m_controllingClient.AgentId); });
1308 client.SendAnimations(animations, seqs, m_controllingClient.AgentId);
1309 });
1310 } 1312 }
1311 1313
1312 /// <summary> 1314 /// <summary>
@@ -1320,6 +1322,7 @@ namespace OpenSim.Region.Environment.Scenes
1320 #endregion 1322 #endregion
1321 1323
1322 #region Significant Movement Method 1324 #region Significant Movement Method
1325
1323 /// <summary> 1326 /// <summary>
1324 /// This checks for a significant movement and sends a courselocationchange update 1327 /// This checks for a significant movement and sends a courselocationchange update
1325 /// </summary> 1328 /// </summary>
@@ -1349,9 +1352,9 @@ namespace OpenSim.Region.Environment.Scenes
1349 LLVector3 vel = Velocity; 1352 LLVector3 vel = Velocity;
1350 1353
1351 float timeStep = 0.1f; 1354 float timeStep = 0.1f;
1352 pos2.X = pos2.X + (vel.X * timeStep); 1355 pos2.X = pos2.X + (vel.X*timeStep);
1353 pos2.Y = pos2.Y + (vel.Y * timeStep); 1356 pos2.Y = pos2.Y + (vel.Y*timeStep);
1354 pos2.Z = pos2.Z + (vel.Z * timeStep); 1357 pos2.Z = pos2.Z + (vel.Z*timeStep);
1355 1358
1356 if ((pos2.X < 0) || (pos2.X > 256)) 1359 if ((pos2.X < 0) || (pos2.X > 256))
1357 { 1360 {
@@ -1411,7 +1414,7 @@ namespace OpenSim.Region.Environment.Scenes
1411 } 1414 }
1412 1415
1413 LLVector3 vel = m_velocity; 1416 LLVector3 vel = m_velocity;
1414 ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury * 256)); 1417 ulong neighbourHandle = Helpers.UIntsToLong((uint) (neighbourx*256), (uint) (neighboury*256));
1415 SimpleRegionInfo neighbourRegion = m_scene.RequestNeighbouringRegionInfo(neighbourHandle); 1418 SimpleRegionInfo neighbourRegion = m_scene.RequestNeighbouringRegionInfo(neighbourHandle);
1416 if (neighbourRegion != null) 1419 if (neighbourRegion != null)
1417 { 1420 {
@@ -1432,6 +1435,7 @@ namespace OpenSim.Region.Environment.Scenes
1432 } 1435 }
1433 1436
1434 #endregion 1437 #endregion
1438
1435 /// <summary> 1439 /// <summary>
1436 /// This allows the Sim owner the abiility to kick users from their sim currently. 1440 /// This allows the Sim owner the abiility to kick users from their sim currently.
1437 /// It tells the client that the agent has permission to do so. 1441 /// It tells the client that the agent has permission to do so.
@@ -1445,7 +1449,7 @@ namespace OpenSim.Region.Environment.Scenes
1445 adb.AgentID = agentID; 1449 adb.AgentID = agentID;
1446 adb.SessionID = sessionID; // More security 1450 adb.SessionID = sessionID; // More security
1447 1451
1448 gdb.GodLevel = (byte)100; 1452 gdb.GodLevel = (byte) 100;
1449 gdb.Token = token; 1453 gdb.Token = token;
1450 //respondPacket.AgentData = (GrantGodlikePowersPacket.AgentDataBlock)ablock; 1454 //respondPacket.AgentData = (GrantGodlikePowersPacket.AgentDataBlock)ablock;
1451 respondPacket.GrantData = gdb; 1455 respondPacket.GrantData = gdb;
@@ -1462,7 +1466,8 @@ namespace OpenSim.Region.Environment.Scenes
1462 // 1466 //
1463 m_DrawDistance = cAgentData.drawdistance; 1467 m_DrawDistance = cAgentData.drawdistance;
1464 m_pos = new LLVector3(cAgentData.Position.x, cAgentData.Position.y, cAgentData.Position.z); 1468 m_pos = new LLVector3(cAgentData.Position.x, cAgentData.Position.y, cAgentData.Position.z);
1465 m_CameraCenter = new Vector3(cAgentData.cameraPosition.x, cAgentData.cameraPosition.y, cAgentData.cameraPosition.z); 1469 m_CameraCenter =
1470 new Vector3(cAgentData.cameraPosition.x, cAgentData.cameraPosition.y, cAgentData.cameraPosition.z);
1466 m_godlevel = cAgentData.godlevel; 1471 m_godlevel = cAgentData.godlevel;
1467 ControllingClient.SetChildAgentThrottle(cAgentData.throttles); 1472 ControllingClient.SetChildAgentThrottle(cAgentData.throttles);
1468 //cAgentData.AVHeight; 1473 //cAgentData.AVHeight;
@@ -1555,6 +1560,7 @@ namespace OpenSim.Region.Environment.Scenes
1555 m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; 1560 m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients;
1556 m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; 1561 m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate;
1557 } 1562 }
1563
1558 // Event called by the physics plugin to tell the avatar about a collision. 1564 // Event called by the physics plugin to tell the avatar about a collision.
1559 private void PhysicsCollisionUpdate(EventArgs e) 1565 private void PhysicsCollisionUpdate(EventArgs e)
1560 { 1566 {
@@ -1567,4 +1573,4 @@ namespace OpenSim.Region.Environment.Scenes
1567 RemoveFromPhysicalScene(); 1573 RemoveFromPhysicalScene();
1568 } 1574 }
1569 } 1575 }
1570} 1576} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs
index aeb9c61..8c4a951 100644
--- a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs
@@ -28,17 +28,16 @@
28 28
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text;
32using System.Xml;
33using System.IO; 31using System.IO;
34using libsecondlife; 32using System.Xml;
35using Axiom.Math; 33using Axiom.Math;
34using libsecondlife;
36using OpenSim.Framework; 35using OpenSim.Framework;
37using OpenSim.Region.Physics.Manager; 36using OpenSim.Region.Physics.Manager;
38 37
39namespace OpenSim.Region.Environment.Scenes 38namespace OpenSim.Region.Environment.Scenes
40{ 39{
41 public class SceneXmlLoader // can move to a module? 40 public class SceneXmlLoader // can move to a module?
42 { 41 {
43 protected InnerScene m_innerScene; 42 protected InnerScene m_innerScene;
44 protected RegionInfo m_regInfo; 43 protected RegionInfo m_regInfo;
@@ -78,8 +77,9 @@ namespace OpenSim.Region.Environment.Scenes
78 SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); 77 SceneObjectPart rootPart = obj.GetChildPart(obj.UUID);
79 // Apply loadOffsets for load/import and move combinations 78 // Apply loadOffsets for load/import and move combinations
80 rootPart.GroupPosition = rootPart.AbsolutePosition + loadOffset; 79 rootPart.GroupPosition = rootPart.AbsolutePosition + loadOffset;
81 bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_parentScene.m_physicalPrim); 80 bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) &&
82 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) 81 m_parentScene.m_physicalPrim);
82 if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
83 { 83 {
84 rootPart.PhysActor = m_innerScene.PhysicsScene.AddPrimShape( 84 rootPart.PhysActor = m_innerScene.PhysicsScene.AddPrimShape(
85 rootPart.Name, 85 rootPart.Name,
@@ -91,7 +91,6 @@ namespace OpenSim.Region.Environment.Scenes
91 new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X, 91 new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
92 rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics); 92 rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
93 rootPart.DoPhysicsPropertyUpdate(UsePhysics, true); 93 rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
94
95 } 94 }
96 primCount++; 95 primCount++;
97 } 96 }
@@ -115,7 +114,7 @@ namespace OpenSim.Region.Environment.Scenes
115 { 114 {
116 if (ent is SceneObjectGroup) 115 if (ent is SceneObjectGroup)
117 { 116 {
118 stream.WriteLine(((SceneObjectGroup)ent).ToXmlString()); 117 stream.WriteLine(((SceneObjectGroup) ent).ToXmlString());
119 primCount++; 118 primCount++;
120 } 119 }
121 } 120 }
@@ -152,8 +151,9 @@ namespace OpenSim.Region.Environment.Scenes
152 m_innerScene.AddEntityFromStorage(obj); 151 m_innerScene.AddEntityFromStorage(obj);
153 152
154 SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); 153 SceneObjectPart rootPart = obj.GetChildPart(obj.UUID);
155 bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_parentScene.m_physicalPrim); 154 bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) &&
156 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) 155 m_parentScene.m_physicalPrim);
156 if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
157 { 157 {
158 rootPart.PhysActor = m_innerScene.PhysicsScene.AddPrimShape( 158 rootPart.PhysActor = m_innerScene.PhysicsScene.AddPrimShape(
159 rootPart.Name, 159 rootPart.Name,
@@ -180,7 +180,7 @@ namespace OpenSim.Region.Environment.Scenes
180 { 180 {
181 if (ent is SceneObjectGroup) 181 if (ent is SceneObjectGroup)
182 { 182 {
183 stream.WriteLine(((SceneObjectGroup)ent).ToXmlString2()); 183 stream.WriteLine(((SceneObjectGroup) ent).ToXmlString2());
184 primCount++; 184 primCount++;
185 } 185 }
186 } 186 }
@@ -188,6 +188,5 @@ namespace OpenSim.Region.Environment.Scenes
188 stream.Close(); 188 stream.Close();
189 file.Close(); 189 file.Close();
190 } 190 }
191
192 } 191 }
193} 192} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
index 294a6c9..d781806 100644
--- a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
+++ b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
@@ -37,4 +37,4 @@ namespace OpenSim.Region.Environment.Scenes.Scripting
37 void Shutdown(); 37 void Shutdown();
38// void StartScript(string ScriptID, IScriptHost ObjectID); 38// void StartScript(string ScriptID, IScriptHost ObjectID);
39 } 39 }
40} 40} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
index d3fdad6..5dbe500 100644
--- a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
+++ b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
@@ -121,4 +121,4 @@ namespace OpenSim.Region.Environment.Scenes.Scripting
121 return ret; 121 return ret;
122 } 122 }
123 } 123 }
124} 124} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs
index bfdacfe..b183c04 100644
--- a/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs
+++ b/OpenSim/Region/Environment/Scenes/SimStatsReporter.cs
@@ -27,22 +27,19 @@
27*/ 27*/
28 28
29using System; 29using System;
30using System.Collections.Generic;
31using System.Text;
32using System.Timers; 30using System.Timers;
33using libsecondlife.Packets; 31using libsecondlife.Packets;
34using OpenSim.Framework; 32using OpenSim.Framework;
35using Timer = System.Timers.Timer;
36 33
37namespace OpenSim.Region.Environment.Scenes 34namespace OpenSim.Region.Environment.Scenes
38{ 35{
39 public class SimStatsReporter 36 public class SimStatsReporter
40 { 37 {
41 public delegate void SendStatResult(SimStatsPacket pack); 38 public delegate void SendStatResult(SimStatsPacket pack);
42 39
43 public event SendStatResult OnSendStatsResult; 40 public event SendStatResult OnSendStatsResult;
44 41
45 private enum Stats : uint 42 private enum Stats : uint
46 { 43 {
47 TimeDilation = 0, 44 TimeDilation = 0,
48 SimFPS = 1, 45 SimFPS = 1,
@@ -72,7 +69,7 @@ namespace OpenSim.Region.Environment.Scenes
72 private RegionInfo ReportingRegion; 69 private RegionInfo ReportingRegion;
73 70
74 private Timer m_report = new Timer(); 71 private Timer m_report = new Timer();
75 72
76 73
77 public SimStatsReporter(RegionInfo regionData) 74 public SimStatsReporter(RegionInfo regionData)
78 { 75 {
@@ -93,23 +90,24 @@ namespace OpenSim.Region.Environment.Scenes
93 statpack.Region.RegionY = ReportingRegion.RegionLocY; 90 statpack.Region.RegionY = ReportingRegion.RegionLocY;
94 try 91 try
95 { 92 {
96 statpack.Region.RegionFlags = (uint)ReportingRegion.EstateSettings.regionFlags; 93 statpack.Region.RegionFlags = (uint) ReportingRegion.EstateSettings.regionFlags;
97 } 94 }
98 catch(System.Exception) 95 catch (Exception)
99 { 96 {
100 statpack.Region.RegionFlags = (uint)0; 97 statpack.Region.RegionFlags = (uint) 0;
101 } 98 }
102 statpack.Region.ObjectCapacity = (uint)15000; 99 statpack.Region.ObjectCapacity = (uint) 15000;
103 100
104 #region various statistic googly moogly 101 #region various statistic googly moogly
105 float simfps = (int)(m_fps * 5); 102
103 float simfps = (int) (m_fps*5);
106 104
107 if (simfps > 45) 105 if (simfps > 45)
108 simfps = simfps - (simfps - 45); 106 simfps = simfps - (simfps - 45);
109 if (simfps < 0) 107 if (simfps < 0)
110 simfps = 0; 108 simfps = 0;
111 109
112 float physfps = (m_pfps / statsUpdatesEveryMS); 110 float physfps = (m_pfps/statsUpdatesEveryMS);
113 111
114 if (physfps > 50) 112 if (physfps > 50)
115 physfps = physfps - (physfps - 50); 113 physfps = physfps - (physfps - 50);
@@ -120,49 +118,49 @@ namespace OpenSim.Region.Environment.Scenes
120 #endregion 118 #endregion
121 119
122 sb[0] = new SimStatsPacket.StatBlock(); 120 sb[0] = new SimStatsPacket.StatBlock();
123 sb[0].StatID = (uint)Stats.TimeDilation; 121 sb[0].StatID = (uint) Stats.TimeDilation;
124 sb[0].StatValue = (m_timeDilation); 122 sb[0].StatValue = (m_timeDilation);
125 123
126 sb[1] = new SimStatsPacket.StatBlock(); 124 sb[1] = new SimStatsPacket.StatBlock();
127 sb[1].StatID = (uint)Stats.SimFPS; 125 sb[1].StatID = (uint) Stats.SimFPS;
128 sb[1].StatValue = simfps; 126 sb[1].StatValue = simfps;
129 127
130 sb[2] = new SimStatsPacket.StatBlock(); 128 sb[2] = new SimStatsPacket.StatBlock();
131 sb[2].StatID = (uint)Stats.PhysicsFPS; 129 sb[2].StatID = (uint) Stats.PhysicsFPS;
132 sb[2].StatValue = physfps; 130 sb[2].StatValue = physfps;
133 131
134 sb[3] = new SimStatsPacket.StatBlock(); 132 sb[3] = new SimStatsPacket.StatBlock();
135 sb[3].StatID = (uint)Stats.AgentUpdates; 133 sb[3].StatID = (uint) Stats.AgentUpdates;
136 sb[3].StatValue = (m_agentUpdates / statsUpdatesEveryMS); 134 sb[3].StatValue = (m_agentUpdates/statsUpdatesEveryMS);
137 135
138 sb[4] = new SimStatsPacket.StatBlock(); 136 sb[4] = new SimStatsPacket.StatBlock();
139 sb[4].StatID = (uint)Stats.Agents; 137 sb[4].StatID = (uint) Stats.Agents;
140 sb[4].StatValue = m_rootAgents; 138 sb[4].StatValue = m_rootAgents;
141 139
142 sb[5] = new SimStatsPacket.StatBlock(); 140 sb[5] = new SimStatsPacket.StatBlock();
143 sb[5].StatID = (uint)Stats.ChildAgents; 141 sb[5].StatID = (uint) Stats.ChildAgents;
144 sb[5].StatValue = m_childAgents; 142 sb[5].StatValue = m_childAgents;
145 143
146 sb[6] = new SimStatsPacket.StatBlock(); 144 sb[6] = new SimStatsPacket.StatBlock();
147 sb[6].StatID = (uint)Stats.TotalPrim; 145 sb[6].StatID = (uint) Stats.TotalPrim;
148 sb[6].StatValue = m_numPrim; 146 sb[6].StatValue = m_numPrim;
149 147
150 sb[7] = new SimStatsPacket.StatBlock(); 148 sb[7] = new SimStatsPacket.StatBlock();
151 sb[7].StatID = (uint)Stats.ActivePrim; 149 sb[7].StatID = (uint) Stats.ActivePrim;
152 sb[7].StatValue = m_activePrim; 150 sb[7].StatValue = m_activePrim;
153 151
154 sb[8] = new SimStatsPacket.StatBlock(); 152 sb[8] = new SimStatsPacket.StatBlock();
155 sb[8].StatID = (uint)Stats.InPacketsPerSecond; 153 sb[8].StatID = (uint) Stats.InPacketsPerSecond;
156 sb[8].StatValue = (int)(m_inPacketsPerSecond / statsUpdatesEveryMS); 154 sb[8].StatValue = (int) (m_inPacketsPerSecond/statsUpdatesEveryMS);
157 155
158 sb[9] = new SimStatsPacket.StatBlock(); 156 sb[9] = new SimStatsPacket.StatBlock();
159 sb[9].StatID = (uint)Stats.OutPacketsPerSecond; 157 sb[9].StatID = (uint) Stats.OutPacketsPerSecond;
160 sb[9].StatValue = (int)(m_outPacketsPerSecond / statsUpdatesEveryMS); 158 sb[9].StatValue = (int) (m_outPacketsPerSecond/statsUpdatesEveryMS);
161 159
162 sb[10] = new SimStatsPacket.StatBlock(); 160 sb[10] = new SimStatsPacket.StatBlock();
163 sb[10].StatID = (uint)Stats.UnAckedBytes; 161 sb[10].StatID = (uint) Stats.UnAckedBytes;
164 sb[10].StatValue = (int) (m_unAckedBytes / statsUpdatesEveryMS); 162 sb[10].StatValue = (int) (m_unAckedBytes/statsUpdatesEveryMS);
165 163
166 statpack.Stat = sb; 164 statpack.Stat = sb;
167 165
168 if (OnSendStatsResult != null) 166 if (OnSendStatsResult != null)
@@ -181,8 +179,8 @@ namespace OpenSim.Region.Environment.Scenes
181 m_inPacketsPerSecond = 0; 179 m_inPacketsPerSecond = 0;
182 m_outPacketsPerSecond = 0; 180 m_outPacketsPerSecond = 0;
183 m_unAckedBytes = 0; 181 m_unAckedBytes = 0;
184
185 } 182 }
183
186 public void SetTimeDilation(float td) 184 public void SetTimeDilation(float td)
187 { 185 {
188 m_timeDilation = td; 186 m_timeDilation = td;
@@ -191,47 +189,56 @@ namespace OpenSim.Region.Environment.Scenes
191 189
192 if (m_timeDilation < 0) 190 if (m_timeDilation < 0)
193 m_timeDilation = 0.0f; 191 m_timeDilation = 0.0f;
194
195 } 192 }
193
196 public void SetRootAgents(int rootAgents) 194 public void SetRootAgents(int rootAgents)
197 { 195 {
198 m_rootAgents = rootAgents; 196 m_rootAgents = rootAgents;
199 } 197 }
198
200 public void SetChildAgents(int childAgents) 199 public void SetChildAgents(int childAgents)
201 { 200 {
202 m_childAgents = childAgents; 201 m_childAgents = childAgents;
203 } 202 }
203
204 public void SetObjects(int objects) 204 public void SetObjects(int objects)
205 { 205 {
206 m_numPrim = objects; 206 m_numPrim = objects;
207 } 207 }
208
208 public void SetActiveObjects(int objects) 209 public void SetActiveObjects(int objects)
209 { 210 {
210 m_activePrim = objects; 211 m_activePrim = objects;
211 } 212 }
213
212 public void AddFPS(int frames) 214 public void AddFPS(int frames)
213 { 215 {
214 m_fps += frames; 216 m_fps += frames;
215 } 217 }
218
216 public void AddPhysicsFPS(float frames) 219 public void AddPhysicsFPS(float frames)
217 { 220 {
218 m_pfps += frames; 221 m_pfps += frames;
219 } 222 }
223
220 public void AddAgentUpdates(float numUpdates) 224 public void AddAgentUpdates(float numUpdates)
221 { 225 {
222 m_agentUpdates += numUpdates; 226 m_agentUpdates += numUpdates;
223 } 227 }
228
224 public void AddInPackets(int numPackets) 229 public void AddInPackets(int numPackets)
225 { 230 {
226 m_inPacketsPerSecond += numPackets; 231 m_inPacketsPerSecond += numPackets;
227 } 232 }
233
228 public void AddOutPackets(int numPackets) 234 public void AddOutPackets(int numPackets)
229 { 235 {
230 m_outPacketsPerSecond += numPackets; 236 m_outPacketsPerSecond += numPackets;
231 } 237 }
238
232 public void AddunAckedBytes(int numBytes) 239 public void AddunAckedBytes(int numBytes)
233 { 240 {
234 m_unAckedBytes += numBytes; 241 m_unAckedBytes += numBytes;
235 } 242 }
236 } 243 }
237} 244} \ No newline at end of file