/// <summary> /// /// </summary> /// <param name="entity"></param> public void SpawnEntity(AbstractEntity entity) { AddMessage(() => { if (!m_entityById.ContainsKey(entity.Id)) { m_entityById.Add(entity.Id, entity); if (m_subInstance) // For npc etc { entity.SetMap(this); } Dispatch(WorldMessage.GAME_MAP_INFORMATIONS(OperatorEnum.OPERATOR_ADD, entity)); AddUpdatable(entity); if (entity.Type == EntityTypeEnum.TYPE_CHARACTER) { InitializeOnFirstPlayerEnter(); m_playerCount++; m_entityByName.Add(entity.Name.ToLower(), entity); AddHandler(entity.Dispatch); SendAllInformations(entity); } } else { Logger.Error("MapInstance::SpawnEntity : an entity with the same id alrezdy exists : " + entity.Name); WorldService.Instance.AddUpdatable(entity); } }); }