Added caching for get_tile_info(), get_tile_count(), get_tile_map(), and get_canvas_dimensions() calls, made it so set_tile_coordinates() updates cached information about the tiles, added multi-threading for methods that update the whole tilechain light at once so each tile changes more or less at the same time (applies to project_matrix() and set_tilechain_colors()), added rapid flag and associated logic, and added some input validation.
Added caching for get_tile_info(), get_tile_count(), get_tile_map(), and get_canvas_dimensions() calls, made it so set_tile_coordinates() updates cached information about the tiles, added multi-threading for methods that update the whole tilechain light at once so each tile changes more or less at the same time (applies to project_matrix() and set_tilechain_colors()), added rapid flag and associated logic, and added some input validation.

mclarkk/lifxlan