public void FindAndAddMissingTypes()
        {
            var classCache = new ClassTypeCache();

            classCache.IgnoreAttribute <OnlyIncludeInTestsAttribute>();
            classCache.AddTypeWithAttribute <BaseFieldValidator, ValidatorTargetAttribute>();
            classCache.AddTypeWithAttribute <BaseObjectValidator, ValidatorTargetAttribute>();
            classCache.AddTypeWithAttribute <BaseCrossSceneValidator, ValidatorTargetAttribute>();
            classCache.AddTypeWithAttribute <BaseProjectValidator, ValidatorTargetAttribute>();

            var validatorTargets = classCache.Types.Select(x =>
            {
                var vValidatorAttr = (ValidatorTargetAttribute)x.GetCustomAttributes(typeof(ValidatorTargetAttribute), false)[0];
                return(vValidatorAttr);
            }).ToArray();

            if (OverrideItems == null)
            {
                OverrideItems = new List <OverrideItem>();
            }

            // Remove any missing override items that no longer exist
            for (var i = OverrideItems.Count - 1; i > 0; i--)
            {
                if (validatorTargets.Any(x => x.Symbol == OverrideItems[i].symbol))
                {
                    continue;
                }

                OverrideItems.Remove(OverrideItems[i]);
            }

            for (var i = 0; i < validatorTargets.Length; i++)
            {
                var vValidatorAttr = validatorTargets[i];

                // If we have never cached this type before, create a reference to it by way of symbol
                // Otherwise grab the existing reference and reassign the type.
                if (OverrideItems.All(x => x.symbol != vValidatorAttr.Symbol))
                {
                    var oItem = new OverrideItem()
                    {
                        enabled = true,
                        symbol  = vValidatorAttr.Symbol,
                        type    = classCache[i]
                    };
                    OverrideItems.Add(oItem);
                }
                else
                {
                    var overrideItem = OverrideItems.First(x => x.symbol == vValidatorAttr.Symbol);
                    overrideItem.type = classCache[i];
                }
            }
        }
示例#2
0
        public void tempOverride()
        {
            TemporaryOverride newTempOverride = new TemporaryOverride(cs.MenuGroup);

            newTempOverride.OverrideShortcutKey = "SHIFT+Y"; // Scan code for Y
            newTempOverride.Name        = "Customization Override";
            newTempOverride.Description = "Customization Override";
            newTempOverride.ElementID   = "EID_CUITEMPOVERRIDE";
            // Creating a override for Shift+Y (Key down) that will behave as temporary override for OSnap to endpoint (MM_1629)
            OverrideItem newOverrideItem = new OverrideItem("MM_1629", OverrideKeyState.Down, newTempOverride);

            newTempOverride.DownOverride = newOverrideItem;
        }
        public bool TryGetOverrideConfigItem(Type type, out OverrideItem overrideItem)
        {
            overrideItem = null;

            for (var i = 0; i < OverrideItems.Count; i++)
            {
                if (OverrideItems[i].type == type)
                {
                    overrideItem = OverrideItems[i];
                    return(true);
                }
            }

            return(false);
        }
示例#4
0
        /// <summary>
        /// Try and get an <see cref="OverrideItem"/> for validator <see cref="Type"/> <paramref name="type"/>.
        /// Returns true if found, otherwise false.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="overrideItem"></param>
        /// <returns></returns>
        internal bool TryGetOverrideConfigItem(Type type, out OverrideItem overrideItem)
        {
            overrideItem = null;
            for (var i = 0; i < OverrideItems.Count; i++)
            {
                if (OverrideItems[i].type != type)
                {
                    continue;
                }

                overrideItem = OverrideItems[i];
                return(true);
            }

            return(false);
        }
示例#5
0
        /// <summary>
        /// Iterate through all validator types and ensure an <see cref="OverrideItem"/> exists for each one.
        /// For any that no longer exist, remove these.
        /// </summary>
        internal void FindAndAddMissingTypes()
        {
            var classCache = new ClassTypeCache();

            classCache.IgnoreAttribute <OnlyIncludeInTestsAttribute>();
            classCache.AddTypeWithAttribute <FieldValidatorBase, ValidatorAttribute>();
            classCache.AddTypeWithAttribute <ObjectValidatorBase, ValidatorAttribute>();
            classCache.AddTypeWithAttribute <CrossSceneValidatorBase, ValidatorAttribute>();
            classCache.AddTypeWithAttribute <ProjectValidatorBase, ValidatorAttribute>();

            var validatorTargets = new List <ValidatorAttribute>();

            for (var i = 0; i < classCache.Count; i++)
            {
                var type           = classCache[i];
                var validatorAttrs = type.GetCustomAttributes(
                    typeof(ValidatorAttribute),
                    false)
                                     as ValidatorAttribute[];

                if (validatorAttrs == null || validatorAttrs.Length == 0)
                {
                    Debug.LogWarningFormat(ZeroValidatorAttributesFoundWarning, type.FullName);
                }
                else if (validatorAttrs.Length > 1)
                {
                    Debug.LogWarningFormat(MultipleValidatorAttributesFoundWarning, type.FullName);
                }
                else
                {
                    validatorTargets.Add(validatorAttrs[0]);
                }
            }

            // Remove any missing override items that no longer exist
            for (var i = OverrideItems.Count - 1; i > 0; i--)
            {
                if (validatorTargets.Any(x => x.Symbol == OverrideItems[i].symbol))
                {
                    continue;
                }

                OverrideItems.Remove(OverrideItems[i]);
            }

            for (var i = 0; i < validatorTargets.Count; i++)
            {
                var vValidatorAttr = validatorTargets[i];

                // If we have never cached this type before, create a reference to it by way of symbol
                // Otherwise grab the existing reference and reassign the type.
                if (OverrideItems.All(x => x.symbol != vValidatorAttr.Symbol))
                {
                    var oItem = new OverrideItem
                    {
                        enabled = true,
                        symbol  = vValidatorAttr.Symbol,
                        type    = classCache[i]
                    };
                    OverrideItems.Add(oItem);
                }
                else
                {
                    var overrideItem = OverrideItems.First(x => x.symbol == vValidatorAttr.Symbol);
                    overrideItem.type = classCache[i];
                }
            }
        }