Skip to content

Commit

Permalink
Cleanup
Browse files Browse the repository at this point in the history
Signed-off-by: Tomas Slusny <[email protected]>
  • Loading branch information
deathbeam committed Feb 12, 2025
1 parent 1e633cb commit d2c79d3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 19 deletions.
30 changes: 12 additions & 18 deletions src/tiled/tilesetmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ int TilesetModel::columnCount(const QModelIndex &parent) const
QModelIndex TilesetModel::index(int row, int column, const QModelIndex &parent) const
{
if (tileset()->isAtlas())
// Atlas mode: allow any index
return createIndex(row, column);

return QAbstractListModel::index(row, column, parent);
Expand Down Expand Up @@ -205,24 +204,20 @@ bool TilesetModel::dropMimeData(const QMimeData *data, Qt::DropAction action,

Tile *TilesetModel::tileAt(const QModelIndex &index) const
{
if (tileset()->isAtlas()) {
if (!index.isValid())
return nullptr;
if (!index.isValid())
return nullptr;

const int gridSize = tileset()->tileWidth();
const QPoint gridPos((index.column() - 1) * gridSize, index.row() * gridSize);
if (tileset()->isAtlas()) {
const QPoint gridPos(index.column() - 1, index.row());
for (Tile *tile : tileset()->tiles()) {
const QPoint snappedPos = snapToGrid(tile->imageRect().bottomLeft(), gridSize);
const QPoint snappedPos = snapToGrid(tile->imageRect().bottomLeft());
if (snappedPos == gridPos)
return tile;
}

return nullptr;
}

if (!index.isValid())
return nullptr;

const int tileIndex = index.column() + index.row() * columnCount();
if (tileIndex < mTileIds.size()) {
const int tileId = mTileIds.at(tileIndex);
Expand All @@ -235,10 +230,8 @@ QModelIndex TilesetModel::tileIndex(const Tile *tile) const
{
Q_ASSERT(tile->tileset() == tileset());
if (tileset()->isAtlas()) {
const int gridSize = tileset()->tileWidth();
const QPoint snappedPos = snapToGrid(tile->imageRect().bottomLeft(), gridSize);
return index(snappedPos.y() / gridSize,
(snappedPos.x() / gridSize) + 1);
const QPoint snappedPos = snapToGrid(tile->imageRect().bottomLeft());
return index(snappedPos.y(), snappedPos.x() + 1);
}

const int columnCount = TilesetModel::columnCount();
Expand Down Expand Up @@ -322,11 +315,12 @@ void TilesetModel::refreshTileIds()
mTileIds.append(tile->id());
}

QPoint TilesetModel::snapToGrid(const QPoint &pos, int gridSize) const
QPoint TilesetModel::snapToGrid(const QPoint &pos) const
{
// Snap to nearest grid position, avoiding overlaps
const int x = (pos.x() + gridSize / 2) / gridSize * gridSize;
const int y = (pos.y() + gridSize / 2) / gridSize * gridSize;
const int tileWidth = tileset()->tileWidth();
const int tileHeight = tileset()->tileHeight();
const int x = (pos.x() + tileWidth / 2) / tileWidth;
const int y = (pos.y() + tileHeight / 2) / tileHeight;
return QPoint(x, y);
}

Expand Down
2 changes: 1 addition & 1 deletion src/tiled/tilesetmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public slots:

void refreshTileIds();

QPoint snapToGrid(const QPoint &pos, int gridSize) const;
QPoint snapToGrid(const QPoint &pos) const;

TilesetDocument *mTilesetDocument;
QList<int> mTileIds;
Expand Down

0 comments on commit d2c79d3

Please sign in to comment.