Skip to content
This repository was archived by the owner on Jul 11, 2025. It is now read-only.
This repository was archived by the owner on Jul 11, 2025. It is now read-only.

IndexOutOfRangeException thrown if Tileset is switched on painted Tilemap #763

Open

Description

@cowmanjoe

Summary

An IndexOutOfRange exception is thrown if the selected Tilemap's Tileset is switched. This exception only occurs if the Tileset has been painted on with Tiles that have a higher index than the new Tileset's maximum index. I also noticed that sometimes the tile pallette is not updated with the new Tileset.

How to reproduce

  • Create two Tilesets, one with more tiles than the other
  • Create a Tilemap with the larger Tileset
  • Paint on the Tilemap with the highest index Tile in the Tileset
  • Set the Tilemap's Tileset to the smaller one by dragging it into the Tileset section of the Tilemap in the object inspector
  • Try painting on the earlier painted tile

Workaround

  • Don't switch the Tileset on a Tilemap that has already been painted on (this is probably a rare case anyway)
  • If you want to switch the Tileset but don't care about the painted tiles, Set them all to the zero index tile (top left corner) before switching the Tileset

Analysis

  • Exception is thrown at Tile.cs:291 when in the UpdateAutoTileCon method
  • Problem seems to be that the Tilemap has tiles with invalid indexes on them
  • Maybe there needs to be a check for these invalid tiles before executing any paint action on them to reset them to normal

Activity

  1. added this to the General milestone on Nov 11, 2019
  2. added
    BugIt's broken and should be fixed
    TilemapsArea: Tilemaps core / editor plugins
    Good First IssueGood opportunity for new contributors
    Help WantedContributions especially appreciated
    on Nov 11, 2019
  3. ilexp commented on Nov 11, 2019

    @ilexp
    Member

    Tagging this as Help Wanted and Good First Issue, since I'm suspecting this might be an easy fix, once the location and root cause of the error are identified.

  4. SirePi commented on May 16, 2020

    @SirePi
    Member

    Tried to reproduce, but can't trigger the error.

    Some dirty, non-existing tiles can be observed when changing to a different tileset with a different number of tiles, but I believe it can be considered in the realm of "expected behavior", given the operation that is being performed.

    @AdamsLair/duality-core can any of you try to see if they can reproduce this? otherwise I'd be considering closing the issue.

  5. streepje8 commented on Jun 30, 2024

    @streepje8

    Reproduced the issue, the error only occurs when editing after the swap (causing the update function to be called).

    I added in a simple bounds check and created a pull request
    This is my first time helping an opensource project so I hope I did everything properly!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugIt's broken and should be fixedGood First IssueGood opportunity for new contributorsHelp WantedContributions especially appreciatedTilemapsArea: Tilemaps core / editor plugins

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions