forked from Rowland/EG
添加更多保存节点
This commit is contained in:
parent
6b4dcd14e6
commit
ace7804578
@ -188,9 +188,12 @@ class GUIManager:
|
||||
button.setTag("gui_id", f"button_{len(self.gui_elements)}")
|
||||
button.setTag("gui_text", text)
|
||||
button.setTag("is_gui_element", "1")
|
||||
button.setTag("is_scene_element", "1")
|
||||
button.setTag("is_scene_element", "1") # 确保这个标签被设置
|
||||
button.setTag("saved_gui_type", "button") # 添加这个标签以确保兼容性
|
||||
button.setTag("gui_element_type","button")
|
||||
button.setTag("created_by_user", "1")
|
||||
button.setTag("gui_parent_type", "gui" if parent_gui_node else "3d")
|
||||
button.setTag("name", button_name)
|
||||
button.setName(button_name)
|
||||
|
||||
# 如果有GUI父节点,建立引用关系
|
||||
@ -200,6 +203,7 @@ class GUIManager:
|
||||
|
||||
# 添加到GUI元素列表
|
||||
self.gui_elements.append(button)
|
||||
button.reparentTo(self.world.aspect2d)
|
||||
|
||||
print(f"✅ 为 {parent_item.text(0)} 创建GUI按钮成功: {button_name}")
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -296,6 +296,7 @@ class InterfaceManager:
|
||||
addNodeToTree(model, sceneRoot,force=True)
|
||||
|
||||
# 添加所有GUI元素
|
||||
print(f"GUIGUIGUIGUIGUIGUIGUIGUIGUIGUIGUIGUIUGIUGI{self.world.gui_elements}")
|
||||
for gui in self.world.gui_elements:
|
||||
# 检查是否是有效的GUI节点(具有getTag方法的NodePath)
|
||||
if hasattr(gui, 'getTag') and hasattr(gui, 'getName'):
|
||||
@ -314,10 +315,19 @@ class InterfaceManager:
|
||||
groundItem.setData(0,Qt.UserRole + 1, "SCENE_NODE")
|
||||
|
||||
#添加灯光节点
|
||||
for light in self.world.Spotlight + self.world.Pointlight:
|
||||
if not light.isEmpty:
|
||||
for light in self.world.Spotlight:
|
||||
if light:
|
||||
addNodeToTree(light, sceneRoot, force=True)
|
||||
|
||||
for light in self.world.Pointlight:
|
||||
if light:
|
||||
addNodeToTree(light, sceneRoot, force=True)
|
||||
|
||||
# for light in self.world.Spotlight + self.world.Pointlight:
|
||||
# if not light.isEmpty:
|
||||
# print(f"33333333333333333333333333333{light}")
|
||||
# addNodeToTree(light, sceneRoot, force=True)
|
||||
|
||||
#添加 Cesium tilesets
|
||||
if hasattr(self.world,'scene_manager') and hasattr(self.world.scene_manager,'tilesets'):
|
||||
for i , tileset_info in enumerate(self.world.scene_manager.tilesets):
|
||||
|
||||
@ -168,7 +168,7 @@ class PropertyPanelManager:
|
||||
elif model and hasattr(model,'getTag') and model.getTag("element_type") == "cesium_tileset":
|
||||
self._showCesiumTilesetProperties(model,item)
|
||||
elif model and hasattr(model, 'getTag') and model.getTag("gui_type"):
|
||||
self.updateGUIPropertyPanel(model)
|
||||
self.updateGUIPropertyPanel(model, item)
|
||||
elif model and hasattr(model, 'getTag') and model.getTag("light_type"):
|
||||
self.updateLightPropertyPanel(model)
|
||||
elif model:
|
||||
@ -1282,11 +1282,11 @@ class PropertyPanelManager:
|
||||
|
||||
|
||||
|
||||
def updateGUIPropertyPanel(self, gui_element):
|
||||
def updateGUIPropertyPanel(self, gui_element,item):
|
||||
"""更新GUI元素属性面板"""
|
||||
self.clearPropertyPanel()
|
||||
|
||||
itemText = gui_element.getTag("gui_type") or "未命名GUI元素"
|
||||
itemText = gui_element.getTag("name") or "未命名GUI元素"
|
||||
|
||||
user_visible = True
|
||||
user_visible = gui_element.getPythonTag("user_visible")
|
||||
@ -1305,9 +1305,11 @@ class PropertyPanelManager:
|
||||
def updateGUIName(text):
|
||||
# 更新GUI元素的标签
|
||||
gui_element.setTag("name", text)
|
||||
self.world.treeWidget.update_item_name(self.name_input.text(), item)
|
||||
# gui_element.setName(text)
|
||||
# 如果有场景管理器,也需要更新场景树
|
||||
if hasattr(self.world, 'scene_manager') and hasattr(self.world.scene_manager, 'updateSceneTree'):
|
||||
self.world.scene_manager.updateSceneTree()
|
||||
# if hasattr(self.world, 'scene_manager') and hasattr(self.world.scene_manager, 'updateSceneTree'):
|
||||
# self.world.scene_manager.updateSceneTree()
|
||||
|
||||
self.name_input.returnPressed.connect(lambda: updateGUIName(self.name_input.text()))
|
||||
|
||||
@ -1351,10 +1353,10 @@ class PropertyPanelManager:
|
||||
def updateText():
|
||||
text = textEdit.text()
|
||||
success = self.world.gui_manager.editGUIElement(gui_element, "text", text)
|
||||
if success:
|
||||
# 更新场景树显示的名称
|
||||
if hasattr(self.world, 'scene_manager') and hasattr(self.world.scene_manager, 'updateSceneTree'):
|
||||
self.world.scene_manager.updateSceneTree()
|
||||
# if success:
|
||||
# # 更新场景树显示的名称
|
||||
# if hasattr(self.world, 'scene_manager') and hasattr(self.world.scene_manager, 'updateSceneTree'):
|
||||
# self.world.scene_manager.updateSceneTree()
|
||||
|
||||
# 只在按下回车键或失去焦点时更新
|
||||
textEdit.returnPressed.connect(updateText)
|
||||
|
||||
@ -2216,7 +2216,6 @@ class CustomTreeWidget(QTreeWidget):
|
||||
|
||||
def add_node_to_tree_widget(self, node, parent_item, node_type):
|
||||
"""将node元素添加到树形控件"""
|
||||
|
||||
# BLACK_LIST 和依赖项导入保持不变
|
||||
BLACK_LIST = {'', '**', 'temp', 'collision'}
|
||||
from panda3d.core import CollisionNode, ModelRoot
|
||||
|
||||
Loading…
Reference in New Issue
Block a user