v1.0.0 — release avec auto-update Gitea
Ajout du systeme de mise a jour automatique : - UpdateManager (main) : verifie les tags Gitea, telecharge et applique les MAJ - UpdateBanner (renderer) : banniere UI avec progression et retry - IPC channels : check-for-updates, apply-update, update-available, update-progress, update-error - Desactivation asar pour permettre le remplacement des sources - version.json comme source de verite pour la version locale Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -66,6 +66,8 @@ class QueueManager {
|
||||
let str_mode = obj_config.str_render_mode;
|
||||
let str_base_output = obj_config.str_output_path;
|
||||
let str_output_mode = obj_config.str_output_mode || "subfolder";
|
||||
let str_frame_prefix = obj_config.str_frame_prefix !== undefined ? obj_config.str_frame_prefix : "f_";
|
||||
let nb_frame_padding = obj_config.nb_frame_padding || 5;
|
||||
let list_cameras = obj_config.list_cameras;
|
||||
|
||||
let list_enabled = [];
|
||||
@@ -77,8 +79,9 @@ class QueueManager {
|
||||
|
||||
if (str_mode === "camera_by_camera") {
|
||||
for (let obj_cam of list_enabled) {
|
||||
for (let nb_frame = obj_cam.nb_frame_start; nb_frame <= obj_cam.nb_frame_end; nb_frame++) {
|
||||
list_queue.push(this._create_queue_item(str_blend_path, str_base_output, str_output_mode, obj_cam, nb_frame));
|
||||
let nb_step = obj_cam.nb_frame_step || 1;
|
||||
for (let nb_frame = obj_cam.nb_frame_start; nb_frame <= obj_cam.nb_frame_end; nb_frame += nb_step) {
|
||||
list_queue.push(this._create_queue_item(str_blend_path, str_base_output, str_output_mode, str_frame_prefix, nb_frame_padding, obj_cam, nb_frame));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -95,8 +98,9 @@ class QueueManager {
|
||||
|
||||
for (let nb_frame = nb_min_frame; nb_frame <= nb_max_frame; nb_frame++) {
|
||||
for (let obj_cam of list_enabled) {
|
||||
if (nb_frame >= obj_cam.nb_frame_start && nb_frame <= obj_cam.nb_frame_end) {
|
||||
list_queue.push(this._create_queue_item(str_blend_path, str_base_output, str_output_mode, obj_cam, nb_frame));
|
||||
let nb_cam_step = obj_cam.nb_frame_step || 1;
|
||||
if (nb_frame >= obj_cam.nb_frame_start && nb_frame <= obj_cam.nb_frame_end && (nb_frame - obj_cam.nb_frame_start) % nb_cam_step === 0) {
|
||||
list_queue.push(this._create_queue_item(str_blend_path, str_base_output, str_output_mode, str_frame_prefix, nb_frame_padding, obj_cam, nb_frame));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -105,8 +109,9 @@ class QueueManager {
|
||||
return list_queue;
|
||||
}
|
||||
|
||||
_create_queue_item(str_blend_path, str_base_output, str_output_mode, obj_cam, nb_frame) {
|
||||
let str_padded_frame = String(nb_frame).padStart(5, "0");
|
||||
_create_queue_item(str_blend_path, str_base_output, str_output_mode, str_frame_prefix, nb_frame_padding, obj_cam, nb_frame) {
|
||||
let str_padded_frame = String(nb_frame).padStart(nb_frame_padding, "0");
|
||||
let str_hash_pattern = "#".repeat(nb_frame_padding);
|
||||
let str_ext = obj_cam.str_format.toLowerCase();
|
||||
if (str_ext === "open_exr") {
|
||||
str_ext = "exr";
|
||||
@@ -120,14 +125,16 @@ class QueueManager {
|
||||
let str_expected_file = "";
|
||||
|
||||
if (str_output_mode === "prefix") {
|
||||
// Flat: /sortie/Camera.001_frame_#####
|
||||
str_output_path = path.join(str_base_output, obj_cam.str_name + "_frame_#####");
|
||||
str_expected_file = path.join(str_base_output, obj_cam.str_name + "_frame_" + str_padded_frame + "." + str_ext);
|
||||
} else {
|
||||
// Subfolder: /sortie/Camera.001/frame_#####
|
||||
str_output_path = path.join(str_base_output, obj_cam.str_name + "_" + str_frame_prefix + str_hash_pattern);
|
||||
str_expected_file = path.join(str_base_output, obj_cam.str_name + "_" + str_frame_prefix + str_padded_frame + "." + str_ext);
|
||||
} else if (str_output_mode === "both") {
|
||||
let str_output_dir = path.join(str_base_output, obj_cam.str_name);
|
||||
str_output_path = path.join(str_output_dir, "frame_#####");
|
||||
str_expected_file = path.join(str_output_dir, "frame_" + str_padded_frame + "." + str_ext);
|
||||
str_output_path = path.join(str_output_dir, obj_cam.str_name + "_" + str_frame_prefix + str_hash_pattern);
|
||||
str_expected_file = path.join(str_output_dir, obj_cam.str_name + "_" + str_frame_prefix + str_padded_frame + "." + str_ext);
|
||||
} else {
|
||||
let str_output_dir = path.join(str_base_output, obj_cam.str_name);
|
||||
str_output_path = path.join(str_output_dir, str_frame_prefix + str_hash_pattern);
|
||||
str_expected_file = path.join(str_output_dir, str_frame_prefix + str_padded_frame + "." + str_ext);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user