void PlayerCar::loadSpine() { try { ifstream atlasFile("spineboy.atlas"); atlas = new Atlas(atlasFile); SkeletonJson skeletonJson(atlas); skeletonJson.scale = 0.5; ifstream skeletonFile("spineboy-skeleton.json"); skeletonData = skeletonJson.readSkeletonData(skeletonFile); ifstream animationFile("spineboy-walk.json"); animation = skeletonJson.readAnimation(animationFile, skeletonData); skeleton = new Skeleton(skeletonData); skeleton->flipX = false; skeleton->flipY = false; skeleton->setToBindPose(); skeleton->getRootBone()->x = 200; skeleton->getRootBone()->y = 500; skeleton->updateWorldTransform(); } catch (exception &ex) { cout << ex.what() << endl << flush; } }
Player::Player(ObjectLayer* layer, b2Vec2 position, uint16_t location) : layer(location), Collider(Collider::Player), inPortal(false), portalDirection(Portal::Up){ chdir("assets/player"); this->map = layer->map; b2BodyDef bodyDef; bodyDef.type = b2_dynamicBody; bodyDef.position = position; bodyDef.fixedRotation = true; body = layer->world.CreateBody(&bodyDef); body->SetUserData((Collider*)this); b2PolygonShape dynamicBox; dynamicBox.SetAsBox(0.47f, 0.75f, b2Vec2(0.5, 0.75), 0); b2FixtureDef fixtureDef; fixtureDef.shape = &dynamicBox; fixtureDef.density = 0.1f; fixtureDef.friction = 0; fixtureDef.userData = (b2ContactListener*)this; body->CreateFixture(&fixtureDef); b2CircleShape circle; circle.m_p.Set(0.5f, 1.5f); circle.m_radius = 0.49f; fixtureDef.shape = &circle; fixtureDef.density = 0.1f; fixtureDef.friction = 0.f; fixtureDef.userData = (b2ContactListener*)this; body->CreateFixture(&fixtureDef); b2CircleShape circlef; circlef.m_p.Set(0.5f, 1.9f); circlef.m_radius = 0.1; fixtureDef.shape = &circlef; fixtureDef.density = 0.1f; fixtureDef.friction = 2.f; fixtureDef.userData = (b2ContactListener*)this; body->CreateFixture(&fixtureDef); b2PolygonShape sensorBox; sensorBox.SetAsBox(0.45f, 0.1f, b2Vec2(0.5f, 2.f), 0); fixtureDef.shape = &sensorBox; fixtureDef.isSensor = true; fixtureDef.userData = (b2ContactListener*)this; body->CreateFixture(&fixtureDef); state = PlayerStanding; impulse = ImpulseNone; direction = Right; time = 0; jumpStart = 0; grounded = 0; std::ifstream atlasFile("pack.atlas"); atlas.reset(new spine::Atlas(atlasFile)); spine::SkeletonJson skeletonJson(atlas.get()); std::ifstream skeletonFile("skeleton.json"); skeletonData.reset(skeletonJson.readSkeletonData(skeletonFile)); std::ifstream animationFile("skeleton-run3.json"); run.reset(skeletonJson.readAnimation(animationFile, skeletonData.get())); skeleton.reset(new spine::Skeleton(skeletonData.get())); skeleton->flipX = false; skeleton->flipY = false; skeleton->setToBindPose(); skeleton->getRootBone()->x = X_OFFSET; skeleton->getRootBone()->y = Y_OFFSET; skeleton->updateWorldTransform(); sync(); chdir("../.."); }