diff options
Diffstat (limited to 'OpenSim/Region/Environment/Types')
-rw-r--r-- | OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs | 53 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Types/UpdateQueue.cs | 103 |
2 files changed, 79 insertions, 77 deletions
diff --git a/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs b/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs index 24ce94b..41f17e5 100644 --- a/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs +++ b/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs | |||
@@ -33,16 +33,15 @@ namespace OpenSim.Region.Environment.Types | |||
33 | { | 33 | { |
34 | public class BasicQuadTreeNode | 34 | public class BasicQuadTreeNode |
35 | { | 35 | { |
36 | private List<SceneObjectGroup> m_objects = new List<SceneObjectGroup>(); | 36 | private readonly short m_height; |
37 | private BasicQuadTreeNode[] m_childNodes = null; | 37 | private readonly short m_leftX; |
38 | private BasicQuadTreeNode m_parent = null; | 38 | private readonly short m_leftY; |
39 | 39 | private readonly List<SceneObjectGroup> m_objects = new List<SceneObjectGroup>(); | |
40 | private short m_leftX; | 40 | private readonly BasicQuadTreeNode m_parent; |
41 | private short m_leftY; | ||
42 | private short m_width; | ||
43 | private short m_height; | ||
44 | //private int m_quadNumber; | 41 | //private int m_quadNumber; |
45 | private string m_quadID; | 42 | private readonly string m_quadID; |
43 | private readonly short m_width; | ||
44 | private BasicQuadTreeNode[] m_childNodes; | ||
46 | 45 | ||
47 | public BasicQuadTreeNode(BasicQuadTreeNode parent, string quadID, short leftX, short leftY, short width, | 46 | public BasicQuadTreeNode(BasicQuadTreeNode parent, string quadID, short leftX, short leftY, short width, |
48 | short height) | 47 | short height) |
@@ -67,9 +66,9 @@ namespace OpenSim.Region.Environment.Types | |||
67 | } | 66 | } |
68 | else | 67 | else |
69 | { | 68 | { |
70 | if (obj.AbsolutePosition.X < (m_leftX + (m_width/2))) | 69 | if (obj.AbsolutePosition.X < (m_leftX + (m_width / 2))) |
71 | { | 70 | { |
72 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) | 71 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2))) |
73 | { | 72 | { |
74 | m_childNodes[0].AddObject(obj); | 73 | m_childNodes[0].AddObject(obj); |
75 | } | 74 | } |
@@ -80,7 +79,7 @@ namespace OpenSim.Region.Environment.Types | |||
80 | } | 79 | } |
81 | else | 80 | else |
82 | { | 81 | { |
83 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) | 82 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2))) |
84 | { | 83 | { |
85 | m_childNodes[1].AddObject(obj); | 84 | m_childNodes[1].AddObject(obj); |
86 | } | 85 | } |
@@ -98,17 +97,17 @@ namespace OpenSim.Region.Environment.Types | |||
98 | { | 97 | { |
99 | m_childNodes = new BasicQuadTreeNode[4]; | 98 | m_childNodes = new BasicQuadTreeNode[4]; |
100 | m_childNodes[0] = | 99 | m_childNodes[0] = |
101 | new BasicQuadTreeNode(this, m_quadID + "1/", m_leftX, m_leftY, (short) (m_width/2), | 100 | new BasicQuadTreeNode(this, m_quadID + "1/", m_leftX, m_leftY, (short) (m_width / 2), |
102 | (short) (m_height/2)); | 101 | (short) (m_height / 2)); |
103 | m_childNodes[1] = | 102 | m_childNodes[1] = |
104 | new BasicQuadTreeNode(this, m_quadID + "2/", (short) (m_leftX + (m_width/2)), m_leftY, | 103 | new BasicQuadTreeNode(this, m_quadID + "2/", (short) (m_leftX + (m_width / 2)), m_leftY, |
105 | (short) (m_width/2), (short) (m_height/2)); | 104 | (short) (m_width / 2), (short) (m_height / 2)); |
106 | m_childNodes[2] = | 105 | m_childNodes[2] = |
107 | new BasicQuadTreeNode(this, m_quadID + "3/", m_leftX, (short) (m_leftY + (m_height/2)), | 106 | new BasicQuadTreeNode(this, m_quadID + "3/", m_leftX, (short) (m_leftY + (m_height / 2)), |
108 | (short) (m_width/2), (short) (m_height/2)); | 107 | (short) (m_width / 2), (short) (m_height / 2)); |
109 | m_childNodes[3] = | 108 | m_childNodes[3] = |
110 | new BasicQuadTreeNode(this, m_quadID + "4/", (short) (m_leftX + (m_width/2)), | 109 | new BasicQuadTreeNode(this, m_quadID + "4/", (short) (m_leftX + (m_width / 2)), |
111 | (short) (m_height + (m_height/2)), (short) (m_width/2), (short) (m_height/2)); | 110 | (short) (m_height + (m_height / 2)), (short) (m_width / 2), (short) (m_height / 2)); |
112 | } | 111 | } |
113 | else | 112 | else |
114 | { | 113 | { |
@@ -127,9 +126,9 @@ namespace OpenSim.Region.Environment.Types | |||
127 | } | 126 | } |
128 | else | 127 | else |
129 | { | 128 | { |
130 | if (x < m_leftX + (m_width/2)) | 129 | if (x < m_leftX + (m_width / 2)) |
131 | { | 130 | { |
132 | if (y < m_leftY + (m_height/2)) | 131 | if (y < m_leftY + (m_height / 2)) |
133 | { | 132 | { |
134 | return m_childNodes[0].GetObjectsFrom(x, y); | 133 | return m_childNodes[0].GetObjectsFrom(x, y); |
135 | } | 134 | } |
@@ -140,7 +139,7 @@ namespace OpenSim.Region.Environment.Types | |||
140 | } | 139 | } |
141 | else | 140 | else |
142 | { | 141 | { |
143 | if (y < m_leftY + (m_height/2)) | 142 | if (y < m_leftY + (m_height / 2)) |
144 | { | 143 | { |
145 | return m_childNodes[1].GetObjectsFrom(x, y); | 144 | return m_childNodes[1].GetObjectsFrom(x, y); |
146 | } | 145 | } |
@@ -181,9 +180,9 @@ namespace OpenSim.Region.Environment.Types | |||
181 | } | 180 | } |
182 | else | 181 | else |
183 | { | 182 | { |
184 | if (x < m_leftX + (m_width/2)) | 183 | if (x < m_leftX + (m_width / 2)) |
185 | { | 184 | { |
186 | if (y < m_leftY + (m_height/2)) | 185 | if (y < m_leftY + (m_height / 2)) |
187 | { | 186 | { |
188 | return m_childNodes[0].GetNodeID(x, y); | 187 | return m_childNodes[0].GetNodeID(x, y); |
189 | } | 188 | } |
@@ -194,7 +193,7 @@ namespace OpenSim.Region.Environment.Types | |||
194 | } | 193 | } |
195 | else | 194 | else |
196 | { | 195 | { |
197 | if (y < m_leftY + (m_height/2)) | 196 | if (y < m_leftY + (m_height / 2)) |
198 | { | 197 | { |
199 | return m_childNodes[1].GetNodeID(x, y); | 198 | return m_childNodes[1].GetNodeID(x, y); |
200 | } | 199 | } |
@@ -266,4 +265,4 @@ namespace OpenSim.Region.Environment.Types | |||
266 | return retVal; | 265 | return retVal; |
267 | } | 266 | } |
268 | } | 267 | } |
269 | } | 268 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Types/UpdateQueue.cs b/OpenSim/Region/Environment/Types/UpdateQueue.cs index ec1ffd2..24fe116 100644 --- a/OpenSim/Region/Environment/Types/UpdateQueue.cs +++ b/OpenSim/Region/Environment/Types/UpdateQueue.cs | |||
@@ -34,26 +34,70 @@ using OpenSim.Region.Environment.Scenes; | |||
34 | 34 | ||
35 | namespace OpenSim.Region.Environment.Types | 35 | namespace OpenSim.Region.Environment.Types |
36 | { | 36 | { |
37 | [Serializable] | 37 | [Serializable] |
38 | public class UpdateQueue : ISerializable | 38 | public class UpdateQueue : ISerializable |
39 | { | 39 | { |
40 | private Queue<SceneObjectPart> m_queue; | 40 | private readonly List<LLUUID> m_ids; |
41 | private readonly Queue<SceneObjectPart> m_queue; | ||
41 | 42 | ||
42 | private List<LLUUID> m_ids; | 43 | private readonly object m_syncObject = new object(); |
43 | 44 | ||
44 | private object m_syncObject = new object(); | 45 | public UpdateQueue() |
46 | { | ||
47 | m_queue = new Queue<SceneObjectPart>(); | ||
48 | m_ids = new List<LLUUID>(); | ||
49 | } | ||
50 | |||
51 | protected UpdateQueue(SerializationInfo info, StreamingContext context) | ||
52 | { | ||
53 | //System.Console.WriteLine("UpdateQueue Deserialize BGN"); | ||
54 | |||
55 | if (info == null) | ||
56 | { | ||
57 | throw new ArgumentNullException("info"); | ||
58 | } | ||
59 | |||
60 | m_queue = (Queue<SceneObjectPart>) info.GetValue("m_queue", typeof (Queue<SceneObjectPart>)); | ||
61 | List<Guid> ids_work = (List<Guid>) info.GetValue("m_ids", typeof (List<Guid>)); | ||
62 | |||
63 | foreach (Guid guid in ids_work) | ||
64 | { | ||
65 | m_ids.Add(new LLUUID(guid)); | ||
66 | } | ||
67 | |||
68 | //System.Console.WriteLine("UpdateQueue Deserialize END"); | ||
69 | } | ||
45 | 70 | ||
46 | public int Count | 71 | public int Count |
47 | { | 72 | { |
48 | get { return m_queue.Count; } | 73 | get { return m_queue.Count; } |
49 | } | 74 | } |
50 | 75 | ||
51 | public UpdateQueue() | 76 | #region ISerializable Members |
77 | |||
78 | [SecurityPermission(SecurityAction.LinkDemand, | ||
79 | Flags = SecurityPermissionFlag.SerializationFormatter)] | ||
80 | public virtual void GetObjectData( | ||
81 | SerializationInfo info, StreamingContext context) | ||
52 | { | 82 | { |
53 | m_queue = new Queue<SceneObjectPart>(); | 83 | if (info == null) |
54 | m_ids = new List<LLUUID>(); | 84 | { |
85 | throw new ArgumentNullException("info"); | ||
86 | } | ||
87 | |||
88 | List<Guid> ids_work = new List<Guid>(); | ||
89 | |||
90 | foreach (LLUUID uuid in m_ids) | ||
91 | { | ||
92 | ids_work.Add(uuid.UUID); | ||
93 | } | ||
94 | |||
95 | info.AddValue("m_queue", m_queue); | ||
96 | info.AddValue("m_ids", ids_work); | ||
55 | } | 97 | } |
56 | 98 | ||
99 | #endregion | ||
100 | |||
57 | public void Clear() | 101 | public void Clear() |
58 | { | 102 | { |
59 | lock (m_syncObject) | 103 | lock (m_syncObject) |
@@ -89,46 +133,5 @@ namespace OpenSim.Region.Environment.Types | |||
89 | 133 | ||
90 | return part; | 134 | return part; |
91 | } | 135 | } |
92 | |||
93 | protected UpdateQueue(SerializationInfo info, StreamingContext context) | ||
94 | { | ||
95 | //System.Console.WriteLine("UpdateQueue Deserialize BGN"); | ||
96 | |||
97 | if (info == null) | ||
98 | { | ||
99 | throw new ArgumentNullException("info"); | ||
100 | } | ||
101 | |||
102 | m_queue = (Queue<SceneObjectPart>)info.GetValue("m_queue", typeof(Queue<SceneObjectPart>)); | ||
103 | List<Guid> ids_work = (List<Guid>)info.GetValue("m_ids", typeof(List<Guid>)); | ||
104 | |||
105 | foreach (Guid guid in ids_work) | ||
106 | { | ||
107 | m_ids.Add(new LLUUID(guid)); | ||
108 | } | ||
109 | |||
110 | //System.Console.WriteLine("UpdateQueue Deserialize END"); | ||
111 | } | ||
112 | |||
113 | [SecurityPermission(SecurityAction.LinkDemand, | ||
114 | Flags = SecurityPermissionFlag.SerializationFormatter)] | ||
115 | public virtual void GetObjectData( | ||
116 | SerializationInfo info, StreamingContext context) | ||
117 | { | ||
118 | if (info == null) | ||
119 | { | ||
120 | throw new ArgumentNullException("info"); | ||
121 | } | ||
122 | |||
123 | List<Guid> ids_work = new List<Guid>(); | ||
124 | |||
125 | foreach (LLUUID uuid in m_ids) | ||
126 | { | ||
127 | ids_work.Add(uuid.UUID); | ||
128 | } | ||
129 | |||
130 | info.AddValue("m_queue", m_queue); | ||
131 | info.AddValue("m_ids", ids_work); | ||
132 | } | ||
133 | } | 136 | } |
134 | } | 137 | } \ No newline at end of file |