Merge branch 'master' of /home/opensim/var/repo/opensim
commit
4b278c64d6
|
@ -225,6 +225,16 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
/// </summary></returns>
|
||||
bool ContainsScripts();
|
||||
|
||||
/// <summary>
|
||||
/// Returns the count of scripts contained
|
||||
/// </summary></returns>
|
||||
int ScriptCount();
|
||||
|
||||
/// <summary>
|
||||
/// Returns the count of running scripts contained
|
||||
/// </summary></returns>
|
||||
int RunningScriptCount();
|
||||
|
||||
/// <summary>
|
||||
/// Get the uuids of all items in this inventory
|
||||
/// </summary>
|
||||
|
|
|
@ -69,6 +69,12 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
|
||||
ArrayList GetScriptErrors(UUID itemID);
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if a script is running.
|
||||
/// </summary>
|
||||
/// <param name="itemID">The item ID of the script.</param>
|
||||
bool GetScriptState(UUID itemID);
|
||||
|
||||
void SaveAllState();
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -3255,7 +3255,33 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
for (int i = 0; i < parts.Length; i++)
|
||||
parts[i].TriggerScriptChangedEvent(val);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns a count of the number of scripts in this groups parts.
|
||||
/// </summary>
|
||||
public int ScriptCount()
|
||||
{
|
||||
int count = 0;
|
||||
SceneObjectPart[] parts = m_parts.GetArray();
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
count += parts[i].Inventory.ScriptCount();
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a count of the number of running scripts in this groups parts.
|
||||
/// </summary>
|
||||
public int RunningScriptCount()
|
||||
{
|
||||
int count = 0;
|
||||
SceneObjectPart[] parts = m_parts.GetArray();
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
count += parts[i].Inventory.RunningScriptCount();
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return String.Format("{0} {1} ({2})", Name, UUID, AbsolutePosition);
|
||||
|
|
|
@ -1081,10 +1081,59 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the count of scripts in this parts inventory.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public int ScriptCount()
|
||||
{
|
||||
int count = 0;
|
||||
lock (m_items)
|
||||
{
|
||||
foreach (TaskInventoryItem item in m_items.Values)
|
||||
{
|
||||
if (item.InvType == (int)InventoryType.LSL)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
/// <summary>
|
||||
/// Returns the count of running scripts in this parts inventory.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public int RunningScriptCount()
|
||||
{
|
||||
IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>();
|
||||
if (engines.Length == 0)
|
||||
return 0;
|
||||
|
||||
int count = 0;
|
||||
List<TaskInventoryItem> scripts = GetInventoryScripts();
|
||||
|
||||
foreach (TaskInventoryItem item in scripts)
|
||||
{
|
||||
foreach (IScriptModule engine in engines)
|
||||
{
|
||||
if (engine != null)
|
||||
{
|
||||
if (engine.GetScriptState(item.ItemID))
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
public List<UUID> GetInventoryList()
|
||||
{
|
||||
List<UUID> ret = new List<UUID>();
|
||||
|
|
|
@ -3418,6 +3418,44 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return m_attachments.Count > 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the total count of scripts in all parts inventories.
|
||||
/// </summary>
|
||||
public int ScriptCount()
|
||||
{
|
||||
int count = 0;
|
||||
lock (m_attachments)
|
||||
{
|
||||
foreach (SceneObjectGroup gobj in m_attachments)
|
||||
{
|
||||
if (gobj != null)
|
||||
{
|
||||
count += gobj.ScriptCount();
|
||||
}
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the total count of running scripts in all parts.
|
||||
/// </summary>
|
||||
public int RunningScriptCount()
|
||||
{
|
||||
int count = 0;
|
||||
lock (m_attachments)
|
||||
{
|
||||
foreach (SceneObjectGroup gobj in m_attachments)
|
||||
{
|
||||
if (gobj != null)
|
||||
{
|
||||
count += gobj.RunningScriptCount();
|
||||
}
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
public bool HasScriptedAttachments()
|
||||
{
|
||||
lock (m_attachments)
|
||||
|
|
|
@ -10358,19 +10358,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
break;
|
||||
// For the following 8 see the Object version below
|
||||
case ScriptBaseClass.OBJECT_RUNNING_SCRIPT_COUNT:
|
||||
ret.Add(new LSL_Integer(0));
|
||||
ret.Add(new LSL_Integer(av.RunningScriptCount()));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_TOTAL_SCRIPT_COUNT:
|
||||
ret.Add(new LSL_Integer(0));
|
||||
ret.Add(new LSL_Integer(av.ScriptCount()));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_SCRIPT_MEMORY:
|
||||
ret.Add(new LSL_Integer(0));
|
||||
ret.Add(new LSL_Integer(av.RunningScriptCount() * 16384));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_SCRIPT_TIME:
|
||||
ret.Add(new LSL_Float(0));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_PRIM_EQUIVALENCE:
|
||||
ret.Add(new LSL_Integer(0));
|
||||
ret.Add(new LSL_Integer(1));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_SERVER_COST:
|
||||
ret.Add(new LSL_Float(0));
|
||||
|
@ -10422,24 +10422,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
case ScriptBaseClass.OBJECT_CREATOR:
|
||||
ret.Add(new LSL_String(obj.CreatorID.ToString()));
|
||||
break;
|
||||
// The following 8 I have intentionaly coded to return zero. They are part of
|
||||
// "Land Impact" calculations. These calculations are probably not applicable
|
||||
// to OpenSim, required figures (cpu/memory usage) are not currently tracked
|
||||
// I have intentionally left these all at zero rather than return possibly
|
||||
// missleading numbers
|
||||
case ScriptBaseClass.OBJECT_RUNNING_SCRIPT_COUNT:
|
||||
// in SL this currently includes crashed scripts
|
||||
ret.Add(new LSL_Integer(0));
|
||||
ret.Add(new LSL_Integer(obj.ParentGroup.RunningScriptCount()));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_TOTAL_SCRIPT_COUNT:
|
||||
ret.Add(new LSL_Integer(0));
|
||||
ret.Add(new LSL_Integer(obj.ParentGroup.ScriptCount()));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_SCRIPT_MEMORY:
|
||||
// The value returned in SL for mono scripts is 65536 * number of active scripts
|
||||
ret.Add(new LSL_Integer(0));
|
||||
// and 16384 * number of active scripts for LSO. since llGetFreememory
|
||||
// is coded to give the LSO value use it here
|
||||
ret.Add(new LSL_Integer(obj.ParentGroup.RunningScriptCount() * 16384));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_SCRIPT_TIME:
|
||||
// Average cpu time per simulator frame expended on all scripts in the objetc
|
||||
// Average cpu time per simulator frame expended on all scripts in the object
|
||||
// Not currently available at Object level
|
||||
ret.Add(new LSL_Float(0));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_PRIM_EQUIVALENCE:
|
||||
|
@ -10447,18 +10444,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
// equivalent of the number of prims in a linkset if it does not
|
||||
// contain a mesh anywhere in the link set or is not a normal prim
|
||||
// The value returned in SL for normal prims is prim count
|
||||
ret.Add(new LSL_Integer(0));
|
||||
ret.Add(new LSL_Integer(obj.ParentGroup.PrimCount));
|
||||
break;
|
||||
// The following 3 costs I have intentionaly coded to return zero. They are part of
|
||||
// "Land Impact" calculations. These calculations are probably not applicable
|
||||
// to OpenSim and are not yet complete in SL
|
||||
case ScriptBaseClass.OBJECT_SERVER_COST:
|
||||
// The value returned in SL for normal prims is prim count
|
||||
// The linden calculation is here
|
||||
// http://wiki.secondlife.com/wiki/Mesh/Mesh_Server_Weight
|
||||
// The value returned in SL for normal prims looks like the prim count
|
||||
ret.Add(new LSL_Float(0));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_STREAMING_COST:
|
||||
// The value returned in SL for normal prims is prim count * 0.06
|
||||
// The linden calculation is here
|
||||
// http://wiki.secondlife.com/wiki/Mesh/Mesh_Streaming_Cost
|
||||
// The value returned in SL for normal prims looks like the prim count * 0.06
|
||||
ret.Add(new LSL_Float(0));
|
||||
break;
|
||||
case ScriptBaseClass.OBJECT_PHYSICS_COST:
|
||||
// The value returned in SL for normal prims is prim count
|
||||
// The linden calculation is here
|
||||
// http://wiki.secondlife.com/wiki/Mesh/Mesh_physics
|
||||
// The value returned in SL for normal prims looks like the prim count
|
||||
ret.Add(new LSL_Float(0));
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue