예제 #1
0
        static object InvokeApplyFiltersMethod(EcsSearcherFilter filter, TypeSearcherItemData data)
        {
            var method = filter.GetType().GetMethod("ApplyFilters",
                                                    BindingFlags.NonPublic | BindingFlags.Instance);

            return(method?.Invoke(filter, new object[] { data }));
        }
예제 #2
0
        public void TestWithSharedComponentData(Type type, bool expectedResult)
        {
            var filter = new EcsSearcherFilter(SearcherContext.Type).WithSharedComponentData(m_Stencil);
            var data   = new TypeSearcherItemData(type.GenerateTypeHandle(m_Stencil), SearcherItemTarget.Type);
            var result = InvokeApplyFiltersMethod(filter, data);

            Assert.AreEqual(expectedResult, result);
        }
예제 #3
0
        void ShowComponentPicker()
        {
            var filter = new EcsSearcherFilter(SearcherContext.Type)
                         .WithComponentData(Model.GraphModel.Stencil, new HashSet <TypeHandle>(Model.GetEditableComponents().Select(c => c.Type)))
                         .WithSharedComponentData(Model.GraphModel.Stencil);

            //Fetch typename
            var stencil = Model.GraphModel.Stencil;

            SearcherService.ShowTypes(stencil, Event.current.mousePosition, (th, _) =>
                                      SetComponentOperation(th, ComponentOperation.ComponentOperationType.AddComponent), filter);
        }
예제 #4
0
        public void TestWithComponentDataWithExclusion()
        {
            var componentDataTypeHandle = typeof(TestComponent).GenerateTypeHandle(m_Stencil);
            var filter = new EcsSearcherFilter(SearcherContext.Type).WithComponentData(m_Stencil, new HashSet <TypeHandle>()
            {
                componentDataTypeHandle
            });
            var data   = new TypeSearcherItemData(componentDataTypeHandle, SearcherItemTarget.Type);
            var result = InvokeApplyFiltersMethod(filter, data);

            Assert.That(result, Is.False);
        }
예제 #5
0
        public void TestWithComponents(Type type, bool expectedResult)
        {
            var components = new List <TypeHandle>
            {
                typeof(Translation).GenerateTypeHandle(m_Stencil),
                typeof(Scale).GenerateTypeHandle(m_Stencil)
            };
            var filter = new EcsSearcherFilter(SearcherContext.Type).WithComponents(components);
            var data   = new TypeSearcherItemData(type.GenerateTypeHandle(m_Stencil), SearcherItemTarget.Type);
            var result = InvokeApplyFiltersMethod(filter, data);

            Assert.AreEqual(expectedResult, result);
        }