public override void Search()
        {
            if (AssetBundleValidationCache.Count > 0)
            {
                return;
            }

            var contracts = ReflectionUtility.GetAllDerivedInstancesOfType <AssetBundlePathContract>();

            foreach (var contract in contracts)
            {
                if (!_useTestContracts && contract.GetType().GetCustomAttributes(typeof(OnlyIncludeInTestsAttribute), true).Length > 0)
                {
                    continue;
                }

                var dict = contract.GetPaths();

                foreach (var kvp in dict)
                {
                    if (AssetBundleValidationCache.ContainsKey(kvp.Key))
                    {
                        // TODO Iterate through the existing bundle contents and add any bundle items not present
                    }
                    else
                    {
                        AssetBundleValidationCache.Add(kvp.Key, kvp.Value);
                    }
                }
            }
        }
示例#2
0
        public CrossSceneValidatorCache()
        {
            var validators = ReflectionUtility.GetAllDerivedInstancesOfType <BaseCrossSceneValidator>().ToArray();

            _validators = new List <BaseCrossSceneValidator>();

            // Make sure any overriden disabled types are not included
            var overrideConfig = AssetValidatorOverrideConfig.FindOrCreate();

            for (var index = 0; index < validators.Length; index++)
            {
                AssetValidatorOverrideConfig.OverrideItem item = null;
                var baseCrossSceneValidator = validators[index];
                if (overrideConfig.TryGetOverrideConfigItem(baseCrossSceneValidator.GetType(), out item))
                {
                    if (item.enabled)
                    {
                        _validators.Add(baseCrossSceneValidator);
                    }
                }
                else
                {
                    _validators.Add(baseCrossSceneValidator);
                }
            }
        }
        public void AssertReflectionUtilityCanDeriveAllNestedSubclasses()
        {
            var allReflectionDerivedSubclassesOfA = new List <A>();

            allReflectionDerivedSubclassesOfA.AddRange(ReflectionUtility.GetAllDerivedInstancesOfType <A>());

            Assert.AreEqual(3, allReflectionDerivedSubclassesOfA.Count);
            for (var i = 0; i < allSubclassesOfA.Count; i++)
            {
                Assert.IsTrue(allReflectionDerivedSubclassesOfA.Exists(x => x.GetType() == allSubclassesOfA[i].GetType()));
            }
        }
        public InstanceValidatorCache()
        {
            _validators = new List <AbstractInstanceValidator>();

            // Make sure any overriden disabled types are not included
            var overrideConfig = AssetValidatorOverrideConfig.FindOrCreate();

            // Get and add all field validators, excluding override disabled ones.
            var fieldValidators = ReflectionUtility.GetAllDerivedInstancesOfType <BaseFieldValidator>().ToArray();

            for (var index = 0; index < fieldValidators.Length; index++)
            {
                AssetValidatorOverrideConfig.OverrideItem item = null;
                var vFieldValidator = fieldValidators[index];
                if (overrideConfig.TryGetOverrideConfigItem(vFieldValidator.GetType(), out item))
                {
                    if (item.enabled)
                    {
                        _validators.Add(vFieldValidator);
                    }
                }
                else
                {
                    _validators.Add(vFieldValidator);
                }
            }

            // Get and add all object validators, excluding override disabled ones.
            var objectValidators = ReflectionUtility.GetAllDerivedInstancesOfType <BaseObjectValidator>().ToArray();

            for (var index = 0; index < objectValidators.Length; index++)
            {
                AssetValidatorOverrideConfig.OverrideItem item = null;
                var vObjectValidator = objectValidators[index];
                if (overrideConfig.TryGetOverrideConfigItem(vObjectValidator.GetType(), out item))
                {
                    if (item.enabled)
                    {
                        _validators.Add(vObjectValidator);
                    }
                }
                else
                {
                    _validators.Add(vObjectValidator);
                }
            }
        }
        public override void Search()
        {
            if (ResourcePaths.Count > 0)
            {
                return;
            }

            var contracts = ReflectionUtility.GetAllDerivedInstancesOfType <ResourcePathContract>();

            foreach (var contract in contracts)
            {
                if (!_useTestContracts && contract.GetType().GetCustomAttributes(typeof(OnlyIncludeInTestsAttribute), true).Length > 0)
                {
                    continue;
                }

                ResourcePaths.AddRange(contract.GetPaths());
            }
        }
示例#6
0
        /// <summary>
        ///     EnsureSetup will rerun the AddConvention initialization process to create the necessary folder
        ///     desired by the project, tools, and frameworks reliant on it.
        /// </summary>
        public static void EnsureSetup()
        {
            // Initialize any root domain folders and paths
            if (!Directory.Exists(Path.Combine(COCUtility.GetUnityAssetRoot(), COCUtility.GAME_ASSET_ROOT)))
            {
                COCUtility.CreateGameRoot();
            }

            var allCOCDomains = (COCDomain[])Enum.GetValues(typeof(COCDomain));

            foreach (var cocDomain in allCOCDomains)
            {
                var relativeFolderPath = COCUtility.GetGamePath(cocDomain);
                var absoluteFolderPath = Path.Combine(COCUtility.GetUnityAssetRoot(), relativeFolderPath);
                if (!Directory.Exists(absoluteFolderPath))
                {
                    Directory.CreateDirectory(absoluteFolderPath);

                    Debug.LogFormat("[COC] Folder created at \"{0}\"", absoluteFolderPath);
                }

                COCUtility.PreserveFolder(COCUtility.GetGamePath(cocDomain));
            }

            // Set the scripting symbol for COC
            PlayerSettingsUtility.AddScriptingSymbolIfNotDefined(SCRIPTING_SYMBOL);

            // Search through the project for all derived classes of COCProviderBase
            // and add their conventions to the project
            var cocProviders = ReflectionUtility.GetAllDerivedInstancesOfType <COCProviderBase>();

            foreach (var cocProvider in cocProviders)
            {
                cocProvider.AddConventions();
            }

            AssetDatabase.Refresh();
        }