#include "HelloWorldScene.h"
Scene* HelloWorld::createScene()
{
return HelloWorld::create();
}
bool HelloWorld::init()
{
if ( !Scene::init() )
{
return false;
}
/////////////////////////////
// 윈도우 크기를 구한다.
winSize = Director::getInstance()->getWinSize();
// 이미지의 텍스쳐를 구한다.
texture = Director::getInstance()->getTextureCache()->addImage("blocks.png");
// 월드 생성
if (this->createBox2dWorld(true))
{
srand((int)time(nullptr));
this->setBox2dWorld();
this->schedule(schedule_selector(HelloWorld::tick));
}
return true;
}
bool HelloWorld::createBox2dWorld(bool debug)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::setBox2dWorld()
{
// 마우스 조인트 바디를 생성해서 월드에 추가한다.
bDrag = false;
gbody = this->addNewSprite(Vec2(0, 0), Size(0, 0), b2_staticBody, nullptr, 0);
// *****************************************************************************
// 바디를 생성해서 월드에 추가한다.
b2Body* body1 = this->addNewSprite(Vec2(240, 160), Size(32, 32),
b2_staticBody, "test", 0);
b2Body* body2 = this->addNewSprite(Vec2(140, 160), Size(32, 32),
b2_dynamicBody, "test", 0);
b2RevoluteJointDef revJointDef;
b2RevoluteJoint* revJoint;
revJointDef.Initialize(body1, body2, body1->GetPosition());
//revJointDef.enableLimit = true;
//revJointDef.lowerAngle = -90;
//revJointDef.upperAngle = 0;
revJoint = (b2RevoluteJoint *)_world->CreateJoint(&revJointDef);
}
HelloWorld::~HelloWorld()
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::onDraw(const Mat4 &transform, uint32_t flags)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::onEnter()
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::onExit()
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::tick(float dt)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
b2Body* HelloWorld::addNewSprite(Vec2 point, Size size, b2BodyType bodytype,
const char* spriteName, int type)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
b2Body* HelloWorld::getBodyAtTab(Vec2 p)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
bool HelloWorld::onTouchBegan(Touch* touch, Event* event)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::onTouchMoved(Touch* touch, Event* event)
{
… 생략 : Box2dEx04의 코드와 같음 …
}
void HelloWorld::onTouchEnded(Touch* touch, Event* event)
{
… 생략 : Box2dEx04의 코드와 같음 …
}