public void Start()
    {
        var layout = new UniformPlanarSpread(origin, normal, up, width, height);

        LayoutFactoryDelegate factory = (LayoutObject target) =>
        {
            var animation = new MoveSingle(target.position, target.rotation);
            animation.AnimationCurve = new SineWave(period);
            animation.AnimationTarget = new TargetSingle(target.gameObject);
            return animation;
        };

        AnimationManager.Default.Configure(Streams.STREAM_0, AnimationStreamType.DEFER, 16);
        LayoutManager.Default.Add(Streams.STREAM_0, layout, factory, new TargetByComponent<UniformPlanarSpreadDemoMarker>());
    }
  public void test_layout()
  {
    LayoutManagerTests.Reset(this);

    AnimationManager.Default.Configure(Streams.STREAM_0, AnimationStreamType.DEFER, 30);

    var layout = new UniformPlanarSpread(new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1), 10f, 10f);

    LayoutFactoryDelegate factory = (LayoutObject target) =>
    {
      var animation = new MoveSingle(target.position, target.rotation);
      animation.AnimationCurve = new Linear(1f);
      animation.AnimationTarget = new TargetSingle(target.gameObject);
      return animation;
    };

    var targets = new GameObject[]
    {
      this.SpawnBlank(),
      this.SpawnBlank(),
      this.SpawnBlank(),
      this.SpawnBlank(),
      this.SpawnBlank(),
      this.SpawnBlank(),
    };

    LayoutManager.Default.Add(Streams.STREAM_0, layout, factory, new TargetGroup(targets));

    Assert(AnimationManager.Default.Streams.Active(Streams.STREAM_0));

    int count = 0;
    AnimationManager.Default.Events.AddEventHandler<AnimationCompleteEvent>((evp) => { count += 1; });

    AnimationHandler.Default.Update(0.5f);

    Assert(AnimationManager.Default.Streams.Active(Streams.STREAM_0));

    AnimationHandler.Default.Update(0.5f);
    AnimationHandler.Default.Update(0.5f);

    Assert(!AnimationManager.Default.Streams.Active(Streams.STREAM_0));

    LayoutManagerTests.Reset(this);
  }
 public void RunLayoutThree()
 {
     _.Log("Layout three");
     var layout = new UniformPlanarSpread(target2);
     LayoutManager.Default.Add(Streams.STREAM_0, layout, factory, new TargetByComponent<DemoMarker>());
 }