Exemplo n.º 1
0
        /// <summary>Only call me if you are <see cref="EngineSystemAttribute.NewInstance"/></summary>
        /// <param name="prototype">The <see cref="BlamEngineSystem"/> used to describe this instance</param>
        internal void InitializeForNewInstance(BlamEngineSystem prototype)
        {
            Prototype                = prototype;
            mActiveInBlamEngine      = true;
            mRootBuildHandleBaseline = Prototype.Engine.RootBuildHandle;

            // ReSharper disable once InconsistentlySynchronizedField - method is construction, don't need a lock
            if (Prototype.SystemRequiresReferenceTracking)
            {
                mReferencesByBuildCounts = new Dictionary <EngineBuildHandle, int>();
            }
        }
Exemplo n.º 2
0
        /// <summary>Create a new instance of the system. Only call me if you are <see cref="BlamEngine"/>!</summary>
        /// <param name="prototype"></param>
        /// <returns></returns>
        internal EngineSystemBase NewInstance(BlamEngineSystem prototype)
        {
            Contract.Requires(prototype != null);
            Contract.Assert(mFactoryMethod != null, "Rerun engine unit tests");

            var system = mFactoryMethod();

            Contract.Assert(system != null);

            system.InitializeForNewInstance(prototype);
            return(system);
        }