1use hotwire::{WireLine, WireParams, WireRenderer};
2use sdl3::event::Event;
3use sdl3::pixels::Color;
4
5fn main() -> Result<(), Box<dyn std::error::Error>> {
6 let sdl = sdl3::init()?;
8 let video = sdl.video()?;
9
10 let window = video
12 .window("Hotwire - Basic Example", 800, 600)
13 .position_centered()
14 .build()
15 .map_err(|e| e.to_string())?;
16
17 let canvas = window.into_canvas();
18 let mut renderer = WireRenderer::new(canvas);
19
20 let wire_line = WireLine::new(
22 100.0,
23 200.0,
24 700.0,
25 200.0,
26 WireParams {
27 sag: 80.0,
28 thickness: 4.0,
29 sway_speed: 1.0,
30 sway_amount: 3.0,
31 segment_density: 2.0,
32 color: Color::RGB(160, 160, 160),
33 },
34 );
35
36 let mut event_pump = sdl.event_pump()?;
37
38 'running: loop {
39 for event in event_pump.poll_iter() {
41 match event {
42 Event::Quit { .. } => break 'running,
43 _ => {}
44 }
45 }
46
47 renderer.canvas_mut().set_draw_color(Color::RGB(20, 20, 30));
49 renderer.canvas_mut().clear();
50
51 renderer.render(&wire_line, 0.0)?;
53
54 renderer.present();
56
57 std::thread::sleep(std::time::Duration::from_millis(16));
59 }
60
61 Ok(())
62}