public Vector2 LocalToDescendantCoordinates(Actor descendant, Vector2 localCoords)
{
if (Parent == null)
throw new ArgumentException("Child is not a descendant: " + descendant);
if (Parent != this)
localCoords = LocalToDescendantCoordinates(Parent, localCoords);
return descendant.ParentToLocalCoordinates(localCoords);
}