コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
                }
            };
        }