aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs21
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs14
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs101
5 files changed, 115 insertions, 27 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 117cbd5..cf17686 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -1981,7 +1981,26 @@ namespace OpenSim.Region.Environment.Scenes
1981 return land.landData.ownerID; 1981 return land.landData.ownerID;
1982 } 1982 }
1983 } 1983 }
1984 1984
1985 public LandData GetLandData(float x, float y)
1986 {
1987 return LandManager.getLandObject(x, y).landData;
1988 }
1989
1990 public void SetLandMusicURL(float x, float y, string url)
1991 {
1992 Land land = LandManager.getLandObject(x, y);
1993 if (land == null)
1994 {
1995 return;
1996 }
1997 else
1998 {
1999 land.landData.musicURL = url;
2000 return;
2001 }
2002 }
2003
1985 #endregion 2004 #endregion
1986 2005
1987 #region Script Engine 2006 #region Script Engine
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 66fc53c..cbb50d7 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -543,7 +543,7 @@ namespace OpenSim.Region.Environment.Scenes
543 bool isPhantom = ((ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) != 0); 543 bool isPhantom = ((ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) != 0);
544 544
545 bool usePhysics = isPhysical && !isPhantom; 545 bool usePhysics = isPhysical && !isPhantom;
546 546
547 if (usePhysics) 547 if (usePhysics)
548 { 548 {
549 PhysActor = m_parentGroup.m_scene.PhysicsScene.AddPrimShape( 549 PhysActor = m_parentGroup.m_scene.PhysicsScene.AddPrimShape(
@@ -1239,6 +1239,18 @@ namespace OpenSim.Region.Environment.Scenes
1239 } 1239 }
1240 } 1240 }
1241 1241
1242 public LLVector3 GetGeometricCenter()
1243 {
1244 if (PhysActor != null)
1245 {
1246 return new LLVector3(PhysActor.CenterOfMass.X,PhysActor.CenterOfMass.Y,PhysActor.CenterOfMass.Z);
1247 }
1248 else
1249 {
1250 return new LLVector3(0, 0, 0);
1251 }
1252 }
1253
1242 #endregion 1254 #endregion
1243 1255
1244 #region Texture 1256 #region Texture
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
index 34bac59..6ba7018 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs
@@ -569,7 +569,7 @@ namespace OpenSim.Region.ScriptEngine.Common
569 void llForceMouselook(int mouselook); 569 void llForceMouselook(int mouselook);
570 //wiki: double llGetObjectMass(key id) 570 //wiki: double llGetObjectMass(key id)
571 double llGetObjectMass(string id); 571 double llGetObjectMass(string id);
572 void llListReplaceList(); 572 LSL_Types.list llListReplaceList(LSL_Types.list dest, LSL_Types.list src, int start, int end);
573 //wiki: llLoadURL(key avatar_id, string message, string url) 573 //wiki: llLoadURL(key avatar_id, string message, string url)
574 void llLoadURL(string avatar_id, string message, string url); 574 void llLoadURL(string avatar_id, string message, string url);
575 //wiki: llParcelMediaCommandList( list commandList ) 575 //wiki: llParcelMediaCommandList( list commandList )
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
index 1657b74..a9297fd 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs
@@ -1636,9 +1636,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL
1636 return m_LSL_Functions.llGetObjectMass(id); 1636 return m_LSL_Functions.llGetObjectMass(id);
1637 } 1637 }
1638 1638
1639 public void llListReplaceList() 1639 public LSL_Types.list llListReplaceList(LSL_Types.list dest, LSL_Types.list src, int start, int end)
1640 { 1640 {
1641 m_LSL_Functions.llListReplaceList(); 1641 return m_LSL_Functions.llListReplaceList(dest,src,start,end);
1642 } 1642 }
1643 1643
1644 public void llLoadURL(string avatar_id, string message, string url) 1644 public void llLoadURL(string avatar_id, string message, string url)
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
index 909b4e3..eeecd21 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
@@ -34,6 +34,7 @@ using System.Text;
34using System.Threading; 34using System.Threading;
35using Axiom.Math; 35using Axiom.Math;
36using libsecondlife; 36using libsecondlife;
37using libsecondlife.StructuredData;
37using OpenSim.Framework; 38using OpenSim.Framework;
38using OpenSim.Region.Environment.Interfaces; 39using OpenSim.Region.Environment.Interfaces;
39using OpenSim.Region.Environment.Scenes; 40using OpenSim.Region.Environment.Scenes;
@@ -750,8 +751,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
750 751
751 public LSL_Types.Quaternion llGetLocalRot() 752 public LSL_Types.Quaternion llGetLocalRot()
752 { 753 {
753 NotImplemented("llGetLocalRot"); 754 return new LSL_Types.Quaternion(m_host.RotationOffset.X, m_host.RotationOffset.Y, m_host.RotationOffset.Z, m_host.RotationOffset.W);
754 return new LSL_Types.Quaternion();
755 } 755 }
756 756
757 public void llSetForce(LSL_Types.Vector3 force, int local) 757 public void llSetForce(LSL_Types.Vector3 force, int local)
@@ -830,8 +830,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
830 830
831 public LSL_Types.Vector3 llGetAccel() 831 public LSL_Types.Vector3 llGetAccel()
832 { 832 {
833 NotImplemented("llGetAccel"); 833 return new LSL_Types.Vector3(m_host.Acceleration.X, m_host.Acceleration.Y, m_host.Acceleration.Z);
834 return new LSL_Types.Vector3();
835 } 834 }
836 835
837 public LSL_Types.Vector3 llGetOmega() 836 public LSL_Types.Vector3 llGetOmega()
@@ -1346,8 +1345,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
1346 1345
1347 public double llWater(LSL_Types.Vector3 offset) 1346 public double llWater(LSL_Types.Vector3 offset)
1348 { 1347 {
1349 NotImplemented("llWater"); 1348 return World.RegionInfo.EstateSettings.waterHeight;
1350 return 0;
1351 } 1349 }
1352 1350
1353 public void llPassTouches(int pass) 1351 public void llPassTouches(int pass)
@@ -2360,19 +2358,26 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
2360 2358
2361 public void llSetParcelMusicURL(string url) 2359 public void llSetParcelMusicURL(string url)
2362 { 2360 {
2363 NotImplemented("llSetParcelMusicURL"); 2361 LLUUID landowner = World.GetLandOwner(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y);
2362 if (landowner == null)
2363 {
2364 return;
2365 }
2366 if (landowner != m_host.ObjectOwner)
2367 {
2368 return;
2369 }
2370 World.SetLandMusicURL(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y, url);
2364 } 2371 }
2365 2372
2366 public LSL_Types.Vector3 llGetRootPosition() 2373 public LSL_Types.Vector3 llGetRootPosition()
2367 { 2374 {
2368 NotImplemented("llGetRootPosition"); 2375 return new LSL_Types.Vector3(m_host.ParentGroup.AbsolutePosition.X, m_host.ParentGroup.AbsolutePosition.Y, m_host.ParentGroup.AbsolutePosition.Z);
2369 return new LSL_Types.Vector3();
2370 } 2376 }
2371 2377
2372 public LSL_Types.Quaternion llGetRootRotation() 2378 public LSL_Types.Quaternion llGetRootRotation()
2373 { 2379 {
2374 NotImplemented("llGetRootRotation"); 2380 return new LSL_Types.Quaternion(m_host.ParentGroup.GroupRotation.X, m_host.ParentGroup.GroupRotation.Y, m_host.ParentGroup.GroupRotation.Z, m_host.ParentGroup.GroupRotation.W);
2375 return new LSL_Types.Quaternion();
2376 } 2381 }
2377 2382
2378 public string llGetObjectDesc() 2383 public string llGetObjectDesc()
@@ -2495,8 +2500,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
2495 2500
2496 public LSL_Types.Vector3 llGetGeometricCenter() 2501 public LSL_Types.Vector3 llGetGeometricCenter()
2497 { 2502 {
2498 NotImplemented("llGetGeometricCenter"); 2503 return new LSL_Types.Vector3(m_host.GetGeometricCenter().X, m_host.GetGeometricCenter().Y, m_host.GetGeometricCenter().Z);
2499 return new LSL_Types.Vector3();
2500 } 2504 }
2501 2505
2502 public void llGetPrimitiveParams() 2506 public void llGetPrimitiveParams()
@@ -2528,7 +2532,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
2528 2532
2529 public void llSetLocalRot(LSL_Types.Quaternion rot) 2533 public void llSetLocalRot(LSL_Types.Quaternion rot)
2530 { 2534 {
2531 NotImplemented("llSetLocalRot"); 2535 m_host.RotationOffset = new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s);
2532 } 2536 }
2533 2537
2534 public LSL_Types.list llParseStringKeepNulls(string src, LSL_Types.list seperators, LSL_Types.list spacers) 2538 public LSL_Types.list llParseStringKeepNulls(string src, LSL_Types.list seperators, LSL_Types.list spacers)
@@ -2594,9 +2598,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
2594 return 0; 2598 return 0;
2595 } 2599 }
2596 2600
2597 public void llListReplaceList() 2601 public LSL_Types.list llListReplaceList(LSL_Types.list dest, LSL_Types.list src, int start, int end)
2598 { 2602 {
2599 NotImplemented("llListReplaceList"); 2603 return dest.GetSublist(0, start - 1) + src + dest.GetSublist(end + 1, -1);
2600 } 2604 }
2601 2605
2602 public void llLoadURL(string avatar_id, string message, string url) 2606 public void llLoadURL(string avatar_id, string message, string url)
@@ -2792,20 +2796,73 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
2792 2796
2793 public int llGetObjectPrimCount(string object_id) 2797 public int llGetObjectPrimCount(string object_id)
2794 { 2798 {
2795 NotImplemented("llGetObjectPrimCount"); 2799 SceneObjectPart part = World.GetSceneObjectPart(new LLUUID(object_id));
2796 return 0; 2800 if (part == null)
2801 {
2802 return 0;
2803 }
2804 else
2805 {
2806 return part.ParentGroup.Children.Count;
2807 }
2797 } 2808 }
2798 2809
2799 public int llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide) 2810 public int llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide)
2800 { 2811 {
2801 NotImplemented("llGetParcelMaxPrims"); 2812 // Alondria: This currently just is utilizing the normal grid's 0.22 prims/m2 calculation
2802 return 0; 2813 // Which probably will be irrelevent in OpenSim....
2814 LandData land = World.GetLandData((float)pos.x, (float)pos.y);
2815 float bonusfactor = World.RegionInfo.EstateSettings.objectBonusFactor;
2816 if (land == null)
2817 {
2818 return 0;
2819 }
2820 if (sim_wide == 1)
2821 {
2822 decimal v = land.simwideArea * (decimal)(0.22) * (decimal)bonusfactor;
2823 return (int)v;
2824 }
2825 else
2826 {
2827 decimal v = land.area * (decimal)(0.22) * (decimal)bonusfactor;
2828 return (int)v;
2829 }
2830
2803 } 2831 }
2804 2832
2805 public LSL_Types.list llGetParcelDetails(LSL_Types.Vector3 pos, LSL_Types.list param) 2833 public LSL_Types.list llGetParcelDetails(LSL_Types.Vector3 pos, LSL_Types.list param)
2806 { 2834 {
2807 NotImplemented("llGetParcelDetails"); 2835 LandData land = World.GetLandData((float)pos.x, (float)pos.y);
2808 return new LSL_Types.list(); 2836 if (land == null)
2837 {
2838 return new LSL_Types.list(0);
2839 }
2840 LSL_Types.list ret = new LSL_Types.list();
2841 foreach(object o in param.Data)
2842 {
2843 switch(o.ToString())
2844 {
2845 case "0":
2846 ret = ret + new LSL_Types.list(land.landName);
2847 break;
2848 case "1":
2849 ret = ret + new LSL_Types.list(land.landDesc);
2850 break;
2851 case "2":
2852 ret = ret + new LSL_Types.list(land.ownerID.ToString());
2853 break;
2854 case "3":
2855 ret = ret + new LSL_Types.list(land.groupID.ToString());
2856 break;
2857 case "4":
2858 ret = ret + new LSL_Types.list(land.area);
2859 break;
2860 default:
2861 ret = ret + new LSL_Types.list(0);
2862 break;
2863 }
2864 }
2865 return ret;
2809 } 2866 }
2810 2867
2811 // 2868 //