diff options
Diffstat (limited to 'OpenSim.RegionServer/world/Primitive2.cs')
-rw-r--r-- | OpenSim.RegionServer/world/Primitive2.cs | 155 |
1 files changed, 132 insertions, 23 deletions
diff --git a/OpenSim.RegionServer/world/Primitive2.cs b/OpenSim.RegionServer/world/Primitive2.cs index 4a19040..2ab1470 100644 --- a/OpenSim.RegionServer/world/Primitive2.cs +++ b/OpenSim.RegionServer/world/Primitive2.cs | |||
@@ -24,6 +24,8 @@ namespace OpenSim.world | |||
24 | private Dictionary<LLUUID, InventoryItem> inventoryItems; | 24 | private Dictionary<LLUUID, InventoryItem> inventoryItems; |
25 | private string inventoryFileName = ""; | 25 | private string inventoryFileName = ""; |
26 | 26 | ||
27 | #region Properties | ||
28 | |||
27 | public LLVector3 Scale | 29 | public LLVector3 Scale |
28 | { | 30 | { |
29 | set | 31 | set |
@@ -45,6 +47,7 @@ namespace OpenSim.world | |||
45 | } | 47 | } |
46 | } | 48 | } |
47 | 49 | ||
50 | #endregion | ||
48 | 51 | ||
49 | public Primitive2(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, World world) | 52 | public Primitive2(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, World world) |
50 | { | 53 | { |
@@ -88,16 +91,44 @@ namespace OpenSim.world | |||
88 | return result; | 91 | return result; |
89 | } | 92 | } |
90 | 93 | ||
94 | #region Overridden Methods | ||
95 | |||
91 | public override void update() | 96 | public override void update() |
92 | { | 97 | { |
93 | LLVector3 pos2 = new LLVector3(0, 0, 0); | 98 | LLVector3 pos2 = new LLVector3(0, 0, 0); |
94 | } | 99 | } |
95 | 100 | ||
96 | public void UpdateShape(ObjectShapePacket.ObjectDataBlock addPacket) | 101 | public override void BackUp() |
97 | { | 102 | { |
98 | 103 | ||
99 | } | 104 | } |
100 | 105 | ||
106 | #endregion | ||
107 | |||
108 | #region Packet handlers | ||
109 | |||
110 | public void UpdateShape(ObjectShapePacket.ObjectDataBlock addPacket) | ||
111 | { | ||
112 | this.primData.PathBegin = addPacket.PathBegin; | ||
113 | this.primData.PathEnd = addPacket.PathEnd; | ||
114 | this.primData.PathScaleX = addPacket.PathScaleX; | ||
115 | this.primData.PathScaleY = addPacket.PathScaleY; | ||
116 | this.primData.PathShearX = addPacket.PathShearX; | ||
117 | this.primData.PathShearY = addPacket.PathShearY; | ||
118 | this.primData.PathSkew = addPacket.PathSkew; | ||
119 | this.primData.ProfileBegin = addPacket.ProfileBegin; | ||
120 | this.primData.ProfileEnd = addPacket.ProfileEnd; | ||
121 | this.primData.PathCurve = addPacket.PathCurve; | ||
122 | this.primData.ProfileCurve = addPacket.ProfileCurve; | ||
123 | this.primData.ProfileHollow = addPacket.ProfileHollow; | ||
124 | this.primData.PathRadiusOffset = addPacket.PathRadiusOffset; | ||
125 | this.primData.PathRevolutions = addPacket.PathRevolutions; | ||
126 | this.primData.PathTaperX = addPacket.PathTaperX; | ||
127 | this.primData.PathTaperY = addPacket.PathTaperY; | ||
128 | this.primData.PathTwist = addPacket.PathTwist; | ||
129 | this.primData.PathTwistBegin = addPacket.PathTwistBegin; | ||
130 | } | ||
131 | |||
101 | public void UpdateTexture(byte[] tex) | 132 | public void UpdateTexture(byte[] tex) |
102 | { | 133 | { |
103 | this.OurPacket.ObjectData[0].TextureEntry = tex; | 134 | this.OurPacket.ObjectData[0].TextureEntry = tex; |
@@ -115,6 +146,10 @@ namespace OpenSim.world | |||
115 | 146 | ||
116 | } | 147 | } |
117 | 148 | ||
149 | #endregion | ||
150 | |||
151 | # region Inventory Methods | ||
152 | |||
118 | public bool AddToInventory(InventoryItem item) | 153 | public bool AddToInventory(InventoryItem item) |
119 | { | 154 | { |
120 | return false; | 155 | return false; |
@@ -164,39 +199,57 @@ namespace OpenSim.world | |||
164 | 199 | ||
165 | } | 200 | } |
166 | 201 | ||
167 | public override void BackUp() | 202 | #endregion |
203 | |||
204 | #region Update viewers methods | ||
205 | |||
206 | public void SendFullUpdateToClient(SimClient remoteClient) | ||
168 | { | 207 | { |
208 | LLVector3 lPos; | ||
209 | if (this._physActor != null && this.physicsEnabled) | ||
210 | { | ||
211 | PhysicsVector pPos = this._physActor.Position; | ||
212 | lPos = new LLVector3(pPos.X, pPos.Y, pPos.Z); | ||
213 | } | ||
214 | else | ||
215 | { | ||
216 | lPos = this.Pos; | ||
217 | } | ||
218 | byte[] pb = lPos.GetBytes(); | ||
219 | Array.Copy(pb, 0, OurPacket.ObjectData[0].ObjectData, 0, pb.Length); | ||
169 | 220 | ||
221 | this.UpdatePacketShapeData(); | ||
222 | remoteClient.OutPacket(OurPacket); | ||
170 | } | 223 | } |
171 | 224 | ||
225 | public void SendTerseUpdateToClient(SimClient RemoteClient) | ||
226 | { | ||
227 | |||
228 | } | ||
229 | |||
230 | public void SendTerseUpdateToALLClients() | ||
231 | { | ||
232 | |||
233 | } | ||
234 | |||
235 | #endregion | ||
236 | |||
237 | #region Create Methods | ||
238 | |||
172 | public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID) | 239 | public void CreateFromPacket(ObjectAddPacket addPacket, LLUUID agentID, uint localID) |
173 | { | 240 | { |
174 | ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); | 241 | ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); |
175 | objupdate.RegionData.RegionHandle = m_regionHandle; | 242 | objupdate.RegionData.RegionHandle = m_regionHandle; |
176 | objupdate.RegionData.TimeDilation = 64096; | 243 | objupdate.RegionData.TimeDilation = 64096; |
177 | |||
178 | objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; | 244 | objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; |
179 | PrimData PData = new PrimData(); | 245 | PrimData PData = new PrimData(); |
180 | this.primData = PData; | 246 | this.primData = PData; |
181 | this.primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | 247 | this.primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; |
182 | 248 | ||
183 | objupdate.ObjectData[0] = new ObjectUpdatePacket.ObjectDataBlock(); | 249 | objupdate.ObjectData[0] = new ObjectUpdatePacket.ObjectDataBlock(); |
184 | objupdate.ObjectData[0].PSBlock = new byte[0]; | 250 | this.SetDefaultPacketValues(objupdate.ObjectData[0]); |
185 | objupdate.ObjectData[0].ExtraParams = new byte[1]; | 251 | |
186 | objupdate.ObjectData[0].MediaURL = new byte[0]; | ||
187 | objupdate.ObjectData[0].NameValue = new byte[0]; | ||
188 | objupdate.ObjectData[0].Text = new byte[0]; | ||
189 | objupdate.ObjectData[0].TextColor = new byte[4]; | ||
190 | objupdate.ObjectData[0].JointAxisOrAnchor = new LLVector3(0, 0, 0); | ||
191 | objupdate.ObjectData[0].JointPivot = new LLVector3(0, 0, 0); | ||
192 | objupdate.ObjectData[0].Material = 3; | ||
193 | objupdate.ObjectData[0].UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456; | 252 | objupdate.ObjectData[0].UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456; |
194 | objupdate.ObjectData[0].TextureAnim = new byte[0]; | ||
195 | objupdate.ObjectData[0].Sound = LLUUID.Zero; | ||
196 | LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005")); | ||
197 | this.primData.Texture = objupdate.ObjectData[0].TextureEntry = ntex.ToBytes(); | ||
198 | objupdate.ObjectData[0].State = 0; | ||
199 | objupdate.ObjectData[0].Data = new byte[0]; | ||
200 | PData.OwnerID = objupdate.ObjectData[0].OwnerID = agentID; | 253 | PData.OwnerID = objupdate.ObjectData[0].OwnerID = agentID; |
201 | PData.PCode = objupdate.ObjectData[0].PCode = addPacket.ObjectData.PCode; | 254 | PData.PCode = objupdate.ObjectData[0].PCode = addPacket.ObjectData.PCode; |
202 | PData.PathBegin = objupdate.ObjectData[0].PathBegin = addPacket.ObjectData.PathBegin; | 255 | PData.PathBegin = objupdate.ObjectData[0].PathBegin = addPacket.ObjectData.PathBegin; |
@@ -221,9 +274,6 @@ namespace OpenSim.world | |||
221 | PData.PathTwistBegin = objupdate.ObjectData[0].PathTwistBegin = addPacket.ObjectData.PathTwistBegin; | 274 | PData.PathTwistBegin = objupdate.ObjectData[0].PathTwistBegin = addPacket.ObjectData.PathTwistBegin; |
222 | objupdate.ObjectData[0].ID = (uint)(localID); | 275 | objupdate.ObjectData[0].ID = (uint)(localID); |
223 | objupdate.ObjectData[0].FullID = new LLUUID("edba7151-5857-acc5-b30b-f01efef" + (localID - 702000).ToString("00000")); | 276 | objupdate.ObjectData[0].FullID = new LLUUID("edba7151-5857-acc5-b30b-f01efef" + (localID - 702000).ToString("00000")); |
224 | objupdate.ObjectData[0].ObjectData = new byte[60]; | ||
225 | objupdate.ObjectData[0].ObjectData[46] = 128; | ||
226 | objupdate.ObjectData[0].ObjectData[47] = 63; | ||
227 | LLVector3 pos1 = addPacket.ObjectData.RayEnd; | 277 | LLVector3 pos1 = addPacket.ObjectData.RayEnd; |
228 | //update position | 278 | //update position |
229 | byte[] pb = pos1.GetBytes(); | 279 | byte[] pb = pos1.GetBytes(); |
@@ -235,12 +285,71 @@ namespace OpenSim.world | |||
235 | this.OurPacket = objupdate; | 285 | this.OurPacket = objupdate; |
236 | } | 286 | } |
237 | 287 | ||
238 | public void SendFullUpdateToClient(SimClient RemoteClient) | 288 | public void CreateFromBytes(byte[] data) |
289 | { | ||
290 | |||
291 | } | ||
292 | |||
293 | public void CreateFromPrimData(PrimData primData) | ||
239 | { | 294 | { |
240 | 295 | ||
241 | } | 296 | } |
242 | 297 | ||
243 | public ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateImprovedBlock() | 298 | #endregion |
299 | |||
300 | #region Packet Update Methods | ||
301 | protected void SetDefaultPacketValues(ObjectUpdatePacket.ObjectDataBlock objdata) | ||
302 | { | ||
303 | objdata.PSBlock = new byte[0]; | ||
304 | objdata.ExtraParams = new byte[1]; | ||
305 | objdata.MediaURL = new byte[0]; | ||
306 | objdata.NameValue = new byte[0]; | ||
307 | objdata.Text = new byte[0]; | ||
308 | objdata.TextColor = new byte[4]; | ||
309 | objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0); | ||
310 | objdata.JointPivot = new LLVector3(0, 0, 0); | ||
311 | objdata.Material = 3; | ||
312 | objdata.TextureAnim = new byte[0]; | ||
313 | objdata.Sound = LLUUID.Zero; | ||
314 | LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005")); | ||
315 | this.primData.Texture = objdata.TextureEntry = ntex.ToBytes(); | ||
316 | objdata.State = 0; | ||
317 | objdata.Data = new byte[0]; | ||
318 | |||
319 | objdata.ObjectData = new byte[60]; | ||
320 | objdata.ObjectData[46] = 128; | ||
321 | objdata.ObjectData[47] = 63; | ||
322 | } | ||
323 | |||
324 | protected void UpdatePacketShapeData() | ||
325 | { | ||
326 | OurPacket.ObjectData[0].OwnerID = this.primData.OwnerID; | ||
327 | OurPacket.ObjectData[0].PCode = this.primData.PCode; | ||
328 | OurPacket.ObjectData[0].PathBegin = this.primData.PathBegin; | ||
329 | OurPacket.ObjectData[0].PathEnd = this.primData.PathEnd; | ||
330 | OurPacket.ObjectData[0].PathScaleX = this.primData.PathScaleX; | ||
331 | OurPacket.ObjectData[0].PathScaleY = this.primData.PathScaleY; | ||
332 | OurPacket.ObjectData[0].PathShearX = this.primData.PathShearX; | ||
333 | OurPacket.ObjectData[0].PathShearY = this.primData.PathShearY; | ||
334 | OurPacket.ObjectData[0].PathSkew = this.primData.PathSkew; | ||
335 | OurPacket.ObjectData[0].ProfileBegin = this.primData.ProfileBegin; | ||
336 | OurPacket.ObjectData[0].ProfileEnd = this.primData.ProfileEnd; | ||
337 | OurPacket.ObjectData[0].Scale = this.primData.Scale; | ||
338 | OurPacket.ObjectData[0].PathCurve = this.primData.PathCurve; | ||
339 | OurPacket.ObjectData[0].ProfileCurve = this.primData.ProfileCurve; | ||
340 | OurPacket.ObjectData[0].ParentID = this.primData.ParentID; | ||
341 | OurPacket.ObjectData[0].ProfileHollow = this.primData.ProfileHollow; | ||
342 | OurPacket.ObjectData[0].PathRadiusOffset = this.primData.PathRadiusOffset; | ||
343 | OurPacket.ObjectData[0].PathRevolutions = this.primData.PathRevolutions; | ||
344 | OurPacket.ObjectData[0].PathTaperX = this.primData.PathTaperX; | ||
345 | OurPacket.ObjectData[0].PathTaperY = this.primData.PathTaperY; | ||
346 | OurPacket.ObjectData[0].PathTwist = this.primData.PathTwist; | ||
347 | OurPacket.ObjectData[0].PathTwistBegin = this.primData.PathTwistBegin; | ||
348 | } | ||
349 | |||
350 | #endregion | ||
351 | |||
352 | protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateImprovedBlock() | ||
244 | { | 353 | { |
245 | uint ID = this.localid; | 354 | uint ID = this.localid; |
246 | byte[] bytes = new byte[60]; | 355 | byte[] bytes = new byte[60]; |