public static void Load()
{
if (m_Loaded)
{
return;
}
m_Loaded = true;
log.Info("Loading world");
DateTime start = DateTime.Now;
m_Loading = true;
m_DeleteList = new ArrayList();
LoadEntities();
EventSink.InvokeWorldLoad();
m_Loading = false;
for (int i = 0; i < m_DeleteList.Count; ++i)
{
object o = m_DeleteList[i];
if (o is Item)
{
((Item)o).Delete();
}
else if (o is Mobile)
{
((Mobile)o).Delete();
}
}
m_DeleteList.Clear();
foreach (Item item in m_Items.Values)
{
if (item.Parent == null)
{
item.UpdateTotals();
}
item.ClearProperties();
}
ArrayList list = new ArrayList(m_Mobiles.Values);
foreach (Mobile m in list)
{
m.ForceRegionReEnter(true);
m.UpdateTotals();
m.ClearProperties();
}
log.Info(String.Format("World loaded: {1} items, {2} mobiles ({0:F1} seconds)", (DateTime.Now - start).TotalSeconds, m_Items.Count, m_Mobiles.Count));
}