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

View File

@@ -1,7 +1,7 @@
use std::{cell::RefCell, rc::Rc, sync::Arc};
use button::setup_custom_button;
use glam::{Affine2, Vec2, vec2};
use glam::{vec2, Affine2, Vec2};
use label::setup_custom_label;
use vulkano::{command_buffer::CommandBufferUsage, image::view::ImageView};
use wgui::{
@@ -15,14 +15,14 @@ use wgui::{
layout::{Layout, LayoutParams, WidgetID},
parser::ParserState,
renderer_vk::context::Context as WguiContext,
widget::{EventResult, label::WidgetLabel, rectangle::WidgetRectangle},
widget::{label::WidgetLabel, rectangle::WidgetRectangle, EventResult},
};
use crate::{
backend::input::{Haptics, HoverResult, PointerHit, PointerMode},
graphics::{CommandBuffers, ExtentExt},
state::AppState,
windowing::backend::{FrameMeta, OverlayBackend, ShouldRender, ui_transform},
windowing::backend::{ui_transform, FrameMeta, OverlayBackend, ShouldRender},
};
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 {
log::trace!("Unable to render: content size 0");
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 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 {
name: ANCHOR_NAME.clone(),

View File

@@ -128,6 +128,14 @@ impl OverlayWindowConfig {
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) {
log::debug!("deactivate {}", self.name.as_ref());
self.active_state = None;