add module system and move sensor into core with it

This commit is contained in:
2025-09-24 16:11:39 -04:00
parent 2adf7a43a1
commit 26c248dcba
13 changed files with 515 additions and 342 deletions

View File

@@ -1,6 +1,6 @@
use crate::{
layout::{
ActiveWidgets, Layers, TextAttrs, TextBuffer, TextData, TextOffset, TextureHandle,
ActiveWidgets, Layers, Modules, TextAttrs, TextBuffer, TextData, TextOffset, TextureHandle,
Textures, UiRegion, UiVec2, Vec2, WidgetId, Widgets,
},
render::{Primitive, PrimitiveHandle},
@@ -25,6 +25,7 @@ pub struct PainterCtx<'a> {
pub textures: &'a mut Textures,
pub text: &'a mut TextData,
pub screen_size: Vec2,
pub modules: &'a mut Modules,
drawing: HashSet<Id>,
}
@@ -44,6 +45,7 @@ impl<'a> PainterCtx<'a> {
widgets: &'a Widgets,
layers: &'a mut Layers,
active: &'a mut ActiveWidgets,
modules: &'a mut Modules,
textures: &'a mut Textures,
text: &'a mut TextData,
screen_size: Vec2,
@@ -55,6 +57,7 @@ impl<'a> PainterCtx<'a> {
textures,
text,
screen_size,
modules,
drawing: HashSet::default(),
}
}
@@ -165,10 +168,8 @@ impl<'a> PainterCtx<'a> {
}
}
if self.widgets.data(id).is_some_and(|w| w.sensor) {
self.layers[layer]
.sensors
.insert(id.duplicate(), instance.region);
for m in self.modules.iter_mut() {
m.on_draw(&instance);
}
self.active.insert(id.duplicate(), instance);
}
@@ -182,7 +183,9 @@ impl<'a> PainterCtx<'a> {
}
inst.textures.clear();
self.textures.free();
self.layers[inst.layer].sensors.remove(id);
for m in self.modules.iter_mut() {
m.on_undraw(inst);
}
}
inst
}