mirror of
https://gitgud.io/c0ffeeeeeeee/rimworld-animations.git
synced 2024-08-15 00:43:45 +00:00
Added scale to body type offsets
This commit is contained in:
parent
0b4cca30a2
commit
77874ad5b0
8 changed files with 57 additions and 0 deletions
Binary file not shown.
|
@ -24,6 +24,12 @@ namespace Rimworld_Animations
|
|||
List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
|
||||
return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.rotation ?? pawnOffsets.Last().rotation;
|
||||
}
|
||||
|
||||
public override Vector3? getScale(Pawn pawn)
|
||||
{
|
||||
List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
|
||||
return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.scale ?? pawnOffsets.Last().scale;
|
||||
}
|
||||
}
|
||||
|
||||
public class BodyTypeOffset_AgeRange : BodyTypeOffset
|
||||
|
|
|
@ -23,6 +23,11 @@ namespace Rimworld_Animations
|
|||
{
|
||||
return offsets.Find(x => x.bodyType == pawn.story.bodyType)?.rotation;
|
||||
}
|
||||
|
||||
public override Vector3? getScale(Pawn pawn)
|
||||
{
|
||||
return offsets.Find(x => x.bodyType == pawn.story.bodyType)?.scale;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -40,5 +40,19 @@ namespace Rimworld_Animations
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
public override Vector3? getScale(Pawn pawn)
|
||||
{
|
||||
|
||||
if (pawn.gender == Gender.Female)
|
||||
{
|
||||
return offsetsFemale.Find(x => x.bodyType == pawn.story.bodyType)?.scale;
|
||||
}
|
||||
else
|
||||
{
|
||||
return offsetsMale.Find(x => x.bodyType == pawn.story.bodyType)?.scale;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ namespace Rimworld_Animations
|
|||
|
||||
public Vector3 offset;
|
||||
public int? rotation;
|
||||
public Vector3? scale = Vector3.one;
|
||||
|
||||
public override Vector3? getOffset(Pawn pawn)
|
||||
{
|
||||
|
@ -23,5 +24,10 @@ namespace Rimworld_Animations
|
|||
{
|
||||
return rotation;
|
||||
}
|
||||
|
||||
public override Vector3? getScale(Pawn pawn)
|
||||
{
|
||||
return scale;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,8 @@ namespace Rimworld_Animations
|
|||
|
||||
public abstract int? getRotation(Pawn pawn);
|
||||
|
||||
public abstract Vector3? getScale(Pawn pawn);
|
||||
|
||||
public bool appliesToPawn(Pawn pawn)
|
||||
{
|
||||
return races.Contains(pawn.def);
|
||||
|
|
|
@ -14,5 +14,6 @@ namespace Rimworld_Animations
|
|||
public BodyTypeDef bodyType;
|
||||
public int rotation = 0;
|
||||
public Vector3 offset;
|
||||
public Vector3 scale = Vector3.one;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,6 +87,29 @@ namespace Rimworld_Animations
|
|||
return regularOffsets;
|
||||
}
|
||||
|
||||
public override Vector3 ScaleFor(PawnRenderNode node, PawnDrawParms parms)
|
||||
{
|
||||
Vector3 regularScale = base.ScaleFor(node, parms);
|
||||
|
||||
if ((node.Props as PawnRenderNodeProperties_GraphicVariants)?.propOffsetDef?.offsets is List<BaseAnimationOffset> offsets)
|
||||
{
|
||||
foreach (BaseAnimationOffset offset in offsets)
|
||||
{
|
||||
|
||||
if (offset.appliesToPawn(node.tree.pawn))
|
||||
{
|
||||
|
||||
//modify scale of prop for animationOffset position
|
||||
regularScale = regularScale.MultipliedBy(offset.getScale(node.tree.pawn) ?? Vector3.one);
|
||||
return regularScale;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return regularScale;
|
||||
}
|
||||
|
||||
public override Quaternion RotationFor(PawnRenderNode node, PawnDrawParms parms)
|
||||
{
|
||||
Quaternion rotation = base.RotationFor(node, parms);
|
||||
|
|
Loading…
Reference in a new issue