fix parsing of a vector4 and storing on a lsl quaternion needed for lightShare scripts
parent
8dd9601fdc
commit
05ba77fd3b
|
@ -295,7 +295,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
idx++;
|
idx++;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
iQ = rules.GetQuaternionItem(idx);
|
iQ = rules.GetVector4Item(idx);
|
||||||
}
|
}
|
||||||
catch (InvalidCastException)
|
catch (InvalidCastException)
|
||||||
{
|
{
|
||||||
|
@ -319,7 +319,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
idx++;
|
idx++;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
iQ = rules.GetQuaternionItem(idx);
|
iQ = rules.GetVector4Item(idx);
|
||||||
}
|
}
|
||||||
catch (InvalidCastException)
|
catch (InvalidCastException)
|
||||||
{
|
{
|
||||||
|
@ -342,7 +342,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
idx++;
|
idx++;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
iQ = rules.GetQuaternionItem(idx);
|
iQ = rules.GetVector4Item(idx);
|
||||||
}
|
}
|
||||||
catch (InvalidCastException)
|
catch (InvalidCastException)
|
||||||
{
|
{
|
||||||
|
@ -532,7 +532,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
idx++;
|
idx++;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
iQ = rules.GetQuaternionItem(idx);
|
iQ = rules.GetVector4Item(idx);
|
||||||
}
|
}
|
||||||
catch (InvalidCastException)
|
catch (InvalidCastException)
|
||||||
{
|
{
|
||||||
|
@ -654,7 +654,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
break;
|
break;
|
||||||
case (int)ScriptBaseClass.WL_SUN_MOON_COLOR:
|
case (int)ScriptBaseClass.WL_SUN_MOON_COLOR:
|
||||||
idx++;
|
idx++;
|
||||||
iQ = rules.GetQuaternionItem(idx);
|
iQ = rules.GetVector4Item(idx);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
wl.sunMoonColor = new Vector4((float)iQ.x, (float)iQ.y, (float)iQ.z, (float)iQ.s);
|
wl.sunMoonColor = new Vector4((float)iQ.x, (float)iQ.y, (float)iQ.z, (float)iQ.s);
|
||||||
|
|
|
@ -700,6 +700,31 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use LSL_Types.Quaternion to parse and store a vector4 for lightShare
|
||||||
|
public LSL_Types.Quaternion GetVector4Item(int itemIndex)
|
||||||
|
{
|
||||||
|
if (Data[itemIndex] is LSL_Types.Quaternion)
|
||||||
|
{
|
||||||
|
LSL_Types.Quaternion q = (LSL_Types.Quaternion)Data[itemIndex];
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
else if(Data[itemIndex] is OpenMetaverse.Quaternion)
|
||||||
|
{
|
||||||
|
LSL_Types.Quaternion q = new LSL_Types.Quaternion(
|
||||||
|
(OpenMetaverse.Quaternion)Data[itemIndex]);
|
||||||
|
q.Normalize();
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new InvalidCastException(string.Format(
|
||||||
|
"{0} expected but {1} given",
|
||||||
|
typeof(LSL_Types.Quaternion).Name,
|
||||||
|
Data[itemIndex] != null ?
|
||||||
|
Data[itemIndex].GetType().Name : "null"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public LSL_Types.Quaternion GetQuaternionItem(int itemIndex)
|
public LSL_Types.Quaternion GetQuaternionItem(int itemIndex)
|
||||||
{
|
{
|
||||||
if (Data[itemIndex] is LSL_Types.Quaternion)
|
if (Data[itemIndex] is LSL_Types.Quaternion)
|
||||||
|
|
Loading…
Reference in New Issue