Merge branch 'master' of /home/opensim/var/repo/opensim
commit
3857295b13
|
@ -768,35 +768,59 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
int colon = firstline.IndexOf(':');
|
int colon = firstline.IndexOf(':');
|
||||||
if (firstline.Length > 2 && firstline.Substring(0, 2) == "//" && colon != -1)
|
if (firstline.Length > 2 && firstline.Substring(0, 2) == "//" && colon != -1)
|
||||||
{
|
{
|
||||||
string engineName = firstline.Substring(2, colon-2);
|
string engineName = firstline.Substring(2, colon - 2);
|
||||||
|
|
||||||
if (names.Contains(engineName))
|
if (names.Contains(engineName))
|
||||||
{
|
{
|
||||||
engine = engineName;
|
engine = engineName;
|
||||||
script = "//" + script.Substring(script.IndexOf(':')+1);
|
script = "//" + script.Substring(colon + 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (engine == ScriptEngineName)
|
if (engine == ScriptEngineName)
|
||||||
{
|
{
|
||||||
SceneObjectPart part =
|
// If we are falling back on XEngine as the default engine, then only complain to the user
|
||||||
m_Scene.GetSceneObjectPart(
|
// if a script language has been explicitly set and it's one that we recognize. If it's
|
||||||
localID);
|
// explicitly not allowed or the script is not in LSL then the user will be informed by a later compiler message.
|
||||||
|
//
|
||||||
TaskInventoryItem item =
|
// This avoids the overwhelming number of false positives where we're in this code because
|
||||||
part.Inventory.GetInventoryItem(itemID);
|
// there's a colon in a comment in the first line of a script for entirely
|
||||||
|
// unrelated reasons (e.g. vim settings).
|
||||||
|
//
|
||||||
|
// TODO: A better fix would be to deprecate simple : detection and look for some less likely
|
||||||
|
// string to begin the comment (like #! in unix shell scripts).
|
||||||
|
bool scriptExplicitlyInXEngineLanguage = false;
|
||||||
|
string restOfScript = script.Substring(colon + 1);
|
||||||
|
|
||||||
ScenePresence presence =
|
// FIXME: These are hardcoded because they are currently hardcoded in Compiler.cs
|
||||||
m_Scene.GetScenePresence(
|
if (restOfScript.StartsWith("c#")
|
||||||
item.OwnerID);
|
|| restOfScript.StartsWith("vb")
|
||||||
|
|| restOfScript.StartsWith("lsl")
|
||||||
|
|| restOfScript.StartsWith("js")
|
||||||
|
|| restOfScript.StartsWith("yp"))
|
||||||
|
scriptExplicitlyInXEngineLanguage = true;
|
||||||
|
|
||||||
if (presence != null)
|
if (scriptExplicitlyInXEngineLanguage)
|
||||||
{
|
{
|
||||||
presence.ControllingClient.SendAgentAlertMessage(
|
SceneObjectPart part =
|
||||||
"Selected engine unavailable. "+
|
m_Scene.GetSceneObjectPart(
|
||||||
"Running script on "+
|
localID);
|
||||||
ScriptEngineName,
|
|
||||||
false);
|
TaskInventoryItem item =
|
||||||
|
part.Inventory.GetInventoryItem(itemID);
|
||||||
|
|
||||||
|
ScenePresence presence =
|
||||||
|
m_Scene.GetScenePresence(
|
||||||
|
item.OwnerID);
|
||||||
|
|
||||||
|
if (presence != null)
|
||||||
|
{
|
||||||
|
presence.ControllingClient.SendAgentAlertMessage(
|
||||||
|
"Selected engine unavailable. "+
|
||||||
|
"Running script on "+
|
||||||
|
ScriptEngineName,
|
||||||
|
false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue