aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie2012-01-26 09:10:46 +0000
committerMelanie2012-01-26 09:10:46 +0000
commita537f7e1a30bece8302f69cd484b6b831c4b0ec7 (patch)
treee9826422fdd329423f5b2ee2022c5b705321e8e2
parentMerge branch 'master' into careminster (diff)
parentChange references from sop to sog and add protection from null ref (diff)
downloadopensim-SC-a537f7e1a30bece8302f69cd484b6b831c4b0ec7.zip
opensim-SC-a537f7e1a30bece8302f69cd484b6b831c4b0ec7.tar.gz
opensim-SC-a537f7e1a30bece8302f69cd484b6b831c4b0ec7.tar.bz2
opensim-SC-a537f7e1a30bece8302f69cd484b6b831c4b0ec7.tar.xz
Merge branch 'master' into careminster
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs24
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs11
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs76
3 files changed, 100 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 021a669..3c1b3e0 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -489,18 +489,20 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
489 List<mapItemReply> mapitems = new List<mapItemReply>(); 489 List<mapItemReply> mapitems = new List<mapItemReply>();
490 mapItemReply mapitem = new mapItemReply(); 490 mapItemReply mapitem = new mapItemReply();
491 491
492 SceneObjectPart sop = m_scene.GetSceneObjectPart(m_scene.RegionInfo.RegionSettings.TelehubObject); 492 SceneObjectGroup sog = m_scene.GetSceneObjectGroup(m_scene.RegionInfo.RegionSettings.TelehubObject);
493 493 if (sog != null)
494 mapitem = new mapItemReply(); 494 {
495 mapitem.x = (uint)(xstart + sop.AbsolutePosition.X); 495 mapitem = new mapItemReply();
496 mapitem.y = (uint)(ystart + sop.AbsolutePosition.Y); 496 mapitem.x = (uint)(xstart + sog.AbsolutePosition.X);
497 mapitem.id = UUID.Zero; 497 mapitem.y = (uint)(ystart + sog.AbsolutePosition.Y);
498 mapitem.name = sop.Name; 498 mapitem.id = UUID.Zero;
499 mapitem.Extra = 0; // color (not used) 499 mapitem.name = sog.Name;
500 mapitem.Extra2 = 0; // 0 = telehub / 1 = infohub 500 mapitem.Extra = 0; // color (not used)
501 mapitems.Add(mapitem); 501 mapitem.Extra2 = 0; // 0 = telehub / 1 = infohub
502 mapitems.Add(mapitem);
502 503
503 remoteClient.SendMapItemReply(mapitems.ToArray(), itemtype, flags); 504 remoteClient.SendMapItemReply(mapitems.ToArray(), itemtype, flags);
505 }
504 } 506 }
505 else 507 else
506 { 508 {
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 31d9ce59..764bd2f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1658,10 +1658,21 @@ namespace OpenSim.Region.Framework.Scenes
1658 // The part ID is the folder ID! 1658 // The part ID is the folder ID!
1659 SceneObjectPart part = GetSceneObjectPart(itemBase.Folder); 1659 SceneObjectPart part = GetSceneObjectPart(itemBase.Folder);
1660 if (part == null) 1660 if (part == null)
1661 {
1662// m_log.DebugFormat(
1663// "[SCENE INVENTORY]: Could not find part with id {0} for {1} to rez new script",
1664// itemBase.Folder, agentID);
1665
1661 return null; 1666 return null;
1667 }
1662 1668
1663 if (!Permissions.CanCreateObjectInventory(itemBase.InvType, part.UUID, agentID)) 1669 if (!Permissions.CanCreateObjectInventory(itemBase.InvType, part.UUID, agentID))
1670 {
1671// m_log.DebugFormat(
1672// "[SCENE INVENTORY]: No permission to create new script in {0} for {1}", part.Name, agentID);
1673
1664 return null; 1674 return null;
1675 }
1665 1676
1666 AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType, 1677 AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType,
1667 Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n\n touch_start(integer num)\n {\n }\n}"), 1678 Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n\n touch_start(integer num)\n {\n }\n}"),
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
new file mode 100644
index 0000000..6f99abd
--- /dev/null
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
@@ -0,0 +1,76 @@
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.Reflection;
31using NUnit.Framework;
32using OpenMetaverse;
33using OpenSim.Framework;
34using OpenSim.Framework.Communications;
35using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Region.Framework.Scenes;
37using OpenSim.Tests.Common;
38using OpenSim.Tests.Common.Mock;
39
40namespace OpenSim.Region.Framework.Scenes.Tests
41{
42 [TestFixture]
43 public class SceneObjectScriptTests
44 {
45 [Test]
46 public void TestAddScript()
47 {
48 TestHelpers.InMethod();
49// log4net.Config.XmlConfigurator.Configure();
50
51 UUID userId = TestHelpers.ParseTail(0x1);
52 UUID itemId = TestHelpers.ParseTail(0x2);
53 string itemName = "Test Script Item";
54
55 Scene scene = SceneHelpers.SetupScene();
56 SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId);
57 scene.AddNewSceneObject(so, true);
58
59 InventoryItemBase itemTemplate = new InventoryItemBase();
60 itemTemplate.Name = itemName;
61 itemTemplate.Folder = so.UUID;
62 itemTemplate.InvType = (int)InventoryType.LSL;
63
64 SceneObjectPart partWhereScriptAdded = scene.RezNewScript(userId, itemTemplate);
65
66 Assert.That(partWhereScriptAdded, Is.Not.Null);
67
68 IEntityInventory primInventory = partWhereScriptAdded.Inventory;
69 Assert.That(primInventory.GetInventoryList().Count, Is.EqualTo(1));
70 Assert.That(primInventory.ContainsScripts(), Is.True);
71
72 IList<TaskInventoryItem> primItems = primInventory.GetInventoryItems(itemName);
73 Assert.That(primItems.Count, Is.EqualTo(1));
74 }
75 }
76} \ No newline at end of file