| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- local function create_texture(width, height)
- -- create a new rgba texture
- local create_texture_params = {
- width = width,
- height = height,
- type = resource.TEXTURE_TYPE_2D,
- format = resource.TEXTURE_FORMAT_RGBA,
- }
- local my_texture_id = resource.create_texture("/my_custom_texture.texturec", create_texture_params)
- -- create a buffer with pixel data
- local buf = buffer.create(width * height, { { name=hash("rgba"), type=buffer.VALUE_TYPE_UINT8, count=4 } } )
- local stream = buffer.get_stream(buf, hash("rgba"))
- local half_width = width / 2
- for y=1, height do
- for x=1, width do
- local index = (y-1) * width * 4 + (x-1) * 4 + 1
- stream[index + 0] = x > half_width and 0xFF or 0x00
- stream[index + 1] = x > half_width and 0x00 or 0xFF
- stream[index + 2] = x > half_width and 0x00 or 0x00
- stream[index + 3] = 0xFF
- end
- end
- -- set the pixels on the texture
- local set_texture_params = { width=width, height=height, x=0, y=0, type=resource.TEXTURE_TYPE_2D, format=resource.TEXTURE_FORMAT_RGBA, num_mip_maps=1 }
- resource.set_texture(my_texture_id, set_texture_params, buf)
-
- return my_texture_id
- end
- local function create_atlas(texture_id, width, height)
- local params = {
- texture = texture_id,
- animations = {
- {
- id = "my_animation_left",
- width = width / 2,
- height = height,
- frame_start = 1,
- frame_end = 2,
- },
- {
- id = "my_animation_right",
- width = width / 2,
- height = height,
- frame_start = 2,
- frame_end = 3,
- }
- },
- geometries = {
- {
- width = width / 2,
- height = height,
- pivot_x = 0.5,
- pivot_y = 0.5,
- vertices = {
- 0, height,
- 0, 0,
- width / 2, 0,
- width / 2, height
- },
- uvs = {
- 0, height,
- 0, 0,
- width / 2, 0,
- width / 2, height
- },
- indices = {0,1,2,0,2,3}
- },
- {
- width = width / 2,
- height = height,
- pivot_x = 0.5,
- pivot_y = 0.5,
- vertices = {
- 0, height,
- 0, 0,
- width / 2, 0,
- width / 2, height
- },
- uvs = {
- width / 2, height,
- width / 2, 0,
- width, 0,
- width, height
- },
- indices = {0,1,2,0,2,3}
- }
- }
- }
- local my_atlas_id = resource.create_atlas("/my_atlas.texturesetc", params)
- return my_atlas_id
- end
- function init(self)
- local width = 128
- local height = 128
- local my_texture_id = create_texture(width, height)
- local my_atlas_id = create_atlas(my_texture_id, width, height)
- -- set the new atlas on the sprite and show one image
- go.set("#sprite", "image", my_atlas_id)
- sprite.play_flipbook("#sprite", "my_animation_left")
- -- set the new atlas on the gui component and use on a node from the gui script
- go.set("gui#gui", "textures", my_atlas_id, { key = "my_atlas" })
- msg.post("gui#gui", "use_atlas", { texture = "my_atlas", animation = "my_animation_right" })
- end
|