Fixed list length search

This commit is contained in:
mm00
2025-03-04 18:03:40 +01:00
parent 0dccefb7e4
commit b100dc8020
2 changed files with 7 additions and 4 deletions

View File

@@ -247,11 +247,14 @@ namespace CodeGenerator {
//Cast to array the fields to avoid multiple enumerations
var dnaFields = fields as BlendFile.DnaField[] ?? fields.ToArray();
foreach (var field in dnaFields) {
if (ListMarkerStr.Any(s => field.Name.Contains(s))) {
if (ListMarkerStr.Any(s => field.Name.Contains(s)) &&
!ListLenghtStr.Any(s2 => field.Name.Contains(s2))) {
Log($"Found list field {field.Name}");
Log($"Searching for list length field");
var listLengthField = dnaFields.FirstOrDefault(f =>
f.Name.Contains(field.Name) && ListLenghtStr.Any(s => f.Name.Contains(s)));
var listLengthField = dnaFields.FirstOrDefault(f => f.Name.Contains(field.Name.ParseFName()) &&
ListLenghtStr.Any(s2 => f.Name.Contains(s2)));
if (listLengthField == null)
Log($"No list length field found for {field.Name}");

View File

@@ -4,7 +4,7 @@ namespace CodeGenerator {
public static class StrExt {
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static string ParseFName(this string str) {
str = str.Replace("*", "ptr_");
str = str.Replace("*", "");
return str;
}