diff --git a/ui/property_panel.py b/ui/property_panel.py index a9cfb994..d2c51790 100644 --- a/ui/property_panel.py +++ b/ui/property_panel.py @@ -1,3 +1,4 @@ +from collections import deque from traceback import print_exc from types import new_class from typing import Hashable @@ -77,6 +78,10 @@ class PropertyPanelManager: # 当节点被拖拽后,需要根据新父节点的状态来更新可见性 self._syncEffectiveVisibility(node) + self._syncSceneVisibility() + def _syncSceneVisibility(self): + scene_root = self.world.render + self._syncEffectiveVisibility(scene_root) def updatePropertyPanel(self, item): @@ -4287,14 +4292,6 @@ class PropertyPanelManager: # 忽略 Actor 加载错误,很多模型都不是角色动画 print(f"[信息] 该模型不包含骨骼动画: {actor_error}") - # 只有在没有骨骼动画时才检测非骨骼动画 - if not has_skeletal_anim: - non_skeletal_anims = self._detectNonSkeletalAnimations(origin_model) - if non_skeletal_anims and self._validateNonSkeletalAnimations(origin_model, non_skeletal_anims): - self._buildNonSkeletalUI(origin_model, non_skeletal_anims, animation_layout) - has_animation = True - print(f"[信息] 检测到非骨骼动画: {list(non_skeletal_anims.keys())}") - # 如果都没有动画 if not has_animation: no_anim_label = QLabel("此模型无动画") diff --git a/ui/widgets.py b/ui/widgets.py index 056d04d6..52f97d1d 100644 --- a/ui/widgets.py +++ b/ui/widgets.py @@ -348,26 +348,22 @@ class CustomTreeWidget(QTreeWidget): event.ignore() return - # 检查是否是有效的父子关系 - if self.isValidParentChild(dragged_item, target_item): - # 保存当前的世界坐标 - world_pos = dragged_node.getPos(self.world.render) - - # 更新场景图中的父子关系 - dragged_node.wrtReparentTo(target_node) - - # 接受拖放事件,更新树形控件 - super().dropEvent(event) + # # 检查是否是有效的父子关系 + # if self.isValidParentChild(dragged_item, target_item): + # # 保存当前的世界坐标 + # world_pos = dragged_node.getPos(self.world.render) + # + # # 更新场景图中的父子关系 + # dragged_node.wrtReparentTo(target_node) + # + # # 接受拖放事件,更新树形控件 + # super().dropEvent(event) + # + # #self.world.property_panel.updateNodeVisibilityAfterDrag(dragged_item) + # # 更新属性面板 + # self.world.updatePropertyPanel(dragged_item) + # self.world.property_panel._syncEffectiveVisibility(dragged_node) - #self.world.property_panel.updateNodeVisibilityAfterDrag(dragged_item) - # 更新属性面板 - self.world.updatePropertyPanel(dragged_item) - self.world.property_panel._syncEffectiveVisibility(dragged_node) - - - - else: - event.ignore() print(f"dragged_node: {dragged_node}, target_node: {target_node}") @@ -416,7 +412,7 @@ class CustomTreeWidget(QTreeWidget): # 事后验证:确保节点仍在"场景"根节点下 self._ensureUnderSceneRoot(dragged_item) - + self.world.property_panel._syncEffectiveVisibility(dragged_node) event.accept() # try: