ui替换
This commit is contained in:
parent
d7a5f420c4
commit
ef9fabd43d
@ -58,18 +58,20 @@ class CustomMouseController:
|
||||
def move(self, task):
|
||||
dt = self.showbase.clock.dt
|
||||
|
||||
if self.keyMap["cam-left"]:
|
||||
self.showbase.camera.setX(self.showbase.camera, -self.move_speed * dt)
|
||||
if self.keyMap["cam-right"]:
|
||||
self.showbase.camera.setX(self.showbase.camera, +self.move_speed * dt)
|
||||
if self.keyMap["cam-backward"]:
|
||||
self.showbase.camera.setY(self.showbase.camera, -self.move_speed * dt)
|
||||
if self.keyMap["cam-forward"]:
|
||||
self.showbase.camera.setY(self.showbase.camera, +self.move_speed * dt)
|
||||
if self.keyMap["cam-up"]:
|
||||
self.showbase.camera.setZ(self.showbase.camera, +self.move_speed * dt)
|
||||
if self.keyMap["cam-down"]:
|
||||
self.showbase.camera.setZ(self.showbase.camera, -self.move_speed * dt)
|
||||
# 检查ImGui是否捕获了键盘输入
|
||||
if self._should_handle_keyboard():
|
||||
if self.keyMap["cam-left"]:
|
||||
self.showbase.camera.setX(self.showbase.camera, -self.move_speed * dt)
|
||||
if self.keyMap["cam-right"]:
|
||||
self.showbase.camera.setX(self.showbase.camera, +self.move_speed * dt)
|
||||
if self.keyMap["cam-backward"]:
|
||||
self.showbase.camera.setY(self.showbase.camera, -self.move_speed * dt)
|
||||
if self.keyMap["cam-forward"]:
|
||||
self.showbase.camera.setY(self.showbase.camera, +self.move_speed * dt)
|
||||
if self.keyMap["cam-up"]:
|
||||
self.showbase.camera.setZ(self.showbase.camera, +self.move_speed * dt)
|
||||
if self.keyMap["cam-down"]:
|
||||
self.showbase.camera.setZ(self.showbase.camera, -self.move_speed * dt)
|
||||
if self.keyMap["mouse1"] or self.keyMap["mouse3"]: # 左键或右键按下
|
||||
try:
|
||||
# 检查是否应该处理鼠标事件(避免与ImGui冲突)
|
||||
@ -101,6 +103,25 @@ class CustomMouseController:
|
||||
|
||||
return task.cont
|
||||
|
||||
def _should_handle_keyboard(self):
|
||||
"""检查是否应该处理键盘事件(避免与ImGui冲突)"""
|
||||
try:
|
||||
# 检查ImGui是否想要捕获键盘
|
||||
try:
|
||||
from imgui_bundle import imgui
|
||||
if hasattr(imgui, 'get_io') and imgui.get_io().want_capture_keyboard:
|
||||
return False
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
# 如果右键按下,优先处理视角控制(即使ImGui有焦点)
|
||||
if self.keyMap["mouse3"]:
|
||||
return True
|
||||
|
||||
return True
|
||||
except:
|
||||
return True
|
||||
|
||||
def _should_handle_mouse(self):
|
||||
"""检查是否应该处理鼠标事件(避免与ImGui冲突)"""
|
||||
try:
|
||||
|
||||
7
demo.py
7
demo.py
@ -306,7 +306,7 @@ class MyWorld(CoreWorld):
|
||||
self.accept('alt-up', self._on_alt_released)
|
||||
self.accept('n', self._on_n_pressed)
|
||||
self.accept('o', self._on_o_pressed)
|
||||
self.accept('s', self._on_s_pressed)
|
||||
self.accept('control-s', self._on_save_project)
|
||||
self.accept('f4', self._on_f4_pressed)
|
||||
|
||||
# 编辑功能快捷键
|
||||
@ -1565,10 +1565,7 @@ class MyWorld(CoreWorld):
|
||||
if self.ctrl_pressed:
|
||||
self._on_open_project()
|
||||
|
||||
def _on_s_pressed(self):
|
||||
"""S键按下 - 检查Ctrl+S组合键"""
|
||||
if self.ctrl_pressed:
|
||||
self._on_save_project()
|
||||
|
||||
|
||||
def _on_f4_pressed(self):
|
||||
"""F4键按下 - 检查Alt+F4组合键"""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user