碰撞器基类. 更多...
#include <Collider.h>
Public 成员函数 | |
| Collider () | |
| 构造函数. | |
| virtual | ~Collider () |
| virtual void | BeginPlay () override |
| 初始化逻辑. | |
| virtual void | EndPlay () override |
| 处理析构处理不了的. | |
| virtual void | Update (float deltaTime) override |
| 实现更新碰撞坐标, 进行容器的更新. | |
| const std::vector< Object * > & | GetCollisionsByType (CollisionType type) |
| 由种类名获取所有跟这个碰撞体有碰撞的物体容器. | |
| const int | GetLayer () const |
| 获取碰撞层级. | |
| void | SetLayer (int layer) |
| 设置碰撞层级. | |
| CollisionType | GetType () const |
| 获取碰撞物体种类. | |
| void | SetType (CollisionType type) |
| 设置碰撞物体种类. | |
| ColliderShape | GetShape () const |
| 获取碰撞形状. | |
| void | SetCollisionMode (ColliderMode mode) |
| 设置碰撞模式. | |
| ColliderMode | GetCollisionMode () |
| 获取碰撞模式. | |
| virtual void | Deactivate () override |
| 停用碰撞体. | |
| virtual void | DrawDebugLine ()=0 |
| 绘制调试线 _debug_模式执行. | |
| bool | IsCollisionsEmpty () const |
| 是否与任何碰撞体无接触 | |
| void | SetPhysicsMaterial (const PhysicsMaterial &material) |
| 设置物理材质 | |
| Rect | GetRect () const |
| HitResult | CollisionHit (Collider *another) |
Public 成员函数 继承自 SceneComponent | |
| void | AttachTo (SceneComponent *par) |
| 设置所属组件 | |
| void | DetachForm (SceneComponent *par) |
| 解除所属组件. | |
| virtual void | Destruct () |
| 解除场景组件绑定并销毁 | |
| Vector2D | GetLocalPosition () const |
| 获取相对坐标 | |
| float | GetLocalRotation () const |
| 获取相对角度 | |
| Vector2D | GetLocalScale () const |
| 获取相对缩放大小 | |
| Vector2D | GetWorldPosition () const |
| 获取场景组件的世界坐标 | |
| float | GetWorldRotation () const |
| 获取场景组件的世界旋转角度 | |
| Vector2D | GetWorldScale () const |
| 获取场景组件的世界的缩放大小 | |
| void | SetLocalPosition (const Vector2D &pos) |
| 设置相对坐标 | |
| void | SetLocalRotation (float rot) |
| 设置相对角度 | |
| void | SetLocalScale (const Vector2D &scale) |
| 设置相对缩放大小 | |
| void | AddPosition (const Vector2D &pos) |
| 加上一个坐标 | |
| void | AddRotation (float rot) |
| 加上一个角度 | |
Public 成员函数 继承自 Component | |
| void | SetOwner (class Object *owner) |
| 设置绑定对象. | |
| virtual void | Activate () |
| 激活组件 | |
| Object * | GetOwner () const |
| 获取绑定对象指针 | |
Public 成员函数 继承自 base | |
| base () | |
| virtual | ~base () |
| std::string | GetName () const |
| void | SetName (const std::string &name) |
静态 Public 成员函数 | |
| static HitResult | CollisionHitCircleToCircle (Collider *, Collider *) |
| 圆实体类型之间发生物理碰撞 | |
| static HitResult | CollisionHitCircleToBox (Collider *, Collider *) |
| 圆实体和盒型实体之间发生物理碰撞 | |
| static HitResult | CollisionHitBoxToBox (Collider *, Collider *) |
| 盒型和盒型实体之间发生物理碰撞 | |
Public 属性 | |
| CollisionOverlapDelegate | OnComponentBeginOverlap |
| 碰撞体刚接触的委托 | |
| CollisionOverlapDelegate | OnComponentEndOverlap |
| 碰撞体刚从接触到不重叠的委托 | |
| CollisionHitOverlapDelegate | OnComponentHitOverlap |
| 发生实体碰撞的委托 | |
静态 Public 属性 | |
| static HitResult(* | CollisionHitMap [3])(Collider *, Collider *) |
| 映射关系 圆是0 方是1 进行加法 | |
Protected 成员函数 | |
| virtual bool | CollisionJudge (Collider *another)=0 |
| 碰撞判断(纯虚函数). | |
| virtual bool | IsMouseOver ()=0 |
| 判断是否跟鼠标发生了碰撞. | |
Protected 成员函数 继承自 SceneComponent | |
| void | process_Destruct () |
| 销毁组件 | |
Protected 属性 | |
| PhysicsMaterial | material |
| 物理材质 | |
| ColliderShape | shape = ColliderShape::Circle |
| 碰撞形状 | |
| Rect | rec_pos = {0,0,0,0} |
| 矩形框区域 | |
Protected 属性 继承自 SceneComponent | |
| SceneComponent * | parent = nullptr |
| 父指针 | |
Protected 属性 继承自 Component | |
| class Object * | pOwner = nullptr |
| 处理控制逻辑 有对象物体的指针才能进行控制 | |
| bool | bIsEnabled = true |
| 是否激活 | |
Private 成员函数 | |
| void | Clear () |
| 将碰撞体从世界彻底移除 | |
| void | Erase () |
| 处理碰撞体之间的信息删除逻辑 | |
| void | Insert (Collider *another) |
| 处理碰撞体之间的信息插入逻辑. | |
Private 属性 | |
| Pair | point = {-1,-1} |
| 碰撞左上角区域坐标 | |
| Pair | point_rb = { -1,-1 } |
| 碰撞右下角区域坐标 | |
| CollisionType | type = CollisionType::Default |
| 碰撞物体种类 | |
| int | layer = 0 |
| 碰撞图层顺序,越大的值越上面 | |
| ColliderMode | mode = ColliderMode::Trigger |
| 碰撞模式 | |
| std::unordered_set< Collider * > | collisions |
| 存储发生碰撞的容器 就是区域重叠的碰撞组件地址 | |
| std::vector< Object * > | aims |
| 存储所有种类名获取跟这个碰撞体有碰撞的物体容器 | |
| std::vector< Collider * > | collisions_to_erase |
| 结束碰撞缓冲区 | |
| RigidBody * | rigidAttached = nullptr |
| 附着的刚体组件 实现物理模拟 | |
友元 | |
| class | Controller |
| class | RigidBody |
| void | World::ProcessColliderZones () |
碰撞器基类.
实现碰撞.实现一些碰撞共有基本逻辑的处理和声明周期的管理
|
inline |
构造函数.
世界碰撞容器中插入
|
inlinevirtual |
|
overridevirtual |
|
private |
将碰撞体从世界彻底移除
清空这个碰撞体 及所有跟他有关的碰撞体.
盒型和盒型实体之间发生物理碰撞
圆实体和盒型实体之间发生物理碰撞
圆实体类型之间发生物理碰撞
|
protectedpure virtual |
|
overridevirtual |
|
pure virtual |
绘制调试线 _debug_模式执行.
在 BoxCollider , 以及 CircleCollider 内被实现.
|
overridevirtual |
处理析构处理不了的.
主要就是一些顺序和生命周期的问题 Debug 2024/11/11 析构函数的时候会先调用子类的析构再调用父类的析构函数,但是删除组件是在父类执行,访问不到子类的成员,也转换不成子类
重载 SceneComponent .
|
private |
处理碰撞体之间的信息删除逻辑
自己判断自己里面的碰撞体是否还有碰撞.
|
inline |
获取碰撞模式.
|
inline |
由种类名获取所有跟这个碰撞体有碰撞的物体容器.
| [in] | type | 种类名 |
|
inline |
获取碰撞层级.
|
inline |
|
inline |
获取碰撞形状.
|
inline |
获取碰撞物体种类.
|
private |
处理碰撞体之间的信息插入逻辑.
| [in] | another | 需要插入的碰撞器 |
|
inline |
是否与任何碰撞体无接触
|
protectedpure virtual |
|
inline |
设置碰撞模式.
| [in] | mode | 碰撞模式 |
|
inline |
设置碰撞层级.
| [in] | layer | 设置的层级 |
|
inline |
设置物理材质
|
inline |
设置碰撞物体种类.
| [in] | 设置的碰撞种类 |
|
overridevirtual |
|
friend |
|
friend |
|
friend |
|
private |
存储所有种类名获取跟这个碰撞体有碰撞的物体容器
|
private |
存储发生碰撞的容器 就是区域重叠的碰撞组件地址
|
private |
结束碰撞缓冲区
|
private |
碰撞图层顺序,越大的值越上面
|
protected |
物理材质
|
private |
碰撞模式
| CollisionOverlapDelegate Collider::OnComponentBeginOverlap |
碰撞体刚接触的委托
| CollisionOverlapDelegate Collider::OnComponentEndOverlap |
碰撞体刚从接触到不重叠的委托
| CollisionHitOverlapDelegate Collider::OnComponentHitOverlap |
发生实体碰撞的委托
|
private |
碰撞左上角区域坐标
|
private |
碰撞右下角区域坐标
|
protected |
矩形框区域
|
private |
附着的刚体组件 实现物理模拟
|
protected |
碰撞形状
|
private |
碰撞物体种类
只会跟有映射关系的碰撞器发生碰撞