Ejemplo n.º 1
0
        public static void SavePreset(string presetName, MaterialProperty[] properties)
        {
            PresetDataConainer container = new PresetDataConainer();

            foreach (var property in properties)
            {
                switch (property.name)
                {
                case ("_Color"): container._ColorR = property.colorValue.r; container._ColorG = property.colorValue.g; container._ColorB = property.colorValue.b; break;

                case ("_RampLevels"): container._RampLevels = property.floatValue; break;

                case ("_LightScalar"): container._LightScalar = property.floatValue; break;

                case ("_HighColor"): container._HighColorR = property.colorValue.r; container._HighColorG = property.colorValue.g; container._HighColorB = property.colorValue.b; break;

                case ("_HighIntensity"): container._HighIntensity = property.floatValue; break;

                case ("_LowColor"): container._LowColorR = property.colorValue.r; container._LowColorG = property.colorValue.g; container._LowColorB = property.colorValue.b; break;

                case ("_LowIntensity"): container._LowIntensity = property.floatValue; break;

                case ("_OutlineColor"): container._OutlineColorR = property.colorValue.r; container._OutlineColorG = property.colorValue.g; container._OutlineColorB = property.colorValue.b; break;

                case ("_OutlineSize"): container._OutlineSize = property.floatValue; break;

                case ("_RimColor"): container._RimColorR = property.colorValue.r; container._RimColorG = property.colorValue.g; container._RimColorB = property.colorValue.b; break;

                case ("_RimAlpha"): container._RimAlpha = property.floatValue; break;

                case ("_RimPower"): container._RimPower = property.floatValue; break;

                case ("_RimDropOff"): container._RimDropOff = property.floatValue; break;

                case ("_FresnelColor"): container._FresnelColorR = property.colorValue.r; container._FresnelColorG = property.colorValue.g; container._FresnelColorB = property.colorValue.b; break;

                case ("_FresnelBrightness"): container._FresnelBrightness = property.floatValue; break;

                case ("_FresnelPower"): container._FresnelPower = property.floatValue; break;

                case ("_FresnelShadowDropoff"): container._FresnelShadowDropoff = property.floatValue; break;

                case ("_GradYCap"): container._GradYCap = property.floatValue; break;

                case ("_GradIntensity"): container._GradIntensity = property.floatValue; break;
                }
            }

            // Serialize container into Json
            string json = JsonUtility.ToJson(container, true);

            // Create the preset directory if it doesn't exist
            if (!Directory.Exists(PresetDirectoryPath))
            {
                Directory.CreateDirectory(PresetDirectoryPath);
            }

            // Write to file
            File.WriteAllText(PresetDirectoryPath + presetName + ".json", json);
        }
Ejemplo n.º 2
0
        public static MaterialProperty[] LoadPreset(string presetName, MaterialProperty[] properties)
        {
            // Check if the preset directory exists
            if (!Directory.Exists(PresetDirectoryPath))
            {
                throw new UnityException("Unable to find presets folder: " + PresetDirectoryPath);
            }

            // Try reading the file
            string json;

            try
            {
                json = File.ReadAllText(PresetDirectoryPath + presetName + ".json");
            }
            catch (FileNotFoundException e)
            {
                throw new UnityException("Unable to find preset file: " + e.FileName);
            }

            // Deserialize Json into container
            PresetDataConainer container = JsonUtility.FromJson <PresetDataConainer>(json);

            // Copy values from container into material properties
            foreach (var property in properties)
            {
                switch (property.name)
                {
                case ("_Color"): property.colorValue = new Color(container._ColorR, container._ColorG, container._ColorB); break;

                case ("_RampLevels"): property.floatValue = container._RampLevels; break;

                case ("_LightScalar"): property.floatValue = container._LightScalar; break;

                case ("_HighColor"): property.colorValue = new Color(container._HighColorR, container._HighColorG, container._HighColorB); break;

                case ("_HighIntensity"): property.floatValue = container._HighIntensity; break;

                case ("_LowColor"): property.colorValue = new Color(container._LowColorR, container._LowColorG, container._LowColorB); break;

                case ("_LowIntensity"): property.floatValue = container._LowIntensity; break;

                case ("_OutlineColor"): property.colorValue = new Color(container._OutlineColorR, container._OutlineColorG, container._OutlineColorB); break;

                case ("_OutlineSize"): property.floatValue = container._OutlineSize; break;

                case ("_RimColor"): property.colorValue = new Color(container._RimColorR, container._RimColorG, container._RimColorB); break;

                case ("_RimAlpha"): property.floatValue = container._RimAlpha; break;

                case ("_RimPower"): property.floatValue = container._RimPower; break;

                case ("_RimDropOff"): property.floatValue = container._RimDropOff; break;

                case ("_FresnelColor"): property.colorValue = new Color(container._FresnelColorR, container._FresnelColorG, container._FresnelColorB); break;

                case ("_FresnelBrightness"): property.floatValue = container._FresnelBrightness; break;

                case ("_FresnelPower"): property.floatValue = container._FresnelPower; break;

                case ("_FresnelShadowDropoff"): property.floatValue = container._FresnelShadowDropoff; break;

                case ("_GradYCap"): property.floatValue = container._GradYCap; break;

                case ("_GradIntensity"): property.floatValue = container._GradIntensity; break;
                }
            }
            return(properties);
        }