2022-08-04【BEP】结构分析

2022-08-03  本文已影响0人  持刀的要迟到了

Stage1

以Capsule入手
Capsule : Entity<ConvexCollidable<CapsuleShape>>
这里看出,使用了继承和泛型。

Capsule : Entity<TCollidable> : Entity
: IBroadPhaseEntryOwner,IDeferredEventCreatorOwner,ISpaceObject,ICollisionRulesOwner,IEquatable<Entity>
where
TCollidable : EntityCollidable : MobileCollidable : Collidable : BroadPhaseEntry
: IBoundingBoxOwner, ICollisionRulesOwner

ConvexCollidable<TShape> : ConvexCollidable : EntityCollidable
where
TShape : ConvexShape

Entity
{
EntityCollidable collisionInformation
}
EntityCollidable
{
CollisionShape
ConvexCast(ConvexShape castShape) { MPRToolbox.Sweep }
}

首先,Capsule是一个实体,实体拥有一个实体碰撞 EntityCollidable collisionInformation
而实体碰撞,有一个实体碰撞对应形状CollisionShape,它能和其他Shape进行ConvexCast,调用了底层的MPRToolbox。

而Capsule作为一个实体的子类,它拥有自己的特性,它所对应的这个实体碰撞也根据泛型T发生更改。T CollisionInformation

Stage2

战斗框架,本质是Update。在Update之上,有各个系统,和生命周期。
如技能系统,物理系统。
各个系统之间的更新顺序,执行流程控制。
首先要保证底层的这些系统的稳定性和不更改性。
不更改性又涉及到,系统的扩展性,易用性。在可扩展,易用的基础上,需要权衡结构和性能之间的关系。

Stage3

BEP的结构,从底层到上层的设计也是如Stage2流程。
首先有Entity的概念,而Entity是实现了多个接口,实现了各自接口对应阶段的功能。
因此,哪怕是同一个物体,可以区分到各个系统,根据系统性流程进行更新。
比如,Entity既是一个BroadPhaseEntry,又是一个NarrowPhaseEntry。
这其实需要对Entity对象的结构设计非常的精妙(见Stage1)

在宽阶段时,调用宽阶段的Update,更新它们。
在窄阶段时,调用窄阶段的Update,更新它们。

上一篇 下一篇

猜你喜欢

热点阅读