@@ -652,13 +652,23 @@ public static void LoadPrefabInfoFile(Mod mod, Mod.File file)
652652 var spriteContainer = unitInstance . transform . GetChild ( 0 ) ;
653653 var material = ClearExistingPartsAndExtractMaterial ( spriteContainer ) ;
654654
655- var visualParts = ApplyVisualParts ( prefab . visualParts , spriteContainer , material , out Transform headMarker ) ;
655+ var visualParts = ApplyVisualParts ( prefab , spriteContainer , material ) ;
656+
657+ Transform ? headPositionMarker = null ;
658+ foreach ( var vp in visualParts )
659+ {
660+ if ( vp . visualPart . gameObject . name == prefab . headPositionMarker )
661+ {
662+ headPositionMarker = vp . visualPart . gameObject . transform ;
663+ break ;
664+ }
665+ }
666+
667+ unitInstance . headPositionMarker = headPositionMarker ?? visualParts [ 0 ] . visualPart . transform ;
656668
657669 var svr = unitInstance . GetComponent < SkinVisualsReference > ( ) ;
658670 svr . visualParts = visualParts . ToArray ( ) ;
659671
660- unitInstance . headPositionMarker = headMarker ;
661-
662672 GameObject . DontDestroyOnLoad ( unitInstance . gameObject ) ;
663673 Registry . unitPrefabs . Add ( prefab , unitInstance . GetComponent < Unit > ( ) ) ;
664674
@@ -700,26 +710,20 @@ public static void LoadPrefabInfoFile(Mod mod, Mod.File file)
700710 /// <param name="material">The material to use for the parts.</param>
701711 /// <returns>A list of the created visual parts.</returns>
702712 private static List < SkinVisualsReference . VisualPart > ApplyVisualParts (
703- List < Visual . VisualPartInfo > partInfos ,
713+ Visual . PrefabInfo prefab ,
704714 Transform spriteContainer ,
705- Material ? material ,
706- out Transform headMarker )
715+ Material ? material )
707716 {
717+ if ( prefab . visualParts . Count == 0 )
718+ return new List < SkinVisualsReference . VisualPart > ( ) ;
719+
708720 List < SkinVisualsReference . VisualPart > parts = new ( ) ;
709- headMarker = spriteContainer ;
710721
711- foreach ( var info in partInfos )
722+ foreach ( var info in prefab . visualParts )
712723 {
713- var vp = CreateVisualPart ( info , spriteContainer , material ) ;
714- if ( info . headPositionMarker )
715- {
716- headMarker = vp . visualPart . transform ;
717- }
718- parts . Add ( vp ) ;
724+ parts . Add ( CreateVisualPart ( info , spriteContainer , material ) ) ;
719725 }
720726
721- if ( headMarker == spriteContainer )
722- headMarker = parts [ 0 ] . visualPart . gameObject . transform ;
723727 return parts ;
724728 }
725729
0 commit comments