コード例 #1
0
ファイル: World.cs プロジェクト: dpisanu/xrunuo
        public static void Load()
        {
            if (Loaded)
            {
                return;
            }

            Loaded = true;

            log.Info("Loading started");

            var start = DateTime.UtcNow;

            Loading = true;

            m_AddQueue    = new Queue <IEntity>();
            m_DeleteQueue = new Queue <IEntity>();

            var strategy = LoadStrategy.Acquire();

            strategy.LoadEntities(m_Repositories);

            EventSink.InvokeWorldLoad();

            Loading = false;

            ProcessSafetyQueues();

            foreach (var item in m_Items.Values)
            {
                if (item.Parent == null)
                {
                    item.UpdateTotals();
                }

                item.ClearProperties();
            }

            foreach (var m in m_Mobiles.Values)
            {
                m.UpdateRegion();                 // Is this really needed?
                m.UpdateTotals();

                m.ClearProperties();
            }

            if (ManualGC)
            {
                GC.Collect();
            }

            log.Info("Loading done: {1} items, {2} mobiles ({0:F1} seconds)", (DateTime.UtcNow - start).TotalSeconds, m_Items.Count, m_Mobiles.Count);
        }
コード例 #2
0
        public void Load()
        {
            if (m_Loaded)
            {
                return;
            }

            m_Loaded = true;

            Console.Write("World: Loading...");

            DateTime start = DateTime.Now;

            m_Loading = true;

            m_AddQueue    = new Queue <IEntity>();
            m_DeleteQueue = new Queue <IEntity>();

            LoadStrategy strategy = LoadStrategy.Acquire();

            strategy.LoadEntities(m_Repositories);

            EventSink.Instance.InvokeWorldLoad();

            m_Loading = false;

            ProcessSafetyQueues();

            foreach (Item item in m_Items.Values)
            {
                if (item.Parent == null)
                {
                    item.UpdateTotals();
                }

                item.ClearProperties();
            }

            foreach (Mobile m in m_Mobiles.Values)
            {
                m.UpdateRegion();                 // Is this really needed?
                m.UpdateTotals();

                m.ClearProperties();
            }

            if (ManualGC)
            {
                System.GC.Collect();
            }

            Console.WriteLine(String.Format("done: {1} items, {2} mobiles ({0:F1} seconds)", (DateTime.Now - start).TotalSeconds, m_Items.Count, m_Mobiles.Count));
        }