<ServerManagerConfiguration>
  <!-- Begin CameraProjector -->
  <ProxyGroup name="filters">
    <SourceProxy name="CameraProjector" class="vtkCameraProjector" label="CameraProjector">
      <Documentation
        short_help="Project 3D points into the image using a camera model"
        long_help="Project 3D points into the image using a camera model">
        Project 3D points into the image using a camera model
      </Documentation>

    <InputProperty
      name="Image"
      port_index="0"
      command="SetInputConnection">
      <DataTypeDomain name="input_type">
        <DataType value="vtkImageData"/>
      </DataTypeDomain>
    </InputProperty>

    <InputProperty
      name="PointCloud"
      port_index="1"
      command="SetInputConnection">
      <DataTypeDomain name="input_type">
        <DataType value="vtkPolyData"/>
      </DataTypeDomain>
    </InputProperty>

    <InputProperty
      name="Trajectory"
      port_index="2"
      command="SetInputConnection"
      null_on_empty="1">
      <Hints>
        <Optional />
        <!-- No input selection dialog at instantiation -->
      </Hints>
      <DataTypeDomain name="input_type">
        <DataType value="vtkPolyData"/>
      </DataTypeDomain>
      <Documentation>
        Trajectory (TemporalTransforms) of the sensor that produced the point cloud.
      </Documentation>
    </InputProperty>


    <OutputPort name="Image With Projection" index="0" id="port0" />
    <OutputPort name="Colored Frame" index="1" id="port1" />
    <OutputPort name="Projected Frame" index="2" id="port2" />

    <StringVectorProperty
        name="FileName"
        animateable="0"
        command="SetFileName"
        number_of_elements="1">
        <FileListDomain name="files"/>
        <Documentation>
          This property specifies the file name for camera parameters and model.
        </Documentation>
    </StringVectorProperty>

    <IntVectorProperty name="ProjectedPointSizeInImage"
                       command="SetProjectedPointSizeInImage"
                       number_of_elements="1"
                       default_values="1">
      <Documentation>
        Size of the points in the projected image. If this number is odd then the point is centered around the pixel used, else it is slightly shifted (0.5,0.5) pixels.
      </Documentation>
    </IntVectorProperty>

    <IntVectorProperty name="UseTrajectoryToCorrectPoints"
                       command="SetUseTrajectoryToCorrectPoints"
                       number_of_elements="1"
                       default_values="1">
      <BooleanDomain name="bool"/>
      <Documentation>
        If a trajectory is set as input (id 2) and this is option is enabled, then the trajectory (poses) will be used to undistort the point cloud, and account for the fact that instants of captures are not the same in point cloud and image sensor.
      </Documentation>
    </IntVectorProperty>

    <DoubleVectorProperty name="PipelineTimeToLidarTime"
                       command="SetPipelineTimeToLidarTime"
                       number_of_elements="1"
                       default_values="0">
      <Documentation>
        Timeshift to apply to lidar time to get pipeline time. Used only if a trajectory is provided and if UseTrajectoryToCorrectPoints is set to true.
      </Documentation>
    </DoubleVectorProperty>




    </SourceProxy>
  </ProxyGroup>
  <!-- End CameraProjector -->
</ServerManagerConfiguration>
