示例#1
0
        public void Should_behave_correctly_when_key_changed()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            entity.Set(42);

            Check.That(map.TryGetEntities(42, out ReadOnlySpan <Entity> result)).IsTrue();
            Check.That(result.ToArray()).ContainsExactly(entity);

            entity.Set(1337);

            Check.That(map.TryGetEntities(42, out result)).IsFalse();
            Check.That(map.TryGetEntities(1337, out result)).IsTrue();
            Check.That(result.ToArray()).ContainsExactly(entity);

            entity.Get <int>() = 42;
            entity.NotifyChanged <int>();

            Check.That(map.TryGetEntities(1337, out result)).IsFalse();
            Check.That(map.TryGetEntities(42, out result)).IsTrue();
            Check.That(result.ToArray()).ContainsExactly(entity);
        }
示例#2
0
        public void Optimize_Should_sort_inner_storages()
        {
            using World world   = new World();
            using EntitySet set = world.GetEntities().With <int>().AsSet();
            using EntitiesMap <bool> map = world.GetEntities().With <int>().AsMultiMap <bool>();

            Entity e1 = world.CreateEntity();
            Entity e2 = world.CreateEntity();
            Entity e3 = world.CreateEntity();
            Entity e4 = world.CreateEntity();

            e4.Set(true);
            e4.Set(4);
            e3.Set(true);
            e3.Set(3);
            e2.Set(true);
            e2.Set(2);
            e1.Set(true);
            e1.Set(1);

            Check.That(set.GetEntities().ToArray()).ContainsExactly(e4, e3, e2, e1);
            Check.That(world.Get <int>().ToArray()).ContainsExactly(4, 3, 2, 1);
            Check.That(map[true].ToArray()).ContainsExactly(e4, e3, e2, e1);

            world.Optimize();

            Check.That(set.GetEntities().ToArray()).ContainsExactly(e1, e2, e3, e4);
            Check.That(world.Get <int>().ToArray()).ContainsExactly(1, 2, 3, 4);
            Check.That(map[true].ToArray()).ContainsExactly(e1, e2, e3, e4);
        }
示例#3
0
        public void TryGetEntities_Should_return_weither_a_key_is_in_or_not()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            Check.That(map.TryGetEntities(42, out ReadOnlySpan <Entity> result)).IsFalse();

            entity.Set(42);

            Check.That(map.TryGetEntities(42, out result)).IsTrue();
            Check.That(result.ToArray()).ContainsExactly(entity);

            entity.Disable <int>();

            Check.That(map.TryGetEntities(42, out result)).IsFalse();

            entity.Enable <int>();

            Check.That(map.TryGetEntities(42, out result)).IsTrue();
            Check.That(result.ToArray()).ContainsExactly(entity);

            entity.Remove <int>();

            Check.That(map.TryGetEntities(42, out result)).IsFalse();
        }
示例#4
0
        public void Keys_Should_return_keys()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            entity.Set(42);

            Check.That(map.Keys as IEnumerable).ContainsExactly(42);

            entity.Remove <int>();

            Check.That(map.Keys).IsEmpty();

            entity.Set(42);

            using IEnumerator <int> enumerator = (map.Keys as IEnumerable <int>)?.GetEnumerator();

            Check.That(enumerator.MoveNext()).IsTrue();
            Check.That(enumerator.Current).IsEqualTo(42);

            enumerator.Reset();

            Check.That(enumerator.MoveNext()).IsTrue();
            Check.That(enumerator.Current).IsEqualTo(42);
        }
示例#5
0
        public void World_Should_return_world()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Check.That(map.World).IsEqualTo(world);
        }
示例#6
0
            internal KeyEnumerator(EntitiesMap <TKey> map)
            {
                _map = map;

                _enumerator = map._entities.GetEnumerator();

                Current = default;
            }
示例#7
0
        public void Dispose_Should_not_throw_When_world_already_disposed()
        {
            World world = new World(4);

            EntitiesMap <int> set = world.GetEntities().AsMultiMap <int>();

            world.Dispose();

            Check.ThatCode(set.Dispose).DoesNotThrow();
        }
示例#8
0
        public void This_Should_return_entities()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            entity.Set(42);

            Check.That(map[42].ToArray()).ContainsExactly(entity);
        }
示例#9
0
 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
     ApplicationSettingMap.Map(modelBuilder.Entity <ApplicationSetting>());
     ApplicationEntitiesMap.Map(modelBuilder.Entity <ApplicationEntities>());
     ApplicationProcessMap.Map(modelBuilder.Entity <ApplicationProcess>());
     ApplicationsMap.Map(modelBuilder.Entity <Applications>());
     DataPropertiesMap.Map(modelBuilder.Entity <DataProperties>());
     DataTypesMap.Map(modelBuilder.Entity <DataTypes>());
     EntitiesMap.Map(modelBuilder.Entity <EF.Entities.Entities>());
     EntityPropertiesMap.Map(modelBuilder.Entity <EntityProperties>());
     EntityRelationshipsMap.Map(modelBuilder.Entity <EntityRelationships>());
     EntityViewMap.Map(modelBuilder.Entity <EntityView>());
     EntityViewEntityPropertiesMap.Map(modelBuilder.Entity <EntityViewEntityProperties>());
     EntityViewPropertiesMap.Map(modelBuilder.Entity <EntityViewProperties>());
     EntityViewPropertyFunctionMap.Map(modelBuilder.Entity <EntityViewPropertyFunction>());
     EntityViewPropertyFunctionParameterMap.Map(modelBuilder.Entity <EntityViewPropertyFunctionParameter>());
     EntityViewViewPropertiesMap.Map(modelBuilder.Entity <EntityViewViewProperties>());
     FunctionBodyMap.Map(modelBuilder.Entity <FunctionBody>());
     FunctionParametersMap.Map(modelBuilder.Entity <FunctionParameters>());
     FunctionReturnTypeMap.Map(modelBuilder.Entity <FunctionReturnType>());
     FunctionsMap.Map(modelBuilder.Entity <Functions>());
     FunctionSetFunctionsMap.Map(modelBuilder.Entity <FunctionSetFunctions>());
     FunctionSetsMap.Map(modelBuilder.Entity <FunctionSets>());
     LayersMap.Map(modelBuilder.Entity <Layers>());
     LayoutMap.Map(modelBuilder.Entity <Layout>());
     ModelTypesMap.Map(modelBuilder.Entity <ModelTypes>());
     OperatorsMap.Map(modelBuilder.Entity <Operators>());
     ParametersMap.Map(modelBuilder.Entity <Parameters>());
     PartsMap.Map(modelBuilder.Entity <Parts>());
     PresentationPropertiesMap.Map(modelBuilder.Entity <PresentationProperties>());
     PrimaryKeyOptionsMap.Map(modelBuilder.Entity <PrimaryKeyOptions>());
     ProcessMap.Map(modelBuilder.Entity <Process>());
     ProcessStepsMap.Map(modelBuilder.Entity <ProcessSteps>());
     ProcessStepScreensMap.Map(modelBuilder.Entity <ProcessStepScreens>());
     ProjectsMap.Map(modelBuilder.Entity <Projects>());
     RelationshipTypesMap.Map(modelBuilder.Entity <RelationshipTypes>());
     ScreenLayoutsMap.Map(modelBuilder.Entity <ScreenLayouts>());
     ScreenPartsMap.Map(modelBuilder.Entity <ScreenParts>());
     ScreensMap.Map(modelBuilder.Entity <Screens>());
     ScreenViewsMap.Map(modelBuilder.Entity <ScreenViews>());
     SettingsMap.Map(modelBuilder.Entity <Settings>());
     SettingsNamesMap.Map(modelBuilder.Entity <SettingsNames>());
     StateMachinesMap.Map(modelBuilder.Entity <StateMachines>());
     StateMachineStatesMap.Map(modelBuilder.Entity <StateMachineStates>());
     StateMachineTriggersMap.Map(modelBuilder.Entity <StateMachineTriggers>());
     StatesMap.Map(modelBuilder.Entity <States>());
     StepsMap.Map(modelBuilder.Entity <Steps>());
     TestValuesMap.Map(modelBuilder.Entity <TestValues>());
     TriggersMap.Map(modelBuilder.Entity <Triggers>());
     ViewEntityMap.Map(modelBuilder.Entity <ViewEntity>());
     ViewsMap.Map(modelBuilder.Entity <Views>());
 }
示例#10
0
        public void Count_Should_return_the_number_of_entities()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            Check.That(map.Count(42)).IsZero();

            entity.Set(42);

            Check.That(map.Count(42)).IsEqualTo(1);
        }
示例#11
0
        public void ContainsKey_Should_return_weither_a_key_is_in_or_not()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            Check.That(map.ContainsKey(42)).IsFalse();

            entity.Set(42);

            Check.That(map.ContainsKey(42)).IsTrue();
        }
示例#12
0
        private HierarchyLevelSetter(World world)
        {
            _map = world.GetEntities().AsMultiMap <Parent>();

            _addedSubscription   = world.SubscribeComponentAdded <Parent>(OnAdded);
            _changedSubscription = world.SubscribeComponentChanged <Parent>(OnChanged);
            _removedSubscription = world.SubscribeComponentRemoved <Parent>(OnRemoved);

            using EntitySet entities = world.GetEntities().With <Parent>().AsSet();

            foreach (ref readonly Entity entity in entities.GetEntities())
            {
                OnAdded(entity, entity.Get <Parent>());
            }
        }
示例#13
0
        public void Keys_Should_return_keys()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            entity.Set(42);

            Check.That(map.Keys.AsEnumerable()).ContainsExactly(42);

            entity.Remove <int>();

            Check.That(map.Keys).IsEmpty();
        }
示例#14
0
        public void Complete_Should_empty_When_reative()
        {
            using World world = new World();

            using EntitiesMap <int> map = world.GetEntities().WhenAddedEither <int>().AsMultiMap <int>();

            Entity entity = world.CreateEntity();

            entity.Set(42);

            Check.That(map.TryGetEntities(42, out ReadOnlySpan <Entity> result)).IsTrue();
            Check.That(result.ToArray()).ContainsExactly(entity);

            map.Complete();

            Check.That(map.TryGetEntities(42, out result)).IsFalse();

            entity.Set(1337);

            Check.That(map.TryGetEntities(42, out result)).IsFalse();
        }
示例#15
0
 internal KeyEnumerable(EntitiesMap <TKey> map)
 {
     _map = map;
 }
示例#16
0
 public System(EntitiesMap <T> map)
     : base(map)
 {
 }
示例#17
0
 public BehaviorSystem(World world, IParallelRunner runner) : base(world, runner)
 {
     _world = world;
     _grid  = world.GetEntities().With <CellId>().With <Velocity>().With <DrawInfo>().AsMultiMap <CellId>();
 }