diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 62 |
2 files changed, 48 insertions, 24 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 976969a..06f2c3c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | |||
@@ -165,11 +165,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
165 | m_LSL_Functions.llBreakLink(linknum); | 165 | m_LSL_Functions.llBreakLink(linknum); |
166 | } | 166 | } |
167 | 167 | ||
168 | public LSL_List llCastRay(LSL_Vector start, LSL_Vector end, LSL_List options) | ||
169 | { | ||
170 | return m_LSL_Functions.llCastRay(start, end, options); | ||
171 | } | ||
172 | |||
173 | public LSL_Integer llCeil(double f) | 168 | public LSL_Integer llCeil(double f) |
174 | { | 169 | { |
175 | return m_LSL_Functions.llCeil(f); | 170 | return m_LSL_Functions.llCeil(f); |
@@ -971,6 +966,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
971 | return m_LSL_Functions.llRequestDisplayName(id); | 966 | return m_LSL_Functions.llRequestDisplayName(id); |
972 | } | 967 | } |
973 | 968 | ||
969 | public LSL_List llCastRay(LSL_Vector start, LSL_Vector end, LSL_List options) | ||
970 | { | ||
971 | return m_LSL_Functions.llCastRay(start, end, options); | ||
972 | } | ||
973 | |||
974 | public void llLinkParticleSystem(int linknum, LSL_List rules) | 974 | public void llLinkParticleSystem(int linknum, LSL_List rules) |
975 | { | 975 | { |
976 | m_LSL_Functions.llLinkParticleSystem(linknum, rules); | 976 | m_LSL_Functions.llLinkParticleSystem(linknum, rules); |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index b1583b2..79d1944 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -835,35 +835,59 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
835 | int colon = firstline.IndexOf(':'); | 835 | int colon = firstline.IndexOf(':'); |
836 | if (firstline.Length > 2 && firstline.Substring(0, 2) == "//" && colon != -1) | 836 | if (firstline.Length > 2 && firstline.Substring(0, 2) == "//" && colon != -1) |
837 | { | 837 | { |
838 | string engineName = firstline.Substring(2, colon-2); | 838 | string engineName = firstline.Substring(2, colon - 2); |
839 | 839 | ||
840 | if (names.Contains(engineName)) | 840 | if (names.Contains(engineName)) |
841 | { | 841 | { |
842 | engine = engineName; | 842 | engine = engineName; |
843 | script = "//" + script.Substring(script.IndexOf(':')+1); | 843 | script = "//" + script.Substring(colon + 1); |
844 | } | 844 | } |
845 | else | 845 | else |
846 | { | 846 | { |
847 | if (engine == ScriptEngineName) | 847 | if (engine == ScriptEngineName) |
848 | { | 848 | { |
849 | SceneObjectPart part = | 849 | // If we are falling back on XEngine as the default engine, then only complain to the user |
850 | m_Scene.GetSceneObjectPart( | 850 | // if a script language has been explicitly set and it's one that we recognize. If it's |
851 | localID); | 851 | // explicitly not allowed or the script is not in LSL then the user will be informed by a later compiler message. |
852 | 852 | // | |
853 | TaskInventoryItem item = | 853 | // This avoids the overwhelming number of false positives where we're in this code because |
854 | part.Inventory.GetInventoryItem(itemID); | 854 | // there's a colon in a comment in the first line of a script for entirely |
855 | 855 | // unrelated reasons (e.g. vim settings). | |
856 | ScenePresence presence = | 856 | // |
857 | m_Scene.GetScenePresence( | 857 | // TODO: A better fix would be to deprecate simple : detection and look for some less likely |
858 | item.OwnerID); | 858 | // string to begin the comment (like #! in unix shell scripts). |
859 | 859 | bool scriptExplicitlyInXEngineLanguage = false; | |
860 | if (presence != null) | 860 | string restOfScript = script.Substring(colon + 1); |
861 | |||
862 | // FIXME: These are hardcoded because they are currently hardcoded in Compiler.cs | ||
863 | if (restOfScript.StartsWith("c#") | ||
864 | || restOfScript.StartsWith("vb") | ||
865 | || restOfScript.StartsWith("lsl") | ||
866 | || restOfScript.StartsWith("js") | ||
867 | || restOfScript.StartsWith("yp")) | ||
868 | scriptExplicitlyInXEngineLanguage = true; | ||
869 | |||
870 | if (scriptExplicitlyInXEngineLanguage) | ||
861 | { | 871 | { |
862 | presence.ControllingClient.SendAgentAlertMessage( | 872 | SceneObjectPart part = |
863 | "Selected engine unavailable. "+ | 873 | m_Scene.GetSceneObjectPart( |
864 | "Running script on "+ | 874 | localID); |
865 | ScriptEngineName, | 875 | |
866 | false); | 876 | TaskInventoryItem item = |
877 | part.Inventory.GetInventoryItem(itemID); | ||
878 | |||
879 | ScenePresence presence = | ||
880 | m_Scene.GetScenePresence( | ||
881 | item.OwnerID); | ||
882 | |||
883 | if (presence != null) | ||
884 | { | ||
885 | presence.ControllingClient.SendAgentAlertMessage( | ||
886 | "Selected engine unavailable. "+ | ||
887 | "Running script on "+ | ||
888 | ScriptEngineName, | ||
889 | false); | ||
890 | } | ||
867 | } | 891 | } |
868 | } | 892 | } |
869 | } | 893 | } |