null ref checks in case of missing comps

This commit is contained in:
c0ffee 2021-07-26 19:11:34 -07:00
parent 36caeeda7e
commit a84d6f6a6d
2 changed files with 13 additions and 5 deletions

View File

@ -19,7 +19,7 @@ namespace Rimworld_Animations {
{ {
CompBodyAnimator pawnAnimator = pawn.TryGetComp<CompBodyAnimator>(); CompBodyAnimator pawnAnimator = pawn.TryGetComp<CompBodyAnimator>();
if (!renderFlags.FlagSet(PawnRenderFlags.Portrait) && pawnAnimator.isAnimating && (bodyAddon.drawnInBed || bodyAddon.alignWithHead)) if (pawnAnimator != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && pawnAnimator.isAnimating && (bodyAddon.drawnInBed || bodyAddon.alignWithHead))
{ {
Quaternion headQuatInAnimation = Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up); Quaternion headQuatInAnimation = Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up);
@ -67,16 +67,24 @@ namespace Rimworld_Animations {
{ {
yield return ins[i]; yield return ins[i];
} }
} }
} }
public static bool Prefix(PawnRenderFlags renderFlags, ref Vector3 vector, ref Vector3 headOffset, Pawn pawn, ref Quaternion quat, ref Rot4 rotation) public static bool Prefix(PawnRenderFlags renderFlags, ref Vector3 vector, ref Vector3 headOffset, Pawn pawn, ref Quaternion quat, ref Rot4 rotation)
{ {
if(pawn == null)
{
return true;
}
CompBodyAnimator anim = pawn.TryGetComp<CompBodyAnimator>(); CompBodyAnimator anim = pawn.TryGetComp<CompBodyAnimator>();
if (!renderFlags.FlagSet(PawnRenderFlags.Portrait) && anim.isAnimating)
if(anim == null)
{
return true;
}
if (anim != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && anim.isAnimating)
{ {
quat = Quaternion.AngleAxis(anim.bodyAngle, Vector3.up); quat = Quaternion.AngleAxis(anim.bodyAngle, Vector3.up);
} }