@@ -107,9 +107,11 @@ namespace RC::UVTD
107107 if (type_record->data .LF_CLASS .property .fwdref ) continue ;
108108
109109 const File::StringType class_name = Symbols::get_leaf_name (type_record->data .LF_CLASS .data , type_record->data .LF_CLASS .lfEasy .kind );
110- if (!names.contains (class_name)) continue ;
110+ auto class_name_final = class_name;
111+ unify_uobject_array_if_needed (class_name_final);
112+ if (!names.contains (class_name_final)) continue ;
111113
112- const auto name_info = names.find (class_name );
114+ const auto name_info = names.find (class_name_final );
113115 if (name_info == names.end ()) continue ;
114116
115117 process_class (tpi_stream, type_record, class_name, name_info->second );
@@ -141,6 +143,8 @@ namespace RC::UVTD
141143 const auto & pdb_base_version = pdb_info.base_version ;
142144 // Use version_no_separator for class names (e.g., "427")
143145 const auto & pdb_name_no_underscore = pdb_info.version_no_separator ;
146+ // Construct filename prefix: base_version + suffix_string (e.g., "4_27" or "4_27_CasePreserving")
147+ auto pdb_filename_prefix = pdb_base_version + pdb_info.get_suffix_string ();
144148
145149 auto template_file = std::format (STR (" MemberVariableLayout_{}_Template.ini" ), pdb_full_name);
146150
@@ -181,9 +185,12 @@ namespace RC::UVTD
181185 continue ;
182186 }
183187
184- // Use full name for file (includes suffix like CasePreserving)
188+ File::StringType final_class_name_clean = class_entry.class_name_clean ;
189+ unify_uobject_array_if_needed (final_class_name_clean);
190+
191+ // Use filename prefix for function body files (base_version + suffix with underscore)
185192 auto default_setter_src_file = member_variable_layouts_gen_function_bodies_path /
186- std::format (STR (" {}_MemberVariableLayout_DefaultSetter_{}.cpp" ), pdb_full_name, class_entry. class_name_clean );
193+ std::format (STR (" {}_MemberVariableLayout_DefaultSetter_{}.cpp" ), pdb_filename_prefix, final_class_name_clean );
187194
188195 Output::send (STR (" Generating file '{}'\n " ), default_setter_src_file.wstring ());
189196
@@ -194,7 +201,10 @@ namespace RC::UVTD
194201 return File::StringType{string};
195202 });
196203
197- ini_dumper.send (STR (" [{}]\n " ), class_entry.class_name );
204+ File::StringType final_class_name = class_entry.class_name ;
205+ unify_uobject_array_if_needed (final_class_name);
206+
207+ ini_dumper.send (STR (" [{}]\n " ), final_class_name);
198208 // Output total size as a comment at the top
199209 ini_dumper.send (STR (" ; Total Size: 0x{:X}\n " ), class_entry.total_size );
200210
@@ -253,10 +263,6 @@ namespace RC::UVTD
253263 final_variable_name = rename_info->mapped_name ;
254264 }
255265
256- // But for code generation, use the internal variable name
257- File::StringType final_class_name = class_entry.class_name ;
258- unify_uobject_array_if_needed (final_class_name);
259-
260266 // Skip if we've already processed this variable to avoid duplicates
261267 if (processed_variables.find (final_variable_name) != processed_variables.end ())
262268 {
@@ -294,7 +300,7 @@ namespace RC::UVTD
294300
295301 // Add UEP_TotalSize to the default setter
296302 {
297- File::StringType total_size_class_name = class_entry. class_name ;
303+ File::StringType total_size_class_name = final_class_name ;
298304 unify_uobject_array_if_needed (total_size_class_name);
299305 default_setter_src_dumper.send (STR (" if (auto it = {}::MemberOffsets.find(STR(\" UEP_TotalSize\" )); it == {}::MemberOffsets.end())\n " ),
300306 total_size_class_name, total_size_class_name);
0 commit comments