1use bevy::{
2 input::{mouse::MouseScrollUnit, ButtonState},
3 prelude::*,
4 render::camera::Viewport,
5};
6use bones_framework::prelude as bones;
7
8pub trait IntoBevy<T> {
11 fn into_bevy(self) -> T;
13}
14pub trait IntoBones<T> {
17 fn into_bones(self) -> T;
19}
20
21impl IntoBevy<Viewport> for bones::Viewport {
22 fn into_bevy(self) -> Viewport {
23 Viewport {
24 physical_position: self.position,
25 physical_size: self.size,
26 depth: self.depth_min..self.depth_max,
27 }
28 }
29}
30
31impl IntoBevy<Color> for bones::Color {
32 fn into_bevy(self) -> Color {
33 Color::Rgba {
34 red: self.r(),
35 green: self.g(),
36 blue: self.b(),
37 alpha: self.a(),
38 }
39 }
40}
41
42impl IntoBevy<Transform> for bones::Transform {
43 fn into_bevy(self) -> Transform {
44 Transform {
45 translation: self.translation,
46 rotation: self.rotation,
47 scale: self.scale,
48 }
49 }
50}
51
52impl IntoBones<bones::MouseScrollUnit> for MouseScrollUnit {
53 fn into_bones(self) -> bones::MouseScrollUnit {
54 match self {
55 MouseScrollUnit::Line => bones::MouseScrollUnit::Lines,
56 MouseScrollUnit::Pixel => bones::MouseScrollUnit::Pixels,
57 }
58 }
59}
60
61impl IntoBones<bones::ButtonState> for ButtonState {
62 fn into_bones(self) -> bones::ButtonState {
63 match self {
64 ButtonState::Pressed => bones::ButtonState::Pressed,
65 ButtonState::Released => bones::ButtonState::Released,
66 }
67 }
68}
69
70impl IntoBones<bones::MouseButton> for MouseButton {
71 fn into_bones(self) -> bones::MouseButton {
72 match self {
73 MouseButton::Left => bones::MouseButton::Left,
74 MouseButton::Right => bones::MouseButton::Right,
75 MouseButton::Middle => bones::MouseButton::Middle,
76 MouseButton::Other(i) => bones::MouseButton::Other(i),
77 }
78 }
79}
80
81impl IntoBones<bones::KeyCode> for KeyCode {
82 fn into_bones(self) -> bones::KeyCode {
83 match self {
84 KeyCode::Key1 => bones::KeyCode::Key1,
85 KeyCode::Key2 => bones::KeyCode::Key2,
86 KeyCode::Key3 => bones::KeyCode::Key3,
87 KeyCode::Key4 => bones::KeyCode::Key4,
88 KeyCode::Key5 => bones::KeyCode::Key5,
89 KeyCode::Key6 => bones::KeyCode::Key6,
90 KeyCode::Key7 => bones::KeyCode::Key7,
91 KeyCode::Key8 => bones::KeyCode::Key8,
92 KeyCode::Key9 => bones::KeyCode::Key9,
93 KeyCode::Key0 => bones::KeyCode::Key0,
94 KeyCode::A => bones::KeyCode::A,
95 KeyCode::B => bones::KeyCode::B,
96 KeyCode::C => bones::KeyCode::C,
97 KeyCode::D => bones::KeyCode::D,
98 KeyCode::E => bones::KeyCode::E,
99 KeyCode::F => bones::KeyCode::F,
100 KeyCode::G => bones::KeyCode::G,
101 KeyCode::H => bones::KeyCode::H,
102 KeyCode::I => bones::KeyCode::I,
103 KeyCode::J => bones::KeyCode::J,
104 KeyCode::K => bones::KeyCode::K,
105 KeyCode::L => bones::KeyCode::L,
106 KeyCode::M => bones::KeyCode::M,
107 KeyCode::N => bones::KeyCode::N,
108 KeyCode::O => bones::KeyCode::O,
109 KeyCode::P => bones::KeyCode::P,
110 KeyCode::Q => bones::KeyCode::Q,
111 KeyCode::R => bones::KeyCode::R,
112 KeyCode::S => bones::KeyCode::S,
113 KeyCode::T => bones::KeyCode::T,
114 KeyCode::U => bones::KeyCode::U,
115 KeyCode::V => bones::KeyCode::V,
116 KeyCode::W => bones::KeyCode::W,
117 KeyCode::X => bones::KeyCode::X,
118 KeyCode::Y => bones::KeyCode::Y,
119 KeyCode::Z => bones::KeyCode::Z,
120 KeyCode::Escape => bones::KeyCode::Escape,
121 KeyCode::F1 => bones::KeyCode::F1,
122 KeyCode::F2 => bones::KeyCode::F2,
123 KeyCode::F3 => bones::KeyCode::F3,
124 KeyCode::F4 => bones::KeyCode::F4,
125 KeyCode::F5 => bones::KeyCode::F5,
126 KeyCode::F6 => bones::KeyCode::F6,
127 KeyCode::F7 => bones::KeyCode::F7,
128 KeyCode::F8 => bones::KeyCode::F8,
129 KeyCode::F9 => bones::KeyCode::F9,
130 KeyCode::F10 => bones::KeyCode::F10,
131 KeyCode::F11 => bones::KeyCode::F11,
132 KeyCode::F12 => bones::KeyCode::F12,
133 KeyCode::F13 => bones::KeyCode::F13,
134 KeyCode::F14 => bones::KeyCode::F14,
135 KeyCode::F15 => bones::KeyCode::F15,
136 KeyCode::F16 => bones::KeyCode::F16,
137 KeyCode::F17 => bones::KeyCode::F17,
138 KeyCode::F18 => bones::KeyCode::F18,
139 KeyCode::F19 => bones::KeyCode::F19,
140 KeyCode::F20 => bones::KeyCode::F20,
141 KeyCode::F21 => bones::KeyCode::F21,
142 KeyCode::F22 => bones::KeyCode::F22,
143 KeyCode::F23 => bones::KeyCode::F23,
144 KeyCode::F24 => bones::KeyCode::F24,
145 KeyCode::Snapshot => bones::KeyCode::Snapshot,
146 KeyCode::Scroll => bones::KeyCode::Scroll,
147 KeyCode::Pause => bones::KeyCode::Pause,
148 KeyCode::Insert => bones::KeyCode::Insert,
149 KeyCode::Home => bones::KeyCode::Home,
150 KeyCode::Delete => bones::KeyCode::Delete,
151 KeyCode::End => bones::KeyCode::End,
152 KeyCode::PageDown => bones::KeyCode::PageDown,
153 KeyCode::PageUp => bones::KeyCode::PageUp,
154 KeyCode::Left => bones::KeyCode::Left,
155 KeyCode::Up => bones::KeyCode::Up,
156 KeyCode::Right => bones::KeyCode::Right,
157 KeyCode::Down => bones::KeyCode::Down,
158 KeyCode::Back => bones::KeyCode::Back,
159 KeyCode::Return => bones::KeyCode::Return,
160 KeyCode::Space => bones::KeyCode::Space,
161 KeyCode::Compose => bones::KeyCode::Compose,
162 KeyCode::Caret => bones::KeyCode::Caret,
163 KeyCode::Numlock => bones::KeyCode::Numlock,
164 KeyCode::Numpad0 => bones::KeyCode::Numpad0,
165 KeyCode::Numpad1 => bones::KeyCode::Numpad1,
166 KeyCode::Numpad2 => bones::KeyCode::Numpad2,
167 KeyCode::Numpad3 => bones::KeyCode::Numpad3,
168 KeyCode::Numpad4 => bones::KeyCode::Numpad4,
169 KeyCode::Numpad5 => bones::KeyCode::Numpad5,
170 KeyCode::Numpad6 => bones::KeyCode::Numpad6,
171 KeyCode::Numpad7 => bones::KeyCode::Numpad7,
172 KeyCode::Numpad8 => bones::KeyCode::Numpad8,
173 KeyCode::Numpad9 => bones::KeyCode::Numpad9,
174 KeyCode::AbntC1 => bones::KeyCode::AbntC1,
175 KeyCode::AbntC2 => bones::KeyCode::AbntC2,
176 KeyCode::NumpadAdd => bones::KeyCode::NumpadAdd,
177 KeyCode::Apostrophe => bones::KeyCode::Apostrophe,
178 KeyCode::Apps => bones::KeyCode::Apps,
179 KeyCode::Asterisk => bones::KeyCode::Asterisk,
180 KeyCode::Plus => bones::KeyCode::Plus,
181 KeyCode::At => bones::KeyCode::At,
182 KeyCode::Ax => bones::KeyCode::Ax,
183 KeyCode::Backslash => bones::KeyCode::Backslash,
184 KeyCode::Calculator => bones::KeyCode::Calculator,
185 KeyCode::Capital => bones::KeyCode::Capital,
186 KeyCode::Colon => bones::KeyCode::Colon,
187 KeyCode::Comma => bones::KeyCode::Comma,
188 KeyCode::Convert => bones::KeyCode::Convert,
189 KeyCode::NumpadDecimal => bones::KeyCode::NumpadDecimal,
190 KeyCode::NumpadDivide => bones::KeyCode::NumpadDivide,
191 KeyCode::Equals => bones::KeyCode::Equals,
192 KeyCode::Grave => bones::KeyCode::Grave,
193 KeyCode::Kana => bones::KeyCode::Kana,
194 KeyCode::Kanji => bones::KeyCode::Kanji,
195 KeyCode::AltLeft => bones::KeyCode::AltLeft,
196 KeyCode::BracketLeft => bones::KeyCode::BracketLeft,
197 KeyCode::ControlLeft => bones::KeyCode::ControlLeft,
198 KeyCode::ShiftLeft => bones::KeyCode::ShiftLeft,
199 KeyCode::SuperLeft => bones::KeyCode::SuperLeft,
200 KeyCode::Mail => bones::KeyCode::Mail,
201 KeyCode::MediaSelect => bones::KeyCode::MediaSelect,
202 KeyCode::MediaStop => bones::KeyCode::MediaStop,
203 KeyCode::Minus => bones::KeyCode::Minus,
204 KeyCode::NumpadMultiply => bones::KeyCode::NumpadMultiply,
205 KeyCode::Mute => bones::KeyCode::Mute,
206 KeyCode::MyComputer => bones::KeyCode::MyComputer,
207 KeyCode::NavigateForward => bones::KeyCode::NavigateForward,
208 KeyCode::NavigateBackward => bones::KeyCode::NavigateBackward,
209 KeyCode::NextTrack => bones::KeyCode::NextTrack,
210 KeyCode::NoConvert => bones::KeyCode::NoConvert,
211 KeyCode::NumpadComma => bones::KeyCode::NumpadComma,
212 KeyCode::NumpadEnter => bones::KeyCode::NumpadEnter,
213 KeyCode::NumpadEquals => bones::KeyCode::NumpadEquals,
214 KeyCode::Oem102 => bones::KeyCode::Oem102,
215 KeyCode::Period => bones::KeyCode::Period,
216 KeyCode::PlayPause => bones::KeyCode::PlayPause,
217 KeyCode::Power => bones::KeyCode::Power,
218 KeyCode::PrevTrack => bones::KeyCode::PrevTrack,
219 KeyCode::AltRight => bones::KeyCode::AltRight,
220 KeyCode::BracketRight => bones::KeyCode::BracketRight,
221 KeyCode::ControlRight => bones::KeyCode::ControlRight,
222 KeyCode::ShiftRight => bones::KeyCode::ShiftRight,
223 KeyCode::SuperRight => bones::KeyCode::SuperRight,
224 KeyCode::Semicolon => bones::KeyCode::Semicolon,
225 KeyCode::Slash => bones::KeyCode::Slash,
226 KeyCode::Sleep => bones::KeyCode::Sleep,
227 KeyCode::Stop => bones::KeyCode::Stop,
228 KeyCode::NumpadSubtract => bones::KeyCode::NumpadSubtract,
229 KeyCode::Sysrq => bones::KeyCode::Sysrq,
230 KeyCode::Tab => bones::KeyCode::Tab,
231 KeyCode::Underline => bones::KeyCode::Underline,
232 KeyCode::Unlabeled => bones::KeyCode::Unlabeled,
233 KeyCode::VolumeDown => bones::KeyCode::VolumeDown,
234 KeyCode::VolumeUp => bones::KeyCode::VolumeUp,
235 KeyCode::Wake => bones::KeyCode::Wake,
236 KeyCode::WebBack => bones::KeyCode::WebBack,
237 KeyCode::WebFavorites => bones::KeyCode::WebFavorites,
238 KeyCode::WebForward => bones::KeyCode::WebForward,
239 KeyCode::WebHome => bones::KeyCode::WebHome,
240 KeyCode::WebRefresh => bones::KeyCode::WebRefresh,
241 KeyCode::WebSearch => bones::KeyCode::WebSearch,
242 KeyCode::WebStop => bones::KeyCode::WebStop,
243 KeyCode::Yen => bones::KeyCode::Yen,
244 KeyCode::Copy => bones::KeyCode::Copy,
245 KeyCode::Paste => bones::KeyCode::Paste,
246 KeyCode::Cut => bones::KeyCode::Cut,
247 }
248 }
249}
250
251impl IntoBones<bones::GamepadButton> for bevy::input::gamepad::GamepadButtonType {
252 fn into_bones(self) -> bones::GamepadButton {
253 match self {
254 GamepadButtonType::South => bones::GamepadButton::South,
255 GamepadButtonType::East => bones::GamepadButton::East,
256 GamepadButtonType::North => bones::GamepadButton::North,
257 GamepadButtonType::West => bones::GamepadButton::West,
258 GamepadButtonType::C => bones::GamepadButton::C,
259 GamepadButtonType::Z => bones::GamepadButton::Z,
260 GamepadButtonType::LeftTrigger => bones::GamepadButton::LeftTrigger,
261 GamepadButtonType::LeftTrigger2 => bones::GamepadButton::LeftTrigger2,
262 GamepadButtonType::RightTrigger => bones::GamepadButton::RightTrigger,
263 GamepadButtonType::RightTrigger2 => bones::GamepadButton::RightTrigger2,
264 GamepadButtonType::Select => bones::GamepadButton::Select,
265 GamepadButtonType::Start => bones::GamepadButton::Start,
266 GamepadButtonType::Mode => bones::GamepadButton::Mode,
267 GamepadButtonType::LeftThumb => bones::GamepadButton::LeftThumb,
268 GamepadButtonType::RightThumb => bones::GamepadButton::RightThumb,
269 GamepadButtonType::DPadUp => bones::GamepadButton::DPadUp,
270 GamepadButtonType::DPadDown => bones::GamepadButton::DPadDown,
271 GamepadButtonType::DPadLeft => bones::GamepadButton::DPadLeft,
272 GamepadButtonType::DPadRight => bones::GamepadButton::DPadRight,
273 GamepadButtonType::Other(x) => bones::GamepadButton::Other(x),
274 }
275 }
276}
277
278impl IntoBones<bones::GamepadAxis> for bevy::input::gamepad::GamepadAxisType {
279 fn into_bones(self) -> bones::GamepadAxis {
280 match self {
281 GamepadAxisType::LeftStickX => bones::GamepadAxis::LeftStickX,
282 GamepadAxisType::LeftStickY => bones::GamepadAxis::LeftStickY,
283 GamepadAxisType::LeftZ => bones::GamepadAxis::LeftZ,
284 GamepadAxisType::RightStickX => bones::GamepadAxis::RightStickX,
285 GamepadAxisType::RightStickY => bones::GamepadAxis::RightStickY,
286 GamepadAxisType::RightZ => bones::GamepadAxis::RightZ,
287 GamepadAxisType::Other(x) => bones::GamepadAxis::Other(x),
288 }
289 }
290}