diff options
Diffstat (limited to 'OpenSim/Framework/IClientAPI.cs')
-rw-r--r-- | OpenSim/Framework/IClientAPI.cs | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs new file mode 100644 index 0000000..4482ae6 --- /dev/null +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -0,0 +1,447 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.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 | */ | ||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Net; | ||
31 | using libsecondlife; | ||
32 | using libsecondlife.Packets; | ||
33 | |||
34 | namespace OpenSim.Framework | ||
35 | { | ||
36 | // Base Args Interface | ||
37 | public interface IEventArgs | ||
38 | { | ||
39 | IScene Scene { get; set; } | ||
40 | |||
41 | IClientAPI Sender { get; set; } | ||
42 | } | ||
43 | |||
44 | public delegate void ViewerEffectEventHandler(IClientAPI sender, ViewerEffectPacket.EffectBlock[] effectBlock); | ||
45 | |||
46 | public delegate void ChatFromViewer(Object sender, ChatFromViewerArgs e); | ||
47 | |||
48 | public enum ChatTypeEnum | ||
49 | { | ||
50 | Whisper = 0, | ||
51 | Say = 1, | ||
52 | Shout = 2, | ||
53 | Broadcast = 0xFF | ||
54 | } ; | ||
55 | |||
56 | /// <summary> | ||
57 | /// ChatFromViewer Arguments | ||
58 | /// </summary> | ||
59 | public class ChatFromViewerArgs : EventArgs, IEventArgs | ||
60 | { | ||
61 | protected string m_message; | ||
62 | protected ChatTypeEnum m_type; | ||
63 | protected int m_channel; | ||
64 | protected LLVector3 m_position; | ||
65 | protected string m_from; | ||
66 | |||
67 | protected IClientAPI m_sender; | ||
68 | protected IScene m_scene; | ||
69 | |||
70 | /// <summary> | ||
71 | /// The message sent by the user | ||
72 | /// </summary> | ||
73 | public string Message | ||
74 | { | ||
75 | get { return m_message; } | ||
76 | set { m_message = value; } | ||
77 | } | ||
78 | |||
79 | /// <summary> | ||
80 | /// The type of message, eg say, shout, broadcast. | ||
81 | /// </summary> | ||
82 | public ChatTypeEnum Type | ||
83 | { | ||
84 | get { return m_type; } | ||
85 | set { m_type = value; } | ||
86 | } | ||
87 | |||
88 | /// <summary> | ||
89 | /// Which channel was this message sent on? Different channels may have different listeners. Public chat is on channel zero. | ||
90 | /// </summary> | ||
91 | public int Channel | ||
92 | { | ||
93 | get { return m_channel; } | ||
94 | set { m_channel = value; } | ||
95 | } | ||
96 | |||
97 | /// <summary> | ||
98 | /// The position of the sender at the time of the message broadcast. | ||
99 | /// </summary> | ||
100 | public LLVector3 Position | ||
101 | { | ||
102 | get { return m_position; } | ||
103 | set { m_position = value; } | ||
104 | } | ||
105 | |||
106 | /// <summary> | ||
107 | /// The name of the sender (needed for scripts) | ||
108 | /// </summary> | ||
109 | public string From | ||
110 | { | ||
111 | get { return m_from; } | ||
112 | set { m_from = value; } | ||
113 | } | ||
114 | |||
115 | /// <summary> | ||
116 | /// The client responsible for sending the message, or null. | ||
117 | /// </summary> | ||
118 | public IClientAPI Sender | ||
119 | { | ||
120 | get { return m_sender; } | ||
121 | set { m_sender = value; } | ||
122 | } | ||
123 | |||
124 | public IScene Scene | ||
125 | { | ||
126 | get { return m_scene; } | ||
127 | set { m_scene = value; } | ||
128 | } | ||
129 | |||
130 | public ChatFromViewerArgs() | ||
131 | { | ||
132 | m_position = new LLVector3(); | ||
133 | } | ||
134 | } | ||
135 | |||
136 | public class TextureRequestArgs : EventArgs | ||
137 | { | ||
138 | protected LLUUID m_requestedAssetID; | ||
139 | private sbyte m_discardLevel; | ||
140 | private uint m_packetNumber; | ||
141 | |||
142 | public uint PacketNumber | ||
143 | { | ||
144 | get { return m_packetNumber; } | ||
145 | set { m_packetNumber = value; } | ||
146 | } | ||
147 | |||
148 | public sbyte DiscardLevel | ||
149 | { | ||
150 | get { return m_discardLevel; } | ||
151 | set { m_discardLevel = value; } | ||
152 | } | ||
153 | |||
154 | public LLUUID RequestedAssetID | ||
155 | { | ||
156 | get { return m_requestedAssetID; } | ||
157 | set { m_requestedAssetID = value; } | ||
158 | } | ||
159 | } | ||
160 | |||
161 | public delegate void TextureRequest(Object sender, TextureRequestArgs e); | ||
162 | |||
163 | public delegate void ImprovedInstantMessage( | ||
164 | LLUUID fromAgentID, LLUUID fromAgentSession, LLUUID toAgentID, LLUUID imSessionID, uint timestamp, | ||
165 | string fromAgentName, string message, byte dialog); // Cut down from full list | ||
166 | public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos); | ||
167 | |||
168 | public delegate void ModifyTerrain( | ||
169 | float height, float seconds, byte size, byte action, float north, float west, IClientAPI remoteClient); | ||
170 | |||
171 | public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam); | ||
172 | |||
173 | public delegate void StartAnim(IClientAPI remoteClient, LLUUID animID, int seq); | ||
174 | |||
175 | public delegate void LinkObjects(uint parent, List<uint> children); | ||
176 | |||
177 | public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY); | ||
178 | |||
179 | public delegate void TeleportLocationRequest( | ||
180 | IClientAPI remoteClient, ulong regionHandle, LLVector3 position, LLVector3 lookAt, uint flags); | ||
181 | |||
182 | public delegate void DisconnectUser(); | ||
183 | |||
184 | public delegate void RequestAvatarProperties(IClientAPI remoteClient, LLUUID avatarID); | ||
185 | |||
186 | public delegate void GenericCall(IClientAPI remoteClient); | ||
187 | |||
188 | public delegate void GenericCall2(); | ||
189 | |||
190 | public delegate void GenericCall3(Packet packet); | ||
191 | |||
192 | // really don't want to be passing packets in these events, so this is very temporary. | ||
193 | public delegate void GenericCall4(Packet packet, IClientAPI remoteClient); | ||
194 | |||
195 | public delegate void GenericCall5(IClientAPI remoteClient, bool status); | ||
196 | |||
197 | public delegate void GenericCall6(LLUUID uid); | ||
198 | |||
199 | public delegate void GenericCall7(uint localID, string message); | ||
200 | |||
201 | public delegate void UpdateShape(uint localID, ObjectShapePacket.ObjectDataBlock shapeBlock); | ||
202 | |||
203 | public delegate void ObjectExtraParams(uint localID, ushort type, bool inUse, byte[] data); | ||
204 | |||
205 | public delegate void ObjectSelect(uint localID, IClientAPI remoteClient); | ||
206 | |||
207 | public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient); | ||
208 | |||
209 | public delegate void UpdatePrimFlags(uint localID, Packet packet, IClientAPI remoteClient); | ||
210 | |||
211 | public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient); | ||
212 | |||
213 | public delegate void UpdateVector(uint localID, LLVector3 pos, IClientAPI remoteClient); | ||
214 | |||
215 | public delegate void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient); | ||
216 | |||
217 | public delegate void UpdatePrimSingleRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient); | ||
218 | |||
219 | public delegate void UpdatePrimGroupRotation(uint localID, LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient); | ||
220 | |||
221 | public delegate void ObjectDuplicate(uint localID, LLVector3 offset, uint dupeFlags); | ||
222 | |||
223 | public delegate void StatusChange(bool status); | ||
224 | |||
225 | public delegate void NewAvatar(IClientAPI remoteClient, LLUUID agentID, bool status); | ||
226 | |||
227 | public delegate void UpdateAgent(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation); | ||
228 | |||
229 | public delegate void AgentRequestSit(IClientAPI remoteClient, LLUUID agentID, LLUUID targetID, LLVector3 offset); | ||
230 | |||
231 | public delegate void AgentSit(IClientAPI remoteClient, LLUUID agentID); | ||
232 | |||
233 | public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient); | ||
234 | |||
235 | public delegate void ParcelPropertiesRequest( | ||
236 | int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client); | ||
237 | |||
238 | public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client); | ||
239 | |||
240 | public delegate void ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client); | ||
241 | |||
242 | public delegate void ParcelPropertiesUpdateRequest(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client); | ||
243 | |||
244 | public delegate void ParcelSelectObjects(int land_local_id, int request_type, IClientAPI remote_client); | ||
245 | |||
246 | public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client); | ||
247 | |||
248 | public delegate void EstateOwnerMessageRequest(EstateOwnerMessagePacket packet, IClientAPI remote_client); | ||
249 | |||
250 | public delegate void UUIDNameRequest(LLUUID id, IClientAPI remote_client); | ||
251 | |||
252 | public delegate void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape); | ||
253 | |||
254 | public delegate void CreateInventoryFolder( | ||
255 | IClientAPI remoteClient, LLUUID folderID, ushort folderType, string folderName, LLUUID parentID); | ||
256 | |||
257 | public delegate void CreateNewInventoryItem( | ||
258 | IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, uint callbackID, string description, string name, | ||
259 | sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask); | ||
260 | |||
261 | public delegate void FetchInventoryDescendents( | ||
262 | IClientAPI remoteClient, LLUUID folderID, LLUUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder); | ||
263 | |||
264 | public delegate void FetchInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID ownerID); | ||
265 | |||
266 | public delegate void RequestTaskInventory(IClientAPI remoteClient, uint localID); | ||
267 | |||
268 | public delegate void UpdateInventoryItemTransaction( | ||
269 | IClientAPI remoteClient, LLUUID transactionID, LLUUID assetID, LLUUID itemID); | ||
270 | |||
271 | public delegate void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID); | ||
272 | |||
273 | public delegate void UpdateTaskInventory(IClientAPI remoteClient, LLUUID itemID, LLUUID folderID, uint localID); | ||
274 | |||
275 | public delegate void RemoveTaskInventory(IClientAPI remoteClient, LLUUID itemID, uint localID); | ||
276 | |||
277 | public delegate void UDPAssetUploadRequest( | ||
278 | IClientAPI remoteClient, LLUUID assetID, LLUUID transaction, sbyte type, byte[] data, bool storeLocal); | ||
279 | |||
280 | public delegate void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data); | ||
281 | |||
282 | public delegate void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName); | ||
283 | |||
284 | public delegate void ConfirmXfer(IClientAPI remoteClient, ulong xferID, uint packetID); | ||
285 | |||
286 | public interface IClientAPI | ||
287 | { | ||
288 | event ImprovedInstantMessage OnInstantMessage; | ||
289 | event ChatFromViewer OnChatFromViewer; | ||
290 | event TextureRequest OnRequestTexture; | ||
291 | event RezObject OnRezObject; | ||
292 | event ModifyTerrain OnModifyTerrain; | ||
293 | event SetAppearance OnSetAppearance; | ||
294 | event StartAnim OnStartAnim; | ||
295 | event LinkObjects OnLinkObjects; | ||
296 | event RequestMapBlocks OnRequestMapBlocks; | ||
297 | event TeleportLocationRequest OnTeleportLocationRequest; | ||
298 | event DisconnectUser OnDisconnectUser; | ||
299 | event RequestAvatarProperties OnRequestAvatarProperties; | ||
300 | |||
301 | event GenericCall4 OnDeRezObject; | ||
302 | event GenericCall OnRegionHandShakeReply; | ||
303 | event GenericCall OnRequestWearables; | ||
304 | event GenericCall2 OnCompleteMovementToRegion; | ||
305 | event UpdateAgent OnAgentUpdate; | ||
306 | event AgentRequestSit OnAgentRequestSit; | ||
307 | event AgentSit OnAgentSit; | ||
308 | event GenericCall OnRequestAvatarsData; | ||
309 | event AddNewPrim OnAddPrim; | ||
310 | event ObjectDuplicate OnObjectDuplicate; | ||
311 | event UpdateVector OnGrabObject; | ||
312 | event ObjectSelect OnDeGrabObject; | ||
313 | event MoveObject OnGrabUpdate; | ||
314 | |||
315 | event UpdateShape OnUpdatePrimShape; | ||
316 | event ObjectExtraParams OnUpdateExtraParams; | ||
317 | event ObjectSelect OnObjectSelect; | ||
318 | event ObjectDeselect OnObjectDeselect; | ||
319 | event GenericCall7 OnObjectDescription; | ||
320 | event GenericCall7 OnObjectName; | ||
321 | event UpdatePrimFlags OnUpdatePrimFlags; | ||
322 | event UpdatePrimTexture OnUpdatePrimTexture; | ||
323 | event UpdateVector OnUpdatePrimGroupPosition; | ||
324 | event UpdateVector OnUpdatePrimSinglePosition; | ||
325 | event UpdatePrimRotation OnUpdatePrimGroupRotation; | ||
326 | event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; | ||
327 | event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; | ||
328 | event UpdateVector OnUpdatePrimScale; | ||
329 | event StatusChange OnChildAgentStatus; | ||
330 | event GenericCall2 OnStopMovement; | ||
331 | event GenericCall6 OnRemoveAvatar; | ||
332 | |||
333 | event CreateNewInventoryItem OnCreateNewInventoryItem; | ||
334 | event CreateInventoryFolder OnCreateNewInventoryFolder; | ||
335 | event FetchInventoryDescendents OnFetchInventoryDescendents; | ||
336 | event FetchInventory OnFetchInventory; | ||
337 | event RequestTaskInventory OnRequestTaskInventory; | ||
338 | event UpdateInventoryItemTransaction OnUpdateInventoryItem; | ||
339 | event UDPAssetUploadRequest OnAssetUploadRequest; | ||
340 | event XferReceive OnXferReceive; | ||
341 | event RequestXfer OnRequestXfer; | ||
342 | event ConfirmXfer OnConfirmXfer; | ||
343 | event RezScript OnRezScript; | ||
344 | event UpdateTaskInventory OnUpdateTaskInventory; | ||
345 | event RemoveTaskInventory OnRemoveTaskItem; | ||
346 | |||
347 | event UUIDNameRequest OnNameFromUUIDRequest; | ||
348 | |||
349 | event ParcelPropertiesRequest OnParcelPropertiesRequest; | ||
350 | event ParcelDivideRequest OnParcelDivideRequest; | ||
351 | event ParcelJoinRequest OnParcelJoinRequest; | ||
352 | event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest; | ||
353 | event ParcelSelectObjects OnParcelSelectObjects; | ||
354 | event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest; | ||
355 | event EstateOwnerMessageRequest OnEstateOwnerMessage; | ||
356 | |||
357 | LLVector3 StartPos { get; set; } | ||
358 | |||
359 | LLUUID AgentId { get; } | ||
360 | |||
361 | LLUUID SessionId { get; } | ||
362 | |||
363 | string FirstName { get; } | ||
364 | |||
365 | string LastName { get; } | ||
366 | |||
367 | uint CircuitCode { get; set; } | ||
368 | |||
369 | void OutPacket(Packet newPack); | ||
370 | void SendWearables(AvatarWearable[] wearables); | ||
371 | void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry); | ||
372 | void SendStartPingCheck(byte seq); | ||
373 | void SendKillObject(ulong regionHandle, uint localID); | ||
374 | void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId); | ||
375 | void SendRegionHandshake(RegionInfo regionInfo); | ||
376 | void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||
377 | void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | ||
378 | |||
379 | void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, | ||
380 | LLUUID imSessionID, string fromName, byte dialog, uint timeStamp); | ||
381 | |||
382 | void SendLayerData(float[] map); | ||
383 | void SendLayerData(int px, int py, float[] map); | ||
384 | void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look); | ||
385 | void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint); | ||
386 | AgentCircuitData RequestClientInfo(); | ||
387 | |||
388 | void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint, | ||
389 | string capsURL); | ||
390 | |||
391 | void SendMapBlock(List<MapBlockData> mapBlocks); | ||
392 | void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags); | ||
393 | |||
394 | void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, | ||
395 | uint flags, string capsURL); | ||
396 | |||
397 | void SendTeleportCancel(); | ||
398 | void SendTeleportLocationStart(); | ||
399 | void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance); | ||
400 | |||
401 | void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, | ||
402 | LLVector3 Pos, byte[] textureEntry, uint parentID); | ||
403 | |||
404 | void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, | ||
405 | LLVector3 velocity, LLQuaternion rotation); | ||
406 | |||
407 | void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations); | ||
408 | |||
409 | void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); | ||
410 | |||
411 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, | ||
412 | LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, | ||
413 | uint parentID, byte[] particleSystem, LLQuaternion rotation); | ||
414 | |||
415 | void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, | ||
416 | LLQuaternion rotation); | ||
417 | |||
418 | void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items); | ||
419 | void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item); | ||
420 | void SendInventoryItemUpdate(InventoryItemBase Item); | ||
421 | void SendRemoveInventoryItem(LLUUID itemID); | ||
422 | void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName); | ||
423 | void SendXferPacket(ulong xferID, uint packet, byte[] data); | ||
424 | |||
425 | void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID); | ||
426 | void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags); | ||
427 | |||
428 | void SendNameReply(LLUUID profileId, string firstname, string lastname); | ||
429 | void SendAlertMessage(string message); | ||
430 | void SendAgentAlertMessage(string message, bool modal); | ||
431 | void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, string url); | ||
432 | bool AddMoney(int debit); | ||
433 | |||
434 | void SendViewerTime(int phase); | ||
435 | |||
436 | void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout, | ||
437 | uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID); | ||
438 | |||
439 | void SetDebug(int newDebug); | ||
440 | void InPacket(Packet NewPack); | ||
441 | void Close(); | ||
442 | event ViewerEffectEventHandler OnViewerEffect; | ||
443 | event Action<IClientAPI> OnLogout; | ||
444 | event Action<IClientAPI> OnConnectionClosed; | ||
445 | void SendLogoutPacket(); | ||
446 | } | ||
447 | } \ No newline at end of file | ||