| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | using UnityEngine;using UnityEditor;using System.Linq;namespace HQFPSWeapons.Inventory{	[CustomPropertyDrawer(typeof(DatabaseProperty))]	public class DatabasePropertyDrawer : PropertyDrawer	{		private static string[] m_AllProperties;		public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) 		{			if(property.propertyType != SerializedPropertyType.String)			{				EditorGUI.HelpBox(EditorGUI.IndentedRect(position), "The ItemProperty attribute runs just on strings.", MessageType.Error);				return;			}			if(m_AllProperties == null && ItemDatabase.Default != null)				m_AllProperties = ItemDatabase.Default.GetAllPropertyNames();			if(m_AllProperties != null)				property.stringValue = IndexToString(EditorGUI.Popup(position, label.text, StringToIndex(property.stringValue), m_AllProperties));		}		private int StringToIndex(string s)		{			for(int i = 0;i < m_AllProperties.Length;i ++)			{				if(m_AllProperties[i] == s)					return i;			}			return 0;		}		private string IndexToString(int i)		{			return m_AllProperties.Length > i ? m_AllProperties[i] : "";		}	}}
 |