|
ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
|
2D 物理系统 更多...
#include <PhysicsSystem2D.h>
Public 成员函数 | |
| PhysicsSystem2D (int priority=50) | |
| ~PhysicsSystem2D () override | |
| void | init () override |
| 初始化(可覆写) | |
| void | update () override |
| 每帧更新(纯虚) | |
| void | destroy () override |
| 销毁(纯虚) | |
| bool | onComponentAttached (Component *component) override |
| 组件挂载时调用。返回 true 表示本系统认领并处理了该组件(组件据此确定已注册)。 | |
| void | onComponentDetached (Component *component) override |
| 组件卸下时调用。 | |
| void | setGravity (const Vector2 &gravity) |
| 重力(像素/秒²),默认 {0, 320} | |
| const Vector2 & | getGravity () const |
| void | setPixelsPerMeter (float ppm) |
| 设置像素↔米比例(必须在 init() 之前调用),默认 32 | |
| float | getPixelsPerMeter () const |
| 当前像素↔米比例(实例字段,各物理系统独立) | |
| void | registerRigidBody (RigidBody2D *body) |
| void | unregisterRigidBody (RigidBody2D *body) |
| void | createRigidBody (RigidBody2D *body) |
| 为 RigidBody2D 创建物理体(组件认领时调用,从 Transform 读初始位姿) | |
| void | destroyRigidBody (RigidBody2D *body) |
| 销毁 RigidBody2D 的物理体并注销(组件卸下时调用) | |
| Public 成员函数 继承自 System | |
| System (int priority=0) | |
| virtual | ~System () |
| Scene * | getScene () const |
| void | setScene (Scene *scene) |
| int | getPriority () const |
| void | setPriority (int priority) |
友元 | |
| class | RigidBody2D |
额外继承的成员函数 | |
| Protected 成员函数 继承自 System | |
| void | resetComponent (Component *comp) |
| 内部:把认领过的组件标记为未注册(系统销毁/注销时调用)。 否则组件 m_isRegistered 残留 true,同类系统重新注册时 System::init 补扫会跳过它们, 导致组件永久失去驱动系统。 | |
| Protected 属性 继承自 System | |
| int | m_priority |
| 优先级(小值先执行) | |
| Scene * | m_scene = nullptr |
| 所属场景 | |
2D 物理系统
包装 Box2D 3.x(C 语言 API)物理世界。 默认使用 b2SetLengthUnitsPerMeter(32) 以像素为长度单位, 用户无需手动转换像素↔米。
使用方式: scene->registerSystem<Shit::PhysicsSystem2D>();
priority=50,晚于 BehaviorSystem(0) 早于 RenderSystem(100)。
|
explicit |
|
override |
| void createRigidBody | ( | RigidBody2D * | body | ) |
为 RigidBody2D 创建物理体(组件认领时调用,从 Transform 读初始位姿)
|
overridevirtual |
销毁(纯虚)
实现了 System.
| void destroyRigidBody | ( | RigidBody2D * | body | ) |
销毁 RigidBody2D 的物理体并注销(组件卸下时调用)
|
inline |
|
inline |
当前像素↔米比例(实例字段,各物理系统独立)
|
overridevirtual |
初始化(可覆写)
重载 System .
|
overridevirtual |
组件挂载时调用。返回 true 表示本系统认领并处理了该组件(组件据此确定已注册)。
重载 System .
| void registerRigidBody | ( | RigidBody2D * | body | ) |
| void setGravity | ( | const Vector2 & | gravity | ) |
重力(像素/秒²),默认 {0, 320}
| void setPixelsPerMeter | ( | float | ppm | ) |
设置像素↔米比例(必须在 init() 之前调用),默认 32
| void unregisterRigidBody | ( | RigidBody2D * | body | ) |
|
overridevirtual |
每帧更新(纯虚)
实现了 System.
|
friend |