use sge::prelude::*;
struct PhysicsCircle {
circle: Circle,
velocity: Vec2,
}
fn main() -> anyhow::Result<()> {
let opts = EngineCreationOptions::builder()
.window_transparent(true)
.opengl_debug(true)
.opengl_profile(GlProfile::Core)
.default_magnify_filter(MagnifySamplerFilter::Nearest)
.log_verbosity(Verbosity::Medium)
.window_blur(false)
.title("Custom init".to_string())
.build();
init_custom(opts)?;
let mut obj = PhysicsCircle {
circle: Circle {
center: Vec2::splat(300.0),
radius: Vec2::splat(100.0),
color: Color::RED_400,
},
velocity: vec2(2000.0, 1500.0),
};
loop {
clear_screen(Color::TRANSPARENT);
if obj.circle.center.x >= window_width() - obj.circle.radius.x
|| obj.circle.center.x <= obj.circle.radius.x
{
obj.velocity.x = -obj.velocity.x;
}
if obj.circle.center.y >= window_height() - obj.circle.radius.y
|| obj.circle.center.y <= obj.circle.radius.y
{
obj.velocity.y = -obj.velocity.y;
}
obj.circle.center += obj.velocity * physics_delta_time();
dbg!(obj.circle.center);
draw(&obj.circle);
draw_fps();
if should_quit() {
break;
}
next_frame();
}
Ok(())
}