public void UpdateParam(string key, object val)
        {
            var type = val.GetType();

            if (type.IsEnum)
            {
                type = Enum.GetUnderlyingType(type);
                val  = Convert.ChangeType(val, type);
            }

            TypeAndIdx ti;

            if (_keyToTypeIdx.TryGetValue(key, out ti))
            {
                var iSynList = _typeToSyncList[type];
                iSynList.Set(ti.idx, val);
            }
            else
            {
                if (_typeToSyncList != null)
                {
                    Assert.IsTrue(_typeToSyncList.ContainsKey(type), string.Format("type [{0}] is not supported.", type));

                    var iSynList = _typeToSyncList[type];
                    var idx      = iSynList.Count;
                    iSynList.Add(key, val);
                    _keyToTypeIdx[key] = new TypeAndIdx()
                    {
                        type = type, idx = idx
                    };
                }
            }
        }
Exemple #2
0
        void SendPrefs()
        {
            PrefsParam.all.Values.ToList().ForEach(prefs =>
            {
                var key = prefs.key;
                if (false == _ignoreKeys.Contains(key))
                {
                    var obj = prefs.GetObject();
                    if (obj != null)
                    {
                        var type = prefs.GetInnerType();
                        if (type.IsEnum)
                        {
                            type = typeof(int);
                            obj  = Convert.ToInt32(obj);
                        }

                        TypeAndIdx ti;
                        if (_keyToTypeIdx.TryGetValue(key, out ti))
                        {
                            var iSynList = _typeToSyncList[type];
                            iSynList.Set(ti.idx, obj);
                        }
                        else
                        {
                            Assert.IsTrue(_typeToSyncList.ContainsKey(type), string.Format("type [{0}] is not supported.", type));
                            var iSynList = _typeToSyncList[type];
                            var idx      = iSynList.Count;
                            iSynList.Add(key, obj);
                            _keyToTypeIdx[key] = new TypeAndIdx()
                            {
                                type = type, idx = idx
                            };
                        }
                    }
                }
            });

            _materialPropertyDebugMenuUpdate = MaterialPropertyDebugMenu.update;
        }