diff options
author | Melanie Thielker | 2009-04-12 02:42:05 +0000 |
---|---|---|
committer | Melanie Thielker | 2009-04-12 02:42:05 +0000 |
commit | f6f3737fe8c2ee77d127fb26d1674590ca0ced37 (patch) | |
tree | fe572c36b559ffdfacaa0b95087221abfe572663 /OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |
parent | Adding a script event, changed(CHANGED_ANIMATION) (diff) | |
download | opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.zip opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.tar.gz opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.tar.bz2 opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.tar.xz |
Fix a regression where animations would only be sent if the avatar has
attachments. Convert base types to LSL types for event marshalling through
IScriptModule to avoid parameter errors.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/XEngine/XEngine.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index f47e57d..5317cf1 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -935,7 +935,24 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
935 | 935 | ||
936 | public bool PostScriptEvent(UUID itemID, string name, Object[] p) | 936 | public bool PostScriptEvent(UUID itemID, string name, Object[] p) |
937 | { | 937 | { |
938 | return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); | 938 | Object[] lsl_p = new Object[p.Length]; |
939 | for (int i = 0; i < p.Length ; i++) | ||
940 | { | ||
941 | if (p[i] is int) | ||
942 | lsl_p[i] = new LSL_Types.LSLInteger((int)p[i]); | ||
943 | else if (p[i] is string) | ||
944 | lsl_p[i] = new LSL_Types.LSLString((string)p[i]); | ||
945 | else if (p[i] is Vector3) | ||
946 | lsl_p[i] = new LSL_Types.Vector3(((Vector3)p[i]).X, ((Vector3)p[i]).Y, ((Vector3)p[i]).Z); | ||
947 | else if (p[i] is Quaternion) | ||
948 | lsl_p[i] = new LSL_Types.Quaternion(((Quaternion)p[i]).X, ((Quaternion)p[i]).Y, ((Quaternion)p[i]).Z, ((Quaternion)p[i]).W); | ||
949 | else if (p[i] is float) | ||
950 | lsl_p[i] = new LSL_Types.LSLFloat((float)p[i]); | ||
951 | else | ||
952 | lsl_p[i] = p[i]; | ||
953 | } | ||
954 | |||
955 | return PostScriptEvent(itemID, new EventParams(name, lsl_p, new DetectParams[0])); | ||
939 | } | 956 | } |
940 | 957 | ||
941 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) | 958 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) |
@@ -944,7 +961,24 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
944 | if (part == null) | 961 | if (part == null) |
945 | return false; | 962 | return false; |
946 | 963 | ||
947 | return PostObjectEvent(part.LocalId, new EventParams(name, p, new DetectParams[0])); | 964 | Object[] lsl_p = new Object[p.Length]; |
965 | for (int i = 0; i < p.Length ; i++) | ||
966 | { | ||
967 | if (p[i] is int) | ||
968 | lsl_p[i] = new LSL_Types.LSLInteger((int)p[i]); | ||
969 | else if (p[i] is string) | ||
970 | lsl_p[i] = new LSL_Types.LSLString((string)p[i]); | ||
971 | else if (p[i] is Vector3) | ||
972 | lsl_p[i] = new LSL_Types.Vector3(((Vector3)p[i]).X, ((Vector3)p[i]).Y, ((Vector3)p[i]).Z); | ||
973 | else if (p[i] is Quaternion) | ||
974 | lsl_p[i] = new LSL_Types.Quaternion(((Quaternion)p[i]).X, ((Quaternion)p[i]).Y, ((Quaternion)p[i]).Z, ((Quaternion)p[i]).W); | ||
975 | else if (p[i] is float) | ||
976 | lsl_p[i] = new LSL_Types.LSLFloat((float)p[i]); | ||
977 | else | ||
978 | lsl_p[i] = p[i]; | ||
979 | } | ||
980 | |||
981 | return PostObjectEvent(part.LocalId, new EventParams(name, lsl_p, new DetectParams[0])); | ||
948 | } | 982 | } |
949 | 983 | ||
950 | public Assembly OnAssemblyResolve(object sender, | 984 | public Assembly OnAssemblyResolve(object sender, |