Skip to content

Instantly share code, notes, and snippets.

View juancampa's full-sized avatar
🏠
Working from home

Juan Campa juancampa

🏠
Working from home
View GitHub Profile
@juancampa
juancampa / egui_marks.rs
Created January 6, 2024 15:59
Render marks under pointer check for slow input
// Put this in your `update` to render marks under the cursor to tell if your input is slow
let input_pos = ui.ctx().input(|input| input.pointer.latest_pos());
let marks = ui.memory_mut(|mem| {
let marks: &mut VecDeque<Pos2> =
mem.data.get_temp_mut_or_default(Id::new("dots"));
if let Some(pos) = input_pos {
if pos == marks.back().cloned().unwrap_or_default() {
// Add a small offset if position is repeated
marks.push_back(pos + vec2(3.0, 3.0));
@juancampa
juancampa / arrange.rs
Created January 30, 2025 07:18
Force directed algorithm to solve rect overlaps
fn arrange(&self, ui: &mut Ui, state: &mut DashboardState, repulsion_steps: usize, compaction_steps: usize) {
if state.block_rect.is_empty() {
return;
}
let original = state.block_rect.clone();
let mut debug_copy = state.block_rect.clone();
let rects = &mut state.block_rect;
let keys: Vec<BlockKey> = rects.keys().collect();
let keys = keys.iter().copied();