public override void OnInspectorGUI() { myHolder = (KAU.PlayerSystem.IDataHolder)target; if (GUILayout.Button(" Test ")) { myHolder.Test(); return; } if (GUILayout.Button(" Serialize From Aset ")) { myHolder.SerializeDataFromAsset(); return; } DrawPropertiesExcluding(serializedObject, new string[] { "m_Script" }); serializedObject.ApplyModifiedProperties(); }
// Done VIa Reflexion private static void MapToProgressMnager(System.Type[] AllTypes, IDataHolder myHolder, System.Type progressManagerType, Dictionary <System.Type, System.Type> MapTypesTOTYpes) { var typesOfIProgressManagerIntrfaces = (from typeToCheck in AllTypes where progressManagerType.IsAssignableFrom(typeToCheck) select typeToCheck ).ToList(); // foreach (var item in typesOfIProgressManagerIntrfaces) // { // Debug.LogWarning(" InAssignebla From : " + progressManagerType.ToString() + " to " + item.ToString()); // } var ListbaseType = (from typeToCheck in typesOfIProgressManagerIntrfaces where !typeToCheck.IsInterface && !typeToCheck.IsAbstract select typeToCheck ).ToList(); // For Which Type! System.Type baseTypeElem = null; foreach (var item in ListbaseType) { if (myHolder.AllFields.ContainsKey(item)) { baseTypeElem = myHolder.AllFields[item].GetType(); break; } } foreach (var item in typesOfIProgressManagerIntrfaces) { if (item != baseTypeElem) { if (!MapTypesTOTYpes.ContainsKey(item)) { // Debug.LogWarning(" Added : " + item.ToString() + " for : " + baseTypeElem.ToString()); MapTypesTOTYpes.Add(item, baseTypeElem); } else { Debug.Log(" Alredy exists : " + item.ToString() + " For base type : " + baseTypeElem.ToString()); } } } }