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(); } }
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++; } }
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 }
public static GenericPreset Create(UnityEngine.Object source, string[] propertyNames) { GenericPreset newPreset = ScriptableObject.CreateInstance <GenericPreset>(); newPreset.Feed(source, propertyNames); return(newPreset); }
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()); }
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); } }
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); }
protected void Update() { if (update) { update = false; Explore(null); } if (preset != null) { if (properties == null) { FromPreset(preset); } preset.ApplyMaterial(material); preset = null; } }
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); } }
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); } } }
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); }