public override void DoInspectorGUI()
    {
        if (serializedObject.isEditingMultipleObjects)
        {
            GUI.enabled = false; // no sense to change the name in multiple selection because the name must be unique
            EditorGUI.showMixedValue = true;
            EditorGUILayout.TextField("Exposed Name", "-");
            EditorGUI.showMixedValue = false;
            GUI.enabled = true;
        }
        else
        {
            VFXParameter parameter = (VFXParameter)target;

            GUI.enabled = controller != null;
            string newName = EditorGUILayout.DelayedTextField("Exposed Name", parameter.exposedName);
            GUI.enabled = true;
            if (GUI.changed)
            {
                VFXParameterController parameterController = controller.GetParameterController(parameter);
                if (parameterController != null)
                {
                    parameterController.exposedName = newName;
                }
            }
        }
        base.DoInspectorGUI();
    }
        public void ConvertParameterToInline()
        {
            VFXParameter newParameter = m_ViewController.AddVFXParameter(Vector2.zero, VFXLibrary.GetParameters().First(t => t.model.type == typeof(AABox)));

            m_ViewController.LightApplyChanges();

            VFXParameterController parameterController = m_ViewController.GetParameterController(newParameter);

            parameterController.model.AddNode(new Vector2(123, 456));

            AABox value = new AABox {
                center = new Vector3(1, 2, 3), size = new Vector3(4, 5, 6)
            };

            parameterController.value = value;

            m_ViewController.LightApplyChanges();

            VFXParameterNodeController parameterNode = parameterController.nodes.First();

            parameterNode.ConvertToInline();

            VFXInlineOperator op = m_ViewController.graph.children.OfType <VFXInlineOperator>().First();

            Assert.AreEqual(new Vector2(123, 456), op.position);
            Assert.AreEqual(typeof(AABox), op.type);
            Assert.AreEqual(value, op.inputSlots[0].value);
        }
    public override SerializedProperty DoInspectorGUI()
    {
        var saveEnabled = GUI.enabled;

        var referenceModel = serializedObject.targetObject as VFXModel;
        var resource       = referenceModel.GetResource();

        if (resource != null && !resource.IsAssetEditable())
        {
            GUI.enabled = false;
            saveEnabled = false;
        }

        if (serializedObject.isEditingMultipleObjects)
        {
            GUI.enabled = false; // no sense to change the name in multiple selection because the name must be unique
            EditorGUI.showMixedValue = true;
            EditorGUILayout.TextField("Exposed Name", "-");
            EditorGUI.showMixedValue = false;
            GUI.enabled = saveEnabled;
        }
        else
        {
            VFXParameter parameter = (VFXParameter)target;

            GUI.enabled = controller != null && saveEnabled;
            string newName = EditorGUILayout.DelayedTextField("Exposed Name", parameter.exposedName);
            GUI.enabled = saveEnabled;
            if (GUI.changed)
            {
                VFXParameterController parameterController = controller.GetParameterController(parameter);
                if (parameterController != null)
                {
                    parameterController.exposedName = newName;
                }
            }
        }
        return(base.DoInspectorGUI());
    }