Exemple #1
0
        public void TestTypeSearcherItemUnityObject()
        {
            var item = new TypeSearcherItem(typeof(Object).GenerateTypeHandle(), "UnityEngine.Object");

            Assert.AreEqual(item.Type, typeof(Object).GenerateTypeHandle());
            Assert.AreEqual(item.Name, "UnityEngine.Object");
        }
Exemple #2
0
        public void TestTypeSearcherItemString()
        {
            var item = new TypeSearcherItem(typeof(string).GenerateTypeHandle(), typeof(string).FriendlyName());

            Assert.AreEqual(item.Type, typeof(string).GenerateTypeHandle());
            Assert.AreEqual(item.Name, typeof(string).FriendlyName());
        }
        void CreateFieldItems(SearcherItem root, Type type, int depth)
        {
            var operators = GetOperatorsFromType(type);

            foreach (var op in operators)
            {
                root.AddChild(op);
            }

            depth--;
            if (depth <= 0)
            {
                return;
            }

            var infos = GetMemberInfos(type);

            foreach (var info in infos)
            {
                var itemType = info.MemberType == MemberTypes.Field
                    ? (info as FieldInfo)?.FieldType
                    : (info as PropertyInfo)?.PropertyType;
                var item = new TypeSearcherItem(itemType.GenerateTypeHandle(m_Stencil), info.Name);

                CreateFieldItems(item, itemType, depth);

                // We only display item with binary operators
                if (item.HasChildren)
                {
                    root.AddChild(item);
                }
            }
        }
Exemple #4
0
        public void TestTypeSearcherItemSystemObject()
        {
            var item = new TypeSearcherItem(typeof(object).GenerateTypeHandle(), "System.Object");

            Assert.AreEqual(item.Type, typeof(object).GenerateTypeHandle());
            Assert.AreEqual(item.Name, "System.Object");
        }
Exemple #5
0
        public void TestTypeSearcherItemString()
        {
            Stencil stencil = ScriptableObject.CreateInstance <TestStencil>();
            var     item    = new TypeSearcherItem(typeof(string).GenerateTypeHandle(stencil), typeof(string).FriendlyName());

            Assert.AreEqual(item.Type, typeof(string).GenerateTypeHandle(stencil));
            Assert.AreEqual(item.Name, typeof(string).FriendlyName());
        }
Exemple #6
0
        public void TestTypeSearcherItemUnityObject()
        {
            Stencil stencil = ScriptableObject.CreateInstance <TestStencil>();
            var     item    = new TypeSearcherItem(typeof(Object).GenerateTypeHandle(stencil), "UnityEngine.Object");

            Assert.AreEqual(item.Type, typeof(Object).GenerateTypeHandle(stencil));
            Assert.AreEqual(item.Name, "UnityEngine.Object");
        }
        internal static TypeSearcherDatabase AddTypesInheritingFrom <T>(this TypeSearcherDatabase self)
        {
            var baseType = typeof(T);

            self.RegisterTypesFromMetadata((items, metadata) =>
            {
                if (!metadata.IsAssignableTo(baseType))
                {
                    return(false);
                }
                var classItem = new TypeSearcherItem(metadata.TypeHandle, metadata.FriendlyName);
                return(items.TryAddClassItem(self.Stencil, classItem, metadata));
            });
            return(self);
        }
        public override TypeSearcherDatabase AddGraphs()
        {
            RegisterTypes(items =>
            {
                var assetGUIDs = AssetDatabase.FindAssets($"t:{typeof(VSGraphAssetModel).Name}");
                var graphs     = assetGUIDs.Select(p =>
                                                   AssetDatabase.LoadAssetAtPath <VSGraphAssetModel>(AssetDatabase.GUIDToAssetPath(p))
                                                   ).Where(x => x.GraphModel?.Stencil.GetType() != typeof(MacroStencil) &&
                                                           x.GraphModel?.Stencil.GetType() != typeof(EcsStencil));

                foreach (var meta in graphs.Select(graph => graph.GenerateTypeHandle(m_Stencil).GetMetadata(m_Stencil)))
                {
                    var graphItem = new TypeSearcherItem(meta.TypeHandle, meta.Name);
                    items.TryAddGraphItem(graphItem, meta);
                }
            });
            return(this);
        }
        public SearcherDatabase Build()
        {
            var items = new List <SearcherItem>();

            foreach (var component in m_Query.Components)
            {
                var handle        = component.Component.TypeHandle;
                var componentItem = new TypeSearcherItem(handle, handle.Name(m_Stencil));
                CreateFieldItems(componentItem, handle.Resolve(m_Stencil), k_Depth);

                // We only display components with fields
                if (componentItem.HasChildren)
                {
                    items.Add(componentItem);
                }
            }

            return(SearcherDatabase.Create(items, "", false));
        }
        public EcsTypeSearcherDatabase AddMonoBehaviourComponents()
        {
            RegisterTypesFromMetadata((items, metadata) =>
            {
                var type = metadata.TypeHandle.Resolve(m_Stencil);
                if (EcsStencil.IsValidGameObjectComponentType(type))
                {
                    var item = new TypeSearcherItem(metadata.TypeHandle, metadata.FriendlyName);
                    var root = "GameObject Components";
                    var path = BuildPath(root, metadata);
                    items.AddAtPath(item, path);

                    return(true);
                }

                return(false);
            });
            return(this);
        }
        public EcsTypeSearcherDatabase AddComponents()
        {
            RegisterTypesFromMetadata((items, metadata) =>
            {
                var type = metadata.TypeHandle.Resolve(m_Stencil);
                if (typeof(IComponentData).IsAssignableFrom(type) ||
                    typeof(ISharedComponentData).IsAssignableFrom(type))
                {
                    var item = new TypeSearcherItem(metadata.TypeHandle, metadata.FriendlyName);
                    var root = typeof(IComponentData).IsAssignableFrom(type) ? "Component Data" : "Shared Component Data";
                    var path = BuildPath(root, metadata);
                    items.AddAtPath(item, path);

                    return(true);
                }

                return(false);
            });
            return(this);
        }