Upgraded original RothenburgAR to Unity version 2017.4.5f1 (and upgrading from standalone vuforia to the version integrated in unity)
This commit is contained in:
128
Assets/AssetBundleManager/Editor/ExecuteInternalMono.cs
Normal file
128
Assets/AssetBundleManager/Editor/ExecuteInternalMono.cs
Normal file
@@ -0,0 +1,128 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System;
|
||||
|
||||
namespace AssetBundles
|
||||
{
|
||||
class MonoInstallationFinder
|
||||
{
|
||||
public static string GetFrameWorksFolder()
|
||||
{
|
||||
var editorAppPath = EditorApplication.applicationPath;
|
||||
if (Application.platform == RuntimePlatform.WindowsEditor)
|
||||
return Path.Combine(Path.GetDirectoryName(editorAppPath), "Data");
|
||||
else if (Application.platform == RuntimePlatform.OSXEditor)
|
||||
return Path.Combine(editorAppPath, Path.Combine("Contents", "Frameworks"));
|
||||
else // Linux...?
|
||||
return Path.Combine(Path.GetDirectoryName(editorAppPath), "Data");
|
||||
}
|
||||
|
||||
public static string GetProfileDirectory (BuildTarget target, string profile)
|
||||
{
|
||||
var monoprefix = GetMonoInstallation();
|
||||
return Path.Combine(monoprefix, Path.Combine("lib", Path.Combine("mono", profile)));
|
||||
}
|
||||
|
||||
public static string GetMonoInstallation()
|
||||
{
|
||||
#if INCLUDE_MONO_2_12
|
||||
return GetMonoInstallation("MonoBleedingEdge");
|
||||
#else
|
||||
return GetMonoInstallation("Mono");
|
||||
#endif
|
||||
}
|
||||
|
||||
public static string GetMonoInstallation(string monoName)
|
||||
{
|
||||
return Path.Combine(GetFrameWorksFolder(), monoName);
|
||||
}
|
||||
}
|
||||
|
||||
class ExecuteInternalMono
|
||||
{
|
||||
private static readonly Regex UnsafeCharsWindows = new Regex("[^A-Za-z0-9\\_\\-\\.\\:\\,\\/\\@\\\\]");
|
||||
private static readonly Regex UnescapeableChars = new Regex("[\\x00-\\x08\\x10-\\x1a\\x1c-\\x1f\\x7f\\xff]");
|
||||
private static readonly Regex Quotes = new Regex("\"");
|
||||
|
||||
public ProcessStartInfo processStartInfo = null;
|
||||
|
||||
public static string PrepareFileName(string input)
|
||||
{
|
||||
if (Application.platform == RuntimePlatform.OSXEditor)
|
||||
{
|
||||
return EscapeCharsQuote(input);
|
||||
}
|
||||
return EscapeCharsWindows(input);
|
||||
}
|
||||
|
||||
public static string EscapeCharsQuote(string input)
|
||||
{
|
||||
if (input.IndexOf('\'') == -1)
|
||||
{
|
||||
return "'" + input + "'";
|
||||
}
|
||||
if (input.IndexOf('"') == -1)
|
||||
{
|
||||
return "\"" + input + "\"";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static string EscapeCharsWindows(string input)
|
||||
{
|
||||
if (input.Length == 0)
|
||||
{
|
||||
return "\"\"";
|
||||
}
|
||||
if (UnescapeableChars.IsMatch(input))
|
||||
{
|
||||
UnityEngine.Debug.LogWarning("Cannot escape control characters in string");
|
||||
return "\"\"";
|
||||
}
|
||||
if (UnsafeCharsWindows.IsMatch(input))
|
||||
{
|
||||
return "\"" + Quotes.Replace(input, "\"\"") + "\"";
|
||||
}
|
||||
return input;
|
||||
}
|
||||
|
||||
public static ProcessStartInfo GetProfileStartInfoForMono(string monodistribution, string profile, string executable, string arguments, bool setMonoEnvironmentVariables)
|
||||
{
|
||||
var monoexe = PathCombine(monodistribution, "bin", "mono");
|
||||
var profileAbspath = PathCombine(monodistribution, "lib", "mono", profile);
|
||||
if (Application.platform == RuntimePlatform.WindowsEditor)
|
||||
monoexe = PrepareFileName(monoexe + ".exe");
|
||||
|
||||
var startInfo = new ProcessStartInfo
|
||||
{
|
||||
Arguments = PrepareFileName(executable) + " " + arguments,
|
||||
CreateNoWindow = true,
|
||||
FileName = monoexe,
|
||||
RedirectStandardError = true,
|
||||
RedirectStandardOutput = true,
|
||||
WorkingDirectory = Application.dataPath + "/..",
|
||||
UseShellExecute = false
|
||||
};
|
||||
|
||||
if (setMonoEnvironmentVariables)
|
||||
{
|
||||
startInfo.EnvironmentVariables["MONO_PATH"] = profileAbspath;
|
||||
startInfo.EnvironmentVariables["MONO_CFG_DIR"] = PathCombine(monodistribution, "etc");
|
||||
}
|
||||
return startInfo;
|
||||
}
|
||||
|
||||
static string PathCombine(params string[] parts)
|
||||
{
|
||||
var path = parts[0];
|
||||
for (var i = 1; i < parts.Length; ++i)
|
||||
path = Path.Combine(path, parts[i]);
|
||||
return path;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user