mirror of
				https://gitgud.io/AbstractConcept/rimworld-animations-patch.git
				synced 2024-08-15 00:43:27 +00:00 
			
		
		
		
	v2.0.3
- Fixed a bug that was causing alien addons to not render when pawns were wearing apparel
This commit is contained in:
		
							parent
							
								
									9144029fec
								
							
						
					
					
						commit
						001121649b
					
				
					 11 changed files with 20 additions and 13 deletions
				
			
		
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -138,8 +138,8 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
 | 
			
		||||
        public void UpdateVisibility()
 | 
			
		||||
        {
 | 
			
		||||
            if (pawn == null || bodyAddon == null || bodyPartRecord == null) return;
 | 
			
		||||
            canDraw = true;
 | 
			
		||||
            if (pawn == null || bodyAddon == null || bodyPartRecord == null) return;
 | 
			
		||||
 | 
			
		||||
            if (pawn.health?.hediffSet?.GetNotMissingParts()?.Contains(bodyPartRecord) == false)
 | 
			
		||||
            { bodyPartMissing = true; return; }
 | 
			
		||||
| 
						 | 
				
			
			@ -151,6 +151,7 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
            {
 | 
			
		||||
                CompApparelVisibility comp = apparel?.TryGetComp<CompApparelVisibility>();
 | 
			
		||||
                if (comp == null) continue;
 | 
			
		||||
 | 
			
		||||
                LoadRimNudeData(comp);
 | 
			
		||||
 | 
			
		||||
                if (comp.isBeingWorn == false) continue;
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +159,7 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
                if (bodyAddon.bodyPart == PatchBodyPartDefOf.Genitals ||
 | 
			
		||||
                    bodyAddon.bodyPart == PatchBodyPartDefOf.Anus ||
 | 
			
		||||
                    bodyAddon.bodyPart == PatchBodyPartDefOf.Chest ||
 | 
			
		||||
                    bodyAddon.hediffGraphics?.Any(x => x.path.NullOrEmpty() == false && (x.path.Contains("belly") || x.path.Contains("Belly"))) == true)
 | 
			
		||||
                    bodyAddon.hediffGraphics?.Any(x => x.path.NullOrEmpty() == false && x.path.Contains("belly", StringComparison.OrdinalIgnoreCase)) == true)
 | 
			
		||||
                {
 | 
			
		||||
                    if ((bodyAddon.bodyPart == PatchBodyPartDefOf.Genitals || bodyAddon.bodyPart == PatchBodyPartDefOf.Anus) && comp.coversGroin)
 | 
			
		||||
                    { canDraw = false; return; };
 | 
			
		||||
| 
						 | 
				
			
			@ -166,16 +167,19 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
                    if (bodyAddon.bodyPart == PatchBodyPartDefOf.Chest && comp.coversChest)
 | 
			
		||||
                    { canDraw = false; return; };
 | 
			
		||||
 | 
			
		||||
                    if (bodyAddon.hediffGraphics?.Any(x => x.path.NullOrEmpty() == false && (x.path.Contains("belly") || x.path.Contains("Belly"))) == true && comp.coversBelly)
 | 
			
		||||
                    if (bodyAddon.hediffGraphics?.Any(x => x.path.NullOrEmpty() == false && x.path.Contains("belly", StringComparison.OrdinalIgnoreCase)) == true && comp.coversBelly)
 | 
			
		||||
                    { canDraw = false; return; }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else if (apparel.def.apparel.hatRenderedFrontOfFace || apparel.def.apparel.hatRenderedAboveBody || apparel.def.apparel.hatRenderedBehindHead)
 | 
			
		||||
                { return; }
 | 
			
		||||
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    if (bodyAddon.hiddenUnderApparelFor?.Any(x => apparel?.def.apparel?.hatRenderedFrontOfFace == false && apparel.def.apparel?.bodyPartGroups?.Contains(x) == true) == true)
 | 
			
		||||
                    if (bodyAddon.hiddenUnderApparelFor?.Any(x => apparel.def.apparel.bodyPartGroups?.Contains(x) == true) == true)
 | 
			
		||||
                    { canDraw = false; return; };
 | 
			
		||||
 | 
			
		||||
                    if (bodyAddon.hiddenUnderApparelTag?.Any(x => apparel?.def.apparel?.hatRenderedFrontOfFace == false && apparel.def.apparel?.tags?.Contains(x) == true) == true)
 | 
			
		||||
                    if (bodyAddon.hiddenUnderApparelTag?.Any(x => apparel.def.apparel.tags?.Contains(x) == true) == true)
 | 
			
		||||
                    { canDraw = false; return; };
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,8 +22,8 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
				{
 | 
			
		||||
					if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageIdPlayerFacing == "babies.and.children.continued.13"))
 | 
			
		||||
					{
 | 
			
		||||
						(new Harmony("Rimworld_Animations_Patch")).Patch(AccessTools.Method(typeof(AnimationPatchUtility), "ShouldNotDrawAddonsForPawn"),
 | 
			
		||||
							prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_BabiesAndChildren), "Prefix_ShouldNotDrawAddonsForPawn")));
 | 
			
		||||
						(new Harmony("Rimworld_Animations_Patch")).Patch(AccessTools.Method(typeof(AnimationPatchUtility), "ShouldNotAnimatePawn"),
 | 
			
		||||
							prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_BabiesAndChildren), "Prefix_ShouldNotAnimatePawn")));
 | 
			
		||||
						(new Harmony("Rimworld_Animations_Patch")).Patch(AccessTools.Method(typeof(AnimationPatchUtility), "GetBodySize"),
 | 
			
		||||
							prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_BabiesAndChildren), "Prefix_GetBodySize")));
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
			catch (TypeLoadException) {  }
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static bool Prefix_ShouldNotDrawAddonsForPawn(ref bool __result, Pawn pawn)
 | 
			
		||||
		public static bool ShouldNotAnimatePawn(ref bool __result, Pawn pawn)
 | 
			
		||||
		{		
 | 
			
		||||
			__result = AgeStages.IsYoungerThan(pawn, AgeStages.Child, false);			
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -121,7 +121,7 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
			{ ApparelAnimationUtility.TryToDrawApparelOnFloor(pawn); }
 | 
			
		||||
 | 
			
		||||
			// Exit clauses
 | 
			
		||||
			if (BasicSettings.useLegacyAnimationSystem || AnimationPatchUtility.ShouldNotDrawAddonsForPawn(pawn) || sexDataComp == null)
 | 
			
		||||
			if (BasicSettings.useLegacyAnimationSystem || AnimationPatchUtility.ShouldNotAnimatePawn(pawn) || sexDataComp == null)
 | 
			
		||||
			{ return true; }
 | 
			
		||||
 | 
			
		||||
			// Get available hands
 | 
			
		||||
| 
						 | 
				
			
			@ -141,7 +141,7 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
				if (bodyAddonDatum == null) continue;
 | 
			
		||||
 | 
			
		||||
				// Can draw?
 | 
			
		||||
				bool canDraw = addonGraphic.path.Contains("featureless") == false && addonGraphic.path.Contains("Featureless") == false && bodyAddonDatum.CanDraw();
 | 
			
		||||
				bool canDraw = addonGraphic.path.Contains("featureless", StringComparison.OrdinalIgnoreCase) == false && bodyAddonDatum.CanDraw();
 | 
			
		||||
				bool drawHand = BasicSettings.showHands && handsAvailableCount > 0 && renderFlags.FlagSet(PawnRenderFlags.Portrait) == false;
 | 
			
		||||
 | 
			
		||||
				if (canDraw == false && drawHand == false)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -173,9 +173,9 @@ namespace Rimworld_Animations_Patch
 | 
			
		|||
			return anchor;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static bool ShouldNotDrawAddonsForPawn(Pawn pawn)
 | 
			
		||||
		public static bool ShouldNotAnimatePawn(Pawn pawn)
 | 
			
		||||
		{
 | 
			
		||||
			return false;
 | 
			
		||||
			return pawn.ageTracker.CurLifeStage.developmentalStage == DevelopmentalStage.Baby || pawn.ageTracker.CurLifeStage.developmentalStage == DevelopmentalStage.Child;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static float GetBodySize(Pawn pawn)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue