From 0a1abebe24d40250f6367b47fd6944e43eead708 Mon Sep 17 00:00:00 2001 From: Rowland <975945824@qq.com> Date: Fri, 12 Dec 2025 10:29:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build_kylin.sh | 30 ++++++++++++++++ build_linux.sh | 30 ++++++++++++++++ build_windows.bat | 12 +++++++ count_code.sh | 17 --------- project/project_manager.py | 21 ++++++++--- results.txt | 73 -------------------------------------- tox.ini | 35 ------------------ ui/main_window.py | 8 +++++ 8 files changed, 96 insertions(+), 130 deletions(-) create mode 100755 build_kylin.sh create mode 100755 build_linux.sh create mode 100755 build_windows.bat delete mode 100755 count_code.sh mode change 100644 => 100755 project/project_manager.py delete mode 100644 results.txt delete mode 100644 tox.ini diff --git a/build_kylin.sh b/build_kylin.sh new file mode 100755 index 00000000..ef5c243e --- /dev/null +++ b/build_kylin.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +echo "Building EG_Engine with PyInstaller..." +/home/hello/.local/bin/pyinstaller --onedir --windowed --name=EG_Engine \ + --exclude-module pyassimp \ + --add-data="RenderPipelineFile:RenderPipelineFile" \ + --add-data="QPanda3D:QPanda3D" \ + --add-data="core:core" \ + --add-data="gui:gui" \ + --add-data="ui:ui" \ + --add-data="scene:scene" \ + --add-data="project:project" \ + --add-data="demo:demo" \ + --add-data="plugins:plugins" \ + --add-data="scripts:scripts" \ + --hidden-import=PyQt5.sip \ + --hidden-import=panda3d.core \ + main.py + +echo "Creating run.sh script in dist/EG_Engine/" +cat > dist/EG_Engine/run.sh << 'EOF' +cd .. +cd .. +python3.10 main.py "$@" +EOF + +echo "Making run.sh executable" +chmod +x dist/EG_Engine/run.sh + +echo "Build completed!" \ No newline at end of file diff --git a/build_linux.sh b/build_linux.sh new file mode 100755 index 00000000..ac68f375 --- /dev/null +++ b/build_linux.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +echo "Building EG_Engine with PyInstaller..." +pyinstaller --onedir --windowed --name=EG_Engine \ + --exclude-module pyassimp \ + --add-data="RenderPipelineFile:RenderPipelineFile" \ + --add-data="QPanda3D:QPanda3D" \ + --add-data="core:core" \ + --add-data="gui:gui" \ + --add-data="ui:ui" \ + --add-data="scene:scene" \ + --add-data="project:project" \ + --add-data="demo:demo" \ + --add-data="plugins:plugins" \ + --add-data="scripts:scripts" \ + --hidden-import=PyQt5.sip \ + --hidden-import=panda3d.core \ + main.py + +echo "Creating run.sh script in dist/EG_Engine/" +cat > dist/EG_Engine/run.sh << 'EOF' +cd .. +cd .. +python3 main.py "$@" +EOF + +echo "Making run.sh executable" +chmod +x dist/EG_Engine/run.sh + +echo "Build completed!" \ No newline at end of file diff --git a/build_windows.bat b/build_windows.bat new file mode 100755 index 00000000..84fecdc9 --- /dev/null +++ b/build_windows.bat @@ -0,0 +1,12 @@ +@echo off +set PYTHONPATH=%~dp0_internal +pyinstaller --onedir --windowed --name=EG_Engine --exclude-module pyassimp --add-data="RenderPipelineFile;RenderPipelineFile" --add-data="QPanda3D;QPanda3D" --add-data="core;core" --add-data="gui;gui" --add-data="ui;ui" --add-data="scene;scene" --add-data="project;project" --add-data="demo;demo" --add-data="plugins;plugins" --add-data="scripts;scripts" --hidden-import=PyQt5.sip --hidden-import=panda3d.core main.py + +echo @echo off > dist\EG_Engine\run.bat +echo set PYTHONPATH=%%~dp0_internal >> dist\EG_Engine\run.bat +echo cd .. >> dist\EG_Engine\run.bat +echo cd .. >> dist\EG_Engine\run.bat +echo python main.py >> dist\EG_Engine\run.bat +echo pause >> dist\EG_Engine\run.bat + +pause \ No newline at end of file diff --git a/count_code.sh b/count_code.sh deleted file mode 100755 index cc6cb095..00000000 --- a/count_code.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -# 清空或创建结果文件 -echo "" > results.txt - -# 读取一级目录列表并逐个统计代码行数 -while read dir; do - if [ -d "$dir" ] && [ "$(dirname "$dir")" = "." ]; then - echo "Processing $dir..." - echo "统计的是文件夹: $dir" >> results.txt - # 使用 cloc 统计代码行数,并将结果追加到文件中 - cloc "$dir" >> results.txt - echo "----------------------------------------" >> results.txt - fi -done < directories.txt - -echo "统计完成,结果已保存到 results.txt" \ No newline at end of file diff --git a/project/project_manager.py b/project/project_manager.py old mode 100644 new mode 100755 index 090d43b2..87a7ec17 --- a/project/project_manager.py +++ b/project/project_manager.py @@ -469,12 +469,23 @@ class ProjectManager: success = self._executeStandardBuild(build_dir, parent_window) if success: + # 创建run.sh文件 + run_sh_path = os.path.join(build_dir, "run.sh") + + try: + with open(run_sh_path, "w") as f: + f.write("#!/bin/bash\n") + f.write("python3 main.py \"$@\"\n") + + # 添加执行权限 + import stat + st = os.stat(run_sh_path) + os.chmod(run_sh_path, st.st_mode | stat.S_IEXEC) + except Exception as e: + print(f"创建run.sh文件失败: {str(e)}") + QMessageBox.information(parent_window, "成功", - "打包完成!\n可执行文件在 build/dist/ 目录中。\n" - "支持的格式:\n" - "- Windows: .exe 安装程序\n" - "- Linux: .tar.gz 压缩包\n" - "- 通用: .zip 压缩包") + "打包完成!\n可执行文件在 build 目录中。\n") return True else: return False diff --git a/results.txt b/results.txt deleted file mode 100644 index c712161c..00000000 --- a/results.txt +++ /dev/null @@ -1,73 +0,0 @@ -✦ 3D引擎通常包含以下类型的插件: - - 1. 渲染插件 - - 高级渲染管线(如PBR、延迟渲染) - - 后处理效果(Bloom、SSAO、HDR等) - - 阴影系统优化 - - 多光源渲染管理 - - 2. 物理插件 - - 刚体动力学(Bullet、PhysX) - - 软体物理和布料模拟 - - 流体动力学 - - 碰撞检测系统 - - 3. 动画插件 - - 骨骼动画系统 - - Morphing和变形动画 - - 粒子系统 - - 程序化动画 - - 4. AI插件 - - 寻路和导航网格 - - 行为树和状态机 - - 路径规划算法 - - 群体智能(如鸟群、鱼群) - - 5. 音频插件 - - 3D空间音效 - - 音频混响和效果 - - 动态音乐系统 - - 语音识别和合成 - - 6. UI插件 - - 2D/3D用户界面系统 - - 触摸和手势识别 - - 动态界面布局 - - 主题和样式管理 - - 7. 地形和环境插件 - - 程序化地形生成 - - 天气和季节系统 - - 植被分布和生态模拟 - - 水体和流体模拟 - - 8. 输入和控制插件 - - 多平台输入支持 - - 手柄和VR控制器 - - 触觉反馈系统 - - 语音控制 - - 9. 网络和多人游戏插件 - - 网络同步 - - 服务器架构 - - 实时通信 - - 匹配系统 - - 10. 工具和编辑器插件 - - 关卡编辑器 - - 资源管理工具 - - 调试和性能分析 - - 版本控制集成 - - 11. 平台特定插件 - - 移动平台优化 - - VR/AR支持 - - 主机平台适配 - - WebGL导出 - - 12. 数据和存储插件 - - 存档系统 - - 云端同步 - - 数据库集成 - - 配置管理 diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 110bc51b..00000000 --- a/tox.ini +++ /dev/null @@ -1,35 +0,0 @@ -[tox] -envlist = py310 - -[testenv] -deps = - pytest - pytest-qt - PyQt5>=5.15.9 - PySide6>=6.8.1 - Panda3D>=1.10.15 -commands = - pytest demo/quick_script_test.py - -[testenv:lint] -deps = - flake8 -commands = - flake8 core/ demo/ scripts/ - -[testenv:coverage] -deps = - pytest - pytest-cov - PyQt5>=5.15.9 - PySide6>=6.8.1 - Panda3D>=1.10.15 -commands = - pytest --cov=core --cov=demo --cov=scripts - -[testenv:memory] -deps = - memory-profiler - Panda3D>=1.10.15 -commands = - python -m memory_profiler memory_test_example.py \ No newline at end of file diff --git a/ui/main_window.py b/ui/main_window.py index fe94df64..4492ccfd 100644 --- a/ui/main_window.py +++ b/ui/main_window.py @@ -1176,11 +1176,19 @@ class MainWindow(QMainWindow): # 帮助菜单 self.helpMenu = menubar.addMenu('帮助') self.aboutAction = self.helpMenu.addAction('关于') + self.aboutAction.triggered.connect(self.showAboutDialog) tool_menu = self.menuBar().addMenu("配置") plugin_config_action = tool_menu.addAction("渲染管线插件配置") plugin_config_action.triggered.connect(self.open_plugin_config_dialog) + def showAboutDialog(self): + msgBox = QMessageBox() + msgBox.setWindowTitle("关于") + msgBox.setText(f'元泰引擎系统\nMetaCore\n版本:v1.0') + msgBox.setIcon(QMessageBox.NoIcon) + msgBox.exec_() + def open_plugin_config_dialog(self): """打开插件配置对话框""" try: