/// <summary> /// Add a <see cref="CustomItem"/> to the game.<br /> /// Checks if the custom item is valid and unique and adds it to the list of custom items.<br /> /// Also adds the prefab of the custom item to the <see cref="PrefabManager"/>.<br /> /// Custom items are added to the current <see cref="ObjectDB"/> on every <see cref="ObjectDB.Awake"/>. /// </summary> /// <param name="customItem">The custom item to add.</param> /// <returns>true if the custom item was added to the manager.</returns> public bool AddItem(CustomItem customItem) { if (!customItem.IsValid()) { Logger.LogWarning($"Custom item {customItem} is not valid"); return(false); } if (Items.Contains(customItem)) { Logger.LogWarning($"Custom item {customItem} already added"); return(false); } // Add prefab to the right layer if (customItem.ItemPrefab.layer == 0) { customItem.ItemPrefab.layer = LayerMask.NameToLayer("item"); } // Add prefab to PrefabManager PrefabManager.Instance.AddPrefab(customItem.ItemPrefab); // Add custom item to ItemManager Items.Add(customItem); // Add custom recipe if provided if (customItem.Recipe != null) { AddRecipe(customItem.Recipe); } return(true); }