refresh: stack al día (vello 0.7 / wgpu 27 / parley 0.6) + motor 3D voxel

Re-sincroniza las fuentes desde el monorepo (estaba en vello 0.5/wgpu 24 y con la
estructura vieja de eventloop) y suma el 3D:

- bump del workspace a vello 0.7 / wgpu 27 / parley 0.6, + accesskit 0.24 /
  accesskit_winit 0.33 / vello_hybrid 0.0.9.
- nuevos crates: llimphi-3d (voxels ray-march + mallas en un depth compartido,
  montable dentro de un View 2D vía set_viewport+scissor) y llimphi-voxel
  (world-gen, personajes, director de escenas) + shared/foreign-vox (puente .vox).
- README: sección "Not just 2D — a 3D voxel engine" + GIF (docs/llimphi_voxel.gif).
- excluido modules/allichay (arrastra deps fuera del alcance del front-door).
- cargo check --workspace: verde.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-06-18 14:40:00 +00:00
parent e74800d9da
commit ccab39f140
202 changed files with 44034 additions and 1811 deletions
+15 -3
View File
@@ -28,7 +28,7 @@
use std::sync::Arc;
use llimphi_ui::llimphi_layout::taffy::{
prelude::{length, percent, Dimension, FlexDirection, Size, Style},
prelude::{length, percent, FlexDirection, Size, Style},
Rect,
};
use llimphi_ui::llimphi_raster::peniko::Color;
@@ -126,11 +126,16 @@ where
}
fn wrap_pane<Msg>(view: View<Msg>, direction: Direction, size: PaneSize) -> View<Msg> {
// El panel Flex usa flex-basis 0 en el eje principal (no `auto`): así su
// tamaño es la porción de espacio libre que le toca por `flex_grow`, en
// vez del tamaño de su contenido. Con `auto` un hijo que desborda (p.ej.
// una grilla con flex-wrap o contenido ancho) volvía el panel
// content-sized y rompía el wrap / desbordaba horizontalmente.
let (width, height, flex_grow) = match (direction, size) {
(Direction::Row, PaneSize::Fixed(px)) => (length(px), percent(1.0_f32), 0.0),
(Direction::Row, PaneSize::Flex) => (Dimension::auto(), percent(1.0_f32), 1.0),
(Direction::Row, PaneSize::Flex) => (length(0.0_f32), percent(1.0_f32), 1.0),
(Direction::Column, PaneSize::Fixed(px)) => (percent(1.0_f32), length(px), 0.0),
(Direction::Column, PaneSize::Flex) => (percent(1.0_f32), Dimension::auto(), 1.0),
(Direction::Column, PaneSize::Flex) => (percent(1.0_f32), length(0.0_f32), 1.0),
};
View::new(Style {
size: Size { width, height },
@@ -157,6 +162,12 @@ where
Direction::Row => (length(palette.thickness), percent(1.0_f32)),
Direction::Column => (percent(1.0_f32), length(palette.thickness)),
};
// Divisor vertical (Row, separa izq/der) → resize este-oeste; divisor
// horizontal (Column, separa arriba/abajo) → resize norte-sur.
let cursor = match direction {
Direction::Row => llimphi_ui::Cursor::ColResize,
Direction::Column => llimphi_ui::Cursor::RowResize,
};
View::new(Style {
size: Size { width, height },
flex_shrink: 0.0,
@@ -170,5 +181,6 @@ where
})
.fill(palette.divider)
.hover_fill(palette.divider_hover)
.cursor(cursor)
.draggable(handler)
}