private void WriteZBack(WriteBackReferenceValue target) { if (target.ReferenceTarget is IFloatConverter floatConverter) { value.z = floatConverter.ConvertToFloat(); } }
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); } }
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); }