41 lines
1.1 KiB
Odin
41 lines
1.1 KiB
Odin
package cli
|
|
|
|
import ase "../../vendors/odin-aseprite"
|
|
import "core:encoding/json"
|
|
import "core:fmt"
|
|
import "core:os"
|
|
import "core:slice"
|
|
import s "core:strings"
|
|
|
|
import rl "vendor:raylib"
|
|
import stbrp "vendor:stb/rect_pack"
|
|
|
|
import gen "../src/generator"
|
|
|
|
ATLAS_SIZE :: 512
|
|
IMPORT_PATH :: "./example.aseprite"
|
|
EXPORT_PATH :: "./atlas.png"
|
|
|
|
main :: proc() {
|
|
|
|
ase_file, ase_ok := os.read_entire_file(IMPORT_PATH)
|
|
if !ase_ok {
|
|
fmt.panicf("Couldn't load file!")
|
|
}
|
|
|
|
target_dir := os.get_current_directory()
|
|
|
|
atlas: rl.Image = rl.GenImageColor(ATLAS_SIZE, ATLAS_SIZE, rl.BLANK)
|
|
atlas_entries: [dynamic]gen.AtlasEntry = make([dynamic]gen.AtlasEntry)
|
|
gen.unmarshall_aseprite_dir(target_dir, &atlas_entries)
|
|
|
|
metadata := gen.pack_atlas_entries(atlas_entries[:], &atlas, 10, 10)
|
|
|
|
json_bytes, jerr := json.marshal(metadata)
|
|
os.write_entire_file("./metadata.json", json_bytes)
|
|
sb := gen.metadata_source_code_generate(metadata[:], gen.odin_source_generator_metadata)
|
|
odin_output_str := s.to_string(sb)
|
|
os.write_entire_file("./output.odin", transmute([]byte)odin_output_str)
|
|
|
|
rl.ExportImage(atlas, EXPORT_PATH)
|
|
}
|