web增强

This commit is contained in:
Rowland 2026-04-23 14:23:28 +08:00
parent b4fd0c2e68
commit 31ab66b95c
5 changed files with 51 additions and 2 deletions

BIN
Assets/Models/jxb.glb Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
{
"guid": "96aefc6e2ae14575a3bd6d29a6cd7a0c",
"asset_type": "model",
"source_hash": "7916e67bf644e61e2d7b7776ef8df40ef8623aaceda16b873c64d0a3f1a4faba",
"importer": "model_importer",
"import_settings": {},
"dependency_guids": []
}

18
main.py
View File

@ -536,20 +536,36 @@ class MyWorld(PanelDelegates, CoreWorld):
visible = bool(visible)
previous = bool(getattr(self, attr_name, False))
setattr(self, attr_name, visible)
if panel_key == "web" and previous != visible:
setattr(self, attr_name, visible)
if not visible:
try:
self.editor_panels._stop_imgui_webview()
except Exception:
pass
return
if panel_key == "lui_editor" and hasattr(self, "lui_manager"):
lui_available = bool(getattr(self.lui_manager, "lui_enabled", False))
if visible and not lui_available:
setattr(self, attr_name, False)
if hasattr(self, "messages"):
self.add_warning_message("当前环境未启用LUI缺少 lui 模块LUI编辑器不可用")
else:
print("⚠ 当前环境未启用LUI缺少 lui 模块LUI编辑器不可用")
return
setattr(self, attr_name, visible)
try:
self.lui_manager.show_editor = visible
if visible and not previous:
self.lui_manager._request_window_focus = True
except Exception:
pass
return
setattr(self, attr_name, visible)
def reset_panel_visibility_to_defaults(self):
for panel_key, default_visible in self._default_panel_visibility.items():

View File

@ -1562,7 +1562,22 @@ class LUIManagerEditorMixin:
if not self.lui_enabled or not self.show_editor:
return
default_pos = (20.0, 40.0)
try:
viewport = imgui.get_main_viewport()
default_pos = (
float(viewport.pos.x) + 20.0,
float(viewport.pos.y) + float(imgui.get_frame_height()) + 20.0,
)
except Exception:
pass
imgui.set_next_window_size((350, 600), imgui.Cond_.first_use_ever)
imgui.set_next_window_pos(default_pos, imgui.Cond_.appearing)
if getattr(self, "_request_window_focus", False):
self._request_window_focus = False
imgui.set_next_window_pos(default_pos, imgui.Cond_.always)
imgui.set_next_window_focus()
with imgui_ctx.begin("LUI编辑器", self.show_editor) as window:
self.show_editor = bool(window.opened)
if hasattr(self, "world") and hasattr(self.world, "set_panel_visible"):

View File

@ -331,9 +331,19 @@ class EditorPanelsTopMixin:
changed, visible = imgui.menu_item("脚本管理", "", self.app.is_panel_visible("script"), True)
if changed:
self.app.set_panel_visible("script", visible)
changed, visible = imgui.menu_item("LUI编辑器", "", self.app.is_panel_visible("lui_editor"), True)
lui_available = bool(
getattr(getattr(self.app, "lui_manager", None), "lui_enabled", False)
)
changed, visible = imgui.menu_item(
"LUI编辑器",
"",
self.app.is_panel_visible("lui_editor"),
lui_available,
)
if changed:
self.app.set_panel_visible("lui_editor", visible)
if not lui_available and imgui.is_item_hovered():
imgui.set_tooltip("当前环境未启用LUI缺少 lui 模块)")
changed, visible = imgui.menu_item("Web面板", "", self.app.is_panel_visible("web"), True)
if changed:
self.app.set_panel_visible("web", visible)