Merge branch 'master' of ssh://opensimulator.org/var/git/opensim

viewer-2-initial-appearance
Justin Clark-Casey (justincc) 2010-09-25 00:00:00 +01:00
commit b366ad5012
20 changed files with 202 additions and 131 deletions

View File

@ -30,7 +30,12 @@ using System.Data;
using System.Reflection; using System.Reflection;
using System.Collections.Generic; using System.Collections.Generic;
using log4net; using log4net;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;

View File

@ -33,7 +33,12 @@ using System.Reflection;
using log4net; using log4net;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using Mono.Data.Sqlite; using log4net;
#if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
namespace OpenSim.Data.SQLite namespace OpenSim.Data.SQLite
{ {

View File

@ -33,7 +33,11 @@ using System.Threading;
using log4net; using log4net;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
namespace OpenSim.Data.SQLite namespace OpenSim.Data.SQLite
{ {

View File

@ -30,7 +30,11 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
@ -105,10 +109,17 @@ namespace OpenSim.Data.SQLite
{ {
EstateSettings es = new EstateSettings(); EstateSettings es = new EstateSettings();
es.OnSave += StoreEstateSettings; es.OnSave += StoreEstateSettings;
IDataReader r = null;
try
{
r = cmd.ExecuteReader();
}
catch (SqliteException)
{
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.");
}
IDataReader r = cmd.ExecuteReader(); if (r != null && r.Read())
if (r.Read())
{ {
foreach (string name in FieldList) foreach (string name in FieldList)
{ {

View File

@ -31,7 +31,11 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
namespace OpenSim.Data.SQLite namespace OpenSim.Data.SQLite
{ {

View File

@ -31,7 +31,11 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
namespace OpenSim.Data.SQLite namespace OpenSim.Data.SQLite
{ {

View File

@ -30,7 +30,11 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;

View File

@ -30,7 +30,11 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;

View File

@ -32,7 +32,11 @@ using System.Drawing;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.StructuredData; using OpenMetaverse.StructuredData;
using OpenSim.Framework; using OpenSim.Framework;

View File

@ -31,7 +31,11 @@ using System.Collections.Generic;
using System.Data; using System.Data;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
namespace OpenSim.Data.SQLite namespace OpenSim.Data.SQLite
{ {

View File

@ -27,7 +27,11 @@
using System; using System;
using System.Data; using System.Data;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
namespace OpenSim.Data.SQLite namespace OpenSim.Data.SQLite
{ {

View File

@ -29,7 +29,11 @@ using System;
using System.Data; using System.Data;
using System.Reflection; using System.Reflection;
using System.Collections.Generic; using System.Collections.Generic;
using Mono.Data.Sqlite; #if CSharpSqlite
using Community.CsharpSqlite.Sqlite;
#else
using Mono.Data.Sqlite;
#endif
using log4net; using log4net;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;

View File

@ -238,7 +238,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditNotecard += CanEditNotecard; //NOT YET IMPLEMENTED
m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED m_scene.Permissions.OnEditScript += CanEditScript; //NOT YET IMPLEMENTED
m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory; //NOT IMPLEMENTED HERE m_scene.Permissions.OnCreateObjectInventory += CanCreateObjectInventory;
m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED m_scene.Permissions.OnEditObjectInventory += CanEditObjectInventory;//MAYBE FULLY IMPLEMENTED
m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnCopyObjectInventory += CanCopyObjectInventory; //NOT YET IMPLEMENTED
m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED m_scene.Permissions.OnDeleteObjectInventory += CanDeleteObjectInventory; //NOT YET IMPLEMENTED
@ -1780,10 +1780,28 @@ namespace OpenSim.Region.CoreModules.World.Permissions
DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name);
if (m_bypassPermissions) return m_bypassPermissionsValue; if (m_bypassPermissions) return m_bypassPermissionsValue;
if ((int)InventoryType.LSL == invType) SceneObjectPart part = m_scene.GetSceneObjectPart(objectID);
if (m_allowedScriptCreators == UserSet.Administrators && !IsAdministrator(userID)) ScenePresence p = m_scene.GetScenePresence(userID);
return false;
if (part == null || p == null)
return false;
if (!IsAdministrator(userID))
{
if (part.OwnerID != userID)
{
// Group permissions
if ((part.GroupID == UUID.Zero) || (p.ControllingClient.GetGroupPowers(part.GroupID) == 0) || ((part.GroupMask & (uint)PermissionMask.Modify) == 0))
return false;
} else {
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
return false;
}
if ((int)InventoryType.LSL == invType)
if (m_allowedScriptCreators == UserSet.Administrators)
return false;
}
return true; return true;
} }
@ -1980,4 +1998,4 @@ namespace OpenSim.Region.CoreModules.World.Permissions
return false; return false;
} }
} }
} }

View File

@ -1533,16 +1533,6 @@ namespace OpenSim.Region.Framework.Scenes
if (part == null) if (part == null)
return; return;
if (part.OwnerID != remoteClient.AgentId)
{
// Group permissions
if ((part.GroupID == UUID.Zero) || (remoteClient.GetGroupPowers(part.GroupID) == 0) || ((part.GroupMask & (uint)PermissionMask.Modify) == 0))
return;
} else {
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
return;
}
if (!Permissions.CanCreateObjectInventory( if (!Permissions.CanCreateObjectInventory(
itemBase.InvType, part.UUID, remoteClient.AgentId)) itemBase.InvType, part.UUID, remoteClient.AgentId))
return; return;

View File

@ -24,7 +24,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -252,9 +252,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case ScriptBaseClass.LINK_ALL_OTHERS: case ScriptBaseClass.LINK_ALL_OTHERS:
if (m_host.ParentGroup == null) if (m_host.ParentGroup == null)
return new List<SceneObjectPart>(); return new List<SceneObjectPart>();
ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts); ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts);
if (ret.Contains(m_host)) if (ret.Contains(m_host))
ret.Remove(m_host); ret.Remove(m_host);
return ret; return ret;
@ -262,9 +262,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case ScriptBaseClass.LINK_ALL_CHILDREN: case ScriptBaseClass.LINK_ALL_CHILDREN:
if (m_host.ParentGroup == null) if (m_host.ParentGroup == null)
return new List<SceneObjectPart>(); return new List<SceneObjectPart>();
ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts); ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts);
if (ret.Contains(m_host.ParentGroup.RootPart)) if (ret.Contains(m_host.ParentGroup.RootPart))
ret.Remove(m_host.ParentGroup.RootPart); ret.Remove(m_host.ParentGroup.RootPart);
return ret; return ret;
@ -1404,7 +1404,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (face == ScriptBaseClass.ALL_SIDES) if (face == ScriptBaseClass.ALL_SIDES)
face = SceneObjectPart.ALL_SIDES; face = SceneObjectPart.ALL_SIDES;
m_host.SetFaceColor(new Vector3((float)color.x, (float)color.y, (float)color.z), face); m_host.SetFaceColor(new Vector3((float)color.x, (float)color.y, (float)color.z), face);
} }
@ -2039,7 +2039,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
//KF: Do NOT use this next line if using ODE physics engine. This need a switch based on .ini Phys Engine type //KF: Do NOT use this next line if using ODE physics engine. This need a switch based on .ini Phys Engine type
// part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition; // part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition;
// So, after thinking about this for a bit, the issue with the part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition line // So, after thinking about this for a bit, the issue with the part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition line
// is it isn't compatible with vehicles because it causes the vehicle body to have to be broken down and rebuilt // is it isn't compatible with vehicles because it causes the vehicle body to have to be broken down and rebuilt
// It's perfectly okay when the object is not an active physical body though. // It's perfectly okay when the object is not an active physical body though.
@ -4009,7 +4009,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case 1: // DATA_ONLINE (0|1) case 1: // DATA_ONLINE (0|1)
if (pinfo != null && pinfo.RegionID != UUID.Zero) if (pinfo != null && pinfo.RegionID != UUID.Zero)
reply = "1"; reply = "1";
else else
reply = "0"; reply = "0";
break; break;
case 2: // DATA_NAME (First Last) case 2: // DATA_NAME (First Last)
@ -4202,7 +4202,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return currentAnimationState; return currentAnimationState;
} }
} }
return String.Empty; return String.Empty;
} }
@ -4317,7 +4317,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return; return;
// Need provisions for Group Owned here // Need provisions for Group Owned here
if (m_host.OwnerID == targetlandObj.LandData.OwnerID || if (m_host.OwnerID == targetlandObj.LandData.OwnerID ||
targetlandObj.LandData.IsGroupOwned || m_host.OwnerID == targetID) targetlandObj.LandData.IsGroupOwned || m_host.OwnerID == targetID)
{ {
pushAllowed = true; pushAllowed = true;
@ -4337,8 +4337,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if ((targetlandObj.LandData.Flags & (uint)ParcelFlags.RestrictPushObject) == (uint)ParcelFlags.RestrictPushObject) if ((targetlandObj.LandData.Flags & (uint)ParcelFlags.RestrictPushObject) == (uint)ParcelFlags.RestrictPushObject)
{ {
// Need provisions for Group Owned here // Need provisions for Group Owned here
if (m_host.OwnerID == targetlandObj.LandData.OwnerID || if (m_host.OwnerID == targetlandObj.LandData.OwnerID ||
targetlandObj.LandData.IsGroupOwned || targetlandObj.LandData.IsGroupOwned ||
m_host.OwnerID == targetID) m_host.OwnerID == targetID)
{ {
pushAllowed = true; pushAllowed = true;
@ -4463,7 +4463,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return sides; return sides;
} }
/* The new / changed functions were tested with the following LSL script: /* The new / changed functions were tested with the following LSL script:
@ -5470,7 +5470,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
flags |= ScriptBaseClass.AGENT_SITTING; flags |= ScriptBaseClass.AGENT_SITTING;
} }
if (agent.Animator.Animations.DefaultAnimation.AnimID if (agent.Animator.Animations.DefaultAnimation.AnimID
== AnimationSet.Animations.AnimsUUID["SIT_GROUND_CONSTRAINED"]) == AnimationSet.Animations.AnimsUUID["SIT_GROUND_CONSTRAINED"])
{ {
flags |= ScriptBaseClass.AGENT_SITTING; flags |= ScriptBaseClass.AGENT_SITTING;
@ -5837,7 +5837,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
return World.SimulatorFPS; return World.SimulatorFPS;
} }
/* particle system rules should be coming into this routine as doubles, that is /* particle system rules should be coming into this routine as doubles, that is
rule[0] should be an integer from this list and rule[1] should be the arg rule[0] should be an integer from this list and rule[1] should be the arg
@ -5920,7 +5920,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
private void SetParticleSystem(SceneObjectPart part, LSL_List rules) { private void SetParticleSystem(SceneObjectPart part, LSL_List rules) {
if (rules.Length == 0) if (rules.Length == 0)
{ {
part.RemoveParticleSystem(); part.RemoveParticleSystem();
@ -6091,7 +6091,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (m_host.PhysActor != null) if (m_host.PhysActor != null)
{ {
float ground = (float)llGround(new LSL_Types.Vector3(0, 0, 0)); float ground = (float)llGround(new LSL_Types.Vector3(0, 0, 0));
float waterLevel = (float)llWater(new LSL_Types.Vector3(0, 0, 0)); float waterLevel = (float)llWater(new LSL_Types.Vector3(0, 0, 0));
PIDHoverType hoverType = PIDHoverType.Ground; PIDHoverType hoverType = PIDHoverType.Ground;
if (water != 0) if (water != 0)
{ {
@ -6105,7 +6105,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{ {
height += ground; height += ground;
} }
m_host.SetHoverHeight((float)height, hoverType, (float)tau); m_host.SetHoverHeight((float)height, hoverType, (float)tau);
} }
} }
@ -6487,19 +6487,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (xmlRpcRouter != null) if (xmlRpcRouter != null)
{ {
string ExternalHostName = m_ScriptEngine.World.RegionInfo.ExternalHostName; string ExternalHostName = m_ScriptEngine.World.RegionInfo.ExternalHostName;
xmlRpcRouter.RegisterNewReceiver(m_ScriptEngine.ScriptModule, channelID, m_host.UUID, xmlRpcRouter.RegisterNewReceiver(m_ScriptEngine.ScriptModule, channelID, m_host.UUID,
m_itemID, String.Format("http://{0}:{1}/", ExternalHostName, m_itemID, String.Format("http://{0}:{1}/", ExternalHostName,
xmlrpcMod.Port.ToString())); xmlrpcMod.Port.ToString()));
} }
object[] resobj = new object[] object[] resobj = new object[]
{ {
new LSL_Integer(1), new LSL_Integer(1),
new LSL_String(channelID.ToString()), new LSL_String(channelID.ToString()),
new LSL_String(UUID.Zero.ToString()), new LSL_String(UUID.Zero.ToString()),
new LSL_String(String.Empty), new LSL_String(String.Empty),
new LSL_Integer(0), new LSL_Integer(0),
new LSL_String(String.Empty) new LSL_String(String.Empty)
}; };
m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams("remote_data", resobj, m_ScriptEngine.PostScriptEvent(m_itemID, new EventParams("remote_data", resobj,
new DetectParams[0])); new DetectParams[0]));
@ -6874,6 +6874,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
SetPrimParams(m_host, rules); SetPrimParams(m_host, rules);
ScriptSleep(200);
} }
public void llSetLinkPrimitiveParams(int linknumber, LSL_List rules) public void llSetLinkPrimitiveParams(int linknumber, LSL_List rules)
@ -6884,6 +6886,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
foreach (SceneObjectPart part in parts) foreach (SceneObjectPart part in parts)
SetPrimParams(part, rules); SetPrimParams(part, rules);
ScriptSleep(200);
} }
public void llSetLinkPrimitiveParamsFast(int linknumber, LSL_List rules) public void llSetLinkPrimitiveParamsFast(int linknumber, LSL_List rules)
@ -7041,7 +7045,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
radiusoffset = (float)rules.GetLSLFloatItem(idx++); radiusoffset = (float)rules.GetLSLFloatItem(idx++);
skew = (float)rules.GetLSLFloatItem(idx++); skew = (float)rules.GetLSLFloatItem(idx++);
part.Shape.PathCurve = (byte)Extrusion.Curve1; part.Shape.PathCurve = (byte)Extrusion.Curve1;
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
revolutions, radiusoffset, skew, 0); revolutions, radiusoffset, skew, 0);
break; break;
@ -7061,7 +7065,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
radiusoffset = (float)rules.GetLSLFloatItem(idx++); radiusoffset = (float)rules.GetLSLFloatItem(idx++);
skew = (float)rules.GetLSLFloatItem(idx++); skew = (float)rules.GetLSLFloatItem(idx++);
part.Shape.PathCurve = (byte)Extrusion.Curve1; part.Shape.PathCurve = (byte)Extrusion.Curve1;
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
revolutions, radiusoffset, skew, 1); revolutions, radiusoffset, skew, 1);
break; break;
@ -7081,7 +7085,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
radiusoffset = (float)rules.GetLSLFloatItem(idx++); radiusoffset = (float)rules.GetLSLFloatItem(idx++);
skew = (float)rules.GetLSLFloatItem(idx++); skew = (float)rules.GetLSLFloatItem(idx++);
part.Shape.PathCurve = (byte)Extrusion.Curve1; part.Shape.PathCurve = (byte)Extrusion.Curve1;
SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b, SetPrimitiveShapeParams(part, face, v, hollow, twist, holesize, topshear, profilecut, taper_b,
revolutions, radiusoffset, skew, 3); revolutions, radiusoffset, skew, 3);
break; break;
@ -7127,7 +7131,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
SetAlpha(part, alpha, face); SetAlpha(part, alpha, face);
break; break;
case (int)ScriptBaseClass.PRIM_FLEXIBLE: case (int)ScriptBaseClass.PRIM_FLEXIBLE:
if (remain < 7) if (remain < 7)
return; return;
@ -7143,7 +7147,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
SetFlexi(part, flexi, softness, gravity, friction, wind, tension, force); SetFlexi(part, flexi, softness, gravity, friction, wind, tension, force);
break; break;
case (int)ScriptBaseClass.PRIM_POINT_LIGHT: case (int)ScriptBaseClass.PRIM_POINT_LIGHT:
if (remain < 5) if (remain < 5)
return; return;
@ -7156,7 +7160,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
SetPointLight(part, light, lightcolor, intensity, radius, falloff); SetPointLight(part, light, lightcolor, intensity, radius, falloff);
break; break;
case (int)ScriptBaseClass.PRIM_GLOW: case (int)ScriptBaseClass.PRIM_GLOW:
if (remain < 2) if (remain < 2)
return; return;
@ -7166,7 +7170,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
SetGlow(part, face, glow); SetGlow(part, face, glow);
break; break;
case (int)ScriptBaseClass.PRIM_BUMP_SHINY: case (int)ScriptBaseClass.PRIM_BUMP_SHINY:
if (remain < 3) if (remain < 3)
return; return;
@ -7177,7 +7181,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
SetShiny(part, face, shiny, bump); SetShiny(part, face, shiny, bump);
break; break;
case (int)ScriptBaseClass.PRIM_FULLBRIGHT: case (int)ScriptBaseClass.PRIM_FULLBRIGHT:
if (remain < 2) if (remain < 2)
return; return;
@ -7185,7 +7189,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
bool st = rules.GetLSLIntegerItem(idx++); bool st = rules.GetLSLIntegerItem(idx++);
SetFullBright(part, face , st); SetFullBright(part, face , st);
break; break;
case (int)ScriptBaseClass.PRIM_MATERIAL: case (int)ScriptBaseClass.PRIM_MATERIAL:
if (remain < 1) if (remain < 1)
return; return;
@ -7195,7 +7199,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
part.Material = Convert.ToByte(mat); part.Material = Convert.ToByte(mat);
break; break;
case (int)ScriptBaseClass.PRIM_PHANTOM: case (int)ScriptBaseClass.PRIM_PHANTOM:
if (remain < 1) if (remain < 1)
return; return;
@ -7210,7 +7214,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
part.ScriptSetPhantomStatus(phantom); part.ScriptSetPhantomStatus(phantom);
break; break;
case (int)ScriptBaseClass.PRIM_PHYSICS: case (int)ScriptBaseClass.PRIM_PHYSICS:
if (remain < 1) if (remain < 1)
return; return;
@ -7224,7 +7228,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
part.ScriptSetPhysicsStatus(physics); part.ScriptSetPhysicsStatus(physics);
break; break;
case (int)ScriptBaseClass.PRIM_TEMP_ON_REZ: case (int)ScriptBaseClass.PRIM_TEMP_ON_REZ:
if (remain < 1) if (remain < 1)
return; return;
@ -7350,7 +7354,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public LSL_Vector llGetRootPosition() public LSL_Vector llGetRootPosition()
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
return new LSL_Vector(m_host.ParentGroup.AbsolutePosition.X, m_host.ParentGroup.AbsolutePosition.Y, return new LSL_Vector(m_host.ParentGroup.AbsolutePosition.X, m_host.ParentGroup.AbsolutePosition.Y,
m_host.ParentGroup.AbsolutePosition.Z); m_host.ParentGroup.AbsolutePosition.Z);
} }
@ -7444,7 +7448,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{ {
LSL_Vector lower; LSL_Vector lower;
LSL_Vector upper; LSL_Vector upper;
if (presence.Animator.Animations.DefaultAnimation.AnimID if (presence.Animator.Animations.DefaultAnimation.AnimID
== AnimationSet.Animations.AnimsUUID["SIT_GROUND_CONSTRAINED"]) == AnimationSet.Animations.AnimsUUID["SIT_GROUND_CONSTRAINED"])
{ {
// This is for ground sitting avatars // This is for ground sitting avatars
@ -7643,8 +7647,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
res.Add(new LSL_Float((Shape.PathRevolutions * 0.015) + 1.0)); // Slightly inaccurate, because an unsigned res.Add(new LSL_Float((Shape.PathRevolutions * 0.015) + 1.0)); // Slightly inaccurate, because an unsigned
// byte is being used to represent the entire // byte is being used to represent the entire
// range of floating-point values from 1.0 // range of floating-point values from 1.0
// through 4.0 (which is how SL does it). // through 4.0 (which is how SL does it).
// float radiusoffset // float radiusoffset
res.Add(new LSL_Float(Shape.PathRadiusOffset / 100.0)); res.Add(new LSL_Float(Shape.PathRadiusOffset / 100.0));
@ -7819,104 +7823,104 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// Assuming silently fail means give back an empty list. Ideally, need to check this. // Assuming silently fail means give back an empty list. Ideally, need to check this.
if (face < 0 || face > m_host.GetNumberOfSides() - 1) if (face < 0 || face > m_host.GetNumberOfSides() - 1)
return new LSL_List(); return new LSL_List();
return GetPrimMediaParams(face, rules); return GetPrimMediaParams(face, rules);
} }
private LSL_List GetPrimMediaParams(int face, LSL_List rules) private LSL_List GetPrimMediaParams(int face, LSL_List rules)
{ {
IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>(); IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
if (null == module) if (null == module)
throw new Exception("Media on a prim functions not available"); throw new Exception("Media on a prim functions not available");
MediaEntry me = module.GetMediaEntry(m_host, face); MediaEntry me = module.GetMediaEntry(m_host, face);
// As per http://wiki.secondlife.com/wiki/LlGetPrimMediaParams // As per http://wiki.secondlife.com/wiki/LlGetPrimMediaParams
if (null == me) if (null == me)
return new LSL_List(); return new LSL_List();
LSL_List res = new LSL_List(); LSL_List res = new LSL_List();
for (int i = 0; i < rules.Length; i++) for (int i = 0; i < rules.Length; i++)
{ {
int code = (int)rules.GetLSLIntegerItem(i); int code = (int)rules.GetLSLIntegerItem(i);
switch (code) switch (code)
{ {
case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE: case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE:
// Not implemented // Not implemented
res.Add(new LSL_Integer(0)); res.Add(new LSL_Integer(0));
break; break;
case ScriptBaseClass.PRIM_MEDIA_CONTROLS: case ScriptBaseClass.PRIM_MEDIA_CONTROLS:
if (me.Controls == MediaControls.Standard) if (me.Controls == MediaControls.Standard)
res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD)); res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD));
else else
res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_MINI)); res.Add(new LSL_Integer(ScriptBaseClass.PRIM_MEDIA_CONTROLS_MINI));
break; break;
case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL: case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL:
res.Add(new LSL_String(me.CurrentURL)); res.Add(new LSL_String(me.CurrentURL));
break; break;
case ScriptBaseClass.PRIM_MEDIA_HOME_URL: case ScriptBaseClass.PRIM_MEDIA_HOME_URL:
res.Add(new LSL_String(me.HomeURL)); res.Add(new LSL_String(me.HomeURL));
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP: case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP:
res.Add(me.AutoLoop ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); res.Add(me.AutoLoop ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY: case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY:
res.Add(me.AutoPlay ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); res.Add(me.AutoPlay ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE: case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE:
res.Add(me.AutoScale ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); res.Add(me.AutoScale ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM: case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM:
res.Add(me.AutoZoom ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); res.Add(me.AutoZoom ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
break; break;
case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT: case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT:
res.Add(me.InteractOnFirstClick ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); res.Add(me.InteractOnFirstClick ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
break; break;
case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS: case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS:
res.Add(new LSL_Integer(me.Width)); res.Add(new LSL_Integer(me.Width));
break; break;
case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS: case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS:
res.Add(new LSL_Integer(me.Height)); res.Add(new LSL_Integer(me.Height));
break; break;
case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE: case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE:
res.Add(me.EnableWhiteList ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE); res.Add(me.EnableWhiteList ? ScriptBaseClass.TRUE : ScriptBaseClass.FALSE);
break; break;
case ScriptBaseClass.PRIM_MEDIA_WHITELIST: case ScriptBaseClass.PRIM_MEDIA_WHITELIST:
string[] urls = (string[])me.WhiteList.Clone(); string[] urls = (string[])me.WhiteList.Clone();
for (int j = 0; j < urls.Length; j++) for (int j = 0; j < urls.Length; j++)
urls[j] = Uri.EscapeDataString(urls[j]); urls[j] = Uri.EscapeDataString(urls[j]);
res.Add(new LSL_String(string.Join(", ", urls))); res.Add(new LSL_String(string.Join(", ", urls)));
break; break;
case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT: case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT:
res.Add(new LSL_Integer((int)me.InteractPermissions)); res.Add(new LSL_Integer((int)me.InteractPermissions));
break; break;
case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL: case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL:
res.Add(new LSL_Integer((int)me.ControlPermissions)); res.Add(new LSL_Integer((int)me.ControlPermissions));
break; break;
} }
} }
return res; return res;
} }
public LSL_Integer llSetPrimMediaParams(int face, LSL_List rules) public LSL_Integer llSetPrimMediaParams(int face, LSL_List rules)
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
@ -7927,32 +7931,32 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// Don't perform the media check directly // Don't perform the media check directly
if (face < 0 || face > m_host.GetNumberOfSides() - 1) if (face < 0 || face > m_host.GetNumberOfSides() - 1)
return ScriptBaseClass.LSL_STATUS_OK; return ScriptBaseClass.LSL_STATUS_OK;
return SetPrimMediaParams(face, rules); return SetPrimMediaParams(face, rules);
} }
private LSL_Integer SetPrimMediaParams(int face, LSL_List rules) private LSL_Integer SetPrimMediaParams(int face, LSL_List rules)
{ {
IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>(); IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
if (null == module) if (null == module)
throw new Exception("Media on a prim functions not available"); throw new Exception("Media on a prim functions not available");
MediaEntry me = module.GetMediaEntry(m_host, face); MediaEntry me = module.GetMediaEntry(m_host, face);
if (null == me) if (null == me)
me = new MediaEntry(); me = new MediaEntry();
int i = 0; int i = 0;
while (i < rules.Length - 1) while (i < rules.Length - 1)
{ {
int code = rules.GetLSLIntegerItem(i++); int code = rules.GetLSLIntegerItem(i++);
switch (code) switch (code)
{ {
case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE: case ScriptBaseClass.PRIM_MEDIA_ALT_IMAGE_ENABLE:
me.EnableAlterntiveImage = (rules.GetLSLIntegerItem(i++) != 0 ? true : false); me.EnableAlterntiveImage = (rules.GetLSLIntegerItem(i++) != 0 ? true : false);
break; break;
case ScriptBaseClass.PRIM_MEDIA_CONTROLS: case ScriptBaseClass.PRIM_MEDIA_CONTROLS:
int v = rules.GetLSLIntegerItem(i++); int v = rules.GetLSLIntegerItem(i++);
if (ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD == v) if (ScriptBaseClass.PRIM_MEDIA_CONTROLS_STANDARD == v)
@ -7960,47 +7964,47 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
else else
me.Controls = MediaControls.Mini; me.Controls = MediaControls.Mini;
break; break;
case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL: case ScriptBaseClass.PRIM_MEDIA_CURRENT_URL:
me.CurrentURL = rules.GetLSLStringItem(i++); me.CurrentURL = rules.GetLSLStringItem(i++);
break; break;
case ScriptBaseClass.PRIM_MEDIA_HOME_URL: case ScriptBaseClass.PRIM_MEDIA_HOME_URL:
me.HomeURL = rules.GetLSLStringItem(i++); me.HomeURL = rules.GetLSLStringItem(i++);
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP: case ScriptBaseClass.PRIM_MEDIA_AUTO_LOOP:
me.AutoLoop = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); me.AutoLoop = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY: case ScriptBaseClass.PRIM_MEDIA_AUTO_PLAY:
me.AutoPlay = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); me.AutoPlay = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE: case ScriptBaseClass.PRIM_MEDIA_AUTO_SCALE:
me.AutoScale = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); me.AutoScale = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
break; break;
case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM: case ScriptBaseClass.PRIM_MEDIA_AUTO_ZOOM:
me.AutoZoom = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); me.AutoZoom = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
break; break;
case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT: case ScriptBaseClass.PRIM_MEDIA_FIRST_CLICK_INTERACT:
me.InteractOnFirstClick = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); me.InteractOnFirstClick = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
break; break;
case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS: case ScriptBaseClass.PRIM_MEDIA_WIDTH_PIXELS:
me.Width = (int)rules.GetLSLIntegerItem(i++); me.Width = (int)rules.GetLSLIntegerItem(i++);
break; break;
case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS: case ScriptBaseClass.PRIM_MEDIA_HEIGHT_PIXELS:
me.Height = (int)rules.GetLSLIntegerItem(i++); me.Height = (int)rules.GetLSLIntegerItem(i++);
break; break;
case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE: case ScriptBaseClass.PRIM_MEDIA_WHITELIST_ENABLE:
me.EnableWhiteList = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false); me.EnableWhiteList = (ScriptBaseClass.TRUE == rules.GetLSLIntegerItem(i++) ? true : false);
break; break;
case ScriptBaseClass.PRIM_MEDIA_WHITELIST: case ScriptBaseClass.PRIM_MEDIA_WHITELIST:
string[] rawWhiteListUrls = rules.GetLSLStringItem(i++).ToString().Split(new char[] { ',' }); string[] rawWhiteListUrls = rules.GetLSLStringItem(i++).ToString().Split(new char[] { ',' });
List<string> whiteListUrls = new List<string>(); List<string> whiteListUrls = new List<string>();
@ -8008,22 +8012,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
rawWhiteListUrls, delegate(string rawUrl) { whiteListUrls.Add(rawUrl.Trim()); }); rawWhiteListUrls, delegate(string rawUrl) { whiteListUrls.Add(rawUrl.Trim()); });
me.WhiteList = whiteListUrls.ToArray(); me.WhiteList = whiteListUrls.ToArray();
break; break;
case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT: case ScriptBaseClass.PRIM_MEDIA_PERMS_INTERACT:
me.InteractPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++); me.InteractPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
break; break;
case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL: case ScriptBaseClass.PRIM_MEDIA_PERMS_CONTROL:
me.ControlPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++); me.ControlPermissions = (MediaPermission)(byte)(int)rules.GetLSLIntegerItem(i++);
break; break;
} }
} }
module.SetMediaEntry(m_host, face, me); module.SetMediaEntry(m_host, face, me);
return ScriptBaseClass.LSL_STATUS_OK; return ScriptBaseClass.LSL_STATUS_OK;
} }
public LSL_Integer llClearPrimMedia(LSL_Integer face) public LSL_Integer llClearPrimMedia(LSL_Integer face)
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
@ -8034,16 +8038,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// FIXME: Don't perform the media check directly // FIXME: Don't perform the media check directly
if (face < 0 || face > m_host.GetNumberOfSides() - 1) if (face < 0 || face > m_host.GetNumberOfSides() - 1)
return ScriptBaseClass.LSL_STATUS_OK; return ScriptBaseClass.LSL_STATUS_OK;
IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>(); IMoapModule module = m_ScriptEngine.World.RequestModuleInterface<IMoapModule>();
if (null == module) if (null == module)
throw new Exception("Media on a prim functions not available"); throw new Exception("Media on a prim functions not available");
module.ClearMediaEntry(m_host, face); module.ClearMediaEntry(m_host, face);
return ScriptBaseClass.LSL_STATUS_OK; return ScriptBaseClass.LSL_STATUS_OK;
} }
// <remarks> // <remarks>
// <para> // <para>
// The .NET definition of base 64 is: // The .NET definition of base 64 is:
@ -8303,7 +8307,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public LSL_String llGetHTTPHeader(LSL_Key request_id, string header) public LSL_String llGetHTTPHeader(LSL_Key request_id, string header)
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
if (m_UrlModule != null) if (m_UrlModule != null)
return m_UrlModule.GetHttpHeader(new UUID(request_id), header); return m_UrlModule.GetHttpHeader(new UUID(request_id), header);
return String.Empty; return String.Empty;
@ -8492,19 +8496,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return tokens; return tokens;
} }
public LSL_List llParseString2List(string src, LSL_List separators, LSL_List spacers) public LSL_List llParseString2List(string src, LSL_List separators, LSL_List spacers)
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
return this.ParseString(src, separators, spacers, false); return this.ParseString(src, separators, spacers, false);
} }
public LSL_List llParseStringKeepNulls(string src, LSL_List separators, LSL_List spacers) public LSL_List llParseStringKeepNulls(string src, LSL_List separators, LSL_List spacers)
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);
return this.ParseString(src, separators, spacers, true); return this.ParseString(src, separators, spacers, true);
} }
public LSL_Integer llGetObjectPermMask(int mask) public LSL_Integer llGetObjectPermMask(int mask)
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2217,6 +2217,8 @@
<Reference name="OpenMetaverseTypes" path="../../../bin/"/> <Reference name="OpenMetaverseTypes" path="../../../bin/"/>
<Reference name="OpenMetaverse" path="../../../bin/"/> <Reference name="OpenMetaverse" path="../../../bin/"/>
<Reference name="OpenMetaverse.StructuredData" path="../../../bin/"/> <Reference name="OpenMetaverse.StructuredData" path="../../../bin/"/>
<Reference name="Community.CsharpSqlite"/>
<Reference name="Community.CsharpSqlite.Sqlite"/>
<Reference name="Mono.Data.Sqlite"/> <Reference name="Mono.Data.Sqlite"/>
<Reference name="Mono.Addins" path="../../../bin/"/> <Reference name="Mono.Addins" path="../../../bin/"/>
<Reference name="log4net" path="../../../bin/"/> <Reference name="log4net" path="../../../bin/"/>