diff options
Diffstat (limited to 'OpenSim/Region/OptionalModules/World')
-rw-r--r-- | OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | 29 | ||||
-rw-r--r-- | OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs | 10 |
2 files changed, 8 insertions, 31 deletions
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs index 580d7ef..c764c20 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCModule.cs | |||
@@ -45,7 +45,6 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
45 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 45 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
46 | 46 | ||
47 | private Dictionary<UUID, NPCAvatar> m_avatars = new Dictionary<UUID, NPCAvatar>(); | 47 | private Dictionary<UUID, NPCAvatar> m_avatars = new Dictionary<UUID, NPCAvatar>(); |
48 | private Dictionary<UUID, AvatarAppearance> m_appearanceCache = new Dictionary<UUID, AvatarAppearance>(); | ||
49 | 48 | ||
50 | public void Initialise(Scene scene, IConfigSource source) | 49 | public void Initialise(Scene scene, IConfigSource source) |
51 | { | 50 | { |
@@ -124,28 +123,6 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
124 | } | 123 | } |
125 | } | 124 | } |
126 | 125 | ||
127 | private AvatarAppearance GetAppearance(UUID target, Scene scene) | ||
128 | { | ||
129 | if (m_appearanceCache.ContainsKey(target)) | ||
130 | return m_appearanceCache[target]; | ||
131 | |||
132 | ScenePresence originalPresence = scene.GetScenePresence(target); | ||
133 | |||
134 | if (originalPresence != null) | ||
135 | { | ||
136 | AvatarAppearance originalAppearance = originalPresence.Appearance; | ||
137 | m_appearanceCache.Add(target, originalAppearance); | ||
138 | return originalAppearance; | ||
139 | } | ||
140 | else | ||
141 | { | ||
142 | m_log.DebugFormat( | ||
143 | "[NPC MODULE]: Avatar {0} is not in the scene for us to grab baked textures from them. Using defaults.", target); | ||
144 | |||
145 | return new AvatarAppearance(); | ||
146 | } | ||
147 | } | ||
148 | |||
149 | public bool IsNPC(UUID agentId, Scene scene) | 126 | public bool IsNPC(UUID agentId, Scene scene) |
150 | { | 127 | { |
151 | ScenePresence sp = scene.GetScenePresence(agentId); | 128 | ScenePresence sp = scene.GetScenePresence(agentId); |
@@ -176,7 +153,8 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
176 | return true; | 153 | return true; |
177 | } | 154 | } |
178 | 155 | ||
179 | public UUID CreateNPC(string firstname, string lastname, Vector3 position, Scene scene, UUID cloneAppearanceFrom) | 156 | public UUID CreateNPC( |
157 | string firstname, string lastname, Vector3 position, Scene scene, AvatarAppearance appearance) | ||
180 | { | 158 | { |
181 | NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, scene); | 159 | NPCAvatar npcAvatar = new NPCAvatar(firstname, lastname, position, scene); |
182 | npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); | 160 | npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue); |
@@ -191,8 +169,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
191 | acd.lastname = lastname; | 169 | acd.lastname = lastname; |
192 | acd.ServiceURLs = new Dictionary<string, object>(); | 170 | acd.ServiceURLs = new Dictionary<string, object>(); |
193 | 171 | ||
194 | AvatarAppearance originalAppearance = GetAppearance(cloneAppearanceFrom, scene); | 172 | AvatarAppearance npcAppearance = new AvatarAppearance(appearance, true); |
195 | AvatarAppearance npcAppearance = new AvatarAppearance(originalAppearance, true); | ||
196 | acd.Appearance = npcAppearance; | 173 | acd.Appearance = npcAppearance; |
197 | 174 | ||
198 | // for (int i = 0; i < acd.Appearance.Texture.FaceTextures.Length; i++) | 175 | // for (int i = 0; i < acd.Appearance.Texture.FaceTextures.Length; i++) |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs index 2742b67..f8afc5a 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/Tests/NPCModuleTests.cs | |||
@@ -59,7 +59,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests | |||
59 | AvatarFactoryModule afm = new AvatarFactoryModule(); | 59 | AvatarFactoryModule afm = new AvatarFactoryModule(); |
60 | TestScene scene = SceneHelpers.SetupScene(); | 60 | TestScene scene = SceneHelpers.SetupScene(); |
61 | SceneHelpers.SetupSceneModules(scene, config, afm, new NPCModule()); | 61 | SceneHelpers.SetupSceneModules(scene, config, afm, new NPCModule()); |
62 | IClientAPI originalClient = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)).ControllingClient; | 62 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); |
63 | // ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId); | 63 | // ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId); |
64 | 64 | ||
65 | // 8 is the index of the first baked texture in AvatarAppearance | 65 | // 8 is the index of the first baked texture in AvatarAppearance |
@@ -72,10 +72,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests | |||
72 | // ScenePresence.SendInitialData() to reset our entire appearance. | 72 | // ScenePresence.SendInitialData() to reset our entire appearance. |
73 | scene.AssetService.Store(AssetHelpers.CreateAsset(originalFace8TextureId)); | 73 | scene.AssetService.Store(AssetHelpers.CreateAsset(originalFace8TextureId)); |
74 | 74 | ||
75 | afm.SetAppearanceFromClient(originalClient, originalTe, null); | 75 | afm.SetAppearanceFromClient(sp.ControllingClient, originalTe, null); |
76 | 76 | ||
77 | INPCModule npcModule = scene.RequestModuleInterface<INPCModule>(); | 77 | INPCModule npcModule = scene.RequestModuleInterface<INPCModule>(); |
78 | UUID npcId = npcModule.CreateNPC("John", "Smith", new Vector3(128, 128, 30), scene, originalClient.AgentId); | 78 | UUID npcId = npcModule.CreateNPC("John", "Smith", new Vector3(128, 128, 30), scene, sp.Appearance); |
79 | 79 | ||
80 | ScenePresence npc = scene.GetScenePresence(npcId); | 80 | ScenePresence npc = scene.GetScenePresence(npcId); |
81 | 81 | ||
@@ -96,12 +96,12 @@ namespace OpenSim.Region.OptionalModules.World.NPC.Tests | |||
96 | 96 | ||
97 | TestScene scene = SceneHelpers.SetupScene(); | 97 | TestScene scene = SceneHelpers.SetupScene(); |
98 | SceneHelpers.SetupSceneModules(scene, config, new NPCModule()); | 98 | SceneHelpers.SetupSceneModules(scene, config, new NPCModule()); |
99 | IClientAPI originalClient = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)).ControllingClient; | 99 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); |
100 | // ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId); | 100 | // ScenePresence originalAvatar = scene.GetScenePresence(originalClient.AgentId); |
101 | 101 | ||
102 | Vector3 startPos = new Vector3(128, 128, 30); | 102 | Vector3 startPos = new Vector3(128, 128, 30); |
103 | INPCModule npcModule = scene.RequestModuleInterface<INPCModule>(); | 103 | INPCModule npcModule = scene.RequestModuleInterface<INPCModule>(); |
104 | UUID npcId = npcModule.CreateNPC("John", "Smith", startPos, scene, originalClient.AgentId); | 104 | UUID npcId = npcModule.CreateNPC("John", "Smith", startPos, scene, sp.Appearance); |
105 | 105 | ||
106 | ScenePresence npc = scene.GetScenePresence(npcId); | 106 | ScenePresence npc = scene.GetScenePresence(npcId); |
107 | Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos)); | 107 | Assert.That(npc.AbsolutePosition, Is.EqualTo(startPos)); |