{
  "title": "foxglove.LinePrimitive",
  "description": "A primitive representing a series of points connected by lines",
  "$comment": "Generated by https://github.com/foxglove/foxglove-sdk",
  "type": "object",
  "properties": {
    "type": {
      "title": "foxglove.LineType",
      "description": "Drawing primitive to use for lines",
      "oneOf": [
        {
          "title": "LINE_STRIP",
          "const": 0,
          "description": "Connected line segments: 0-1, 1-2, ..., (n-1)-n"
        },
        {
          "title": "LINE_LOOP",
          "const": 1,
          "description": "Closed polygon: 0-1, 1-2, ..., (n-1)-n, n-0"
        },
        {
          "title": "LINE_LIST",
          "const": 2,
          "description": "Individual line segments: 0-1, 2-3, 4-5, ..."
        }
      ]
    },
    "pose": {
      "title": "foxglove.Pose",
      "description": "Origin of lines relative to reference frame",
      "type": "object",
      "properties": {
        "position": {
          "title": "foxglove.Vector3",
          "description": "Point denoting position in 3D space",
          "type": "object",
          "properties": {
            "x": {
              "type": "number",
              "description": "x component"
            },
            "y": {
              "type": "number",
              "description": "y component"
            },
            "z": {
              "type": "number",
              "description": "z component"
            }
          },
          "required": [
            "x",
            "y",
            "z"
          ]
        },
        "orientation": {
          "title": "foxglove.Quaternion",
          "description": "Quaternion denoting orientation in 3D space",
          "type": "object",
          "properties": {
            "x": {
              "type": "number",
              "description": "x value"
            },
            "y": {
              "type": "number",
              "description": "y value"
            },
            "z": {
              "type": "number",
              "description": "z value"
            },
            "w": {
              "type": "number",
              "description": "w value"
            }
          },
          "required": [
            "x",
            "y",
            "z",
            "w"
          ]
        }
      },
      "required": [
        "position",
        "orientation"
      ]
    },
    "thickness": {
      "type": "number",
      "description": "Line thickness"
    },
    "scale_invariant": {
      "type": "boolean",
      "description": "Indicates whether `thickness` is a fixed size in screen pixels (true), or specified in world coordinates and scales with distance from the camera (false)"
    },
    "points": {
      "type": "array",
      "items": {
        "title": "foxglove.Point3",
        "description": "A point representing a position in 3D space",
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "description": "x coordinate position"
          },
          "y": {
            "type": "number",
            "description": "y coordinate position"
          },
          "z": {
            "type": "number",
            "description": "z coordinate position"
          }
        },
        "required": [
          "x",
          "y",
          "z"
        ]
      },
      "description": "Points along the line"
    },
    "color": {
      "title": "foxglove.Color",
      "description": "Solid color to use for the whole line. Ignored if `colors` is non-empty.",
      "type": "object",
      "properties": {
        "r": {
          "type": "number",
          "description": "Red value between 0 and 1"
        },
        "g": {
          "type": "number",
          "description": "Green value between 0 and 1"
        },
        "b": {
          "type": "number",
          "description": "Blue value between 0 and 1"
        },
        "a": {
          "type": "number",
          "description": "Alpha value between 0 and 1"
        }
      },
      "required": [
        "r",
        "g",
        "b",
        "a"
      ]
    },
    "colors": {
      "type": "array",
      "items": {
        "title": "foxglove.Color",
        "description": "A color in RGBA format",
        "type": "object",
        "properties": {
          "r": {
            "type": "number",
            "description": "Red value between 0 and 1"
          },
          "g": {
            "type": "number",
            "description": "Green value between 0 and 1"
          },
          "b": {
            "type": "number",
            "description": "Blue value between 0 and 1"
          },
          "a": {
            "type": "number",
            "description": "Alpha value between 0 and 1"
          }
        },
        "required": [
          "r",
          "g",
          "b",
          "a"
        ]
      },
      "description": "Per-point colors (if non-empty, must have the same length as `points`)."
    },
    "indices": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0
      },
      "description": "Indices into the `points` and `colors` attribute arrays, which can be used to avoid duplicating attribute data.\n\nIf omitted or empty, indexing will not be used. This default behavior is equivalent to specifying [0, 1, ..., N-1] for the indices (where N is the number of `points` provided)."
    }
  },
  "required": [
    "type",
    "pose",
    "thickness",
    "scale_invariant",
    "points",
    "color",
    "colors",
    "indices"
  ]
}
