mirror of
https://github.com/opensim/opensim.git
synced 2026-08-01 22:26:09 +08:00
refactor: Move functions that lookup asset ids from task inventory or pass them through to ScriptUtils class in OpenSim.Region.Framework.dll
Renames functions to better reflect what they do. This is so that code registering with modInvoke() can reuse this code to provide functions that behave in a consistent manner with existing LSL/OSSL functions.
This commit is contained in:
@@ -45,6 +45,7 @@ using OpenSim.Region.CoreModules.World.Terrain;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
using OpenSim.Region.Framework.Scenes.Animation;
|
||||
using OpenSim.Region.Framework.Scenes.Scripting;
|
||||
using OpenSim.Region.Physics.Manager;
|
||||
using OpenSim.Region.ScriptEngine.Shared;
|
||||
using OpenSim.Region.ScriptEngine.Shared.Api.Plugins;
|
||||
@@ -333,79 +334,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
}
|
||||
}
|
||||
|
||||
protected UUID InventoryKey(string name, int type)
|
||||
{
|
||||
TaskInventoryItem item = m_host.Inventory.GetInventoryItem(name);
|
||||
|
||||
if (item != null && item.Type == type)
|
||||
return item.AssetID;
|
||||
else
|
||||
return UUID.Zero;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// accepts a valid UUID, -or- a name of an inventory item.
|
||||
/// Returns a valid UUID or UUID.Zero if key invalid and item not found
|
||||
/// in prim inventory.
|
||||
/// </summary>
|
||||
/// <param name="k"></param>
|
||||
/// <returns></returns>
|
||||
protected UUID KeyOrName(string k)
|
||||
{
|
||||
UUID key;
|
||||
|
||||
// if we can parse the string as a key, use it.
|
||||
// else try to locate the name in inventory of object. found returns key,
|
||||
// not found returns UUID.Zero
|
||||
if (!UUID.TryParse(k, out key))
|
||||
{
|
||||
TaskInventoryItem item = m_host.Inventory.GetInventoryItem(k);
|
||||
|
||||
if (item != null)
|
||||
key = item.AssetID;
|
||||
else
|
||||
key = UUID.Zero;
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return the UUID of the asset matching the specified key or name
|
||||
/// and asset type.
|
||||
/// </summary>
|
||||
/// <param name="k"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
protected UUID KeyOrName(string k, AssetType type)
|
||||
{
|
||||
UUID key;
|
||||
|
||||
if (!UUID.TryParse(k, out key))
|
||||
{
|
||||
TaskInventoryItem item = m_host.Inventory.GetInventoryItem(k);
|
||||
if (item != null && item.Type == (int)type)
|
||||
key = item.AssetID;
|
||||
}
|
||||
else
|
||||
{
|
||||
lock (m_host.TaskInventory)
|
||||
{
|
||||
foreach (KeyValuePair<UUID, TaskInventoryItem> item in m_host.TaskInventory)
|
||||
{
|
||||
if (item.Value.Type == (int)type && item.Value.Name == k)
|
||||
{
|
||||
key = item.Value.ItemID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
//These are the implementations of the various ll-functions used by the LSL scripts.
|
||||
public LSL_Float llSin(double f)
|
||||
{
|
||||
@@ -1816,7 +1744,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
{
|
||||
UUID textureID = new UUID();
|
||||
|
||||
textureID = InventoryKey(texture, (int)AssetType.Texture);
|
||||
textureID = ScriptUtils.GetAssetIdFromItemName(m_host, texture, (int)AssetType.Texture);
|
||||
if (textureID == UUID.Zero)
|
||||
{
|
||||
if (!UUID.TryParse(texture, out textureID))
|
||||
@@ -2450,7 +2378,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
if (m_SoundModule != null)
|
||||
{
|
||||
m_SoundModule.SendSound(m_host.UUID,
|
||||
KeyOrName(sound, AssetType.Sound), volume, false, 0,
|
||||
ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, sound, AssetType.Sound), volume, false, 0,
|
||||
0, false, false);
|
||||
}
|
||||
}
|
||||
@@ -2460,7 +2388,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
m_host.AddScriptLPS(1);
|
||||
if (m_SoundModule != null)
|
||||
{
|
||||
m_SoundModule.LoopSound(m_host.UUID, KeyOrName(sound),
|
||||
m_SoundModule.LoopSound(m_host.UUID, ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, sound),
|
||||
volume, 20, false);
|
||||
}
|
||||
}
|
||||
@@ -2470,7 +2398,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
m_host.AddScriptLPS(1);
|
||||
if (m_SoundModule != null)
|
||||
{
|
||||
m_SoundModule.LoopSound(m_host.UUID, KeyOrName(sound),
|
||||
m_SoundModule.LoopSound(m_host.UUID, ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, sound),
|
||||
volume, 20, true);
|
||||
}
|
||||
}
|
||||
@@ -2492,7 +2420,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
if (m_SoundModule != null)
|
||||
{
|
||||
m_SoundModule.SendSound(m_host.UUID,
|
||||
KeyOrName(sound, AssetType.Sound), volume, false, 0,
|
||||
ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, sound, AssetType.Sound), volume, false, 0,
|
||||
0, true, false);
|
||||
}
|
||||
}
|
||||
@@ -2504,7 +2432,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
if (m_SoundModule != null)
|
||||
{
|
||||
m_SoundModule.SendSound(m_host.UUID,
|
||||
KeyOrName(sound, AssetType.Sound), volume, true, 0, 0,
|
||||
ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, sound, AssetType.Sound), volume, true, 0, 0,
|
||||
false, false);
|
||||
}
|
||||
}
|
||||
@@ -2521,7 +2449,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
if (m_SoundModule != null)
|
||||
m_SoundModule.PreloadSound(m_host.UUID, KeyOrName(sound), 0);
|
||||
m_SoundModule.PreloadSound(m_host.UUID, ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, sound), 0);
|
||||
ScriptSleep(1000);
|
||||
}
|
||||
|
||||
@@ -3352,7 +3280,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
if (presence != null)
|
||||
{
|
||||
// Do NOT try to parse UUID, animations cannot be triggered by ID
|
||||
UUID animID = InventoryKey(anim, (int)AssetType.Animation);
|
||||
UUID animID = ScriptUtils.GetAssetIdFromItemName(m_host, anim, (int)AssetType.Animation);
|
||||
if (animID == UUID.Zero)
|
||||
presence.Animator.AddAnimation(anim, m_host.UUID);
|
||||
else
|
||||
@@ -3374,7 +3302,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
|
||||
if (presence != null)
|
||||
{
|
||||
UUID animID = KeyOrName(anim);
|
||||
UUID animID = ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, anim);
|
||||
|
||||
if (animID == UUID.Zero)
|
||||
presence.Animator.RemoveAnimation(anim);
|
||||
@@ -4319,7 +4247,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
|
||||
private void DoLLTeleport(ScenePresence sp, string destination, Vector3 targetPos, Vector3 targetLookAt)
|
||||
{
|
||||
UUID assetID = KeyOrName(destination);
|
||||
UUID assetID = ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, destination);
|
||||
|
||||
// The destinaion is not an asset ID and also doesn't name a landmark.
|
||||
// Use it as a sim name
|
||||
@@ -4386,7 +4314,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
m_host.AddScriptLPS(1);
|
||||
|
||||
// TODO: Parameter check logic required.
|
||||
m_host.CollisionSound = KeyOrName(impact_sound, AssetType.Sound);
|
||||
m_host.CollisionSound = ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, impact_sound, AssetType.Sound);
|
||||
m_host.CollisionSoundVolume = (float)impact_volume;
|
||||
}
|
||||
|
||||
@@ -5912,7 +5840,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
if (m_SoundModule != null)
|
||||
{
|
||||
m_SoundModule.TriggerSoundLimited(m_host.UUID,
|
||||
KeyOrName(sound, AssetType.Sound), volume,
|
||||
ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, sound, AssetType.Sound), volume,
|
||||
bottom_south_west, top_north_east);
|
||||
}
|
||||
}
|
||||
@@ -6346,7 +6274,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
break;
|
||||
|
||||
case (int)ScriptBaseClass.PSYS_SRC_TEXTURE:
|
||||
prules.Texture = KeyOrName(rules.GetLSLStringItem(i + 1));
|
||||
prules.Texture = ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, rules.GetLSLStringItem(i + 1));
|
||||
break;
|
||||
|
||||
case (int)ScriptBaseClass.PSYS_SRC_BURST_RATE:
|
||||
@@ -7269,9 +7197,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
UUID sculptId;
|
||||
|
||||
if (!UUID.TryParse(map, out sculptId))
|
||||
{
|
||||
sculptId = InventoryKey(map, (int)AssetType.Texture);
|
||||
}
|
||||
sculptId = ScriptUtils.GetAssetIdFromItemName(m_host, map, (int)AssetType.Texture);
|
||||
|
||||
if (sculptId == UUID.Zero)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user