Example #1
0
        /// <summary>
        /// Takes a <paramref name="collection"/> of entities and filters out the ones that must be skipped due to <paramref name="mode"/>
        /// or contains a <seealso cref="IBackgroundBehaviorData"/> with `IsBlocking` set to false.
        /// </summary>
        protected IEnumerable <IEntity> GetBlockingChildren(IEntityCollectionData collection, IMode mode)
        {
            return(collection.GetChildren()
                   .Where(child => mode.CheckIfSkipped(child.GetType()) == false)
                   .Where(child =>
            {
                IDataOwner dataOwner = child as IDataOwner;
                if (dataOwner == null)
                {
                    return true;
                }

                IBackgroundBehaviorData blockingData = dataOwner.Data as IBackgroundBehaviorData;
                return blockingData == null || blockingData.IsBlocking;
            }));
        }
Example #2
0
        public void Update()
        {
            LifeCycle.Update();

            IEntityCollectionData collectionData = Data as IEntityCollectionData;

            if (collectionData == null)
            {
                return;
            }

            foreach (IEntity child in collectionData.GetChildren().Distinct())
            {
                child.Update();
            }
        }
Example #3
0
        public void Configure(TData data, IMode mode, Stage stage)
        {
            IEntityCollectionData collectionData = data as IEntityCollectionData;

            if (collectionData != null)
            {
                foreach (IEntity child in collectionData.GetChildren().Distinct())
                {
                    child.Configure(mode);
                }
            }

            foreach (IConfigurator <TData> configurator in configurators)
            {
                configurator.Configure(data, mode, stage);
            }

            IModeData modeData = data as IModeData;

            if (modeData != null)
            {
                modeData.Mode = mode;
            }
        }