Skip to content

Instantly share code, notes, and snippets.

@MarianoGnu
Created May 11, 2016 22:51
Show Gist options
  • Save MarianoGnu/d44c9829615e0df8e789b4798b4d6416 to your computer and use it in GitHub Desktop.
Save MarianoGnu/d44c9829615e0df8e789b4798b4d6416 to your computer and use it in GitHub Desktop.
Fill a scene with autogenerated sprites with collisions to export as a tileset.
tool
extends EditorScript
# ------------------HOW TO USE-------------------------
# CONFIGURE CONSTANTS TO AUTOGENERATE THE TILESET SCENE
# -----------------------------------------------------
# PATH TO TEXTURE FILE
const TEXTURE_PATH = "res://tileset/tileset.png"
#TILE SIZE
const TILE_W = 16
const TILE_H = 16
# TILE SEPARATION
const SEPARATION_H = 0
const SEPARATION_V = 0
# PASABILITY:
# _ = PASABLE
# O = BLOQUED
# X = IGNORE TILE
# \n = NEXT ROW
const PASABILITY = "____OOOOO_O_O_O__O_O_____\n______OOOOO_OOO__________\nO_OOO_OOOOOOOOOO____O_O\nO_OO_OO_OO_OO_OOOO__O_O\nOOOO_OO_OO_OO_OOOOOOOOO\nO_OOOOOOOOOOO_OOO_OOO_O\nOOO_OOO_______OOO_OO\nOOOOOOO_________OO___\nOOOOOOO________O_O___\nOOOO_OOOOOO____O_O___\nOOOO_OOOOOOOOO_OOO___\nOOOOOOOOOO_O_O_____OO\nOOOOOOOOOO_OO_\nOOOOOOOO_OOO\nOOOXXXXXXOOO\nOOO\nOOOOOOOOOO___O_OOOXXO__OOOOOOOOOOOO\n"
func _run():
var scn = get_scene()
var pasable = PASABILITY.split("\n")
var texture = load(TEXTURE_PATH)
var shape = RectangleShape2D.new()
shape.set_extents(Vector2(TILE_W/2,TILE_H/2))
for r in range(pasable.size()): # r is ROW
for c in range(pasable[r].length()): # C is COLUMN
if (pasable[r][c] == "X"): continue
var sprite = Sprite.new()
var rect = Rect2(c*(TILE_W+SEPARATION_H),r*(TILE_H+SEPARATION_V),TILE_W,TILE_H)
sprite.set_texture(texture)
sprite.set_region(true)
sprite.set_region_rect(rect)
sprite.set_pos(rect.pos)
scn.add_child(sprite)
sprite.set_owner(scn)
if (pasable[r][c] == "O"): # BLOQUED
var body = StaticBody2D.new()
var shape_node = CollisionShape2D.new()
shape_node.set_shape(shape)
sprite.add_child(body)
body.set_owner(scn)
body.add_child(shape_node)
shape_node.set_owner(scn)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment