Beispiel #1
0
    protected void Update()
    {
        if (savePreset)
        {
            savePreset = false;
            CreatePreset();
        }

        if (preset != null)
        {
            if (target is MaterialExplorer)
            {
                MaterialExplorer matTarget = ( MaterialExplorer )target;
                if (matTarget.properties == null || matTarget.properties.Count != preset.properties.Count)
                {
                    matTarget.FromPreset(preset);
                }
                preset.ApplyMaterial(matTarget.material);
            }
            else
            {
                preset.Apply(target);
            }

            preset = null;
        }

        int numPresets = lerpPresets.Length;

        if (numPresets > 1)
        {
            LerpPresets();
        }
    }
Beispiel #2
0
    private void LerpPresets()
    {
        if (m_LerpPresetStore == null)
        {
            m_LerpPresetStore = ScriptableObject.CreateInstance <GenericPreset> ();
        }

        int numPresets = lerpPresets.Length;

        if (m_LerpPresetIndex >= numPresets)
        {
            m_LerpPresetIndex = 0;
        }

        int nextIndex = m_LerpPresetIndex + 1 < numPresets ? m_LerpPresetIndex + 1: 0;

        if (lerpPresets [m_LerpPresetIndex] != null && lerpPresets [nextIndex] != null)
        {
            GenericPreset.Lerp(lerpPresets [m_LerpPresetIndex], lerpPresets [nextIndex], Mathf.Sin(Time.time * .2f) * .5f + .5f, m_LerpPresetStore);

            if (target is MaterialExplorer)
            {
                m_LerpPresetStore.ApplyMaterial((( MaterialExplorer )target).material);
            }
            else
            {
                m_LerpPresetStore.Apply(target);
            }

            m_LerpPresetIndex++;
        }
    }
Beispiel #3
0
    private void CreatePreset()
    {
#if UNITY_EDITOR
        GenericPreset newPreset = target is MaterialExplorer?
                                  GenericPreset.Create(((MaterialExplorer)target).properties) :
                                      GenericPreset.Create(target, GetPropertyNames(propertiesCSV));

        string path = presetsPath + "/Presets";
        if (!AssetDatabase.IsValidFolder(path))
        {
            AssetDatabase.CreateFolder(presetsPath, "Presets");
        }

        string        newName  = string.IsNullOrEmpty(newPresetName) ? "Generic" + DateTime.Now.Ticks : newPresetName;
        string        fullPath = path + "/" + newName + ".asset";
        GenericPreset existing = AssetDatabase.LoadAssetAtPath <GenericPreset> (fullPath);

        if (existing != null)
        {
            fullPath = path + "/" + newName + "_" + DateTime.Now.Ticks + ".asset";
        }

        AssetDatabase.CreateAsset(newPreset, fullPath);
#endif
    }
Beispiel #4
0
    public static GenericPreset Create(UnityEngine.Object source, string[] propertyNames)
    {
        GenericPreset newPreset = ScriptableObject.CreateInstance <GenericPreset>();

        newPreset.Feed(source, propertyNames);
        return(newPreset);
    }
Beispiel #5
0
    public void FromPreset(GenericPreset source)
    {
        properties = new List <GenericPreset.Property> ();

        foreach (GenericPreset.Property property in source.properties)
        {
            properties.Add(property.Clone());
        }

        Debug.LogFormat("FromPreset {0}", properties.ArrayToString());
    }
Beispiel #6
0
    public static IEnumerator TransitionFromToCoroutine(object originData, GenericPreset goal, MonoBehaviour target, float duration, UnityAction onCompleted = null, GenericPreset store = null)
    {
        GenericPreset origin = null;

        if (originData == null && target is MaterialExplorer)
        {
            origin = GenericPreset.Create((( MaterialExplorer )target).Explore(goal));
        }

        if (originData is string [])
        {
            GenericPreset.Create(target, originData as string []);
        }

        if (store == null)
        {
            store = ScriptableObject.CreateInstance <GenericPreset> ();
        }


        float startTime = Time.time;
        float t         = 0f;

        while (t < 1f)
        {
            //Debug.LogFormat ( "Transition generic preset {0}", t );

            GenericPreset.Lerp(origin, goal, t, store);
            t = (Time.time - startTime) / duration;

            if (target is MaterialExplorer)
            {
                store.ApplyMaterial((( MaterialExplorer )target).material);
            }
            else
            {
                store.Apply(target);
            }

            yield return(new WaitForFixedUpdate());
        }

        if (target is MaterialExplorer)
        {
            store.ApplyMaterial((( MaterialExplorer )target).material);
        }
        else
        {
            store.Apply(target);
        }
    }
Beispiel #7
0
    public static GenericPreset Create(List <Property> properties)
    {
        GenericPreset newPreset = ScriptableObject.CreateInstance <GenericPreset>();

        if (newPreset.properties == null)
        {
            newPreset.properties = new List <Property> (properties.Count);
        }

        foreach (Property property in properties)
        {
            if (property.type != PType.Null)
            {
                newPreset.properties.Add(property.Clone());
            }
        }

        return(newPreset);
    }
Beispiel #8
0
    protected void Update()
    {
        if (update)
        {
            update = false;
            Explore(null);
        }

        if (preset != null)
        {
            if (properties == null)
            {
                FromPreset(preset);
            }

            preset.ApplyMaterial(material);

            preset = null;
        }
    }
Beispiel #9
0
    protected void Start()
    {
        values           = GenericPreset.Create(target, GenericPresetsUtil.GetPropertyNames(propertiesCSV));
        presetProperties = new PresetProperties {
            p = values.properties
        };

        firebase = FirebaseManager.Instance;

        if (firebase == null)
        {
            firebase = gameObject.AddComponent <FirebaseManager> ();
            FirebaseManager.IsAdmin = true;
            firebase.id             = "default";
        }

        if (firebase != null)
        {
            firebase.ExecuteOnInitialisation(OnFirebaseReady);
        }
    }
Beispiel #10
0
    public static void Lerp(GenericPreset a, GenericPreset b, float t, GenericPreset store)
    {
        if (store.properties == null)
        {
            store.properties = new List <Property> ();
        }

        foreach (Property propA in a.properties)
        {
            Property propB = b.Find(propA.key);
            if (propB != null)
            {
                Property propStore = store.Find(propA.key);
                if (propStore == null)
                {
                    propStore = new Property(propA.key, propA.type);
                    store.properties.Add(propStore);
                }

                propStore.Value = Property.Lerp(propA, propB, t);
            }
        }
    }
Beispiel #11
0
    public List <GenericPreset.Property> Explore(GenericPreset template)
    {
        Shader shader = material.shader;

        if (Application.isEditor && template == null)
        {
#if UNITY_EDITOR
            int numProperties = ShaderUtil.GetPropertyCount(shader);

            if (properties == null)
            {
                properties = new List <GenericPreset.Property> (numProperties);
            }
            else
            {
                properties.Clear();
            }

            for (int i = 0; i < numProperties; i++)
            {
                string propertyName = ShaderUtil.GetPropertyName(shader, i);
                ShaderUtil.ShaderPropertyType type = ShaderUtil.GetPropertyType(shader, i);

                GenericPreset.Property property = new GenericPreset.Property(propertyName, GenericPreset.PType.Null);

                switch (type)
                {
                case ShaderUtil.ShaderPropertyType.Float:
                case ShaderUtil.ShaderPropertyType.Range:
                    property = new GenericPreset.Property(propertyName, material.GetFloat(propertyName));
                    break;

                case ShaderUtil.ShaderPropertyType.Vector:
                    property = new GenericPreset.Property(propertyName, ( Vector3 )material.GetVector(propertyName));
                    break;

                case ShaderUtil.ShaderPropertyType.Color:
                    property = new GenericPreset.Property(propertyName, material.GetColor(propertyName));
                    break;
                }

                properties.Add(property);
            }

            return(properties);
#endif
        }

        if (properties == null && template == null)
        {
            return(null);
        }

        if (properties == null || properties.Count != template.properties.Count)
        {
            FromPreset(template);
        }

        foreach (GenericPreset.Property property in properties)
        {
            string propertyName = property.key;

            switch (property.type)
            {
            case GenericPreset.PType.Number:
                property.Value = material.GetFloat(propertyName);
                break;

            case GenericPreset.PType.V3:
                property.Value = material.GetVector(propertyName);
                break;

            case GenericPreset.PType.Color:
                property.Value = material.GetColor(propertyName);
                break;
            }
        }

        return(properties);
    }