fix bug for collection
This commit is contained in:
@@ -54,21 +54,22 @@ def apply_collections(list_collections: list) -> None:
|
|||||||
if not list_collections:
|
if not list_collections:
|
||||||
return
|
return
|
||||||
|
|
||||||
def _set_layer_collection(obj_lc: object, str_name: str, is_val: bool) -> None:
|
def _set_layer_collection(obj_lc: object, str_name: str, is_exclude: bool) -> None:
|
||||||
"""Parcourt recursivement les layer collections pour exclure/inclure."""
|
"""Parcourt recursivement les layer collections pour exclure/inclure."""
|
||||||
for obj_child in obj_lc.children:
|
for obj_child in obj_lc.children:
|
||||||
if obj_child.name == str_name:
|
if obj_child.name == str_name:
|
||||||
obj_child.exclude = is_val
|
obj_child.exclude = is_exclude
|
||||||
return
|
return
|
||||||
_set_layer_collection(obj_child, str_name, is_val)
|
_set_layer_collection(obj_child, str_name, is_exclude)
|
||||||
|
|
||||||
obj_view_layer_collection = bpy.context.view_layer.layer_collection
|
obj_view_layer_collection = bpy.context.view_layer.layer_collection
|
||||||
|
|
||||||
for obj_col in list_collections:
|
for obj_col in list_collections:
|
||||||
str_name: str = obj_col["str_name"]
|
str_name: str = obj_col["str_name"]
|
||||||
is_hide: bool = obj_col["is_hide_render"]
|
is_hide: bool = obj_col["is_hide_render"]
|
||||||
|
is_exclude: bool = obj_col.get("is_exclude", False)
|
||||||
bpy.data.collections[str_name].hide_render = is_hide
|
bpy.data.collections[str_name].hide_render = is_hide
|
||||||
_set_layer_collection(obj_view_layer_collection, str_name, is_hide)
|
_set_layer_collection(obj_view_layer_collection, str_name, is_exclude)
|
||||||
|
|
||||||
|
|
||||||
def process_render(obj_cmd: dict) -> None:
|
def process_render(obj_cmd: dict) -> None:
|
||||||
|
|||||||
@@ -153,8 +153,13 @@
|
|||||||
<div class="card bg-dark border-secondary">
|
<div class="card bg-dark border-secondary">
|
||||||
<div class="card-header border-secondary d-flex justify-content-between align-items-center">
|
<div class="card-header border-secondary d-flex justify-content-between align-items-center">
|
||||||
<span><i class="mdi mdi-camera-outline me-1"></i>Cameras</span>
|
<span><i class="mdi mdi-camera-outline me-1"></i>Cameras</span>
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<button id="btn_toggle_all_cameras" class="btn btn-outline-secondary btn-sm py-0 px-1" title="Tout cocher / decocher">
|
||||||
|
<i class="mdi mdi-checkbox-multiple-marked-outline"></i>
|
||||||
|
</button>
|
||||||
<span id="badge_camera_count" class="badge bg-secondary">0</span>
|
<span id="badge_camera_count" class="badge bg-secondary">0</span>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div id="container_camera_list" class="list-group list-group-flush overflow-auto" style="max-height: 300px;">
|
<div id="container_camera_list" class="list-group list-group-flush overflow-auto" style="max-height: 300px;">
|
||||||
<div class="text-center text-light-emphasis py-4">
|
<div class="text-center text-light-emphasis py-4">
|
||||||
@@ -170,15 +175,19 @@
|
|||||||
<div class="card-header border-secondary d-flex justify-content-between align-items-center">
|
<div class="card-header border-secondary d-flex justify-content-between align-items-center">
|
||||||
<span><i class="mdi mdi-folder-multiple-outline me-1"></i>Collections</span>
|
<span><i class="mdi mdi-folder-multiple-outline me-1"></i>Collections</span>
|
||||||
<div class="d-flex align-items-center gap-2">
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<div class="form-check form-switch mb-0" title="Quand active, les collections du .blend ne sont pas modifiees">
|
||||||
|
<input class="form-check-input" type="checkbox" id="check_skip_collections" checked>
|
||||||
|
<label class="form-check-label small text-light" for="check_skip_collections">Ignorer</label>
|
||||||
|
</div>
|
||||||
<button id="btn_reset_collections" class="btn btn-sm btn-outline-secondary py-0 px-1"
|
<button id="btn_reset_collections" class="btn btn-sm btn-outline-secondary py-0 px-1"
|
||||||
title="Restaurer les valeurs originales">
|
title="Restaurer les valeurs originales" disabled>
|
||||||
<i class="mdi mdi-undo-variant" style="font-size: 0.75rem;"></i>
|
<i class="mdi mdi-undo-variant" style="font-size: 0.75rem;"></i>
|
||||||
</button>
|
</button>
|
||||||
<span id="badge_collection_count" class="badge bg-secondary">0</span>
|
<span id="badge_collection_count" class="badge bg-secondary">0</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div id="container_collection_list" class="list-group list-group-flush overflow-auto" style="max-height: 250px;">
|
<div id="container_collection_list" class="list-group list-group-flush overflow-auto disabled-overlay" style="max-height: 250px; pointer-events: none; opacity: 0.4;">
|
||||||
<div class="text-center text-light-emphasis py-3">
|
<div class="text-center text-light-emphasis py-3">
|
||||||
<i class="mdi mdi-folder-off-outline d-block mb-2" style="font-size: 1.5rem;"></i>
|
<i class="mdi mdi-folder-off-outline d-block mb-2" style="font-size: 1.5rem;"></i>
|
||||||
Chargez un fichier .blend
|
Chargez un fichier .blend
|
||||||
|
|||||||
@@ -309,6 +309,7 @@ const App = {
|
|||||||
str_output_path: App.str_output_path,
|
str_output_path: App.str_output_path,
|
||||||
list_cameras: CameraList.list_cameras,
|
list_cameras: CameraList.list_cameras,
|
||||||
list_collections: CollectionList.list_collections,
|
list_collections: CollectionList.list_collections,
|
||||||
|
is_skip_collections: CollectionList.is_skip_collections,
|
||||||
obj_render_settings: RenderSettings.get_settings(),
|
obj_render_settings: RenderSettings.get_settings(),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -375,9 +376,15 @@ const App = {
|
|||||||
obj_badge.textContent = String(obj_config.list_cameras.length);
|
obj_badge.textContent = String(obj_config.list_cameras.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (obj_config.is_skip_collections !== undefined) {
|
||||||
|
CollectionList.is_skip_collections = obj_config.is_skip_collections;
|
||||||
|
document.getElementById("check_skip_collections").checked = obj_config.is_skip_collections;
|
||||||
|
}
|
||||||
|
|
||||||
if (obj_config.list_collections && obj_config.list_collections.length > 0) {
|
if (obj_config.list_collections && obj_config.list_collections.length > 0) {
|
||||||
CollectionList.list_collections = obj_config.list_collections;
|
CollectionList.list_collections = obj_config.list_collections;
|
||||||
CollectionList.render();
|
CollectionList.render();
|
||||||
|
CollectionList._update_panel_state();
|
||||||
let obj_badge_col = document.getElementById("badge_collection_count");
|
let obj_badge_col = document.getElementById("badge_collection_count");
|
||||||
obj_badge_col.textContent = String(obj_config.list_collections.length);
|
obj_badge_col.textContent = String(obj_config.list_collections.length);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ const CameraList = {
|
|||||||
|
|
||||||
init: (fn_on_select) => {
|
init: (fn_on_select) => {
|
||||||
CameraList.fn_on_select = fn_on_select;
|
CameraList.fn_on_select = fn_on_select;
|
||||||
|
|
||||||
|
let obj_btn_toggle = document.getElementById("btn_toggle_all_cameras");
|
||||||
|
obj_btn_toggle.addEventListener("click", () => {
|
||||||
|
CameraList.toggle_all();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
set_cameras: (list_names, obj_scene) => {
|
set_cameras: (list_names, obj_scene) => {
|
||||||
@@ -45,6 +50,27 @@ const CameraList = {
|
|||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
toggle_all: () => {
|
||||||
|
if (CameraList.list_cameras.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let is_any_enabled = false;
|
||||||
|
for (let obj_cam of CameraList.list_cameras) {
|
||||||
|
if (obj_cam.is_enabled) {
|
||||||
|
is_any_enabled = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let is_new_state = !is_any_enabled;
|
||||||
|
for (let obj_cam of CameraList.list_cameras) {
|
||||||
|
obj_cam.is_enabled = is_new_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
CameraList.render();
|
||||||
|
},
|
||||||
|
|
||||||
get_enabled_cameras: () => {
|
get_enabled_cameras: () => {
|
||||||
let list_enabled = [];
|
let list_enabled = [];
|
||||||
for (let obj_cam of CameraList.list_cameras) {
|
for (let obj_cam of CameraList.list_cameras) {
|
||||||
|
|||||||
@@ -1,8 +1,29 @@
|
|||||||
const CollectionList = {
|
const CollectionList = {
|
||||||
list_collections: [],
|
list_collections: [],
|
||||||
|
is_skip_collections: true,
|
||||||
|
|
||||||
init: () => {
|
init: () => {
|
||||||
// Peuple lors du chargement du .blend
|
let obj_check = document.getElementById("check_skip_collections");
|
||||||
|
obj_check.checked = true;
|
||||||
|
CollectionList.is_skip_collections = true;
|
||||||
|
obj_check.addEventListener("change", () => {
|
||||||
|
CollectionList.is_skip_collections = obj_check.checked;
|
||||||
|
CollectionList._update_panel_state();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_update_panel_state: () => {
|
||||||
|
let obj_container = document.getElementById("container_collection_list");
|
||||||
|
let obj_btn_reset = document.getElementById("btn_reset_collections");
|
||||||
|
if (CollectionList.is_skip_collections) {
|
||||||
|
obj_container.style.pointerEvents = "none";
|
||||||
|
obj_container.style.opacity = "0.4";
|
||||||
|
obj_btn_reset.disabled = true;
|
||||||
|
} else {
|
||||||
|
obj_container.style.pointerEvents = "";
|
||||||
|
obj_container.style.opacity = "";
|
||||||
|
obj_btn_reset.disabled = false;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
set_collections: (list_raw) => {
|
set_collections: (list_raw) => {
|
||||||
@@ -10,6 +31,7 @@ const CollectionList = {
|
|||||||
|
|
||||||
if (!list_raw || list_raw.length === 0) {
|
if (!list_raw || list_raw.length === 0) {
|
||||||
CollectionList.render();
|
CollectionList.render();
|
||||||
|
CollectionList._update_panel_state();
|
||||||
let obj_badge = document.getElementById("badge_collection_count");
|
let obj_badge = document.getElementById("badge_collection_count");
|
||||||
obj_badge.textContent = "0";
|
obj_badge.textContent = "0";
|
||||||
return;
|
return;
|
||||||
@@ -28,12 +50,16 @@ const CollectionList = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CollectionList.render();
|
CollectionList.render();
|
||||||
|
CollectionList._update_panel_state();
|
||||||
|
|
||||||
let obj_badge = document.getElementById("badge_collection_count");
|
let obj_badge = document.getElementById("badge_collection_count");
|
||||||
obj_badge.textContent = String(CollectionList.list_collections.length);
|
obj_badge.textContent = String(CollectionList.list_collections.length);
|
||||||
},
|
},
|
||||||
|
|
||||||
get_overrides: () => {
|
get_overrides: () => {
|
||||||
|
if (CollectionList.is_skip_collections) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
let list_overrides = [];
|
let list_overrides = [];
|
||||||
for (let obj_col of CollectionList.list_collections) {
|
for (let obj_col of CollectionList.list_collections) {
|
||||||
list_overrides.push({
|
list_overrides.push({
|
||||||
|
|||||||
Reference in New Issue
Block a user