void StageBuilder::addSimpleLevelFrame(PlayerSet &players, TXshSimpleLevel *level, const TFrameId &fid) { int index = -1; int row = level->guessIndex(fid); if (!m_onionSkinMask.isEmpty() && m_onionSkinMask.isEnabled()) { std::vector<int> rows; m_onionSkinMask.getAll(row, rows); std::vector<int>::iterator it = rows.begin(); while (it != rows.end() && *it < row) ++it; std::sort(rows.begin(), it, descending); m_onionSkinDistance = 0; int frontPos = 0, backPos = 0; for (int i = 0; i < (int)rows.size(); i++) { const TFrameId &fid2 = level->index2fid(rows[i]); if (fid2 == fid) continue; players.push_back(Player()); Player &player = players.back(); player.m_sl = level; player.m_frame = level->guessIndex(fid); player.m_fid = fid2; player.m_isCurrentColumn = true; player.m_isCurrentXsheetLevel = true; #ifdef NUOVO_ONION player.m_onionSkinDistance = rows[i] - row; #else player.m_onionSkinDistance = rows[i] - row < 0 ? --backPos : ++frontPos; #endif player.m_dpiAff = getDpiAffine(level, fid2); } } players.push_back(Player()); Player &player = players.back(); player.m_sl = level; player.m_frame = level->guessIndex(fid); player.m_fid = fid; if (!m_onionSkinMask.isEmpty() && m_onionSkinMask.isEnabled()) player.m_onionSkinDistance = 0; player.m_isCurrentColumn = true; player.m_isCurrentXsheetLevel = true; player.m_ancestorColumnIndex = -1; player.m_dpiAff = getDpiAffine(level, fid); }