/*
 * Copyright (C) 2017 Open Source Robotics Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
*/

syntax = "proto3";
package ignition.msgs;
option java_package = "com.ignition.msgs";
option java_outer_classname = "GeometryProtos";

/// \ingroup ignition.msgs
/// \interface Geometry
/// \brief Information about a geometry element

import "ignition/msgs/header.proto";
import "ignition/msgs/boxgeom.proto";
import "ignition/msgs/cylindergeom.proto";
import "ignition/msgs/spheregeom.proto";
import "ignition/msgs/planegeom.proto";
import "ignition/msgs/imagegeom.proto";
import "ignition/msgs/heightmapgeom.proto";
import "ignition/msgs/meshgeom.proto";
import "ignition/msgs/vector3d.proto";
import "ignition/msgs/polylinegeom.proto";
import "ignition/msgs/conegeom.proto";

message Geometry
{
  enum Type
  {
    BOX          = 0;
    CYLINDER     = 1;
    SPHERE       = 2;
    PLANE        = 3;
    IMAGE        = 4;
    HEIGHTMAP    = 5;
    MESH         = 6;
    TRIANGLE_FAN = 7;
    LINE_STRIP   = 8;
    POLYLINE     = 9;
    CONE         = 10;
    EMPTY        = 11;
    ARROW        = 12;
    AXIS         = 13;
  }

  /// \brief Optional header data
  Header header             = 1;

  Type type                = 2;
  BoxGeom box              = 3;
  CylinderGeom cylinder    = 4;
  PlaneGeom plane          = 5;
  SphereGeom sphere        = 6;
  ImageGeom image          = 7;
  HeightmapGeom heightmap  = 8;
  MeshGeom      mesh       = 9;
  ConeGeom      cone       = 10;

  repeated Vector3d points          = 11;
  repeated Polyline polyline        = 12;
}
