ef4ea45edc789eb7d4c4321b7822abbec298b98b
add mono c# (using dotnet9.0 from https://github.com/dotnet/runtime), add ECS (entt), add some c# code, add fastNoise
Prism Engine
Prism 是一个基于实体-组件系统 (ECS) 的轻量级 3D 编辑引擎,整合了 2D 与 3D 渲染管线、物理模拟 (PhysX/Box2D) 以及 C# 脚本支持。
✨ 特性
- 混合渲染
支持 2D 与 3D 渲染管线,基于 OpenGL 实现。 - ECS 架构
使用entt作为核心 ECS 库,组件化设计易于扩展。 - 物理模拟
- 3D 物理:NVIDIA PhysX(刚体、碰撞体)
- 2D 物理:Box2D(刚体、碰撞体、多种关节)
- C# 脚本
集成 Mono 运行时,允许使用 C# 编写实体逻辑。 - 资产管理系统
支持拖拽导入模型(Assimp)、纹理(stb)等资源。 - 编辑器界面
- 基于 ImGui、ImGuizmo、ImViewZmo 的编辑器面板
- 场景层级面板、对象属性面板、资源浏览器
- 物理调试可视化
- 动画系统
支持简单骨骼动画。 - 序列化
使用 YAML (yaml-cpp) 序列化场景和资产。 跨平台 (目前主要支持 Windows, PhysX没有成功构建)
🧩 已实现组件
// Core
TagComponent, RelationshipComponent, TransformComponent
// 2D Rendering
SpriteRendererComponent
// 2D Physics
RigidBody2DComponent, BoxCollider2DComponent, CircleCollider2DComponent,
DistanceJoint2DComponent, RevoluteJoint2DComponent,
PrismaticJoint2DComponent, WeldJoint2DComponent
// 3D Rendering
MeshComponent, CameraComponent,
DirectionalLightComponent, SkyLightComponent
// 3D Physics
RigidBodyComponent, BoxColliderComponent, SphereColliderComponent,
CapsuleColliderComponent, MeshColliderComponent
// Animation
AnimationComponent
// Scripting
ScriptComponent
组件列表仍在持续扩展中。
🛠️ 技术栈 / 依赖
| 领域 | 库 |
|---|---|
| 渲染 | OpenGL (GLAD), GLFW, GLM |
| 2D/3D 物理 | PhysX, Box2D |
| ECS | EnTT |
| 脚本 | Mono (.NET) |
| 资产加载 | Assimp, stb_image |
| 编辑器 UI | ImGui, ImGuizmo, ImViewZmo |
| 日志 | spdlog |
| 序列化 | yaml-cpp |
| 其他 | FastNoise (噪声生成), tinyfiledialogs(简单的文件打开) |
🚀 快速开始
环境要求
- Windows 10/11 (暂未适配Linux和Max, 暂时未能在Linux成功构建PhysX的库.后面可能会考虑去看看Jolt或者Bullet)
- MSVC C++17
- CMake 3.10+
- (mono 使用Net内部集成的,可以使用dotnet直接构建,目前使用版本为 8.0)
构建步骤
-
克隆仓库(包含子模块)
git clone --recursive https://github.com/xxx/PrismEngine.git -
配置依赖
- PhysX SDK: Prism/CmakeLists.txt内记录了是用的PhysX的构建配置,建议手动按照配置构建SDK,构建好后无需移动文件,项目可以自动链接库
-
编译:
- Cmake:
cd Prism cmake -B build -G Ninja cmake --build build --target PrismEditor --config Release -j10Visual Studio:
- visual Studio启用Cmake。 然后点击project下拉框,找到 PrismEditor,构建。
JetBrain Clion:
- clion 会自动识别Cmake, 运行调试配置找到PrismEditor构建。
📖 使用指南
- 创建新场景:
File -> New Scene或者Ctrl+N - 添加实体:在场景层级面板右键
Create Entity - 添加组件:选中实体后,在属性面板点击
Add Component - 拖拽资源:从资源浏览器将模型/纹理拖入场景或实体
🙏 致谢
- 感谢所有开源库的作者们
- 感谢 Unity、Unreal 等商业引擎
- 特别感谢 Hazel Engine 系列教程的启发
Description
Languages
C++
86.2%
GLSL
6.5%
C#
6.4%
CMake
0.8%
C
0.1%