private static Variable ResolveValue(VariableDefinition definition, Variable value, Object errorContext, string invalidError, string variableName) { if (definition.Type == VariableType.Object && definition.Constraint is ObjectConstraint constraint && value.TryGetObject <Object>(out var obj)) { var resolved = obj.GetAsObject(constraint.ObjectType); value = Variable.Object(resolved); } if (definition.Type != VariableType.Empty && !definition.IsValid(value)) { Debug.LogWarningFormat(invalidError, variableName, errorContext, value); } return(value); }