diff options
author | BlueWall | 2011-12-05 15:29:00 -0500 |
---|---|---|
committer | BlueWall | 2011-12-05 15:29:00 -0500 |
commit | 2d3dda6db391d0b74459ba0b4d77e13078b76913 (patch) | |
tree | b3391ff60a778b6809742cb0d1e53a67ece1b63c /OpenSim/Region/Framework/Scenes | |
parent | Merge branch 'master' of /home/opensim/var/repo/opensim (diff) | |
parent | Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim (diff) | |
download | opensim-SC_OLD-2d3dda6db391d0b74459ba0b4d77e13078b76913.zip opensim-SC_OLD-2d3dda6db391d0b74459ba0b4d77e13078b76913.tar.gz opensim-SC_OLD-2d3dda6db391d0b74459ba0b4d77e13078b76913.tar.bz2 opensim-SC_OLD-2d3dda6db391d0b74459ba0b4d77e13078b76913.tar.xz |
Merge branch 'master' of /home/opensim/var/repo/opensim
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 90 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs | 151 |
2 files changed, 119 insertions, 122 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 24322a1..c8b39a4 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -3178,7 +3178,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
3178 | /// <param name="face"></param> | 3178 | /// <param name="face"></param> |
3179 | public void SetFaceColor(Vector3 color, int face) | 3179 | public void SetFaceColor(Vector3 color, int face) |
3180 | { | 3180 | { |
3181 | Primitive.TextureEntry tex = Shape.Textures; | 3181 | // The only way to get a deep copy/ If we don't do this, we can |
3182 | // mever detect color changes further down. | ||
3183 | Byte[] buf = Shape.Textures.GetBytes(); | ||
3184 | Primitive.TextureEntry tex = new Primitive.TextureEntry(buf, 0, buf.Length); | ||
3182 | Color4 texcolor; | 3185 | Color4 texcolor; |
3183 | if (face >= 0 && face < GetNumberOfSides()) | 3186 | if (face >= 0 && face < GetNumberOfSides()) |
3184 | { | 3187 | { |
@@ -3187,8 +3190,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3187 | texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f); | 3190 | texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f); |
3188 | texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f); | 3191 | texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f); |
3189 | tex.FaceTextures[face].RGBA = texcolor; | 3192 | tex.FaceTextures[face].RGBA = texcolor; |
3190 | UpdateTexture(tex); | 3193 | UpdateTextureEntry(tex.GetBytes()); |
3191 | TriggerScriptChangedEvent(Changed.COLOR); | ||
3192 | return; | 3194 | return; |
3193 | } | 3195 | } |
3194 | else if (face == ALL_SIDES) | 3196 | else if (face == ALL_SIDES) |
@@ -3209,8 +3211,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3209 | texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f); | 3211 | texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f); |
3210 | tex.DefaultTexture.RGBA = texcolor; | 3212 | tex.DefaultTexture.RGBA = texcolor; |
3211 | } | 3213 | } |
3212 | UpdateTexture(tex); | 3214 | UpdateTextureEntry(tex.GetBytes()); |
3213 | TriggerScriptChangedEvent(Changed.COLOR); | ||
3214 | return; | 3215 | return; |
3215 | } | 3216 | } |
3216 | } | 3217 | } |
@@ -3272,9 +3273,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
3272 | if (hasHollow) ret += 1; | 3273 | if (hasHollow) ret += 1; |
3273 | break; | 3274 | break; |
3274 | case PrimType.SCULPT: | 3275 | case PrimType.SCULPT: |
3275 | ret = 1; | 3276 | // Special mesh handling |
3277 | if (Shape.SculptType == (byte)SculptType.Mesh) | ||
3278 | ret = 8; // if it's a mesh then max 8 faces | ||
3279 | else | ||
3280 | ret = 1; // if it's a sculpt then max 1 face | ||
3276 | break; | 3281 | break; |
3277 | } | 3282 | } |
3283 | |||
3278 | return ret; | 3284 | return ret; |
3279 | } | 3285 | } |
3280 | 3286 | ||
@@ -3287,6 +3293,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3287 | { | 3293 | { |
3288 | if (Shape.SculptEntry) | 3294 | if (Shape.SculptEntry) |
3289 | return PrimType.SCULPT; | 3295 | return PrimType.SCULPT; |
3296 | |||
3290 | if ((Shape.ProfileCurve & 0x07) == (byte)ProfileShape.Square) | 3297 | if ((Shape.ProfileCurve & 0x07) == (byte)ProfileShape.Square) |
3291 | { | 3298 | { |
3292 | if (Shape.PathCurve == (byte)Extrusion.Straight) | 3299 | if (Shape.PathCurve == (byte)Extrusion.Straight) |
@@ -4532,48 +4539,49 @@ namespace OpenSim.Region.Framework.Scenes | |||
4532 | } | 4539 | } |
4533 | 4540 | ||
4534 | /// <summary> | 4541 | /// <summary> |
4535 | /// Update the textures on the part. | ||
4536 | /// </summary> | ||
4537 | /// <remarks> | ||
4538 | /// Added to handle bug in libsecondlife's TextureEntry.ToBytes() | ||
4539 | /// not handling RGBA properly. Cycles through, and "fixes" the color | ||
4540 | /// info | ||
4541 | /// </remarks> | ||
4542 | /// <param name="tex"></param> | ||
4543 | public void UpdateTexture(Primitive.TextureEntry tex) | ||
4544 | { | ||
4545 | //Color4 tmpcolor; | ||
4546 | //for (uint i = 0; i < 32; i++) | ||
4547 | //{ | ||
4548 | // if (tex.FaceTextures[i] != null) | ||
4549 | // { | ||
4550 | // tmpcolor = tex.GetFace((uint) i).RGBA; | ||
4551 | // tmpcolor.A = tmpcolor.A*255; | ||
4552 | // tmpcolor.R = tmpcolor.R*255; | ||
4553 | // tmpcolor.G = tmpcolor.G*255; | ||
4554 | // tmpcolor.B = tmpcolor.B*255; | ||
4555 | // tex.FaceTextures[i].RGBA = tmpcolor; | ||
4556 | // } | ||
4557 | //} | ||
4558 | //tmpcolor = tex.DefaultTexture.RGBA; | ||
4559 | //tmpcolor.A = tmpcolor.A*255; | ||
4560 | //tmpcolor.R = tmpcolor.R*255; | ||
4561 | //tmpcolor.G = tmpcolor.G*255; | ||
4562 | //tmpcolor.B = tmpcolor.B*255; | ||
4563 | //tex.DefaultTexture.RGBA = tmpcolor; | ||
4564 | UpdateTextureEntry(tex.GetBytes()); | ||
4565 | } | ||
4566 | |||
4567 | /// <summary> | ||
4568 | /// Update the texture entry for this part. | 4542 | /// Update the texture entry for this part. |
4569 | /// </summary> | 4543 | /// </summary> |
4570 | /// <param name="textureEntry"></param> | 4544 | /// <param name="textureEntry"></param> |
4571 | public void UpdateTextureEntry(byte[] textureEntry) | 4545 | public void UpdateTextureEntry(byte[] textureEntry) |
4572 | { | 4546 | { |
4573 | m_shape.TextureEntry = textureEntry; | 4547 | Primitive.TextureEntry newTex = new Primitive.TextureEntry(textureEntry, 0, textureEntry.Length); |
4574 | TriggerScriptChangedEvent(Changed.TEXTURE); | 4548 | Primitive.TextureEntry oldTex = Shape.Textures; |
4575 | 4549 | ||
4550 | Changed changeFlags = 0; | ||
4551 | |||
4552 | for (int i = 0 ; i < GetNumberOfSides(); i++) | ||
4553 | { | ||
4554 | Primitive.TextureEntryFace newFace = newTex.DefaultTexture; | ||
4555 | Primitive.TextureEntryFace oldFace = oldTex.DefaultTexture; | ||
4556 | |||
4557 | if (oldTex.FaceTextures[i] != null) | ||
4558 | oldFace = oldTex.FaceTextures[i]; | ||
4559 | if (newTex.FaceTextures[i] != null) | ||
4560 | newFace = newTex.FaceTextures[i]; | ||
4561 | |||
4562 | Color4 oldRGBA = oldFace.RGBA; | ||
4563 | Color4 newRGBA = newFace.RGBA; | ||
4564 | |||
4565 | if (oldRGBA.R != newRGBA.R || | ||
4566 | oldRGBA.G != newRGBA.G || | ||
4567 | oldRGBA.B != newRGBA.B || | ||
4568 | oldRGBA.A != newRGBA.A) | ||
4569 | changeFlags |= Changed.COLOR; | ||
4570 | |||
4571 | if (oldFace.TextureID != newFace.TextureID) | ||
4572 | changeFlags |= Changed.TEXTURE; | ||
4573 | |||
4574 | // Max change, skip the rest of testing | ||
4575 | if (changeFlags == (Changed.TEXTURE | Changed.COLOR)) | ||
4576 | break; | ||
4577 | } | ||
4578 | |||
4579 | m_shape.TextureEntry = textureEntry; | ||
4580 | if (changeFlags != 0) | ||
4581 | TriggerScriptChangedEvent(changeFlags); | ||
4582 | UpdateFlag = UpdateRequired.FULL; | ||
4576 | ParentGroup.HasGroupChanged = true; | 4583 | ParentGroup.HasGroupChanged = true; |
4584 | |||
4577 | //This is madness.. | 4585 | //This is madness.. |
4578 | //ParentGroup.ScheduleGroupForFullUpdate(); | 4586 | //ParentGroup.ScheduleGroupForFullUpdate(); |
4579 | //This is sparta | 4587 | //This is sparta |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index f0bbf0b..d4c299f 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs | |||
@@ -31,7 +31,7 @@ using System.Reflection; | |||
31 | using System.Text; | 31 | using System.Text; |
32 | using System.Threading; | 32 | using System.Threading; |
33 | using System.Timers; | 33 | using System.Timers; |
34 | using Timer=System.Timers.Timer; | 34 | using Timer = System.Timers.Timer; |
35 | using Nini.Config; | 35 | using Nini.Config; |
36 | using NUnit.Framework; | 36 | using NUnit.Framework; |
37 | using OpenMetaverse; | 37 | using OpenMetaverse; |
@@ -39,11 +39,13 @@ using OpenSim.Framework; | |||
39 | using OpenSim.Framework.Communications; | 39 | using OpenSim.Framework.Communications; |
40 | using OpenSim.Region.Framework.Scenes; | 40 | using OpenSim.Region.Framework.Scenes; |
41 | using OpenSim.Region.Framework.Interfaces; | 41 | using OpenSim.Region.Framework.Interfaces; |
42 | using OpenSim.Region.ClientStack.Linden; | ||
42 | using OpenSim.Region.CoreModules.Framework.EntityTransfer; | 43 | using OpenSim.Region.CoreModules.Framework.EntityTransfer; |
43 | using OpenSim.Region.CoreModules.World.Serialiser; | 44 | using OpenSim.Region.CoreModules.World.Serialiser; |
44 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; | 45 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; |
45 | using OpenSim.Tests.Common; | 46 | using OpenSim.Tests.Common; |
46 | using OpenSim.Tests.Common.Mock; | 47 | using OpenSim.Tests.Common.Mock; |
48 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | ||
47 | 49 | ||
48 | namespace OpenSim.Region.Framework.Scenes.Tests | 50 | namespace OpenSim.Region.Framework.Scenes.Tests |
49 | { | 51 | { |
@@ -103,21 +105,71 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
103 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); | 105 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); |
104 | 106 | ||
105 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Not.Null); | 107 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Not.Null); |
108 | Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(1)); | ||
106 | 109 | ||
107 | scene.IncomingCloseAgent(sp.UUID); | 110 | scene.IncomingCloseAgent(sp.UUID); |
108 | 111 | ||
109 | Assert.That(scene.GetScenePresence(sp.UUID), Is.Null); | 112 | Assert.That(scene.GetScenePresence(sp.UUID), Is.Null); |
110 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Null); | 113 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Null); |
114 | Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(0)); | ||
115 | } | ||
116 | |||
117 | [Test] | ||
118 | public void TestCreateChildScenePresence() | ||
119 | { | ||
120 | TestHelpers.InMethod(); | ||
121 | // log4net.Config.XmlConfigurator.Configure(); | ||
122 | |||
123 | LocalSimulationConnectorModule lsc = new LocalSimulationConnectorModule(); | ||
124 | |||
125 | IConfigSource configSource = new IniConfigSource(); | ||
126 | IConfig config = configSource.AddConfig("Modules"); | ||
127 | config.Set("SimulationServices", "LocalSimulationConnectorModule"); | ||
128 | |||
129 | TestScene scene = SceneHelpers.SetupScene(); | ||
130 | SceneHelpers.SetupSceneModules(scene, configSource, lsc); | ||
131 | |||
132 | UUID agentId = TestHelpers.ParseTail(0x01); | ||
133 | AgentCircuitData acd = SceneHelpers.GenerateAgentData(agentId); | ||
134 | acd.child = true; | ||
135 | |||
136 | GridRegion region = scene.GridService.GetRegionByName(UUID.Zero, scene.RegionInfo.RegionName); | ||
137 | string reason; | ||
138 | |||
139 | // *** This is the first stage, when a neighbouring region is told that a viewer is about to try and | ||
140 | // establish a child scene presence. We pass in the circuit code that the client has to connect with *** | ||
141 | // XXX: ViaLogin may not be correct here. | ||
142 | scene.SimulationService.CreateAgent(region, acd, (uint)TeleportFlags.ViaLogin, out reason); | ||
143 | |||
144 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(agentId), Is.Not.Null); | ||
145 | Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(1)); | ||
146 | |||
147 | // There's no scene presence yet since only an agent circuit has been established. | ||
148 | Assert.That(scene.GetScenePresence(agentId), Is.Null); | ||
149 | |||
150 | // *** This is the second stage, where the client established a child agent/scene presence using the | ||
151 | // circuit code given to the scene in stage 1 *** | ||
152 | TestClient client = new TestClient(acd, scene); | ||
153 | scene.AddNewClient(client, PresenceType.User); | ||
154 | |||
155 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(agentId), Is.Not.Null); | ||
156 | Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(1)); | ||
157 | |||
158 | ScenePresence sp = scene.GetScenePresence(agentId); | ||
159 | Assert.That(sp, Is.Not.Null); | ||
160 | Assert.That(sp.UUID, Is.EqualTo(agentId)); | ||
161 | Assert.That(sp.IsChildAgent, Is.True); | ||
111 | } | 162 | } |
112 | 163 | ||
113 | /// <summary> | 164 | /// <summary> |
114 | /// Test that if a root agent logs into a region, a child agent is also established in the neighbouring region | 165 | /// Test that if a root agent logs into a region, a child agent is also established in the neighbouring region |
115 | /// </summary> | 166 | /// </summary> |
116 | /// <remarks> | 167 | /// <remarks> |
117 | /// Please note that unlike the other tests here, this doesn't rely on structures | 168 | /// Please note that unlike the other tests here, this doesn't rely on anything set up in the instance fields. |
169 | /// INCOMPLETE | ||
118 | /// </remarks> | 170 | /// </remarks> |
119 | [Test] | 171 | [Test] |
120 | public void TestChildAgentEstablished() | 172 | public void TestChildAgentEstablishedInNeighbour() |
121 | { | 173 | { |
122 | TestHelpers.InMethod(); | 174 | TestHelpers.InMethod(); |
123 | // log4net.Config.XmlConfigurator.Configure(); | 175 | // log4net.Config.XmlConfigurator.Configure(); |
@@ -125,18 +177,25 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
125 | UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); | 177 | UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); |
126 | 178 | ||
127 | TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); | 179 | TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); |
128 | // TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); | 180 | TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); |
129 | 181 | ||
130 | IConfigSource configSource = new IniConfigSource(); | 182 | IConfigSource configSource = new IniConfigSource(); |
131 | configSource.AddConfig("Modules").Set("EntityTransferModule", "BasicEntityTransferModule"); | 183 | IConfig config = configSource.AddConfig("Startup"); |
184 | config.Set("serverside_object_permissions", true); | ||
185 | config.Set("EventQueue", true); | ||
186 | |||
132 | EntityTransferModule etm = new EntityTransferModule(); | 187 | EntityTransferModule etm = new EntityTransferModule(); |
188 | |||
189 | EventQueueGetModule eqgm1 = new EventQueueGetModule(); | ||
190 | SceneHelpers.SetupSceneModules(myScene1, configSource, etm, eqgm1); | ||
191 | |||
192 | EventQueueGetModule eqgm2 = new EventQueueGetModule(); | ||
193 | SceneHelpers.SetupSceneModules(myScene2, configSource, etm, eqgm2); | ||
133 | 194 | ||
134 | SceneHelpers.SetupSceneModules(myScene1, configSource, etm); | 195 | // SceneHelpers.AddScenePresence(myScene1, agent1Id); |
135 | |||
136 | SceneHelpers.AddScenePresence(myScene1, agent1Id); | ||
137 | // ScenePresence childPresence = myScene2.GetScenePresence(agent1); | 196 | // ScenePresence childPresence = myScene2.GetScenePresence(agent1); |
138 | 197 | // | |
139 | // TODO: Need to do a fair amount of work to allow synchronous establishment of child agents | 198 | // // TODO: Need to do a fair amount of work to allow synchronous establishment of child agents |
140 | // Assert.That(childPresence, Is.Not.Null); | 199 | // Assert.That(childPresence, Is.Not.Null); |
141 | // Assert.That(childPresence.IsChildAgent, Is.True); | 200 | // Assert.That(childPresence.IsChildAgent, Is.True); |
142 | } | 201 | } |
@@ -194,48 +253,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
194 | // Assert.That(presence, Is.Null, "presence is not null"); | 253 | // Assert.That(presence, Is.Null, "presence is not null"); |
195 | // } | 254 | // } |
196 | 255 | ||
197 | [Test] | ||
198 | public void T012_TestAddNeighbourRegion() | ||
199 | { | ||
200 | TestHelpers.InMethod(); | ||
201 | |||
202 | string reason; | ||
203 | |||
204 | if (acd1 == null) | ||
205 | fixNullPresence(); | ||
206 | |||
207 | scene.NewUserConnection(acd1, 0, out reason); | ||
208 | if (testclient == null) | ||
209 | testclient = new TestClient(acd1, scene); | ||
210 | scene.AddNewClient(testclient, PresenceType.User); | ||
211 | |||
212 | ScenePresence presence = scene.GetScenePresence(agent1); | ||
213 | presence.MakeRootAgent(new Vector3(90,90,90),false); | ||
214 | |||
215 | string cap = presence.ControllingClient.RequestClientInfo().CapsPath; | ||
216 | |||
217 | presence.AddNeighbourRegion(region2, cap); | ||
218 | presence.AddNeighbourRegion(region3, cap); | ||
219 | |||
220 | Assert.That(presence.KnownRegionCount, Is.EqualTo(2)); | ||
221 | } | ||
222 | |||
223 | [Test] | ||
224 | public void T013_TestRemoveNeighbourRegion() | ||
225 | { | ||
226 | TestHelpers.InMethod(); | ||
227 | |||
228 | ScenePresence presence = scene.GetScenePresence(agent1); | ||
229 | presence.RemoveNeighbourRegion(region3); | ||
230 | |||
231 | Assert.That(presence.KnownRegionCount,Is.EqualTo(1)); | ||
232 | /* | ||
233 | presence.MakeChildAgent; | ||
234 | presence.MakeRootAgent; | ||
235 | CompleteAvatarMovement | ||
236 | */ | ||
237 | } | ||
238 | |||
239 | // I'm commenting this test because it does not represent | 256 | // I'm commenting this test because it does not represent |
240 | // crossings. The Thread.Sleep's in here are not meaningful mocks, | 257 | // crossings. The Thread.Sleep's in here are not meaningful mocks, |
241 | // and they sometimes fail in panda. | 258 | // and they sometimes fail in panda. |
@@ -338,33 +355,5 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
338 | Assert.That(presence2.IsChildAgent, Is.True, "Did not return from region as expected."); | 355 | Assert.That(presence2.IsChildAgent, Is.True, "Did not return from region as expected."); |
339 | Assert.That(presence.IsChildAgent, Is.False, "Presence was not made root in old region again."); | 356 | Assert.That(presence.IsChildAgent, Is.False, "Presence was not made root in old region again."); |
340 | } | 357 | } |
341 | |||
342 | public void fixNullPresence() | ||
343 | { | ||
344 | string firstName = "testfirstname"; | ||
345 | |||
346 | AgentCircuitData agent = new AgentCircuitData(); | ||
347 | agent.AgentID = agent1; | ||
348 | agent.firstname = firstName; | ||
349 | agent.lastname = "testlastname"; | ||
350 | agent.SessionID = UUID.Zero; | ||
351 | agent.SecureSessionID = UUID.Zero; | ||
352 | agent.circuitcode = 123; | ||
353 | agent.BaseFolder = UUID.Zero; | ||
354 | agent.InventoryFolder = UUID.Zero; | ||
355 | agent.startpos = Vector3.Zero; | ||
356 | agent.CapsPath = GetRandomCapsObjectPath(); | ||
357 | agent.Appearance = new AvatarAppearance(); | ||
358 | |||
359 | acd1 = agent; | ||
360 | } | ||
361 | |||
362 | public static string GetRandomCapsObjectPath() | ||
363 | { | ||
364 | UUID caps = UUID.Random(); | ||
365 | string capsPath = caps.ToString(); | ||
366 | capsPath = capsPath.Remove(capsPath.Length - 4, 4); | ||
367 | return capsPath; | ||
368 | } | ||
369 | } | 358 | } |
370 | } \ No newline at end of file | 359 | } \ No newline at end of file |