aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-11-23 22:05:11 +0000
committerJustin Clark-Casey (justincc)2011-11-23 22:05:11 +0000
commitd145750e878c75e7d7a78eb9ef8dddaab81cc159 (patch)
tree780ab8b84e743e599b67bd5298ce3c63e0f95a1f
parentIn pCampbot, change "show status" command to "show bots" (diff)
downloadopensim-SC_OLD-d145750e878c75e7d7a78eb9ef8dddaab81cc159.zip
opensim-SC_OLD-d145750e878c75e7d7a78eb9ef8dddaab81cc159.tar.gz
opensim-SC_OLD-d145750e878c75e7d7a78eb9ef8dddaab81cc159.tar.bz2
opensim-SC_OLD-d145750e878c75e7d7a78eb9ef8dddaab81cc159.tar.xz
Add teleport behaviour to pCampBot
This teleports the bot to any other regions +/- 5 on the x or y axis. Quite aggressive at the moment since teleports keep occuring at a 1-10secs random interval. No checking yet to see if teleport was successful.
-rw-r--r--OpenSim/Tools/pCampBot/Behaviours/TeleportBehaviour.cs73
-rw-r--r--OpenSim/Tools/pCampBot/BotManager.cs3
-rw-r--r--OpenSim/Tools/pCampBot/pCampBot.cs2
3 files changed, 77 insertions, 1 deletions
diff --git a/OpenSim/Tools/pCampBot/Behaviours/TeleportBehaviour.cs b/OpenSim/Tools/pCampBot/Behaviours/TeleportBehaviour.cs
new file mode 100644
index 0000000..4624494
--- /dev/null
+++ b/OpenSim/Tools/pCampBot/Behaviours/TeleportBehaviour.cs
@@ -0,0 +1,73 @@
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.Linq;
31using System.Reflection;
32using log4net;
33using OpenMetaverse;
34using pCampBot.Interfaces;
35
36namespace pCampBot
37{
38 /// <summary>
39 /// Teleport to a random region on the grid.
40 /// </summary>
41 public class TeleportBehaviour : IBehaviour
42 {
43 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
44
45 public void Action(Bot bot)
46 {
47 Random rng = bot.Manager.Rng;
48 GridRegion[] knownRegions;
49
50 lock (bot.Manager.RegionsKnown)
51 {
52 if (bot.Manager.RegionsKnown.Count == 0)
53 {
54 m_log.DebugFormat(
55 "[TELEPORT BEHAVIOUR]: Ignoring teleport action for {0} since no regions are known yet", bot.Name);
56 return;
57 }
58
59 knownRegions = bot.Manager.RegionsKnown.Values.ToArray();
60 }
61
62 Simulator sourceRegion = bot.Client.Network.CurrentSim;
63 GridRegion destRegion = knownRegions[rng.Next(knownRegions.Length)];
64 Vector3 destPosition = new Vector3(rng.Next(255), rng.Next(255), 50);
65
66 m_log.DebugFormat(
67 "[TELEPORT BEHAVIOUR]: Teleporting {0} from {1} {2} to {3} {4}",
68 bot.Name, sourceRegion.Name, bot.Client.Self.SimPosition, destRegion.Name, destPosition);
69
70 bot.Client.Self.Teleport(destRegion.RegionHandle, destPosition);
71 }
72 }
73} \ No newline at end of file
diff --git a/OpenSim/Tools/pCampBot/BotManager.cs b/OpenSim/Tools/pCampBot/BotManager.cs
index 836d3f7..c67b3e4 100644
--- a/OpenSim/Tools/pCampBot/BotManager.cs
+++ b/OpenSim/Tools/pCampBot/BotManager.cs
@@ -153,6 +153,9 @@ namespace pCampBot
153 if (behaviourSwitches.Contains("g")) 153 if (behaviourSwitches.Contains("g"))
154 behaviours.Add(new GrabbingBehaviour()); 154 behaviours.Add(new GrabbingBehaviour());
155 155
156 if (behaviourSwitches.Contains("t"))
157 behaviours.Add(new TeleportBehaviour());
158
156 StartBot(this, behaviours, firstName, lastName, password, loginUri); 159 StartBot(this, behaviours, firstName, lastName, password, loginUri);
157 } 160 }
158 } 161 }
diff --git a/OpenSim/Tools/pCampBot/pCampBot.cs b/OpenSim/Tools/pCampBot/pCampBot.cs
index 4d3b06d..e7288d5 100644
--- a/OpenSim/Tools/pCampBot/pCampBot.cs
+++ b/OpenSim/Tools/pCampBot/pCampBot.cs
@@ -111,7 +111,7 @@ namespace pCampBot
111 " -firstname first name for the bots\n" + 111 " -firstname first name for the bots\n" +
112 " -lastname lastname for the bots. Each lastname will have _<bot-number> appended, e.g. Ima Bot_0\n" + 112 " -lastname lastname for the bots. Each lastname will have _<bot-number> appended, e.g. Ima Bot_0\n" +
113 " -password password for the bots\n" + 113 " -password password for the bots\n" +
114 " -b, behaviours behaviours for bots. Current options p (physics), g (grab). Comma separated, e.g. p,g. Default is p", 114 " -b, behaviours behaviours for bots. Current options p (physics), g (grab), t (teleport). Comma separated, e.g. p,g. Default is p",
115 " -wear set appearance folder to load from (default: no)\n" + 115 " -wear set appearance folder to load from (default: no)\n" +
116 " -h, -help show this message" 116 " -h, -help show this message"
117 ); 117 );