* This sends collision events to the script engine.

* Unfortunately, there's some kludges with the Async manager and the llDetected functions that I have yet to decipher...  so llDetected functions don't work with collision events at the moment....
This commit is contained in:
Teravus Ovares
2008-06-05 13:24:59 +00:00
parent 622cd3db8b
commit e12baa5eb3
7 changed files with 402 additions and 28 deletions

View File

@@ -562,6 +562,25 @@ namespace OpenSim.Region.ScriptEngine.Common
return resolveName(SensedUUID);
}
}
else
{
ScriptManager sm;
IScript script = null;
if ((sm = m_ScriptEngine.m_ScriptManager) != null)
{
if (sm.Scripts.ContainsKey(m_localID))
{
if ((script = sm.GetScript(m_localID, m_itemID)) != null)
{
if (script.llDetectParams._bool.Length > number && script.llDetectParams._bool[number])
{
return script.llDetectParams._string[number];
}
}
}
}
}
return String.Empty;
}
@@ -587,9 +606,12 @@ namespace OpenSim.Region.ScriptEngine.Common
{
if ((script = sm.GetScript(m_localID, m_itemID)) != null)
{
if (script.llDetectParams._key[0])
if (script.llDetectParams._bool.Length > number && script.llDetectParams._bool[number])
{
return new LLUUID(script.llDetectParams._key[0]);
LLUUID returnUUID = LLUUID.Zero;
Helpers.TryParse(script.llDetectParams._key[number], out returnUUID);
return returnUUID;
}
}
}
@@ -614,6 +636,35 @@ namespace OpenSim.Region.ScriptEngine.Common
return SensedObject;
}
}
else
{
ScriptManager sm;
IScript script = null;
if ((sm = m_ScriptEngine.m_ScriptManager) != null)
{
if (sm.Scripts.ContainsKey(m_localID))
{
if ((script = sm.GetScript(m_localID, m_itemID)) != null)
{
if (script.llDetectParams._key[number])
{
EntityBase SensedObject = null;
LLUUID SensedUUID = LLUUID.Zero;
Helpers.TryParse(script.llDetectParams._key.ToString(), out SensedUUID);
if (SensedUUID == LLUUID.Zero)
return null;
lock (World.Entities)
{
World.Entities.TryGetValue(SensedUUID, out SensedObject);
}
return SensedObject;
}
}
}
}
}
return null;
}