rimworld-animations/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Genes.cs

42 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;
namespace Rimworld_Animations
{
public class AnimationOffset_Genes : BaseAnimationOffset
{
public List<BodyTypeOffset_Genes> offsets;
public override Vector3? getOffset(Pawn pawn)
{
return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.offset ?? offsets.Last().offset;
}
public override int? getRotation(Pawn pawn)
{
return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.rotation ?? offsets.Last().rotation;
}
public override Vector3? getScale(Pawn pawn)
{
return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.scale ?? offsets.Last().scale;
}
public override bool appliesToPawn(Pawn pawn)
{
if (!base.appliesToPawn(pawn)) return false;
return offsets.Any(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef));
}
}
public class BodyTypeOffset_Genes : BodyTypeOffset
{
public GeneDef geneDef;
}
}