protected override void OnSPInspectorGUI() { //this.DrawDefaultInspector(); this.serializedObject.Update(); this.DrawPropertyField(EditorHelper.PROP_SCRIPT); var typeProp = this.serializedObject.FindProperty(PROP_SINGLETONTYPE); var label = EditorHelper.TempContent("Singleton Type"); var area = EditorGUILayout.GetControlRect(true, _typeRefDrawer.GetPropertyHeight(typeProp, label)); _typeRefDrawer.OnGUI(area, typeProp, label); var tp = TypeReferencePropertyDrawer.GetTypeFromTypeReference(typeProp); if (tp != null && typeof(IManagedSingleton).IsAssignableFrom(tp)) { this.DrawPropertyField(PROP_CREATEIFNONE); } this.serializedObject.ApplyModifiedProperties(); //DRAW MEMBERS FOR PREVIEW this.DrawTargetMembersPreview(); }
protected override void OnSPInspectorGUI() { this.serializedObject.Update(); var propReflect = this.serializedObject.FindProperty(PROP_REFLECTNAMES); SPEditorGUILayout.PropertyField(propReflect); var propVars = this.serializedObject.FindProperty(PROP_VARIABLES); var lbl_Vars = EditorHelper.TempContent("Variables"); _variablesDrawer.ConfigurePropertyList((TypeReferencePropertyDrawer.GetTypeFromTypeReference(propReflect))); var h = _variablesDrawer.GetPropertyHeight(propVars, lbl_Vars); var r = EditorGUILayout.GetControlRect(true, _variablesDrawer.GetPropertyHeight(propVars, lbl_Vars)); _variablesDrawer.OnGUI(r, propVars, lbl_Vars); this.DrawDefaultInspectorExcept(EditorHelper.PROP_SCRIPT, PROP_REFLECTNAMES, PROP_VARIABLES); this.serializedObject.ApplyModifiedProperties(); }
protected override void OnEnable() { base.OnEnable(); _typeRefDrawer = new TypeReferencePropertyDrawer(); _typeRefDrawer.AllowAbstractTypes = true; _typeRefDrawer.AllowInterfaces = true; _typeRefDrawer.DropDownStyle = TypeDropDownListingStyle.Flat; _typeRefDrawer.SearchPredicate = (tp) => { if (typeof(IManagedSingleton).IsAssignableFrom(tp)) { //managed singletons can't be interfaces/abstract return(!tp.IsInterface && !tp.IsAbstract); } else if (typeof(IService).IsAssignableFrom(tp)) { if (tp == typeof(IService)) { return(false); } //currently only allow interface services be listed //return tp.IsInterface; return(true); } else if (typeof(ISingleton).IsAssignableFrom(tp)) { //standard singletons can't be interfaces/abstract return(!tp.IsInterface && !tp.IsAbstract); } else { return(false); } }; }