#import "Basic"; #import "Math"; Example_Data :: struct { timer: float; } init_example_widget :: (widget: *Widget_State) { data := New(Example_Data); data.timer = 0; widget.data = data; widget.init = (app: *Widget_State) {}; widget.update = (widget: *Widget_State, dt: float) { data := cast(*Example_Data) widget.data; data.timer += dt; }; widget.handle_input = (widget: *Widget_State, occluded: bool) -> (occludes: bool) {return false;}; widget.render = (widget: *Widget_State) { data := cast(*Example_Data) widget.data; // Pulse background color to red to show it's updating and distinct from menu r := 0.5 + 0.5 * sin(data.timer * 2.0); Simp.clear_render_target(r, 0.1, 0.1, 1.0); }; widget.shutdown = (widget: *Widget_State) { free(widget.data); }; }