protected override RenderScene Apply(SIGProcessingContext context)
    {
        if (!Assert(!target.IsEmpty, "Target can not be empty"))
        {
            return(input);
        }

        var pos = target.Aggregate(Vector3.zero, (p, g) => p + g.transform.position) / target.Count;

        foreach (var gameObject in input)
        {
            var transform = gameObject.transform;
            transform.LookAt(pos, Vector3.up);
            transform.position += transform.forward * zoom;
        }

        return(input);
    }