Race offsets and keyframe cloning

This commit is contained in:
AbstractConcept 2022-09-24 14:12:18 -05:00
parent d3b676df06
commit 007e2dd513
135 changed files with 1408 additions and 107 deletions

View file

@ -53,6 +53,38 @@ namespace RimWorldAnimationStudio
{ this.alienRaceDef = alienRaceDef; }
}
public Vector3 GetAlienRaceOffset()
{
if (alienRaceDef == null)
{ alienRaceDef = AlienRaceDefs.GetNamed("Human"); }
AlienRaceOffset raceOffset = raceOffsets.FirstOrDefault(x => x.defName == alienRaceDef.defName);
if (raceOffset == null)
{
raceOffset = new AlienRaceOffset(alienRaceDef.defName);
raceOffsets.Add(raceOffset);
}
return raceOffset.GetOffset();
}
public void SetAlienRaceOffset(Vector2 offset)
{
if (alienRaceDef == null)
{ return; }
AlienRaceOffset raceOffset = raceOffsets.FirstOrDefault(x => x.defName == alienRaceDef.defName);
if (raceOffset == null)
{
raceOffset = new AlienRaceOffset(alienRaceDef.defName);
raceOffsets.Add(raceOffset);
}
raceOffset.SetOffset(offset);
}
public void ValidateData()
{
bodyDefTypes = bodyDefTypes.Intersect(Tags.bodyDefTypes.Concat(CustomTags.bodyDefTypes))?.ToList();

View file

@ -7,7 +7,33 @@ namespace RimWorldAnimationStudio
[Serializable]
public class AlienRaceOffset
{
public string defName;
public Vector2 offset;
public string defName = "Human";
public string offset = "(0, 0)";
public AlienRaceOffset()
{
}
public AlienRaceOffset(string defName)
{
this.defName = defName;
}
public void SetOffset(Vector2 raceOffset)
{
offset = "(" + raceOffset.x + ", " + raceOffset.y + ")";
}
public Vector3 GetOffset()
{
string raceOffset = offset;
raceOffset = raceOffset.Trim();
raceOffset = raceOffset.Replace("(", "");
raceOffset = raceOffset.Replace(")", "");
var raceOffsets = raceOffset.Split(',');
return new Vector3(float.Parse(raceOffsets[0]), 0f, float.Parse(raceOffsets[1]));
}
}
}