Nepoxx

Strange tilemap copy/paste behaviour

Recommended Posts

In my quest to have a dynamically loading tilemap, I am trying to use the copy/paste function provided by the tilemaps to copy tiles from one map to a distinct map (the original one is not rendered, it simply serves as a "tile data store" for now (later on it'll handled by  a server)).

 

For some reason, I can copy data from my first tilemap to the second one, but the location where it is pasted is not right at all. I even have to provide negative numbers in the paste function to align them correctly

    var cellSize = 4;    map = game.add.tilemap('map'); // Loaded from JSON above    /* Map renderer */    renderedMap = game.add.tilemap();    renderedMap.addTilesetImage('magecity', undefined, undefined, undefined, undefined, undefined, 1); // I want the GID to start at 1    renderedMap.setCollisionByExclusion([2, 237, 335]);    ground = renderedMap.create('ground', 3 * cellSize, 3 * cellSize, 32, 32);    ground.resizeWorld();        cells = map.copy(0, 4, cellSize, cellSize);          renderedMap.paste(0, 0, cells, ground); //Here the data pasted is NOT at (0,0) (It looks like it was pasted at (0,8)) 

As usual, thanks !

.

Share this post


Link to post
Share on other sites

My apologies for the spam, from Tileset.js

        //  Find out the difference between tileblock[1].x/y and x/y and use it as an offset, as it's the top left of the block to paste        var diffX = tileblock[1].x - x;        var diffY = tileblock[1].y - y;

it would seem that the parameters x and y are offset from the original copy. This is not consistent with (my understanding of) the documentation which states:

paste(x, y, tileblock, layer)
 
Pastes a previously copied block of tile data into the given x/y coordinates. Data should have been prepared with Tilemap.copy.

 

 

I don't understand why paste would take in an offset. I want to paste the block of tiles at location (x,y). I came up with the following workaround, but it's not so pretty:

cells = map.copy(0, 4, cellSize, cellSize);//These are the coords where I want to paste the block I just copiedcells[1].x = destinationX;cells[1].y = destinationY;renderedMap.paste(0,0,cells,ground);

Edit: actually, this doesn't even work.

 

Is my understanding of copy/paste or tilemaps in general wrong?

Share this post


Link to post
Share on other sites

Just a little bump.

 

I've been thinking of implementing an "absolutePaste" and then submitting a pull request for that, is that a good idea? I would have it paste the tile date at the given coordinates, NOT relative to the given coordinate (the given coord would be the top left corner of the data to paste).

 

Thoughts?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.