aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie2010-09-25 06:19:26 +0100
committerMelanie2010-09-25 06:19:26 +0100
commit4fbdcb95a078d8a7b9c90bb3d3b56f955512bccd (patch)
tree1e69a75f208cc7065bdd196bb99d13adfb5003b5 /OpenSim
parentExperimental locking of taint processing (diff)
parentFix a minor economy issue (diff)
downloadopensim-SC_OLD-4fbdcb95a078d8a7b9c90bb3d3b56f955512bccd.zip
opensim-SC_OLD-4fbdcb95a078d8a7b9c90bb3d3b56f955512bccd.tar.gz
opensim-SC_OLD-4fbdcb95a078d8a7b9c90bb3d3b56f955512bccd.tar.bz2
opensim-SC_OLD-4fbdcb95a078d8a7b9c90bb3d3b56f955512bccd.tar.xz
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Data/SQLite/SQLiteAssetData.cs7
-rw-r--r--OpenSim/Data/SQLite/SQLiteAuthenticationData.cs7
-rw-r--r--OpenSim/Data/SQLite/SQLiteAvatarData.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteEstateData.cs19
-rw-r--r--OpenSim/Data/SQLite/SQLiteFramework.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteFriendsData.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteInventoryStore.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteSimulationData.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteUserAccountData.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteUtils.cs6
-rw-r--r--OpenSim/Data/SQLite/SQLiteXInventoryData.cs6
-rw-r--r--OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/UuidGatherer.cs7
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs87
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs194
18 files changed, 229 insertions, 157 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteAssetData.cs b/OpenSim/Data/SQLite/SQLiteAssetData.cs
index 75e51a3..9a4eb76 100644
--- a/OpenSim/Data/SQLite/SQLiteAssetData.cs
+++ b/OpenSim/Data/SQLite/SQLiteAssetData.cs
@@ -30,7 +30,12 @@ using System.Data;
30using System.Reflection; 30using System.Reflection;
31using System.Collections.Generic; 31using System.Collections.Generic;
32using log4net; 32using log4net;
33using Mono.Data.Sqlite; 33#if CSharpSqlite
34 using Community.CsharpSqlite.Sqlite;
35#else
36 using Mono.Data.Sqlite;
37#endif
38
34using OpenMetaverse; 39using OpenMetaverse;
35using OpenSim.Framework; 40using OpenSim.Framework;
36 41
diff --git a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
index a1412ff..c54bd74 100644
--- a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
@@ -33,7 +33,12 @@ using System.Reflection;
33using log4net; 33using log4net;
34using OpenMetaverse; 34using OpenMetaverse;
35using OpenSim.Framework; 35using OpenSim.Framework;
36using Mono.Data.Sqlite; 36using log4net;
37#if CSharpSqlite
38 using Community.CsharpSqlite.Sqlite;
39#else
40 using Mono.Data.Sqlite;
41#endif
37 42
38namespace OpenSim.Data.SQLite 43namespace OpenSim.Data.SQLite
39{ 44{
diff --git a/OpenSim/Data/SQLite/SQLiteAvatarData.cs b/OpenSim/Data/SQLite/SQLiteAvatarData.cs
index c093884..60a1a3e 100644
--- a/OpenSim/Data/SQLite/SQLiteAvatarData.cs
+++ b/OpenSim/Data/SQLite/SQLiteAvatarData.cs
@@ -33,7 +33,11 @@ using System.Threading;
33using log4net; 33using log4net;
34using OpenMetaverse; 34using OpenMetaverse;
35using OpenSim.Framework; 35using OpenSim.Framework;
36using Mono.Data.Sqlite; 36#if CSharpSqlite
37 using Community.CsharpSqlite.Sqlite;
38#else
39 using Mono.Data.Sqlite;
40#endif
37 41
38namespace OpenSim.Data.SQLite 42namespace OpenSim.Data.SQLite
39{ 43{
diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs
index d1d67eb..63252aa 100644
--- a/OpenSim/Data/SQLite/SQLiteEstateData.cs
+++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs
@@ -30,7 +30,11 @@ using System.Collections.Generic;
30using System.Data; 30using System.Data;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using Mono.Data.Sqlite; 33#if CSharpSqlite
34 using Community.CsharpSqlite.Sqlite;
35#else
36 using Mono.Data.Sqlite;
37#endif
34using OpenMetaverse; 38using OpenMetaverse;
35using OpenSim.Framework; 39using OpenSim.Framework;
36using OpenSim.Region.Framework.Interfaces; 40using OpenSim.Region.Framework.Interfaces;
@@ -105,10 +109,17 @@ namespace OpenSim.Data.SQLite
105 { 109 {
106 EstateSettings es = new EstateSettings(); 110 EstateSettings es = new EstateSettings();
107 es.OnSave += StoreEstateSettings; 111 es.OnSave += StoreEstateSettings;
112 IDataReader r = null;
113 try
114 {
115 r = cmd.ExecuteReader();
116 }
117 catch (SqliteException)
118 {
119 m_log.Error("[SQLITE]: There was an issue loading the estate settings. This can happen the first time running OpenSimulator with CSharpSqlite the first time. OpenSimulator will probably crash, restart it and it should be good to go.");
120 }
108 121
109 IDataReader r = cmd.ExecuteReader(); 122 if (r != null && r.Read())
110
111 if (r.Read())
112 { 123 {
113 foreach (string name in FieldList) 124 foreach (string name in FieldList)
114 { 125 {
diff --git a/OpenSim/Data/SQLite/SQLiteFramework.cs b/OpenSim/Data/SQLite/SQLiteFramework.cs
index cf114d1..4992bcc 100644
--- a/OpenSim/Data/SQLite/SQLiteFramework.cs
+++ b/OpenSim/Data/SQLite/SQLiteFramework.cs
@@ -31,7 +31,11 @@ using System.Collections.Generic;
31using System.Data; 31using System.Data;
32using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using Mono.Data.Sqlite; 34#if CSharpSqlite
35 using Community.CsharpSqlite.Sqlite;
36#else
37 using Mono.Data.Sqlite;
38#endif
35 39
36namespace OpenSim.Data.SQLite 40namespace OpenSim.Data.SQLite
37{ 41{
diff --git a/OpenSim/Data/SQLite/SQLiteFriendsData.cs b/OpenSim/Data/SQLite/SQLiteFriendsData.cs
index b06853c..4bfd228 100644
--- a/OpenSim/Data/SQLite/SQLiteFriendsData.cs
+++ b/OpenSim/Data/SQLite/SQLiteFriendsData.cs
@@ -31,7 +31,11 @@ using System.Collections.Generic;
31using System.Data; 31using System.Data;
32using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using Mono.Data.Sqlite; 34#if CSharpSqlite
35 using Community.CsharpSqlite.Sqlite;
36#else
37 using Mono.Data.Sqlite;
38#endif
35 39
36namespace OpenSim.Data.SQLite 40namespace OpenSim.Data.SQLite
37{ 41{
diff --git a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
index 9b8e2fa..0d7b001 100644
--- a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
+++ b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs
@@ -30,7 +30,11 @@ using System.Collections.Generic;
30using System.Data; 30using System.Data;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using Mono.Data.Sqlite; 33#if CSharpSqlite
34 using Community.CsharpSqlite.Sqlite;
35#else
36 using Mono.Data.Sqlite;
37#endif
34using OpenMetaverse; 38using OpenMetaverse;
35using OpenSim.Framework; 39using OpenSim.Framework;
36using OpenSim.Region.Framework.Interfaces; 40using OpenSim.Region.Framework.Interfaces;
diff --git a/OpenSim/Data/SQLite/SQLiteInventoryStore.cs b/OpenSim/Data/SQLite/SQLiteInventoryStore.cs
index ecf8e02..d606f11 100644
--- a/OpenSim/Data/SQLite/SQLiteInventoryStore.cs
+++ b/OpenSim/Data/SQLite/SQLiteInventoryStore.cs
@@ -30,7 +30,11 @@ using System.Collections.Generic;
30using System.Data; 30using System.Data;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using Mono.Data.Sqlite; 33#if CSharpSqlite
34 using Community.CsharpSqlite.Sqlite;
35#else
36 using Mono.Data.Sqlite;
37#endif
34using OpenMetaverse; 38using OpenMetaverse;
35using OpenSim.Framework; 39using OpenSim.Framework;
36 40
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
index ebe6da8..9d49fb6 100644
--- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
@@ -32,7 +32,11 @@ using System.Drawing;
32using System.IO; 32using System.IO;
33using System.Reflection; 33using System.Reflection;
34using log4net; 34using log4net;
35using Mono.Data.Sqlite; 35#if CSharpSqlite
36 using Community.CsharpSqlite.Sqlite;
37#else
38 using Mono.Data.Sqlite;
39#endif
36using OpenMetaverse; 40using OpenMetaverse;
37using OpenMetaverse.StructuredData; 41using OpenMetaverse.StructuredData;
38using OpenSim.Framework; 42using OpenSim.Framework;
diff --git a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs
index 2706aea..7a5de50 100644
--- a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs
+++ b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs
@@ -31,7 +31,11 @@ using System.Collections.Generic;
31using System.Data; 31using System.Data;
32using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using Mono.Data.Sqlite; 34#if CSharpSqlite
35 using Community.CsharpSqlite.Sqlite;
36#else
37 using Mono.Data.Sqlite;
38#endif
35 39
36namespace OpenSim.Data.SQLite 40namespace OpenSim.Data.SQLite
37{ 41{
diff --git a/OpenSim/Data/SQLite/SQLiteUtils.cs b/OpenSim/Data/SQLite/SQLiteUtils.cs
index 07c6b69..ca5861f 100644
--- a/OpenSim/Data/SQLite/SQLiteUtils.cs
+++ b/OpenSim/Data/SQLite/SQLiteUtils.cs
@@ -27,7 +27,11 @@
27 27
28using System; 28using System;
29using System.Data; 29using System.Data;
30using Mono.Data.Sqlite; 30#if CSharpSqlite
31 using Community.CsharpSqlite.Sqlite;
32#else
33 using Mono.Data.Sqlite;
34#endif
31 35
32namespace OpenSim.Data.SQLite 36namespace OpenSim.Data.SQLite
33{ 37{
diff --git a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs
index ca651e1..ccbd86e 100644
--- a/OpenSim/Data/SQLite/SQLiteXInventoryData.cs
+++ b/OpenSim/Data/SQLite/SQLiteXInventoryData.cs
@@ -29,7 +29,11 @@ using System;
29using System.Data; 29using System.Data;
30using System.Reflection; 30using System.Reflection;
31using System.Collections.Generic; 31using System.Collections.Generic;
32using Mono.Data.Sqlite; 32#if CSharpSqlite
33 using Community.CsharpSqlite.Sqlite;
34#else
35 using Mono.Data.Sqlite;
36#endif
33using log4net; 37using log4net;
34using OpenMetaverse; 38using OpenMetaverse;
35using OpenSim.Framework; 39using OpenSim.Framework;
diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs
index d91c36c..c8fb9da 100644
--- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs
+++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs
@@ -91,6 +91,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell
91 if (part.ParentGroup.IsDeleted) 91 if (part.ParentGroup.IsDeleted)
92 return; 92 return;
93 93
94 if (part.OwnerID != client.AgentId && (!m_scene.Permissions.IsGod(client.AgentId)))
95 return;
96
94 part = part.ParentGroup.RootPart; 97 part = part.ParentGroup.RootPart;
95 98
96 part.ObjectSaleType = saleType; 99 part.ObjectSaleType = saleType;
@@ -258,4 +261,4 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell
258 return true; 261 return true;
259 } 262 }
260 } 263 }
261} \ No newline at end of file 264}
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index c94a873..a9502ed 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1748,7 +1748,7 @@ namespace OpenSim.Region.Framework.Scenes
1748 1748
1749 part.PhysActor 1749 part.PhysActor
1750 = m_scene.PhysicsScene.AddPrimShape( 1750 = m_scene.PhysicsScene.AddPrimShape(
1751 part.Name, 1751 string.Format("{0}/{1}", part.Name, part.UUID),
1752 pbs, 1752 pbs,
1753 part.AbsolutePosition, 1753 part.AbsolutePosition,
1754 part.Scale, 1754 part.Scale,
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 40112c9..9bb961d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -1560,7 +1560,7 @@ namespace OpenSim.Region.Framework.Scenes
1560 try 1560 try
1561 { 1561 {
1562 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape( 1562 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape(
1563 Name, 1563 string.Format("{0}/{1}", Name, UUID),
1564 Shape, 1564 Shape,
1565 AbsolutePosition, 1565 AbsolutePosition,
1566 Scale, 1566 Scale,
@@ -4396,7 +4396,7 @@ namespace OpenSim.Region.Framework.Scenes
4396 { 4396 {
4397 // It's not phantom anymore. So make sure the physics engine get's knowledge of it 4397 // It's not phantom anymore. So make sure the physics engine get's knowledge of it
4398 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape( 4398 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape(
4399 Name, 4399 string.Format("{0}/{1}", Name, UUID),
4400 Shape, 4400 Shape,
4401 AbsolutePosition, 4401 AbsolutePosition,
4402 Scale, 4402 Scale,
diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
index 65baa52..aee2d10 100644
--- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
+++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs
@@ -291,9 +291,16 @@ namespace OpenSim.Region.Framework.Scenes
291 } 291 }
292 } 292 }
293 293
294 /// <summary>
295 /// Get the asset uuid associated with a gesture
296 /// </summary>
297 /// <param name="gestureUuid"></param>
298 /// <param name="assetUuids"></param>
294 protected void GetGestureAssetUuids(UUID gestureUuid, IDictionary<UUID, AssetType> assetUuids) 299 protected void GetGestureAssetUuids(UUID gestureUuid, IDictionary<UUID, AssetType> assetUuids)
295 { 300 {
296 AssetBase assetBase = GetAsset(gestureUuid); 301 AssetBase assetBase = GetAsset(gestureUuid);
302 if (null == assetBase)
303 return;
297 304
298 MemoryStream ms = new MemoryStream(assetBase.Data); 305 MemoryStream ms = new MemoryStream(assetBase.Data);
299 StreamReader sr = new StreamReader(ms); 306 StreamReader sr = new StreamReader(ms);
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index 2e39726..daf7fb0 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -170,7 +170,7 @@ namespace OpenSim.Region.Physics.OdePlugin
170 private bool m_lastUpdateSent; 170 private bool m_lastUpdateSent;
171 171
172 public IntPtr Body = IntPtr.Zero; 172 public IntPtr Body = IntPtr.Zero;
173 public String m_primName; 173 public String Name { get; private set; }
174 private Vector3 _target_velocity; 174 private Vector3 _target_velocity;
175 public d.Mass pMass; 175 public d.Mass pMass;
176 176
@@ -188,6 +188,7 @@ namespace OpenSim.Region.Physics.OdePlugin
188 public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size, 188 public OdePrim(String primName, OdeScene parent_scene, Vector3 pos, Vector3 size,
189 Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode) 189 Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode)
190 { 190 {
191 Name = primName;
191 m_vehicle = new ODEDynamics(); 192 m_vehicle = new ODEDynamics();
192 //gc = GCHandle.Alloc(prim_geom, GCHandleType.Pinned); 193 //gc = GCHandle.Alloc(prim_geom, GCHandleType.Pinned);
193 ode = dode; 194 ode = dode;
@@ -195,7 +196,7 @@ namespace OpenSim.Region.Physics.OdePlugin
195 { 196 {
196 pos = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f), 197 pos = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f),
197 parent_scene.GetTerrainHeightAtXY(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f)) + 0.5f); 198 parent_scene.GetTerrainHeightAtXY(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f)) + 0.5f);
198 m_log.Warn("[PHYSICS]: Got nonFinite Object create Position"); 199 m_log.WarnFormat("[PHYSICS]: Got nonFinite Object create Position for {0}", Name);
199 } 200 }
200 _position = pos; 201 _position = pos;
201 m_taintposition = pos; 202 m_taintposition = pos;
@@ -212,7 +213,7 @@ namespace OpenSim.Region.Physics.OdePlugin
212 if (!pos.IsFinite()) 213 if (!pos.IsFinite())
213 { 214 {
214 size = new Vector3(0.5f, 0.5f, 0.5f); 215 size = new Vector3(0.5f, 0.5f, 0.5f);
215 m_log.Warn("[PHYSICS]: Got nonFinite Object create Size"); 216 m_log.WarnFormat("[PHYSICS]: Got nonFinite Object create Size for {0}", Name);
216 } 217 }
217 218
218 if (size.X <= 0) size.X = 0.01f; 219 if (size.X <= 0) size.X = 0.01f;
@@ -225,7 +226,7 @@ namespace OpenSim.Region.Physics.OdePlugin
225 if (!QuaternionIsFinite(rotation)) 226 if (!QuaternionIsFinite(rotation))
226 { 227 {
227 rotation = Quaternion.Identity; 228 rotation = Quaternion.Identity;
228 m_log.Warn("[PHYSICS]: Got nonFinite Object create Rotation"); 229 m_log.WarnFormat("[PHYSICS]: Got nonFinite Object create Rotation for {0}", Name);
229 } 230 }
230 231
231 _orientation = rotation; 232 _orientation = rotation;
@@ -246,7 +247,7 @@ namespace OpenSim.Region.Physics.OdePlugin
246 if (m_isphysical) 247 if (m_isphysical)
247 m_targetSpace = _parent_scene.space; 248 m_targetSpace = _parent_scene.space;
248 } 249 }
249 m_primName = primName; 250
250 m_taintadd = true; 251 m_taintadd = true;
251 _parent_scene.AddPhysicsActorTaint(this); 252 _parent_scene.AddPhysicsActorTaint(this);
252 // don't do .add() here; old geoms get recycled with the same hash 253 // don't do .add() here; old geoms get recycled with the same hash
@@ -304,7 +305,7 @@ namespace OpenSim.Region.Physics.OdePlugin
304 { 305 {
305 prev_geom = prim_geom; 306 prev_geom = prim_geom;
306 prim_geom = geom; 307 prim_geom = geom;
307//Console.WriteLine("SetGeom to " + prim_geom + " for " + m_primName); 308//Console.WriteLine("SetGeom to " + prim_geom + " for " + Name);
308 if (prim_geom != IntPtr.Zero) 309 if (prim_geom != IntPtr.Zero)
309 { 310 {
310 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); 311 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
@@ -857,7 +858,7 @@ namespace OpenSim.Region.Physics.OdePlugin
857 } 858 }
858 catch (AccessViolationException) 859 catch (AccessViolationException)
859 { 860 {
860 m_log.Error("[PHYSICS]: MESH LOCKED"); 861 m_log.ErrorFormat("[PHYSICS]: MESH LOCKED FOR {0}", Name);
861 return; 862 return;
862 } 863 }
863 864
@@ -874,7 +875,7 @@ namespace OpenSim.Region.Physics.OdePlugin
874 875
875 public void ProcessTaints(float timestep) 876 public void ProcessTaints(float timestep)
876 { 877 {
877//Console.WriteLine("ProcessTaints for " + m_primName); 878//Console.WriteLine("ProcessTaints for " + Name);
878 if (m_taintadd) 879 if (m_taintadd)
879 { 880 {
880 changeadd(timestep); 881 changeadd(timestep);
@@ -945,7 +946,7 @@ namespace OpenSim.Region.Physics.OdePlugin
945 } 946 }
946 else 947 else
947 { 948 {
948 m_log.Error("[PHYSICS]: The scene reused a disposed PhysActor! *waves finger*, Don't be evil. A couple of things can cause this. An improper prim breakdown(be sure to set prim_geom to zero after d.GeomDestroy! An improper buildup (creating the geom failed). Or, the Scene Reused a physics actor after disposing it.)"); 949 m_log.ErrorFormat("[PHYSICS]: The scene reused a disposed PhysActor for {0}! *waves finger*, Don't be evil. A couple of things can cause this. An improper prim breakdown(be sure to set prim_geom to zero after d.GeomDestroy! An improper buildup (creating the geom failed). Or, the Scene Reused a physics actor after disposing it.)", Name);
949 } 950 }
950 } 951 }
951 952
@@ -1035,7 +1036,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1035 // prim is the child 1036 // prim is the child
1036 public void ParentPrim(OdePrim prim) 1037 public void ParentPrim(OdePrim prim)
1037 { 1038 {
1038//Console.WriteLine("ParentPrim " + m_primName); 1039//Console.WriteLine("ParentPrim " + Name);
1039 if (this.m_localID != prim.m_localID) 1040 if (this.m_localID != prim.m_localID)
1040 { 1041 {
1041 if (Body == IntPtr.Zero) 1042 if (Body == IntPtr.Zero)
@@ -1071,18 +1072,20 @@ namespace OpenSim.Region.Physics.OdePlugin
1071 d.MassTranslate(ref m2, Position.X - prm.Position.X, Position.Y - prm.Position.Y, Position.Z - prm.Position.Z); 1072 d.MassTranslate(ref m2, Position.X - prm.Position.X, Position.Y - prm.Position.Y, Position.Z - prm.Position.Z);
1072 d.MassAdd(ref pMass, ref m2); 1073 d.MassAdd(ref pMass, ref m2);
1073 } 1074 }
1075
1074 foreach (OdePrim prm in childrenPrim) 1076 foreach (OdePrim prm in childrenPrim)
1075 { 1077 {
1076
1077 prm.m_collisionCategories |= CollisionCategories.Body; 1078 prm.m_collisionCategories |= CollisionCategories.Body;
1078 prm.m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind); 1079 prm.m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
1079 1080
1080 if (prm.prim_geom == IntPtr.Zero) 1081 if (prm.prim_geom == IntPtr.Zero)
1081 { 1082 {
1082 m_log.Warn("[PHYSICS]: Unable to link one of the linkset elements. No geom yet"); 1083 m_log.WarnFormat(
1084 "[PHYSICS]: Unable to link one of the linkset elements {0} for parent {1}. No geom yet",
1085 prm.Name, prim.Name);
1083 continue; 1086 continue;
1084 } 1087 }
1085//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + m_primName); 1088//Console.WriteLine(" GeomSetCategoryBits 1: " + prm.prim_geom + " - " + (int)prm.m_collisionCategories + " for " + Name);
1086 d.GeomSetCategoryBits(prm.prim_geom, (int)prm.m_collisionCategories); 1089 d.GeomSetCategoryBits(prm.prim_geom, (int)prm.m_collisionCategories);
1087 d.GeomSetCollideBits(prm.prim_geom, (int)prm.m_collisionFlags); 1090 d.GeomSetCollideBits(prm.prim_geom, (int)prm.m_collisionFlags);
1088 1091
@@ -1111,7 +1114,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1111 } 1114 }
1112 else 1115 else
1113 { 1116 {
1114 m_log.Debug("[PHYSICS]:I ain't got no boooooooooddy, no body"); 1117 m_log.DebugFormat("[PHYSICS]: {0} ain't got no boooooooooddy, no body", Name);
1115 } 1118 }
1116 1119
1117 1120
@@ -1130,7 +1133,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1130 m_collisionCategories |= CollisionCategories.Body; 1133 m_collisionCategories |= CollisionCategories.Body;
1131 m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind); 1134 m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind);
1132 1135
1133//Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + m_primName); 1136//Console.WriteLine("GeomSetCategoryBits 2: " + prim_geom + " - " + (int)m_collisionCategories + " for " + Name);
1134 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories); 1137 d.GeomSetCategoryBits(prim_geom, (int)m_collisionCategories);
1135//Console.WriteLine(" Post GeomSetCategoryBits 2"); 1138//Console.WriteLine(" Post GeomSetCategoryBits 2");
1136 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); 1139 d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags);
@@ -1373,7 +1376,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1373 } 1376 }
1374 catch (AccessViolationException) 1377 catch (AccessViolationException)
1375 { 1378 {
1376 m_log.Warn("[PHYSICS]: Unable to create physics proxy for object"); 1379 m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
1377 ode.dunlock(_parent_scene.world); 1380 ode.dunlock(_parent_scene.world);
1378 return; 1381 return;
1379 } 1382 }
@@ -1388,7 +1391,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1388 } 1391 }
1389 catch (AccessViolationException) 1392 catch (AccessViolationException)
1390 { 1393 {
1391 m_log.Warn("[PHYSICS]: Unable to create physics proxy for object"); 1394 m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
1392 ode.dunlock(_parent_scene.world); 1395 ode.dunlock(_parent_scene.world);
1393 return; 1396 return;
1394 } 1397 }
@@ -1404,7 +1407,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1404 } 1407 }
1405 catch (AccessViolationException) 1408 catch (AccessViolationException)
1406 { 1409 {
1407 m_log.Warn("[PHYSICS]: Unable to create physics proxy for object"); 1410 m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
1408 ode.dunlock(_parent_scene.world); 1411 ode.dunlock(_parent_scene.world);
1409 return; 1412 return;
1410 } 1413 }
@@ -1421,7 +1424,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1421 } 1424 }
1422 catch (AccessViolationException) 1425 catch (AccessViolationException)
1423 { 1426 {
1424 m_log.Warn("[PHYSICS]: Unable to create physics proxy for object"); 1427 m_log.WarnFormat("[PHYSICS]: Unable to create physics proxy for object {0}", Name);
1425 ode.dunlock(_parent_scene.world); 1428 ode.dunlock(_parent_scene.world);
1426 return; 1429 return;
1427 } 1430 }
@@ -1444,7 +1447,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1444 if (_parent_scene.needsMeshing(_pbs)) 1447 if (_parent_scene.needsMeshing(_pbs))
1445 { 1448 {
1446 // Don't need to re-enable body.. it's done in SetMesh 1449 // Don't need to re-enable body.. it's done in SetMesh
1447 _mesh = _parent_scene.mesher.CreateMesh(m_primName, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical); 1450 _mesh = _parent_scene.mesher.CreateMesh(Name, _pbs, _size, _parent_scene.meshSculptLOD, IsPhysical);
1448 // createmesh returns null when it's a shape that isn't a cube. 1451 // createmesh returns null when it's a shape that isn't a cube.
1449 // m_log.Debug(m_localID); 1452 // m_log.Debug(m_localID);
1450 } 1453 }
@@ -1473,7 +1476,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1473 } 1476 }
1474 } 1477 }
1475 1478
1476 _parent_scene.geom_name_map[prim_geom] = this.m_primName; 1479 _parent_scene.geom_name_map[prim_geom] = this.Name;
1477 _parent_scene.actor_name_map[prim_geom] = (PhysicsActor)this; 1480 _parent_scene.actor_name_map[prim_geom] = (PhysicsActor)this;
1478 1481
1479 changeSelectedStatus(timestep); 1482 changeSelectedStatus(timestep);
@@ -1524,7 +1527,7 @@ Console.WriteLine(" JointCreateFixed");
1524 } 1527 }
1525 else 1528 else
1526 { 1529 {
1527 m_log.Warn("[PHYSICS]: Body Still null after enableBody(). This is a crash scenario."); 1530 m_log.WarnFormat("[PHYSICS]: Body for {0} still null after enableBody(). This is a crash scenario.", Name);
1528 } 1531 }
1529 } 1532 }
1530 //else 1533 //else
@@ -1573,7 +1576,7 @@ Console.WriteLine(" JointCreateFixed");
1573 } 1576 }
1574 else 1577 else
1575 { 1578 {
1576//Console.WriteLine("Move " + m_primName); 1579//Console.WriteLine("Move " + Name);
1577 if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body); // KF add 161009 1580 if (!d.BodyIsEnabled (Body)) d.BodyEnable (Body); // KF add 161009
1578 // NON-'VEHICLES' are dealt with here 1581 // NON-'VEHICLES' are dealt with here
1579// if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f)) 1582// if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f))
@@ -1605,7 +1608,7 @@ Console.WriteLine(" JointCreateFixed");
1605 1608
1606 if (m_usePID) 1609 if (m_usePID)
1607 { 1610 {
1608//Console.WriteLine("PID " + m_primName); 1611//Console.WriteLine("PID " + Name);
1609 // KF - this is for object move? eg. llSetPos() ? 1612 // KF - this is for object move? eg. llSetPos() ?
1610 //if (!d.BodyIsEnabled(Body)) 1613 //if (!d.BodyIsEnabled(Body))
1611 //d.BodySetForce(Body, 0f, 0f, 0f); 1614 //d.BodySetForce(Body, 0f, 0f, 0f);
@@ -1677,7 +1680,7 @@ Console.WriteLine(" JointCreateFixed");
1677 // Hover PID Controller needs to be mutually exlusive to MoveTo PID controller 1680 // Hover PID Controller needs to be mutually exlusive to MoveTo PID controller
1678 if (m_useHoverPID && !m_usePID) 1681 if (m_useHoverPID && !m_usePID)
1679 { 1682 {
1680//Console.WriteLine("Hover " + m_primName); 1683//Console.WriteLine("Hover " + Name);
1681 1684
1682 // If we're using the PID controller, then we have no gravity 1685 // If we're using the PID controller, then we have no gravity
1683 fz = (-1 * _parent_scene.gravityz) * m_mass; 1686 fz = (-1 * _parent_scene.gravityz) * m_mass;
@@ -1803,7 +1806,7 @@ Console.WriteLine(" JointCreateFixed");
1803 { // is not physical, or is not a body or is selected 1806 { // is not physical, or is not a body or is selected
1804 // _zeroPosition = d.BodyGetPosition(Body); 1807 // _zeroPosition = d.BodyGetPosition(Body);
1805 return; 1808 return;
1806//Console.WriteLine("Nothing " + m_primName); 1809//Console.WriteLine("Nothing " + Name);
1807 1810
1808 } 1811 }
1809 } 1812 }
@@ -1891,10 +1894,10 @@ Console.WriteLine(" JointCreateFixed");
1891 catch (System.AccessViolationException) 1894 catch (System.AccessViolationException)
1892 { 1895 {
1893 prim_geom = IntPtr.Zero; 1896 prim_geom = IntPtr.Zero;
1894 m_log.Error("[PHYSICS]: PrimGeom dead"); 1897 m_log.ErrorFormat("[PHYSICS]: PrimGeom dead for {0}", Name);
1895 } 1898 }
1896 } 1899 }
1897//Console.WriteLine("changePhysicsStatus for " + m_primName); 1900//Console.WriteLine("changePhysicsStatus for " + Name);
1898 changeadd(2f); 1901 changeadd(2f);
1899 } 1902 }
1900 if (childPrim) 1903 if (childPrim)
@@ -2063,7 +2066,7 @@ Console.WriteLine(" JointCreateFixed");
2063 catch (System.AccessViolationException) 2066 catch (System.AccessViolationException)
2064 { 2067 {
2065 prim_geom = IntPtr.Zero; 2068 prim_geom = IntPtr.Zero;
2066 m_log.Error("[PHYSICS]: PrimGeom dead"); 2069 m_log.ErrorFormat("[PHYSICS]: PrimGeom dead for {0}", Name);
2067 } 2070 }
2068 prim_geom = IntPtr.Zero; 2071 prim_geom = IntPtr.Zero;
2069 // we don't need to do space calculation because the client sends a position update also. 2072 // we don't need to do space calculation because the client sends a position update also.
@@ -2307,7 +2310,7 @@ Console.WriteLine(" JointCreateFixed");
2307 } 2310 }
2308 else 2311 else
2309 { 2312 {
2310 m_log.Warn("[PHYSICS]: Got NaN Size on object"); 2313 m_log.WarnFormat("[PHYSICS]: Got NaN Size on object {0}", Name);
2311 } 2314 }
2312 } 2315 }
2313 } 2316 }
@@ -2329,7 +2332,7 @@ Console.WriteLine(" JointCreateFixed");
2329 } 2332 }
2330 else 2333 else
2331 { 2334 {
2332 m_log.Warn("[PHYSICS]: NaN in Force Applied to an Object"); 2335 m_log.WarnFormat("[PHYSICS]: NaN in Force Applied to an Object {0}", Name);
2333 } 2336 }
2334 } 2337 }
2335 } 2338 }
@@ -2413,7 +2416,7 @@ Console.WriteLine(" JointCreateFixed");
2413 } 2416 }
2414 else 2417 else
2415 { 2418 {
2416 m_log.Warn("[PHYSICS]: Got NaN Velocity in Object"); 2419 m_log.WarnFormat("[PHYSICS]: Got NaN Velocity in Object {0}", Name);
2417 } 2420 }
2418 2421
2419 } 2422 }
@@ -2438,7 +2441,7 @@ Console.WriteLine(" JointCreateFixed");
2438 } 2441 }
2439 else 2442 else
2440 { 2443 {
2441 m_log.Warn("[PHYSICS]: Got NaN Torque in Object"); 2444 m_log.WarnFormat("[PHYSICS]: Got NaN Torque in Object {0}", Name);
2442 } 2445 }
2443 } 2446 }
2444 } 2447 }
@@ -2465,7 +2468,7 @@ Console.WriteLine(" JointCreateFixed");
2465 _orientation = value; 2468 _orientation = value;
2466 } 2469 }
2467 else 2470 else
2468 m_log.Warn("[PHYSICS]: Got NaN quaternion Orientation from Scene in Object"); 2471 m_log.WarnFormat("[PHYSICS]: Got NaN quaternion Orientation from Scene in Object {0}", Name);
2469 2472
2470 } 2473 }
2471 } 2474 }
@@ -2505,7 +2508,7 @@ Console.WriteLine(" JointCreateFixed");
2505 } 2508 }
2506 else 2509 else
2507 { 2510 {
2508 m_log.Warn("[PHYSICS]: Got Invalid linear force vector from Scene in Object"); 2511 m_log.WarnFormat("[PHYSICS]: Got Invalid linear force vector from Scene in Object {0}", Name);
2509 } 2512 }
2510 //m_log.Info("[PHYSICS]: Added Force:" + force.ToString() + " to prim at " + Position.ToString()); 2513 //m_log.Info("[PHYSICS]: Added Force:" + force.ToString() + " to prim at " + Position.ToString());
2511 } 2514 }
@@ -2519,7 +2522,7 @@ Console.WriteLine(" JointCreateFixed");
2519 } 2522 }
2520 else 2523 else
2521 { 2524 {
2522 m_log.Warn("[PHYSICS]: Got Invalid Angular force vector from Scene in Object"); 2525 m_log.WarnFormat("[PHYSICS]: Got Invalid Angular force vector from Scene in Object {0}", Name);
2523 } 2526 }
2524 } 2527 }
2525 2528
@@ -2545,7 +2548,7 @@ Console.WriteLine(" JointCreateFixed");
2545 } 2548 }
2546 else 2549 else
2547 { 2550 {
2548 m_log.Warn("[PHYSICS]: Got NaN RotationalVelocity in Object"); 2551 m_log.WarnFormat("[PHYSICS]: Got NaN RotationalVelocity in Object {0}", Name);
2549 } 2552 }
2550 } 2553 }
2551 } 2554 }
@@ -2560,7 +2563,7 @@ Console.WriteLine(" JointCreateFixed");
2560 } 2563 }
2561 else if (m_crossingfailures == _parent_scene.geomCrossingFailuresBeforeOutofbounds) 2564 else if (m_crossingfailures == _parent_scene.geomCrossingFailuresBeforeOutofbounds)
2562 { 2565 {
2563 m_log.Warn("[PHYSICS]: Too many crossing failures for: " + m_primName); 2566 m_log.Warn("[PHYSICS]: Too many crossing failures for: " + Name);
2564 } 2567 }
2565 } 2568 }
2566 2569
@@ -2593,7 +2596,7 @@ Console.WriteLine(" JointCreateFixed");
2593 } 2596 }
2594 else 2597 else
2595 { 2598 {
2596 m_log.Warn("[PHYSICS]: Got NaN locking axis from Scene on Object"); 2599 m_log.WarnFormat("[PHYSICS]: Got NaN locking axis from Scene on Object {0}", Name);
2597 } 2600 }
2598 } 2601 }
2599 2602
@@ -2685,7 +2688,7 @@ Console.WriteLine(" JointCreateFixed");
2685 } 2688 }
2686 2689
2687 //float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)); 2690 //float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation));
2688//Console.WriteLine("Adiff " + m_primName + " = " + Adiff); 2691//Console.WriteLine("Adiff " + Name + " = " + Adiff);
2689 if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02) 2692 if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02)
2690 && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02) 2693 && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02)
2691 && (Math.Abs(m_lastposition.Z - l_position.Z) < 0.02) 2694 && (Math.Abs(m_lastposition.Z - l_position.Z) < 0.02)
@@ -2826,7 +2829,7 @@ Console.WriteLine(" JointCreateFixed");
2826 m_PIDTarget = value; 2829 m_PIDTarget = value;
2827 } 2830 }
2828 else 2831 else
2829 m_log.Warn("[PHYSICS]: Got NaN PIDTarget from Scene on Object"); 2832 m_log.WarnFormat("[PHYSICS]: Got NaN PIDTarget from Scene on Object {0}", Name);
2830 } 2833 }
2831 } 2834 }
2832 public override bool PIDActive { set { m_usePID = value; } } 2835 public override bool PIDActive { set { m_usePID = value; } }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index caa39ba..e94790f 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -24,7 +24,7 @@
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 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. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System; 28using System;
29using System.Collections; 29using System.Collections;
30using System.Collections.Generic; 30using System.Collections.Generic;
@@ -310,9 +310,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
310 case ScriptBaseClass.LINK_ALL_OTHERS: 310 case ScriptBaseClass.LINK_ALL_OTHERS:
311 if (m_host.ParentGroup == null) 311 if (m_host.ParentGroup == null)
312 return new List<SceneObjectPart>(); 312 return new List<SceneObjectPart>();
313 313
314 ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts); 314 ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts);
315 315
316 if (ret.Contains(m_host)) 316 if (ret.Contains(m_host))
317 ret.Remove(m_host); 317 ret.Remove(m_host);
318 return ret; 318 return ret;
@@ -320,9 +320,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
320 case ScriptBaseClass.LINK_ALL_CHILDREN: 320 case ScriptBaseClass.LINK_ALL_CHILDREN:
321 if (m_host.ParentGroup == null) 321 if (m_host.ParentGroup == null)
322 return new List<SceneObjectPart>(); 322 return new List<SceneObjectPart>();
323 323
324 ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts); 324 ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts);
325 325
326 if (ret.Contains(m_host.ParentGroup.RootPart)) 326 if (ret.Contains(m_host.ParentGroup.RootPart))
327 ret.Remove(m_host.ParentGroup.RootPart); 327 ret.Remove(m_host.ParentGroup.RootPart);
328 return ret; 328 return ret;
@@ -1540,7 +1540,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
1540 1540
1541 if (face == ScriptBaseClass.ALL_SIDES) 1541 if (face == ScriptBaseClass.ALL_SIDES)
1542 face = SceneObjectPart.ALL_SIDES; 1542 face = SceneObjectPart.ALL_SIDES;
1543 1543
1544 m_host.SetFaceColor(new Vector3((float)color.x, (float)color.y, (float)color.z), face); 1544 m_host.SetFaceColor(new Vector3((float)color.x, (float)color.y, (float)color.z), face);
1545 } 1545 }
1546 1546
@@ -2226,7 +2226,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2226 2226
2227//KF: Do NOT use this next line if using ODE physics engine. This need a switch based on .ini Phys Engine type 2227//KF: Do NOT use this next line if using ODE physics engine. This need a switch based on .ini Phys Engine type
2228// part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition; 2228// part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition;
2229 2229
2230 // So, after thinking about this for a bit, the issue with the part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition line 2230 // So, after thinking about this for a bit, the issue with the part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition line
2231 // is it isn't compatible with vehicles because it causes the vehicle body to have to be broken down and rebuilt 2231 // is it isn't compatible with vehicles because it causes the vehicle body to have to be broken down and rebuilt
2232 // It's perfectly okay when the object is not an active physical body though. 2232 // It's perfectly okay when the object is not an active physical body though.
@@ -4338,7 +4338,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4338 case 1: // DATA_ONLINE (0|1) 4338 case 1: // DATA_ONLINE (0|1)
4339 if (pinfo != null && pinfo.RegionID != UUID.Zero) 4339 if (pinfo != null && pinfo.RegionID != UUID.Zero)
4340 reply = "1"; 4340 reply = "1";
4341 else 4341 else
4342 reply = "0"; 4342 reply = "0";
4343 break; 4343 break;
4344 case 2: // DATA_NAME (First Last) 4344 case 2: // DATA_NAME (First Last)
@@ -4534,7 +4534,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4534 return currentAnimationState; 4534 return currentAnimationState;
4535 } 4535 }
4536 } 4536 }
4537 4537
4538 return String.Empty; 4538 return String.Empty;
4539 } 4539 }
4540 4540
@@ -4650,7 +4650,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4650 return; 4650 return;
4651 4651
4652 // Need provisions for Group Owned here 4652 // Need provisions for Group Owned here
4653 if (m_host.OwnerID == targetlandObj.LandData.OwnerID || 4653 if (m_host.OwnerID == targetlandObj.LandData.OwnerID ||
4654 targetlandObj.LandData.IsGroupOwned || m_host.OwnerID == targetID) 4654 targetlandObj.LandData.IsGroupOwned || m_host.OwnerID == targetID)
4655 { 4655 {
4656 pushAllowed = true; 4656 pushAllowed = true;
@@ -4670,8 +4670,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4670 if ((targetlandObj.LandData.Flags & (uint)ParcelFlags.RestrictPushObject) == (uint)ParcelFlags.RestrictPushObject) 4670 if ((targetlandObj.LandData.Flags & (uint)ParcelFlags.RestrictPushObject) == (uint)ParcelFlags.RestrictPushObject)
4671 { 4671 {
4672 // Need provisions for Group Owned here 4672 // Need provisions for Group Owned here
4673 if (m_host.OwnerID == targetlandObj.LandData.OwnerID || 4673 if (m_host.OwnerID == targetlandObj.LandData.OwnerID ||
4674 targetlandObj.LandData.IsGroupOwned || 4674 targetlandObj.LandData.IsGroupOwned ||
4675 m_host.OwnerID == targetID) 4675 m_host.OwnerID == targetID)
4676 { 4676 {
4677 pushAllowed = true; 4677 pushAllowed = true;
@@ -4795,7 +4795,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4795 4795
4796 return sides; 4796 return sides;
4797 } 4797 }
4798 4798
4799 4799
4800 /* The new / changed functions were tested with the following LSL script: 4800 /* The new / changed functions were tested with the following LSL script:
4801 4801
@@ -5809,7 +5809,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
5809 flags |= ScriptBaseClass.AGENT_SITTING; 5809 flags |= ScriptBaseClass.AGENT_SITTING;
5810 } 5810 }
5811 5811
5812 if (agent.Animator.Animations.DefaultAnimation.AnimID 5812 if (agent.Animator.Animations.DefaultAnimation.AnimID
5813 == AnimationSet.Animations.AnimsUUID["SIT_GROUND_CONSTRAINED"]) 5813 == AnimationSet.Animations.AnimsUUID["SIT_GROUND_CONSTRAINED"])
5814 { 5814 {
5815 flags |= ScriptBaseClass.AGENT_SITTING; 5815 flags |= ScriptBaseClass.AGENT_SITTING;
@@ -6190,7 +6190,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6190 m_host.AddScriptLPS(1); 6190 m_host.AddScriptLPS(1);
6191 return World.SimulatorFPS; 6191 return World.SimulatorFPS;
6192 } 6192 }
6193 6193
6194 6194
6195 /* particle system rules should be coming into this routine as doubles, that is 6195 /* particle system rules should be coming into this routine as doubles, that is
6196 rule[0] should be an integer from this list and rule[1] should be the arg 6196 rule[0] should be an integer from this list and rule[1] should be the arg
@@ -6273,7 +6273,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6273 6273
6274 private void SetParticleSystem(SceneObjectPart part, LSL_List rules) { 6274 private void SetParticleSystem(SceneObjectPart part, LSL_List rules) {
6275 6275
6276 6276
6277 if (rules.Length == 0) 6277 if (rules.Length == 0)
6278 { 6278 {
6279 part.RemoveParticleSystem(); 6279 part.RemoveParticleSystem();
@@ -6444,7 +6444,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6444 if (m_host.PhysActor != null) 6444 if (m_host.PhysActor != null)
6445 { 6445 {
6446 float ground = (float)llGround(new LSL_Types.Vector3(0, 0, 0)); 6446 float ground = (float)llGround(new LSL_Types.Vector3(0, 0, 0));
6447 float waterLevel = (float)llWater(new LSL_Types.Vector3(0, 0, 0)); 6447 float waterLevel = (float)llWater(new LSL_Types.Vector3(0, 0, 0));
6448 PIDHoverType hoverType = PIDHoverType.Ground; 6448 PIDHoverType hoverType = PIDHoverType.Ground;
6449 if (water != 0) 6449 if (water != 0)
6450 { 6450 {
@@ -6458,7 +6458,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6458 { 6458 {
6459 height += ground; 6459 height += ground;
6460 } 6460 }
6461 6461
6462 m_host.SetHoverHeight((float)height, hoverType, (float)tau); 6462 m_host.SetHoverHeight((float)height, hoverType, (float)tau);
6463 } 6463 }
6464 } 6464 }
@@ -6841,19 +6841,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6841 if (xmlRpcRouter != null) 6841 if (xmlRpcRouter != null)
6842 { 6842 {
6843 string ExternalHostName = m_ScriptEngine.World.RegionInfo.ExternalHostName; 6843 string ExternalHostName = m_ScriptEngine.World.RegionInfo.ExternalHostName;
6844 6844
6845 xmlRpcRouter.RegisterNewReceiver(m_ScriptEngine.ScriptModule, channelID, m_host.UUID, 6845 xmlRpcRouter.RegisterNewReceiver(m_ScriptEngine.ScriptModule, channelID, m_host.UUID,
6846 m_itemID, String.Format("http://{0}:{1}/", ExternalHostName, 6846 m_itemID, String.Format("http://{0}:{1}/", ExternalHostName,
6847 xmlrpcMod.Port.ToString())); 6847 xmlrpcMod.Port.ToString()));
6848 } 6848 }
6849 object[] resobj = new object[] 6849 object[] resobj = new object[]
6850 { 6850 {
6851 new LSL_Integer(1), 6851 new LSL_Integer(1),
6852 new LSL_String(channelID.ToString()), 6852 new LSL_String(channelID.ToString()),
6853 new LSL_String(UUID.Zero.ToString()), 6853 new LSL_String(UUID.Zero.ToString()),
6854 new LSL_String(String.Empty), 6854 new LSL_String(String.Empty),
6855 new LSL_Integer(0), 6855 new LSL_Integer(0),
6856 new LSL_String(String.Empty) 6856 new LSL_String(String.Empty)
6857 }; 6857 };
6858 m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams("remote_data", resobj, 6858 m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams("remote_data", resobj,
6859 new DetectParams[0])); 6859 new DetectParams[0]));
@@ -7242,6 +7242,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7242 { 7242 {
7243 m_host.AddScriptLPS(1); 7243 m_host.AddScriptLPS(1);
7244 SetPrimParams(m_host, rules); 7244 SetPrimParams(m_host, rules);
7245
7246 ScriptSleep(200);
7245 } 7247 }
7246 7248
7247 public void llSetLinkPrimitiveParamsFast(int linknumber, LSL_List rules) 7249 public void llSetLinkPrimitiveParamsFast(int linknumber, LSL_List rules)
@@ -7469,7 +7471,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7469 radiusoffset = (float)rules.GetLSLFloatItem(idx++); 7471 radiusoffset = (float)rules.GetLSLFloatItem(idx++);
7470 skew = (float)rules.GetLSLFloatItem(idx++); 7472 skew = (float)rules.GetLSLFloatItem(idx++);
7471 part.Shape.PathCurve = (byte)Extrusion.Curve1; 7473 part.Shape.PathCurve = (byte)Extrusion.Curve1;
7472 SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, 7474 SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
7473 revolutions, radiusoffset, skew, 0); 7475 revolutions, radiusoffset, skew, 0);
7474 break; 7476 break;
7475 7477
@@ -7489,7 +7491,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7489 radiusoffset = (float)rules.GetLSLFloatItem(idx++); 7491 radiusoffset = (float)rules.GetLSLFloatItem(idx++);
7490 skew = (float)rules.GetLSLFloatItem(idx++); 7492 skew = (float)rules.GetLSLFloatItem(idx++);
7491 part.Shape.PathCurve = (byte)Extrusion.Curve1; 7493 part.Shape.PathCurve = (byte)Extrusion.Curve1;
7492 SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, 7494 SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
7493 revolutions, radiusoffset, skew, 1); 7495 revolutions, radiusoffset, skew, 1);
7494 break; 7496 break;
7495 7497
@@ -7509,7 +7511,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7509 radiusoffset = (float)rules.GetLSLFloatItem(idx++); 7511 radiusoffset = (float)rules.GetLSLFloatItem(idx++);
7510 skew = (float)rules.GetLSLFloatItem(idx++); 7512 skew = (float)rules.GetLSLFloatItem(idx++);
7511 part.Shape.PathCurve = (byte)Extrusion.Curve1; 7513 part.Shape.PathCurve = (byte)Extrusion.Curve1;
7512 SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, 7514 SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
7513 revolutions, radiusoffset, skew, 3); 7515 revolutions, radiusoffset, skew, 3);
7514 break; 7516 break;
7515 7517
@@ -7555,7 +7557,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7555 SetAlpha(part, alpha, face); 7557 SetAlpha(part, alpha, face);
7556 7558
7557 break; 7559 break;
7558 7560
7559 case (int)ScriptBaseClass.PRIM_FLEXIBLE: 7561 case (int)ScriptBaseClass.PRIM_FLEXIBLE:
7560 if (remain < 7) 7562 if (remain < 7)
7561 return; 7563 return;
@@ -7571,7 +7573,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7571 SetFlexi(part, flexi, softness, gravity, friction, wind, tension, force); 7573 SetFlexi(part, flexi, softness, gravity, friction, wind, tension, force);
7572 7574
7573 break; 7575 break;
7574 7576
7575 case (int)ScriptBaseClass.PRIM_POINT_LIGHT: 7577 case (int)ScriptBaseClass.PRIM_POINT_LIGHT:
7576 if (remain < 5) 7578 if (remain < 5)
7577 return; 7579 return;
@@ -7584,7 +7586,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7584 SetPointLight(part, light, lightcolor, intensity, radius, falloff); 7586 SetPointLight(part, light, lightcolor, intensity, radius, falloff);
7585 7587
7586 break; 7588 break;
7587 7589
7588 case (int)ScriptBaseClass.PRIM_GLOW: 7590 case (int)ScriptBaseClass.PRIM_GLOW:
7589 if (remain < 2) 7591 if (remain < 2)
7590 return; 7592 return;
@@ -7594,7 +7596,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7594 SetGlow(part, face, glow); 7596 SetGlow(part, face, glow);
7595 7597
7596 break; 7598 break;
7597 7599
7598 case (int)ScriptBaseClass.PRIM_BUMP_SHINY: 7600 case (int)ScriptBaseClass.PRIM_BUMP_SHINY:
7599 if (remain < 3) 7601 if (remain < 3)
7600 return; 7602 return;
@@ -7605,7 +7607,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7605 SetShiny(part, face, shiny, bump); 7607 SetShiny(part, face, shiny, bump);
7606 7608
7607 break; 7609 break;
7608 7610
7609 case (int)ScriptBaseClass.PRIM_FULLBRIGHT: 7611 case (int)ScriptBaseClass.PRIM_FULLBRIGHT:
7610 if (remain < 2) 7612 if (remain < 2)
7611 return; 7613 return;
@@ -7613,7 +7615,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7613 bool st = rules.GetLSLIntegerItem(idx++); 7615 bool st = rules.GetLSLIntegerItem(idx++);
7614 SetFullBright(part, face , st); 7616 SetFullBright(part, face , st);
7615 break; 7617 break;
7616 7618
7617 case (int)ScriptBaseClass.PRIM_MATERIAL: 7619 case (int)ScriptBaseClass.PRIM_MATERIAL:
7618 if (remain < 1) 7620 if (remain < 1)
7619 return; 7621 return;
@@ -7623,7 +7625,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7623 7625
7624 part.Material = Convert.ToByte(mat); 7626 part.Material = Convert.ToByte(mat);
7625 break; 7627 break;
7626 7628
7627 case (int)ScriptBaseClass.PRIM_PHANTOM: 7629 case (int)ScriptBaseClass.PRIM_PHANTOM:
7628 if (remain < 1) 7630 if (remain < 1)
7629 return; 7631 return;
@@ -7638,7 +7640,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7638 7640
7639 part.ScriptSetPhantomStatus(phantom); 7641 part.ScriptSetPhantomStatus(phantom);
7640 break; 7642 break;
7641 7643
7642 case (int)ScriptBaseClass.PRIM_PHYSICS: 7644 case (int)ScriptBaseClass.PRIM_PHYSICS:
7643 if (remain < 1) 7645 if (remain < 1)
7644 return; 7646 return;
@@ -7652,7 +7654,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7652 7654
7653 part.ScriptSetPhysicsStatus(physics); 7655 part.ScriptSetPhysicsStatus(physics);
7654 break; 7656 break;
7655 7657
7656 case (int)ScriptBaseClass.PRIM_TEMP_ON_REZ: 7658 case (int)ScriptBaseClass.PRIM_TEMP_ON_REZ:
7657 if (remain < 1) 7659 if (remain < 1)
7658 return; 7660 return;
@@ -7778,7 +7780,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
7778 public LSL_Vector llGetRootPosition() 7780 public LSL_Vector llGetRootPosition()
7779 { 7781 {
7780 m_host.AddScriptLPS(1); 7782 m_host.AddScriptLPS(1);
7781 return new LSL_Vector(m_host.ParentGroup.AbsolutePosition.X, m_host.ParentGroup.AbsolutePosition.Y, 7783 return new LSL_Vector(m_host.ParentGroup.AbsolutePosition.X, m_host.ParentGroup.AbsolutePosition.Y,
7782 m_host.ParentGroup.AbsolutePosition.Z); 7784 m_host.ParentGroup.AbsolutePosition.Z);
7783 } 7785 }
7784 7786
@@ -8109,8 +8111,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8109 res.Add(new LSL_Float((Shape.PathRevolutions * 0.015) + 1.0)); // Slightly inaccurate, because an unsigned 8111 res.Add(new LSL_Float((Shape.PathRevolutions * 0.015) + 1.0)); // Slightly inaccurate, because an unsigned
8110 // byte is being used to represent the entire 8112 // byte is being used to represent the entire
8111 // range of floating-point values from 1.0 8113 // range of floating-point values from 1.0
8112 // through 4.0 (which is how SL does it). 8114 // through 4.0 (which is how SL does it).
8113 8115
8114 // float radiusoffset 8116 // float radiusoffset
8115 res.Add(new LSL_Float(Shape.PathRadiusOffset / 100.0)); 8117 res.Add(new LSL_Float(Shape.PathRadiusOffset / 100.0));
8116 8118
@@ -8391,104 +8393,104 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8391 // Assuming silently fail means give back an empty list. Ideally, need to check this. 8393 // Assuming silently fail means give back an empty list. Ideally, need to check this.
8392 if (face < 0 || face > m_host.GetNumberOfSides() - 1) 8394 if (face < 0 || face > m_host.GetNumberOfSides() - 1)
8393 return new LSL_List(); 8395 return new LSL_List();
8394 8396
8395 return GetPrimMediaParams(face, rules); 8397 return GetPrimMediaParams(face, rules);
8396 } 8398 }
8397 8399
8398 private LSL_List GetPrimMediaParams(int face, LSL_List rules) 8400 private LSL_List GetPrimMediaParams(int face, LSL_List rules)
8399 { 8401 {
8400 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>(); 8402 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
8401 if (null == module) 8403 if (null == module)
8402 throw new Exception("Media on a prim functions not available"); 8404 throw new Exception("Media on a prim functions not available");
8403 8405
8404 MediaEntry me = module.GetMediaEntry(m_host, face); 8406 MediaEntry me = module.GetMediaEntry(m_host, face);
8405 8407
8406 // As per http://wiki.secondlife.com/wiki/LlGetPrimMediaParams 8408 // As per http://wiki.secondlife.com/wiki/LlGetPrimMediaParams
8407 if (null == me) 8409 if (null == me)
8408 return new LSL_List(); 8410 return new LSL_List();
8409 8411
8410 LSL_List res = new LSL_List(); 8412 LSL_List res = new LSL_List();
8411 8413
8412 for (int i = 0; i < rules.Length; i++) 8414 for (int i = 0; i < rules.Length; i++)
8413 { 8415 {
8414 int code = (int)rules.GetLSLIntegerItem(i); 8416 int code = (int)rules.GetLSLIntegerItem(i);
8415 8417
8416 switch (code) 8418 switch (code)
8417 { 8419 {
8418 case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE: 8420 case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE:
8419 // Not implemented 8421 // Not implemented
8420 res.Add(new LSL_Integer(0)); 8422 res.Add(new LSL_Integer(0));
8421 break; 8423 break;
8422 8424
8423 case ScriptBaseClass.PRIM_MEDIA_CONTROLS: 8425 case ScriptBaseClass.PRIM_MEDIA_CONTROLS:
8424 if (me.Controls == MediaControls.Standard) 8426 if (me.Controls == MediaControls.Standard)
8425 res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD)); 8427 res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD));
8426 else 8428 else
8427 res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_MINI)); 8429 res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_MINI));
8428 break; 8430 break;
8429 8431
8430 case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL: 8432 case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL:
8431 res.Add(new LSL_String(me.CurrentURL)); 8433 res.Add(new LSL_String(me.CurrentURL));
8432 break; 8434 break;
8433 8435
8434 case ScriptBaseClass.PRIM_MEDIA_HOME_URL: 8436 case ScriptBaseClass.PRIM_MEDIA_HOME_URL:
8435 res.Add(new LSL_String(me.HomeURL)); 8437 res.Add(new LSL_String(me.HomeURL));
8436 break; 8438 break;
8437 8439
8438 case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP: 8440 case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP:
8439 res.Add(me.AutoLoop ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); 8441 res.Add(me.AutoLoop ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8440 break; 8442 break;
8441 8443
8442 case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY: 8444 case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY:
8443 res.Add(me.AutoPlay ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); 8445 res.Add(me.AutoPlay ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8444 break; 8446 break;
8445 8447
8446 case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE: 8448 case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE:
8447 res.Add(me.AutoScale ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); 8449 res.Add(me.AutoScale ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8448 break; 8450 break;
8449 8451
8450 case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM: 8452 case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM:
8451 res.Add(me.AutoZoom ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); 8453 res.Add(me.AutoZoom ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8452 break; 8454 break;
8453 8455
8454 case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT: 8456 case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT:
8455 res.Add(me.InteractOnFirstClick ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); 8457 res.Add(me.InteractOnFirstClick ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8456 break; 8458 break;
8457 8459
8458 case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS: 8460 case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS:
8459 res.Add(new LSL_Integer(me.Width)); 8461 res.Add(new LSL_Integer(me.Width));
8460 break; 8462 break;
8461 8463
8462 case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS: 8464 case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS:
8463 res.Add(new LSL_Integer(me.Height)); 8465 res.Add(new LSL_Integer(me.Height));
8464 break; 8466 break;
8465 8467
8466 case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE: 8468 case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE:
8467 res.Add(me.EnableWhiteList ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); 8469 res.Add(me.EnableWhiteList ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
8468 break; 8470 break;
8469 8471
8470 case ScriptBaseClass.PRIM_MEDIA_WHITELIST: 8472 case ScriptBaseClass.PRIM_MEDIA_WHITELIST:
8471 string[] urls = (string[])me.WhiteList.Clone(); 8473 string[] urls = (string[])me.WhiteList.Clone();
8472 8474
8473 for (int j = 0; j < urls.Length; j++) 8475 for (int j = 0; j < urls.Length; j++)
8474 urls[j] = Uri.EscapeDataString(urls[j]); 8476 urls[j] = Uri.EscapeDataString(urls[j]);
8475 8477
8476 res.Add(new LSL_String(string.Join(", ", urls))); 8478 res.Add(new LSL_String(string.Join(", ", urls)));
8477 break; 8479 break;
8478 8480
8479 case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT: 8481 case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT:
8480 res.Add(new LSL_Integer((int)me.InteractPermissions)); 8482 res.Add(new LSL_Integer((int)me.InteractPermissions));
8481 break; 8483 break;
8482 8484
8483 case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL: 8485 case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL:
8484 res.Add(new LSL_Integer((int)me.ControlPermissions)); 8486 res.Add(new LSL_Integer((int)me.ControlPermissions));
8485 break; 8487 break;
8486 } 8488 }
8487 } 8489 }
8488 8490
8489 return res; 8491 return res;
8490 } 8492 }
8491 8493
8492 public LSL_Integer llSetPrimMediaParams(int face, LSL_List rules) 8494 public LSL_Integer llSetPrimMediaParams(int face, LSL_List rules)
8493 { 8495 {
8494 m_host.AddScriptLPS(1); 8496 m_host.AddScriptLPS(1);
@@ -8499,32 +8501,32 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8499 // Don't perform the media check directly 8501 // Don't perform the media check directly
8500 if (face < 0 || face > m_host.GetNumberOfSides() - 1) 8502 if (face < 0 || face > m_host.GetNumberOfSides() - 1)
8501 return ScriptBaseClass.LSL_STATUS_OK; 8503 return ScriptBaseClass.LSL_STATUS_OK;
8502 8504
8503 return SetPrimMediaParams(face, rules); 8505 return SetPrimMediaParams(face, rules);
8504 } 8506 }
8505 8507
8506 private LSL_Integer SetPrimMediaParams(int face, LSL_List rules) 8508 private LSL_Integer SetPrimMediaParams(int face, LSL_List rules)
8507 { 8509 {
8508 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>(); 8510 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
8509 if (null == module) 8511 if (null == module)
8510 throw new Exception("Media on a prim functions not available"); 8512 throw new Exception("Media on a prim functions not available");
8511 8513
8512 MediaEntry me = module.GetMediaEntry(m_host, face); 8514 MediaEntry me = module.GetMediaEntry(m_host, face);
8513 if (null == me) 8515 if (null == me)
8514 me = new MediaEntry(); 8516 me = new MediaEntry();
8515 8517
8516 int i = 0; 8518 int i = 0;
8517 8519
8518 while (i < rules.Length - 1) 8520 while (i < rules.Length - 1)
8519 { 8521 {
8520 int code = rules.GetLSLIntegerItem(i++); 8522 int code = rules.GetLSLIntegerItem(i++);
8521 8523
8522 switch (code) 8524 switch (code)
8523 { 8525 {
8524 case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE: 8526 case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE:
8525 me.EnableAlterntiveImage = (rules.GetLSLIntegerItem(i++) != 0 ? true : false); 8527 me.EnableAlterntiveImage = (rules.GetLSLIntegerItem(i++) != 0 ? true : false);
8526 break; 8528 break;
8527 8529
8528 case ScriptBaseClass.PRIM_MEDIA_CONTROLS: 8530 case ScriptBaseClass.PRIM_MEDIA_CONTROLS:
8529 int v = rules.GetLSLIntegerItem(i++); 8531 int v = rules.GetLSLIntegerItem(i++);
8530 if (ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD == v) 8532 if (ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD == v)
@@ -8532,47 +8534,47 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8532 else 8534 else
8533 me.Controls = MediaControls.Mini; 8535 me.Controls = MediaControls.Mini;
8534 break; 8536 break;
8535 8537
8536 case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL: 8538 case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL:
8537 me.CurrentURL = rules.GetLSLStringItem(i++); 8539 me.CurrentURL = rules.GetLSLStringItem(i++);
8538 break; 8540 break;
8539 8541
8540 case ScriptBaseClass.PRIM_MEDIA_HOME_URL: 8542 case ScriptBaseClass.PRIM_MEDIA_HOME_URL:
8541 me.HomeURL = rules.GetLSLStringItem(i++); 8543 me.HomeURL = rules.GetLSLStringItem(i++);
8542 break; 8544 break;
8543 8545
8544 case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP: 8546 case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP:
8545 me.AutoLoop = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); 8547 me.AutoLoop = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8546 break; 8548 break;
8547 8549
8548 case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY: 8550 case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY:
8549 me.AutoPlay = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); 8551 me.AutoPlay = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8550 break; 8552 break;
8551 8553
8552 case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE: 8554 case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE:
8553 me.AutoScale = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); 8555 me.AutoScale = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8554 break; 8556 break;
8555 8557
8556 case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM: 8558 case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM:
8557 me.AutoZoom = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); 8559 me.AutoZoom = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8558 break; 8560 break;
8559 8561
8560 case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT: 8562 case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT:
8561 me.InteractOnFirstClick = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); 8563 me.InteractOnFirstClick = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8562 break; 8564 break;
8563 8565
8564 case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS: 8566 case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS:
8565 me.Width = (int)rules.GetLSLIntegerItem(i++); 8567 me.Width = (int)rules.GetLSLIntegerItem(i++);
8566 break; 8568 break;
8567 8569
8568 case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS: 8570 case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS:
8569 me.Height = (int)rules.GetLSLIntegerItem(i++); 8571 me.Height = (int)rules.GetLSLIntegerItem(i++);
8570 break; 8572 break;
8571 8573
8572 case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE: 8574 case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE:
8573 me.EnableWhiteList = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); 8575 me.EnableWhiteList = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
8574 break; 8576 break;
8575 8577
8576 case ScriptBaseClass.PRIM_MEDIA_WHITELIST: 8578 case ScriptBaseClass.PRIM_MEDIA_WHITELIST:
8577 string[] rawWhiteListUrls = rules.GetLSLStringItem(i++).ToString().Split(new char[] { ',' }); 8579 string[] rawWhiteListUrls = rules.GetLSLStringItem(i++).ToString().Split(new char[] { ',' });
8578 List<string> whiteListUrls = new List<string>(); 8580 List<string> whiteListUrls = new List<string>();
@@ -8580,22 +8582,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8580 rawWhiteListUrls, delegate(string rawUrl) { whiteListUrls.Add(rawUrl.Trim()); }); 8582 rawWhiteListUrls, delegate(string rawUrl) { whiteListUrls.Add(rawUrl.Trim()); });
8581 me.WhiteList = whiteListUrls.ToArray(); 8583 me.WhiteList = whiteListUrls.ToArray();
8582 break; 8584 break;
8583 8585
8584 case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT: 8586 case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT:
8585 me.InteractPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++); 8587 me.InteractPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
8586 break; 8588 break;
8587 8589
8588 case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL: 8590 case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL:
8589 me.ControlPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++); 8591 me.ControlPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
8590 break; 8592 break;
8591 } 8593 }
8592 } 8594 }
8593 8595
8594 module.SetMediaEntry(m_host, face, me); 8596 module.SetMediaEntry(m_host, face, me);
8595 8597
8596 return ScriptBaseClass.LSL_STATUS_OK; 8598 return ScriptBaseClass.LSL_STATUS_OK;
8597 } 8599 }
8598 8600
8599 public LSL_Integer llClearPrimMedia(LSL_Integer face) 8601 public LSL_Integer llClearPrimMedia(LSL_Integer face)
8600 { 8602 {
8601 m_host.AddScriptLPS(1); 8603 m_host.AddScriptLPS(1);
@@ -8606,16 +8608,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8606 // FIXME: Don't perform the media check directly 8608 // FIXME: Don't perform the media check directly
8607 if (face < 0 || face > m_host.GetNumberOfSides() - 1) 8609 if (face < 0 || face > m_host.GetNumberOfSides() - 1)
8608 return ScriptBaseClass.LSL_STATUS_OK; 8610 return ScriptBaseClass.LSL_STATUS_OK;
8609 8611
8610 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>(); 8612 IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
8611 if (null == module) 8613 if (null == module)
8612 throw new Exception("Media on a prim functions not available"); 8614 throw new Exception("Media on a prim functions not available");
8613 8615
8614 module.ClearMediaEntry(m_host, face); 8616 module.ClearMediaEntry(m_host, face);
8615 8617
8616 return ScriptBaseClass.LSL_STATUS_OK; 8618 return ScriptBaseClass.LSL_STATUS_OK;
8617 } 8619 }
8618 8620
8619 // <remarks> 8621 // <remarks>
8620 // <para> 8622 // <para>
8621 // The .NET definition of base 64 is: 8623 // The .NET definition of base 64 is:
@@ -8875,7 +8877,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8875 public LSL_String llGetHTTPHeader(LSL_Key request_id, string header) 8877 public LSL_String llGetHTTPHeader(LSL_Key request_id, string header)
8876 { 8878 {
8877 m_host.AddScriptLPS(1); 8879 m_host.AddScriptLPS(1);
8878 8880
8879 if (m_UrlModule != null) 8881 if (m_UrlModule != null)
8880 return m_UrlModule.GetHttpHeader(new UUID(request_id), header); 8882 return m_UrlModule.GetHttpHeader(new UUID(request_id), header);
8881 return String.Empty; 8883 return String.Empty;