Example #1
0
 private void WriteZBack(WriteBackReferenceValue target)
 {
     if (target.ReferenceTarget is IFloatConverter floatConverter)
     {
         value.z = floatConverter.ConvertToFloat();
     }
 }
Example #2
0
 private void OnReferenceValueChanged(WriteBackReferenceValue target)
 {
     if (target.ReferenceTarget != null && !(target.ReferenceTarget is NullValue))
     {
         return;
     }
     foreach (var(key, _) in _integerValues.Where(e => e.Value == target).ToList())
     {
         _integerValues.Remove(key);
     }
     foreach (var(key, _) in _stringValues.Where(e => e.Value == target).ToList())
     {
         _stringValues.Remove(key);
     }
 }
Example #3
0
        public ReferenceValue Add(SerializableValue name, SerializableValue value, string language = TranslationManager.DefaultLanguage)
        {
            void CheckKeyName(string key)
            {
                if (key == "Length" || key == "ArrayCount" || key == "KeyCount")
                {
                    throw new NotSupportedException("Unable to set value in object: Length/ArrayCount/KeyCount is keyword");
                }
            }

            WriteBackReferenceValue result;

            switch (name)
            {
            case IntegerValue integerMemoryValue:
                if (_integerValues.ContainsKey(integerMemoryValue.value))
                {
                    result = _integerValues[integerMemoryValue.value];
                }
                else
                {
                    result = new WriteBackReferenceValue(_writeBackDelegate)
                    {
                        ReferenceTarget = value
                    };
                    _integerValues.Add(integerMemoryValue.value, result);
                }
                break;

            case StringValue stringMemoryValue:
                CheckKeyName(stringMemoryValue.value);
                if (_stringValues.ContainsKey(stringMemoryValue.value))
                {
                    result = _stringValues[stringMemoryValue.value];
                }
                else
                {
                    result = new WriteBackReferenceValue(_writeBackDelegate)
                    {
                        ReferenceTarget = value
                    };
                    _stringValues.Add(stringMemoryValue.value, result);
                }
                break;

            case IIntegerConverter integerConverter:
                var integerValue = integerConverter.ConvertToInteger(language);
                if (_integerValues.ContainsKey(integerValue))
                {
                    result = _integerValues[integerValue];
                }
                else
                {
                    result = new WriteBackReferenceValue(_writeBackDelegate)
                    {
                        ReferenceTarget = value
                    };
                    _integerValues.Add(integerValue, result);
                }
                break;

            case IStringConverter stringConverter:
                var stringValue = stringConverter.ConvertToString(language);
                CheckKeyName(stringValue);
                if (_stringValues.ContainsKey(stringValue))
                {
                    result = _stringValues[stringValue];
                }
                else
                {
                    result = new WriteBackReferenceValue(_writeBackDelegate)
                    {
                        ReferenceTarget = value
                    };
                    _stringValues.Add(stringValue, result);
                }
                break;

            default:
                var defaultStringValue = name.ToString();
                CheckKeyName(defaultStringValue);
                if (_stringValues.ContainsKey(defaultStringValue))
                {
                    result = _stringValues[defaultStringValue];
                }
                else
                {
                    result = new WriteBackReferenceValue(_writeBackDelegate)
                    {
                        ReferenceTarget = value
                    };
                    _stringValues.Add(defaultStringValue, result);
                }
                break;
            }
            return(result);
        }