#include "ZGo.h"



//---- MakeCamera1 ----------------------------------------------------------------//

//---- MakeCamera1

MakeCamera1::MakeCamera1(ZGo *zgo, ZGoPARAMS *input, ZGoPARAMS *output)
{
  this->zgo = zgo;
  this->input = input->setInput(this);
  this->output = output->setOutput(this);

  this->fnType = new ZGoNAME(zgo, "MakeCamera1");

  //  Parameters

  time = (ZGoREAL *)input->get("time");
  camera = (ZGoCAMERA *)output->get("camera");

  //  Tree data

  float dist = 2.5;

  ZGoREAL *z = new ZGoREAL(zgo);

  new ZGoRealAdd(zgo,
    (new ZGoPARAMS(zgo))->add("a", new ZGoREAL(zgo, -0.5*dist))
                        ->add("b", time),
    (new ZGoPARAMS(zgo))->add("result", z)
  );

  ZGoVECTOR *position = new ZGoVECTOR(zgo);

  new ZGoMakeVector(zgo,
    (new ZGoPARAMS(zgo))->add("x", new ZGoREAL(zgo, 0.25*dist))
                        ->add("y", new ZGoREAL(zgo, 1.75*dist))
                        ->add("z", z),
    (new ZGoPARAMS(zgo))->add("result", position)
  );

  ZGoVECTOR *point_at = new ZGoVECTOR(zgo);

  new ZGoMakeVector(zgo,
    (new ZGoPARAMS(zgo))->add("x", new ZGoREAL(zgo, 0))
                        ->add("y", new ZGoREAL(zgo, 0))
                        ->add("z", time),
    (new ZGoPARAMS(zgo))->add("result", point_at)
  );

  new ZGoPointCamera(zgo,
    (new ZGoPARAMS(zgo))->add("position", position)
                        ->add("point_at", point_at),
    (new ZGoPARAMS(zgo))->add("camera", camera)
  );
}



//---- process

void MakeCamera1::process()
{
}



//---- end of file -----------------------------------------------------------//
