aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Client/MXP/ClientStack/MXPClientView.cs1
-rw-r--r--OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs1
-rw-r--r--OpenSim/Data/Tests/PropertyCompareConstraint.cs29
-rw-r--r--OpenSim/Data/Tests/ScrambleForTesting.cs31
-rw-r--r--OpenSim/Framework/IClientAPI.cs3
-rw-r--r--OpenSim/Framework/LandData.cs2
-rw-r--r--OpenSim/Framework/Tests/AgentCircuitManagerTests.cs2
-rw-r--r--OpenSim/Framework/Tests/ThreadTrackerTests.cs2
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs25
-rw-r--r--OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs14
-rw-r--r--OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs23
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs17
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs51
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs52
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs4
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/ISecurityCredential.cs36
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs13
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatarAttachment.cs15
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs2
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs10
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs22
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs114
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs8
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs7
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/SecurityCredential.cs62
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs14
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs1
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdePlugin.cs13
-rw-r--r--OpenSim/Tests/Common/Mock/TestClient.cs1
-rw-r--r--bin/OpenSim.ini.example118
33 files changed, 486 insertions, 211 deletions
diff --git a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
index a7bcc07..104f2d5 100644
--- a/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
+++ b/OpenSim/Client/MXP/ClientStack/MXPClientView.cs
@@ -612,6 +612,7 @@ namespace OpenSim.Client.MXP.ClientStack
612 public event SpinStop OnSpinStop; 612 public event SpinStop OnSpinStop;
613 public event UpdateShape OnUpdatePrimShape; 613 public event UpdateShape OnUpdatePrimShape;
614 public event ObjectExtraParams OnUpdateExtraParams; 614 public event ObjectExtraParams OnUpdateExtraParams;
615 public event ObjectRequest OnObjectRequest;
615 public event ObjectSelect OnObjectSelect; 616 public event ObjectSelect OnObjectSelect;
616 public event ObjectDeselect OnObjectDeselect; 617 public event ObjectDeselect OnObjectDeselect;
617 public event GenericCall7 OnObjectDescription; 618 public event GenericCall7 OnObjectDescription;
diff --git a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
index 324b5af..bfca954 100644
--- a/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
+++ b/OpenSim/Client/VWoHTTP/ClientStack/VWHClientView.cs
@@ -259,6 +259,7 @@ namespace OpenSim.Client.VWoHTTP.ClientStack
259 public event SpinStop OnSpinStop = delegate { }; 259 public event SpinStop OnSpinStop = delegate { };
260 public event UpdateShape OnUpdatePrimShape = delegate { }; 260 public event UpdateShape OnUpdatePrimShape = delegate { };
261 public event ObjectExtraParams OnUpdateExtraParams = delegate { }; 261 public event ObjectExtraParams OnUpdateExtraParams = delegate { };
262 public event ObjectRequest OnObjectRequest = delegate { };
262 public event ObjectSelect OnObjectSelect = delegate { }; 263 public event ObjectSelect OnObjectSelect = delegate { };
263 public event ObjectDeselect OnObjectDeselect = delegate { }; 264 public event ObjectDeselect OnObjectDeselect = delegate { };
264 public event GenericCall7 OnObjectDescription = delegate { }; 265 public event GenericCall7 OnObjectDescription = delegate { };
diff --git a/OpenSim/Data/Tests/PropertyCompareConstraint.cs b/OpenSim/Data/Tests/PropertyCompareConstraint.cs
index 678501e..063267b 100644
--- a/OpenSim/Data/Tests/PropertyCompareConstraint.cs
+++ b/OpenSim/Data/Tests/PropertyCompareConstraint.cs
@@ -1,3 +1,30 @@
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
1using System; 28using System;
2using System.Collections; 29using System.Collections;
3using System.Collections.Generic; 30using System.Collections.Generic;
@@ -52,7 +79,7 @@ namespace OpenSim.Data.Tests
52 return false; 79 return false;
53 } 80 }
54 81
55 if(actual.GetType() == typeof(Color)) 82 if (actual.GetType() == typeof(Color))
56 { 83 {
57 Color actualColor = (Color) actual; 84 Color actualColor = (Color) actual;
58 Color expectedColor = (Color) expected; 85 Color expectedColor = (Color) expected;
diff --git a/OpenSim/Data/Tests/ScrambleForTesting.cs b/OpenSim/Data/Tests/ScrambleForTesting.cs
index c6e467f..3a22347 100644
--- a/OpenSim/Data/Tests/ScrambleForTesting.cs
+++ b/OpenSim/Data/Tests/ScrambleForTesting.cs
@@ -1,3 +1,30 @@
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
1using System; 28using System;
2using System.Collections; 29using System.Collections;
3using System.Reflection; 30using System.Reflection;
@@ -18,7 +45,7 @@ namespace OpenSim.Data.Tests
18 { 45 {
19 //Skip indexers of classes. We will assume that everything that has an indexer 46 //Skip indexers of classes. We will assume that everything that has an indexer
20 // is also IEnumberable. May not always be true, but should be true normally. 47 // is also IEnumberable. May not always be true, but should be true normally.
21 if(property.GetIndexParameters().Length > 0) 48 if (property.GetIndexParameters().Length > 0)
22 continue; 49 continue;
23 50
24 RandomizeProperty(obj, property, null); 51 RandomizeProperty(obj, property, null);
@@ -26,7 +53,7 @@ namespace OpenSim.Data.Tests
26 //Now if it implments IEnumberable, it's probably some kind of list, so we should randomize 53 //Now if it implments IEnumberable, it's probably some kind of list, so we should randomize
27 // everything inside of it. 54 // everything inside of it.
28 IEnumerable enumerable = obj as IEnumerable; 55 IEnumerable enumerable = obj as IEnumerable;
29 if(enumerable != null) 56 if (enumerable != null)
30 { 57 {
31 foreach (object value in enumerable) 58 foreach (object value in enumerable)
32 { 59 {
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 1594c44..e451dd8 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -111,6 +111,8 @@ namespace OpenSim.Framework
111 111
112 public delegate void ObjectSelect(uint localID, IClientAPI remoteClient); 112 public delegate void ObjectSelect(uint localID, IClientAPI remoteClient);
113 113
114 public delegate void ObjectRequest(uint localID, IClientAPI remoteClient);
115
114 public delegate void RequestObjectPropertiesFamily( 116 public delegate void RequestObjectPropertiesFamily(
115 IClientAPI remoteClient, UUID AgentID, uint RequestFlags, UUID TaskID); 117 IClientAPI remoteClient, UUID AgentID, uint RequestFlags, UUID TaskID);
116 118
@@ -622,6 +624,7 @@ namespace OpenSim.Framework
622 624
623 event UpdateShape OnUpdatePrimShape; 625 event UpdateShape OnUpdatePrimShape;
624 event ObjectExtraParams OnUpdateExtraParams; 626 event ObjectExtraParams OnUpdateExtraParams;
627 event ObjectRequest OnObjectRequest;
625 event ObjectSelect OnObjectSelect; 628 event ObjectSelect OnObjectSelect;
626 event ObjectDeselect OnObjectDeselect; 629 event ObjectDeselect OnObjectDeselect;
627 event GenericCall7 OnObjectDescription; 630 event GenericCall7 OnObjectDescription;
diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs
index a24af04..e639da0 100644
--- a/OpenSim/Framework/LandData.cs
+++ b/OpenSim/Framework/LandData.cs
@@ -520,7 +520,7 @@ namespace OpenSim.Framework
520 } 520 }
521 521
522 /// <summary> 522 /// <summary>
523 /// Depreciated idea. Number of visitors ~= free money 523 /// Deprecated idea. Number of visitors ~= free money
524 /// </summary> 524 /// </summary>
525 public int Dwell { 525 public int Dwell {
526 get { 526 get {
diff --git a/OpenSim/Framework/Tests/AgentCircuitManagerTests.cs b/OpenSim/Framework/Tests/AgentCircuitManagerTests.cs
index ab5f04a..6c98897 100644
--- a/OpenSim/Framework/Tests/AgentCircuitManagerTests.cs
+++ b/OpenSim/Framework/Tests/AgentCircuitManagerTests.cs
@@ -64,7 +64,7 @@ namespace OpenSim.Framework.Tests
64 Vector3 StartPos = new Vector3(5, 23, 125); 64 Vector3 StartPos = new Vector3(5, 23, 125);
65 65
66 UUID SecureSessionId = UUID.Random(); 66 UUID SecureSessionId = UUID.Random();
67 UUID SessionId = UUID.Random(); 67 // TODO: unused: UUID SessionId = UUID.Random();
68 68
69 m_agentCircuitData1 = new AgentCircuitData(); 69 m_agentCircuitData1 = new AgentCircuitData();
70 m_agentCircuitData1.AgentID = AgentId1; 70 m_agentCircuitData1.AgentID = AgentId1;
diff --git a/OpenSim/Framework/Tests/ThreadTrackerTests.cs b/OpenSim/Framework/Tests/ThreadTrackerTests.cs
index 37c75ef..15d5b73 100644
--- a/OpenSim/Framework/Tests/ThreadTrackerTests.cs
+++ b/OpenSim/Framework/Tests/ThreadTrackerTests.cs
@@ -161,7 +161,7 @@ namespace OpenSim.Framework.Tests
161 /// Worker thread 0 161 /// Worker thread 0
162 /// </summary> 162 /// </summary>
163 /// <param name="o"></param> 163 /// <param name="o"></param>
164 public void run( object o) 164 public void run(object o)
165 { 165 {
166 while (running) 166 while (running)
167 { 167 {
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 7633b7b..12c2d86 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -197,6 +197,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
197 private ObjectExtraParams handlerUpdateExtraParams; //OnUpdateExtraParams; 197 private ObjectExtraParams handlerUpdateExtraParams; //OnUpdateExtraParams;
198 private ObjectDuplicate handlerObjectDuplicate; 198 private ObjectDuplicate handlerObjectDuplicate;
199 private ObjectDuplicateOnRay handlerObjectDuplicateOnRay; 199 private ObjectDuplicateOnRay handlerObjectDuplicateOnRay;
200 private ObjectRequest handlerObjectRequest;
200 private ObjectSelect handlerObjectSelect; 201 private ObjectSelect handlerObjectSelect;
201 private ObjectDeselect handlerObjectDeselect; 202 private ObjectDeselect handlerObjectDeselect;
202 private ObjectIncludeInSearch handlerObjectIncludeInSearch; 203 private ObjectIncludeInSearch handlerObjectIncludeInSearch;
@@ -1083,6 +1084,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1083 public event GodKickUser OnGodKickUser; 1084 public event GodKickUser OnGodKickUser;
1084 public event ObjectExtraParams OnUpdateExtraParams; 1085 public event ObjectExtraParams OnUpdateExtraParams;
1085 public event UpdateShape OnUpdatePrimShape; 1086 public event UpdateShape OnUpdatePrimShape;
1087 public event ObjectRequest OnObjectRequest;
1086 public event ObjectSelect OnObjectSelect; 1088 public event ObjectSelect OnObjectSelect;
1087 public event ObjectDeselect OnObjectDeselect; 1089 public event ObjectDeselect OnObjectDeselect;
1088 public event GenericCall7 OnObjectDescription; 1090 public event GenericCall7 OnObjectDescription;
@@ -5937,6 +5939,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5937 5939
5938 break; 5940 break;
5939 5941
5942 case PacketType.RequestMultipleObjects:
5943 RequestMultipleObjectsPacket incomingRequest = (RequestMultipleObjectsPacket)Pack;
5944
5945 #region Packet Session and User Check
5946 if (m_checkPackets)
5947 {
5948 if (incomingRequest.AgentData.SessionID != SessionId ||
5949 incomingRequest.AgentData.AgentID != AgentId)
5950 break;
5951 }
5952 #endregion
5953
5954 handlerObjectRequest = null;
5955
5956 for (int i = 0; i < incomingRequest.ObjectData.Length; i++)
5957 {
5958 handlerObjectRequest = OnObjectRequest;
5959 if (handlerObjectRequest != null)
5960 {
5961 handlerObjectRequest(incomingRequest.ObjectData[i].ID, this);
5962 }
5963 }
5964 break;
5940 case PacketType.ObjectSelect: 5965 case PacketType.ObjectSelect:
5941 ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; 5966 ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack;
5942 5967
diff --git a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs
index bcf20be..e9c1e9d 100644
--- a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs
+++ b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs
@@ -450,7 +450,7 @@ namespace OpenSim.Region.CoreModules.InterGrid
450 450
451 responseMap["sim_host"] = OSD.FromString(reg.ExternalHostName); 451 responseMap["sim_host"] = OSD.FromString(reg.ExternalHostName);
452 452
453 // DEPRECIATED 453 // DEPRECATED
454 responseMap["sim_ip"] = OSD.FromString(Util.GetHostFromDNS(reg.ExternalHostName).ToString()); 454 responseMap["sim_ip"] = OSD.FromString(Util.GetHostFromDNS(reg.ExternalHostName).ToString());
455 455
456 responseMap["connect"] = OSD.FromBoolean(true); 456 responseMap["connect"] = OSD.FromBoolean(true);
@@ -591,7 +591,7 @@ namespace OpenSim.Region.CoreModules.InterGrid
591 httpaddr = httpsCN; 591 httpaddr = httpsCN;
592 } 592 }
593 593
594 // DEPRECIATED 594 // DEPRECATED
595 responseMap["seed_capability"] 595 responseMap["seed_capability"]
596 = OSD.FromString( 596 = OSD.FromString(
597 regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath)); 597 regionCapsHttpProtocol + httpaddr + ":" + reg.HttpPort + CapsUtil.GetCapsSeedPath(userCap.CapsObjectPath));
@@ -764,7 +764,7 @@ namespace OpenSim.Region.CoreModules.InterGrid
764 responseMap["sim_port"] = OSD.FromInteger(reg.InternalEndPoint.Port); 764 responseMap["sim_port"] = OSD.FromInteger(reg.InternalEndPoint.Port);
765 responseMap["sim_host"] = OSD.FromString(reg.ExternalHostName);// + ":" + reg.InternalEndPoint.Port.ToString()); 765 responseMap["sim_host"] = OSD.FromString(reg.ExternalHostName);// + ":" + reg.InternalEndPoint.Port.ToString());
766 766
767 // DEPRECIATED 767 // DEPRECATED
768 responseMap["sim_ip"] = OSD.FromString(Util.GetHostFromDNS(reg.ExternalHostName).ToString()); 768 responseMap["sim_ip"] = OSD.FromString(Util.GetHostFromDNS(reg.ExternalHostName).ToString());
769 769
770 responseMap["session_id"] = OSD.FromUUID(SessionID); 770 responseMap["session_id"] = OSD.FromUUID(SessionID);
@@ -851,7 +851,7 @@ namespace OpenSim.Region.CoreModules.InterGrid
851 851
852 string rezRespSeedCap = ""; 852 string rezRespSeedCap = "";
853 853
854 // DEPRECIATED 854 // DEPRECATED
855 if (rezResponseMap.ContainsKey("seed_capability")) 855 if (rezResponseMap.ContainsKey("seed_capability"))
856 rezRespSeedCap = rezResponseMap["seed_capability"].AsString(); 856 rezRespSeedCap = rezResponseMap["seed_capability"].AsString();
857 857
@@ -863,7 +863,7 @@ namespace OpenSim.Region.CoreModules.InterGrid
863 if (rezResponseMap.ContainsKey("rez_avatar/rez")) 863 if (rezResponseMap.ContainsKey("rez_avatar/rez"))
864 rezRespSeedCap = rezResponseMap["rez_avatar/rez"].AsString(); 864 rezRespSeedCap = rezResponseMap["rez_avatar/rez"].AsString();
865 865
866 // DEPRECIATED 866 // DEPRECATED
867 string rezRespSim_ip = rezResponseMap["sim_ip"].AsString(); 867 string rezRespSim_ip = rezResponseMap["sim_ip"].AsString();
868 868
869 string rezRespSim_host = rezResponseMap["sim_host"].AsString(); 869 string rezRespSim_host = rezResponseMap["sim_host"].AsString();
@@ -879,13 +879,13 @@ namespace OpenSim.Region.CoreModules.InterGrid
879 { 879 {
880 RezResponsePositionArray = (OSDArray)rezResponseMap["position"]; 880 RezResponsePositionArray = (OSDArray)rezResponseMap["position"];
881 } 881 }
882 // DEPRECIATED 882 // DEPRECATED
883 responseMap["seed_capability"] = OSD.FromString(rezRespSeedCap); 883 responseMap["seed_capability"] = OSD.FromString(rezRespSeedCap);
884 884
885 // REPLACEMENT r3 885 // REPLACEMENT r3
886 responseMap["region_seed_capability"] = OSD.FromString(rezRespSeedCap); 886 responseMap["region_seed_capability"] = OSD.FromString(rezRespSeedCap);
887 887
888 // DEPRECIATED 888 // DEPRECATED
889 responseMap["sim_ip"] = OSD.FromString(Util.GetHostFromDNS(rezRespSim_ip).ToString()); 889 responseMap["sim_ip"] = OSD.FromString(Util.GetHostFromDNS(rezRespSim_ip).ToString());
890 890
891 responseMap["sim_host"] = OSD.FromString(rezRespSim_host); 891 responseMap["sim_host"] = OSD.FromString(rezRespSim_host);
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
index 62779e7..e9c35e9 100644
--- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
+++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs
@@ -107,6 +107,7 @@ namespace OpenSim.Region.Examples.SimpleModule
107 public event UpdateShape OnUpdatePrimShape; 107 public event UpdateShape OnUpdatePrimShape;
108 public event ObjectExtraParams OnUpdateExtraParams; 108 public event ObjectExtraParams OnUpdateExtraParams;
109 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily; 109 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
110 public event ObjectRequest OnObjectRequest;
110 public event ObjectSelect OnObjectSelect; 111 public event ObjectSelect OnObjectSelect;
111 public event GenericCall7 OnObjectDescription; 112 public event GenericCall7 OnObjectDescription;
112 public event GenericCall7 OnObjectName; 113 public event GenericCall7 OnObjectName;
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 7bbe045..287d8d9 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -63,7 +63,7 @@ namespace OpenSim.Region.Framework.Scenes
63 public delegate void OnNewClientDelegate(IClientAPI client); 63 public delegate void OnNewClientDelegate(IClientAPI client);
64 64
65 /// <summary> 65 /// <summary>
66 /// Depreciated in favour of OnClientConnect. 66 /// Deprecated in favour of OnClientConnect.
67 /// Will be marked Obsolete after IClientCore has 100% of IClientAPI interfaces. 67 /// Will be marked Obsolete after IClientCore has 100% of IClientAPI interfaces.
68 /// </summary> 68 /// </summary>
69 public event OnNewClientDelegate OnNewClient; 69 public event OnNewClientDelegate OnNewClient;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index 113918d..1a7f8f8 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -109,6 +109,29 @@ namespace OpenSim.Region.Framework.Scenes
109 } 109 }
110 110
111 /// <summary> 111 /// <summary>
112 /// Invoked when the client requests a prim.
113 /// </summary>
114 /// <param name="primLocalID"></param>
115 /// <param name="remoteClient"></param>
116 public void RequestPrim(uint primLocalID, IClientAPI remoteClient)
117 {
118 PacketType i = PacketType.ObjectUpdate;
119 List<EntityBase> EntityList = GetEntities();
120
121 foreach (EntityBase ent in EntityList)
122 {
123 if (ent is SceneObjectGroup)
124 {
125 if (((SceneObjectGroup)ent).LocalId == primLocalID)
126 {
127 ((SceneObjectGroup)ent).SendFullUpdateToClient(remoteClient);
128 return;
129 }
130 }
131 }
132 }
133
134 /// <summary>
112 /// Invoked when the client selects a prim. 135 /// Invoked when the client selects a prim.
113 /// </summary> 136 /// </summary>
114 /// <param name="primLocalID"></param> 137 /// <param name="primLocalID"></param>
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 18d7bad..a2275f8 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2076,6 +2076,7 @@ namespace OpenSim.Region.Framework.Scenes
2076 client.OnUpdatePrimTexture += m_sceneGraph.UpdatePrimTexture; 2076 client.OnUpdatePrimTexture += m_sceneGraph.UpdatePrimTexture;
2077 client.OnTeleportLocationRequest += RequestTeleportLocation; 2077 client.OnTeleportLocationRequest += RequestTeleportLocation;
2078 client.OnTeleportLandmarkRequest += RequestTeleportLandmark; 2078 client.OnTeleportLandmarkRequest += RequestTeleportLandmark;
2079 client.OnObjectRequest += RequestPrim;
2079 client.OnObjectSelect += SelectPrim; 2080 client.OnObjectSelect += SelectPrim;
2080 client.OnObjectDeselect += DeselectPrim; 2081 client.OnObjectDeselect += DeselectPrim;
2081 client.OnGrabUpdate += m_sceneGraph.MoveObject; 2082 client.OnGrabUpdate += m_sceneGraph.MoveObject;
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 0e0999a..7771831 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -928,25 +928,22 @@ namespace OpenSim.Region.Framework.Scenes
928 { 928 {
929 // Primitive Ray Tracing 929 // Primitive Ray Tracing
930 float closestDistance = 280f; 930 float closestDistance = 280f;
931 EntityIntersection returnResult = new EntityIntersection(); 931 EntityIntersection result = new EntityIntersection();
932 List<EntityBase> EntityList = GetEntities(); 932 List<EntityBase> EntityList = GetEntities();
933 foreach (EntityBase ent in EntityList) 933 foreach (EntityBase ent in EntityList)
934 { 934 {
935 if (ent is SceneObjectGroup) 935 if (ent is SceneObjectGroup)
936 { 936 {
937 SceneObjectGroup reportingG = (SceneObjectGroup)ent; 937 SceneObjectGroup reportingG = (SceneObjectGroup)ent;
938 EntityIntersection result = reportingG.TestIntersection(hray, frontFacesOnly, faceCenters); 938 EntityIntersection inter = reportingG.TestIntersection(hray, frontFacesOnly, faceCenters);
939 if (result.HitTF) 939 if (inter.HitTF && inter.distance < closestDistance)
940 { 940 {
941 if (result.distance < closestDistance) 941 closestDistance = inter.distance;
942 { 942 result = inter;
943 closestDistance = result.distance;
944 returnResult = result;
945 }
946 } 943 }
947 } 944 }
948 } 945 }
949 return returnResult; 946 return result;
950 } 947 }
951 948
952 /// <summary> 949 /// <summary>
@@ -979,7 +976,7 @@ namespace OpenSim.Region.Framework.Scenes
979 { 976 {
980 foreach (SceneObjectPart p in ((SceneObjectGroup) ent).GetParts()) 977 foreach (SceneObjectPart p in ((SceneObjectGroup) ent).GetParts())
981 { 978 {
982 if (p.Name==name) 979 if (p.Name == name)
983 { 980 {
984 return p; 981 return p;
985 } 982 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index c86e4a1..bc3d5c0 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -555,7 +555,7 @@ namespace OpenSim.Region.Framework.Scenes
555 // If we get a result, we're going to find the closest result to the origin of the ray 555 // If we get a result, we're going to find the closest result to the origin of the ray
556 // and send back the intersection information back to the innerscene. 556 // and send back the intersection information back to the innerscene.
557 557
558 EntityIntersection returnresult = new EntityIntersection(); 558 EntityIntersection result = new EntityIntersection();
559 559
560 lock (m_parts) 560 lock (m_parts)
561 { 561 {
@@ -576,26 +576,23 @@ namespace OpenSim.Region.Framework.Scenes
576 // when the camera crosses the border. 576 // when the camera crosses the border.
577 float idist = Constants.RegionSize; 577 float idist = Constants.RegionSize;
578 578
579
580 if (inter.HitTF) 579 if (inter.HitTF)
581 { 580 {
582 // We need to find the closest prim to return to the testcaller along the ray 581 // We need to find the closest prim to return to the testcaller along the ray
583 if (inter.distance < idist) 582 if (inter.distance < idist)
584 { 583 {
585 returnresult.HitTF = true; 584 result.HitTF = true;
586 returnresult.ipoint = inter.ipoint; 585 result.ipoint = inter.ipoint;
587 returnresult.obj = part; 586 result.obj = part;
588 returnresult.normal = inter.normal; 587 result.normal = inter.normal;
589 returnresult.distance = inter.distance; 588 result.distance = inter.distance;
590 } 589 }
591 } 590 }
592 } 591 }
593 } 592 }
594 return returnresult; 593 return result;
595 } 594 }
596 595
597
598
599 /// <summary> 596 /// <summary>
600 /// Gets a vector representing the size of the bounding box containing all the prims in the group 597 /// Gets a vector representing the size of the bounding box containing all the prims in the group
601 /// Treats all prims as rectangular, so no shape (cut etc) is taken into account 598 /// Treats all prims as rectangular, so no shape (cut etc) is taken into account
@@ -652,7 +649,6 @@ namespace OpenSim.Region.Framework.Scenes
652 frontBottomRight.Y = orig.Y + (part.Scale.Y / 2); 649 frontBottomRight.Y = orig.Y + (part.Scale.Y / 2);
653 frontBottomRight.Z = orig.Z - (part.Scale.Z / 2); 650 frontBottomRight.Z = orig.Z - (part.Scale.Z / 2);
654 651
655
656 backTopLeft.X = orig.X + (part.Scale.X / 2); 652 backTopLeft.X = orig.X + (part.Scale.X / 2);
657 backTopLeft.Y = orig.Y - (part.Scale.Y / 2); 653 backTopLeft.Y = orig.Y - (part.Scale.Y / 2);
658 backTopLeft.Z = orig.Z + (part.Scale.Z / 2); 654 backTopLeft.Z = orig.Z + (part.Scale.Z / 2);
@@ -839,7 +835,6 @@ namespace OpenSim.Region.Framework.Scenes
839 if (backBottomLeft.Z < minZ) 835 if (backBottomLeft.Z < minZ)
840 minZ = backBottomLeft.Z; 836 minZ = backBottomLeft.Z;
841 } 837 }
842
843 } 838 }
844 839
845 Vector3 boundingBox = new Vector3(maxX - minX, maxY - minY, maxZ - minZ); 840 Vector3 boundingBox = new Vector3(maxX - minX, maxY - minY, maxZ - minZ);
@@ -860,6 +855,7 @@ namespace OpenSim.Region.Framework.Scenes
860 // m_log.InfoFormat("BoundingBox is {0} , {1} , {2} ", boundingBox.X, boundingBox.Y, boundingBox.Z); 855 // m_log.InfoFormat("BoundingBox is {0} , {1} , {2} ", boundingBox.X, boundingBox.Y, boundingBox.Z);
861 return boundingBox; 856 return boundingBox;
862 } 857 }
858
863 #endregion 859 #endregion
864 860
865 public void SaveScriptedState(XmlTextWriter writer) 861 public void SaveScriptedState(XmlTextWriter writer)
@@ -1029,8 +1025,8 @@ namespace OpenSim.Region.Framework.Scenes
1029 //m_rootPart.ApplyPhysics(m_rootPart.GetEffectiveObjectFlags(), m_scene.m_physicalPrim); 1025 //m_rootPart.ApplyPhysics(m_rootPart.GetEffectiveObjectFlags(), m_scene.m_physicalPrim);
1030 //AttachToBackup(); 1026 //AttachToBackup();
1031 //m_rootPart.ScheduleFullUpdate(); 1027 //m_rootPart.ScheduleFullUpdate();
1032
1033 } 1028 }
1029
1034 /// <summary> 1030 /// <summary>
1035 /// 1031 ///
1036 /// </summary> 1032 /// </summary>
@@ -1130,6 +1126,7 @@ namespace OpenSim.Region.Framework.Scenes
1130 } 1126 }
1131 } 1127 }
1132 } 1128 }
1129
1133 // helper provided for parts. 1130 // helper provided for parts.
1134 public int GetSceneMaxUndo() 1131 public int GetSceneMaxUndo()
1135 { 1132 {
@@ -1183,7 +1180,6 @@ namespace OpenSim.Region.Framework.Scenes
1183 { 1180 {
1184 SceneObjectPart part = GetChildPart(localId); 1181 SceneObjectPart part = GetChildPart(localId);
1185 OnGrabPart(part, offsetPos, remoteClient); 1182 OnGrabPart(part, offsetPos, remoteClient);
1186
1187 } 1183 }
1188 } 1184 }
1189 1185
@@ -1267,28 +1263,10 @@ namespace OpenSim.Region.Framework.Scenes
1267 } 1263 }
1268 } 1264 }
1269 1265
1270 if ((aggregateScriptEvents & scriptEvents.at_target) != 0) 1266 m_scriptListens_atTarget = ((aggregateScriptEvents & scriptEvents.at_target) != 0);
1271 { 1267 m_scriptListens_notAtTarget = ((aggregateScriptEvents & scriptEvents.not_at_target) != 0);
1272 m_scriptListens_atTarget = true;
1273 }
1274 else
1275 {
1276 m_scriptListens_atTarget = false;
1277 }
1278
1279 if ((aggregateScriptEvents & scriptEvents.not_at_target) != 0)
1280 {
1281 m_scriptListens_notAtTarget = true;
1282 }
1283 else
1284 {
1285 m_scriptListens_notAtTarget = false;
1286 }
1287 1268
1288 if (m_scriptListens_atTarget || m_scriptListens_notAtTarget) 1269 if (!m_scriptListens_atTarget && !m_scriptListens_notAtTarget)
1289 {
1290 }
1291 else
1292 { 1270 {
1293 lock (m_targets) 1271 lock (m_targets)
1294 m_targets.Clear(); 1272 m_targets.Clear();
@@ -1787,9 +1765,6 @@ namespace OpenSim.Region.Framework.Scenes
1787 } 1765 }
1788 } 1766 }
1789 1767
1790
1791
1792
1793 /// <summary> 1768 /// <summary>
1794 /// Set the owner of the root part. 1769 /// Set the owner of the root part.
1795 /// </summary> 1770 /// </summary>
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 3646811..5a74bad 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2710,11 +2710,10 @@ if (m_shape != null) {
2710 2710
2711 public EntityIntersection TestIntersection(Ray iray, Quaternion parentrot) 2711 public EntityIntersection TestIntersection(Ray iray, Quaternion parentrot)
2712 { 2712 {
2713 // In this case we're using a sphere with a radius of the largest dimention of the prim 2713 // In this case we're using a sphere with a radius of the largest dimension of the prim
2714 // TODO: Change to take shape into account 2714 // TODO: Change to take shape into account
2715 2715
2716 2716 EntityIntersection result = new EntityIntersection();
2717 EntityIntersection returnresult = new EntityIntersection();
2718 Vector3 vAbsolutePosition = AbsolutePosition; 2717 Vector3 vAbsolutePosition = AbsolutePosition;
2719 Vector3 vScale = Scale; 2718 Vector3 vScale = Scale;
2720 Vector3 rOrigin = iray.Origin; 2719 Vector3 rOrigin = iray.Origin;
@@ -2738,8 +2737,7 @@ if (m_shape != null) {
2738 2737
2739 Vector3 tmVal6 = vAbsolutePosition*rOrigin; 2738 Vector3 tmVal6 = vAbsolutePosition*rOrigin;
2740 2739
2741 2740 // Set Radius to the largest dimension of the prim
2742 // Set Radius to the largest dimention of the prim
2743 float radius = 0f; 2741 float radius = 0f;
2744 if (vScale.X > radius) 2742 if (vScale.X > radius)
2745 radius = vScale.X; 2743 radius = vScale.X;
@@ -2765,7 +2763,7 @@ if (m_shape != null) {
2765 if (rootsqr < 0.0f) 2763 if (rootsqr < 0.0f)
2766 { 2764 {
2767 // No intersection 2765 // No intersection
2768 return returnresult; 2766 return result;
2769 } 2767 }
2770 float root = ((-itestPart2) - (float) Math.Sqrt((double) rootsqr))/(itestPart1*2.0f); 2768 float root = ((-itestPart2) - (float) Math.Sqrt((double) rootsqr))/(itestPart1*2.0f);
2771 2769
@@ -2778,7 +2776,7 @@ if (m_shape != null) {
2778 if (root < 0.0f) 2776 if (root < 0.0f)
2779 { 2777 {
2780 // nope, no intersection 2778 // nope, no intersection
2781 return returnresult; 2779 return result;
2782 } 2780 }
2783 } 2781 }
2784 2782
@@ -2788,12 +2786,12 @@ if (m_shape != null) {
2788 new Vector3(iray.Origin.X + (iray.Direction.X*root), iray.Origin.Y + (iray.Direction.Y*root), 2786 new Vector3(iray.Origin.X + (iray.Direction.X*root), iray.Origin.Y + (iray.Direction.Y*root),
2789 iray.Origin.Z + (iray.Direction.Z*root)); 2787 iray.Origin.Z + (iray.Direction.Z*root));
2790 2788
2791 returnresult.HitTF = true; 2789 result.HitTF = true;
2792 returnresult.ipoint = ipoint; 2790 result.ipoint = ipoint;
2793 2791
2794 // Normal is calculated by the difference and then normalizing the result 2792 // Normal is calculated by the difference and then normalizing the result
2795 Vector3 normalpart = ipoint - vAbsolutePosition; 2793 Vector3 normalpart = ipoint - vAbsolutePosition;
2796 returnresult.normal = normalpart / normalpart.Length(); 2794 result.normal = normalpart / normalpart.Length();
2797 2795
2798 // It's funny how the Vector3 object has a Distance function, but the Axiom.Math object doesn't. 2796 // It's funny how the Vector3 object has a Distance function, but the Axiom.Math object doesn't.
2799 // I can write a function to do it.. but I like the fact that this one is Static. 2797 // I can write a function to do it.. but I like the fact that this one is Static.
@@ -2802,9 +2800,9 @@ if (m_shape != null) {
2802 Vector3 distanceConvert2 = new Vector3(ipoint.X, ipoint.Y, ipoint.Z); 2800 Vector3 distanceConvert2 = new Vector3(ipoint.X, ipoint.Y, ipoint.Z);
2803 float distance = (float) Util.GetDistanceTo(distanceConvert1, distanceConvert2); 2801 float distance = (float) Util.GetDistanceTo(distanceConvert1, distanceConvert2);
2804 2802
2805 returnresult.distance = distance; 2803 result.distance = distance;
2806 2804
2807 return returnresult; 2805 return result;
2808 } 2806 }
2809 2807
2810 public EntityIntersection TestIntersectionOBB(Ray iray, Quaternion parentrot, bool frontFacesOnly, bool faceCenters) 2808 public EntityIntersection TestIntersectionOBB(Ray iray, Quaternion parentrot, bool frontFacesOnly, bool faceCenters)
@@ -3008,9 +3006,9 @@ if (m_shape != null) {
3008 //distance[i] = (normals[i].X * AmBa.X + normals[i].Y * AmBa.Y + normals[i].Z * AmBa.Z) * -1; 3006 //distance[i] = (normals[i].X * AmBa.X + normals[i].Y * AmBa.Y + normals[i].Z * AmBa.Z) * -1;
3009 } 3007 }
3010 3008
3011 EntityIntersection returnresult = new EntityIntersection(); 3009 EntityIntersection result = new EntityIntersection();
3012 3010
3013 returnresult.distance = 1024; 3011 result.distance = 1024;
3014 float c = 0; 3012 float c = 0;
3015 float a = 0; 3013 float a = 0;
3016 float d = 0; 3014 float d = 0;
@@ -3030,7 +3028,7 @@ if (m_shape != null) {
3030 //{ 3028 //{
3031 //if (iray.Origin.Dot(normals[i]) > d) 3029 //if (iray.Origin.Dot(normals[i]) > d)
3032 //{ 3030 //{
3033 //return returnresult; 3031 //return result;
3034 //} 3032 //}
3035 // else 3033 // else
3036 //{ 3034 //{
@@ -3044,7 +3042,7 @@ if (m_shape != null) {
3044 //{ 3042 //{
3045 //if (a > fmin) 3043 //if (a > fmin)
3046 //{ 3044 //{
3047 //return returnresult; 3045 //return result;
3048 //} 3046 //}
3049 //fmax = a; 3047 //fmax = a;
3050 //} 3048 //}
@@ -3056,7 +3054,7 @@ if (m_shape != null) {
3056 //{ 3054 //{
3057 //if (a < 0 || a < fmax) 3055 //if (a < 0 || a < fmax)
3058 //{ 3056 //{
3059 //return returnresult; 3057 //return result;
3060 //} 3058 //}
3061 //fmin = a; 3059 //fmin = a;
3062 //} 3060 //}
@@ -3112,17 +3110,17 @@ if (m_shape != null) {
3112 // distance2 = (float)GetDistanceTo(q, iray.Origin); 3110 // distance2 = (float)GetDistanceTo(q, iray.Origin);
3113 //} 3111 //}
3114 3112
3115 if (distance2 < returnresult.distance) 3113 if (distance2 < result.distance)
3116 { 3114 {
3117 returnresult.distance = distance2; 3115 result.distance = distance2;
3118 returnresult.HitTF = true; 3116 result.HitTF = true;
3119 returnresult.ipoint = q; 3117 result.ipoint = q;
3120 //m_log.Info("[FACE]:" + i.ToString()); 3118 //m_log.Info("[FACE]:" + i.ToString());
3121 //m_log.Info("[POINT]: " + q.ToString()); 3119 //m_log.Info("[POINT]: " + q.ToString());
3122 //m_log.Info("[DIST]: " + distance2.ToString()); 3120 //m_log.Info("[DIST]: " + distance2.ToString());
3123 if (faceCenters) 3121 if (faceCenters)
3124 { 3122 {
3125 returnresult.normal = AAfacenormals[i] * AXrot; 3123 result.normal = AAfacenormals[i] * AXrot;
3126 3124
3127 Vector3 scaleComponent = AAfacenormals[i]; 3125 Vector3 scaleComponent = AAfacenormals[i];
3128 float ScaleOffset = 0.5f; 3126 float ScaleOffset = 0.5f;
@@ -3130,20 +3128,20 @@ if (m_shape != null) {
3130 if (scaleComponent.Y != 0) ScaleOffset = AXscale.Y; 3128 if (scaleComponent.Y != 0) ScaleOffset = AXscale.Y;
3131 if (scaleComponent.Z != 0) ScaleOffset = AXscale.Z; 3129 if (scaleComponent.Z != 0) ScaleOffset = AXscale.Z;
3132 ScaleOffset = Math.Abs(ScaleOffset); 3130 ScaleOffset = Math.Abs(ScaleOffset);
3133 Vector3 offset = returnresult.normal * ScaleOffset; 3131 Vector3 offset = result.normal * ScaleOffset;
3134 returnresult.ipoint = AXpos + offset; 3132 result.ipoint = AXpos + offset;
3135 3133
3136 ///pos = (intersectionpoint + offset); 3134 ///pos = (intersectionpoint + offset);
3137 } 3135 }
3138 else 3136 else
3139 { 3137 {
3140 returnresult.normal = normals[i]; 3138 result.normal = normals[i];
3141 } 3139 }
3142 returnresult.AAfaceNormal = AAfacenormals[i]; 3140 result.AAfaceNormal = AAfacenormals[i];
3143 } 3141 }
3144 } 3142 }
3145 } 3143 }
3146 return returnresult; 3144 return result;
3147 } 3145 }
3148 3146
3149 /// <summary> 3147 /// <summary>
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 08fc61f..4a2d7b5 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -634,7 +634,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
634 { 634 {
635 get { return (uint)Util.RandomClass.Next(0,int.MaxValue); } 635 get { return (uint)Util.RandomClass.Next(0,int.MaxValue); }
636 } 636 }
637 637#pragma warning disable 67
638 public event GenericMessage OnGenericMessage; 638 public event GenericMessage OnGenericMessage;
639 public event ImprovedInstantMessage OnInstantMessage; 639 public event ImprovedInstantMessage OnInstantMessage;
640 public event ChatMessage OnChatFromClient; 640 public event ChatMessage OnChatFromClient;
@@ -686,6 +686,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
686 public event SpinStop OnSpinStop; 686 public event SpinStop OnSpinStop;
687 public event UpdateShape OnUpdatePrimShape; 687 public event UpdateShape OnUpdatePrimShape;
688 public event ObjectExtraParams OnUpdateExtraParams; 688 public event ObjectExtraParams OnUpdateExtraParams;
689 public event ObjectRequest OnObjectRequest;
689 public event ObjectSelect OnObjectSelect; 690 public event ObjectSelect OnObjectSelect;
690 public event ObjectDeselect OnObjectDeselect; 691 public event ObjectDeselect OnObjectDeselect;
691 public event GenericCall7 OnObjectDescription; 692 public event GenericCall7 OnObjectDescription;
@@ -825,6 +826,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
825 public event AvatarNotesUpdate OnAvatarNotesUpdate; 826 public event AvatarNotesUpdate OnAvatarNotesUpdate;
826 public event MuteListRequest OnMuteListRequest; 827 public event MuteListRequest OnMuteListRequest;
827 public event PlacesQuery OnPlacesQuery; 828 public event PlacesQuery OnPlacesQuery;
829#pragma warning restore 67
828 830
829 public void SetDebugPacketLevel(int newDebug) 831 public void SetDebugPacketLevel(int newDebug)
830 { 832 {
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ISecurityCredential.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ISecurityCredential.cs
new file mode 100644
index 0000000..533d176
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ISecurityCredential.cs
@@ -0,0 +1,36 @@
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
28namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
29{
30 public interface ISecurityCredential
31 {
32 ISocialEntity owner { get; }
33 bool CanEditObject(IObject target);
34 bool CanEditTerrain(int x, int y);
35 }
36} \ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs
index 849e3ca..03c1e95 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs
@@ -32,19 +32,6 @@ using OpenMetaverse;
32 32
33namespace OpenSim.Region.OptionalModules.Scripting.Minimodule 33namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
34{ 34{
35 public interface IAvatarAttachment
36 {
37 //// <value>
38 /// Describes where on the avatar the attachment is located
39 /// </value>
40 int Location { get ; }
41
42 //// <value>
43 /// Accessor to the rez'ed asset, representing the attachment
44 /// </value>
45 IObject Asset { get; }
46 }
47
48 public interface IAvatar : IEntity 35 public interface IAvatar : IEntity
49 { 36 {
50 //// <value> 37 //// <value>
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatarAttachment.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatarAttachment.cs
new file mode 100644
index 0000000..22b4605
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatarAttachment.cs
@@ -0,0 +1,15 @@
1namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
2{
3 public interface IAvatarAttachment
4 {
5 //// <value>
6 /// Describes where on the avatar the attachment is located
7 /// </value>
8 int Location { get ; }
9
10 //// <value>
11 /// Accessor to the rez'ed asset, representing the attachment
12 /// </value>
13 IObject Asset { get; }
14 }
15} \ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
index 6415250..19f7210 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
@@ -212,6 +212,6 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
212 bool Bright { get; set; } // SetPrimParms(FULLBRIGHT) 212 bool Bright { get; set; } // SetPrimParms(FULLBRIGHT)
213 double Bloom { get; set; } // SetPrimParms(GLOW) 213 double Bloom { get; set; } // SetPrimParms(GLOW)
214 bool Shiny { get; set; } // SetPrimParms(SHINY) 214 bool Shiny { get; set; } // SetPrimParms(SHINY)
215 bool BumpMap { get; set; } // SetPrimParms(BUMPMAP) [DEPRECIATE IN FAVOUR OF UUID?] 215 bool BumpMap { get; set; } // SetPrimParms(BUMPMAP) [DEPRECATE IN FAVOUR OF UUID?]
216 } 216 }
217} 217}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs
index 5ed9af3..6daae29 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/MRMModule.cs
@@ -166,8 +166,14 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
166 166
167 public void GetGlobalEnvironment(uint localID, out IWorld world, out IHost host) 167 public void GetGlobalEnvironment(uint localID, out IWorld world, out IHost host)
168 { 168 {
169 world = new World(m_scene); 169 // UUID should be changed to object owner.
170 host = new Host(new SOPObject(m_scene, localID), m_scene, new ExtensionHandler(m_extensions), m_microthreads); 170 UUID owner = m_scene.RegionInfo.MasterAvatarAssignedUUID;
171 SEUser securityUser = new SEUser(owner, "Name Unassigned");
172 SecurityCredential creds = new SecurityCredential(securityUser, m_scene);
173
174 world = new World(m_scene, creds);
175 host = new Host(new SOPObject(m_scene, localID, creds), m_scene, new ExtensionHandler(m_extensions),
176 m_microthreads);
171 } 177 }
172 178
173 public void InitializeMRM(MRMBase mmb, uint localID, UUID itemID) 179 public void InitializeMRM(MRMBase mmb, uint localID, UUID itemID)
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs
index 4638ad0..6ba5ccf 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ObjectAccessor.cs
@@ -40,10 +40,12 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
40 { 40 {
41 private readonly Scene m_scene; 41 private readonly Scene m_scene;
42 private readonly IEnumerator<EntityBase> m_sogEnum; 42 private readonly IEnumerator<EntityBase> m_sogEnum;
43 private readonly ISecurityCredential m_security;
43 44
44 public IObjEnum(Scene scene) 45 public IObjEnum(Scene scene, ISecurityCredential security)
45 { 46 {
46 m_scene = scene; 47 m_scene = scene;
48 m_security = security;
47 m_sogEnum = m_scene.Entities.GetAllByType<SceneObjectGroup>().GetEnumerator(); 49 m_sogEnum = m_scene.Entities.GetAllByType<SceneObjectGroup>().GetEnumerator();
48 } 50 }
49 51
@@ -66,7 +68,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
66 { 68 {
67 get 69 get
68 { 70 {
69 return new SOPObject(m_scene, m_sogEnum.Current.LocalId); 71 return new SOPObject(m_scene, m_sogEnum.Current.LocalId, m_security);
70 } 72 }
71 } 73 }
72 74
@@ -79,17 +81,19 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
79 public class ObjectAccessor : System.MarshalByRefObject, IObjectAccessor 81 public class ObjectAccessor : System.MarshalByRefObject, IObjectAccessor
80 { 82 {
81 private readonly Scene m_scene; 83 private readonly Scene m_scene;
84 private readonly ISecurityCredential m_security;
82 85
83 public ObjectAccessor(Scene scene) 86 public ObjectAccessor(Scene scene, ISecurityCredential security)
84 { 87 {
85 m_scene = scene; 88 m_scene = scene;
89 m_security = security;
86 } 90 }
87 91
88 public IObject this[int index] 92 public IObject this[int index]
89 { 93 {
90 get 94 get
91 { 95 {
92 return new SOPObject(m_scene, m_scene.Entities[(uint)index].LocalId); 96 return new SOPObject(m_scene, m_scene.Entities[(uint)index].LocalId, m_security);
93 } 97 }
94 } 98 }
95 99
@@ -97,7 +101,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
97 { 101 {
98 get 102 get
99 { 103 {
100 return new SOPObject(m_scene, m_scene.Entities[index].LocalId); 104 return new SOPObject(m_scene, m_scene.Entities[index].LocalId, m_security);
101 } 105 }
102 } 106 }
103 107
@@ -105,7 +109,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
105 { 109 {
106 get 110 get
107 { 111 {
108 return new SOPObject(m_scene, m_scene.Entities[index].LocalId); 112 return new SOPObject(m_scene, m_scene.Entities[index].LocalId, m_security);
109 } 113 }
110 } 114 }
111 115
@@ -117,20 +121,20 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
117 public IObject Create(Vector3 position, Quaternion rotation) 121 public IObject Create(Vector3 position, Quaternion rotation)
118 { 122 {
119 123
120 SceneObjectGroup sog = m_scene.AddNewPrim(m_scene.RegionInfo.MasterAvatarAssignedUUID, 124 SceneObjectGroup sog = m_scene.AddNewPrim(m_security.owner.GlobalID,
121 UUID.Zero, 125 UUID.Zero,
122 position, 126 position,
123 rotation, 127 rotation,
124 PrimitiveBaseShape.CreateBox()); 128 PrimitiveBaseShape.CreateBox());
125 129
126 IObject ret = new SOPObject(m_scene, sog.LocalId); 130 IObject ret = new SOPObject(m_scene, sog.LocalId, m_security);
127 131
128 return ret; 132 return ret;
129 } 133 }
130 134
131 public IEnumerator<IObject> GetEnumerator() 135 public IEnumerator<IObject> GetEnumerator()
132 { 136 {
133 return new IObjEnum(m_scene); 137 return new IObjEnum(m_scene, m_security);
134 } 138 }
135 139
136 IEnumerator IEnumerable.GetEnumerator() 140 IEnumerator IEnumerable.GetEnumerator()
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
index bc26389..35b0a0f 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObject.cs
@@ -27,6 +27,7 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Security;
30using OpenMetaverse; 31using OpenMetaverse;
31using OpenMetaverse.Packets; 32using OpenMetaverse.Packets;
32using OpenSim.Framework; 33using OpenSim.Framework;
@@ -42,13 +43,22 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
42 { 43 {
43 private readonly Scene m_rootScene; 44 private readonly Scene m_rootScene;
44 private readonly uint m_localID; 45 private readonly uint m_localID;
46 private readonly ISecurityCredential m_security;
45 47
48 [Obsolete("Replace with 'credential' constructor [security]")]
46 public SOPObject(Scene rootScene, uint localID) 49 public SOPObject(Scene rootScene, uint localID)
47 { 50 {
48 m_rootScene = rootScene; 51 m_rootScene = rootScene;
49 m_localID = localID; 52 m_localID = localID;
50 } 53 }
51 54
55 public SOPObject(Scene rootScene, uint localID, ISecurityCredential credential)
56 {
57 m_rootScene = rootScene;
58 m_localID = localID;
59 m_security = credential;
60 }
61
52 /// <summary> 62 /// <summary>
53 /// This needs to run very, very quickly. 63 /// This needs to run very, very quickly.
54 /// It is utilized in nearly every property and method. 64 /// It is utilized in nearly every property and method.
@@ -59,6 +69,15 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
59 return m_rootScene.GetSceneObjectPart(m_localID); 69 return m_rootScene.GetSceneObjectPart(m_localID);
60 } 70 }
61 71
72 private bool CanEdit()
73 {
74 if(!m_security.CanEditObject(this))
75 {
76 throw new SecurityException("Insufficient Permission to edit object with UUID [" + GetSOP().UUID + "]");
77 }
78 return true;
79 }
80
62 #region OnTouch 81 #region OnTouch
63 82
64 private event OnTouchDelegate _OnTouch; 83 private event OnTouchDelegate _OnTouch;
@@ -68,14 +87,17 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
68 { 87 {
69 add 88 add
70 { 89 {
71 if (!_OnTouchActive) 90 if (CanEdit())
72 { 91 {
73 GetSOP().Flags |= PrimFlags.Touch; 92 if (!_OnTouchActive)
74 _OnTouchActive = true; 93 {
75 m_rootScene.EventManager.OnObjectGrab += EventManager_OnObjectGrab; 94 GetSOP().Flags |= PrimFlags.Touch;
95 _OnTouchActive = true;
96 m_rootScene.EventManager.OnObjectGrab += EventManager_OnObjectGrab;
97 }
98
99 _OnTouch += value;
76 } 100 }
77
78 _OnTouch += value;
79 } 101 }
80 remove 102 remove
81 { 103 {
@@ -95,7 +117,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
95 if (_OnTouchActive && m_localID == localID) 117 if (_OnTouchActive && m_localID == localID)
96 { 118 {
97 TouchEventArgs e = new TouchEventArgs(); 119 TouchEventArgs e = new TouchEventArgs();
98 e.Avatar = new SPAvatar(m_rootScene, remoteClient.AgentId); 120 e.Avatar = new SPAvatar(m_rootScene, remoteClient.AgentId, m_security);
99 e.TouchBiNormal = surfaceArgs.Binormal; 121 e.TouchBiNormal = surfaceArgs.Binormal;
100 e.TouchMaterialIndex = surfaceArgs.FaceIndex; 122 e.TouchMaterialIndex = surfaceArgs.FaceIndex;
101 e.TouchNormal = surfaceArgs.Normal; 123 e.TouchNormal = surfaceArgs.Normal;
@@ -130,13 +152,21 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
130 public string Name 152 public string Name
131 { 153 {
132 get { return GetSOP().Name; } 154 get { return GetSOP().Name; }
133 set { GetSOP().Name = value; } 155 set
156 {
157 if (CanEdit())
158 GetSOP().Name = value;
159 }
134 } 160 }
135 161
136 public string Description 162 public string Description
137 { 163 {
138 get { return GetSOP().Description; } 164 get { return GetSOP().Description; }
139 set { GetSOP().Description = value; } 165 set
166 {
167 if (CanEdit())
168 GetSOP().Description = value;
169 }
140 } 170 }
141 171
142 public IObject[] Children 172 public IObject[] Children
@@ -151,7 +181,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
151 int i = 0; 181 int i = 0;
152 foreach (KeyValuePair<UUID, SceneObjectPart> pair in my.ParentGroup.Children) 182 foreach (KeyValuePair<UUID, SceneObjectPart> pair in my.ParentGroup.Children)
153 { 183 {
154 rets[i++] = new SOPObject(m_rootScene, pair.Value.LocalId); 184 rets[i++] = new SOPObject(m_rootScene, pair.Value.LocalId, m_security);
155 } 185 }
156 186
157 return rets; 187 return rets;
@@ -160,7 +190,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
160 190
161 public IObject Root 191 public IObject Root
162 { 192 {
163 get { return new SOPObject(m_rootScene, GetSOP().ParentGroup.RootPart.LocalId); } 193 get { return new SOPObject(m_rootScene, GetSOP().ParentGroup.RootPart.LocalId, m_security); }
164 } 194 }
165 195
166 public IObjectMaterial[] Materials 196 public IObjectMaterial[] Materials
@@ -182,7 +212,11 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
182 public Vector3 Scale 212 public Vector3 Scale
183 { 213 {
184 get { return GetSOP().Scale; } 214 get { return GetSOP().Scale; }
185 set { GetSOP().Scale = value; } 215 set
216 {
217 if (CanEdit())
218 GetSOP().Scale = value;
219 }
186 } 220 }
187 221
188 public Quaternion WorldRotation 222 public Quaternion WorldRotation
@@ -202,15 +236,24 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
202 get { return GetSOP().AbsolutePosition; } 236 get { return GetSOP().AbsolutePosition; }
203 set 237 set
204 { 238 {
205 SceneObjectPart pos = GetSOP(); 239 if (CanEdit())
206 pos.UpdateOffSet(value - pos.AbsolutePosition); 240 {
241 SceneObjectPart pos = GetSOP();
242 pos.UpdateOffSet(value - pos.AbsolutePosition);
243 }
207 } 244 }
208 } 245 }
209 246
210 public Vector3 OffsetPosition 247 public Vector3 OffsetPosition
211 { 248 {
212 get { return GetSOP().OffsetPosition; } 249 get { return GetSOP().OffsetPosition; }
213 set { GetSOP().OffsetPosition = value; } 250 set
251 {
252 if (CanEdit())
253 {
254 GetSOP().OffsetPosition = value;
255 }
256 }
214 } 257 }
215 258
216 public Vector3 SitTarget 259 public Vector3 SitTarget
@@ -310,8 +353,10 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
310 353
311 public void Say(string msg) 354 public void Say(string msg)
312 { 355 {
313 SceneObjectPart sop = GetSOP(); 356 if (!CanEdit())
357 return;
314 358
359 SceneObjectPart sop = GetSOP();
315 m_rootScene.SimChat(msg, ChatTypeEnum.Say, sop.AbsolutePosition, sop.Name, sop.UUID, false); 360 m_rootScene.SimChat(msg, ChatTypeEnum.Say, sop.AbsolutePosition, sop.Name, sop.UUID, false);
316 } 361 }
317 362
@@ -503,6 +548,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
503 } 548 }
504 set 549 set
505 { 550 {
551 if (!CanEdit())
552 return;
553
506 GetSOP().PhysActor.RotationalVelocity = new PhysicsVector(value.X, value.Y, value.Z); 554 GetSOP().PhysActor.RotationalVelocity = new PhysicsVector(value.X, value.Y, value.Z);
507 } 555 }
508 } 556 }
@@ -516,6 +564,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
516 } 564 }
517 set 565 set
518 { 566 {
567 if (!CanEdit())
568 return;
569
519 GetSOP().PhysActor.Velocity = new PhysicsVector(value.X, value.Y, value.Z); 570 GetSOP().PhysActor.Velocity = new PhysicsVector(value.X, value.Y, value.Z);
520 } 571 }
521 } 572 }
@@ -529,6 +580,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
529 } 580 }
530 set 581 set
531 { 582 {
583 if (!CanEdit())
584 return;
585
532 GetSOP().PhysActor.Torque = new PhysicsVector(value.X, value.Y, value.Z); 586 GetSOP().PhysActor.Torque = new PhysicsVector(value.X, value.Y, value.Z);
533 } 587 }
534 } 588 }
@@ -551,27 +605,44 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
551 } 605 }
552 set 606 set
553 { 607 {
608 if (!CanEdit())
609 return;
610
554 GetSOP().PhysActor.Force = new PhysicsVector(value.X, value.Y, value.Z); 611 GetSOP().PhysActor.Force = new PhysicsVector(value.X, value.Y, value.Z);
555 } 612 }
556 } 613 }
557 614
558 public bool FloatOnWater 615 public bool FloatOnWater
559 { 616 {
560 set { GetSOP().PhysActor.FloatOnWater = value; } 617 set
618 {
619 if (!CanEdit())
620 return;
621 GetSOP().PhysActor.FloatOnWater = value;
622 }
561 } 623 }
562 624
563 public void AddForce(Vector3 force, bool pushforce) 625 public void AddForce(Vector3 force, bool pushforce)
564 { 626 {
627 if (!CanEdit())
628 return;
629
565 GetSOP().PhysActor.AddForce(new PhysicsVector(force.X, force.Y, force.Z), pushforce); 630 GetSOP().PhysActor.AddForce(new PhysicsVector(force.X, force.Y, force.Z), pushforce);
566 } 631 }
567 632
568 public void AddAngularForce(Vector3 force, bool pushforce) 633 public void AddAngularForce(Vector3 force, bool pushforce)
569 { 634 {
635 if (!CanEdit())
636 return;
637
570 GetSOP().PhysActor.AddAngularForce(new PhysicsVector(force.X, force.Y, force.Z), pushforce); 638 GetSOP().PhysActor.AddAngularForce(new PhysicsVector(force.X, force.Y, force.Z), pushforce);
571 } 639 }
572 640
573 public void SetMomentum(Vector3 momentum) 641 public void SetMomentum(Vector3 momentum)
574 { 642 {
643 if (!CanEdit())
644 return;
645
575 GetSOP().PhysActor.SetMomentum(new PhysicsVector(momentum.X, momentum.Y, momentum.Z)); 646 GetSOP().PhysActor.SetMomentum(new PhysicsVector(momentum.X, momentum.Y, momentum.Z));
576 } 647 }
577 648
@@ -586,6 +657,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
586 get { return m_sculptMap; } 657 get { return m_sculptMap; }
587 set 658 set
588 { 659 {
660 if (!CanEdit())
661 return;
662
589 m_sculptMap = value; 663 m_sculptMap = value;
590 SetPrimitiveSculpted(SculptMap, (byte) SculptType); 664 SetPrimitiveSculpted(SculptMap, (byte) SculptType);
591 } 665 }
@@ -598,6 +672,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
598 get { return m_sculptType; } 672 get { return m_sculptType; }
599 set 673 set
600 { 674 {
675 if(!CanEdit())
676 return;
677
601 m_sculptType = value; 678 m_sculptType = value;
602 SetPrimitiveSculpted(SculptMap, (byte) SculptType); 679 SetPrimitiveSculpted(SculptMap, (byte) SculptType);
603 } 680 }
@@ -654,6 +731,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
654 731
655 public void Play(UUID asset, double volume) 732 public void Play(UUID asset, double volume)
656 { 733 {
734 if (!CanEdit())
735 return;
736
657 GetSOP().SendSound(asset.ToString(), volume, true, 0); 737 GetSOP().SendSound(asset.ToString(), volume, true, 0);
658 } 738 }
659 739
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs
index ce2d339..4600836 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatar.cs
@@ -42,11 +42,13 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
42 { 42 {
43 private readonly Scene m_rootScene; 43 private readonly Scene m_rootScene;
44 private readonly UUID m_ID; 44 private readonly UUID m_ID;
45 private readonly ISecurityCredential m_security;
45 //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 46 //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
46 47
47 public SPAvatar(Scene scene, UUID ID) 48 public SPAvatar(Scene scene, UUID ID, ISecurityCredential security)
48 { 49 {
49 m_rootScene = scene; 50 m_rootScene = scene;
51 m_security = security;
50 m_ID = ID; 52 m_ID = ID;
51 } 53 }
52 54
@@ -84,7 +86,9 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
84 foreach (DictionaryEntry element in internalAttachments) 86 foreach (DictionaryEntry element in internalAttachments)
85 { 87 {
86 Hashtable attachInfo = (Hashtable)element.Value; 88 Hashtable attachInfo = (Hashtable)element.Value;
87 attachments.Add(new SPAvatarAttachment(m_rootScene, this, (int)element.Key, new UUID((string)attachInfo["item"]), new UUID((string)attachInfo["asset"]))); 89 attachments.Add(new SPAvatarAttachment(m_rootScene, this, (int) element.Key,
90 new UUID((string) attachInfo["item"]),
91 new UUID((string) attachInfo["asset"]), m_security));
88 } 92 }
89 } 93 }
90 94
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs
index 9b684fe..570459a 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SPAvatarAttachment.cs
@@ -39,10 +39,13 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
39 private readonly int m_location; 39 private readonly int m_location;
40 //private readonly UUID m_itemId; 40 //private readonly UUID m_itemId;
41 private readonly UUID m_assetId; 41 private readonly UUID m_assetId;
42
43 private readonly ISecurityCredential m_security;
42 44
43 public SPAvatarAttachment(Scene rootScene, IAvatar self, int location, UUID itemId, UUID assetId) 45 public SPAvatarAttachment(Scene rootScene, IAvatar self, int location, UUID itemId, UUID assetId, ISecurityCredential security)
44 { 46 {
45 m_rootScene = rootScene; 47 m_rootScene = rootScene;
48 m_security = security;
46 //m_parent = self; 49 //m_parent = self;
47 m_location = location; 50 m_location = location;
48 //m_itemId = itemId; 51 //m_itemId = itemId;
@@ -55,7 +58,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
55 { 58 {
56 get 59 get
57 { 60 {
58 return new SOPObject(m_rootScene, m_rootScene.GetSceneObjectPart(m_assetId).LocalId); 61 return new SOPObject(m_rootScene, m_rootScene.GetSceneObjectPart(m_assetId).LocalId, m_security);
59 } 62 }
60 } 63 }
61 } 64 }
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SecurityCredential.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SecurityCredential.cs
new file mode 100644
index 0000000..bc7f6cb
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SecurityCredential.cs
@@ -0,0 +1,62 @@
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.Text;
31using OpenMetaverse;
32using OpenSim.Region.Framework.Scenes;
33
34namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
35{
36 class SecurityCredential : ISecurityCredential
37 {
38 private readonly ISocialEntity m_owner;
39 private readonly Scene m_scene;
40
41 public SecurityCredential(ISocialEntity m_owner, Scene m_scene)
42 {
43 this.m_owner = m_owner;
44 this.m_scene = m_scene;
45 }
46
47 public ISocialEntity owner
48 {
49 get { return m_owner; }
50 }
51
52 public bool CanEditObject(IObject target)
53 {
54 return m_scene.Permissions.CanEditObject(target.GlobalID, m_owner.GlobalID);
55 }
56
57 public bool CanEditTerrain(int x, int y)
58 {
59 return m_scene.Permissions.CanTerraformLand(m_owner.GlobalID, new Vector3(x, y, 0));
60 }
61 }
62}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
index 1ec4a33..da5ea0d 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/World.cs
@@ -37,15 +37,17 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
37 public class World : System.MarshalByRefObject, IWorld, IWorldAudio 37 public class World : System.MarshalByRefObject, IWorld, IWorldAudio
38 { 38 {
39 private readonly Scene m_internalScene; 39 private readonly Scene m_internalScene;
40 private readonly ISecurityCredential m_security;
40 private readonly Heightmap m_heights; 41 private readonly Heightmap m_heights;
41 42
42 private readonly ObjectAccessor m_objs; 43 private readonly ObjectAccessor m_objs;
43 44
44 public World(Scene internalScene) 45 public World(Scene internalScene, ISecurityCredential securityCredential)
45 { 46 {
47 m_security = securityCredential;
46 m_internalScene = internalScene; 48 m_internalScene = internalScene;
47 m_heights = new Heightmap(m_internalScene); 49 m_heights = new Heightmap(m_internalScene);
48 m_objs = new ObjectAccessor(m_internalScene); 50 m_objs = new ObjectAccessor(m_internalScene, securityCredential);
49 } 51 }
50 52
51 #region Events 53 #region Events
@@ -84,7 +86,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
84 if (_OnNewUser != null) 86 if (_OnNewUser != null)
85 { 87 {
86 NewUserEventArgs e = new NewUserEventArgs(); 88 NewUserEventArgs e = new NewUserEventArgs();
87 e.Avatar = new SPAvatar(m_internalScene, presence.UUID); 89 e.Avatar = new SPAvatar(m_internalScene, presence.UUID, m_security);
88 _OnNewUser(this, e); 90 _OnNewUser(this, e);
89 } 91 }
90 } 92 }
@@ -144,7 +146,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
144 if (chat.Sender == null && chat.SenderObject != null) 146 if (chat.Sender == null && chat.SenderObject != null)
145 { 147 {
146 ChatEventArgs e = new ChatEventArgs(); 148 ChatEventArgs e = new ChatEventArgs();
147 e.Sender = new SOPObject(m_internalScene, ((SceneObjectPart) chat.SenderObject).LocalId); 149 e.Sender = new SOPObject(m_internalScene, ((SceneObjectPart) chat.SenderObject).LocalId, m_security);
148 e.Text = chat.Message; 150 e.Text = chat.Message;
149 151
150 _OnChat(this, e); 152 _OnChat(this, e);
@@ -154,7 +156,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
154 if (chat.Sender != null && chat.SenderObject == null) 156 if (chat.Sender != null && chat.SenderObject == null)
155 { 157 {
156 ChatEventArgs e = new ChatEventArgs(); 158 ChatEventArgs e = new ChatEventArgs();
157 e.Sender = new SPAvatar(m_internalScene, chat.SenderUUID); 159 e.Sender = new SPAvatar(m_internalScene, chat.SenderUUID, m_security);
158 e.Text = chat.Message; 160 e.Text = chat.Message;
159 161
160 _OnChat(this, e); 162 _OnChat(this, e);
@@ -207,7 +209,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
207 for (int i = 0; i < ents.Count; i++) 209 for (int i = 0; i < ents.Count; i++)
208 { 210 {
209 EntityBase ent = ents[i]; 211 EntityBase ent = ents[i];
210 rets[i] = new SPAvatar(m_internalScene, ent.UUID); 212 rets[i] = new SPAvatar(m_internalScene, ent.UUID, m_security);
211 } 213 }
212 214
213 return rets; 215 return rets;
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index 4a8ba8c..f0bdf3b 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -213,6 +213,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
213 public event UpdateShape OnUpdatePrimShape; 213 public event UpdateShape OnUpdatePrimShape;
214 public event ObjectExtraParams OnUpdateExtraParams; 214 public event ObjectExtraParams OnUpdateExtraParams;
215 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily; 215 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
216 public event ObjectRequest OnObjectRequest;
216 public event ObjectSelect OnObjectSelect; 217 public event ObjectSelect OnObjectSelect;
217 public event GenericCall7 OnObjectDescription; 218 public event GenericCall7 OnObjectDescription;
218 public event GenericCall7 OnObjectName; 219 public event GenericCall7 OnObjectName;
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
index 8fdc5a7..b7030f1 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
@@ -347,18 +347,13 @@ namespace OpenSim.Region.Physics.OdePlugin
347 #endif 347 #endif
348 } 348 }
349 349
350 // zero out a heightmap array float array (single dimention [flattened])) 350 // zero out a heightmap array float array (single dimension [flattened]))
351 if ((int)Constants.RegionSize == 256) 351 if ((int)Constants.RegionSize == 256)
352 _heightmap = new float[514*514]; 352 _heightmap = new float[514*514];
353 else 353 else
354 _heightmap = new float[(((int)Constants.RegionSize + 2) * ((int)Constants.RegionSize + 2))]; 354 _heightmap = new float[(((int)Constants.RegionSize + 2) * ((int)Constants.RegionSize + 2))];
355 _watermap = new float[258 * 258]; 355 _watermap = new float[258 * 258];
356 356
357
358
359
360
361
362 // Zero out the prim spaces array (we split our space into smaller spaces so 357 // Zero out the prim spaces array (we split our space into smaller spaces so
363 // we can hit test less. 358 // we can hit test less.
364 } 359 }
@@ -2197,7 +2192,7 @@ namespace OpenSim.Region.Physics.OdePlugin
2197 } 2192 }
2198 2193
2199 /// <summary> 2194 /// <summary>
2200 /// Called when a static prim moves. Allocates a space for the prim based on it's position 2195 /// Called when a static prim moves. Allocates a space for the prim based on its position
2201 /// </summary> 2196 /// </summary>
2202 /// <param name="geom">the pointer to the geom that moved</param> 2197 /// <param name="geom">the pointer to the geom that moved</param>
2203 /// <param name="pos">the position that the geom moved to</param> 2198 /// <param name="pos">the position that the geom moved to</param>
@@ -3013,7 +3008,7 @@ namespace OpenSim.Region.Physics.OdePlugin
3013 float[] returnarr = new float[262144]; 3008 float[] returnarr = new float[262144];
3014 float[,] resultarr = new float[m_regionWidth, m_regionHeight]; 3009 float[,] resultarr = new float[m_regionWidth, m_regionHeight];
3015 3010
3016 // Filling out the array into it's multi-dimentional components 3011 // Filling out the array into its multi-dimensional components
3017 for (int y = 0; y < m_regionHeight; y++) 3012 for (int y = 0; y < m_regionHeight; y++)
3018 { 3013 {
3019 for (int x = 0; x < m_regionWidth; x++) 3014 for (int x = 0; x < m_regionWidth; x++)
@@ -3126,7 +3121,7 @@ namespace OpenSim.Region.Physics.OdePlugin
3126 float[] returnarr = new float[262144]; 3121 float[] returnarr = new float[262144];
3127 float[,] resultarr = new float[m_regionWidth,m_regionHeight]; 3122 float[,] resultarr = new float[m_regionWidth,m_regionHeight];
3128 3123
3129 // Filling out the array into it's multi-dimentional components 3124 // Filling out the array into its multi-dimensional components
3130 for (int y = 0; y < m_regionHeight; y++) 3125 for (int y = 0; y < m_regionHeight; y++)
3131 { 3126 {
3132 for (int x = 0; x < m_regionWidth; x++) 3127 for (int x = 0; x < m_regionWidth; x++)
diff --git a/OpenSim/Tests/Common/Mock/TestClient.cs b/OpenSim/Tests/Common/Mock/TestClient.cs
index bf4ddf0..fe31729 100644
--- a/OpenSim/Tests/Common/Mock/TestClient.cs
+++ b/OpenSim/Tests/Common/Mock/TestClient.cs
@@ -120,6 +120,7 @@ namespace OpenSim.Tests.Common.Mock
120 public event ObjectExtraParams OnUpdateExtraParams; 120 public event ObjectExtraParams OnUpdateExtraParams;
121 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily; 121 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
122 public event ObjectSelect OnObjectSelect; 122 public event ObjectSelect OnObjectSelect;
123 public event ObjectRequest OnObjectRequest;
123 public event GenericCall7 OnObjectDescription; 124 public event GenericCall7 OnObjectDescription;
124 public event GenericCall7 OnObjectName; 125 public event GenericCall7 OnObjectName;
125 public event GenericCall7 OnObjectClickAction; 126 public event GenericCall7 OnObjectClickAction;
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index ff8fa5f..db993b4 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -4,7 +4,7 @@
4 save_crashes = false 4 save_crashes = false
5 5
6 ; Directory to save crashes to if above is enabled 6 ; Directory to save crashes to if above is enabled
7 ; (eg default is /opensimdir/crashes/*.txt or C:\opensim\crashes\*.txt) 7 ; (default is /opensimdir/crashes/*.txt or C:\opensim\crashes\*.txt)
8 crash_dir = "crashes" 8 crash_dir = "crashes"
9 9
10 ; Place to create a PID file 10 ; Place to create a PID file
@@ -14,16 +14,16 @@
14 ; Set HttpProxy to the URL for your proxy server if you would like 14 ; Set HttpProxy to the URL for your proxy server if you would like
15 ; to proxy llHTTPRequests through a firewall 15 ; to proxy llHTTPRequests through a firewall
16 ; HttpProxy = "http://proxy.com" 16 ; HttpProxy = "http://proxy.com"
17 ; Set HttpProxyExceptions to a list of regular expressions for 17 ; Set HttpProxyExceptions to a list of regular expressions for
18 ; URLs that you don't want going through the proxy such as servers 18 ; URLs that you don't want going through the proxy such as servers
19 ; inside your firewall, separate patterns with a ';' 19 ; inside your firewall, separate patterns with a ';'
20 ; HttpProxyExceptions = ".mydomain.com;localhost" 20 ; HttpProxyExceptions = ".mydomain.com;localhost"
21 21
22 ; Set this to true if you are connecting your OpenSimulator regions to a grid 22 ; Set this to true if you are connecting your regions to a grid
23 ; Set this to false if you are running OpenSimulator in standalone mode 23 ; Set this to false if you are running in standalone mode
24 gridmode = false 24 gridmode = false
25 25
26 ; Set this to true if you want this OpenSimulator to run the Hypergrid functionality 26 ; Set this to true if you want Hypergrid functionality
27 hypergrid = false 27 hypergrid = false
28 28
29 startup_console_commands_file = "startup_commands.txt" 29 startup_console_commands_file = "startup_commands.txt"
@@ -39,7 +39,7 @@
39 ; Enables EventQueueGet Service. 39 ; Enables EventQueueGet Service.
40 EventQueue = true 40 EventQueue = true
41 41
42 ; Set this to the DLL containig the client stack to use. 42 ; Set this to the DLL containing the client stack to use.
43 clientstack_plugin="OpenSim.Region.ClientStack.LindenUDP.dll" 43 clientstack_plugin="OpenSim.Region.ClientStack.LindenUDP.dll"
44 44
45 ; ## 45 ; ##
@@ -60,7 +60,7 @@
60 ; except that everything is also enclosed in a <Regions> tag. 60 ; except that everything is also enclosed in a <Regions> tag.
61 ; regionload_webserver_url = "http://example.com/regions.xml"; 61 ; regionload_webserver_url = "http://example.com/regions.xml";
62 62
63 ; Draw objects on maptile. This step might take a long time if you've got a huge amount of 63 ; Draw objects on maptile. This step might take a long time if you've got a large number of
64 ; objects, so you can turn it off here if you'd like. 64 ; objects, so you can turn it off here if you'd like.
65 DrawPrimOnMapTile = true 65 DrawPrimOnMapTile = true
66 ; Use terrain texture for maptiles if true, use shaded green if false 66 ; Use terrain texture for maptiles if true, use shaded green if false
@@ -109,11 +109,11 @@
109 ; If you're running a region server connecting to a grid, you probably want grid mode, since this will use the 109 ; If you're running a region server connecting to a grid, you probably want grid mode, since this will use the
110 ; grid asset server. If you select local in grid mode, then you will use a database as specified in asset_plugin to store assets 110 ; grid asset server. If you select local in grid mode, then you will use a database as specified in asset_plugin to store assets
111 ; locally. This will mean you won't be able to take items using your assets to other people's regions. 111 ; locally. This will mean you won't be able to take items using your assets to other people's regions.
112 112
113 ; Persistence of changed objects happens during regular sweeps. The following control that behaviour to 113 ; Persistence of changed objects happens during regular sweeps. The following control that behaviour to
114 ; prevent frequently changing objects from heavily loading the region data store. 114 ; prevent frequently changing objects from heavily loading the region data store.
115 ; If both of these values are set to zero then persistence of all changed objects will happen on every sweep. 115 ; If both of these values are set to zero then persistence of all changed objects will happen on every sweep.
116 ; 116 ;
117 ; Objects will be considered for persistance in the next sweep when they have not changed for this number of seconds 117 ; Objects will be considered for persistance in the next sweep when they have not changed for this number of seconds
118 MinimumTimeBeforePersistenceConsidered = 60 118 MinimumTimeBeforePersistenceConsidered = 60
119 ; Objects will always be considered for persistance in the next sweep if the first change occurred this number of seconds ago 119 ; Objects will always be considered for persistance in the next sweep if the first change occurred this number of seconds ago
@@ -129,11 +129,11 @@
129 ; if you would like to allow prims to be physical and move by physics with the physical checkbox in the client set this to true. 129 ; if you would like to allow prims to be physical and move by physics with the physical checkbox in the client set this to true.
130 physical_prim = true 130 physical_prim = true
131 131
132 ; Select a mesher here. ZeroMesher is save and fast. 132 ; Select a mesher here. ZeroMesher is safe and fast.
133 ; ZeroMesher also means that the physics engine models the physics of prims 133 ; ZeroMesher also means that the physics engine models the physics of prims
134 ; sticking to the basic shapes the engine does support. Usually this is only a box. 134 ; sticking to the basic shapes the engine does support. Usually this is only a box.
135 ; Meshmerizer gives a better handling of complex prims by using triangle meshes. 135 ; Meshmerizer gives a better handling of complex prims by using triangle meshes.
136 ; Note, that only ODE physics currently deals with meshed prims in a satisfactoring way 136 ; Note that only ODE physics currently deals with meshed prims in a satisfactory way
137 ; 137 ;
138 meshing = ZeroMesher 138 meshing = ZeroMesher
139 ;meshing = Meshmerizer 139 ;meshing = Meshmerizer
@@ -165,20 +165,20 @@
165 165
166 ; Control user types that are allowed to create new scripts 166 ; Control user types that are allowed to create new scripts
167 ; Only enforced if serviceside_object_permissions is true 167 ; Only enforced if serviceside_object_permissions is true
168 ; 168 ;
169 ; Current possible values are 169 ; Current possible values are
170 ; all - anyone can create scripts (subject to normal permissions) 170 ; all - anyone can create scripts (subject to normal permissions)
171 ; gods - only administrators can create scripts (as long as allow_grid_gods is true) 171 ; gods - only administrators can create scripts (as long as allow_grid_gods is true)
172 ; Default value is all 172 ; Default value is all
173 ; allowed_script_creators = all 173 ; allowed_script_creators = all
174 174
175 ; Control user types that are allowed to edit (save) scripts 175 ; Control user types that are allowed to edit (save) scripts
176 ; Only enforced if serviceside_object_permissions is true 176 ; Only enforced if serviceside_object_permissions is true
177 ; 177 ;
178 ; Current possible values are 178 ; Current possible values are
179 ; all - anyone can edit scripts (subject to normal permissions) 179 ; all - anyone can edit scripts (subject to normal permissions)
180 ; gods - only administrators can edit scripts (as long as allow_grid_gods is true) 180 ; gods - only administrators can edit scripts (as long as allow_grid_gods is true)
181 ; Default value is all 181 ; Default value is all
182 ; allowed_script_editors = all 182 ; allowed_script_editors = all
183 183
184 ; ## 184 ; ##
@@ -220,9 +220,9 @@
220 ; FLYSLOW, and the "always run" state will be the regular fly. 220 ; FLYSLOW, and the "always run" state will be the regular fly.
221 221
222 enableflyslow = false 222 enableflyslow = false
223 223
224 ; PreJump is an additional animation state, but it probably 224 ; PreJump is an additional animation state, but it probably
225 ; won't look right until the physics engine supports it 225 ; won't look right until the physics engine supports it
226 ; (i.e delays takeoff for a moment) 226 ; (i.e delays takeoff for a moment)
227 227
228 ; This is commented so it will come on automatically once it's 228 ; This is commented so it will come on automatically once it's
@@ -290,7 +290,7 @@
290 ; Specifies the location and filename of the default inventory library control file. The path can be relative or absolute 290 ; Specifies the location and filename of the default inventory library control file. The path can be relative or absolute
291 ; Default is ./inventory/Libraries.xml 291 ; Default is ./inventory/Libraries.xml
292 LibrariesXMLFile="./inventory/Libraries.xml" 292 LibrariesXMLFile="./inventory/Libraries.xml"
293 293
294[Network] 294[Network]
295 http_listener_port = 9000 295 http_listener_port = 9000
296 default_location_x = 1000 296 default_location_x = 1000
@@ -337,10 +337,10 @@
337 337
338[ClientStack.LindenUDP] 338[ClientStack.LindenUDP]
339 ; This is the multiplier applied to all client throttles for outgoing UDP network data 339 ; This is the multiplier applied to all client throttles for outgoing UDP network data
340 ; If it is set to 1, then we obey the throttle settings as given to us by the client. If it is set to 3, for example, then we 340 ; If it is set to 1, then we obey the throttle settings as given to us by the client. If it is set to 3, for example, then we
341 ; multiply that setting by 3 (e.g. if the client gives us a setting of 250 kilobits per second then we 341 ; multiply that setting by 3 (e.g. if the client gives us a setting of 250 kilobits per second then we
342 ; will actually push down data at a maximum rate of 750 kilobits per second). 342 ; will actually push down data at a maximum rate of 750 kilobits per second).
343 ; 343 ;
344 ; In principle, setting a multiplier greater than 1 will allow data to be pushed down to a client much faster 344 ; In principle, setting a multiplier greater than 1 will allow data to be pushed down to a client much faster
345 ; than its UI allows the setting to go. This may be okay in some situations, such as standalone OpenSim 345 ; than its UI allows the setting to go. This may be okay in some situations, such as standalone OpenSim
346 ; applications on a LAN. However, the greater the multipler, the higher the risk of packet drop, resulting 346 ; applications on a LAN. However, the greater the multipler, the higher the risk of packet drop, resulting
@@ -350,11 +350,11 @@
350 ; Currently this setting is 2 by default because we currently send much more texture data than is strictly 350 ; Currently this setting is 2 by default because we currently send much more texture data than is strictly
351 ; necessary. A setting of 1 could result in slow texture transfer. This will be fixed when the transfer 351 ; necessary. A setting of 1 could result in slow texture transfer. This will be fixed when the transfer
352 ; of textures at different levels of quality is improved. 352 ; of textures at different levels of quality is improved.
353 ; 353 ;
354 ; Pre r7113, this setting was not exposed but was effectively 8. You may want to try this if you encounter 354 ; Pre r7113, this setting was not exposed but was effectively 8. You may want to try this if you encounter
355 ; unexpected difficulties 355 ; unexpected difficulties
356 client_throttle_multiplier = 2; 356 client_throttle_multiplier = 2;
357 357
358 ; the client socket receive buffer size determines how many 358 ; the client socket receive buffer size determines how many
359 ; incoming requests we can process; the default on .NET is 8192 359 ; incoming requests we can process; the default on .NET is 8192
360 ; which is about 2 4k-sized UDP datagrams. On mono this is 360 ; which is about 2 4k-sized UDP datagrams. On mono this is
@@ -429,9 +429,8 @@
429 ; surface layer around geometries other geometries can sink into before generating a contact 429 ; surface layer around geometries other geometries can sink into before generating a contact
430 world_contact_surface_layer = 0.001 430 world_contact_surface_layer = 0.001
431 431
432 ; Filtering Collisions helps keep things stable physics wise, but sometimes 432 ; Filtering collisions helps keep things stable physics wise, but sometimes
433 ; it can be over zealous. If you notice bouncing, chances are it's being just 433 ; it can be overzealous. If you notice bouncing, chances are it's that.
434 ; that
435 filter_collisions = false 434 filter_collisions = false
436 435
437 ; Non Moving Terrain Contact (avatar isn't moving) 436 ; Non Moving Terrain Contact (avatar isn't moving)
@@ -551,15 +550,15 @@
551 ; ## Joint support 550 ; ## Joint support
552 ; ## 551 ; ##
553 552
554 ; if you would like physics joints to be enabled through a special naming convention in the client, set this to true. 553 ; if you would like physics joints to be enabled through a special naming convention in the client, set this to true.
555 ; (see NINJA Physics documentation, http://opensimulator.org/wiki/NINJA_Physics) 554 ; (see NINJA Physics documentation, http://opensimulator.org/wiki/NINJA_Physics)
556 ; default is false 555 ; default is false
557 ;use_NINJA_physics_joints = true 556 ;use_NINJA_physics_joints = true
558 557
559 ; ## 558 ; ##
560 ; ## additional meshing options 559 ; ## additional meshing options
561 ; ## 560 ; ##
562 561
563 ; physical collision mesh proxies are normally created for complex prim shapes, and collisions for simple boxes and 562 ; physical collision mesh proxies are normally created for complex prim shapes, and collisions for simple boxes and
564 ; spheres are computed algorithmically. If you would rather have mesh proxies for simple prims, you can set this to 563 ; spheres are computed algorithmically. If you would rather have mesh proxies for simple prims, you can set this to
565 ; true. Note that this will increase memory usage and region startup time. Default is false. 564 ; true. Note that this will increase memory usage and region startup time. Default is false.
@@ -602,10 +601,10 @@
602 ;region_limit = 0 601 ;region_limit = 0
603 602
604 ; enable only those methods you deem to be appropriate using a | delimited whitelist 603 ; enable only those methods you deem to be appropriate using a | delimited whitelist
605 ; for example, enabled_methods = admin_broadcast|admin_region_query|admin_save_oar|admin_save_xml 604 ; for example, enabled_methods = admin_broadcast|admin_region_query|admin_save_oar|admin_save_xml
606 ; if this parameter is not specified but enabled = true, all methods will be available 605 ; if this parameter is not specified but enabled = true, all methods will be available
607 enabled_methods = all 606 enabled_methods = all
608 607
609 608
610[RestPlugins] 609[RestPlugins]
611 ; Change this to true to enable REST Plugins. This must be true if you wish to use 610 ; Change this to true to enable REST Plugins. This must be true if you wish to use
@@ -739,7 +738,7 @@
739 ; Density of cloud cover 0.0 to 1.0 Defult 0.5 738 ; Density of cloud cover 0.0 to 1.0 Defult 0.5
740 density = 0.5 739 density = 0.5
741 740
742 ; update interval for the cloud cover data returned by llCloud(). 741 ; update interval for the cloud cover data returned by llCloud().
743 ; default is 1000 742 ; default is 1000
744 cloud_update_rate = 1000 743 cloud_update_rate = 1000
745 744
@@ -914,7 +913,7 @@
914 ; This will be created in bin, if it doesn't exist already. It will hold the data snapshots. 913 ; This will be created in bin, if it doesn't exist already. It will hold the data snapshots.
915 snapshot_cache_directory = "DataSnapshot" 914 snapshot_cache_directory = "DataSnapshot"
916 915
917 ; This semicolon-separated string serves to notify specific data services about the existence 916 ; This semicolon-separated string serves to notify specific data services about the existence
918 ; of this sim. Uncomment if you want to index your data with this and/or other search providers. 917 ; of this sim. Uncomment if you want to index your data with this and/or other search providers.
919 ;data_services="http://metaverseink.com/cgi-bin/register.py" 918 ;data_services="http://metaverseink.com/cgi-bin/register.py"
920 919
@@ -997,7 +996,7 @@
997 DefaultCompileLanguage = lsl 996 DefaultCompileLanguage = lsl
998 997
999 ; List of allowed languages (lsl,vb,js,cs) 998 ; List of allowed languages (lsl,vb,js,cs)
1000 ; AllowedCompilers=lsl,cs,js,vb. 999 ; AllowedCompilers=lsl,cs,js,vb.
1001 ; *warning*, non lsl languages have access to static methods such as System.IO.File. Enable at your own risk. 1000 ; *warning*, non lsl languages have access to static methods such as System.IO.File. Enable at your own risk.
1002 AllowedCompilers=lsl 1001 AllowedCompilers=lsl
1003 1002
@@ -1050,13 +1049,13 @@
1050 ; Comma separated list of UUIDS allows the function for that list of UUIDS 1049 ; Comma separated list of UUIDS allows the function for that list of UUIDS
1051 ; Allow_osSetRegionWaterHeight = 888760cb-a3cf-43ac-8ea4-8732fd3ee2bb 1050 ; Allow_osSetRegionWaterHeight = 888760cb-a3cf-43ac-8ea4-8732fd3ee2bb
1052 1051
1053 ; Allow for llCreateLink and llBreakLink to work without asking for permission 1052 ; Allow for llCreateLink and llBreakLink to work without asking for permission
1054 ; only enable this in a trusted environment otherwise you may be subject to hijacking 1053 ; only enable this in a trusted environment otherwise you may be subject to hijacking
1055 ; AutomaticLinkPermission = false 1054 ; AutomaticLinkPermission = false
1056 1055
1057 ; Disable underground movement of prims (default true); set to 1056 ; Disable underground movement of prims (default true); set to
1058 ; false to allow script controlled underground positioning of 1057 ; false to allow script controlled underground positioning of
1059 ; prims 1058 ; prims
1060 ; DisableUndergroundMovement = true 1059 ; DisableUndergroundMovement = true
1061 1060
1062 1061
@@ -1164,7 +1163,7 @@
1164[MRM] 1163[MRM]
1165 ; Enables the Mini Region Modules Script Engine. WARNING: SECURITY RISK. 1164 ; Enables the Mini Region Modules Script Engine. WARNING: SECURITY RISK.
1166 ; default is false 1165 ; default is false
1167 Enabled = false 1166 Enabled = false
1168 1167
1169 1168
1170[Hypergrid] 1169[Hypergrid]
@@ -1176,7 +1175,7 @@
1176 ; The VivoxVoice module will allow you to provide voice on your 1175 ; The VivoxVoice module will allow you to provide voice on your
1177 ; region(s). It uses the same voice technology as the LL grid and 1176 ; region(s). It uses the same voice technology as the LL grid and
1178 ; works with recent LL clients (we have tested 1.22.9.110075, so 1177 ; works with recent LL clients (we have tested 1.22.9.110075, so
1179 ; anything later ought to be fine as well). 1178 ; anything later ought to be fine as well).
1180 ; 1179 ;
1181 ; For this to work you need to obtain an admin account from Vivox 1180 ; For this to work you need to obtain an admin account from Vivox
1182 ; that allows you to create voice accounts and region channels. 1181 ; that allows you to create voice accounts and region channels.
@@ -1234,14 +1233,14 @@
1234 ; In order for this to work you need a functioning freeswitch pbx set 1233 ; In order for this to work you need a functioning freeswitch pbx set
1235 ; up. Configuration for that will be posted in the wiki soon. 1234 ; up. Configuration for that will be posted in the wiki soon.
1236 enabled = false 1235 enabled = false
1237 ;FreeSwitch server is going to contact us and ask us all 1236 ;FreeSwitch server is going to contact us and ask us all
1238 ;sorts of things. 1237 ;sorts of things.
1239 freeswitch_server_user = freeswitch 1238 freeswitch_server_user = freeswitch
1240 freeswitch_server_pass = password 1239 freeswitch_server_pass = password
1241 freeswitch_api_prefix = /api 1240 freeswitch_api_prefix = /api
1242 ; this is the IP of your sim 1241 ; this is the IP of your sim
1243 freeswitch_service_server = ip.address.of.your.sim 1242 freeswitch_service_server = ip.address.of.your.sim
1244 ;freeswitch_service_port = 80 1243 ;freeswitch_service_port = 80
1245 ; this should be the same port the region listens on 1244 ; this should be the same port the region listens on
1246 freeswitch_service_port = 9000 1245 freeswitch_service_port = 9000
1247 freeswitch_realm = ip.address.of.freeswitch.server 1246 freeswitch_realm = ip.address.of.freeswitch.server
@@ -1251,15 +1250,15 @@
1251 freeswitch_echo_server = ip.address.of.freeswitch.server 1250 freeswitch_echo_server = ip.address.of.freeswitch.server
1252 freeswitch_echo_port = 50505 1251 freeswitch_echo_port = 50505
1253 freeswitch_well_known_ip = ip.address.of.freeswitch.server 1252 freeswitch_well_known_ip = ip.address.of.freeswitch.server
1254 1253
1255 ;Type the address of your http server here, hostname is allowed. This is provided so you can specify a hostname 1254 ;Type the address of your http server here, hostname is allowed. This is provided so you can specify a hostname
1256 ;This is used by client for account verification. By default, it's the same as the freeswitch service server. 1255 ;This is used by client for account verification. By default, it's the same as the freeswitch service server.
1257 1256
1258 ;opensim_well_known_http_address = Address_Of_your_SIM_HTTP_Server_Hostname_Allowed 1257 ;opensim_well_known_http_address = Address_Of_your_SIM_HTTP_Server_Hostname_Allowed
1259 1258
1260 freeswitch_default_timeout = 5000 1259 freeswitch_default_timeout = 5000
1261 freeswitch_subscribe_retry = 120 1260 freeswitch_subscribe_retry = 120
1262 ; freeswitch_password_reset_url = 1261 ; freeswitch_password_reset_url =
1263 1262
1264 1263
1265[Groups] 1264[Groups]
@@ -1268,19 +1267,19 @@
1268 ; This is the current groups stub in Region.CoreModules.Avatar.Groups 1267 ; This is the current groups stub in Region.CoreModules.Avatar.Groups
1269 Module = Default 1268 Module = Default
1270 1269
1271 ; The PHP code for the server is available from the Flotsam project for you to deploy 1270 ; The PHP code for the server is available from the Flotsam project for you to deploy
1272 ; to your own server. The Flotsam project is located at http://code.google.com/p/flotsam/ 1271 ; to your own server. The Flotsam project is located at http://code.google.com/p/flotsam/
1273 ; 1272 ;
1274 ;Module = GroupsModule 1273 ;Module = GroupsModule
1275 1274
1276 ; Enable Group Notices 1275 ; Enable Group Notices
1277 ;NoticesEnabled = true 1276 ;NoticesEnabled = true
1278 1277
1279 ; This makes the Groups modules very chatty on the console. 1278 ; This makes the Groups modules very chatty on the console.
1280 ;DebugEnabled = true 1279 ;DebugEnabled = true
1281 1280
1282 ; Specify which messaging module to use for groups messaging and if it's enabled 1281 ; Specify which messaging module to use for groups messaging and if it's enabled
1283 ;MessagingModule = GroupsMessagingModule 1282 ;MessagingModule = GroupsMessagingModule
1284 ;MessagingEnabled = true 1283 ;MessagingEnabled = true
1285 1284
1286 ; Service connector to Groups Service [Select One] 1285 ; Service connector to Groups Service [Select One]
@@ -1290,9 +1289,9 @@
1290 ;XmlRpcServiceReadKey = 1234 1289 ;XmlRpcServiceReadKey = 1234
1291 ;XmlRpcServiceWriteKey = 1234 1290 ;XmlRpcServiceWriteKey = 1234
1292 1291
1293 ; Disables HTTP Keep-Alive for XmlRpcGroupsServicesConnector HTTP Requests, 1292 ; Disables HTTP Keep-Alive for XmlRpcGroupsServicesConnector HTTP Requests,
1294 ; this is a work around fora problem discovered on some Windows based region servers. 1293 ; this is a work around fora problem discovered on some Windows based region servers.
1295 ; Only disable keep alive if you see a large number (dozens) of the following Exceptions: 1294 ; Only disable keep alive if you see a large number (dozens) of the following Exceptions:
1296 ; System.Net.WebException: The request was aborted: The request was canceled. 1295 ; System.Net.WebException: The request was aborted: The request was canceled.
1297 ; 1296 ;
1298 ; XmlRpcDisableKeepAlive = false 1297 ; XmlRpcDisableKeepAlive = false
@@ -1321,7 +1320,7 @@
1321 ;FullUpdateRate=14 1320 ;FullUpdateRate=14
1322 1321
1323 ;PacketMTU = 1400 1322 ;PacketMTU = 1400
1324 1323
1325 ; TextureUpdateRate (mS) determines how many times per second 1324 ; TextureUpdateRate (mS) determines how many times per second
1326 ; texture send processing will occur. The default is 100mS. 1325 ; texture send processing will occur. The default is 100mS.
1327 ; 1326 ;
@@ -1371,7 +1370,6 @@
1371 ; to customize your data 1370 ; to customize your data
1372 1371
1373 1372
1374
1375 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1373 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1376 ;; The below pulls in optional module config files 1374 ;; The below pulls in optional module config files
1377 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1375 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;