aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/IClientAPI.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/IClientAPI.cs')
-rw-r--r--OpenSim/Framework/IClientAPI.cs1483
1 files changed, 1483 insertions, 0 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
new file mode 100644
index 0000000..e36edb2
--- /dev/null
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -0,0 +1,1483 @@
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 OpenSimulator 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.Net;
31using OpenMetaverse;
32using OpenMetaverse.Packets;
33
34namespace OpenSim.Framework
35{
36 #region Client API Delegate definitions
37
38 public delegate void ViewerEffectEventHandler(IClientAPI sender, List<ViewerEffectEventHandlerArg> args);
39
40 public delegate void ChatMessage(Object sender, OSChatMessage e);
41
42 public delegate void GenericMessage(Object sender, string method, List<String> args);
43
44 public delegate void TextureRequest(Object sender, TextureRequestArgs e);
45
46 public delegate void AvatarNowWearing(IClientAPI sender, AvatarWearingArgs e);
47
48 public delegate void ImprovedInstantMessage(IClientAPI remoteclient, GridInstantMessage im);
49
50 public delegate void RezObject(IClientAPI remoteClient, UUID itemID, Vector3 RayEnd, Vector3 RayStart,
51 UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
52 bool RezSelected, bool RemoveItem, UUID fromTaskID);
53
54 public delegate ISceneEntity RezSingleAttachmentFromInv(IClientAPI remoteClient, UUID itemID, uint AttachmentPt);
55
56 public delegate void RezMultipleAttachmentsFromInv(IClientAPI remoteClient, List<KeyValuePair<UUID, uint>> rezlist );
57
58 public delegate void ObjectAttach(
59 IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, bool silent);
60
61 public delegate void ModifyTerrain(UUID user,
62 float height, float seconds, byte size, byte action, float north, float west, float south, float east,
63 UUID agentId);
64
65 public delegate void NetworkStats(int inPackets, int outPackets, int unAckedBytes);
66
67 public delegate void CachedTextureRequest(IClientAPI remoteClient, int serial, List<CachedTextureRequestArg> cachedTextureRequest);
68
69 public delegate void SetAppearance(IClientAPI remoteClient, Primitive.TextureEntry textureEntry, byte[] visualParams, Vector3 AvSize, WearableCacheItem[] CacheItems);
70
71 public delegate void StartAnim(IClientAPI remoteClient, UUID animID);
72
73 public delegate void StopAnim(IClientAPI remoteClient, UUID animID);
74
75 public delegate void LinkObjects(IClientAPI remoteClient, uint parent, List<uint> children);
76
77 public delegate void DelinkObjects(List<uint> primIds, IClientAPI client);
78
79 public delegate void RequestMapBlocks(IClientAPI remoteClient, int minX, int minY, int maxX, int maxY, uint flag);
80
81 public delegate void RequestMapName(IClientAPI remoteClient, string mapName, uint flags);
82
83 public delegate void TeleportLocationRequest(
84 IClientAPI remoteClient, ulong regionHandle, Vector3 position, Vector3 lookAt, uint flags);
85
86 public delegate void TeleportLandmarkRequest(
87 IClientAPI remoteClient, AssetLandmark lm);
88
89 public delegate void TeleportCancel(IClientAPI remoteClient);
90
91 public delegate void DisconnectUser();
92
93 public delegate void RequestAvatarProperties(IClientAPI remoteClient, UUID avatarID);
94
95 public delegate void UpdateAvatarProperties(IClientAPI remoteClient, UserProfileData ProfileData);
96
97 public delegate void SetAlwaysRun(IClientAPI remoteClient, bool SetAlwaysRun);
98
99 public delegate void GenericCall1(IClientAPI remoteClient);
100
101 public delegate void GenericCall2();
102
103 // really don't want to be passing packets in these events, so this is very temporary.
104 public delegate void GenericCall4(Packet packet, IClientAPI remoteClient);
105
106 public delegate void DeRezObject(
107 IClientAPI remoteClient, List<uint> localIDs, UUID groupID, DeRezAction action, UUID destinationID);
108
109 public delegate void GenericCall5(IClientAPI remoteClient, bool status);
110
111 public delegate void GenericCall7(IClientAPI remoteClient, uint localID, string message);
112
113 public delegate void UpdateShape(UUID agentID, uint localID, UpdateShapeArgs shapeBlock);
114
115 public delegate void ObjectExtraParams(UUID agentID, uint localID, ushort type, bool inUse, byte[] data);
116
117 public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
118
119 public delegate void ObjectRequest(uint localID, IClientAPI remoteClient);
120
121 public delegate void RequestObjectPropertiesFamily(
122 IClientAPI remoteClient, UUID AgentID, uint RequestFlags, UUID TaskID);
123
124 public delegate void ObjectDeselect(uint localID, IClientAPI remoteClient);
125
126 public delegate void ObjectDrop(uint localID, IClientAPI remoteClient);
127
128 public delegate void UpdatePrimFlags(
129 uint localID, bool UsePhysics, bool IsTemporary, bool IsPhantom, ExtraPhysicsData PhysData, IClientAPI remoteClient);
130
131 public delegate void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient);
132
133 public delegate void UpdateVector(uint localID, Vector3 pos, IClientAPI remoteClient);
134
135 public delegate void UpdatePrimRotation(uint localID, Quaternion rot, IClientAPI remoteClient);
136
137 public delegate void UpdatePrimSingleRotation(uint localID, Quaternion rot, IClientAPI remoteClient);
138
139 public delegate void UpdatePrimSingleRotationPosition(uint localID, Quaternion rot, Vector3 pos, IClientAPI remoteClient);
140
141 public delegate void UpdatePrimGroupRotation(uint localID, Vector3 pos, Quaternion rot, IClientAPI remoteClient);
142
143 public delegate void ObjectDuplicate(uint localID, Vector3 offset, uint dupeFlags, UUID AgentID, UUID GroupID);
144
145 public delegate void ObjectDuplicateOnRay(uint localID, uint dupeFlags, UUID AgentID, UUID GroupID,
146 UUID RayTargetObj, Vector3 RayEnd, Vector3 RayStart,
147 bool BypassRaycast, bool RayEndIsIntersection, bool CopyCenters,
148 bool CopyRotates);
149
150 public delegate void StatusChange(bool status);
151
152 public delegate void NewAvatar(IClientAPI remoteClient, UUID agentID, bool status);
153
154 public delegate void UpdateAgent(IClientAPI remoteClient, AgentUpdateArgs agentData);
155
156 public delegate void AgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset);
157
158 public delegate void AgentSit(IClientAPI remoteClient, UUID agentID);
159
160 public delegate void LandUndo(IClientAPI remoteClient);
161
162 public delegate void AvatarPickerRequest(IClientAPI remoteClient, UUID agentdata, UUID queryID, string UserQuery);
163
164 public delegate void GrabObject(
165 uint localID, Vector3 pos, IClientAPI remoteClient, List<SurfaceTouchEventArgs> surfaceArgs);
166
167 public delegate void DeGrabObject(
168 uint localID, IClientAPI remoteClient, List<SurfaceTouchEventArgs> surfaceArgs);
169
170 public delegate void MoveObject(
171 UUID objectID, Vector3 offset, Vector3 grapPos, IClientAPI remoteClient, List<SurfaceTouchEventArgs> surfaceArgs);
172
173 public delegate void SpinStart(UUID objectID, IClientAPI remoteClient);
174 public delegate void SpinObject(UUID objectID, Quaternion rotation, IClientAPI remoteClient);
175 public delegate void SpinStop(UUID objectID, IClientAPI remoteClient);
176
177 public delegate void ParcelAccessListRequest(
178 UUID agentID, UUID sessionID, uint flags, int sequenceID, int landLocalID, IClientAPI remote_client);
179
180 public delegate void ParcelAccessListUpdateRequest(UUID agentID, uint flags,
181 int landLocalID, UUID transactionID, int sequenceID,
182 int sections, List<LandAccessEntry> entries,
183 IClientAPI remote_client);
184
185 public delegate void ParcelPropertiesRequest(
186 int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client);
187
188 public delegate void ParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client);
189
190 public delegate void ParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client);
191
192 public delegate void ParcelPropertiesUpdateRequest(LandUpdateArgs args, int local_id, IClientAPI remote_client);
193
194 public delegate void ParcelSelectObjects(int land_local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client);
195
196 public delegate void ParcelObjectOwnerRequest(int local_id, IClientAPI remote_client);
197
198 public delegate void ParcelAbandonRequest(int local_id, IClientAPI remote_client);
199
200 public delegate void ParcelGodForceOwner(int local_id, UUID ownerID, IClientAPI remote_client);
201
202 public delegate void ParcelReclaim(int local_id, IClientAPI remote_client);
203
204 public delegate void ParcelReturnObjectsRequest(
205 int local_id, uint return_type, UUID[] agent_ids, UUID[] selected_ids, IClientAPI remote_client);
206
207 public delegate void ParcelDeedToGroup(int local_id, UUID group_id, IClientAPI remote_client);
208
209 public delegate void EstateOwnerMessageRequest(
210 UUID AgentID, UUID SessionID, UUID TransactionID, UUID Invoice, byte[] Method, byte[][] Parameters,
211 IClientAPI remote_client);
212
213 public delegate void RegionInfoRequest(IClientAPI remote_client);
214
215 public delegate void EstateCovenantRequest(IClientAPI remote_client);
216
217 public delegate void UUIDNameRequest(UUID id, IClientAPI remote_client);
218
219 public delegate void AddNewPrim(
220 UUID ownerID, UUID groupID, Vector3 RayEnd, Quaternion rot, PrimitiveBaseShape shape, byte bypassRaycast, Vector3 RayStart,
221 UUID RayTargetID,
222 byte RayEndIsIntersection);
223
224 public delegate void RequestGodlikePowers(
225 UUID AgentID, UUID SessionID, UUID token, bool GodLike, IClientAPI remote_client);
226
227 public delegate void GodKickUser(
228 UUID GodAgentID, UUID GodSessionID, UUID AgentID, uint kickflags, byte[] reason);
229
230 public delegate void CreateInventoryFolder(
231 IClientAPI remoteClient, UUID folderID, ushort folderType, string folderName, UUID parentID);
232
233 public delegate void UpdateInventoryFolder(
234 IClientAPI remoteClient, UUID folderID, ushort type, string name, UUID parentID);
235
236 public delegate void MoveInventoryFolder(
237 IClientAPI remoteClient, UUID folderID, UUID parentID);
238
239 public delegate void CreateNewInventoryItem(
240 IClientAPI remoteClient, UUID transActionID, UUID folderID, uint callbackID, string description, string name,
241 sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask, int creationDate);
242
243 public delegate void LinkInventoryItem(
244 IClientAPI remoteClient, UUID transActionID, UUID folderID, uint callbackID, string description, string name,
245 sbyte invType, sbyte type, UUID olditemID);
246
247 public delegate void FetchInventoryDescendents(
248 IClientAPI remoteClient, UUID folderID, UUID ownerID, bool fetchFolders, bool fetchItems, int sortOrder);
249
250 public delegate void PurgeInventoryDescendents(
251 IClientAPI remoteClient, UUID folderID);
252
253 public delegate void FetchInventory(IClientAPI remoteClient, UUID itemID, UUID ownerID);
254
255 public delegate void RequestTaskInventory(IClientAPI remoteClient, uint localID);
256
257/* public delegate void UpdateInventoryItem(
258 IClientAPI remoteClient, UUID transactionID, UUID itemID, string name, string description,
259 uint nextOwnerMask);*/
260
261 public delegate void UpdateInventoryItem(
262 IClientAPI remoteClient, UUID transactionID, UUID itemID, InventoryItemBase itemUpd);
263
264 public delegate void CopyInventoryItem(
265 IClientAPI remoteClient, uint callbackID, UUID oldAgentID, UUID oldItemID, UUID newFolderID,
266 string newName);
267
268 public delegate void MoveInventoryItem(
269 IClientAPI remoteClient, List<InventoryItemBase> items);
270
271 public delegate void RemoveInventoryItem(
272 IClientAPI remoteClient, List<UUID> itemIDs);
273
274 public delegate void RemoveInventoryFolder(
275 IClientAPI remoteClient, List<UUID> folderIDs);
276
277 public delegate void RequestAsset(IClientAPI remoteClient, RequestAssetArgs transferRequest);
278
279 public delegate void AbortXfer(IClientAPI remoteClient, ulong xferID);
280
281 public delegate void RezScript(IClientAPI remoteClient, InventoryItemBase item, UUID transactionID, uint localID);
282
283 public delegate void UpdateTaskInventory(
284 IClientAPI remoteClient, UUID transactionID, TaskInventoryItem item, uint localID);
285
286 public delegate void MoveTaskInventory(IClientAPI remoteClient, UUID folderID, uint localID, UUID itemID);
287
288 public delegate void RemoveTaskInventory(IClientAPI remoteClient, UUID itemID, uint localID);
289
290 public delegate void UDPAssetUploadRequest(
291 IClientAPI remoteClient, UUID assetID, UUID transaction, sbyte type, byte[] data, bool storeLocal,
292 bool tempFile);
293
294 public delegate void XferReceive(IClientAPI remoteClient, ulong xferID, uint packetID, byte[] data);
295
296 public delegate void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName);
297
298 public delegate void ConfirmXfer(IClientAPI remoteClient, ulong xferID, uint packetID);
299
300 public delegate void FriendActionDelegate(
301 IClientAPI remoteClient, UUID transactionID, List<UUID> callingCardFolders);
302
303 public delegate void FriendshipTermination(IClientAPI remoteClient, UUID ExID);
304
305 public delegate void MoneyTransferRequest(
306 UUID sourceID, UUID destID, int amount, int transactionType, string description);
307
308 public delegate void ParcelBuy(UUID agentId, UUID groupId, bool final, bool groupOwned,
309 bool removeContribution, int parcelLocalID, int parcelArea, int parcelPrice,
310 bool authenticated);
311
312 // We keep all this information for fraud purposes in the future.
313 public delegate void MoneyBalanceRequest(IClientAPI remoteClient, UUID agentID, UUID sessionID, UUID TransactionID);
314
315 public delegate void ObjectPermissions(
316 IClientAPI controller, UUID agentID, UUID sessionID, byte field, uint localId, uint mask, byte set);
317
318 public delegate void EconomyDataRequest(IClientAPI client);
319
320 public delegate void ObjectIncludeInSearch(IClientAPI remoteClient, bool IncludeInSearch, uint localID);
321
322 public delegate void ScriptAnswer(IClientAPI remoteClient, UUID objectID, UUID itemID, int answer);
323
324 public delegate void RequestPayPrice(IClientAPI remoteClient, UUID objectID);
325
326 public delegate void ObjectSaleInfo(
327 IClientAPI remoteClient, UUID agentID, UUID sessionID, uint localID, byte saleType, int salePrice);
328
329 public delegate void ObjectBuy(
330 IClientAPI remoteClient, UUID agentID, UUID sessionID, UUID groupID, UUID categoryID, uint localID,
331 byte saleType, int salePrice);
332
333 public delegate void BuyObjectInventory(
334 IClientAPI remoteClient, UUID agentID, UUID sessionID, UUID objectID, UUID itemID, UUID folderID);
335
336 public delegate void ForceReleaseControls(IClientAPI remoteClient, UUID agentID);
337
338 public delegate void GodLandStatRequest(
339 int parcelID, uint reportType, uint requestflags, string filter, IClientAPI remoteClient);
340
341 //Estate Requests
342 public delegate void DetailedEstateDataRequest(IClientAPI remoteClient, UUID invoice);
343
344 public delegate void SetEstateFlagsRequest(
345 bool blockTerraform, bool noFly, bool allowDamage, bool blockLandResell, int maxAgents, float objectBonusFactor,
346 int matureLevel, bool restrictPushObject, bool allowParcelChanges);
347
348 public delegate void SetEstateTerrainBaseTexture(IClientAPI remoteClient, int corner, UUID side);
349
350 public delegate void SetEstateTerrainDetailTexture(IClientAPI remoteClient, int corner, UUID side);
351
352 public delegate void SetEstateTerrainTextureHeights(IClientAPI remoteClient, int corner, float lowVal, float highVal
353 );
354
355 public delegate void CommitEstateTerrainTextureRequest(IClientAPI remoteClient);
356
357 public delegate void SetRegionTerrainSettings(
358 float waterHeight, float terrainRaiseLimit, float terrainLowerLimit, bool estateSun, bool fixedSun,
359 float sunHour, bool globalSun, bool estateFixed, float estateSunHour);
360
361 public delegate void EstateChangeInfo(IClientAPI client, UUID invoice, UUID senderID, UInt32 param1, UInt32 param2);
362
363 public delegate void EstateManageTelehub(IClientAPI client, UUID invoice, UUID senderID, string cmd, UInt32 param1);
364
365 public delegate void RequestTerrain(IClientAPI remoteClient, string clientFileName);
366
367 public delegate void BakeTerrain(IClientAPI remoteClient);
368
369
370 public delegate void EstateRestartSimRequest(IClientAPI remoteClient, int secondsTilReboot);
371
372 public delegate void EstateChangeCovenantRequest(IClientAPI remoteClient, UUID newCovenantID);
373
374 public delegate void UpdateEstateAccessDeltaRequest(
375 IClientAPI remote_client, UUID invoice, int estateAccessType, UUID user);
376
377 public delegate void SimulatorBlueBoxMessageRequest(
378 IClientAPI remoteClient, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message);
379
380 public delegate void EstateBlueBoxMessageRequest(
381 IClientAPI remoteClient, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message);
382
383 public delegate void EstateDebugRegionRequest(
384 IClientAPI remoteClient, UUID invoice, UUID senderID, bool scripted, bool collisionEvents, bool physics);
385
386 public delegate void EstateTeleportOneUserHomeRequest(
387 IClientAPI remoteClient, UUID invoice, UUID senderID, UUID prey);
388
389 public delegate void EstateTeleportAllUsersHomeRequest(IClientAPI remoteClient, UUID invoice, UUID senderID);
390
391 public delegate void RegionHandleRequest(IClientAPI remoteClient, UUID regionID);
392
393 public delegate void ParcelInfoRequest(IClientAPI remoteClient, UUID parcelID);
394
395 public delegate void ScriptReset(IClientAPI remoteClient, UUID objectID, UUID itemID);
396
397 public delegate void GetScriptRunning(IClientAPI remoteClient, UUID objectID, UUID itemID);
398
399 public delegate void SetScriptRunning(IClientAPI remoteClient, UUID objectID, UUID itemID, bool running);
400
401 public delegate void ActivateGesture(IClientAPI client, UUID gestureid, UUID assetId);
402
403 public delegate void DeactivateGesture(IClientAPI client, UUID gestureid);
404
405 public delegate void TerrainUnacked(IClientAPI remoteClient, int patchX, int patchY);
406
407 public delegate void ObjectOwner(IClientAPI remoteClient, UUID ownerID, UUID groupID, List<uint> localIDs);
408
409 public delegate void DirPlacesQuery(
410 IClientAPI remoteClient, UUID queryID, string queryText, int queryFlags, int category, string simName,
411 int queryStart);
412
413 public delegate void DirFindQuery(
414 IClientAPI remoteClient, UUID queryID, string queryText, uint queryFlags, int queryStart);
415
416 public delegate void DirLandQuery(
417 IClientAPI remoteClient, UUID queryID, uint queryFlags, uint searchType, int price, int area, int queryStart);
418
419 public delegate void DirPopularQuery(IClientAPI remoteClient, UUID queryID, uint queryFlags);
420
421 public delegate void DirClassifiedQuery(
422 IClientAPI remoteClient, UUID queryID, string queryText, uint queryFlags, uint category, int queryStart);
423
424 public delegate void EventInfoRequest(IClientAPI remoteClient, uint eventID);
425
426 public delegate void ParcelSetOtherCleanTime(IClientAPI remoteClient, int localID, int otherCleanTime);
427
428 public delegate void MapItemRequest(
429 IClientAPI remoteClient, uint flags, uint EstateID, bool godlike, uint itemtype, ulong regionhandle);
430
431 public delegate void OfferCallingCard(IClientAPI remoteClient, UUID destID, UUID transactionID);
432
433 public delegate void AcceptCallingCard(IClientAPI remoteClient, UUID transactionID, UUID folderID);
434
435 public delegate void DeclineCallingCard(IClientAPI remoteClient, UUID transactionID);
436
437 public delegate void SoundTrigger(
438 UUID soundId, UUID ownerid, UUID objid, UUID parentid, double Gain, Vector3 Position, UInt64 Handle, float radius);
439
440 public delegate void StartLure(byte lureType, string message, UUID targetID, IClientAPI client);
441 public delegate void TeleportLureRequest(UUID lureID, uint teleportFlags, IClientAPI client);
442
443 public delegate void ClassifiedInfoRequest(UUID classifiedID, IClientAPI client);
444 public delegate void ClassifiedInfoUpdate(UUID classifiedID, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, Vector3 globalPos, byte classifiedFlags, int price, IClientAPI client);
445 public delegate void ClassifiedDelete(UUID classifiedID, IClientAPI client);
446
447 public delegate void EventNotificationAddRequest(uint EventID, IClientAPI client);
448 public delegate void EventNotificationRemoveRequest(uint EventID, IClientAPI client);
449
450 public delegate void EventGodDelete(uint eventID, UUID queryID, string queryText, uint queryFlags, int queryStart, IClientAPI client);
451
452 public delegate void ParcelDwellRequest(int localID, IClientAPI client);
453
454 public delegate void UserInfoRequest(IClientAPI client);
455 public delegate void UpdateUserInfo(bool imViaEmail, bool visible, IClientAPI client);
456 public delegate void RetrieveInstantMessages(IClientAPI client);
457 public delegate void PickDelete(IClientAPI client, UUID pickID);
458 public delegate void PickGodDelete(IClientAPI client, UUID agentID, UUID pickID, UUID queryID);
459 public delegate void PickInfoUpdate(IClientAPI client, UUID pickID, UUID creatorID, bool topPick, string name, string desc, UUID snapshotID, int sortOrder, bool enabled);
460 public delegate void AvatarNotesUpdate(IClientAPI client, UUID targetID, string notes);
461 public delegate void MuteListRequest(IClientAPI client, uint muteCRC);
462 public delegate void AvatarInterestUpdate(IClientAPI client, uint wantmask, string wanttext, uint skillsmask, string skillstext, string languages);
463 public delegate void GrantUserFriendRights(IClientAPI client, UUID target, int rights);
464 public delegate void PlacesQuery(UUID QueryID, UUID TransactionID, string QueryText, uint QueryFlags, byte Category, string SimName, IClientAPI client);
465
466 public delegate void AgentFOV(IClientAPI client, float verticalAngle);
467
468 public delegate void MuteListEntryUpdate(IClientAPI client, UUID MuteID, string Name, int Flags,UUID AgentID);
469
470 public delegate void MuteListEntryRemove(IClientAPI client, UUID MuteID, string Name, UUID AgentID);
471
472 public delegate void AvatarInterestReply(IClientAPI client,UUID target, uint wantmask, string wanttext, uint skillsmask, string skillstext, string languages);
473
474 public delegate void FindAgentUpdate(IClientAPI client, UUID hunter, UUID target);
475
476 public delegate void TrackAgentUpdate(IClientAPI client, UUID hunter, UUID target);
477
478 public delegate void FreezeUserUpdate(IClientAPI client, UUID parcelowner,uint flags, UUID target);
479
480 public delegate void EjectUserUpdate(IClientAPI client, UUID parcelowner,uint flags, UUID target);
481
482 public delegate void NewUserReport(IClientAPI client, string regionName,UUID abuserID, byte catagory, byte checkflags, string details, UUID objectID, Vector3 postion, byte reportType ,UUID screenshotID, string Summary, UUID reporter);
483
484 public delegate void GodUpdateRegionInfoUpdate(IClientAPI client, float BillableFactor, ulong EstateID, ulong RegionFlags, byte[] SimName,int RedirectX, int RedirectY);
485
486 public delegate void GodlikeMessage(IClientAPI client, UUID requester, byte[] Method, byte[] Parameter);
487
488 public delegate void SaveStateHandler(IClientAPI client,UUID agentID);
489
490 public delegate void GroupAccountSummaryRequest(IClientAPI client,UUID agentID, UUID groupID);
491
492 public delegate void GroupAccountDetailsRequest(IClientAPI client,UUID agentID, UUID groupID, UUID transactionID, UUID sessionID);
493
494 public delegate void GroupAccountTransactionsRequest(IClientAPI client,UUID agentID, UUID groupID, UUID transactionID, UUID sessionID);
495
496 public delegate void ParcelBuyPass(IClientAPI client, UUID agentID, int ParcelLocalID);
497
498 public delegate void ParcelGodMark(IClientAPI client, UUID agentID, int ParcelLocalID);
499
500 public delegate void GroupActiveProposalsRequest(IClientAPI client,UUID agentID, UUID groupID, UUID transactionID, UUID sessionID);
501
502 public delegate void GroupVoteHistoryRequest(IClientAPI client,UUID agentID, UUID groupID, UUID transactionID, UUID sessionID);
503
504
505 public delegate void SimWideDeletesDelegate(IClientAPI client,UUID agentID, int flags, UUID targetID);
506
507 public delegate void SendPostcard(IClientAPI client);
508
509 #endregion
510
511 public struct DirPlacesReplyData
512 {
513 public UUID parcelID;
514 public string name;
515 public bool forSale;
516 public bool auction;
517 public float dwell;
518 public uint Status;
519 }
520
521 public struct DirPeopleReplyData
522 {
523 public UUID agentID;
524 public string firstName;
525 public string lastName;
526 public string group;
527 public bool online;
528 public int reputation;
529 }
530
531 public struct DirEventsReplyData
532 {
533 public UUID ownerID;
534 public string name;
535 public uint eventID;
536 public string date;
537 public uint unixTime;
538 public uint eventFlags;
539 public uint Status;
540 }
541
542 public struct DirGroupsReplyData
543 {
544 public UUID groupID;
545 public string groupName;
546 public int members;
547 public float searchOrder;
548 }
549
550 public struct DirClassifiedReplyData
551 {
552 public UUID classifiedID;
553 public string name;
554 public byte classifiedFlags;
555 public uint creationDate;
556 public uint expirationDate;
557 public int price;
558 public uint Status;
559 }
560
561 public struct DirLandReplyData
562 {
563 public UUID parcelID;
564 public string name;
565 public bool auction;
566 public bool forSale;
567 public int salePrice;
568 public int actualArea;
569 }
570
571 public struct DirPopularReplyData
572 {
573 public UUID parcelID;
574 public string name;
575 public float dwell;
576 }
577
578 public class IEntityUpdate
579 {
580 private ISceneEntity m_entity;
581 private uint m_flags;
582 private int m_updateTime;
583
584 public ISceneEntity Entity
585 {
586 get { return m_entity; }
587 }
588
589 public uint Flags
590 {
591 get { return m_flags; }
592 }
593
594 public int UpdateTime
595 {
596 get { return m_updateTime; }
597 }
598
599 public virtual void Update(IEntityUpdate update)
600 {
601 m_flags |= update.Flags;
602
603 // Use the older of the updates as the updateTime
604 if (Util.EnvironmentTickCountCompare(UpdateTime, update.UpdateTime) > 0)
605 m_updateTime = update.UpdateTime;
606 }
607
608 public IEntityUpdate(ISceneEntity entity, uint flags)
609 {
610 m_entity = entity;
611 m_flags = flags;
612 m_updateTime = Util.EnvironmentTickCount();
613 }
614
615 public IEntityUpdate(ISceneEntity entity, uint flags, Int32 updateTime)
616 {
617 m_entity = entity;
618 m_flags = flags;
619 m_updateTime = updateTime;
620 }
621 }
622
623 public class EntityUpdate : IEntityUpdate
624 {
625 private float m_timeDilation;
626
627 public float TimeDilation
628 {
629 get { return m_timeDilation; }
630 }
631
632 public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation)
633 : base(entity, (uint)flags)
634 {
635 // Flags = flags;
636 m_timeDilation = timedilation;
637 }
638
639 public EntityUpdate(ISceneEntity entity, PrimUpdateFlags flags, float timedilation, Int32 updateTime)
640 : base(entity,(uint)flags,updateTime)
641 {
642 m_timeDilation = timedilation;
643 }
644 }
645
646 public class PlacesReplyData
647 {
648 public UUID OwnerID;
649 public string Name;
650 public string Desc;
651 public int ActualArea;
652 public int BillableArea;
653 public byte Flags;
654 public uint GlobalX;
655 public uint GlobalY;
656 public uint GlobalZ;
657 public string SimName;
658 public UUID SnapshotID;
659 public uint Dwell;
660 public int Price;
661 }
662
663 /// <summary>
664 /// Specifies the fields that have been changed when sending a prim or
665 /// avatar update
666 /// </summary>
667 [Flags]
668 public enum PrimUpdateFlags : uint
669 {
670 None = 0,
671 AttachmentPoint = 1 << 0,
672 Material = 1 << 1,
673 ClickAction = 1 << 2,
674 Scale = 1 << 3,
675 ParentID = 1 << 4,
676 PrimFlags = 1 << 5,
677 PrimData = 1 << 6,
678 MediaURL = 1 << 7,
679 ScratchPad = 1 << 8,
680 Textures = 1 << 9,
681 TextureAnim = 1 << 10,
682 NameValue = 1 << 11,
683 Position = 1 << 12,
684 Rotation = 1 << 13,
685 Velocity = 1 << 14,
686 Acceleration = 1 << 15,
687 AngularVelocity = 1 << 16,
688 CollisionPlane = 1 << 17,
689 Text = 1 << 18,
690 Particles = 1 << 19,
691 ExtraData = 1 << 20,
692 Sound = 1 << 21,
693 Joint = 1 << 22,
694 FullUpdate = UInt32.MaxValue
695 }
696
697 public static class PrimUpdateFlagsExtensions
698 {
699 public static bool HasFlag(this PrimUpdateFlags updateFlags, PrimUpdateFlags flag)
700 {
701 return (updateFlags & flag) == flag;
702 }
703 }
704
705 public interface IClientAPI
706 {
707 Vector3 StartPos { get; set; }
708
709 UUID AgentId { get; }
710
711 /// <summary>
712 /// The scene agent for this client. This will only be set if the client has an agent in a scene (i.e. if it
713 /// is connected).
714 /// </summary>
715 ISceneAgent SceneAgent { get; set; }
716
717 UUID SessionId { get; }
718
719 UUID SecureSessionId { get; }
720
721 UUID ActiveGroupId { get; }
722
723 string ActiveGroupName { get; }
724
725 ulong ActiveGroupPowers { get; }
726
727 ulong GetGroupPowers(UUID groupID);
728
729 bool IsGroupMember(UUID GroupID);
730
731 string FirstName { get; }
732
733 string LastName { get; }
734
735 IScene Scene { get; }
736
737 // [Obsolete("LLClientView Specific - Replace with ???")]
738 int NextAnimationSequenceNumber { get; }
739
740 /// <summary>
741 /// Returns the full name of the agent/avatar represented by this client
742 /// </summary>
743 string Name { get; }
744
745 /// <summary>
746 /// True if the client is active (sending and receiving new UDP messages). False if the client is being closed.
747 /// </summary>
748 bool IsActive { get; set; }
749
750 /// <summary>
751 /// Set if the client is closing due to a logout request
752 /// </summary>
753 /// <remarks>
754 /// Do not use this flag if you want to know if the client is closing, since it will not be set in other
755 /// circumstances (e.g. if a child agent is closed or the agent is kicked off the simulator). Use IsActive
756 /// instead with a IClientAPI.SceneAgent.IsChildAgent check if necessary.
757 ///
758 /// Only set for root agents.
759 /// </remarks>
760 bool IsLoggingOut { get; set; }
761
762 bool SendLogoutPacketWhenClosing { set; }
763
764 // [Obsolete("LLClientView Specific - Circuits are unique to LLClientView")]
765 uint CircuitCode { get; }
766
767 IPEndPoint RemoteEndPoint { get; }
768
769 event GenericMessage OnGenericMessage;
770
771 // [Obsolete("LLClientView Specific - Replace with more bare-bones arguments.")]
772 event ImprovedInstantMessage OnInstantMessage;
773 // [Obsolete("LLClientView Specific - Replace with more bare-bones arguments. Rename OnChat.")]
774 event ChatMessage OnChatFromClient;
775 // [Obsolete("LLClientView Specific - Replace with more bare-bones arguments.")]
776 event TextureRequest OnRequestTexture;
777 // [Obsolete("LLClientView Specific - Remove bitbuckets. Adam, can you be more specific here.. as I don't see any bit buckets.")]
778 event RezObject OnRezObject;
779 // [Obsolete("LLClientView Specific - Replace with more suitable arguments.")]
780 event ModifyTerrain OnModifyTerrain;
781 event BakeTerrain OnBakeTerrain;
782 event EstateChangeInfo OnEstateChangeInfo;
783 event EstateManageTelehub OnEstateManageTelehub;
784 // [Obsolete("LLClientView Specific.")]
785 event CachedTextureRequest OnCachedTextureRequest;
786 event SetAppearance OnSetAppearance;
787 // [Obsolete("LLClientView Specific - Replace and rename OnAvatarUpdate. Difference from SetAppearance?")]
788 event AvatarNowWearing OnAvatarNowWearing;
789 event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv;
790 event RezMultipleAttachmentsFromInv OnRezMultipleAttachmentsFromInv;
791 event UUIDNameRequest OnDetachAttachmentIntoInv;
792 event ObjectAttach OnObjectAttach;
793 event ObjectDeselect OnObjectDetach;
794 event ObjectDrop OnObjectDrop;
795 event StartAnim OnStartAnim;
796 event StopAnim OnStopAnim;
797 event LinkObjects OnLinkObjects;
798 event DelinkObjects OnDelinkObjects;
799 event RequestMapBlocks OnRequestMapBlocks;
800 event RequestMapName OnMapNameRequest;
801 event TeleportLocationRequest OnTeleportLocationRequest;
802 event DisconnectUser OnDisconnectUser;
803 event RequestAvatarProperties OnRequestAvatarProperties;
804 event SetAlwaysRun OnSetAlwaysRun;
805 event TeleportLandmarkRequest OnTeleportLandmarkRequest;
806 event TeleportCancel OnTeleportCancel;
807 event DeRezObject OnDeRezObject;
808 event Action<IClientAPI> OnRegionHandShakeReply;
809 event GenericCall1 OnRequestWearables;
810 event Action<IClientAPI, bool> OnCompleteMovementToRegion;
811
812 /// <summary>
813 /// Called when an AgentUpdate message is received and before OnAgentUpdate.
814 /// </summary>
815 /// <remarks>
816 /// Listeners must not retain a reference to AgentUpdateArgs since this object may be reused for subsequent AgentUpdates.
817 /// </remarks>
818 event UpdateAgent OnPreAgentUpdate;
819
820 /// <summary>
821 /// Called when an AgentUpdate message is received and after OnPreAgentUpdate.
822 /// </summary>
823 /// <remarks>
824 /// Listeners must not retain a reference to AgentUpdateArgs since this object may be reused for subsequent AgentUpdates.
825 /// </remarks>
826 event UpdateAgent OnAgentUpdate;
827
828 event UpdateAgent OnAgentCameraUpdate;
829
830 event AgentRequestSit OnAgentRequestSit;
831 event AgentSit OnAgentSit;
832 event AvatarPickerRequest OnAvatarPickerRequest;
833 event Action<IClientAPI> OnRequestAvatarsData;
834 event AddNewPrim OnAddPrim;
835
836 event FetchInventory OnAgentDataUpdateRequest;
837 event TeleportLocationRequest OnSetStartLocationRequest;
838
839 event RequestGodlikePowers OnRequestGodlikePowers;
840 event GodKickUser OnGodKickUser;
841
842 event ObjectDuplicate OnObjectDuplicate;
843 event ObjectDuplicateOnRay OnObjectDuplicateOnRay;
844 event GrabObject OnGrabObject;
845 event DeGrabObject OnDeGrabObject;
846 event MoveObject OnGrabUpdate;
847 event SpinStart OnSpinStart;
848 event SpinObject OnSpinUpdate;
849 event SpinStop OnSpinStop;
850
851 event UpdateShape OnUpdatePrimShape;
852 event ObjectExtraParams OnUpdateExtraParams;
853 event ObjectRequest OnObjectRequest;
854 event ObjectSelect OnObjectSelect;
855 event ObjectDeselect OnObjectDeselect;
856 event GenericCall7 OnObjectDescription;
857 event GenericCall7 OnObjectName;
858 event GenericCall7 OnObjectClickAction;
859 event GenericCall7 OnObjectMaterial;
860 event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
861 event UpdatePrimFlags OnUpdatePrimFlags;
862 event UpdatePrimTexture OnUpdatePrimTexture;
863 event UpdateVector OnUpdatePrimGroupPosition;
864 event UpdateVector OnUpdatePrimSinglePosition;
865 event UpdatePrimRotation OnUpdatePrimGroupRotation;
866 event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
867 event UpdatePrimSingleRotationPosition OnUpdatePrimSingleRotationPosition;
868 event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
869 event UpdateVector OnUpdatePrimScale;
870 event UpdateVector OnUpdatePrimGroupScale;
871 event StatusChange OnChildAgentStatus;
872 event GenericCall2 OnStopMovement;
873 event Action<UUID> OnRemoveAvatar;
874 event ObjectPermissions OnObjectPermissions;
875
876 event CreateNewInventoryItem OnCreateNewInventoryItem;
877 event LinkInventoryItem OnLinkInventoryItem;
878 event CreateInventoryFolder OnCreateNewInventoryFolder;
879 event UpdateInventoryFolder OnUpdateInventoryFolder;
880 event MoveInventoryFolder OnMoveInventoryFolder;
881 event FetchInventoryDescendents OnFetchInventoryDescendents;
882 event PurgeInventoryDescendents OnPurgeInventoryDescendents;
883 event FetchInventory OnFetchInventory;
884 event RequestTaskInventory OnRequestTaskInventory;
885 event UpdateInventoryItem OnUpdateInventoryItem;
886 event CopyInventoryItem OnCopyInventoryItem;
887 event MoveInventoryItem OnMoveInventoryItem;
888 event RemoveInventoryFolder OnRemoveInventoryFolder;
889 event RemoveInventoryItem OnRemoveInventoryItem;
890 event UDPAssetUploadRequest OnAssetUploadRequest;
891 event XferReceive OnXferReceive;
892 event RequestXfer OnRequestXfer;
893 event ConfirmXfer OnConfirmXfer;
894 event AbortXfer OnAbortXfer;
895 event RezScript OnRezScript;
896 event UpdateTaskInventory OnUpdateTaskInventory;
897 event MoveTaskInventory OnMoveTaskItem;
898 event RemoveTaskInventory OnRemoveTaskItem;
899 event RequestAsset OnRequestAsset;
900
901 event UUIDNameRequest OnNameFromUUIDRequest;
902
903 event ParcelAccessListRequest OnParcelAccessListRequest;
904 event ParcelAccessListUpdateRequest OnParcelAccessListUpdateRequest;
905 event ParcelPropertiesRequest OnParcelPropertiesRequest;
906 event ParcelDivideRequest OnParcelDivideRequest;
907 event ParcelJoinRequest OnParcelJoinRequest;
908 event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
909 event ParcelSelectObjects OnParcelSelectObjects;
910 event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
911 event ParcelAbandonRequest OnParcelAbandonRequest;
912 event ParcelGodForceOwner OnParcelGodForceOwner;
913 event ParcelReclaim OnParcelReclaim;
914 event ParcelReturnObjectsRequest OnParcelReturnObjectsRequest;
915 event ParcelDeedToGroup OnParcelDeedToGroup;
916 event RegionInfoRequest OnRegionInfoRequest;
917 event EstateCovenantRequest OnEstateCovenantRequest;
918
919 event FriendActionDelegate OnApproveFriendRequest;
920 event FriendActionDelegate OnDenyFriendRequest;
921 event FriendshipTermination OnTerminateFriendship;
922
923 // Financial packets
924 event MoneyTransferRequest OnMoneyTransferRequest;
925 event EconomyDataRequest OnEconomyDataRequest;
926
927 event MoneyBalanceRequest OnMoneyBalanceRequest;
928 event UpdateAvatarProperties OnUpdateAvatarProperties;
929 event ParcelBuy OnParcelBuy;
930 event RequestPayPrice OnRequestPayPrice;
931 event ObjectSaleInfo OnObjectSaleInfo;
932 event ObjectBuy OnObjectBuy;
933 event BuyObjectInventory OnBuyObjectInventory;
934
935 event RequestTerrain OnRequestTerrain;
936
937 event RequestTerrain OnUploadTerrain;
938
939 event ObjectIncludeInSearch OnObjectIncludeInSearch;
940
941 event UUIDNameRequest OnTeleportHomeRequest;
942
943 event ScriptAnswer OnScriptAnswer;
944
945 event AgentSit OnUndo;
946 event AgentSit OnRedo;
947 event LandUndo OnLandUndo;
948
949 event ForceReleaseControls OnForceReleaseControls;
950 event GodLandStatRequest OnLandStatRequest;
951
952 event DetailedEstateDataRequest OnDetailedEstateDataRequest;
953 event SetEstateFlagsRequest OnSetEstateFlagsRequest;
954 event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
955 event SetEstateTerrainDetailTexture OnSetEstateTerrainDetailTexture;
956 event SetEstateTerrainTextureHeights OnSetEstateTerrainTextureHeights;
957 event CommitEstateTerrainTextureRequest OnCommitEstateTerrainTextureRequest;
958 event SetRegionTerrainSettings OnSetRegionTerrainSettings;
959 event EstateRestartSimRequest OnEstateRestartSimRequest;
960 event EstateChangeCovenantRequest OnEstateChangeCovenantRequest;
961 event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest;
962 event SimulatorBlueBoxMessageRequest OnSimulatorBlueBoxMessageRequest;
963 event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest;
964 event EstateDebugRegionRequest OnEstateDebugRegionRequest;
965 event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest;
966 event EstateTeleportAllUsersHomeRequest OnEstateTeleportAllUsersHomeRequest;
967 event UUIDNameRequest OnUUIDGroupNameRequest;
968
969 event RegionHandleRequest OnRegionHandleRequest;
970 event ParcelInfoRequest OnParcelInfoRequest;
971
972 event RequestObjectPropertiesFamily OnObjectGroupRequest;
973 event ScriptReset OnScriptReset;
974 event GetScriptRunning OnGetScriptRunning;
975 event SetScriptRunning OnSetScriptRunning;
976 event Action<Vector3, bool, bool> OnAutoPilotGo;
977
978 event TerrainUnacked OnUnackedTerrain;
979 event ActivateGesture OnActivateGesture;
980 event DeactivateGesture OnDeactivateGesture;
981 event ObjectOwner OnObjectOwner;
982
983 event DirPlacesQuery OnDirPlacesQuery;
984 event DirFindQuery OnDirFindQuery;
985 event DirLandQuery OnDirLandQuery;
986 event DirPopularQuery OnDirPopularQuery;
987 event DirClassifiedQuery OnDirClassifiedQuery;
988 event EventInfoRequest OnEventInfoRequest;
989 event ParcelSetOtherCleanTime OnParcelSetOtherCleanTime;
990
991 event MapItemRequest OnMapItemRequest;
992
993 event OfferCallingCard OnOfferCallingCard;
994 event AcceptCallingCard OnAcceptCallingCard;
995 event DeclineCallingCard OnDeclineCallingCard;
996 event SoundTrigger OnSoundTrigger;
997
998 event StartLure OnStartLure;
999 event TeleportLureRequest OnTeleportLureRequest;
1000 event NetworkStats OnNetworkStatsUpdate;
1001
1002 event ClassifiedInfoRequest OnClassifiedInfoRequest;
1003 event ClassifiedInfoUpdate OnClassifiedInfoUpdate;
1004 event ClassifiedDelete OnClassifiedDelete;
1005 event ClassifiedDelete OnClassifiedGodDelete;
1006
1007 event EventNotificationAddRequest OnEventNotificationAddRequest;
1008 event EventNotificationRemoveRequest OnEventNotificationRemoveRequest;
1009 event EventGodDelete OnEventGodDelete;
1010
1011 event ParcelDwellRequest OnParcelDwellRequest;
1012
1013 event UserInfoRequest OnUserInfoRequest;
1014 event UpdateUserInfo OnUpdateUserInfo;
1015
1016 event RetrieveInstantMessages OnRetrieveInstantMessages;
1017
1018 event PickDelete OnPickDelete;
1019 event PickGodDelete OnPickGodDelete;
1020 event PickInfoUpdate OnPickInfoUpdate;
1021 event AvatarNotesUpdate OnAvatarNotesUpdate;
1022 event AvatarInterestUpdate OnAvatarInterestUpdate;
1023 event GrantUserFriendRights OnGrantUserRights;
1024
1025 event MuteListRequest OnMuteListRequest;
1026
1027 event PlacesQuery OnPlacesQuery;
1028
1029 event FindAgentUpdate OnFindAgent;
1030 event TrackAgentUpdate OnTrackAgent;
1031 event NewUserReport OnUserReport;
1032 event SaveStateHandler OnSaveState;
1033 event GroupAccountSummaryRequest OnGroupAccountSummaryRequest;
1034 event GroupAccountDetailsRequest OnGroupAccountDetailsRequest;
1035 event GroupAccountTransactionsRequest OnGroupAccountTransactionsRequest;
1036 event FreezeUserUpdate OnParcelFreezeUser;
1037 event EjectUserUpdate OnParcelEjectUser;
1038 event ParcelBuyPass OnParcelBuyPass;
1039 event ParcelGodMark OnParcelGodMark;
1040 event GroupActiveProposalsRequest OnGroupActiveProposalsRequest;
1041 event GroupVoteHistoryRequest OnGroupVoteHistoryRequest;
1042 event SimWideDeletesDelegate OnSimWideDeletes;
1043 event SendPostcard OnSendPostcard;
1044 event MuteListEntryUpdate OnUpdateMuteListEntry;
1045 event MuteListEntryRemove OnRemoveMuteListEntry;
1046 event GodlikeMessage onGodlikeMessage;
1047 event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdate;
1048
1049 /// <summary>
1050 /// Set the debug level at which packet output should be printed to console.
1051 /// </summary>
1052 int DebugPacketLevel { get; set; }
1053
1054 void InPacket(object NewPack);
1055 void ProcessInPacket(Packet NewPack);
1056
1057 /// <summary>
1058 /// Close this client
1059 /// </summary>
1060 void Close();
1061
1062 /// <summary>
1063 /// Close this client
1064 /// </summary>
1065 /// <param name='force'>
1066 /// If true, attempts the close without checking active status. You do not want to try this except as a last
1067 /// ditch attempt where Active == false but the ScenePresence still exists.
1068 /// </param>
1069 void Close(bool force);
1070
1071 void Kick(string message);
1072
1073 /// <summary>
1074 /// Start processing for this client.
1075 /// </summary>
1076 void Start();
1077
1078 void Stop();
1079
1080 // void ActivateGesture(UUID assetId, UUID gestureId);
1081
1082 /// <summary>
1083 /// Tell this client what items it should be wearing now
1084 /// </summary>
1085 void SendWearables(AvatarWearable[] wearables, int serial);
1086
1087 /// <summary>
1088 /// Send information about the given agent's appearance to another client.
1089 /// </summary>
1090 /// <param name="agentID">The id of the agent associated with the appearance</param>
1091 /// <param name="visualParams"></param>
1092 /// <param name="textureEntry"></param>
1093 void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry);
1094
1095 void SendCachedTextureResponse(ISceneEntity avatar, int serial, List<CachedTextureResponseArg> cachedTextures);
1096
1097 void SendStartPingCheck(byte seq);
1098
1099 /// <summary>
1100 /// Tell the client that an object has been deleted
1101 /// </summary>
1102 /// <param name="localID"></param>
1103 void SendKillObject(List<uint> localID);
1104
1105 void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs);
1106 void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args);
1107
1108 /// <summary>
1109 /// Send chat to the viewer.
1110 /// </summary>
1111 /// <param name='message'></param>
1112 /// <param name='type'></param>
1113 /// <param name='fromPos'></param>
1114 /// <param name='fromName'></param>
1115 /// <param name='fromAgentID'></param>
1116 /// <param name='ownerID'></param>
1117 /// <param name='source'></param>
1118 /// <param name='audible'></param>
1119 void SendChatMessage(
1120 string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, UUID ownerID, byte source,
1121 byte audible);
1122
1123 void SendInstantMessage(GridInstantMessage im);
1124
1125 void SendGenericMessage(string method, UUID invoice, List<string> message);
1126 void SendGenericMessage(string method, UUID invoice, List<byte[]> message);
1127
1128 void SendLayerData(float[] map);
1129 void SendLayerData(int px, int py, float[] map);
1130
1131 void SendWindData(Vector2[] windSpeeds);
1132 void SendCloudData(float[] cloudCover);
1133
1134 /// <summary>
1135 /// Sent when an agent completes its movement into a region.
1136 /// </summary>
1137 /// <remarks>
1138 /// This packet marks completion of the arrival of a root avatar in a region, whether through login, region
1139 /// crossing or direct teleport.
1140 /// </remarks>
1141 void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look);
1142
1143 void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint);
1144
1145 /// <summary>
1146 /// Return circuit information for this client.
1147 /// </summary>
1148 /// <returns></returns>
1149 AgentCircuitData RequestClientInfo();
1150
1151 void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint,
1152 string capsURL);
1153
1154 void SendMapBlock(List<MapBlockData> mapBlocks, uint flag);
1155 void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags);
1156
1157 void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID,
1158 uint flags, string capsURL);
1159
1160 void SendTeleportFailed(string reason);
1161 void SendTeleportStart(uint flags);
1162 void SendTeleportProgress(uint flags, string message);
1163
1164 void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance, int transactionType, UUID sourceID, bool sourceIsGroup, UUID destID, bool destIsGroup, int amount, string item);
1165
1166 void SendPayPrice(UUID objectID, int[] payPrice);
1167
1168 void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations);
1169
1170 void SetChildAgentThrottle(byte[] throttle);
1171
1172 void SendAvatarDataImmediate(ISceneEntity avatar);
1173
1174 /// <summary>
1175 /// Send a positional, velocity, etc. update to the viewer for a given entity.
1176 /// </summary>
1177 /// <param name="entity"></param>
1178 /// <param name="updateFlags"></param>
1179 void SendEntityUpdate(ISceneEntity entity, PrimUpdateFlags updateFlags);
1180
1181 void ReprioritizeUpdates();
1182 void FlushPrimUpdates();
1183
1184 void SendInventoryFolderDetails(UUID ownerID, UUID folderID, List<InventoryItemBase> items,
1185 List<InventoryFolderBase> folders, int version, bool fetchFolders,
1186 bool fetchItems);
1187
1188 void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item);
1189
1190 /// <summary>
1191 /// Tell the client that we have created the item it requested.
1192 /// </summary>
1193 /// <param name="Item"></param>
1194 void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId);
1195
1196 void SendRemoveInventoryItem(UUID itemID);
1197
1198 void SendTakeControls(int controls, bool passToAgent, bool TakeControls);
1199
1200 void SendTaskInventory(UUID taskID, short serial, byte[] fileName);
1201
1202 void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List<Vector3> SpawnPoint);
1203
1204 /// <summary>
1205 /// Used by the server to inform the client of new inventory items and folders.
1206 /// </summary>
1207 ///
1208 /// If the node is a folder then the contents will be transferred
1209 /// (including all descendent folders) as well as the folder itself.
1210 ///
1211 /// <param name="node"></param>
1212 void SendBulkUpdateInventory(InventoryNodeBase node);
1213
1214 void SendXferPacket(ulong xferID, uint packet, byte[] data);
1215
1216 void SendAbortXferPacket(ulong xferID);
1217
1218 void SendEconomyData(float EnergyEfficiency, int ObjectCapacity, int ObjectCount, int PriceEnergyUnit,
1219 int PriceGroupCreate, int PriceObjectClaim, float PriceObjectRent,
1220 float PriceObjectScaleFactor,
1221 int PriceParcelClaim, float PriceParcelClaimFactor, int PriceParcelRent,
1222 int PricePublicObjectDecay,
1223 int PricePublicObjectDelete, int PriceRentLight, int PriceUpload, int TeleportMinPrice,
1224 float TeleportPriceExponent);
1225
1226 void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List<AvatarPickerReplyDataArgs> Data);
1227
1228 void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers,
1229 string groupname, string grouptitle);
1230
1231 void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID);
1232 void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain, byte flags);
1233
1234 void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position,
1235 float gain);
1236
1237 void SendAttachedSoundGainChange(UUID objectID, float gain);
1238
1239 void SendNameReply(UUID profileId, string firstname, string lastname);
1240 void SendAlertMessage(string message);
1241
1242 void SendAgentAlertMessage(string message, bool modal);
1243 void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message, string url);
1244
1245 /// <summary>
1246 /// Open a dialog box on the client.
1247 /// </summary>
1248 /// <param name="objectname"></param>
1249 /// <param name="objectID"></param>
1250 /// <param name="ownerID">/param>
1251 /// <param name="ownerFirstName"></param>
1252 /// <param name="ownerLastName"></param>
1253 /// <param name="msg"></param>
1254 /// <param name="textureID"></param>
1255 /// <param name="ch"></param>
1256 /// <param name="buttonlabels"></param>
1257 void SendDialog(string objectname, UUID objectID, UUID ownerID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch,
1258 string[] buttonlabels);
1259
1260 /// <summary>
1261 /// Update the client as to where the sun is currently located.
1262 /// </summary>
1263 /// <param name="sunPos"></param>
1264 /// <param name="sunVel"></param>
1265 /// <param name="CurrentTime">Seconds since Unix Epoch 01/01/1970 00:00:00</param>
1266 /// <param name="SecondsPerSunCycle"></param>
1267 /// <param name="SecondsPerYear"></param>
1268 /// <param name="OrbitalPosition">The orbital position is given in radians, and must be "adjusted" for the linden client, see LLClientView</param>
1269 void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear,
1270 float OrbitalPosition);
1271
1272 void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks);
1273 void SendViewerTime(int phase);
1274
1275 void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, Byte[] charterMember, string flAbout,
1276 uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID);
1277
1278 void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question);
1279 void SendHealth(float health);
1280
1281
1282 void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID);
1283
1284 void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID);
1285
1286 void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args);
1287 void SendEstateCovenantInformation(UUID covenant);
1288
1289 void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags,
1290 uint sunPosition, UUID covenant, uint covenantChanged, string abuseEmail, UUID estateOwner);
1291
1292 /// <summary>
1293 /// Send land properties to the client.
1294 /// </summary>
1295 /// <param name="sequence_id"></param>
1296 /// <param name="snap_selection"></param>
1297 /// <param name="request_result"></param>
1298 /// <param name="lo"></param></param>
1299 /// <param name="parcelObjectCapacity">/param>
1300 /// <param name="simObjectCapacity"></param>
1301 /// <param name="regionFlags"></param>
1302 void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo,
1303 float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity,
1304 uint regionFlags);
1305
1306 void SendLandAccessListData(List<LandAccessEntry> accessList, uint accessFlag, int localLandID);
1307 void SendForceClientSelectObjects(List<uint> objectIDs);
1308 void SendCameraConstraint(Vector4 ConstraintPlane);
1309 void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount);
1310 void SendLandParcelOverlay(byte[] data, int sequence_id);
1311
1312 #region Parcel Methods
1313
1314 void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time);
1315
1316 void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID,
1317 byte autoScale, string mediaType, string mediaDesc, int mediaWidth, int mediaHeight,
1318 byte mediaLoop);
1319
1320 #endregion
1321
1322 void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID);
1323 void SendConfirmXfer(ulong xferID, uint PacketID);
1324 void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName);
1325
1326 void SendInitiateDownload(string simFileName, string clientFileName);
1327
1328 /// <summary>
1329 /// Send the first part of a texture. For sufficiently small textures, this may be the only packet.
1330 /// </summary>
1331 /// <param name="numParts"></param>
1332 /// <param name="ImageUUID"></param>
1333 /// <param name="ImageSize"></param>
1334 /// <param name="ImageData"></param>
1335 /// <param name="imageCodec"></param>
1336 void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec);
1337
1338 /// <summary>
1339 /// Send the next packet for a series of packets making up a single texture,
1340 /// as established by SendImageFirstPart()
1341 /// </summary>
1342 /// <param name="partNumber"></param>
1343 /// <param name="imageUuid"></param>
1344 /// <param name="imageData"></param>
1345 void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData);
1346
1347 /// <summary>
1348 /// Tell the client that the requested texture cannot be found
1349 /// </summary>
1350 void SendImageNotFound(UUID imageid);
1351
1352 void SendShutdownConnectionNotice();
1353
1354 /// <summary>
1355 /// Send statistical information about the sim to the client.
1356 /// </summary>
1357 /// <param name="stats"></param>
1358 void SendSimStats(SimStats stats);
1359
1360 void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags);
1361
1362 void SendObjectPropertiesReply(ISceneEntity Entity);
1363
1364 void SendPartPhysicsProprieties(ISceneEntity Entity);
1365
1366 void SendAgentOffline(UUID[] agentIDs);
1367
1368 void SendAgentOnline(UUID[] agentIDs);
1369
1370 void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot,
1371 Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook);
1372
1373 void SendAdminResponse(UUID Token, uint AdminLevel);
1374
1375 void SendGroupMembership(GroupMembershipData[] GroupMembership);
1376
1377 void SendGroupNameReply(UUID groupLLUID, string GroupName);
1378
1379 void SendJoinGroupReply(UUID groupID, bool success);
1380
1381 void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool success);
1382
1383 void SendLeaveGroupReply(UUID groupID, bool success);
1384
1385 void SendCreateGroupReply(UUID groupID, bool success, string message);
1386
1387 void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia);
1388
1389 void SendScriptRunningReply(UUID objectID, UUID itemID, bool running);
1390
1391 void SendAsset(AssetRequestToClient req);
1392
1393 void SendTexture(AssetBase TextureAsset);
1394
1395 byte[] GetThrottlesPacked(float multiplier);
1396
1397 event ViewerEffectEventHandler OnViewerEffect;
1398 event Action<IClientAPI> OnLogout;
1399 event Action<IClientAPI> OnConnectionClosed;
1400
1401 void SendBlueBoxMessage(UUID FromAvatarID, String FromAvatarName, String Message);
1402
1403 void SendLogoutPacket();
1404
1405 // WARNING WARNING WARNING
1406 //
1407 // The two following methods are EXCLUSIVELY for the load balancer.
1408 // they cause a MASSIVE performance hit!
1409 //
1410 ClientInfo GetClientInfo();
1411 void SetClientInfo(ClientInfo info);
1412
1413 void SetClientOption(string option, string value);
1414 string GetClientOption(string option);
1415
1416 void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters);
1417 void SendClearFollowCamProperties(UUID objectID);
1418
1419 void SendRegionHandle(UUID regoinID, ulong handle);
1420 void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y);
1421 void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt);
1422
1423 void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data);
1424 void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data);
1425 void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data);
1426 void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data);
1427 void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data);
1428 void SendDirLandReply(UUID queryID, DirLandReplyData[] data);
1429 void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data);
1430 void SendEventInfoReply(EventData info);
1431
1432 void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags);
1433
1434 void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data);
1435 void SendOfferCallingCard(UUID srcID, UUID transactionID);
1436 void SendAcceptCallingCard(UUID transactionID);
1437 void SendDeclineCallingCard(UUID transactionID);
1438
1439 void SendTerminateFriend(UUID exFriendID);
1440
1441 void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name);
1442 void SendClassifiedInfoReply(UUID classifiedID, UUID creatorID, uint creationDate, uint expirationDate, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, string simName, Vector3 globalPos, string parcelName, byte classifiedFlags, int price);
1443
1444 void SendAgentDropGroup(UUID groupID);
1445 void RefreshGroupMembership();
1446 void SendAvatarNotesReply(UUID targetID, string text);
1447 void SendAvatarPicksReply(UUID targetID, Dictionary<UUID, string> picks);
1448 void SendPickInfoReply(UUID pickID,UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled);
1449
1450 void SendAvatarClassifiedReply(UUID targetID, Dictionary<UUID, string> classifieds);
1451
1452 void SendParcelDwellReply(int localID, UUID parcelID, float dwell);
1453
1454 void SendUserInfoReply(bool imViaEmail, bool visible, string email);
1455
1456 void SendUseCachedMuteList();
1457
1458 void SendMuteListUpdate(string filename);
1459
1460 void SendGroupActiveProposals(UUID groupID, UUID transactionID, GroupActiveProposals[] Proposals);
1461
1462 void SendGroupVoteHistory(UUID groupID, UUID transactionID, GroupVoteHistory[] Votes);
1463
1464 bool AddGenericPacketHandler(string MethodName, GenericMessage handler);
1465
1466 void SendRebakeAvatarTextures(UUID textureID);
1467
1468 void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages);
1469
1470 void SendGroupAccountingDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID, int amt);
1471
1472 void SendGroupAccountingSummary(IClientAPI sender,UUID groupID, uint moneyAmt, int totalTier, int usedTier);
1473
1474 void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt);
1475
1476 void SendChangeUserRights(UUID agentID, UUID friendID, int rights);
1477 void SendTextBoxRequest(string message, int chatChannel, string objectname, UUID ownerID, string ownerFirstName, string ownerLastName, UUID objectId);
1478
1479 void SendAgentTerseUpdate(ISceneEntity presence);
1480
1481 void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data);
1482 }
1483}