43 lines
1019 B
TypeScript
43 lines
1019 B
TypeScript
|
|
type slot_brush_t = {
|
|
nodes?: ui_nodes_t;
|
|
canvas?: ui_node_canvas_t;
|
|
image?: iron_g5_texture_t; // 200px
|
|
image_icon?: iron_g5_texture_t; // 50px
|
|
preview_ready?: bool;
|
|
id?: i32;
|
|
};
|
|
|
|
let slot_brush_default_canvas: buffer_t = null;
|
|
|
|
function slot_brush_create(c: ui_node_canvas_t = null): slot_brush_t {
|
|
let raw: slot_brush_t = {};
|
|
raw.nodes = ui_nodes_create();
|
|
raw.preview_ready = false;
|
|
raw.id = 0;
|
|
|
|
for (let i: i32 = 0; i < project_brushes.length; ++i) {
|
|
let brush: slot_brush_t = project_brushes[i];
|
|
if (brush.id >= raw.id) {
|
|
raw.id = brush.id + 1;
|
|
}
|
|
}
|
|
|
|
if (c == null) {
|
|
if (slot_brush_default_canvas == null) { // Synchronous
|
|
let b: buffer_t = data_get_blob("default_brush.arm");
|
|
slot_brush_default_canvas = b;
|
|
}
|
|
raw.canvas = armpack_decode(slot_brush_default_canvas);
|
|
raw.canvas = util_clone_canvas(raw.canvas); // Clone to create GC references
|
|
|
|
let id: i32 = (raw.id + 1);
|
|
raw.canvas.name = "Brush " + id;
|
|
}
|
|
else {
|
|
raw.canvas = util_clone_canvas(c);
|
|
}
|
|
|
|
return raw;
|
|
}
|