diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim-Source/OpenSim.RegionServer/ClientView.ProcessPackets.cs (renamed from OpenSim.RegionServer/ClientView.ProcessPackets.cs) | 218 |
1 files changed, 100 insertions, 118 deletions
diff --git a/OpenSim.RegionServer/ClientView.ProcessPackets.cs b/OpenSim-Source/OpenSim.RegionServer/ClientView.ProcessPackets.cs index a78f27a..a6ad8d2 100644 --- a/OpenSim.RegionServer/ClientView.ProcessPackets.cs +++ b/OpenSim-Source/OpenSim.RegionServer/ClientView.ProcessPackets.cs | |||
@@ -20,17 +20,20 @@ namespace OpenSim | |||
20 | { | 20 | { |
21 | public partial class ClientView | 21 | public partial class ClientView |
22 | { | 22 | { |
23 | public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | 23 | public delegate void GenericCall(ClientView remoteClient); |
24 | public delegate void RezObject(AssetBase primasset, LLVector3 pos); | ||
25 | public delegate void ModifyTerrain(byte Action, float North, float West); | ||
26 | public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam); | ||
27 | public delegate void StartAnim(LLUUID animID, int seq); | ||
28 | public delegate void GenericCall(ClientView RemoteClient); | ||
29 | public delegate void GenericCall2(); | 24 | public delegate void GenericCall2(); |
30 | public delegate void GenericCall3(Packet packet); // really don't want to be passing packets in these events, so this is very temporary. | 25 | public delegate void GenericCall3(Packet packet); // really don't want to be passing packets in these events, so this is very temporary. |
26 | public delegate void GenericCall4(Packet packet, ClientView remoteClient); | ||
27 | public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock); | ||
28 | public delegate void ObjectSelect(uint localID, ClientView remoteClient); | ||
29 | public delegate void UpdatePrimFlags(uint localID, Packet packet, ClientView remoteClient); | ||
30 | public delegate void UpdatePrimTexture(uint localID, byte[] texture, ClientView remoteClient); | ||
31 | public delegate void UpdatePrimVector(uint localID, LLVector3 pos, ClientView remoteClient); | ||
32 | public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, ClientView remoteClient); | ||
31 | 33 | ||
32 | public event ChatFromViewer OnChatFromViewer; | 34 | public event ChatFromViewer OnChatFromViewer; |
33 | public event RezObject OnRezObject; | 35 | public event RezObject OnRezObject; |
36 | public event GenericCall4 OnDeRezObject; | ||
34 | public event ModifyTerrain OnModifyTerrain; | 37 | public event ModifyTerrain OnModifyTerrain; |
35 | public event GenericCall OnRegionHandShakeReply; | 38 | public event GenericCall OnRegionHandShakeReply; |
36 | public event GenericCall OnRequestWearables; | 39 | public event GenericCall OnRequestWearables; |
@@ -39,6 +42,15 @@ namespace OpenSim | |||
39 | public event GenericCall3 OnAgentUpdate; | 42 | public event GenericCall3 OnAgentUpdate; |
40 | public event StartAnim OnStartAnim; | 43 | public event StartAnim OnStartAnim; |
41 | public event GenericCall OnRequestAvatarsData; | 44 | public event GenericCall OnRequestAvatarsData; |
45 | public event LinkObjects OnLinkObjects; | ||
46 | public event GenericCall4 OnAddPrim; | ||
47 | public event UpdateShape OnUpdatePrimShape; | ||
48 | public event ObjectSelect OnObjectSelect; | ||
49 | public event UpdatePrimFlags OnUpdatePrimFlags; | ||
50 | public event UpdatePrimTexture OnUpdatePrimTexture; | ||
51 | public event UpdatePrimVector OnUpdatePrimPosition; | ||
52 | public event UpdatePrimRotation OnUpdatePrimRotation; | ||
53 | public event UpdatePrimVector OnUpdatePrimScale; | ||
42 | 54 | ||
43 | protected override void ProcessInPacket(Packet Pack) | 55 | protected override void ProcessInPacket(Packet Pack) |
44 | { | 56 | { |
@@ -62,7 +74,20 @@ namespace OpenSim | |||
62 | 74 | ||
63 | switch (Pack.Type) | 75 | switch (Pack.Type) |
64 | { | 76 | { |
65 | #region New Event system | 77 | case PacketType.ViewerEffect: |
78 | ViewerEffectPacket viewer = (ViewerEffectPacket)Pack; | ||
79 | foreach (ClientView client in m_clientThreads.Values) | ||
80 | { | ||
81 | if (client.AgentID != this.AgentID) | ||
82 | { | ||
83 | viewer.AgentData.AgentID = client.AgentID; | ||
84 | viewer.AgentData.SessionID = client.SessionID; | ||
85 | client.OutPacket(viewer); | ||
86 | } | ||
87 | } | ||
88 | break; | ||
89 | |||
90 | #region New Event System - World/Avatar | ||
66 | case PacketType.ChatFromViewer: | 91 | case PacketType.ChatFromViewer: |
67 | ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack; | 92 | ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack; |
68 | if (Util.FieldToString(inchatpack.ChatData.Message) == "") | 93 | if (Util.FieldToString(inchatpack.ChatData.Message) == "") |
@@ -93,153 +118,100 @@ namespace OpenSim | |||
93 | } | 118 | } |
94 | } | 119 | } |
95 | break; | 120 | break; |
121 | case PacketType.DeRezObject: | ||
122 | OnDeRezObject(Pack, this); | ||
123 | break; | ||
96 | case PacketType.ModifyLand: | 124 | case PacketType.ModifyLand: |
97 | ModifyLandPacket modify = (ModifyLandPacket)Pack; | 125 | ModifyLandPacket modify = (ModifyLandPacket)Pack; |
98 | if (modify.ParcelData.Length > 0) | 126 | if (modify.ParcelData.Length > 0) |
99 | { | 127 | { |
100 | OnModifyTerrain(modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West); | 128 | OnModifyTerrain(modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West); |
101 | } | 129 | } |
102 | break; | 130 | break; |
131 | case PacketType.RegionHandshakeReply: | ||
132 | OnRegionHandShakeReply(this); | ||
133 | break; | ||
134 | case PacketType.AgentWearablesRequest: | ||
135 | OnRequestWearables(this); | ||
136 | OnRequestAvatarsData(this); | ||
137 | break; | ||
138 | case PacketType.AgentSetAppearance: | ||
139 | AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack; | ||
140 | OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); | ||
141 | break; | ||
142 | case PacketType.CompleteAgentMovement: | ||
143 | if (this.m_child) this.UpgradeClient(); | ||
144 | OnCompleteMovementToRegion(); | ||
145 | this.EnableNeighbours(); | ||
146 | break; | ||
147 | case PacketType.AgentUpdate: | ||
148 | OnAgentUpdate(Pack); | ||
149 | break; | ||
150 | case PacketType.AgentAnimation: | ||
151 | if (!m_child) | ||
152 | { | ||
153 | AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; | ||
154 | for (int i = 0; i < AgentAni.AnimationList.Length; i++) | ||
155 | { | ||
156 | if (AgentAni.AnimationList[i].StartAnim) | ||
157 | { | ||
158 | OnStartAnim(AgentAni.AnimationList[i].AnimID, 1); | ||
159 | } | ||
160 | } | ||
161 | } | ||
162 | break; | ||
103 | 163 | ||
104 | case PacketType.RegionHandshakeReply: | ||
105 | OnRegionHandShakeReply(this); | ||
106 | break; | ||
107 | case PacketType.AgentWearablesRequest: | ||
108 | OnRequestWearables(this); | ||
109 | OnRequestAvatarsData(this); | ||
110 | break; | ||
111 | case PacketType.AgentSetAppearance: | ||
112 | AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack; | ||
113 | OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); | ||
114 | break; | ||
115 | case PacketType.CompleteAgentMovement: | ||
116 | if (this.m_child) this.UpgradeClient(); | ||
117 | OnCompleteMovementToRegion(); | ||
118 | this.EnableNeighbours(); | ||
119 | break; | ||
120 | case PacketType.AgentUpdate: | ||
121 | OnAgentUpdate(Pack); | ||
122 | break; | ||
123 | case PacketType.AgentAnimation: | ||
124 | if (!m_child) | ||
125 | { | ||
126 | AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; | ||
127 | for (int i = 0; i < AgentAni.AnimationList.Length; i++) | ||
128 | { | ||
129 | if (AgentAni.AnimationList[i].StartAnim) | ||
130 | { | ||
131 | OnStartAnim(AgentAni.AnimationList[i].AnimID, 1); | ||
132 | } | ||
133 | } | ||
134 | } | ||
135 | break; | ||
136 | case PacketType.AgentIsNowWearing: | ||
137 | // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; | ||
138 | //Console.WriteLine(Pack.ToString()); | ||
139 | break; | ||
140 | #endregion | 164 | #endregion |
141 | 165 | ||
142 | //old handling, should move most to a event based system. | 166 | #region New Event System - Objects/Prims |
143 | #region World/Avatar/Primitive related packets | ||
144 | case PacketType.ObjectAdd: | ||
145 | m_world.AddNewPrim((ObjectAddPacket)Pack, this); | ||
146 | break; | ||
147 | case PacketType.ObjectLink: | 167 | case PacketType.ObjectLink: |
148 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, Pack.ToString()); | 168 | // OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, Pack.ToString()); |
149 | ObjectLinkPacket link = (ObjectLinkPacket)Pack; | 169 | ObjectLinkPacket link = (ObjectLinkPacket)Pack; |
150 | uint parentprimid = 0; | 170 | uint parentprimid = 0; |
151 | OpenSim.world.Primitive parentprim = null; | 171 | List<uint> childrenprims = new List<uint>(); |
152 | if (link.ObjectData.Length > 1) | 172 | if (link.ObjectData.Length > 1) |
153 | { | 173 | { |
154 | parentprimid = link.ObjectData[0].ObjectLocalID; | 174 | parentprimid = link.ObjectData[0].ObjectLocalID; |
155 | foreach (Entity ent in m_world.Entities.Values) | ||
156 | { | ||
157 | if (ent.localid == parentprimid) | ||
158 | { | ||
159 | parentprim = (OpenSim.world.Primitive)ent; | ||
160 | 175 | ||
161 | } | ||
162 | } | ||
163 | for (int i = 1; i < link.ObjectData.Length; i++) | 176 | for (int i = 1; i < link.ObjectData.Length; i++) |
164 | { | 177 | { |
165 | foreach (Entity ent in m_world.Entities.Values) | 178 | childrenprims.Add(link.ObjectData[i].ObjectLocalID); |
166 | { | ||
167 | if (ent.localid == link.ObjectData[i].ObjectLocalID) | ||
168 | { | ||
169 | ((OpenSim.world.Primitive)ent).MakeParent(parentprim); | ||
170 | } | ||
171 | } | ||
172 | } | 179 | } |
173 | } | 180 | } |
181 | OnLinkObjects(parentprimid, childrenprims); | ||
174 | break; | 182 | break; |
175 | case PacketType.ObjectScale: | 183 | case PacketType.ObjectAdd: |
176 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, Pack.ToString()); | 184 | m_world.AddNewPrim((ObjectAddPacket)Pack, this); |
185 | OnAddPrim(Pack, this); | ||
177 | break; | 186 | break; |
178 | case PacketType.ObjectShape: | 187 | case PacketType.ObjectShape: |
179 | ObjectShapePacket shape = (ObjectShapePacket)Pack; | 188 | ObjectShapePacket shape = (ObjectShapePacket)Pack; |
180 | for (int i = 0; i < shape.ObjectData.Length; i++) | 189 | for (int i = 0; i < shape.ObjectData.Length; i++) |
181 | { | 190 | { |
182 | foreach (Entity ent in m_world.Entities.Values) | 191 | OnUpdatePrimShape(shape.ObjectData[i].ObjectLocalID, shape.ObjectData[i]); |
183 | { | ||
184 | if (ent.localid == shape.ObjectData[i].ObjectLocalID) | ||
185 | { | ||
186 | ((OpenSim.world.Primitive)ent).UpdateShape(shape.ObjectData[i]); | ||
187 | } | ||
188 | } | ||
189 | } | 192 | } |
190 | break; | 193 | break; |
191 | case PacketType.ObjectSelect: | 194 | case PacketType.ObjectSelect: |
192 | ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; | 195 | ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; |
193 | for (int i = 0; i < incomingselect.ObjectData.Length; i++) | 196 | for (int i = 0; i < incomingselect.ObjectData.Length; i++) |
194 | { | 197 | { |
195 | foreach (Entity ent in m_world.Entities.Values) | 198 | OnObjectSelect(incomingselect.ObjectData[i].ObjectLocalID, this); |
196 | { | ||
197 | if (ent.localid == incomingselect.ObjectData[i].ObjectLocalID) | ||
198 | { | ||
199 | ((OpenSim.world.Primitive)ent).GetProperites(this); | ||
200 | break; | ||
201 | } | ||
202 | } | ||
203 | } | 199 | } |
204 | break; | 200 | break; |
201 | case PacketType.ObjectFlagUpdate: | ||
202 | ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack; | ||
203 | OnUpdatePrimFlags(flags.AgentData.ObjectLocalID, Pack, this); | ||
204 | break; | ||
205 | case PacketType.ObjectImage: | 205 | case PacketType.ObjectImage: |
206 | ObjectImagePacket imagePack = (ObjectImagePacket)Pack; | 206 | ObjectImagePacket imagePack = (ObjectImagePacket)Pack; |
207 | for (int i = 0; i < imagePack.ObjectData.Length; i++) | 207 | for (int i = 0; i < imagePack.ObjectData.Length; i++) |
208 | { | 208 | { |
209 | foreach (Entity ent in m_world.Entities.Values) | 209 | OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID, imagePack.ObjectData[i].TextureEntry, this); |
210 | { | 210 | |
211 | if (ent.localid == imagePack.ObjectData[i].ObjectLocalID) | ||
212 | { | ||
213 | ((OpenSim.world.Primitive)ent).UpdateTexture(imagePack.ObjectData[i].TextureEntry); | ||
214 | } | ||
215 | } | ||
216 | } | ||
217 | break; | ||
218 | case PacketType.ObjectFlagUpdate: | ||
219 | ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack; | ||
220 | foreach (Entity ent in m_world.Entities.Values) | ||
221 | { | ||
222 | if (ent.localid == flags.AgentData.ObjectLocalID) | ||
223 | { | ||
224 | ((OpenSim.world.Primitive)ent).UpdateObjectFlags(flags); | ||
225 | } | ||
226 | } | 211 | } |
227 | break; | 212 | break; |
213 | #endregion | ||
228 | 214 | ||
229 | case PacketType.ViewerEffect: | ||
230 | ViewerEffectPacket viewer = (ViewerEffectPacket)Pack; | ||
231 | foreach (ClientView client in m_clientThreads.Values) | ||
232 | { | ||
233 | if (client.AgentID != this.AgentID) | ||
234 | { | ||
235 | viewer.AgentData.AgentID = client.AgentID; | ||
236 | viewer.AgentData.SessionID = client.SessionID; | ||
237 | client.OutPacket(viewer); | ||
238 | } | ||
239 | } | ||
240 | break; | ||
241 | #endregion | ||
242 | |||
243 | #region Inventory/Asset/Other related packets | 215 | #region Inventory/Asset/Other related packets |
244 | case PacketType.RequestImage: | 216 | case PacketType.RequestImage: |
245 | RequestImagePacket imageRequest = (RequestImagePacket)Pack; | 217 | RequestImagePacket imageRequest = (RequestImagePacket)Pack; |
@@ -464,6 +436,16 @@ namespace OpenSim | |||
464 | } | 436 | } |
465 | break; | 437 | break; |
466 | #endregion | 438 | #endregion |
439 | |||
440 | #region unimplemented handlers | ||
441 | case PacketType.AgentIsNowWearing: | ||
442 | // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; | ||
443 | //Console.WriteLine(Pack.ToString()); | ||
444 | break; | ||
445 | case PacketType.ObjectScale: | ||
446 | //OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, Pack.ToString()); | ||
447 | break; | ||
448 | #endregion | ||
467 | } | 449 | } |
468 | } | 450 | } |
469 | } | 451 | } |