13 KiB
13 KiB
项目任务清单(Project Task Checklist)
更新时间:2026-03-01
适用范围:d:\IMGUI\EG 本地工作区(不含远程仓库内容)
目标
- 保持编辑器主路径稳定运行在 ImGui + Panda3D。
- 持续收敛历史兼容耦合(
interface_manager/treeWidget/gui_manager)。 - 基于可执行任务包推进非 VR 优化重构。
当前状态总览
- Qt 运行依赖主路径已清理完成(排除
RenderPipelineFile)。 - 项目已进入“非 VR 结构优化阶段”。
_getActor、updateGizmoDrag、_update_drag第一轮拆分已完成。资源管理器面板已完成“保留原布局/样式/交互”的第二轮拆分收敛。_draw_component_properties已完成第一轮“编排入口 + 子流程”拆分(入口1441 -> 3行)。_handle_resize_drag已完成第三轮“边界计算 / 更新应用”细拆(核心44行)。_draw_video_source_and_audio_controls已完成第三轮“音频/视频源/加载应用”拆分(231 -> 4行)。_draw_text_and_button_properties已完成第四轮“文本/颜色/按钮贴图”拆分(216 -> 14行)。_set_parent_child_relationship已完成第四轮“关系编排 + 可见层级”拆分(234 -> 43行)。_draw_layout_transform_properties已完成第四轮“布局/尺寸/Z-Offset”拆分(200 -> 10行)。
已完成(Done)
A. Qt 清理与迁移完成
- 清理主路径 Qt 直接依赖:
PyQt/PySide/Qt扫描主路径为0。 core/InfoPanelManager.py:去除 Qt 直接导入。core/selection.py:光标逻辑改为 Panda3D 路径。scene/scene_manager_convert_tiles_mixin.py:移除QProgressDialog。ui/widgets.py:替换为 legacy 占位模块。ui/icon_manager.py:替换为无 Qt 兼容实现。core/world.py/core/vr_manager.py/core/vr/testing/test_mode.py:清理qtWidget语义依赖。requirements/*:移除 Qt/PySide 运行依赖。
B. 上下文收敛与基础重构完成
- 建立
core/editor_context.py,并完成第一批接入:core/event_handler.pycore/selection.pycore/InfoPanelManager.pyui/panels/runtime_actions.pycore/terrain_manager.pyscene/scene_manager_convert_tiles_mixin.pyscene/scene_manager_serialization_mixin.pyscene/scene_manager_model_mixin.py
scene/scene_manager_io_mixin.py::loadScene完成两轮拆分(556 -> 74行)。main.py::__init__第一轮拆分完成(375 -> 27行,VR 初始化逻辑保持原样)。
C. 面板模块化完成
ui/panels/editor_panels.py按布局拆分为 4 个模块:editor_panels_top.pyeditor_panels_left.pyeditor_panels_center.pyeditor_panels_right.py
editor_panels_right.py再拆分为 3 个子 mixin:editor_panels_right_transform.pyeditor_panels_right_material.pyeditor_panels_right_collision.py
D. 动画加载入口拆分完成(第一轮)
ui/panels/animation_tools.py::_getActor第一轮拆分完成:- 行数:
510 -> 39 - 新增 helper:
_sync_owner_model_path_tags、_get_valid_cached_actor、_try_memory_fallback_actor、_collect_actor_candidate_paths、_try_actor_from_path等 - 保持策略:文件路径优先,失败后内存/autoBind 兜底
- 行数:
E. Gizmo 拖拽拆分完成(第一轮)
core/selection.py::updateGizmoDrag第一轮拆分完成:- 行数:
278 -> 32 - 近似圈复杂度:
65 -> 10 - 新增 helper:
_validate_gizmo_drag_state、_apply_scale_drag、_apply_rotate_drag、_compute_axis_movement_distance、_apply_translate_drag - 保持目标:gizmo 缩放/旋转/平移行为不变
- 行数:
F. LUI 拖拽链路拆分完成(第一轮)
ui/LUI/lui_manager_interaction.py::_update_drag第一轮拆分完成:- 行数:
348 -> 28 - 近似圈复杂度:
79 -> 7 - 新增 helper:
_process_canvas_drag、_try_start_pending_component_drag、_finish_component_drag_if_released、_update_active_component_drag - 保持目标:Canvas/组件拖拽、吸附与释放语义不变
- 行数:
G. 资源管理器面板拆分完成(保留布局版)
- 第一轮低侵入优化:
- 行数:
310 -> 163 - 近似圈复杂度:
88 -> 41 - 新增 helper:
_draw_resource_toolbar_and_filters、_load_resource_icon、_handle_resource_item_selection、_open_resource_item_context_menu、_handle_resource_file_double_click、_draw_resource_context_menu
- 行数:
- 第二轮(按当前标准重启,保持布局/样式/文案/交互顺序):
- 入口函数行数:
163 -> 23(相对原始310 -> 23) - 新增 helper:
_update_resource_manager_window_rect、_draw_resource_directory_entries、_draw_resource_directory_entry、_draw_resource_directory_children、_draw_resource_subdir_entry、_draw_resource_subfile_entry、_draw_resource_file_entries、_draw_resource_file_entry - 保持目标:不改视觉布局,不改交互语义,仅做结构分解
- 入口函数行数:
H. LUI 属性面板拆分完成(第一轮编排)
ui/LUI/lui_function_properties.py::_draw_component_properties第一轮拆分完成:- 入口函数行数:
1441 -> 3 - 编排主流程函数:
_draw_component_properties_core = 34行 - 新增 helper:
_draw_text_and_button_properties(216行)_draw_layout_transform_properties(200行)_draw_type_specific_properties(835行)_draw_anchor_and_hierarchy_properties(168行)
- 保持目标:属性面板行为不变,先完成入口和流程层收敛
- 入口函数行数:
I. LUI 缩放链路拆分完成(第二轮)
ui/LUI/lui_manager_interaction.py::_handle_resize_drag第二轮拆分完成:- 入口函数行数:
257 -> 3 - 编排主流程函数:
_handle_resize_drag_core = 44行 - 新增 helper:
_finish_resize_drag_if_released(19行)_compute_resize_drag_bounds(109行)_apply_resize_drag_updates(110行)
- 保持目标:缩放手柄行为与边界语义保持一致
- 入口函数行数:
J. LUI 属性类型分支拆分完成(第二轮)
ui/LUI/lui_function_properties.py::_draw_type_specific_properties第二轮拆分完成:- 主函数行数:
835 -> 25(类型分发入口) - 新增类型 helper:
_draw_type_props_input_field(91行)_draw_type_props_slider(11行)_draw_type_props_checkbox(19行)_draw_type_props_plane_image(152行)_draw_type_props_frame(14行)_draw_type_props_selectbox(84行)_draw_type_props_http_text(72行)_draw_type_props_video(10行)_draw_video_source_and_audio_controls(231行)_draw_video_playback_controls(147行)
- 保持目标:各组件类型交互语义保持一致,先完成类型分发层收敛
- 主函数行数:
K. LUI 视频属性段拆分完成(第三轮)
ui/LUI/lui_function_properties.py::_draw_video_source_and_audio_controls第三轮拆分完成:- 主函数行数:
231 -> 4(编排入口) - 新增 helper:
_draw_video_audio_controls(26行)_draw_video_source_controls(19行)_process_pending_video_source(22行)_load_video_texture_from_source(21行)_apply_loaded_video_texture(14行)_sync_video_size_and_sprite(28行)_replace_video_sprite(23行)_refresh_video_keep_alive_node(22行)_load_audio_for_component(22行)_start_video_texture_playback(7行)
- 保持目标:本地视频加载/URL加载回退/音频联动语义保持一致
- 主函数行数:
L. LUI 缩放链路细拆完成(第三轮)
ui/LUI/lui_manager_interaction.py::_compute_resize_drag_bounds/_apply_resize_drag_updates第三轮细拆完成:- 主函数行数:
109 -> 27/110 -> 21 - 新增 helper:
_get_resize_start_values(7行)_apply_resize_handle_delta(36行)_apply_resize_min_size_clamp(15行)_apply_shift_keep_ratio_resize(17行)_apply_alt_center_resize(22行)_cache_resize_canvas_bounds(8行)_sanitize_resize_dimensions(6行)_resolve_resize_parent_context(13行)_write_resize_component_data(5行)_apply_resize_component_position(9行)_apply_resize_component_size_by_type(24行)_apply_button_resize_size(7行)_apply_input_field_resize_size(10行)_sync_input_field_layout_stretch(22行)_post_resize_component_sync(7行)_get_resize_modifier_info(7行)
- 保持目标:缩放手柄行为与边界语义保持一致
- 主函数行数:
M. LUI 文本按钮属性段拆分完成(第四轮)
ui/LUI/lui_function_properties.py::_draw_text_and_button_properties第四轮拆分完成:- 主函数行数:
216 -> 14 - 新增 helper:
_draw_text_content_editor(13行)_draw_text_font_size_editor(18行)_draw_text_color_editor(11行)_sync_text_or_button_color(10行)_apply_button_layout_color(12行)_apply_text_color(3行)_draw_button_texture_controls(19行)_draw_button_texture_pick_button(22行)_apply_button_texture_variant(28行)_unpack_button_atlas_result(9行)_apply_button_custom_textures(11行)_fit_button_to_default_texture_size(22行)_clear_button_custom_textures(13行)_draw_button_texture_path_labels(7行)
- 保持目标:文本/按钮编辑行为与贴图切换语义保持一致
- 主函数行数:
N. LUI 层级编辑父子关系拆分完成(第四轮)
ui/LUI/lui_manager_editor.py::_set_parent_child_relationship第四轮拆分完成:- 主函数行数:
234 -> 43 - 新增 helper:
_is_valid_relationship_index(5行)_prepare_parent_child_link(8行)_remove_child_from_old_parent(8行)_attach_child_to_new_parent(6行)_compute_new_child_local_position(7行)_resolve_parent_visual_object(10行)_set_child_visual_parent_policy(12行)_clamp_child_local_within_parent(27行)_sync_child_canvas_index_with_parent(7行)_apply_child_absolute_position(10行)_ensure_child_visibility_and_layer(19行)_ensure_button_child_visibility(15行)_ensure_frame_child_visibility(9行)_ensure_media_child_visibility(13行)_ensure_child_sprite_visibility_and_layer(24行)_finalize_parent_child_link(9行)
- 保持目标:逻辑父子关系/可见层级/画布索引同步语义保持一致
- 主函数行数:
O. LUI 布局变换属性段拆分完成(第四轮)
ui/LUI/lui_function_properties.py::_draw_layout_transform_properties第四轮拆分完成:- 主函数行数:
200 -> 10 - 新增 helper:
_draw_fill_layout_controls(37行)_draw_position_controls(18行)_draw_size_controls(17行)_draw_width_control(23行)_draw_height_control(19行)_post_size_control_sync(9行)_draw_layout_group_controls(53行)_draw_z_offset_controls(27行)
- 保持目标:填充模式/尺寸联动/Layout Group/Z-Offset 行为一致
- 主函数行数:
下一步(Next)
N1 顶部菜单栏 拆分(最高优先级,非 VR)
- 目标文件:
ui/panels/editor_panels_top.py::draw_menu_bar - 当前规模:
227行 - 验收目标:
- 拆分为“菜单组渲染 / 行为分发 / 状态同步”子流程
- 单函数规模收敛到
<= 170行 - 保持现有菜单项顺序与功能一致
N2 场景保存链路 拆分(高优先级,非 VR)
- 目标文件:
scene/scene_manager_io_mixin.py::saveScene - 当前规模:
222行 - 验收目标:
- 拆分为“保存前校验 / 节点序列化 / 后处理”子流程
- 单函数规模收敛到
<= 170行 - 保持保存行为与输出格式一致
N3 属性面板方法注入 拆分(中优先级,非 VR)
- 目标文件:
core/InfoPanelManager.py::add_methods_to_property_panel - 当前规模:
209行 - 验收目标:
- 拆分为“能力绑定 / 兼容兜底 / 日志分层”子流程
- 单函数规模收敛到
<= 170行 - 保持属性面板行为一致
验收标准(阶段)
- 不安装 PyQt/PySide 时,
python main.py可进入编辑器主界面。 - 非 VR 主流程(导入/选择/变换/保存/加载)无 Qt 残余异常。
- 每轮重构后可通过最小回归(启动、导入、播放动画、保存加载)。
关联文档
- 优化分析:
PROJECT_OPTIMIZATION_ANALYSIS.md - 模块索引:
PROJECT_MODULE_INDEX.md - 全量目录:
PROJECT_FULL_CATALOG.md - 历史分析:
IMGUI_MODULE_ANALYSIS.md