public override IEnumerable <Member> GlmMembers() { if (DisableGlmGen) { yield break; } var ap = string.IsNullOrEmpty(FirstParameter) ? new string[] { } : new[] { FirstParameter }; var ap2 = string.IsNullOrEmpty(FirstParameter) ? "" : FirstParameter.Split(' ').Last() + ", "; BuildComment(false); yield return(new Function(ReturnType, Name + OriginalType.GenericSuffix) { Static = true, Comment = Comment, Parameters = ap.Concat(ParameterNames.Select((p, i) => ParameterTypes[i].NameThat + " " + p)), CodeString = $"{OriginalType.NameThat}.{Name}({ap2 + ParameterNames.CommaSeparated()})" }); // scalar version if (OriginalType is VectorType && ((VectorType)OriginalType).Components == 3 && CanScalar0 && CanScalar1 && CanScalar2) { yield return(new Function(ReturnType.BaseType ?? ReturnType, Name + OriginalType.GenericSuffix) { Static = true, Comment = Comment, Parameters = ap.Concat(ParameterNames.Select((p, i) => (ParameterTypes[i].BaseType ?? ParameterTypes[i]).NameThat + " " + p)), CodeString = string.Format(CompString, ParameterNames.OfType <object>().ToArray()) }); } }