Esempio n. 1
0
        public static void UpdateScriptingDefineSymbols()
        {
            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                try
                {
                    foreach (var symbolReq in s_symbolReqList)
                    {
                        symbolReq.FindRequiredTypesInAssembly(assembly);
                    }
                }
                catch (ReflectionTypeLoadException e)
                {
                    Debug.LogWarning(e);
                    Debug.LogWarning("load assembly " + assembly.FullName + " fail");
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            var defineSymbols        = GetDefineSymbols();
            var defineSymbolsChanged = false;

            foreach (var symbolReq in s_symbolReqList)
            {
                if (symbolReq.Validate())
                {
                    if (!defineSymbols.Contains(symbolReq.symbol))
                    {
                        defineSymbols.Add(symbolReq.symbol);
                        defineSymbolsChanged = true;
                    }
                }
                else
                {
                    if (defineSymbols.RemoveAll((symbol) => symbol == symbolReq.symbol) > 0)
                    {
                        defineSymbolsChanged = true;
                    }
                }
            }

            if (defineSymbolsChanged)
            {
                SetDefineSymbols(defineSymbols);
            }

            SymbolRequirement.ResetFoundTypes();
        }
        private static void DoUpdateScriptingDefineSymbols()
        {
            // some symbolRequirement depends on installed packages (only works when UNITY_2018_1_OR_NEWER)
            Vive.VIUSettingsEditor.PackageManagerHelper.PreparePackageList();

            if (Vive.VIUSettingsEditor.PackageManagerHelper.isPreparingList)
            {
                return;
            }

            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                try
                {
                    foreach (var symbolReq in s_symbolReqList)
                    {
                        symbolReq.FindRequiredTypesInAssembly(assembly);
                    }
                }
                catch (ReflectionTypeLoadException e)
                {
                    Debug.LogWarning(e);
                    Debug.LogWarning("load assembly " + assembly.FullName + " fail");
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            var defineSymbols        = GetDefineSymbols();
            var defineSymbolsChanged = false;

            foreach (var symbolReq in s_symbolReqList)
            {
                if (symbolReq.Validate())
                {
                    if (!defineSymbols.Contains(symbolReq.symbol))
                    {
                        defineSymbols.Add(symbolReq.symbol);
                        defineSymbolsChanged = true;
                    }
                }
                else
                {
                    if (defineSymbols.RemoveAll((symbol) => symbol == symbolReq.symbol) > 0)
                    {
                        defineSymbolsChanged = true;
                    }
                }
            }

            if (defineSymbolsChanged)
            {
                SetDefineSymbols(defineSymbols);
            }

            SymbolRequirement.ResetFoundTypes();

            s_isUpdatingScriptingDefineSymbols = false;
            EditorApplication.update          -= DoUpdateScriptingDefineSymbols;
        }