public void TryGetValueWorks_ForMultipleDifferentValues() { var decl = ScriptableObject.CreateInstance <ValueDeclaration>(); var usages = new[] { ScriptableObject.CreateInstance <ValueUsage>(), ScriptableObject.CreateInstance <ValueUsage>(), }; var soDecl = new SerializedObject(decl); var serDecl = new SerializedScalableSetting(soDecl.FindProperty(nameof(ValueDeclaration.intValue))); var soUsage = new SerializedObject(usages); var serUsage = new SerializedScalableSettingValue(soUsage.FindProperty(nameof(ValueUsage.intValue))); // Different level values usages[0].intValue.useOverride = false; usages[0].intValue.level = 1; usages[1].intValue.useOverride = false; usages[1].intValue.level = 2; soUsage.SetIsDifferentCacheDirty(); soUsage.Update(); Assert.True(serUsage.hasMultipleValues); Assert.False(serUsage.TryGetValue(serDecl, out int v)); Assert.AreEqual(default(int), v); Assert.False(serUsage.TryGetValue(decl.intValue, out v)); Assert.AreEqual(default(int), v); // Different use override values usages[0].intValue.useOverride = true; usages[0].intValue.level = 1; usages[1].intValue.useOverride = false; usages[1].intValue.level = 1; soUsage.SetIsDifferentCacheDirty(); soUsage.Update(); Assert.True(serUsage.hasMultipleValues); Assert.False(serUsage.TryGetValue(serDecl, out v)); Assert.AreEqual(default(int), v); Assert.False(serUsage.TryGetValue(decl.intValue, out v)); Assert.AreEqual(default(int), v); // Different override values usages[0].intValue.useOverride = true; usages[0].intValue.@override = 5; usages[1].intValue.useOverride = true; usages[1].intValue.@override = 6; soUsage.SetIsDifferentCacheDirty(); soUsage.Update(); Assert.True(serUsage.hasMultipleValues); Assert.False(serUsage.TryGetValue(serDecl, out v)); Assert.AreEqual(default(int), v); Assert.False(serUsage.TryGetValue(decl.intValue, out v)); Assert.AreEqual(default(int), v); }
public void MixedValueDescriptionGUI( Rect fieldRect, SerializedScalableSettingValue self, GUIContent label, ScalableSetting <bool> sourceValue, string sourceName ) { EditorGUI.LabelField(fieldRect, $"---"); }
public void CustomGUI( Rect fieldRect, SerializedScalableSettingValue self, GUIContent label, ScalableSetting <bool> sourceValue, string sourceName ) { [email protected] = EditorGUI.Toggle(fieldRect, [email protected]); }
public void LevelValueDescriptionGUI( Rect fieldRect, SerializedScalableSettingValue self, GUIContent label, ScalableSetting <int> sourceValue, string sourceName ) { EditorGUI.LabelField(fieldRect, $"{(sourceValue != null ? sourceValue[self.level.intValue] : 0)} ({sourceName})"); }
public void CustomGUI( Rect fieldRect, SerializedScalableSettingValue self, GUIContent label, ScalableSetting <int> sourceValue, string sourceName ) { [email protected] = EditorGUI.IntField(fieldRect, [email protected]); }
public void CustomGUI( Rect fieldRect, SerializedScalableSettingValue self, GUIContent label, ScalableSetting <H> sourceValue, string sourceName ) { // Due to a constraint in the scalability setting, we cannot simply precise the H type as an Enum in the struct declaration. // this shenanigans are not pretty, but we do not fall into a high complexity everytime we want to support a new enum. Enum data = (Enum)Enum.Parse(typeof(H), [email protected]()); [email protected] = (int)(object)EditorGUI.EnumPopup(fieldRect, data); }
public void LevelValueDescriptionGUI( Rect fieldRect, SerializedScalableSettingValue self, GUIContent label, ScalableSetting <bool> sourceValue, string sourceName ) { var enabled = GUI.enabled; GUI.enabled = false; EditorGUI.Toggle(fieldRect, sourceValue != null ? sourceValue[self.level.intValue] : false); fieldRect.x += 25; fieldRect.width -= 25; EditorGUI.LabelField(fieldRect, $"({sourceName})"); GUI.enabled = enabled; }
public void LevelValueDescriptionGUI( Rect fieldRect, SerializedScalableSettingValue self, GUIContent label, ScalableSetting <H> sourceValue, string sourceName ) { var enabled = GUI.enabled; GUI.enabled = false; // See the comment in the function above. var defaultValue = (Enum)(Enum.GetValues(typeof(H)).GetValue(0)); EditorGUI.EnumPopup(fieldRect, sourceValue != null ? (Enum)(object)(sourceValue[self.level.intValue]) : defaultValue); fieldRect.x += 25; fieldRect.width -= 25; GUI.enabled = enabled; }
public void TryGetValueWorks_ForMissingLevelValue() { var decl = ScriptableObject.CreateInstance <ValueDeclaration>(); var usage = ScriptableObject.CreateInstance <ValueUsage>(); usage.intValue.useOverride = false; usage.intValue.level = 10; var soDecl = new SerializedObject(decl); var serDecl = new SerializedScalableSetting(soDecl.FindProperty(nameof(ValueDeclaration.intValue))); var soUsage = new SerializedObject(usage); var serUsage = new SerializedScalableSettingValue(soUsage.FindProperty(nameof(ValueUsage.intValue))); Assert.False(serUsage.TryGetValue(serDecl, out int v)); Assert.AreEqual(default(int), v); Assert.False(serUsage.TryGetValue(decl.intValue, out v)); Assert.AreEqual(default(int), v); }
public void TryGetValueWorks_ForOverrideValue() { var decl = ScriptableObject.CreateInstance <ValueDeclaration>(); var usage = ScriptableObject.CreateInstance <ValueUsage>(); usage.intValue.useOverride = true; usage.intValue.@override = 5; var soDecl = new SerializedObject(decl); var serDecl = new SerializedScalableSetting(soDecl.FindProperty(nameof(ValueDeclaration.intValue))); var soUsage = new SerializedObject(usage); var serUsage = new SerializedScalableSettingValue(soUsage.FindProperty(nameof(ValueUsage.intValue))); Assert.True(serUsage.TryGetValue(serDecl, out int v)); Assert.AreEqual(5, v); Assert.True(serUsage.TryGetValue(decl.intValue, out v)); Assert.AreEqual(5, v); }