mirror of https://github.com/axmolengine/axmol.git
Merge branch 'develop' of https://github.com/cocos2d/cocos2d-x into cocos-console-test
This commit is contained in:
commit
e521632b55
6
AUTHORS
6
AUTHORS
|
@ -780,6 +780,12 @@ Developers:
|
||||||
|
|
||||||
huangml
|
huangml
|
||||||
Fixed a bug that Node::removeAllChildrenWithCleanup() does not remove PhysicsBody.
|
Fixed a bug that Node::removeAllChildrenWithCleanup() does not remove PhysicsBody.
|
||||||
|
|
||||||
|
newnon
|
||||||
|
Adds getCurrentLanguageCode() which returns iso 639-1 language code
|
||||||
|
|
||||||
|
youknowone
|
||||||
|
Adds iOS-like elastic bounceback support for cocos2d::extension::ScrollView
|
||||||
|
|
||||||
Retired Core Developers:
|
Retired Core Developers:
|
||||||
WenSheng Yang
|
WenSheng Yang
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
a0b9515cdcf5051f65f3a3efe3a0c35ab0769c69
|
e1d0a713b9c239ae437f21ab7c256413cebf3241
|
|
@ -100,6 +100,14 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual LanguageType getCurrentLanguage() = 0;
|
virtual LanguageType getCurrentLanguage() = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Get current language iso 639-1 code
|
||||||
|
@return Current language iso 639-1 code
|
||||||
|
* @js NA
|
||||||
|
* @lua NA
|
||||||
|
*/
|
||||||
|
virtual const char * getCurrentLanguageCode() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Get target platform
|
@brief Get target platform
|
||||||
* @js NA
|
* @js NA
|
||||||
|
|
|
@ -86,6 +86,14 @@ Application* Application::sharedApplication()
|
||||||
return Application::getInstance();
|
return Application::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char * Application::getCurrentLanguageCode()
|
||||||
|
{
|
||||||
|
static char code[3]={0};
|
||||||
|
strncpy(code,getCurrentLanguageJNI().c_str(),2);
|
||||||
|
code[2]='\0';
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
LanguageType Application::getCurrentLanguage()
|
LanguageType Application::getCurrentLanguage()
|
||||||
{
|
{
|
||||||
std::string languageName = getCurrentLanguageJNI();
|
std::string languageName = getCurrentLanguageJNI();
|
||||||
|
|
|
@ -73,6 +73,12 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual LanguageType getCurrentLanguage();
|
virtual LanguageType getCurrentLanguage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Get current language iso 639-1 code
|
||||||
|
@return Current language iso 639-1 code
|
||||||
|
*/
|
||||||
|
virtual const char * getCurrentLanguageCode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Get target platform
|
@brief Get target platform
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -75,6 +75,12 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual LanguageType getCurrentLanguage();
|
virtual LanguageType getCurrentLanguage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Get current language iso 639-1 code
|
||||||
|
@return Current language iso 639-1 code
|
||||||
|
*/
|
||||||
|
virtual const char * getCurrentLanguageCode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Get target platform
|
@brief Get target platform
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -78,6 +78,21 @@ Application* Application::sharedApplication()
|
||||||
return Application::getInstance();
|
return Application::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char * Application::getCurrentLanguageCode()
|
||||||
|
{
|
||||||
|
static char code[3]={0};
|
||||||
|
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
|
||||||
|
NSString *currentLanguage = [languages objectAtIndex:0];
|
||||||
|
|
||||||
|
// get the current language code.(such as English is "en", Chinese is "zh" and so on)
|
||||||
|
NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage];
|
||||||
|
NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode];
|
||||||
|
[languageCode getCString:code maxLength:2 encoding:NSASCIIStringEncoding];
|
||||||
|
code[2]='\0';
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
LanguageType Application::getCurrentLanguage()
|
LanguageType Application::getCurrentLanguage()
|
||||||
{
|
{
|
||||||
// get the current language and country config
|
// get the current language and country config
|
||||||
|
|
|
@ -151,6 +151,20 @@ Application* Application::sharedApplication()
|
||||||
return Application::getInstance();
|
return Application::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char * Application::getCurrentLanguageCode()
|
||||||
|
{
|
||||||
|
static char code[3]={0};
|
||||||
|
char *pLanguageName = getenv("LANG");
|
||||||
|
if (!pLanguageName)
|
||||||
|
return "en";
|
||||||
|
strtok(pLanguageName, "_");
|
||||||
|
if (!pLanguageName)
|
||||||
|
return "en";
|
||||||
|
strncpy(code,pLanguageName,2);
|
||||||
|
code[2]='\0';
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
LanguageType Application::getCurrentLanguage()
|
LanguageType Application::getCurrentLanguage()
|
||||||
{
|
{
|
||||||
char *pLanguageName = getenv("LANG");
|
char *pLanguageName = getenv("LANG");
|
||||||
|
|
|
@ -72,6 +72,13 @@ public:
|
||||||
/* override functions */
|
/* override functions */
|
||||||
virtual LanguageType getCurrentLanguage();
|
virtual LanguageType getCurrentLanguage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Get current language iso 639-1 code
|
||||||
|
@return Current language iso 639-1 code
|
||||||
|
*/
|
||||||
|
virtual const char * getCurrentLanguageCode();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Resource root path.
|
* Sets the Resource root path.
|
||||||
* @deprecated Please use FileUtils::getInstance()->setSearchPaths() instead.
|
* @deprecated Please use FileUtils::getInstance()->setSearchPaths() instead.
|
||||||
|
|
|
@ -80,6 +80,12 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual LanguageType getCurrentLanguage();
|
virtual LanguageType getCurrentLanguage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Get current language iso 639-1 code
|
||||||
|
@return Current language iso 639-1 code
|
||||||
|
*/
|
||||||
|
virtual const char * getCurrentLanguageCode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Get target platform
|
@brief Get target platform
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -134,6 +134,21 @@ Application* Application::sharedApplication()
|
||||||
return Application::getInstance();
|
return Application::getInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char * Application::getCurrentLanguageCode()
|
||||||
|
{
|
||||||
|
static char code[3]={0};
|
||||||
|
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
|
||||||
|
NSString *currentLanguage = [languages objectAtIndex:0];
|
||||||
|
|
||||||
|
// get the current language code.(such as English is "en", Chinese is "zh" and so on)
|
||||||
|
NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage];
|
||||||
|
NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode];
|
||||||
|
[languageCode getCString:code maxLength:2 encoding:NSASCIIStringEncoding];
|
||||||
|
code[2]='\0';
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
LanguageType Application::getCurrentLanguage()
|
LanguageType Application::getCurrentLanguage()
|
||||||
{
|
{
|
||||||
// get the current language and country config
|
// get the current language and country config
|
||||||
|
|
|
@ -190,6 +190,16 @@ LanguageType Application::getCurrentLanguage()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char * Application::getCurrentLanguageCode()
|
||||||
|
{
|
||||||
|
LANGID lid = GetUserDefaultUILanguage();
|
||||||
|
const LCID locale_id = MAKELCID(lid, SORT_DEFAULT);
|
||||||
|
static char code[3] = { 0 };
|
||||||
|
GetLocaleInfoA(locale_id, LOCALE_SISO639LANGNAME, code, sizeof(code));
|
||||||
|
code[2] = '\0';
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
Application::Platform Application::getTargetPlatform()
|
Application::Platform Application::getTargetPlatform()
|
||||||
{
|
{
|
||||||
return Platform::OS_WINDOWS;
|
return Platform::OS_WINDOWS;
|
||||||
|
|
|
@ -67,6 +67,8 @@ public:
|
||||||
/* override functions */
|
/* override functions */
|
||||||
virtual void setAnimationInterval(double interval);
|
virtual void setAnimationInterval(double interval);
|
||||||
virtual LanguageType getCurrentLanguage();
|
virtual LanguageType getCurrentLanguage();
|
||||||
|
|
||||||
|
virtual const char * getCurrentLanguageCode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief Get target platform
|
@brief Get target platform
|
||||||
|
|
|
@ -354,7 +354,6 @@ void PhysicsWorld::rayCast(PhysicsRayCastCallbackFunc func, const Point& point1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PhysicsWorld::queryRect(PhysicsQueryRectCallbackFunc func, const Rect& rect, void* data)
|
void PhysicsWorld::queryRect(PhysicsQueryRectCallbackFunc func, const Rect& rect, void* data)
|
||||||
{
|
{
|
||||||
CCASSERT(func != nullptr, "func shouldn't be nullptr");
|
CCASSERT(func != nullptr, "func shouldn't be nullptr");
|
||||||
|
@ -418,134 +417,6 @@ PhysicsShape* PhysicsWorld::getShape(const Point& point) const
|
||||||
return shape == nullptr ? nullptr : PhysicsShapeInfo::getMap().find(shape)->second->getShape();
|
return shape == nullptr ? nullptr : PhysicsShapeInfo::getMap().find(shape)->second->getShape();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsDebugDraw::drawShape(PhysicsShape& shape)
|
|
||||||
{
|
|
||||||
for (auto it = shape._info->getShapes().begin(); it != shape._info->getShapes().end(); ++it)
|
|
||||||
{
|
|
||||||
cpShape *subShape = *it;
|
|
||||||
|
|
||||||
switch ((*it)->klass_private->type)
|
|
||||||
{
|
|
||||||
case CP_CIRCLE_SHAPE:
|
|
||||||
{
|
|
||||||
float radius = PhysicsHelper::cpfloat2float(cpCircleShapeGetRadius(subShape));
|
|
||||||
Point centre = PhysicsHelper::cpv2point(cpBodyGetPos(cpShapeGetBody(subShape)))
|
|
||||||
+ PhysicsHelper::cpv2point(cpCircleShapeGetOffset(subShape));
|
|
||||||
|
|
||||||
static const int CIRCLE_SEG_NUM = 12;
|
|
||||||
Point seg[CIRCLE_SEG_NUM] = {};
|
|
||||||
|
|
||||||
for (int i = 0; i < CIRCLE_SEG_NUM; ++i)
|
|
||||||
{
|
|
||||||
float angle = (float)i * M_PI / (float)CIRCLE_SEG_NUM * 2.0f;
|
|
||||||
Point d(radius * cosf(angle), radius * sinf(angle));
|
|
||||||
seg[i] = centre + d;
|
|
||||||
}
|
|
||||||
_drawNode->drawPolygon(seg, CIRCLE_SEG_NUM, Color4F(1.0f, 0.0f, 0.0f, 0.3f), 1, Color4F(1, 0, 0, 1));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CP_SEGMENT_SHAPE:
|
|
||||||
{
|
|
||||||
cpSegmentShape *seg = (cpSegmentShape *)subShape;
|
|
||||||
_drawNode->drawSegment(PhysicsHelper::cpv2point(seg->ta),
|
|
||||||
PhysicsHelper::cpv2point(seg->tb),
|
|
||||||
PhysicsHelper::cpfloat2float(seg->r==0 ? 1 : seg->r), Color4F(1, 0, 0, 1));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CP_POLY_SHAPE:
|
|
||||||
{
|
|
||||||
cpPolyShape* poly = (cpPolyShape*)subShape;
|
|
||||||
int num = poly->numVerts;
|
|
||||||
Point* seg = new Point[num];
|
|
||||||
|
|
||||||
PhysicsHelper::cpvs2points(poly->tVerts, seg, num);
|
|
||||||
|
|
||||||
_drawNode->drawPolygon(seg, num, Color4F(1.0f, 0.0f, 0.0f, 0.3f), 1.0f, Color4F(1.0f, 0.0f, 0.0f, 1.0f));
|
|
||||||
|
|
||||||
delete[] seg;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PhysicsDebugDraw::drawJoint(PhysicsJoint& joint)
|
|
||||||
{
|
|
||||||
for (auto it = joint._info->getJoints().begin(); it != joint._info->getJoints().end(); ++it)
|
|
||||||
{
|
|
||||||
cpConstraint *constraint = *it;
|
|
||||||
|
|
||||||
|
|
||||||
cpBody *body_a = constraint->a;
|
|
||||||
cpBody *body_b = constraint->b;
|
|
||||||
|
|
||||||
const cpConstraintClass *klass = constraint->klass_private;
|
|
||||||
if(klass == cpPinJointGetClass())
|
|
||||||
{
|
|
||||||
cpPinJoint *subJoint = (cpPinJoint *)constraint;
|
|
||||||
|
|
||||||
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
|
||||||
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
|
||||||
|
|
||||||
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, Color4F(0.0f, 0.0f, 1.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
}
|
|
||||||
else if(klass == cpSlideJointGetClass())
|
|
||||||
{
|
|
||||||
cpSlideJoint *subJoint = (cpSlideJoint *)constraint;
|
|
||||||
|
|
||||||
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
|
||||||
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
|
||||||
|
|
||||||
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, Color4F(0.0f, 0.0f, 1.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
}
|
|
||||||
else if(klass == cpPivotJointGetClass())
|
|
||||||
{
|
|
||||||
cpPivotJoint *subJoint = (cpPivotJoint *)constraint;
|
|
||||||
|
|
||||||
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
|
||||||
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
|
||||||
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
}
|
|
||||||
else if(klass == cpGrooveJointGetClass())
|
|
||||||
{
|
|
||||||
cpGrooveJoint *subJoint = (cpGrooveJoint *)constraint;
|
|
||||||
|
|
||||||
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->grv_a, body_a->rot));
|
|
||||||
cpVect b = cpvadd(body_a->p, cpvrotate(subJoint->grv_b, body_a->rot));
|
|
||||||
cpVect c = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
|
||||||
|
|
||||||
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, Color4F(0.0f, 0.0f, 1.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(c), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
}
|
|
||||||
else if(klass == cpDampedSpringGetClass())
|
|
||||||
{
|
|
||||||
cpDampedSpring *subJoint = (cpDampedSpring *)constraint;
|
|
||||||
|
|
||||||
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
|
||||||
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
|
||||||
|
|
||||||
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, Color4F(0.0f, 0.0f, 1.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, Color4F(0.0f, 1.0f, 0.0f, 1.0f));
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PhysicsDebugDraw::drawContact()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
PhysicsWorld* PhysicsWorld::construct(Scene& scene)
|
PhysicsWorld* PhysicsWorld::construct(Scene& scene)
|
||||||
{
|
{
|
||||||
PhysicsWorld * world = new PhysicsWorld();
|
PhysicsWorld * world = new PhysicsWorld();
|
||||||
|
@ -1062,34 +933,19 @@ PhysicsDebugDraw::PhysicsDebugDraw(PhysicsWorld& world)
|
||||||
: _drawNode(nullptr)
|
: _drawNode(nullptr)
|
||||||
, _world(world)
|
, _world(world)
|
||||||
{
|
{
|
||||||
|
_drawNode = DrawNode::create();
|
||||||
|
_world.getScene().addChild(_drawNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysicsDebugDraw::~PhysicsDebugDraw()
|
PhysicsDebugDraw::~PhysicsDebugDraw()
|
||||||
{
|
{
|
||||||
if (_drawNode != nullptr)
|
_drawNode->removeFromParent();
|
||||||
{
|
_drawNode = nullptr;
|
||||||
_drawNode->removeFromParent();
|
|
||||||
_drawNode = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsDebugDraw::begin()
|
bool PhysicsDebugDraw::begin()
|
||||||
{
|
{
|
||||||
if (_drawNode != nullptr)
|
_drawNode->clear();
|
||||||
{
|
|
||||||
_drawNode->removeFromParent();
|
|
||||||
_drawNode = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
_drawNode = DrawNode::create();
|
|
||||||
|
|
||||||
if (_drawNode == nullptr)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_world.getScene().addChild(_drawNode);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1097,6 +953,138 @@ void PhysicsDebugDraw::end()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PhysicsDebugDraw::drawShape(PhysicsShape& shape)
|
||||||
|
{
|
||||||
|
const Color4F fillColor(1.0f, 0.0f, 0.0f, 0.3f);
|
||||||
|
const Color4F outlineColor(1.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
|
||||||
|
for (auto it = shape._info->getShapes().begin(); it != shape._info->getShapes().end(); ++it)
|
||||||
|
{
|
||||||
|
cpShape *subShape = *it;
|
||||||
|
|
||||||
|
switch ((*it)->klass_private->type)
|
||||||
|
{
|
||||||
|
case CP_CIRCLE_SHAPE:
|
||||||
|
{
|
||||||
|
float radius = PhysicsHelper::cpfloat2float(cpCircleShapeGetRadius(subShape));
|
||||||
|
Point centre = PhysicsHelper::cpv2point(cpBodyGetPos(cpShapeGetBody(subShape)))
|
||||||
|
+ PhysicsHelper::cpv2point(cpCircleShapeGetOffset(subShape));
|
||||||
|
|
||||||
|
static const int CIRCLE_SEG_NUM = 12;
|
||||||
|
Point seg[CIRCLE_SEG_NUM] = {};
|
||||||
|
|
||||||
|
for (int i = 0; i < CIRCLE_SEG_NUM; ++i)
|
||||||
|
{
|
||||||
|
float angle = (float)i * M_PI / (float)CIRCLE_SEG_NUM * 2.0f;
|
||||||
|
Point d(radius * cosf(angle), radius * sinf(angle));
|
||||||
|
seg[i] = centre + d;
|
||||||
|
}
|
||||||
|
_drawNode->drawPolygon(seg, CIRCLE_SEG_NUM, fillColor, 1, outlineColor);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CP_SEGMENT_SHAPE:
|
||||||
|
{
|
||||||
|
cpSegmentShape *seg = (cpSegmentShape *)subShape;
|
||||||
|
_drawNode->drawSegment(PhysicsHelper::cpv2point(seg->ta),
|
||||||
|
PhysicsHelper::cpv2point(seg->tb),
|
||||||
|
PhysicsHelper::cpfloat2float(seg->r==0 ? 1 : seg->r), outlineColor);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CP_POLY_SHAPE:
|
||||||
|
{
|
||||||
|
cpPolyShape* poly = (cpPolyShape*)subShape;
|
||||||
|
int num = poly->numVerts;
|
||||||
|
Point* seg = new Point[num];
|
||||||
|
|
||||||
|
PhysicsHelper::cpvs2points(poly->tVerts, seg, num);
|
||||||
|
|
||||||
|
_drawNode->drawPolygon(seg, num, fillColor, 1.0f, outlineColor);
|
||||||
|
|
||||||
|
delete[] seg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PhysicsDebugDraw::drawJoint(PhysicsJoint& joint)
|
||||||
|
{
|
||||||
|
const Color4F lineColor(0.0f, 0.0f, 1.0f, 1.0f);
|
||||||
|
const Color4F jointPointColor(0.0f, 1.0f, 0.0f, 1.0f);
|
||||||
|
|
||||||
|
for (auto it = joint._info->getJoints().begin(); it != joint._info->getJoints().end(); ++it)
|
||||||
|
{
|
||||||
|
cpConstraint *constraint = *it;
|
||||||
|
|
||||||
|
|
||||||
|
cpBody *body_a = constraint->a;
|
||||||
|
cpBody *body_b = constraint->b;
|
||||||
|
|
||||||
|
const cpConstraintClass *klass = constraint->klass_private;
|
||||||
|
if(klass == cpPinJointGetClass())
|
||||||
|
{
|
||||||
|
cpPinJoint *subJoint = (cpPinJoint *)constraint;
|
||||||
|
|
||||||
|
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
||||||
|
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
||||||
|
|
||||||
|
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, lineColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, jointPointColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, jointPointColor);
|
||||||
|
}
|
||||||
|
else if(klass == cpSlideJointGetClass())
|
||||||
|
{
|
||||||
|
cpSlideJoint *subJoint = (cpSlideJoint *)constraint;
|
||||||
|
|
||||||
|
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
||||||
|
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
||||||
|
|
||||||
|
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, lineColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, jointPointColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, jointPointColor);
|
||||||
|
}
|
||||||
|
else if(klass == cpPivotJointGetClass())
|
||||||
|
{
|
||||||
|
cpPivotJoint *subJoint = (cpPivotJoint *)constraint;
|
||||||
|
|
||||||
|
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
||||||
|
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
||||||
|
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, jointPointColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, jointPointColor);
|
||||||
|
}
|
||||||
|
else if(klass == cpGrooveJointGetClass())
|
||||||
|
{
|
||||||
|
cpGrooveJoint *subJoint = (cpGrooveJoint *)constraint;
|
||||||
|
|
||||||
|
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->grv_a, body_a->rot));
|
||||||
|
cpVect b = cpvadd(body_a->p, cpvrotate(subJoint->grv_b, body_a->rot));
|
||||||
|
cpVect c = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
||||||
|
|
||||||
|
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, lineColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(c), 2, jointPointColor);
|
||||||
|
}
|
||||||
|
else if(klass == cpDampedSpringGetClass())
|
||||||
|
{
|
||||||
|
cpDampedSpring *subJoint = (cpDampedSpring *)constraint;
|
||||||
|
|
||||||
|
cpVect a = cpvadd(body_a->p, cpvrotate(subJoint->anchr1, body_a->rot));
|
||||||
|
cpVect b = cpvadd(body_b->p, cpvrotate(subJoint->anchr2, body_b->rot));
|
||||||
|
|
||||||
|
_drawNode->drawSegment(PhysicsHelper::cpv2point(a), PhysicsHelper::cpv2point(b), 1, lineColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(a), 2, jointPointColor);
|
||||||
|
_drawNode->drawDot(PhysicsHelper::cpv2point(b), 2, jointPointColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PhysicsDebugDraw::drawContact()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
NS_CC_END
|
NS_CC_END
|
||||||
|
|
||||||
#endif // CC_USE_PHYSICS
|
#endif // CC_USE_PHYSICS
|
||||||
|
|
|
@ -8,15 +8,20 @@
|
||||||
-- @return ApplicationProtocol::Platform#ApplicationProtocol::Platform ret (return value: cc.ApplicationProtocol::Platform)
|
-- @return ApplicationProtocol::Platform#ApplicationProtocol::Platform ret (return value: cc.ApplicationProtocol::Platform)
|
||||||
|
|
||||||
--------------------------------
|
--------------------------------
|
||||||
-- @function [parent=#Application] setAnimationInterval
|
-- @function [parent=#Application] getCurrentLanguageCode
|
||||||
-- @param self
|
-- @param self
|
||||||
-- @param #double double
|
-- @return char#char ret (return value: char)
|
||||||
|
|
||||||
--------------------------------
|
--------------------------------
|
||||||
-- @function [parent=#Application] getCurrentLanguage
|
-- @function [parent=#Application] getCurrentLanguage
|
||||||
-- @param self
|
-- @param self
|
||||||
-- @return LanguageType#LanguageType ret (return value: cc.LanguageType)
|
-- @return LanguageType#LanguageType ret (return value: cc.LanguageType)
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
-- @function [parent=#Application] setAnimationInterval
|
||||||
|
-- @param self
|
||||||
|
-- @param #double double
|
||||||
|
|
||||||
--------------------------------
|
--------------------------------
|
||||||
-- @function [parent=#Application] getInstance
|
-- @function [parent=#Application] getInstance
|
||||||
-- @param self
|
-- @param self
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
9051708a178a924988d74ec62994d615f1882a3c
|
adb82cd767b31065425c12591d380c419a3d88ae
|
|
@ -1544,6 +1544,7 @@ int register_all_cocos2dx(lua_State* tolua_S);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __cocos2dx_h__
|
#endif // __cocos2dx_h__
|
||||||
|
|
|
@ -236,6 +236,29 @@ void ScriptHandlerMgr::removeObjectAllHandlers(void* object)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScriptHandlerMgr::HandlerType ScriptHandlerMgr::addCustomHandler(void* object, int handler)
|
||||||
|
{
|
||||||
|
assert(nullptr != object);
|
||||||
|
|
||||||
|
auto iter = _mapObjectHandlers.find(object);
|
||||||
|
VecHandlerPairs vecHandlers;
|
||||||
|
vecHandlers.clear();
|
||||||
|
HandlerType handlerType = HandlerType::EVENT_CUSTOM_BEGAN;
|
||||||
|
|
||||||
|
if (_mapObjectHandlers.end() != iter)
|
||||||
|
{
|
||||||
|
vecHandlers = iter->second;
|
||||||
|
handlerType = static_cast<HandlerType>((int)vecHandlers.back().first + 1);
|
||||||
|
}
|
||||||
|
assert(handlerType <= HandlerType::EVENT_CUSTOM_ENDED);
|
||||||
|
|
||||||
|
HandlerPair eventHanler = std::make_pair(handlerType, handler);
|
||||||
|
vecHandlers.push_back(eventHanler);
|
||||||
|
_mapObjectHandlers[object] = vecHandlers;
|
||||||
|
|
||||||
|
return handlerType;
|
||||||
|
}
|
||||||
|
|
||||||
NS_CC_END
|
NS_CC_END
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -160,8 +160,11 @@ public:
|
||||||
EVENT_PHYSICS_CONTACT_PRESOLVE,
|
EVENT_PHYSICS_CONTACT_PRESOLVE,
|
||||||
EVENT_PHYSICS_CONTACT_POSTSOLVE,
|
EVENT_PHYSICS_CONTACT_POSTSOLVE,
|
||||||
EVENT_PHYSICS_CONTACT_SEPERATE,
|
EVENT_PHYSICS_CONTACT_SEPERATE,
|
||||||
|
|
||||||
|
EVENT_CUSTOM_BEGAN = 10000,
|
||||||
|
EVENT_CUSTOM_ENDED = 11000,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef int Handler;
|
typedef int Handler;
|
||||||
typedef std::pair<HandlerType, Handler> HandlerPair;
|
typedef std::pair<HandlerType, Handler> HandlerPair;
|
||||||
typedef std::vector<HandlerPair> VecHandlerPairs;
|
typedef std::vector<HandlerPair> VecHandlerPairs;
|
||||||
|
@ -175,6 +178,7 @@ public:
|
||||||
void removeObjectHandler(void* object,ScriptHandlerMgr::HandlerType handlerType);
|
void removeObjectHandler(void* object,ScriptHandlerMgr::HandlerType handlerType);
|
||||||
int getObjectHandler(void* object,ScriptHandlerMgr::HandlerType handlerType);
|
int getObjectHandler(void* object,ScriptHandlerMgr::HandlerType handlerType);
|
||||||
void removeObjectAllHandlers(void* object);
|
void removeObjectAllHandlers(void* object);
|
||||||
|
ScriptHandlerMgr::HandlerType addCustomHandler(void* object, int handler);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init(void);
|
void init(void);
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
|
|
||||||
@interface AppController : NSObject <UIApplicationDelegate> {
|
@interface AppController : NSObject <UIApplicationDelegate> {
|
||||||
UIWindow *window;
|
UIWindow *window;
|
||||||
RootViewController *viewController;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@property(nonatomic, readonly) RootViewController* viewController;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -53,20 +53,20 @@ static AppDelegate s_sharedApplication;
|
||||||
numberOfSamples: 0];
|
numberOfSamples: 0];
|
||||||
|
|
||||||
// Use RootViewController manage CCEAGLView
|
// Use RootViewController manage CCEAGLView
|
||||||
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
|
_viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
|
||||||
viewController.wantsFullScreenLayout = YES;
|
_viewController.wantsFullScreenLayout = YES;
|
||||||
viewController.view = eaglView;
|
_viewController.view = eaglView;
|
||||||
|
|
||||||
// Set RootViewController to window
|
// Set RootViewController to window
|
||||||
if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
|
if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
|
||||||
{
|
{
|
||||||
// warning: addSubView doesn't work on iOS6
|
// warning: addSubView doesn't work on iOS6
|
||||||
[window addSubview: viewController.view];
|
[window addSubview: _viewController.view];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// use this method on ios6
|
// use this method on ios6
|
||||||
[window setRootViewController:viewController];
|
[window setRootViewController:_viewController];
|
||||||
}
|
}
|
||||||
|
|
||||||
[window makeKeyAndVisible];
|
[window makeKeyAndVisible];
|
||||||
|
|
|
@ -6,7 +6,7 @@ import socket
|
||||||
import time
|
import time
|
||||||
|
|
||||||
HOST_MAC = 'localhost'
|
HOST_MAC = 'localhost'
|
||||||
HOST_ADNROID = '10.10.30.64'
|
HOST_ADNROID = '10.10.40.64'
|
||||||
HOST_IOS = '10.10.30.61'
|
HOST_IOS = '10.10.30.61'
|
||||||
PORT = 5678
|
PORT = 5678
|
||||||
|
|
||||||
|
@ -75,12 +75,24 @@ def MAC_BUILD():
|
||||||
return buildAndRun()
|
return buildAndRun()
|
||||||
#----------------autotest build and run end----------------#
|
#----------------autotest build and run end----------------#
|
||||||
|
|
||||||
|
PATH_ANDROID_SRC = 'tests/cpp-tests/proj.android/'
|
||||||
|
FILE_ANDROID_DELETE = ['libs','gen','assets','bin','obj']
|
||||||
#----------------autotest-android build and run----------------#
|
#----------------autotest-android build and run----------------#
|
||||||
def ANDROID_BUILD():
|
def ANDROID_BUILD():
|
||||||
|
def checkDevice():
|
||||||
|
cmd = 'adb devices'
|
||||||
|
infoDev = os.popen(cmd).readlines()
|
||||||
|
firstDev = infoDev[1]
|
||||||
|
if len(firstDev) < 5 or firstDev.find('device') < 0:
|
||||||
|
print 'no android device.'
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
print 'device info:', firstDev
|
||||||
|
return True
|
||||||
def cleanProj():
|
def cleanProj():
|
||||||
infoClean = os.system('rm -rf libs gen obj assets bin')
|
for strFile in FILE_ANDROID_DELETE:
|
||||||
print 'infoClean: ', infoClean
|
infoClean = os.system('rm -rf '+PATH_ANDROID_SRC+strFile)
|
||||||
infoClean = os.system('adb uninstall org.cocos2dx.testcpp');
|
infoClean = os.system('adb uninstall org.cocos2dx.cpp_tests');
|
||||||
print 'infoClean: ', infoClean
|
print 'infoClean: ', infoClean
|
||||||
if infoClean != 0:
|
if infoClean != 0:
|
||||||
print 'clean **CLEAN FAILED**'
|
print 'clean **CLEAN FAILED**'
|
||||||
|
@ -88,19 +100,26 @@ def ANDROID_BUILD():
|
||||||
def updateProperty():
|
def updateProperty():
|
||||||
infoUpdate = os.system('android update project -p ./cocos/2d/platform/android/java/ -t 12')
|
infoUpdate = os.system('android update project -p ./cocos/2d/platform/android/java/ -t 12')
|
||||||
print 'cocos update:', infoUpdate
|
print 'cocos update:', infoUpdate
|
||||||
infoUpdate = os.system('android update project -p ./tests/proj.android/ -t 12')
|
infoUpdate = os.system('android update project -p '+PATH_ANDROID_SRC+' -t 12')
|
||||||
print 'test update:', infoUpdate
|
print 'test update:', infoUpdate
|
||||||
def buildProj():
|
def buildProj():
|
||||||
infoBuild = os.system('./build/android-build.py testcpp')
|
infoBuild = os.system('./build/android-build.py -p 13 cpp-tests')
|
||||||
print 'infoBuild testcpp: ', infoBuild
|
print 'infoBuild cpp_tests: ', infoBuild
|
||||||
infoBuild = os.system('ant -buildfile ./tests/proj.android/ debug install')
|
infoBuild = os.system('ant -buildfile '+PATH_ANDROID_SRC+' debug')
|
||||||
print 'infoBuild: ', infoBuild
|
print 'infoBuild: ', infoBuild
|
||||||
if infoBuild != 0:
|
if infoBuild != 0:
|
||||||
print 'build **BUILD FAILED**'
|
print 'build **BUILD FAILED**'
|
||||||
time.sleep(sleep_time)
|
time.sleep(sleep_time)
|
||||||
return infoBuild
|
return infoBuild
|
||||||
|
def installProj():
|
||||||
|
cmd = 'adb install '+PATH_ANDROID_SRC+'bin/CppTests-debug.apk'
|
||||||
|
infoInstall = os.system(cmd)
|
||||||
|
print 'infoInstall:', infoInstall
|
||||||
|
if infoInstall != 0:
|
||||||
|
print 'install **INSTALL FAILED**'
|
||||||
|
return infoInstall
|
||||||
def openProj():
|
def openProj():
|
||||||
cmd = 'adb shell am start -n org.cocos2dx.testcpp/org.cocos2dx.testcpp.Cocos2dxActivity'
|
cmd = 'adb shell am start -n org.cocos2dx.cpp_tests/org.cocos2dx.cpp_tests.Cocos2dxActivity'
|
||||||
print 'cmd: ', cmd
|
print 'cmd: ', cmd
|
||||||
infoOpen = os.system(cmd)
|
infoOpen = os.system(cmd)
|
||||||
print 'infoOpen: ', infoOpen
|
print 'infoOpen: ', infoOpen
|
||||||
|
@ -109,11 +128,12 @@ def ANDROID_BUILD():
|
||||||
time.sleep(sleep_time)
|
time.sleep(sleep_time)
|
||||||
return True
|
return True
|
||||||
def buildAndRun():
|
def buildAndRun():
|
||||||
|
if not checkDevice():
|
||||||
|
return False
|
||||||
cleanProj()
|
cleanProj()
|
||||||
updateProperty()
|
updateProperty()
|
||||||
if buildProj() != 0:
|
buildProj()
|
||||||
cleanProj()
|
installProj()
|
||||||
buildProj()
|
|
||||||
return openProj()
|
return openProj()
|
||||||
return buildAndRun()
|
return buildAndRun()
|
||||||
#----------------autotest-android build and run end----------------#
|
#----------------autotest-android build and run end----------------#
|
||||||
|
@ -121,11 +141,12 @@ def ANDROID_BUILD():
|
||||||
def main():
|
def main():
|
||||||
print 'will build mac project.'
|
print 'will build mac project.'
|
||||||
suc_build_mac = MAC_BUILD()
|
suc_build_mac = MAC_BUILD()
|
||||||
#print 'will build android project.'
|
print 'will build android project.'
|
||||||
#suc_build_android = ANDROID_BUILD()
|
suc_build_android = ANDROID_BUILD()
|
||||||
if suc_build_mac:
|
if suc_build_mac:
|
||||||
autotest(TYPE_MAC)
|
autotest(TYPE_MAC)
|
||||||
if suc_build_android:
|
if suc_build_android:
|
||||||
|
print 'will run android autotest.'
|
||||||
autotest(TYPE_ANDROID)
|
autotest(TYPE_ANDROID)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue