Inheritance: System.ComponentModel.TypeConverter
        private void UpdateIncludeAndExclude()
        {
            ExcludeMember("AssetsRelativeToFile");
            ExcludeMember("EmissionBoundary");
            ExcludeMember("EmissionSettings");
            ExcludeMember("FileName");
            ExcludeMember("ParentSpriteName");
            ExcludeMember("ParticleBlueprint");

            ExcludeMember("RelativeX");
            ExcludeMember("RelativeY");
            ExcludeMember("RelativeZ");




            EnumToString areaEmissionToString = new EnumToString();
            areaEmissionToString.EnumType = typeof(FlatRedBall.Graphics.Particle.Emitter.AreaEmissionType);

            IncludeMember(
                "AreaEmissionType",
                containingType: typeof(EmitterSave),
                typeConverter: areaEmissionToString);


            EnumToString removalEventToString = new EnumToString();
            removalEventToString.EnumType = typeof(FlatRedBall.Graphics.Particle.Emitter.RemovalEventType);
            //EmitterSave es;

            IncludeMember(
                "RemovalEvent",
                containingType: typeof(EmitterSave),
                typeConverter: removalEventToString);
        }
        private void UpdateIncludeAndExclude(EmissionSettingsSave emissionSettings)
        {
            ResetToDefault();

            ExcludeMember("Instructions");

            if (emissionSettings != null)
            {

                var rangeType = emissionSettings.VelocityRangeType;
                if (rangeType != RangeType.Component)
                {
                    ExcludeMember("XVelocity");
                    ExcludeMember("YVelocity");
                    ExcludeMember("ZVelocity");
                    ExcludeMember("XVelocityRange");
                    ExcludeMember("YVelocityRange");
                    ExcludeMember("ZVelocityRange");
                }
                if (rangeType != RangeType.Cone &&
                    rangeType != RangeType.Wedge)
                {
                    ExcludeMember("WedgeAngle");
                    ExcludeMember("WedgeSpread");
                }

                if (rangeType == RangeType.Component)
                {
                    ExcludeMember("RadialVelocity");
                    ExcludeMember("RadialVelocityRange");
                }


                EnumToString blendEnumToString = new EnumToString();
                blendEnumToString.EnumType = typeof(BlendOperation);

                IncludeMember(
                    "BlendOperation",
                    containingType: typeof(EmissionSettingsSave),
                    typeConverter: blendEnumToString);

                EnumToString colorEnumToString = new EnumToString();
                colorEnumToString.EnumType = typeof(ColorOperation);

                IncludeMember(
                    "ColorOperation",
                    containingType: typeof(EmissionSettingsSave),
                    typeConverter: colorEnumToString);


                IncludeMember(
                    "Texture",
                    typeof(string),
                    HandleTextureChanged,
                    () =>
                    {
                        return SettingsSaveInstance.Texture;
                    },
                    null,
                    new Attribute[]
                        {
                            PropertyGridDisplayer.FileWindowAttribute, CategoryAttribute("Texture and Animation")[0]
                        }
                );

                IncludeMember(
                    "AnimationChains",
                    typeof(string),
                    HandleAniimationPathChanged,
                    () =>
                    {
                        return SettingsSaveInstance.AnimationChains;
                    },
                null,
                new Attribute[]
                {
                    PropertyGridDisplayer.FileWindowAttribute, CategoryAttribute("Texture and Animation")[0]
                }
                );
            }
        }