fix: Gizmo 无法拖动 + Dynamic 提示行顶视口抖动
- Editor::Draw 每帧首调 ImGuizmo::BeginFrame():不调则 mbOverGizmoHotspot hover 一次杆后永久置位(仅 BeginFrame 清零), GetMoveType 恒返 MT_NONE → 杆可见但永远抓不住 - Dynamic 刚体提示改 drawlist 叠加(Image 内左下角、纯英文): TextDisabled 占布局行 → 滚动条出现/消失循环 → avail 抖动 → 渲染分辨率每帧重报(视口疯狂顶动);且默认字体无中文字形
This commit is contained in:
@@ -167,13 +167,19 @@ std::optional<entt::entity> ViewportPanel::Draw(const EditorContext &ctx,
|
||||
}
|
||||
|
||||
// Dynamic 刚体提示:物理每帧把姿态写回 Transform,拖拽即刻
|
||||
// 被覆盖(Static/Kinematic 编辑器权威,可直接拖)
|
||||
// 被覆盖(Static/Kinematic 编辑器权威,可直接拖)。
|
||||
// 用 drawlist 叠加而非 ImGui::TextDisabled:后者在 Image 下方
|
||||
// 占一行布局 → 滚动条出现/消失循环 → avail 抖动 → 渲染分辨率
|
||||
// 每帧重报(视口疯狂顶动);且默认字体无中文字形(显示 ?)
|
||||
if (selected != entt::null) {
|
||||
if (const auto *rb = reg.try_get<ECS::RigidBodyComponent>(selected);
|
||||
rb != nullptr &&
|
||||
rb->type == ECS::RigidBodyComponent::BodyType::Dynamic) {
|
||||
ImGui::TextDisabled(
|
||||
"(Dynamic body: transform 由物理每帧覆盖)");
|
||||
const ImVec2 imgMin = ImGui::GetItemRectMin();
|
||||
ImGui::GetWindowDrawList()->AddText(
|
||||
ImVec2(imgMin.x + 8.0f, imgMin.y + size.y - 20.0f),
|
||||
IM_COL32(255, 255, 255, 160),
|
||||
"(Dynamic body: transform driven by physics)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user