private void CreateDefaultItem(DefaultItemData defaultItemData) { Item itemAsset = ScriptableObject.CreateInstance <Item>(); string itemSlug = ConvertToSlug(defaultItemData.itemName); // TODO: If the item already exists in the item database, just cancel the whole process. //if(itemDatabase.CheckDatabaseContain(itemSlug)) //{ // // Show pop up dialog Choices[Create new item, Close editor window] // DestroyImmediate(itemAsset); // Debug.Log("Item already exists in database"); // return; //} // Configure new scriptable object itemAsset.itemName = defaultItemData.itemName; itemAsset.itemSlug = itemSlug; itemAsset.itemDescription = defaultItemData.itemDescription; itemAsset.itemValue = defaultItemData.itemValue; itemAsset.itemType = defaultItemData.itemType; itemAsset.rarityType = defaultItemData.rarityType; itemAsset.itemIcon = defaultItemData.itemIcon; // Save new asset. string formattedName = defaultItemData.itemName; if (defaultItemData.itemName.Contains(" ")) { formattedName = defaultItemData.itemName.Replace(' ', '_'); } string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath($"{assetStoragePath}/Item{formattedName}.asset"); AssetDatabase.CreateAsset(itemAsset, assetPathAndName); AddNewItemToDatabase <Item>(itemAsset); AssetDatabase.Refresh(); Selection.activeObject = itemAsset; }
private void ShowDefaultItemEditor() { rootVisualElement.Clear(); var visualTree = Resources.Load <VisualTreeAsset>(defaultItemTreePath); visualTree.CloneTree(rootVisualElement); // Setup default item editor screen Button createItemButton = rootVisualElement.Q(name: "base-item-data-create-button") as Button; TextField itemNameField = rootVisualElement.Q(name: "item-data-name") as TextField; IntegerField itemValueField = rootVisualElement.Q(name: "item-data-value") as IntegerField; TextField itemDescField = rootVisualElement.Q(name: "item-data-desc") as TextField; EnumField itemTypeField = rootVisualElement.Q(name: "item-data-type") as EnumField; itemTypeField.Init(workingItemType); Debug.Log(itemTypeField.childCount); EnumField itemRarityField = rootVisualElement.Q(name: "item-data-rarity") as EnumField; itemRarityField.Init(RarityType.Common); ObjectField itemIconField = rootVisualElement.Q(name: "item-data-icon") as ObjectField; itemIconField.objectType = typeof(Sprite); // Set the object fields type. if (createItemButton != null) { createItemButton.clickable.clicked += () => { DefaultItemData itemData = new DefaultItemData(itemNameField.value, itemDescField.value, itemValueField.value, workingItemType, (RarityType)itemRarityField.value, (Sprite)itemIconField.value); CreateDefaultItem(itemData); }; } }