aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs')
-rw-r--r--OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs555
1 files changed, 555 insertions, 0 deletions
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
new file mode 100644
index 0000000..38d999b
--- /dev/null
+++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
@@ -0,0 +1,555 @@
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
29using System;
30using System.Collections.Generic;
31using System.Net;
32using libsecondlife;
33using libsecondlife.Packets;
34using OpenSim.Framework;
35using OpenSim.Region.Environment.Scenes;
36
37namespace OpenSim.Region.Examples.SimpleModule
38{
39 public class MyNpcCharacter : IClientAPI
40 {
41 private uint movementFlag = 0;
42 private short flyState = 0;
43 private LLQuaternion bodyDirection = LLQuaternion.Identity;
44 private short count = 0;
45
46#pragma warning disable 67
47
48 public event Action<IClientAPI> OnLogout;
49 public event ObjectPermissions OnObjectPermissions;
50
51 public event MoneyTransferRequest OnMoneyTransferRequest;
52 public event Action<IClientAPI> OnConnectionClosed;
53
54 public event ImprovedInstantMessage OnInstantMessage;
55 public event ChatFromViewer OnChatFromViewer;
56 public event TextureRequest OnRequestTexture;
57 public event RezObject OnRezObject;
58 public event ModifyTerrain OnModifyTerrain;
59 public event SetAppearance OnSetAppearance;
60 public event AvatarNowWearing OnAvatarNowWearing;
61 public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv;
62 public event ObjectAttach OnObjectAttach;
63 public event StartAnim OnStartAnim;
64 public event StopAnim OnStopAnim;
65 public event LinkObjects OnLinkObjects;
66 public event DelinkObjects OnDelinkObjects;
67 public event RequestMapBlocks OnRequestMapBlocks;
68 public event RequestMapName OnMapNameRequest;
69 public event TeleportLocationRequest OnTeleportLocationRequest;
70 public event DisconnectUser OnDisconnectUser;
71 public event RequestAvatarProperties OnRequestAvatarProperties;
72 public event SetAlwaysRun OnSetAlwaysRun;
73
74 public event GenericCall4 OnDeRezObject;
75 public event Action<IClientAPI> OnRegionHandShakeReply;
76 public event GenericCall2 OnRequestWearables;
77 public event GenericCall2 OnCompleteMovementToRegion;
78 public event UpdateAgent OnAgentUpdate;
79 public event AgentRequestSit OnAgentRequestSit;
80 public event AgentSit OnAgentSit;
81 public event AvatarPickerRequest OnAvatarPickerRequest;
82 public event Action<IClientAPI> OnRequestAvatarsData;
83 public event AddNewPrim OnAddPrim;
84 public event RequestGodlikePowers OnRequestGodlikePowers;
85 public event GodKickUser OnGodKickUser;
86 public event ObjectDuplicate OnObjectDuplicate;
87 public event UpdateVector OnGrabObject;
88 public event ObjectSelect OnDeGrabObject;
89 public event MoveObject OnGrabUpdate;
90 public event ViewerEffectEventHandler OnViewerEffect;
91
92 public event FetchInventory OnAgentDataUpdateRequest;
93 public event FetchInventory OnUserInfoRequest;
94 public event TeleportLocationRequest OnSetStartLocationRequest;
95
96 public event UpdateShape OnUpdatePrimShape;
97 public event ObjectExtraParams OnUpdateExtraParams;
98 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
99 public event ObjectSelect OnObjectSelect;
100 public event GenericCall7 OnObjectDescription;
101 public event GenericCall7 OnObjectName;
102 public event UpdatePrimFlags OnUpdatePrimFlags;
103 public event UpdatePrimTexture OnUpdatePrimTexture;
104 public event UpdateVector OnUpdatePrimGroupPosition;
105 public event UpdateVector OnUpdatePrimSinglePosition;
106 public event UpdatePrimRotation OnUpdatePrimGroupRotation;
107 public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
108 public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
109 public event UpdateVector OnUpdatePrimScale;
110 public event StatusChange OnChildAgentStatus;
111 public event GenericCall2 OnStopMovement;
112 public event Action<LLUUID> OnRemoveAvatar;
113
114 public event CreateNewInventoryItem OnCreateNewInventoryItem;
115 public event CreateInventoryFolder OnCreateNewInventoryFolder;
116 public event UpdateInventoryFolder OnUpdateInventoryFolder;
117 public event MoveInventoryFolder OnMoveInventoryFolder;
118 public event RemoveInventoryFolder OnRemoveInventoryFolder;
119 public event RemoveInventoryItem OnRemoveInventoryItem;
120 public event FetchInventoryDescendents OnFetchInventoryDescendents;
121 public event PurgeInventoryDescendents OnPurgeInventoryDescendents;
122 public event FetchInventory OnFetchInventory;
123 public event RequestTaskInventory OnRequestTaskInventory;
124 public event UpdateInventoryItem OnUpdateInventoryItem;
125 public event CopyInventoryItem OnCopyInventoryItem;
126 public event MoveInventoryItem OnMoveInventoryItem;
127 public event UDPAssetUploadRequest OnAssetUploadRequest;
128 public event XferReceive OnXferReceive;
129 public event RequestXfer OnRequestXfer;
130 public event ConfirmXfer OnConfirmXfer;
131 public event RezScript OnRezScript;
132 public event UpdateTaskInventory OnUpdateTaskInventory;
133 public event RemoveTaskInventory OnRemoveTaskItem;
134 public event RequestAsset OnRequestAsset;
135
136 public event UUIDNameRequest OnNameFromUUIDRequest;
137
138 public event ParcelPropertiesRequest OnParcelPropertiesRequest;
139 public event ParcelDivideRequest OnParcelDivideRequest;
140 public event ParcelJoinRequest OnParcelJoinRequest;
141 public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
142
143 public event ParcelAccessListRequest OnParcelAccessListRequest;
144 public event ParcelAccessListUpdateRequest OnParcelAccessListUpdateRequest;
145 public event ParcelSelectObjects OnParcelSelectObjects;
146 public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
147 public event ObjectDeselect OnObjectDeselect;
148 public event EstateOwnerMessageRequest OnEstateOwnerMessage;
149 public event RegionInfoRequest OnRegionInfoRequest;
150 public event EstateCovenantRequest OnEstateCovenantRequest;
151
152 public event FriendActionDelegate OnApproveFriendRequest;
153 public event FriendActionDelegate OnDenyFriendRequest;
154 public event FriendshipTermination OnTerminateFriendship;
155 public event PacketStats OnPacketStats;
156 public event MoneyBalanceRequest OnMoneyBalanceRequest;
157 public event UpdateAvatarProperties OnUpdateAvatarProperties;
158
159
160#pragma warning restore 67
161
162 private LLUUID myID = LLUUID.Random();
163
164 public MyNpcCharacter(EventManager eventManager)
165 {
166 // startPos = new LLVector3(128, (float)(Util.RandomClass.NextDouble()*100), 2);
167 eventManager.OnFrame += Update;
168 }
169
170 private LLVector3 startPos = new LLVector3(128, 128, 2);
171
172 public virtual LLVector3 StartPos
173 {
174 get { return startPos; }
175 set { }
176 }
177
178 public virtual LLUUID AgentId
179 {
180 get { return myID; }
181 }
182
183 public LLUUID SessionId
184 {
185 get { return LLUUID.Zero; }
186 }
187
188 public LLUUID SecureSessionId
189 {
190 get { return LLUUID.Zero; }
191 }
192
193 public virtual string FirstName
194 {
195 get { return "Annoying"; }
196 }
197
198 private string lastName = "NPC" + Util.RandomClass.Next(1, 1000);
199
200 public virtual string LastName
201 {
202 get { return lastName; }
203 }
204
205 public virtual String Name
206 {
207 get { return FirstName + LastName; }
208 }
209
210
211 public virtual void OutPacket(Packet newPack, ThrottleOutPacketType packType)
212 {
213 }
214
215 public virtual void SendWearables(AvatarWearable[] wearables, int serial)
216 {
217 }
218
219 public virtual void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry)
220 {
221 }
222
223 public virtual void Kick(string message)
224 {
225 }
226
227 public virtual void SendStartPingCheck(byte seq)
228 {
229 }
230
231 public virtual void SendAvatarPickerReply(AvatarPickerReplyPacket response)
232 {
233 }
234
235 public virtual void SendAgentDataUpdate(LLUUID agentid, LLUUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
236 {
237
238 }
239
240 public virtual void SendKillObject(ulong regionHandle, uint localID)
241 {
242 }
243
244 public virtual void SetChildAgentThrottle(byte[] throttle)
245 {
246 }
247 public byte[] GetThrottlesPacked(float multiplier)
248 {
249 return new byte[0];
250 }
251
252
253 public virtual void SendAnimations(LLUUID[] animations, int[] seqs, LLUUID sourceAgentId)
254 {
255 }
256
257 public virtual void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName,
258 LLUUID fromAgentID)
259 {
260 }
261
262 public virtual void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName,
263 LLUUID fromAgentID)
264 {
265 }
266
267 public virtual void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent,
268 LLUUID imSessionID, string fromName, byte dialog, uint timeStamp)
269 {
270 }
271
272 public virtual void SendLayerData(float[] map)
273 {
274 }
275
276 public virtual void SendLayerData(int px, int py, float[] map)
277 {
278 }
279
280 public virtual void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look)
281 {
282 }
283
284 public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint)
285 {
286 }
287
288 public virtual AgentCircuitData RequestClientInfo()
289 {
290 return new AgentCircuitData();
291 }
292
293 public virtual void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt,
294 IPEndPoint newRegionExternalEndPoint, string capsURL)
295 {
296 }
297
298 public virtual void SendMapBlock(List<MapBlockData> mapBlocks)
299 {
300 }
301
302 public virtual void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags)
303 {
304 }
305
306 public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint,
307 uint locationID, uint flags, string capsURL)
308 {
309 }
310
311 public virtual void SendTeleportFailed(string reason)
312 {
313 }
314
315 public virtual void SendTeleportLocationStart()
316 {
317 }
318
319 public virtual void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance)
320 {
321 }
322
323 public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID,
324 uint avatarLocalID, LLVector3 Pos, byte[] textureEntry, uint parentID)
325 {
326 }
327
328 public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID,
329 LLVector3 position, LLVector3 velocity, LLQuaternion rotation)
330 {
331 }
332
333 public virtual void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations)
334 {
335 }
336
337 public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint)
338 {
339 }
340
341 public virtual void SendDialog(string objectname, LLUUID objectID, LLUUID ownerID, string msg, LLUUID textureID, int ch, string[] buttonlabels)
342 {
343 }
344
345 public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID,
346 PrimitiveBaseShape primShape, LLVector3 pos, uint flags,
347 LLUUID objectID, LLUUID ownerID, string text, byte[] color,
348 uint parentID,
349 byte[] particleSystem, LLQuaternion rotation, byte clickAction)
350 {
351 }
352 public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID,
353 PrimitiveBaseShape primShape, LLVector3 pos, uint flags,
354 LLUUID objectID, LLUUID ownerID, string text, byte[] color,
355 uint parentID,
356 byte[] particleSystem, LLQuaternion rotation, byte clickAction, byte[] textureanimation)
357 {
358 }
359 public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID,
360 LLVector3 position, LLQuaternion rotation, byte state)
361 {
362 }
363
364 public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID,
365 LLVector3 position, LLQuaternion rotation, LLVector3 velocity,
366 LLVector3 rotationalvelocity)
367 {
368 }
369
370 public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID,
371 List<InventoryItemBase> items,
372 List<InventoryFolderBase> folders,
373 bool fetchFolders,
374 bool fetchItems)
375 {
376 }
377
378 public virtual void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item)
379 {
380 }
381
382 public virtual void SendInventoryItemCreateUpdate(InventoryItemBase Item)
383 {
384 }
385
386 public virtual void SendRemoveInventoryItem(LLUUID itemID)
387 {
388 }
389
390 public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName)
391 {
392 }
393
394 public virtual void SendXferPacket(ulong xferID, uint packet, byte[] data)
395 {
396 }
397
398 public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname)
399 {
400 }
401
402 public virtual void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID)
403 {
404 }
405
406 public virtual void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain,
407 byte flags)
408 {
409 }
410
411 public void SendTriggeredSound(LLUUID soundID, LLUUID ownerID, LLUUID objectID, LLUUID parentID, ulong handle, LLVector3 position, float gain)
412 {
413 }
414
415 public void SendAlertMessage(string message)
416 {
417 }
418
419 public void SendAgentAlertMessage(string message, bool modal)
420 {
421 }
422
423 public void SendSystemAlertMessage(string message)
424 {
425 }
426
427 public void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message,
428 string url)
429 {
430 }
431
432 public virtual void SendRegionHandshake(RegionInfo regionInfo)
433 {
434 if (OnRegionHandShakeReply != null)
435 {
436 OnRegionHandShakeReply(this);
437 }
438
439 if (OnCompleteMovementToRegion != null)
440 {
441 OnCompleteMovementToRegion();
442 }
443 }
444
445 private void Update()
446 {
447 if (OnAgentUpdate != null)
448 {
449 AgentUpdatePacket pack = new AgentUpdatePacket();
450 pack.AgentData.ControlFlags = movementFlag;
451 pack.AgentData.BodyRotation = bodyDirection;
452 OnAgentUpdate(this, pack);
453 }
454 if (flyState == 0)
455 {
456 movementFlag = (uint) AgentManager.ControlFlags.AGENT_CONTROL_FLY |
457 (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG;
458 flyState = 1;
459 }
460 else if (flyState == 1)
461 {
462 movementFlag = (uint) AgentManager.ControlFlags.AGENT_CONTROL_FLY |
463 (uint) AgentManager.ControlFlags.AGENT_CONTROL_UP_POS;
464 flyState = 2;
465 }
466 else
467 {
468 movementFlag = (uint) AgentManager.ControlFlags.AGENT_CONTROL_FLY;
469 flyState = 0;
470 }
471
472 if (count >= 200)
473 {
474 if (OnChatFromViewer != null)
475 {
476 ChatFromViewerArgs args = new ChatFromViewerArgs();
477 args.Message = "Kinda quiet around here, isn't it?";
478 args.Channel = 0;
479 args.From = FirstName + " " + LastName;
480 args.Position = new LLVector3(128, 128, 26);
481 args.Sender = this;
482 args.Type = ChatTypeEnum.Shout;
483
484 OnChatFromViewer(this, args);
485 }
486 count = -1;
487 }
488
489 count++;
490 }
491
492 public bool AddMoney(int debit)
493 {
494 return false;
495 }
496
497 public void SendSunPos(LLVector3 sunPos, LLVector3 sunVel)
498 {
499 }
500
501 public void SendViewerTime(int phase)
502 {
503 }
504
505 public void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember,
506 string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL,
507 LLUUID partnerID)
508 {
509 }
510
511 public void SetDebug(int newDebug)
512 {
513 }
514
515 public void InPacket(Packet NewPack)
516 {
517 }
518
519 public void Close(bool ShutdownCircuit)
520 {
521 }
522
523 public void Stop()
524 {
525 }
526
527 private uint m_circuitCode;
528
529 public uint CircuitCode
530 {
531 get { return m_circuitCode; }
532 set { m_circuitCode = value; }
533 }
534 public void SendBlueBoxMessage(LLUUID FromAvatarID, LLUUID fromSessionID, String FromAvatarName, String Message)
535 {
536
537 }
538 public void SendLogoutPacket()
539 {
540 }
541
542 public void Terminate()
543 {
544 }
545
546 public ClientInfo GetClientInfo()
547 {
548 return null;
549 }
550
551 public void SetClientInfo(ClientInfo info)
552 {
553 }
554 }
555} \ No newline at end of file