public void Remove(MonoBehaviourProperty property, MonoBehaviourPropertyValueWithLocation valueWithLocation) { var value = valueWithLocation.Value.Value; if (value != null) { myUniquePropertyValues.Remove(property, new MonoBehaviorPropertyValueBox(valueWithLocation)); // file changes index var query = new MonoBehaviourPropertyWithFile(property, valueWithLocation.File); var beforeRemoveDifferentValuesCount = myValueCountPerPropertyAndFile.GetOrEmpty(query).Count; myValueCountPerPropertyAndFile.Remove(query, value); var afterRemoveDifferentValuesCount = myValueCountPerPropertyAndFile.GetOrEmpty(query).Count; if (beforeRemoveDifferentValuesCount == 2 && afterRemoveDifferentValuesCount == 1) { myValuesWhichAreUniqueInWholeFile.Add(new MonoBehaviourPropertyWithValue(property, myValueCountPerPropertyAndFile.GetOrEmpty(query).First().Key)); } else if (beforeRemoveDifferentValuesCount == 1 && afterRemoveDifferentValuesCount == 0) { myValuesWhichAreUniqueInWholeFile.Remove(new MonoBehaviourPropertyWithValue(property, value)); } myPropertyFiles.Remove(property, valueWithLocation.File); } myPropertyValues.Remove(property, valueWithLocation); }
public bool Equals(MonoBehaviourPropertyWithFile other) { return(Property.Equals(other.Property) && File.Equals(other.File)); }