aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs')
-rw-r--r--OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs305
1 files changed, 305 insertions, 0 deletions
diff --git a/OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs
new file mode 100644
index 0000000..d1a2717
--- /dev/null
+++ b/OpenSim/Region/Simulation/Scenes/Scene.PacketHandlers.cs
@@ -0,0 +1,305 @@
1/*
2* Copyright (c) Contributors, http://www.openmetaverse.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4*
5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission.
15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*
27*/
28using System;
29using System.Collections.Generic;
30using System.Text;
31using libsecondlife;
32using libsecondlife.Packets;
33using OpenSim.Physics.Manager;
34using OpenSim.Framework.Interfaces;
35using OpenSim.Framework.Types;
36using OpenSim.Framework.Inventory;
37using OpenSim.Framework.Utilities;
38
39namespace OpenSim.Region.Scenes
40{
41 public partial class Scene
42 {
43 /// <summary>
44 /// Modifies terrain using the specified information
45 /// </summary>
46 /// <param name="height">The height at which the user started modifying the terrain</param>
47 /// <param name="seconds">The number of seconds the modify button was pressed</param>
48 /// <param name="brushsize">The size of the brush used</param>
49 /// <param name="action">The action to be performed</param>
50 /// <param name="north">Distance from the north border where the cursor is located</param>
51 /// <param name="west">Distance from the west border where the cursor is located</param>
52 public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west)
53 {
54 // Shiny.
55 double size = (double)(1 << brushsize);
56
57 switch (action)
58 {
59 case 0:
60 // flatten terrain
61 Terrain.flatten(north, west, size, (double)seconds / 100.0);
62 RegenerateTerrain(true, (int)north, (int)west);
63 break;
64 case 1:
65 // raise terrain
66 Terrain.raise(north, west, size, (double)seconds / 100.0);
67 RegenerateTerrain(true, (int)north, (int)west);
68 break;
69 case 2:
70 //lower terrain
71 Terrain.lower(north, west, size, (double)seconds / 100.0);
72 RegenerateTerrain(true, (int)north, (int)west);
73 break;
74 case 3:
75 // smooth terrain
76 Terrain.smooth(north, west, size, (double)seconds / 100.0);
77 RegenerateTerrain(true, (int)north, (int)west);
78 break;
79 case 4:
80 // noise
81 Terrain.noise(north, west, size, (double)seconds / 100.0);
82 RegenerateTerrain(true, (int)north, (int)west);
83 break;
84 case 5:
85 // revert
86 Terrain.revert(north, west, size, (double)seconds / 100.0);
87 RegenerateTerrain(true, (int)north, (int)west);
88 break;
89
90 // CLIENT EXTENSIONS GO HERE
91 case 128:
92 // erode-thermal
93 break;
94 case 129:
95 // erode-aerobic
96 break;
97 case 130:
98 // erode-hydraulic
99 break;
100 }
101 return;
102 }
103
104 /// <summary>
105 ///
106 /// </summary>
107 /// <param name="message"></param>
108 /// <param name="type"></param>
109 /// <param name="fromPos"></param>
110 /// <param name="fromName"></param>
111 /// <param name="fromAgentID"></param>
112 public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
113 {
114 Console.WriteLine("Chat message");
115 ScenePresence avatar = null;
116 foreach (IClientAPI client in m_clientThreads.Values)
117 {
118 int dis = -1000;
119 if (this.Avatars.ContainsKey(client.AgentId))
120 {
121
122 avatar = this.Avatars[client.AgentId];
123 // int dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y));
124 dis= (int)avatar.Pos.GetDistanceTo(fromPos);
125 Console.WriteLine("found avatar at " +dis);
126
127 }
128
129 switch (type)
130 {
131 case 0: // Whisper
132 if ((dis < 10) && (dis > -10))
133 {
134 //should change so the message is sent through the avatar rather than direct to the ClientView
135 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
136 }
137 break;
138 case 1: // Say
139 if ((dis < 30) && (dis > -30))
140 {
141 Console.WriteLine("sending chat");
142 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
143 }
144 break;
145 case 2: // Shout
146 if ((dis < 100) && (dis > -100))
147 {
148 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
149 }
150 break;
151
152 case 0xff: // Broadcast
153 client.SendChatMessage(message, type, fromPos, fromName, fromAgentID);
154 break;
155 }
156
157 }
158 }
159
160 /// <summary>
161 ///
162 /// </summary>
163 /// <param name="primAsset"></param>
164 /// <param name="pos"></param>
165 public void RezObject(AssetBase primAsset, LLVector3 pos)
166 {
167
168 }
169
170 /// <summary>
171 ///
172 /// </summary>
173 /// <param name="packet"></param>
174 /// <param name="simClient"></param>
175 public void DeRezObject(Packet packet, IClientAPI simClient)
176 {
177
178 }
179
180 /// <summary>
181 ///
182 /// </summary>
183 /// <param name="remoteClient"></param>
184 public void SendAvatarsToClient(IClientAPI remoteClient)
185 {
186
187 }
188
189 /// <summary>
190 ///
191 /// </summary>
192 /// <param name="parentPrim"></param>
193 /// <param name="childPrims"></param>
194 public void LinkObjects(uint parentPrim, List<uint> childPrims)
195 {
196
197
198 }
199
200 /// <summary>
201 ///
202 /// </summary>
203 /// <param name="primLocalID"></param>
204 /// <param name="shapeBlock"></param>
205 public void UpdatePrimShape(uint primLocalID, ObjectShapePacket.ObjectDataBlock shapeBlock)
206 {
207
208 }
209
210 /// <summary>
211 ///
212 /// </summary>
213 /// <param name="primLocalID"></param>
214 /// <param name="remoteClient"></param>
215 public void SelectPrim(uint primLocalID, IClientAPI remoteClient)
216 {
217 foreach (Entity ent in Entities.Values)
218 {
219 if (ent.LocalId == primLocalID)
220 {
221 ((OpenSim.Region.Scenes.Primitive)ent).GetProperites(remoteClient);
222 break;
223 }
224 }
225 }
226
227 public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
228 {
229 if (this.Entities.ContainsKey(objectID))
230 {
231 ((Primitive)this.Entities[objectID]).GrapMovement(offset, pos, remoteClient);
232 }
233 }
234
235 /// <summary>
236 ///
237 /// </summary>
238 /// <param name="localID"></param>
239 /// <param name="packet"></param>
240 /// <param name="remoteClient"></param>
241 public void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient)
242 {
243
244 }
245
246 /// <summary>
247 ///
248 /// </summary>
249 /// <param name="localID"></param>
250 /// <param name="texture"></param>
251 /// <param name="remoteClient"></param>
252 public void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient)
253 {
254
255 }
256
257 /// <summary>
258 ///
259 /// </summary>
260 /// <param name="localID"></param>
261 /// <param name="pos"></param>
262 /// <param name="remoteClient"></param>
263 public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient)
264 {
265 foreach (Entity ent in Entities.Values)
266 {
267 if (ent.LocalId == localID)
268 {
269 ((OpenSim.Region.Scenes.Primitive)ent).UpdatePosition(pos);
270 break;
271 }
272 }
273 }
274
275 /// <summary>
276 ///
277 /// </summary>
278 /// <param name="localID"></param>
279 /// <param name="rot"></param>
280 /// <param name="remoteClient"></param>
281 public void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient)
282 {
283
284 }
285
286 /// <summary>
287 ///
288 /// </summary>
289 /// <param name="localID"></param>
290 /// <param name="scale"></param>
291 /// <param name="remoteClient"></param>
292 public void UpdatePrimScale(uint localID, LLVector3 scale, IClientAPI remoteClient)
293 {
294 }
295
296 /// <summary>
297 /// Sends prims to a client
298 /// </summary>
299 /// <param name="RemoteClient">Client to send to</param>
300 public void GetInitialPrims(IClientAPI RemoteClient)
301 {
302
303 }
304 }
305}