Пример #1
0
 public SetMaterialPrefixRecord(string prefix0, bool isPrefix0, int phase0, SetMaterialPrefixDelegate setter0)
 {
     prefix   = prefix0;
     isPrefix = isPrefix0;
     phase    = phase0;
     setter   = setter0;
 }
Пример #2
0
        public static void UpdateMaterial(this Material material, JToken materialData)
        {
            //Debug.Log("BridgeExtensions: Material: UpdateMaterial: material: " + material + " materialData: " + materialData.GetType() + " " + materialData);

            JObject obj = materialData as JObject;

            if (obj == null)
            {
                Debug.LogError("BridgeExtensions: Material: UpdateMaterial: expected object!");
                return;
            }

            // Keys must be handled in order of their phase.

            int phases = 4; // Keep in sync with max phase + 1.

            for (int phase = 0; phase < phases; phase++)
            {
                foreach (JProperty property in obj.Properties())
                {
                    string key        = property.Name;
                    JToken valueToken = (JToken)property.Value;
                    //Debug.Log("BridgeExtensions: Material: phase: " + phase + " Key: " + key);

                    for (int i = 0, n = materialKeyPrefixes.Count; i < n; i++)
                    {
                        if (materialKeyPrefixes[i].phase != phase)
                        {
                            continue;
                        }

                        string keyPrefix = materialKeyPrefixes[i].prefix;

                        if (key.StartsWith(keyPrefix))
                        {
                            string name = key.Substring(keyPrefix.Length);
                            if (!materialKeyPrefixes[i].isPrefix &&
                                (name.Length > 0))
                            {
                                Debug.LogError("BridgeExtensions: UpdateMaterial: key: " + key + " should not have suffix name: " + name);
                            }
                            else
                            {
                                SetMaterialPrefixDelegate setter = materialKeyPrefixes[i].setter;
                                setter(material, name, valueToken);
                            }

                            break;
                        }
                    }
                }
            }
        }