cocos2d-x节点(b2Settings.h)API

时间:2020-12-29 00:05:10

本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-x节点(b2Settings.h)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记

// 设置中主要定义了宏、常量、和一些辅助的公共函数。


///cocos2d-x-3.0alpha0/external/Box2D/Common
// 设置中主要定义了宏、常量、和一些辅助的公共函数。


#ifndef B2_SETTINGS_H
#define B2_SETTINGS_H

#include <cassert>
#include <cmath>
//主要是因为有的编译器将提示相关语句的值是未使用的,
//所以你必须告诉它忽略所有(void)。
//即消除编译器的警告
#define B2_NOT_USED(x) ((void)(x))
#define b2Assert(A) assert(A)				//对断言宏进行重新封装
//重新封装类型,这样做为了方便而且很好的移植到不同的平台
typedef signed char    int8;
typedef signed short int16;
typedef signed int int32;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned int uint32;
typedef float float32;
typedef double float64;

#define    b2_maxFloat        FLT_MAX			//float类型最大值
#define    b2_epsilon        FLT_EPSILON		//float类型最小值
#define b2_pi            3.14159265359f			//pi的值

/// @file
/// 全局常量参数 基于米-千克-秒(MKS)单位

//碰撞

//在两个凸形状上的接触点最大数量,不要修改它的值
#define b2_maxManifoldPoints    2

//凸多边形的顶点数量的最大值。你不能将这个宏修改的太大,因为b2BolckAlloctor函数有一个物体内存大小的上限
#define b2_maxPolygonVertices    8

//  用这个在动态树上填充AABB,它允许代理少量移动不必去调整这个树
//  单位是米
#define b2_aabbExtension        0.1f

//  用这个在动态树上填充AABBs,这是基于当前位移用来预测未来的位置。
//  没有单位
#define b2_aabbMultiplier        2.0f

//一个小的长度作为碰撞和约束误差,通常它被选为数字意义重大,但视觉上无足轻重。
#define b2_linearSlop            0.005f

//一个小的角度作为碰撞和约束误差,通常它被选为数字意义重大,但视觉上无足轻重。
#define b2_angularSlop            (2.0f / 180.0f * b2_pi)

///半径的多边形/边缘形状的皮肤。这应该不会被修改。使
///这意味着将有一个小的多边形数不足为连续碰撞缓冲。
///使它更大的可能创建工件为顶点碰撞。
#define b2_polygonRadius        (2.0f * b2_linearSlop)

///在连续物理模拟里,在每次接触中子步骤的最大数值
#define b2_maxSubSteps            8


//动态
//接触的最大数用于处理解决一个撞击时间内的撞击
#define b2_maxTOIContacts            32

//弹性碰撞的一个速度阈值,任何与一个相对线速度碰撞,低于这个阈值的将被视为非弹性碰撞
#define b2_velocityThreshold        1.0f

//  线性速度位置的最大值校正当解决约束使用,这有助于阻止穿越物体
#define b2_maxLinearCorrection        0.2f

//  角位置的最大值校正当解决约束使用,这有助于阻止穿越物体
#define b2_maxAngularCorrection        (8.0f / 180.0f * b2_pi)

// 物体【刚体】的最大线速度,这限制是非常大的,用于防止数值问题。你不需要去适应这个
#define b2_maxTranslation            2.0f
#define b2_maxTranslationSquared    (b2_maxTranslation * b2_maxTranslation)

// 物体【刚体】的最大线速度,这限制是非常大的,用于防止数值问题。你不需要去适应这个
#define b2_maxRotation                (0.5f * b2_pi)
#define b2_maxRotationSquared        (b2_maxRotation * b2_maxRotation)

//这个比例因子控制怎样快速解决重叠问题。理想的情况下,这将是1,这样重叠将在一个时间步内被移除
#define b2_baumgarte                0.2f
#define b2_toiBaugarte                0.75f


// 休眠
//最小休眠时间
#define b2_timeToSleep                0.5f

//刚体[body]要想休眠,线的最大值,即当角速度超过它时刚体[body]无法休眠。
#define b2_linearSleepTolerance        0.01f

//刚体[body]要想休眠,角速度的最大值,即当角速度超过它时刚体[body]无法休眠。
#define b2_angularSleepTolerance    (2.0f / 180.0f * b2_pi)

// 内存申请
//申请内存函数,实现这个函数作为你自己的内存分配器。
void* b2Alloc(int32 size);

//释放内存函数,如果你实现b2Alloc,你也应该实现这个功能。
void b2Free(void* mem);

//打印日志函数
void b2Log(const char* string, ...);

//版本编号方案
//见 http://en.wikipedia.org/wiki/Software_versioning
struct b2Version
{
    int32 major;         ///重大更新
    int32 minor;        ///较大更新
    int32 revision;       ///修复bug
};

//box2d当前版本号
extern b2Version b2_version;

#endif