fix anchor not showing

This commit is contained in:
galister
2025-11-11 14:41:39 +09:00
parent bef31be9e2
commit 6169ec9505
4 changed files with 16 additions and 7 deletions

View File

@@ -2,7 +2,7 @@ use std::f32::consts::PI;
use std::process::{Child, Command}; use std::process::{Child, Command};
use std::{collections::VecDeque, time::Instant}; use std::{collections::VecDeque, time::Instant};
use glam::{Affine3A, Vec2, Vec3A, Vec3Swizzles}; use glam::{Affine3A, Vec2, Vec3, Vec3A, Vec3Swizzles};
use smallvec::{smallvec, SmallVec}; use smallvec::{smallvec, SmallVec};
@@ -582,8 +582,7 @@ impl Pointer {
tasks.enqueue(TaskType::Overlay( tasks.enqueue(TaskType::Overlay(
OverlaySelector::Name(ANCHOR_NAME.clone()), OverlaySelector::Name(ANCHOR_NAME.clone()),
Box::new(|app, o| { Box::new(|app, o| {
o.saved_transform = Some(app.anchor); o.activate_static(app.anchor * Affine3A::from_scale(Vec3::ONE * 0.1));
o.activate(app);
}), }),
)); ));
} }

View File

@@ -1,7 +1,7 @@
use std::{cell::RefCell, rc::Rc, sync::Arc}; use std::{cell::RefCell, rc::Rc, sync::Arc};
use button::setup_custom_button; use button::setup_custom_button;
use glam::{Affine2, Vec2, vec2}; use glam::{vec2, Affine2, Vec2};
use label::setup_custom_label; use label::setup_custom_label;
use vulkano::{command_buffer::CommandBufferUsage, image::view::ImageView}; use vulkano::{command_buffer::CommandBufferUsage, image::view::ImageView};
use wgui::{ use wgui::{
@@ -15,14 +15,14 @@ use wgui::{
layout::{Layout, LayoutParams, WidgetID}, layout::{Layout, LayoutParams, WidgetID},
parser::ParserState, parser::ParserState,
renderer_vk::context::Context as WguiContext, renderer_vk::context::Context as WguiContext,
widget::{EventResult, label::WidgetLabel, rectangle::WidgetRectangle}, widget::{label::WidgetLabel, rectangle::WidgetRectangle, EventResult},
}; };
use crate::{ use crate::{
backend::input::{Haptics, HoverResult, PointerHit, PointerMode}, backend::input::{Haptics, HoverResult, PointerHit, PointerMode},
graphics::{CommandBuffers, ExtentExt}, graphics::{CommandBuffers, ExtentExt},
state::AppState, state::AppState,
windowing::backend::{FrameMeta, OverlayBackend, ShouldRender, ui_transform}, windowing::backend::{ui_transform, FrameMeta, OverlayBackend, ShouldRender},
}; };
use super::{timer::GuiTimer, timestep::Timestep}; use super::{timer::GuiTimer, timestep::Timestep};
@@ -206,6 +206,7 @@ impl<S: 'static> OverlayBackend for GuiPanel<S> {
} }
if self.layout.content_size.x * self.layout.content_size.y == 0.0 { if self.layout.content_size.x * self.layout.content_size.y == 0.0 {
log::trace!("Unable to render: content size 0");
return Ok(ShouldRender::Unable); return Ok(ShouldRender::Unable);
} }

View File

@@ -9,7 +9,8 @@ use crate::windowing::Z_ORDER_ANCHOR;
pub static ANCHOR_NAME: LazyLock<Arc<str>> = LazyLock::new(|| Arc::from("anchor")); pub static ANCHOR_NAME: LazyLock<Arc<str>> = LazyLock::new(|| Arc::from("anchor"));
pub fn create_anchor(app: &mut AppState) -> anyhow::Result<OverlayWindowConfig> { pub fn create_anchor(app: &mut AppState) -> anyhow::Result<OverlayWindowConfig> {
let panel = GuiPanel::new_from_template(app, "gui/anchor.xml", (), None)?; let mut panel = GuiPanel::new_from_template(app, "gui/anchor.xml", (), None)?;
panel.update_layout()?;
Ok(OverlayWindowConfig { Ok(OverlayWindowConfig {
name: ANCHOR_NAME.clone(), name: ANCHOR_NAME.clone(),

View File

@@ -128,6 +128,14 @@ impl OverlayWindowConfig {
self.reset(app, true); self.reset(app, true);
} }
pub fn activate_static(&mut self, global_transform: Affine3A) {
log::debug!("activate {}", self.name.as_ref());
self.dirty = true;
let mut state = self.default_state.clone();
state.transform = global_transform;
self.active_state = Some(state);
}
pub fn deactivate(&mut self) { pub fn deactivate(&mut self) {
log::debug!("deactivate {}", self.name.as_ref()); log::debug!("deactivate {}", self.name.as_ref());
self.active_state = None; self.active_state = None;