123456789101112131415161718192021222324252627282930313233343536 |
- using System.Linq;
- using UnityEditor.ShaderGraph.Internal;
-
- namespace UnityEditor.ShaderGraph
- {
- static class IConditionalExtensions
- {
- public static bool TestActive(this IConditional conditional, ActiveFields fields)
- {
- // Test FieldCondition against current active Fields
- bool TestFieldCondition(FieldCondition fieldCondition)
- {
- // Required active field is not active
- if (fieldCondition.condition == true && !fields.baseInstance.Contains(fieldCondition.field))
- return false;
-
- // Required non-active field is active
- else if (fieldCondition.condition == false && fields.baseInstance.Contains(fieldCondition.field))
- return false;
-
- return true;
- }
-
- // No FieldConditions
- if (conditional.fieldConditions == null)
- return true;
-
- // One or more FieldConditions failed
- if (conditional.fieldConditions.Where(x => !TestFieldCondition(x)).Any())
- return false;
-
- // All FieldConditions passed
- return true;
- }
- }
- }
|