public static ConfigStageRenderingData CreateStageRenderingDataFromMaterials(Material[] mats) { ConfigStageRenderingData data = ScriptableObject.CreateInstance <ConfigStageRenderingData>(); HashSet <string> set = new HashSet <string>(); List <BaseRenderingProperty> list = new List <BaseRenderingProperty>(); foreach (Material material in mats) { foreach (BaseRenderingProperty property in DEFAULT_RENDERING_PROPERTIES) { if (material.HasProperty(property.propertyName) && !set.Contains(property.propertyName)) { if (property is ColorRenderingProperty) { list.Add(new ColorRenderingProperty(property.propertyName, material.GetColor(property.propertyName))); } else if (property is FloatRenderingProperty) { list.Add(new FloatRenderingProperty(property.propertyName, material.GetFloat(property.propertyName), 0f, 100f)); } set.Add(property.propertyName); } } } data.properties = list.ToArray(); return(data); }
public static ConfigStageRenderingData CreateDefault() { ConfigStageRenderingData data = ScriptableObject.CreateInstance <ConfigStageRenderingData>(); data.properties = new BaseRenderingProperty[DEFAULT_RENDERING_PROPERTIES.Length]; for (int i = 0; i < DEFAULT_RENDERING_PROPERTIES.Length; i++) { data.properties[i] = DEFAULT_RENDERING_PROPERTIES[i].Clone(); } return(data); }
public static ConfigStageRenderingData CreateStageRenderingDataFromInstancedProperties(BaseInstancedRenderingProperty[] properties) { ConfigStageRenderingData data = ScriptableObject.CreateInstance <ConfigStageRenderingData>(); HashSet <string> set = new HashSet <string>(); List <BaseRenderingProperty> list = new List <BaseRenderingProperty>(); foreach (BaseInstancedRenderingProperty property in properties) { foreach (BaseRenderingProperty property2 in DEFAULT_RENDERING_PROPERTIES) { if ((Shader.PropertyToID(property2.propertyName) == property.propertyID) && !set.Contains(property2.propertyName)) { list.Add(property.CreateBaseRenderingProperty(property2.propertyName)); set.Add(property2.propertyName); } } } data.properties = list.ToArray(); return(data); }
public static void CompleteStageRenderingDataWithDefault(ConfigStageRenderingData data) { List <BaseRenderingProperty> list = new List <BaseRenderingProperty>(data.properties); foreach (BaseRenderingProperty property in DEFAULT_RENDERING_PROPERTIES) { bool flag = false; foreach (BaseRenderingProperty property2 in data.properties) { if (property.propertyName == property2.propertyName) { flag = true; break; } } if (!flag) { list.Add(property); } } data.properties = list.ToArray(); }