22#include <kiwano-physics/Fixture.h>
23#include <kiwano-physics/ContactEdge.h>
74 void AddFixture(FixturePtr fixture);
81 Fixture* AddCircleShape(
float radius,
float density,
float friction = 0.2f);
87 Fixture* AddRectShape(
const Vec2& size,
float density,
float friction = 0.2f);
93 Fixture* AddPolygonShape(
const Vector<Point>& vertexs,
float density,
float friction = 0.2f);
100 Fixture* AddEdgeShape(
const Point& p1,
const Point& p2,
float density,
float friction = 0.2f);
107 Fixture* AddChainShape(
const Vector<Point>& vertices,
bool loop,
float density,
float friction = 0.2f);
111 void RemoveFixture(FixturePtr fixture);
115 void RemoveAllFixtures();
127 uint16_t GetCategoryBits()
const;
131 void SetCategoryBits(uint16_t category_bits);
135 uint16_t GetMaskBits()
const;
139 void SetMaskBits(uint16_t mask_bits);
143 int16_t GetGroupIndex()
const;
147 void SetGroupIndex(int16_t index);
151 float GetRotation()
const;
155 void SetRotation(
float angle);
159 Point GetPosition()
const;
163 void SetPosition(
const Point& pos);
167 void SetTransform(
const Point& pos,
float angle);
171 float GetMass()
const;
175 float GetInertia()
const;
182 void GetMassData(
float* mass,
Point* center,
float* inertia)
const;
189 void SetMassData(
float mass,
const Point& center,
float inertia);
193 void ResetMassData();
197 Point GetLocalPoint(
const Point& world)
const;
201 Vec2 GetLocalVector(
const Vec2& world)
const;
205 Point GetWorldPoint(
const Point& local)
const;
209 Vec2 GetWorldVector(
const Vec2& local)
const;
213 Point GetLocalCenter()
const;
217 Point GetWorldCenter()
const;
221 Type GetType()
const;
225 void SetType(Type type);
229 float GetGravityScale()
const;
233 void SetGravityScale(
float scale);
237 float GetLinearDamping()
const;
241 void SetLinearDamping(
float damping);
245 float GetAngularDamping()
const;
249 void SetAngularDamping(
float damping);
256 void ApplyForce(
const Vec2& force,
const Point& point,
bool wake =
true);
262 void ApplyForceToCenter(
const Vec2& force,
bool wake =
true);
268 void ApplyTorque(
float torque,
bool wake =
false);
272 bool IsIgnoreRotation()
const;
276 void SetIgnoreRotation(
bool flag);
280 bool IsBullet()
const;
284 void SetBullet(
bool flag);
288 bool IsAwake()
const;
292 void SetAwake(
bool flag);
296 bool IsSleepingAllowed()
const;
300 void SetSleepingAllowed(
bool flag);
304 bool IsActive()
const;
308 void SetActive(
bool flag);
320 b2Body* GetB2Body()
const;
324 void SetB2Body(b2Body* body);
329 void InitComponent(
Actor* actor)
override;
333 void DestroyComponent()
override;
337 void UpdateFromActor(
Actor* actor);
341 void UpdateFromActor(
Actor* actor,
const Matrix3x2& actor_to_world,
float parent_rotation);
345 void UpdateFixtureFilter(b2Fixture* fixture);
350 float parent_rotation);
354 void AfterSimulation(
Actor* actorconst,
const Matrix3x2& parent_to_world,
float parent_rotation);
359 uint16_t category_bits_;
361 int16_t group_index_;
364 Vector<FixturePtr> fixtures_;
367 Point position_cached_;
376 if (!body_->GetFixtureList())
379 Fixture* fixture =
static_cast<Fixture*
>(body_->GetFixtureList()->GetUserData());
393 return category_bits_;
409 return math::Radian2Degree(body_->GetAngle());
425 return body_->GetMass();
431 return body_->GetInertia();
446 body_->SetType(b2BodyType(type));
454 return body_->GetGravityScale();
460 body_->SetGravityScale(scale);
466 return body_->GetLinearDamping();
472 body_->SetLinearDamping(damping);
478 return body_->GetAngularDamping();
484 body_->SetAngularDamping(damping);
490 return body_->IsFixedRotation();
496 body_->SetFixedRotation(flag);
502 return body_->IsBullet();
508 body_->SetBullet(flag);
514 return body_->IsAwake();
520 body_->SetAwake(flag);
526 return body_->IsSleepingAllowed();
532 body_->SetSleepingAllowed(flag);
538 return body_->IsActive();
544 body_->SetActive(flag);
组件
Definition: Component.h:51
物理夹具列表
Definition: Fixture.h:179
物理夹具
Definition: Fixture.h:40
物体
Definition: PhysicBody.h:40
float GetAngularDamping() const
获取旋转阻尼
Definition: PhysicBody.h:475
float GetRotation() const
获取旋转角度
Definition: PhysicBody.h:406
float GetMass() const
获取质量 [kg]
Definition: PhysicBody.h:422
float GetGravityScale() const
获取物体受重力的比例
Definition: PhysicBody.h:451
void SetPosition(const Point &pos)
设置物体位置
Definition: PhysicBody.h:417
bool IsBullet() const
是否是子弹物体
Definition: PhysicBody.h:499
bool IsActive() const
是否启用
Definition: PhysicBody.h:535
void SetTransform(const Point &pos, float angle)
位置和旋转变换
Definition: PhysicBody.cpp:334
void SetAngularDamping(float damping)
设置旋转阻尼
Definition: PhysicBody.h:481
uint16_t GetCategoryBits() const
获取类别码
Definition: PhysicBody.h:391
bool IsAwake() const
是否处于唤醒状态
Definition: PhysicBody.h:511
void SetRotation(float angle)
设置旋转角度
Definition: PhysicBody.h:412
void SetActive(bool flag)
设置启用状态
Definition: PhysicBody.h:541
Type
物体类型
Definition: PhysicBody.h:47
PhysicWorld * GetWorld() const
获取物体所在物理世界
Definition: PhysicBody.h:552
FixtureList GetFixtureList() const
获取夹具列表
Definition: PhysicBody.h:372
void SetGravityScale(float scale)
设置物体受重力的比例
Definition: PhysicBody.h:457
void SetLinearDamping(float damping)
设置线性阻尼
Definition: PhysicBody.h:469
Type GetType() const
获取物体类型
Definition: PhysicBody.h:434
b2Body * GetB2Body() const
获取b2Body
Definition: PhysicBody.h:547
void SetType(Type type)
设置物体类型
Definition: PhysicBody.h:439
void SetBullet(bool flag)
设置物体是否是子弹物体
Definition: PhysicBody.h:505
uint16_t GetMaskBits() const
获取碰撞掩码
Definition: PhysicBody.h:396
void SetSleepingAllowed(bool flag)
设置是否允许休眠
Definition: PhysicBody.h:529
ContactEdgeList GetContactList() const
获取接触边列表
Definition: PhysicBody.h:383
bool IsSleepingAllowed() const
是否启用休眠
Definition: PhysicBody.h:523
int16_t GetGroupIndex() const
获取组索引
Definition: PhysicBody.h:401
Point GetPosition() const
获取物体位置
Definition: PhysicBody.cpp:328
void SetIgnoreRotation(bool flag)
设置是否固定旋转角度
Definition: PhysicBody.h:493
bool IsIgnoreRotation() const
旋转角度是否固定
Definition: PhysicBody.h:487
float GetInertia() const
获取惯性
Definition: PhysicBody.h:428
float GetLinearDamping() const
获取线性阻尼
Definition: PhysicBody.h:463
void SetAwake(bool flag)
设置唤醒状态
Definition: PhysicBody.h:517
物理世界
Definition: PhysicWorld.h:45