void HelloWorld::initSprites() { _cache = CCArray::arrayWithCapacity(53); PolygonSprite *sprite = Watermelon::spriteWithWorld(world); this->addChild(sprite, 1); sprite->activateCollisions(); _cache->addObject(sprite); }
PolygonSprite * PolygonSprite::spriteWithWorld(b2World *world, TYPE_FRUITS type, const char *physicPlistFile) { PolygonSprite * polygonSprite = new PolygonSprite; if (polygonSprite == NULL || !polygonSprite->initWithWorld(world, type, physicPlistFile)) { CC_SAFE_DELETE(polygonSprite); return NULL; } polygonSprite->autorelease(); return polygonSprite; }
PolygonSprite * PolygonSprite::spriteWithFile(const char *filename, b2Body *body, bool original) { PolygonSprite * polygonSprite = new PolygonSprite; if (polygonSprite == NULL || !polygonSprite->initWithFile(filename, body, original)) { CC_SAFE_DELETE(polygonSprite); return NULL; } polygonSprite->autorelease(); return polygonSprite; }
PolygonSprite * PolygonSprite::spriteWithTexture(CCTexture2D *texture, b2Body *body, bool original) { PolygonSprite * polygonSprite = new PolygonSprite; if (polygonSprite == NULL || !polygonSprite->initWithTexture(texture, body, original)) { CC_SAFE_DELETE(polygonSprite); return NULL; } polygonSprite->autorelease(); return polygonSprite; }
PolygonSprite* PolygonSprite::create(cc::CCTexture2D *pTexture, std::vector<pr::Vec2> const& triangles, cc::CCRect const& rect) { std::vector<cc::ccVertex3F> cc_triangles; for( size_t i=0; i<triangles.size(); ++i ) { cc::CCPoint p = triangles[i].toCCPoint(); cc::ccVertex3F v = { p.x - rect.origin.x , p.y - rect.origin.y, 0 }; cc_triangles.push_back( v ); } PolygonSprite *sprite = new PolygonSprite(); if (sprite && sprite->init(pTexture, &cc_triangles, rect)) { sprite->autorelease(); return sprite; } CC_SAFE_DELETE(sprite); return NULL; }