Tiled: Add Move Selection feature.

Created on 26 Apr 2014  路  15Comments  路  Source: mapeditor/tiled

This is really fundamental to building stages in side-scrolling games. In that context, you often need to move slices of the stages back and forth. The current tools are insufficient to do this smoothly.

Simple usage of Move Selection feature would be -

  • Select desired tiles with existing Selection tool.
  • Drag selection with right-click.

Usage in a side-scrolling level editing scenario would be -

  • Select tiles you wish to relocate with existing Selection tool.
  • Cut.
  • Select tiles you need to scoot out of the way.
  • Drag selection with right-click.
  • Paste, then place relocated tiles appropriately.

Additional polish feature would be -

  • Press escape to go from Stamp / Paste Mode back to previous mode (here would be Select Mode).

Implementation of main feature and polish should be straight-forward enough.

feature

Most helpful comment

Another +1 from @eevee in his forum post. About time to raise the priority.

All 15 comments

This is key and it's hard to believe some form of moving a selection isn't in here, as it's a core thing. It's about the first feature I ran into when making something. There is no easy way to move sections around. You have to painfully copy/paste each layer of the section you want to move. This kills iteration time.

@GeorgeBroussard Multi-layer editing operations are indeed missing and I understand this can be rather painful. That issue is covered by #282.

+1 this would be really useful.

I need this

Another +1 from @eevee in his forum post. About time to raise the priority.

Ok I'm on it :)

My crap-a-rific map editor implemented multi-layer movement with a global check box titled "current layer only" - if that was off, every operation applied to every layer. I had a proper move tool (and of course, selection), and so could move portions of my multi layered map around, Yayyyyy. Or just the current selected layer. Rudimentary, but it worked like a charm. I like Tiled so much, can't do both make a map editor AND game (i'll die before then), but man, what a big wall this is not having a move tool... holding out for this one, Thorbj酶rn, my maps are gonna suffer until then. Might even be willing to up my patronage for this one. If I do though, I'm gonna pm you directly and let you know what it's for with wide eyes and a ridiculously huge wink ;-)

@Bobjt I've been working on this, but it's current state is not really good and I don't have much free time :(
I will push the changes to my fork today.

Should this be specific to a particular tile layer, because the right now, the selection tool selects only from the currently active layer?

Another doubt: Should this be a new tool? Or should be added to the current selection tool itself (will work only when a particular key/mouse button is pressed)?

@ketanhwr Multi-layer move would be awesome, but I suggest you implement single-layer move first, which would already be a nice addition.

Whether it should be a new tool, I'm not entirely sure. In GIMP, moving of selection is handled by a special layer mode which is called "Floated Layer". There can be only one floating layer and when there is one, it is always the currently selected layer. The floated layer can be dragged around by grabbing it, and it can be "anchored" (applied to the layer below it) by clicking outside of it. GIMP goes another step further, and allows selecting a region while having a floating layer, in which case anchoring the floated layer will only apply in the selected region.

So, implementing a move tool like that would be one option. However, it could also be simply a separate tool that cuts the selection when you drag it away and applies it at a new location when you click outside of it (or switch tools, I presume). I would probably go that way for now, since the floating layer approach will be quite involved even though the functionality is otherwise very similar.

Regarding the preview rendering, you can use the BrushItem for the draggable preview, and you could probably just cut out the part when the user starts to drag.

@sanchaez Btw, if you think your changes could help @ketanhwr with his project, please do still push them to your fork. Thanks!

Alright, thanks @bjorn! :smile:

I would like to get more information about this new feature, which seems to be urgent for quite some time.

How about adding some kind of option for the Rectangular selection tool (disabled by default, I don't know yet where we could toggle it but maybe pressing a key combination may be good like Ctrl+M when selecting the Rectangular selection tool) that would move the selection of tiles instead of remaking a new selection, only if the mouse is hovering over a tile in this selection?

The moved tiles' former position would contain empty tiles (tile value 0) after the action, and each tile under that new moved selection would be erased and replaced by the new moved tiles.

What do you think about that idea?

Now that #282 is implemented I think this issue is less urgent, since it is no longer than hard to copy or move multiple layers at a time using cut/copy/paste actions.

The issue stays open, because it would still be nice to allow more convenient select-and-move functionality in the future.

In addition to moving tiles, it would be useful to be able to select tiles and objects to be moved at the same time. Very often you might want to move a section of map somewhere which includes everything on the map in that area including the objects.

At the moment doing this is a bit fiddly. You have to move the tiles with the cut and paste method, then move the objects, which, to do safely with correct snapping might require the creation of a temporary reference to use for snapping them at the exact relative location to the tiles.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Bobjt picture Bobjt  路  16Comments

Archeia picture Archeia  路  13Comments

IcemarkUK picture IcemarkUK  路  28Comments

iJ0N45 picture iJ0N45  路  42Comments

leonidax picture leonidax  路  47Comments