2012年1月16日月曜日

GB2ShapeCacheのCircleシェイプ読み込みバグ

circles by painted fish studio
circles, a photo by painted fish studio on Flickr.

PhysicsEditor からエクスポート(Box2D generic PLIST形式)したデータを読み込むクラス GB2ShapeCache で Circle シェイプが正しく読み込まれませんでした。
今現在、PhysicsEditor 1.0.5 に同梱されてくるものには、バグが含まれているので注意した方が良いでしょう。

開発者には既にレポートと修正パッチを渡しましたが、ここにも修正方法を書いておきます。

// GB2ShapeCache.mm
-(void)addShapesWithFile:(NSString*)plist
{
   :
   b2CircleShape *circleShape = new b2CircleShape();
   circleShape->m_radius = [[circleData objectForKey:@"radius"] floatValue]  / ptmRatio_;
   //CGPoint p = CGPointFromString_([fixtureData objectForKey:@"center"]);   /* Bug */
   CGPoint p = CGPointFromString_([circleData objectForKey:@"position"]);      /* Fixed */
   circleShape->m_p = b2Vec2(p.x / ptmRatio_, p.y / ptmRatio_);
   fix->fixture.shape = circleShape;
上記のとおり、Circle シェイプの読み込み部分で、
CGPoint p = CGPointFromString_([fixtureData objectForKey:@"center"]);
となっているところを
CGPoint p = CGPointFromString_([circleData objectForKey:@"position"]);
と修正してやれば OK です。

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...