Scipt modules get the OpenMetaverse types, so lists passed as arguments to script module functions which then later call LSL_Types.list.GetVector3Item() or LSL_Types.list.GetQuaternionItem() methods would then trigger an InvalidCastException, which is now avoided.
parent
a5ac6af16a
commit
aa78df4a79
|
@ -631,19 +631,44 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
|
|
||||||
public LSL_Types.Vector3 GetVector3Item(int itemIndex)
|
public LSL_Types.Vector3 GetVector3Item(int itemIndex)
|
||||||
{
|
{
|
||||||
if(m_data[itemIndex] is LSL_Types.Vector3)
|
if (m_data[itemIndex] is LSL_Types.Vector3)
|
||||||
|
{
|
||||||
return (LSL_Types.Vector3)m_data[itemIndex];
|
return (LSL_Types.Vector3)m_data[itemIndex];
|
||||||
|
}
|
||||||
|
else if(m_data[itemIndex] is OpenMetaverse.Vector3)
|
||||||
|
{
|
||||||
|
return new LSL_Types.Vector3(
|
||||||
|
(OpenMetaverse.Vector3)m_data[itemIndex]);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
throw new InvalidCastException(string.Format(
|
throw new InvalidCastException(string.Format(
|
||||||
"{0} expected but {1} given",
|
"{0} expected but {1} given",
|
||||||
typeof(LSL_Types.Vector3).Name,
|
typeof(LSL_Types.Vector3).Name,
|
||||||
m_data[itemIndex] != null ?
|
m_data[itemIndex] != null ?
|
||||||
m_data[itemIndex].GetType().Name : "null"));
|
m_data[itemIndex].GetType().Name : "null"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_Types.Quaternion GetQuaternionItem(int itemIndex)
|
public LSL_Types.Quaternion GetQuaternionItem(int itemIndex)
|
||||||
{
|
{
|
||||||
return (LSL_Types.Quaternion)m_data[itemIndex];
|
if (m_data[itemIndex] is LSL_Types.Quaternion)
|
||||||
|
{
|
||||||
|
return (LSL_Types.Quaternion)m_data[itemIndex];
|
||||||
|
}
|
||||||
|
else if(m_data[itemIndex] is OpenMetaverse.Quaternion)
|
||||||
|
{
|
||||||
|
return new LSL_Types.Quaternion(
|
||||||
|
(OpenMetaverse.Quaternion)m_data[itemIndex]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new InvalidCastException(string.Format(
|
||||||
|
"{0} expected but {1} given",
|
||||||
|
typeof(LSL_Types.Quaternion).Name,
|
||||||
|
m_data[itemIndex] != null ?
|
||||||
|
m_data[itemIndex].GetType().Name : "null"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_Types.key GetKeyItem(int itemIndex)
|
public LSL_Types.key GetKeyItem(int itemIndex)
|
||||||
|
|
Loading…
Reference in New Issue