Kiwano Engine  v1.2.x
kiwano::physics::PhysicBody类 参考

物体 更多...

#include <PhysicBody.h>

类 kiwano::physics::PhysicBody 继承关系图:
kiwano::physics::PhysicBody 的协作图:

Public 类型

enum  Type { Type::Static = 0, Type::Kinematic, Type::Dynamic }
 物体类型 更多...
 

Public 成员函数

 PhysicBody (PhysicWorld *world, Type type)
 初始化物体 更多...
 
 PhysicBody (PhysicWorldPtr world, Type type)
 初始化物体 更多...
 
bool Init (PhysicWorld *world)
 初始化物体 更多...
 
void AddFixture (FixturePtr fixture)
 添加夹具
 
FixtureAddCircleShape (float radius, float density, float friction=0.2f)
 添加圆形夹具 更多...
 
FixtureAddRectShape (const Vec2 &size, float density, float friction=0.2f)
 添加矩形夹具 更多...
 
FixtureAddPolygonShape (const Vector< Point > &vertexs, float density, float friction=0.2f)
 添加多边形夹具 更多...
 
FixtureAddEdgeShape (const Point &p1, const Point &p2, float density, float friction=0.2f)
 添加线段形夹具 更多...
 
FixtureAddChainShape (const Vector< Point > &vertices, bool loop, float density, float friction=0.2f)
 添加链条形夹具 更多...
 
void RemoveFixture (FixturePtr fixture)
 移除夹具
 
void RemoveAllFixtures ()
 移除所有夹具
 
FixtureList GetFixtureList () const
 获取夹具列表
 
ContactEdgeList GetContactList () const
 获取接触边列表
 
uint16_t GetCategoryBits () const
 获取类别码
 
void SetCategoryBits (uint16_t category_bits)
 设置类别码
 
uint16_t GetMaskBits () const
 获取碰撞掩码
 
void SetMaskBits (uint16_t mask_bits)
 设置碰撞掩码
 
int16_t GetGroupIndex () const
 获取组索引
 
void SetGroupIndex (int16_t index)
 设置组索引
 
float GetRotation () const
 获取旋转角度
 
void SetRotation (float angle)
 设置旋转角度
 
Point GetPosition () const
 获取物体位置
 
void SetPosition (const Point &pos)
 设置物体位置
 
void SetTransform (const Point &pos, float angle)
 位置和旋转变换
 
float GetMass () const
 获取质量 [kg]
 
float GetInertia () const
 获取惯性
 
void GetMassData (float *mass, Point *center, float *inertia) const
 获取质量数据 更多...
 
void SetMassData (float mass, const Point &center, float inertia)
 设置质量数据 更多...
 
void ResetMassData ()
 重置质量数据
 
Point GetLocalPoint (const Point &world) const
 获取世界坐标系上的点在物体上的位置
 
Vec2 GetLocalVector (const Vec2 &world) const
 将世界坐标系中的向量转换到物体坐标系下
 
Point GetWorldPoint (const Point &local) const
 获取物体上的点在世界坐标系的位置
 
Vec2 GetWorldVector (const Vec2 &local) const
 将物体坐标系中的向量转换到世界坐标系下
 
Point GetLocalCenter () const
 获取物体质心相对于物体的位置
 
Point GetWorldCenter () const
 获取物体质心位置
 
Type GetType () const
 获取物体类型
 
void SetType (Type type)
 设置物体类型
 
float GetGravityScale () const
 获取物体受重力的比例
 
void SetGravityScale (float scale)
 设置物体受重力的比例
 
float GetLinearDamping () const
 获取线性阻尼
 
void SetLinearDamping (float damping)
 设置线性阻尼
 
float GetAngularDamping () const
 获取旋转阻尼
 
void SetAngularDamping (float damping)
 设置旋转阻尼
 
void ApplyForce (const Vec2 &force, const Point &point, bool wake=true)
 施力 更多...
 
void ApplyForceToCenter (const Vec2 &force, bool wake=true)
 给物体中心施力 更多...
 
void ApplyTorque (float torque, bool wake=false)
 施加扭矩 更多...
 
bool IsIgnoreRotation () const
 旋转角度是否固定
 
void SetIgnoreRotation (bool flag)
 设置是否固定旋转角度
 
bool IsBullet () const
 是否是子弹物体
 
void SetBullet (bool flag)
 设置物体是否是子弹物体
 
bool IsAwake () const
 是否处于唤醒状态
 
void SetAwake (bool flag)
 设置唤醒状态
 
bool IsSleepingAllowed () const
 是否启用休眠
 
void SetSleepingAllowed (bool flag)
 设置是否允许休眠
 
bool IsActive () const
 是否启用
 
void SetActive (bool flag)
 设置启用状态
 
PhysicWorldGetWorld () const
 获取物体所在物理世界
 
void Destroy ()
 销毁物体
 
b2Body * GetB2Body () const
 获取b2Body
 
void SetB2Body (b2Body *body)
 设置b2Body
 
- Public 成员函数 继承自 kiwano::Component
bool IsEnable () const
 是否启用组件
 
void SetEnabled (bool enabled)
 设置组件启用或禁用
 
ActorGetBoundActor () const
 获取绑定的角色
 
void RemoveFromActor ()
 从角色中移除
 
- Public 成员函数 继承自 kiwano::ObjectBase
 ObjectBase ()
 构造基础对象
 
void SetName (const String &name)
 设置对象名
 
String GetName () const
 获取对象名
 
bool IsName (const String &name) const
 判断对象的名称是否相同 更多...
 
void * GetUserData () const
 获取用户数据
 
void SetUserData (void *data)
 设置用户数据
 
uint64_t GetObjectID () const
 获取对象ID
 
void DoSerialize (Serializer *serializer) const override
 序列化
 
void DoDeserialize (Deserializer *deserializer) override
 反序列化
 
virtual bool IsValid () const
 判断对象是否有效
 
ObjectStatusGetStatus () const
 获取对象状态
 
void SetStatus (const ObjectStatus &status)
 设置对象状态
 
void Fail (const String &msg, int code=ObjectStatus::fail)
 将对象标记为失败状态
 
void ClearStatus ()
 清除对象状态
 
- Public 成员函数 继承自 kiwano::RefObject
void Retain ()
 增加引用计数
 
void Release ()
 减少引用计数
 
uint32_t GetRefCount () const
 获取引用计数
 
- Public 成员函数 继承自 kiwano::Serializable
Vector< uint8_t > Serialize () const
 序列化为字节串
 
void Deserialize (const Vector< uint8_t > &data)
 从字节串反序列化
 

Protected 成员函数

void InitComponent (Actor *actor) override
 初始化组件
 
void DestroyComponent () override
 销毁组件
 
void UpdateFromActor (Actor *actor)
 更新物体状态
 
void UpdateFromActor (Actor *actor, const Matrix3x2 &actor_to_world, float parent_rotation)
 更新物体状态
 
void UpdateFixtureFilter (b2Fixture *fixture)
 更新夹具过滤器
 
void BeforeSimulation (Actor *actor, const Matrix3x2 &parent_to_world, const Matrix3x2 &actor_to_world, float parent_rotation)
 更新物理身体前
 
void AfterSimulation (Actor *actorconst, const Matrix3x2 &parent_to_world, float parent_rotation)
 更新物理身体后
 
- Protected 成员函数 继承自 kiwano::Component
virtual void OnUpdate (Duration dt)
 更新组件
 
virtual void OnRender (RenderContext &ctx)
 渲染组件
 
virtual void HandleEvent (Event *evt)
 处理角色事件
 

友元

class PhysicWorld
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 kiwano::ObjectBase
static void SetObjectPolicy (const ObjectPolicyFunc &policy)
 设置对象处理策略
 
static bool IsTracingLeaks ()
 是否启用了内存泄漏追踪
 
static void StartTracingLeaks ()
 开始追踪内存泄漏
 
static void StopTracingLeaks ()
 停止追踪内存泄漏
 
static void DumpTracingObjects ()
 打印所有追踪中的对象信息
 
static Vector< ObjectBase * > & GetTracingObjects ()
 获取所有追踪中的对象
 
- 静态 Public 成员函数 继承自 kiwano::RefObject
static void * operator new (size_t size)
 
static void operator delete (void *ptr)
 
static void * operator new (size_t size, std::nothrow_t const &) noexcept
 
static void operator delete (void *ptr, std::nothrow_t const &) noexcept
 
static void * operator new (size_t size, void *ptr) noexcept
 
static void operator delete (void *ptr, void *place) noexcept
 

详细描述

物体

成员枚举类型说明

物体类型

枚举值
Static 

静态物体

Kinematic 

动力学物体

Dynamic 

动态物体

构造及析构函数说明

kiwano::physics::PhysicBody::PhysicBody ( PhysicWorld world,
Type  type 
)

初始化物体

参数
world物理世界
type物体类型
kiwano::physics::PhysicBody::PhysicBody ( PhysicWorldPtr  world,
Type  type 
)

初始化物体

参数
world物理世界
type物体类型

成员函数说明

Fixture * kiwano::physics::PhysicBody::AddChainShape ( const Vector< Point > &  vertices,
bool  loop,
float  density,
float  friction = 0.2f 
)

添加链条形夹具

参数
vertexs链条端点
loop是否闭合
density物体密度
Fixture * kiwano::physics::PhysicBody::AddCircleShape ( float  radius,
float  density,
float  friction = 0.2f 
)

添加圆形夹具

参数
radius圆形半径
density物体密度
Fixture * kiwano::physics::PhysicBody::AddEdgeShape ( const Point p1,
const Point p2,
float  density,
float  friction = 0.2f 
)

添加线段形夹具

参数
p1线段起点
p2线段终点
density物体密度
Fixture * kiwano::physics::PhysicBody::AddPolygonShape ( const Vector< Point > &  vertexs,
float  density,
float  friction = 0.2f 
)

添加多边形夹具

参数
vertexs多边形端点
density物体密度
Fixture * kiwano::physics::PhysicBody::AddRectShape ( const Vec2 size,
float  density,
float  friction = 0.2f 
)

添加矩形夹具

参数
size矩形大小
density物体密度
void kiwano::physics::PhysicBody::ApplyForce ( const Vec2 force,
const Point point,
bool  wake = true 
)

施力

参数
force力的大小和方向
point施力点
wake是否唤醒物体
void kiwano::physics::PhysicBody::ApplyForceToCenter ( const Vec2 force,
bool  wake = true 
)

给物体中心施力

参数
force力的大小和方向
wake是否唤醒物体
void kiwano::physics::PhysicBody::ApplyTorque ( float  torque,
bool  wake = false 
)

施加扭矩

参数
torque扭矩
wake是否唤醒物体
void kiwano::physics::PhysicBody::GetMassData ( float *  mass,
Point center,
float *  inertia 
) const

获取质量数据

参数
[out]mass物体质量 [kg]
[out]center质心位置
[out]inertia惯性
bool kiwano::physics::PhysicBody::Init ( PhysicWorld world)

初始化物体

参数
[in]world物理世界
void kiwano::physics::PhysicBody::SetMassData ( float  mass,
const Point center,
float  inertia 
)

设置质量数据

参数
mass物体质量 [kg]
center质心位置
inertia惯性