1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using UnityEngine;
- using UnityEditor;
- namespace HQFPSWeapons.Inventory
- {
- [CustomPropertyDrawer(typeof(DatabaseItem))]
- public class DatabaseItemDrawer : PropertyDrawer
- {
- private string[] m_AllItems;
- private string[] m_AllItemsFull;
- public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
- {
- if(property.propertyType != SerializedPropertyType.String)
- EditorGUI.HelpBox(position, "The Item attribute runs just on strings.", MessageType.Error);
- if(m_AllItems == null && ItemDatabase.Default != null)
- {
- m_AllItems = ItemDatabase.Default.GetAllItemNames().ToArray();
- m_AllItemsFull = ItemDatabase.Default.GetAllItemNamesFull().ToArray();
- }
- if(m_AllItems != null)
- property.stringValue = IndexToString(EditorGUI.Popup(position, label.text, StringToIndex(property.stringValue), m_AllItemsFull));
- }
- private int StringToIndex(string s)
- {
- for(int i = 0;i < m_AllItems.Length;i ++)
- {
- if(m_AllItems[i] == s)
- return i;
- }
-
- return 0;
- }
- private string IndexToString(int i)
- {
- return m_AllItems.Length > i ? m_AllItems[i] : "";
- }
- }
- }
|