syntax = "proto3";
package ar.v1;

import "ar/v1/property.proto";
import "geometry/v1/pose.proto";

option csharp_namespace = "Messages.AR.V1";
option go_package = "github.com/cobotar/protocol/messages/ar/v1";

message MarkerLocation {
  string id = 1;
  geometry.v1.LocalizedPose location = 2;
}

message RobotLocation {
  string id = 1;
  geometry.v1.LocalizedPose location = 2;
}

message AssetLocation {
  string id = 1;
  geometry.v1.LocalizedPose location = 2;
}

message PartLocation {
  string id = 1;
  geometry.v1.LocalizedPose location = 2;
}

message ToolLocation {
  string id = 1;
  geometry.v1.LocalizedPose location = 2;
}

enum EnvironmentType {
  ENVIRONMENT_TYPE_UNSPECIFIED = 0;
  ENVIRONMENT_TYPE_STORAGE = 1;
  ENVIRONMENT_TYPE_MANUAL_STATION = 2;
  ENVIRONMENT_TYPE_AUTOMATIC_STATION = 3;
  ENVIRONMENT_TYPE_HYBRID_STATION = 4;
  ENVIRONMENT_TYPE_MANUAL_LINE = 5;
  ENVIRONMENT_TYPE_AUTOMATIC_LINE = 6;
  ENVIRONMENT_TYPE_HYBRID_LINE = 7;
}

message EnvironmentMessage {
  string id = 1;
  string name = 2;
  string icon = 3;
  string description = 4;
  EnvironmentType type = 5;
  repeated MarkerLocation markers = 6; // Markers associated with this environment.
  repeated RobotLocation robots = 7;
  repeated AssetLocation assets = 8;
  repeated PartLocation parts = 9;
  repeated ToolLocation tools = 10;
  repeated ar.v1.Property properties = 11;
}

message EnvironmentsMessage {
  repeated EnvironmentMessage environments = 1;
}
