// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ImageMarker {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub ros2_header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(string, tag = "3")]
    pub ns: ::prost::alloc::string::String,
    #[prost(int32, tag = "4")]
    pub id: i32,
    #[prost(int32, tag = "5")]
    pub r#type: i32,
    #[prost(int32, tag = "6")]
    pub action: i32,
    #[prost(message, optional, tag = "7")]
    pub position: ::core::option::Option<super::super::geometry_msgs::msg::Point>,
    #[prost(float, tag = "8")]
    pub scale: f32,
    #[prost(message, optional, tag = "9")]
    pub outline_color: ::core::option::Option<super::super::std_msgs::msg::ColorRgba>,
    #[prost(uint32, tag = "10")]
    pub filled: u32,
    #[prost(message, optional, tag = "11")]
    pub fill_color: ::core::option::Option<super::super::std_msgs::msg::ColorRgba>,
    #[prost(message, optional, tag = "12")]
    pub lifetime: ::core::option::Option<
        super::super::builtin_interfaces::msg::Duration,
    >,
    #[prost(message, repeated, tag = "13")]
    pub points: ::prost::alloc::vec::Vec<super::super::geometry_msgs::msg::Point>,
    #[prost(message, repeated, tag = "14")]
    pub outline_colors: ::prost::alloc::vec::Vec<super::super::std_msgs::msg::ColorRgba>,
}
impl ::prost::Name for ImageMarker {
    const NAME: &'static str = "ImageMarker";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.ImageMarker".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.ImageMarker".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MeshFile {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub filename: ::prost::alloc::string::String,
    #[prost(uint32, repeated, tag = "3")]
    pub data: ::prost::alloc::vec::Vec<u32>,
}
impl ::prost::Name for MeshFile {
    const NAME: &'static str = "MeshFile";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.MeshFile".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.MeshFile".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UvCoordinate {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(float, tag = "2")]
    pub u: f32,
    #[prost(float, tag = "3")]
    pub v: f32,
}
impl ::prost::Name for UvCoordinate {
    const NAME: &'static str = "UVCoordinate";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.UVCoordinate".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.UVCoordinate".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Marker {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub ros2_header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(string, tag = "3")]
    pub ns: ::prost::alloc::string::String,
    #[prost(int32, tag = "4")]
    pub id: i32,
    #[prost(int32, tag = "5")]
    pub r#type: i32,
    #[prost(int32, tag = "6")]
    pub action: i32,
    #[prost(message, optional, tag = "7")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::Pose>,
    #[prost(message, optional, tag = "8")]
    pub scale: ::core::option::Option<super::super::geometry_msgs::msg::Vector3>,
    #[prost(message, optional, tag = "9")]
    pub color: ::core::option::Option<super::super::std_msgs::msg::ColorRgba>,
    #[prost(message, optional, tag = "10")]
    pub lifetime: ::core::option::Option<
        super::super::builtin_interfaces::msg::Duration,
    >,
    #[prost(bool, tag = "11")]
    pub frame_locked: bool,
    #[prost(message, repeated, tag = "12")]
    pub points: ::prost::alloc::vec::Vec<super::super::geometry_msgs::msg::Point>,
    #[prost(message, repeated, tag = "13")]
    pub colors: ::prost::alloc::vec::Vec<super::super::std_msgs::msg::ColorRgba>,
    #[prost(string, tag = "14")]
    pub texture_resource: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "15")]
    pub texture: ::core::option::Option<super::super::sensor_msgs::msg::CompressedImage>,
    #[prost(message, repeated, tag = "16")]
    pub uv_coordinates: ::prost::alloc::vec::Vec<UvCoordinate>,
    #[prost(string, tag = "17")]
    pub text: ::prost::alloc::string::String,
    #[prost(string, tag = "18")]
    pub mesh_resource: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "19")]
    pub mesh_file: ::core::option::Option<MeshFile>,
    #[prost(bool, tag = "20")]
    pub mesh_use_embedded_materials: bool,
}
impl ::prost::Name for Marker {
    const NAME: &'static str = "Marker";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.Marker".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.Marker".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MarkerArray {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, repeated, tag = "2")]
    pub markers: ::prost::alloc::vec::Vec<Marker>,
}
impl ::prost::Name for MarkerArray {
    const NAME: &'static str = "MarkerArray";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.MarkerArray".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.MarkerArray".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InteractiveMarkerControl {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub orientation: ::core::option::Option<
        super::super::geometry_msgs::msg::Quaternion,
    >,
    #[prost(uint32, tag = "4")]
    pub orientation_mode: u32,
    #[prost(uint32, tag = "5")]
    pub interaction_mode: u32,
    #[prost(bool, tag = "6")]
    pub always_visible: bool,
    #[prost(message, repeated, tag = "7")]
    pub markers: ::prost::alloc::vec::Vec<Marker>,
    #[prost(bool, tag = "8")]
    pub independent_marker_orientation: bool,
    #[prost(string, tag = "9")]
    pub description: ::prost::alloc::string::String,
}
impl ::prost::Name for InteractiveMarkerControl {
    const NAME: &'static str = "InteractiveMarkerControl";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerControl"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerControl"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MenuEntry {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(uint32, tag = "2")]
    pub id: u32,
    #[prost(uint32, tag = "3")]
    pub parent_id: u32,
    #[prost(string, tag = "4")]
    pub title: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub command: ::prost::alloc::string::String,
    #[prost(uint32, tag = "6")]
    pub command_type: u32,
}
impl ::prost::Name for MenuEntry {
    const NAME: &'static str = "MenuEntry";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.MenuEntry".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.MenuEntry".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InteractiveMarker {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub ros2_header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "3")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::Pose>,
    #[prost(string, tag = "4")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub description: ::prost::alloc::string::String,
    #[prost(float, tag = "6")]
    pub scale: f32,
    #[prost(message, repeated, tag = "7")]
    pub menu_entries: ::prost::alloc::vec::Vec<MenuEntry>,
    #[prost(message, repeated, tag = "8")]
    pub controls: ::prost::alloc::vec::Vec<InteractiveMarkerControl>,
}
impl ::prost::Name for InteractiveMarker {
    const NAME: &'static str = "InteractiveMarker";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarker".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarker".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InteractiveMarkerFeedback {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub ros2_header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(string, tag = "3")]
    pub client_id: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub marker_name: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub control_name: ::prost::alloc::string::String,
    #[prost(uint32, tag = "6")]
    pub event_type: u32,
    #[prost(message, optional, tag = "7")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::Pose>,
    #[prost(uint32, tag = "8")]
    pub menu_entry_id: u32,
    #[prost(message, optional, tag = "9")]
    pub mouse_point: ::core::option::Option<super::super::geometry_msgs::msg::Point>,
    #[prost(bool, tag = "10")]
    pub mouse_point_valid: bool,
}
impl ::prost::Name for InteractiveMarkerFeedback {
    const NAME: &'static str = "InteractiveMarkerFeedback";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerFeedback"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerFeedback"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InteractiveMarkerPose {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(message, optional, tag = "2")]
    pub ros2_header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "3")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::Pose>,
    #[prost(string, tag = "4")]
    pub name: ::prost::alloc::string::String,
}
impl ::prost::Name for InteractiveMarkerPose {
    const NAME: &'static str = "InteractiveMarkerPose";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerPose".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerPose"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InteractiveMarkerInit {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub server_id: ::prost::alloc::string::String,
    #[prost(uint64, tag = "3")]
    pub seq_num: u64,
    #[prost(message, repeated, tag = "4")]
    pub markers: ::prost::alloc::vec::Vec<InteractiveMarker>,
}
impl ::prost::Name for InteractiveMarkerInit {
    const NAME: &'static str = "InteractiveMarkerInit";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerInit".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerInit"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InteractiveMarkerUpdate {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<
        super::super::super::super::make87_messages::core::Header,
    >,
    #[prost(string, tag = "2")]
    pub server_id: ::prost::alloc::string::String,
    #[prost(uint64, tag = "3")]
    pub seq_num: u64,
    #[prost(uint32, tag = "4")]
    pub r#type: u32,
    #[prost(message, repeated, tag = "5")]
    pub markers: ::prost::alloc::vec::Vec<InteractiveMarker>,
    #[prost(message, repeated, tag = "6")]
    pub poses: ::prost::alloc::vec::Vec<InteractiveMarkerPose>,
    #[prost(string, repeated, tag = "7")]
    pub erases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
impl ::prost::Name for InteractiveMarkerUpdate {
    const NAME: &'static str = "InteractiveMarkerUpdate";
    const PACKAGE: &'static str = "make87_messages_ros2.humble.visualization_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerUpdate"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.humble.visualization_msgs.msg.InteractiveMarkerUpdate"
            .into()
    }
}
