aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/World/NPC
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/OptionalModules/World/NPC')
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs64
1 files changed, 56 insertions, 8 deletions
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
index 8c9717c..a3cefc9 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs
@@ -25,26 +25,74 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System.Collections.Generic;
28using OpenMetaverse; 29using OpenMetaverse;
29using Nini.Config; 30using Nini.Config;
30using OpenSim.Region.Framework.Interfaces; 31using OpenSim.Region.Framework.Interfaces;
31using OpenSim.Region.Framework.Scenes; 32using OpenSim.Region.Framework.Scenes;
33using OpenSim.Framework;
32 34
33namespace OpenSim.Region.OptionalModules.World.NPC 35namespace OpenSim.Region.OptionalModules.World.NPC
34{ 36{
35 public class NPCModule : IRegionModule 37 public interface INPCModule
38 {
39 UUID CreateNPC(string firstname, string lastname,Vector3 position, Scene scene, UUID cloneAppearanceFrom);
40 void Autopilot(UUID agentID, Scene scene, Vector3 pos);
41 void Say(UUID agentID, Scene scene, string text);
42 void DeleteNPC(UUID agentID, Scene scene);
43 }
44
45 public class NPCModule : IRegionModule, INPCModule
36 { 46 {
37 // private const bool m_enabled = false; 47 // private const bool m_enabled = false;
38 48
49 private Dictionary<UUID,NPCAvatar> m_avatars = new Dictionary<UUID, NPCAvatar>();
50
51 public UUID CreateNPC(string firstname, string lastname,Vector3 position, Scene scene, UUID cloneAppearanceFrom)
52 {
53 NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, scene);
54 scene.AddNewClient(npcAvatar);
55
56 ScenePresence sp;
57 if(scene.TryGetAvatar(npcAvatar.AgentId, out sp))
58 {
59 AvatarAppearance x = scene.CommsManager.AvatarService.GetUserAppearance(cloneAppearanceFrom);
60
61 List<byte> wearbyte = new List<byte>();
62 for (int i = 0; i < x.VisualParams.Length; i++)
63 {
64 wearbyte.Add(x.VisualParams[i]);
65 }
66
67 sp.SetAppearance(x.Texture.GetBytes(), wearbyte);
68 }
69
70 m_avatars.Add(npcAvatar.AgentId, npcAvatar);
71
72 return npcAvatar.AgentId;
73 }
74
75 public void Autopilot(UUID agentID, Scene scene, Vector3 pos)
76 {
77 ScenePresence sp;
78 scene.TryGetAvatar(agentID, out sp);
79 sp.DoAutoPilot(0,pos,m_avatars[agentID]);
80 }
81
82 public void Say(UUID agentID, Scene scene, string text)
83 {
84 m_avatars[agentID].Say(text);
85 }
86
87 public void DeleteNPC(UUID agentID, Scene scene)
88 {
89 scene.RemoveClient(agentID);
90 }
91
92
39 public void Initialise(Scene scene, IConfigSource source) 93 public void Initialise(Scene scene, IConfigSource source)
40 { 94 {
41 // if (m_enabled) 95 scene.RegisterModuleInterface<INPCModule>(this);
42 // {
43 // NPCAvatar testAvatar = new NPCAvatar("Jack", "NPC", new Vector3(128, 128, 40), scene);
44 // NPCAvatar testAvatar2 = new NPCAvatar("Jill", "NPC", new Vector3(136, 128, 40), scene);
45 // scene.AddNewClient(testAvatar);
46 // scene.AddNewClient(testAvatar2);
47 // }
48 } 96 }
49 97
50 public void PostInitialise() 98 public void PostInitialise()