Folders redirection

This commit is contained in:
TextusGames
2020-05-16 16:28:15 +03:00
parent 0581978db8
commit 925fe29da1
71 changed files with 0 additions and 8 deletions

View File

@ -0,0 +1,14 @@
using System;
using System.Linq;
public static class SerializeReferenceTypeRestrictionFilters
{
public static Func<Type, bool> TypeIsNotSubclassOrEqualOrHasInterface(Type[] types) => type =>
TypeIsSubclassOrEqualOrHasInterface(types).Invoke(type) == false;
public static Func<Type, bool> TypeIsSubclassOrEqualOrHasInterface(Type[] types) => type =>
types.Any(e => e.IsInterface ? TypeHasInterface(type, e) : TypeIsSubclassOrEqual(type, e));
public static bool TypeIsSubclassOrEqual(Type type, Type comparator) => type.IsSubclassOf(comparator) || type == comparator;
public static bool TypeHasInterface(this Type type, Type comparator) => type.GetInterface(comparator.ToString()) != null;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b71802ffed0a18d43901672fcbf668c9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,10 @@
using System;
using UnityEngine;
/// None of this types or interface types are valid.
[AttributeUsage(AttributeTargets.Field)]
public class SerializeReferenceUIRestrictionExcludeTypes : PropertyAttribute
{
public readonly Type[] Types;
public SerializeReferenceUIRestrictionExcludeTypes(params Type[] types) => Types = types;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ff5f6060287437048acba59e670cd000
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,10 @@
using System;
using UnityEngine;
/// Any of this types or interface types are valid. And only this types can be presented.
[AttributeUsage(AttributeTargets.Field)]
public class SerializeReferenceUIRestrictionIncludeTypes : PropertyAttribute
{
public readonly Type[] Types;
public SerializeReferenceUIRestrictionIncludeTypes(params Type[] types) => Types = types;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6d10fb8315984ef458e4129191b17931
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Reflection;
public static class SerializedReferenceUIBuiltInTypeRestrictions
{
public static IEnumerable<Func<Type, bool>> GetAllBuiltInTypeRestrictions(FieldInfo fieldInfo)
{
var result = new List<Func<Type, bool>>();
var attributeObjects = fieldInfo.GetCustomAttributes(false);
foreach (var attributeObject in attributeObjects)
{
switch (attributeObject)
{
case SerializeReferenceUIRestrictionIncludeTypes includeTypes:
result.Add(SerializeReferenceTypeRestrictionFilters.TypeIsSubclassOrEqualOrHasInterface(includeTypes.Types));
continue;
case SerializeReferenceUIRestrictionExcludeTypes excludeTypes:
result.Add(SerializeReferenceTypeRestrictionFilters.TypeIsNotSubclassOrEqualOrHasInterface(excludeTypes.Types));
continue;
}
}
return result;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 95f44dc0cd315cf4988029eb8618aa02
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: