feat(viewport): interactive VPORTS model tiled presets
Model space'de VPORTS artık iki aşamalı: bare VPORTS bir yapılandırma istiyor (SIngle/2H/2V/4), sonraki komut-satırı girdisi düzeni kuruyor (boş giriş = SINGLE). set_model_tile_layout normalized rect listesiyle tiled düzeni değiştiriyor: - SINGLE: tek tam-ekran - 2H: üst/alt - 2V: sol/sağ - 4: 2x2 awaiting_vports app flag'i prompt sonrası girdiyi yakalıyor. Paper-space VPORTS davranışı değişmedi. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
41c75dbb9b
commit
6fe25e4b5f
4 changed files with 79 additions and 13 deletions
|
|
@ -4362,18 +4362,31 @@ impl Scene {
|
|||
true
|
||||
}
|
||||
|
||||
/// Reset the Model layout to a single full-window tile.
|
||||
pub fn reset_model_tiles(&self) {
|
||||
/// Replace the Model tiled layout with the given normalized rectangles
|
||||
/// (each in 0..1). Every tile inherits the current camera; the first
|
||||
/// tile becomes active. Used by VPORTS presets and `reset_model_tiles`.
|
||||
pub fn set_model_tile_layout(&self, rects: Vec<iced::Rectangle>) {
|
||||
let cam_now = self.camera.borrow().clone();
|
||||
*self.model_tiles.borrow_mut() = vec![ModelTile {
|
||||
rect: iced::Rectangle {
|
||||
x: 0.0,
|
||||
y: 0.0,
|
||||
width: 1.0,
|
||||
height: 1.0,
|
||||
},
|
||||
camera: cam_now,
|
||||
}];
|
||||
let tiles: Vec<ModelTile> = rects
|
||||
.into_iter()
|
||||
.map(|rect| ModelTile {
|
||||
rect,
|
||||
camera: cam_now.clone(),
|
||||
})
|
||||
.collect();
|
||||
*self.model_tiles.borrow_mut() = if tiles.is_empty() {
|
||||
vec![ModelTile {
|
||||
rect: iced::Rectangle {
|
||||
x: 0.0,
|
||||
y: 0.0,
|
||||
width: 1.0,
|
||||
height: 1.0,
|
||||
},
|
||||
camera: cam_now,
|
||||
}]
|
||||
} else {
|
||||
tiles
|
||||
};
|
||||
self.active_model_tile.set(0);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue