void BuildGpuInstancingField(PropertySheet propertySheet, AbstractShaderProperty property)
        {
            var toggleDataPropertyDrawer = new ToggleDataPropertyDrawer();

            propertySheet.Add(toggleDataPropertyDrawer.CreateGUI(newValue =>
            {
                this._preChangeValueCallback("Change Hybrid Instanced Toggle");
                property.gpuInstanced = newValue.isOn;
                this._postChangeValueCallback(false, ModificationScope.Graph);
            }, new ToggleData(property.gpuInstanced), "Hybrid Instanced (experimental)", out var gpuInstancedToggle));

            gpuInstancedToggle.SetEnabled(property.isGpuInstanceable);
        }
        void BuildBooleanKeywordField(PropertySheet propertySheet, ShaderKeyword keyword)
        {
            var toggleDataPropertyDrawer = new ToggleDataPropertyDrawer();

            propertySheet.Add(toggleDataPropertyDrawer.CreateGUI(
                                  newValue =>
            {
                this._preChangeValueCallback("Change property value");
                keyword.value = newValue.isOn ? 1 : 0;
                this._postChangeValueCallback(false, ModificationScope.Graph);
            },
                                  new ToggleData(keyword.value == 1),
                                  "Default",
                                  out var boolKeywordField));
        }
        void HandleBooleanProperty(PropertySheet propertySheet, BooleanShaderProperty booleanProperty)
        {
            var toggleDataPropertyDrawer = new ToggleDataPropertyDrawer();

            propertySheet.Add(toggleDataPropertyDrawer.CreateGUI(
                                  newValue =>
            {
                this._preChangeValueCallback("Change property value");
                this._changeValueCallback(newValue);
                this._postChangeValueCallback();
            },
                                  new ToggleData(booleanProperty.value),
                                  "Default",
                                  out var propertyToggle));
        }
 void BuildExposedField(PropertySheet propertySheet)
 {
     if (!isSubGraph)
     {
         var toggleDataPropertyDrawer = new ToggleDataPropertyDrawer();
         propertySheet.Add(toggleDataPropertyDrawer.CreateGUI(
                               evt =>
         {
             this._preChangeValueCallback("Change Exposed Toggle");
             this._exposedFieldChangedCallback(evt.isOn);
             this._postChangeValueCallback(false, ModificationScope.Graph);
         },
                               new ToggleData(shaderInput.generatePropertyBlock),
                               "Exposed",
                               out var propertyToggle));
         propertyToggle.SetEnabled(shaderInput.isExposable);
     }
 }