use bevy::{
ecs::bundle::Bundle,
prelude::{InheritedVisibility, ViewVisibility, Visibility, default},
ui::{ComputedNode, Node, UiGlobalTransform, UiTransform, ZIndex},
};
use crate::{VirtualJoystickID, VirtualJoystickNode};
#[derive(Bundle, Debug, Default)]
pub struct VirtualJoystickBundle<S: VirtualJoystickID> {
pub(crate) node: ComputedNode,
pub(crate) style: Node,
pub(crate) joystick: VirtualJoystickNode<S>,
pub(crate) transform: UiTransform,
pub(crate) global_transform: UiGlobalTransform,
pub visibility: Visibility,
pub inherited_visibility: InheritedVisibility,
pub view_visibility: ViewVisibility,
pub(crate) z_index: ZIndex,
}
impl<S: VirtualJoystickID> VirtualJoystickBundle<S> {
pub fn new(joystick: VirtualJoystickNode<S>) -> Self {
Self {
joystick,
..default()
}
}
pub fn set_node(mut self, node: ComputedNode) -> Self {
self.node = node;
self
}
pub fn set_style(mut self, style: Node) -> Self {
self.style = style;
self
}
pub fn set_transform(mut self, transform: UiTransform) -> Self {
self.transform = transform;
self
}
pub fn set_global_transform(mut self, global_transform: UiGlobalTransform) -> Self {
self.global_transform = global_transform;
self
}
pub fn set_z_index(mut self, z_index: ZIndex) -> Self {
self.z_index = z_index;
self
}
}