private void AddChangesPerFile(MonoBehaviourField monoBehaviourField, InspectorVariableUsage variableUsage) { var beforeAddDifferentValuesCount = myValueCountPerPropertyAndFile.GetOrEmpty(monoBehaviourField).Count; if (beforeAddDifferentValuesCount == 0) { myValueCountPerPropertyAndFile.Add(monoBehaviourField, variableUsage.Value.GetHashCode()); var fieldWithValue = new MonoBehaviourFieldWithValue(new MonoBehaviourField(monoBehaviourField.ScriptGuid, monoBehaviourField.NameHash), variableUsage.Value.GetHashCode()); myValuesWhichAreUniqueInWholeFile.Add(fieldWithValue); } else if (beforeAddDifferentValuesCount == 1) { var previousValue = myValueCountPerPropertyAndFile.GetOrEmpty(monoBehaviourField).First().Key; myValueCountPerPropertyAndFile.Add(monoBehaviourField, variableUsage.Value.GetHashCode()); var afterAddDifferentValuesCount = myValueCountPerPropertyAndFile.GetOrEmpty(monoBehaviourField).Count; if (afterAddDifferentValuesCount == 2) { var fieldWithValue = new MonoBehaviourFieldWithValue(new MonoBehaviourField(monoBehaviourField.ScriptGuid, monoBehaviourField.NameHash), previousValue); myValuesWhichAreUniqueInWholeFile.Remove(fieldWithValue); } } else { myValueCountPerPropertyAndFile.Add(monoBehaviourField, variableUsage.Value.GetHashCode()); } }
private void RemoveChangesPerFile(MonoBehaviourField monoBehaviourField, InspectorVariableUsage variableUsage) { var beforeRemoveDifferentValuesCount = myValueCountPerPropertyAndFile.GetOrEmpty(monoBehaviourField).Count; myValueCountPerPropertyAndFile.Remove(monoBehaviourField, variableUsage.Value); var afterRemoveDifferentValuesCount = myValueCountPerPropertyAndFile.GetOrEmpty(monoBehaviourField).Count; if (beforeRemoveDifferentValuesCount == 2 && afterRemoveDifferentValuesCount == 1) { var uniqueValue = myValueCountPerPropertyAndFile.GetOrEmpty(monoBehaviourField).First().Key; var fieldWithValue = new MonoBehaviourFieldWithValue(new MonoBehaviourField(monoBehaviourField.ScriptGuid, monoBehaviourField.Name), uniqueValue); myValuesWhichAreUniqueInWholeFile.Add(fieldWithValue); } else if (beforeRemoveDifferentValuesCount == 1 && afterRemoveDifferentValuesCount == 0) { var fieldWithValue = new MonoBehaviourFieldWithValue(new MonoBehaviourField(monoBehaviourField.ScriptGuid, monoBehaviourField.Name), variableUsage.Value); myValuesWhichAreUniqueInWholeFile.Remove(fieldWithValue); } }
protected bool Equals(MonoBehaviourFieldWithValue other) { return(Equals(myField, other.myField) && Equals(myValueHash, other.myValueHash)); }