Convert ModuleRestockLookAtConstrain into ModuleRestockConstraints

New module is extendable and modular, allowing constraints to be run in the expected order without relying on possibly undefined behavior
This commit is contained in:
2020-01-30 18:37:27 -08:00
parent 073b7d2948
commit 931d891644
12 changed files with 255 additions and 189 deletions

View File

@ -0,0 +1,40 @@
using UnityEngine;
namespace Restock.Constraints
{
[System.Serializable]
public class CopyRotationConstraint : IConstraint
{
private readonly string rotatorsName;
private readonly string targetName;
private readonly bool local = false;
// Cached components
private readonly Transform target;
private readonly Transform rotator;
public CopyRotationConstraint(ConfigNode node, Part p)
{
node.TryGetValue("rotatorsName", ref rotatorsName);
node.TryGetValue("targetName", ref targetName);
rotator = p.FindModelTransform(rotatorsName);
target = p.FindModelTransform(targetName);
}
public void Update()
{
if (rotator == null || target == null) return;
if (local)
{
rotator.localRotation = target.localRotation;
}
else
{
rotator.rotation = target.rotation;
}
}
}
}