Esempio n. 1
0
        public static void RemoveSDKFolder(ConektonUtilityConstant.PlatformType type)
        {
            (string folderName, string linkFolderName) = GetFolderNames(type);

            if (!Directory.Exists(folderName))
            {
                return;
            }

            File.Delete($"{folderName}.meta");

            Process proc = new Process();

#if UNITY_EDITOR_WIN
            proc.StartInfo.FileName  = System.Environment.GetEnvironmentVariable("ComSpec");
            proc.StartInfo.Arguments = $"/c rmdir \"{folderName}\"";
            proc.Start();
#else
            proc.StartInfo.FileName               = System.Environment.GetEnvironmentVariable("SHELL");
            proc.StartInfo.UseShellExecute        = false;
            proc.StartInfo.RedirectStandardInput  = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.Start();
            proc.StandardInput.WriteLine($"unlink \"{folderName}\"");
            proc.StandardInput.WriteLine("exit");
            proc.StandardInput.Flush();
#endif
            proc.WaitForExit();
            proc.Close();

            AssetDatabase.Refresh();
        }
Esempio n. 2
0
        public static void AddDefinition(ConektonUtilityConstant.PlatformType type)
        {
            switch (type)
            {
            case ConektonUtilityConstant.PlatformType.Nreal:
                AddSymbolDefinition(ConektonUtilityConstant.NREAL_SYMBOL);
                break;

            case ConektonUtilityConstant.PlatformType.Oculus:
                AddSymbolDefinition(ConektonUtilityConstant.OCULUS_SYMBOL);
                break;
            }
        }
Esempio n. 3
0
        public static void Create(ConektonUtilityConstant.PlatformType type)
        {
            (string folderName, string linkFolderName) = GetFolderNames(type);

            if (Directory.Exists(folderName))
            {
                return;
            }

            if (!Directory.Exists(linkFolderName))
            {
                UEditorUtility.DisplayDialog("Target SDK folder is not found", "Please it locate under this project folder (not under the Assets folder).", "OK", "");
                Debug.LogWarning("This editor script will make a symbolic link of the target SDK folder under the Assets folder. Please put the target SDK folder under this project folder directly.");
                return;
            }

            switch (type)
            {
            case ConektonUtilityConstant.PlatformType.Nreal:
                RemoveSDKFolder(ConektonUtilityConstant.PlatformType.Oculus);
                break;

            case ConektonUtilityConstant.PlatformType.Oculus:
                RemoveSDKFolder(ConektonUtilityConstant.PlatformType.Nreal);
                break;
            }

            Process proc = new Process();

#if UNITY_EDITOR_WIN
            proc.StartInfo.FileName  = System.Environment.GetEnvironmentVariable("ComSpec");
            proc.StartInfo.Arguments = $"/c mklink /D \"{folderName}\" \"{linkFolderName}\"";
            proc.StartInfo.Verb      = "RunAs";
            proc.Start();
#else
            proc.StartInfo.FileName               = System.Environment.GetEnvironmentVariable("SHELL");
            proc.StartInfo.UseShellExecute        = false;
            proc.StartInfo.RedirectStandardInput  = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.Verb = "RunAs";
            proc.Start();
            proc.StandardInput.WriteLine($"ln -s \"{linkFolderName}\" \"{folderName}\"");
            proc.StandardInput.WriteLine("exit");
            proc.StandardInput.Flush();
#endif
            proc.WaitForExit();
            proc.Close();

            AssetDatabase.Refresh();
        }
Esempio n. 4
0
        private void DrawTargetSDKLinkGUI(ConektonUtilityConstant.PlatformType type)
        {
            if (SymbolicLinkCreator.ExistSDK(type))
            {
                GUILayout.Label("Target SDK is imported.");

                if (!SymbolicLinkCreator.ExistSDKFolder(type))
                {
                    EditorGUILayout.Space(10);
                    CustomLabel($"You imported the SDK under the Assets folder directoly.", Color.yellow, Color.clear, 14);
                    GUILayout.Label("The SDK folder is expected as a symbolic link.");
                    GUILayout.Label("This may occur a problem changing platform.");
                }

                return;
            }

            string platformName         = GetPlatformName(type);
            string oppositePlatformName = GetOppositePlatformName(type);

            ConektonUtilityConstant.PlatformType oppositeType = (type == ConektonUtilityConstant.PlatformType.Nreal)
                ? ConektonUtilityConstant.PlatformType.Oculus
                : ConektonUtilityConstant.PlatformType.Nreal;
            if (SymbolicLinkCreator.ExistSDK(oppositeType))
            {
                CustomLabel($"{oppositePlatformName} SDK is already imported. You have to remove it.", Color.red, Color.clear, 14);
                GUILayout.Label("Do you want to remove it?");

                if (GUILayout.Button($"Remove {oppositePlatformName} SDK folder"))
                {
                    SymbolicLinkCreator.RemoveSDKFolder(oppositeType);
                }
            }

            if (SymbolicLinkCreator.ExistSDKFolder(type))
            {
                GUILayout.Label($"You have to import {platformName} SDK under the Assets folder.");

                if (GUILayout.Button($"Create {platformName} SDK symbolic link"))
                {
                    SymbolicLinkCreator.Create(type);
                }
            }
            else
            {
                CustomLabel($"{platformName} SDK is not found.", Color.red, Color.clear, 14);
                GUILayout.Label("Please import it to the same hierarchy of the Assets folder.");
                GUILayout.Label("This utility will create a symbolic link.");
            }
        }
Esempio n. 5
0
        public static bool HasNeedDefinitionSymbols(ConektonUtilityConstant.PlatformType type)
        {
            string[] defineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup).Split(';');

            string targetSymbol = (type == ConektonUtilityConstant.PlatformType.Nreal)
                ? ConektonUtilityConstant.NREAL_SYMBOL
                : ConektonUtilityConstant.OCULUS_SYMBOL;

            foreach (var d in defineSymbols)
            {
                if (d == targetSymbol)
                {
                    return(true);
                }
            }

            return(false);
        }
Esempio n. 6
0
        private void DrawPlatformInfoGUI(ConektonUtilityConstant.PlatformType type)
        {
            string platformName = GetPlatformName(type);

            CustomLabel($"You choose {platformName} platform", Color.white, Color.clear, 14);

            EditorGUILayout.Space(10);

            string oppositePlatformName = GetOppositePlatformName(type);

            if (GUILayout.Button($"Change platform to {oppositePlatformName}"))
            {
                ConektonUtilityConstant.PlatformType switchPlatform = (type == ConektonUtilityConstant.PlatformType.Nreal)
                    ? ConektonUtilityConstant.PlatformType.Oculus
                    : ConektonUtilityConstant.PlatformType.Nreal;
                DefinitionResolver.AddDefinition(switchPlatform);
            }
        }
Esempio n. 7
0
        private static (string, string) GetFolderNames(ConektonUtilityConstant.PlatformType type)
        {
            string SDKName = "";

            switch (type)
            {
            case ConektonUtilityConstant.PlatformType.Nreal:
                SDKName = "NRSDK";
                break;

            case ConektonUtilityConstant.PlatformType.Oculus:
                SDKName = "Oculus";
                break;
            }

            string folderName     = $"{Application.dataPath}/{SDKName}";
            string linkFolderName = $"{Application.dataPath}/../{SDKName}";

            return(folderName, linkFolderName);
        }
Esempio n. 8
0
        public static bool ExistSDKFolder(ConektonUtilityConstant.PlatformType type)
        {
            (string folderName, string linkFolderName) = GetFolderNames(type);

            return(Directory.Exists(linkFolderName));
        }
Esempio n. 9
0
 private string GetOppositePlatformName(ConektonUtilityConstant.PlatformType type)
 {
     return((type == ConektonUtilityConstant.PlatformType.Nreal) ? "Oculus" : "Nreal");
 }