Repository: galacean/engine
Pull request #2702: Update particle 1.5 doc
Author: login: Sway007
Labels: name: documentation
description: Improvements or additions to documentation
Created: 2025-05-27T08:41:02Z | Merged: 2025-05-27T10:13:54Z

### Please check if the PR fulfills these requirements

- [x] The commit message follows our [guidelines](https://github.com/galacean/engine/blob/main/.github/COMMIT_MESSAGE_CONVENTION.md)
- [ ] Tests for the changes have been added (for bug fixes / features)
- [x] Docs have been added / updated (for bug fixes / features)

### What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)

### What is the current behavior? (You can also link to an open issue here)

### What is the new behavior (if this is a feature change)?

### Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)

### Other information:

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Documentation**
  - Updated emission module documentation with improved shape type descriptions, corrected links, and added the new MeshShape emitter.
  - Added documentation for the ForceOverLifetime particle module, detailing its purpose, properties, and usage.
  - Clarified property descriptions and corrected links in the Velocity Over Lifetime module documentation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/docs/en/graphics/particle/renderer-emission-module.mdx b/docs/en/graphics/particle/renderer-emission-module.mdx
index 8d9c56539b..00a03ec433 100644
--- a/docs/en/graphics/particle/renderer-emission-module.mdx
+++ b/docs/en/graphics/particle/renderer-emission-module.mdx
@@ -33,10 +33,9 @@ Currently, the engine has the following built-in emitter shapes, providing corre
 
 | Emitter Shape Type                                              | Description                          |
 | --------------------------------------------------------------- | ------------------------------------ |
-| [BoxShape](/apis/core/#EmissionModule-BoxShape)               | `BaseShape` object, emitter shape is a cube |
-| [CircleShape](/apis/core/#EmissionModule-CircleShape)         | `BaseShape` object, emitter shape is a circle |
-| [ConeShape](/apis/core/#EmissionModule-ConeShape)             | `BaseShape` object, emitter shape is a cone |
-| [HemisphereShape](/apis/core/#EmissionModule-HemisphereShape) | `BaseShape` object, emitter shape is a hemisphere |
-| [SphereShape](/apis/core/#EmissionModule-SphereShape)         | `BaseShape` object, emitter shape is a sphere |
-
-It looks like you haven't pasted the Markdown content yet. Please provide the content you want translated, and I'll help you with the translation while adhering to the rules you've specified.
+| [BoxShape](/apis/core/#BoxShape)               | `BoxShape` object, emitter shape is a cube |
+| [MeshShape](/apis/core/#MeshShape)             | `MeshShape` object, emitter shape is specified by selected mesh |
+| [CircleShape](/apis/core/#CircleShape)         | `CircleShape` object, emitter shape is a circle |
+| [ConeShape](/apis/core/#ConeShape)             | `ConeShape` object, emitter shape is a cone |
+| [HemisphereShape](/apis/core/#HemisphereShape) | `HemisphereShape` object, emitter shape is a hemisphere |
+| [SphereShape](/apis/core/#SphereShape)         | `SphereShape` object, emitter shape is a sphere |
diff --git a/docs/en/graphics/particle/renderer-force-module.mdx b/docs/en/graphics/particle/renderer-force-module.mdx
new file mode 100644
index 0000000000..69c13b7ba6
--- /dev/null
+++ b/docs/en/graphics/particle/renderer-force-module.mdx
@@ -0,0 +1,19 @@
+---
+title: Lifecycle Force Module
+---
+
+### Lifecycle Force Module
+
+ForceOverLifetime inherits from `ParticleGeneratorModule` and is used to apply acceleration effects to particles, typically for simulating 3D force fields such as wind.
+
+<Image src="https://mdn.alipayobjects.com/huamei_aftkdx/afts/img/A*UsPoQp-ZJGwAAAAAQLAAAAgAeteEAQ/fmt.webp" alt="ForceOverLifetime" />
+
+## Properties
+
+| Property                                                    | Description                                                                                         |
+| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
+| [space](/apis/core/#ParticleSimulationSpace)  | Select the space for force changes, which can be world space or local space                      |
+| forceX | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the x-axis force of particles over their lifetime |
+| forceY | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the y-axis force of particles over their lifetime |
+| forceZ | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the z-axis force of particles over their lifetime |
+
diff --git a/docs/en/graphics/particle/renderer-velocity-module.mdx b/docs/en/graphics/particle/renderer-velocity-module.mdx
index dcf3bf03af..765dc56fd7 100644
--- a/docs/en/graphics/particle/renderer-velocity-module.mdx
+++ b/docs/en/graphics/particle/renderer-velocity-module.mdx
@@ -17,7 +17,7 @@ label: Graphics/Particle
 | Property                                                    | Description                                                                                         |
 | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
 | [space](/apis/core/#VelocityOverLifetimeModule-velocityZ)  | Select the space for velocity changes, which can be world space or local space                      |
-| [velocityX](/apis/core/#VelocityOverLifetimeModule-velocityX) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the x-axis rotation of particles over their lifetime |
-| [velocityY](/apis/core/#VelocityOverLifetimeModule-velocityY) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the y-axis rotation of particles over their lifetime |
-| [velocityZ](/apis/core/#VelocityOverLifetimeModule-velocityZ) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the z-axis rotation of particles over their lifetime |
+| [velocityX](/apis/core/#VelocityOverLifetimeModule-velocityX) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the x-axis velocity of particles over their lifetime |
+| [velocityY](/apis/core/#VelocityOverLifetimeModule-velocityY) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the y-axis velocity of particles over their lifetime |
+| [velocityZ](/apis/core/#VelocityOverLifetimeModule-velocityZ) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) object representing the z-axis velocity of particles over their lifetime |
 
diff --git a/docs/zh/graphics/particle/renderer-emission-module.mdx b/docs/zh/graphics/particle/renderer-emission-module.mdx
index c1df47fecd..ec7ecf304e 100644
--- a/docs/zh/graphics/particle/renderer-emission-module.mdx
+++ b/docs/zh/graphics/particle/renderer-emission-module.mdx
@@ -33,8 +33,9 @@ label: Graphics/Particle
 
 | 发射器形状类型                                               | 释义                                 |
 | ------------------------------------------------------------ | ------------------------------------ |
-| [BoxShape](/apis/core/#EmissionModule-BoxShape)               | `BaseShape` 对象，发射器形状为立方体 |
-| [CircleShape](/apis/core/#EmissionModule-CircleShape)         | `BaseShape` 对象，发射器形状为圆圈   |
-| [ConeShape](/apis/core/#EmissionModule-ConeShape)             | `BaseShape` 对象，发射器形状为类圆锥 |
-| [HemisphereShape](/apis/core/#EmissionModule-HemisphereShape) | `BaseShape` 对象，发射器形状为半球   |
-| [SphereShape](/apis/core/#EmissionModule-SphereShape)         | `BaseShape` 对象，发射器形状为球体   |
+| [BoxShape](/apis/core/#BoxShape)               | `BoxShape` 对象，发射器形状为立方体 |
+| [MeshShape](/apis/core/#MeshShape)             | `MeshShape` 对象，发射器形状为指定的 Mesh |
+| [CircleShape](/apis/core/#CircleShape)         | `CircleShape` 对象，发射器形状为圆圈   |
+| [ConeShape](/apis/core/#ConeShape)             | `ConeShape` 对象，发射器形状为类圆锥 |
+| [HemisphereShape](/apis/core/#HemisphereShape) | `HemisphereShape` 对象，发射器形状为半球   |
+| [SphereShape](/apis/core/#SphereShape)         | `SphereShape` 对象，发射器形状为球体   |
diff --git a/docs/zh/graphics/particle/renderer-force-module.mdx b/docs/zh/graphics/particle/renderer-force-module.mdx
new file mode 100644
index 0000000000..2b7f3088a3
--- /dev/null
+++ b/docs/zh/graphics/particle/renderer-force-module.mdx
@@ -0,0 +1,16 @@
+---
+title: 生命周期力模块
+---
+
+ForceOverLifetime 继承自 `ParticleGeneratorModule`，用于对粒子添加加速度效果，通常用于模拟 3 维力场效果，比如风。
+
+<Image src="https://mdn.alipayobjects.com/huamei_aftkdx/afts/img/A*UsPoQp-ZJGwAAAAAQLAAAAgAeteEAQ/fmt.webp" alt="ForceOverLifetime" />
+
+## 属性
+
+| 属性 | 释义 |
+| ---- | ---- |
+| [space](/apis/core/#ParticleSimulationSpace)     | 选择力变化的空间，可以是世界空间或本地空间                                                        |
+| forceX | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 x 轴力 |
+| forceY | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 y 轴力 |
+| forceZ | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 z 轴力 |
diff --git a/docs/zh/graphics/particle/renderer-velocity-module.mdx b/docs/zh/graphics/particle/renderer-velocity-module.mdx
index 50bab5099c..feee8d4a41 100644
--- a/docs/zh/graphics/particle/renderer-velocity-module.mdx
+++ b/docs/zh/graphics/particle/renderer-velocity-module.mdx
@@ -16,7 +16,7 @@ label: Graphics/Particle
 
 | 属性                                                         | 释义                                                                                                |
 | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
-| [space](/apis/core/#VelocityOverLifetimeModule-velocityZ)     | 选择速度变化的空间，可以是世界空间或本地空间                                                        |
-| [velocityX](/apis/core/#VelocityOverLifetimeModule-velocityX) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 x 轴旋转 |
-| [velocityY](/apis/core/#VelocityOverLifetimeModule-velocityY) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 y 轴旋转 |
-| [velocityZ](/apis/core/#VelocityOverLifetimeModule-velocityZ) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 z 轴旋转 |
+| [space](/apis/core/#ParticleSimulationSpace)     | 选择速度变化的空间，可以是世界空间或本地空间                                                        |
+| [velocityX](/apis/core/#VelocityOverLifetimeModule-velocityX) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 x 轴速度 |
+| [velocityY](/apis/core/#VelocityOverLifetimeModule-velocityY) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 y 轴速度 |
+| [velocityZ](/apis/core/#VelocityOverLifetimeModule-velocityZ) | [ParticleCompositeCurve](/apis/core/#ParticleCompositeCurve) 对象，表示粒子在其生命周期内的 z 轴速度 |


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>🧹 Nitpick comments (3)</summary><blockquote>

<details>
<summary>docs/zh/graphics/particle/renderer-emission-module.mdx (1)</summary><blockquote>

`36-41`: **Approve MeshShape addition but refine ordering and descriptions**  
新添加的 `MeshShape` 条目和直接链接指向看起来都很正确，提升了文档覆盖范围。为增强可读性和一致性，建议：
- 将列表按字母顺序排列（例如 BoxShape, CircleShape, ConeShape, HemisphereShape, MeshShape, SphereShape）。
- 优化 ConeShape 的描述，去掉“类”，改为“发射器形状为圆锥”。

</blockquote></details>
<details>
<summary>docs/zh/graphics/particle/renderer-force-module.mdx (2)</summary><blockquote>

`5-7`: **Standardize module name formatting and alt text**  
为了与其他文档保持一致，模块名应使用代码格式并链接到 API：
```md
[`ForceOverLifetimeModule`](/apis/core/#ForceOverLifetimeModule)
```
此外，建议将 `<Image>` 的 `alt` 文本从 `ForceOverLifetime` 改为更具描述性的内容，如 `ForceOverLifetime 模块示例`。

---

`11-16`: **Enhance property table consistency and linking**  
与其他模块一致，建议对 `forceX`、`forceY`、`forceZ` 使用链接语法并加上反引号，例如：
```md
| [forceX](/apis/core/#ForceOverLifetimeModule-forceX) | `ParticleCompositeCurve` 对象，表示粒子在其生命周期内的 x 轴加速度 |
```
同时确保表格列对齐并包含尾部的 `|`。

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 54203492b48561b76d9da312f3c7e8d4774f2df2 and 3958d2755420184095e2ce4908c0cc4391b2daf9.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `docs/zh/graphics/particle/renderer-emission-module.mdx` (1 hunks)
* `docs/zh/graphics/particle/renderer-force-module.mdx` (1 hunks)
* `docs/zh/graphics/particle/renderer-velocity-module.mdx` (1 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (3)</summary>

* GitHub Check: e2e (22.x)
* GitHub Check: codecov
* GitHub Check: build (22.x, windows-latest)

</details>

<details>
<summary>🔇 Additional comments (1)</summary><blockquote>

<details>
<summary>docs/zh/graphics/particle/renderer-velocity-module.mdx (1)</summary>

`19-22`: **Links and property descriptions look accurate**  
`space` 属性现已正确链接到 `ParticleSimulationSpace`，各轴向速度属性的描述和锚点也非常清晰。请确认这些锚点（如 `VelocityOverLifetimeModule-velocityZ`）在核心 API 文档中存在且拼写一致。

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-27T08:43:44Z
user: login: hhhhkrx
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T08:56:27Z
user: login: Sway007
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-27T09:06:43Z
user: login: Sway007
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-27T09:06:48Z
user: login: cptbtptpbcptdtptp
body: +1
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-05-27T10:12:25Z

Review comments:
diff_hunk: @@ -0,0 +1,16 @@
+---
+title: 生命周期加速度模块
+---
path: docs/zh/graphics/particle/renderer-force-module.mdx
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Add missing front matter fields for consistency**  
本文件 front matter 仅包含 `title`，缺少其他页面统一使用的字段。建议补充 `order`, `type`, `group`, `label`，例如：
```yaml
---
order: 6
title: 生命周期加速度模块
type: 图形
group: 粒子
label: Graphics/Particle
---
```

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
In docs/zh/graphics/particle/renderer-force-module.mdx at lines 1 to 3, the
front matter only includes the title field, missing other standard fields used
across pages. Add the fields order, type, group, and label with appropriate
values as shown in the example to maintain consistency and proper
categorization.
```

</details>

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-05-27T08:43:44Z
author_association: NONE
diff_hunk: @@ -0,0 +1,16 @@
+---
+title: 生命周期加速度模块
path: docs/zh/graphics/particle/renderer-force-module.mdx
user: login: hhhhkrx
body: 生命周期力
created_at: 2025-05-27T08:54:52Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,16 @@
+---
+title: 生命周期加速度模块
+---
+
+ForceOverLifetime 继承自 `ParticleGeneratorModule`，用于对粒子添加加速度效果，通常用于模拟 3 维力场效果，比如风。
+
+<Image src="https://mdn.alipayobjects.com/huamei_aftkdx/afts/img/A*UsPoQp-ZJGwAAAAAQLAAAAgAeteEAQ/fmt.webp" alt="ForceOverLifetime" />
+
+## 属性
+
+| 属性 | 释义 |
+| ---- | ---- |
+| [space](/apis/core/#ParticleSimulationSpace)     | 选择速度变化的空间，可以是世界空间或本地空间                                                        |
path: docs/zh/graphics/particle/renderer-force-module.mdx
user: login: hhhhkrx
body: 力的变化空间
created_at: 2025-05-27T08:55:27Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,16 @@
+---
+title: 生命周期加速度模块
path: docs/zh/graphics/particle/renderer-force-module.mdx
user: login: Sway007
body: 虽然英文单词是Force，但结合到引擎实现以及使用，我感觉加速度更合适一点
created_at: 2025-05-27T09:06:43Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,16 @@
+---
+title: 生命周期加速度模块
+---
+
+ForceOverLifetime 继承自 `ParticleGeneratorModule`，用于对粒子添加加速度效果，通常用于模拟 3 维力场效果，比如风。
+
+<Image src="https://mdn.alipayobjects.com/huamei_aftkdx/afts/img/A*UsPoQp-ZJGwAAAAAQLAAAAgAeteEAQ/fmt.webp" alt="ForceOverLifetime" />
+
+## 属性
+
+| 属性 | 释义 |
+| ---- | ---- |
+| [space](/apis/core/#ParticleSimulationSpace)     | 选择速度变化的空间，可以是世界空间或本地空间                                                        |
path: docs/zh/graphics/particle/renderer-force-module.mdx
user: login: Sway007
body: done
created_at: 2025-05-27T09:06:48Z
author_association: MEMBER

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-05-27T08:41:09Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

This update revises and expands Chinese and English documentation for particle system modules. It corrects and clarifies shape type references in the emission module, adds new documentation for the ForceOverLifetime module, and amends property descriptions and links in the velocity over lifetime module. No code or API changes are included.

## Changes

| File(s)                                                                 | Change Summary                                                                                                  |
|-------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|
| docs/zh/graphics/particle/renderer-emission-module.mdx                  | Updated emitter shape references, descriptions, and links; added new `MeshShape` type and documentation.         |
| docs/en/graphics/particle/renderer-emission-module.mdx                  | Corrected emitter shape links and descriptions; added `MeshShape` type with description; removed placeholder text.|
| docs/zh/graphics/particle/renderer-force-module.mdx                     | Added new documentation file describing the `ForceOverLifetime` particle module and its configurable properties. |
| docs/en/graphics/particle/renderer-force-module.mdx                     | Added new documentation file describing the `ForceOverLifetime` particle module and its configurable properties. |
| docs/zh/graphics/particle/renderer-velocity-module.mdx                  | Corrected property links and descriptions for velocity axes and `space` property in the velocity module docs.    |
| docs/en/graphics/particle/renderer-velocity-module.mdx                  | Corrected property descriptions for velocity axes in the velocity module docs.                                   |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
  participant User
  participant Docs
  User->>Docs: Consults emission module docs
  Docs-->>User: Presents updated shape types and links

  User->>Docs: Consults force over lifetime module docs
  Docs-->>User: Presents new module description and property table

  User->>Docs: Consults velocity over lifetime module docs
  Docs-->>User: Presents corrected property links and descriptions
```

## Possibly related PRs

- galacean/engine#2370: Both PRs update and correct documentation links within particle system modules, focusing on improved navigation and clarity.
- galacean/engine#2584: Implements the ForceOverLifetime module in code and integrates it into the particle system, corresponding to the new documentation added here.

## Suggested labels

`particle`

## Poem

> In the docs where particles play,  
> Shapes and forces find their way.  
> Mesh joins the dance, new winds arise,  
> Velocity’s path now clear to the eyes.  
> With every update, clarity grows—  
> A rabbit’s delight as knowledge flows!  
> 🐇✨

<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between da74e743e1d777a1f92b02135bb1aabdb612fe49 and 68efb158603f77563eb5efce6cefb6de199668a8.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `docs/en/graphics/particle/renderer-emission-module.mdx` (1 hunks)
* `docs/en/graphics/particle/renderer-force-module.mdx` (1 hunks)
* `docs/en/graphics/particle/renderer-velocity-module.mdx` (1 hunks)

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (3)</summary>

* docs/en/graphics/particle/renderer-velocity-module.mdx
* docs/en/graphics/particle/renderer-emission-module.mdx
* docs/en/graphics/particle/renderer-force-module.mdx

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=galacean/engine&utm_content=2702):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: NONE
user: login: codecov[bot]
created_at: 2025-05-27T08:43:47Z
body: ## [Codecov](https://app.codecov.io/gh/galacean/engine/pull/2702?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 79.49%. Comparing base [(`5420349`)](https://app.codecov.io/gh/galacean/engine/commit/54203492b48561b76d9da312f3c7e8d4774f2df2?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean) to head [(`68efb15`)](https://app.codecov.io/gh/galacean/engine/commit/68efb158603f77563eb5efce6cefb6de199668a8?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean).
> Report is 1 commits behind head on main.

<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff             @@
##             main    #2702      +/-   ##
==========================================
- Coverage   79.49%   79.49%   -0.01%     
==========================================
  Files         839      839              
  Lines       89272    89272              
  Branches     8781     8783       +2     
==========================================
- Hits        70970    70965       -5     
- Misses      18169    18174       +5     
  Partials      133      133              
```

| [Flag](https://app.codecov.io/gh/galacean/engine/pull/2702/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean) | Coverage Δ | |
|---|---|---|
| [unittests](https://app.codecov.io/gh/galacean/engine/pull/2702/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean) | `79.49% <ø> (-0.01%)` | :arrow_down: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean#carryforward-flags-in-the-pull-request-comment) to find out more.

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/galacean/engine/pull/2702?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=galacean).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
author_association: NONE