From 835ed342f87c8610520cfc59c2c4e5403a94a6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 7 Oct 2022 16:45:18 +0200 Subject: [PATCH] wip roto 2 --- .../shapes/frame/dynamic_modifiers.cljs | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/shapes/frame/dynamic_modifiers.cljs b/frontend/src/app/main/ui/workspace/shapes/frame/dynamic_modifiers.cljs index 8f93eb27a3..3bd4c44d36 100644 --- a/frontend/src/app/main/ui/workspace/shapes/frame/dynamic_modifiers.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/frame/dynamic_modifiers.cljs @@ -446,33 +446,38 @@ (let [prev-shapes (mf/use-var nil) prev-modifiers (mf/use-var nil) prev-transforms (mf/use-var nil) - unflag (mf/use-var false) + changed-modifiers (mf/use-var nil) + + ignore? + (mf/use-memo + (mf/deps modifiers) + (fn [] + (= modifiers @changed-modifiers))) copies (mf/use-memo ; TODO: ojo estas deps hay que revisarlas - (mf/deps modifiers (and (d/not-empty? @prev-modifiers) (d/not-empty? modifiers)) @unflag) + (mf/deps modifiers (and (d/not-empty? @prev-modifiers) + (d/not-empty? modifiers))) (fn [] - (when-not @unflag + (if ignore? + {} (let [shapes (->> (keys modifiers) (mapv (d/getf objects)))] (get-copies shapes objects modifiers))))) modifiers (mf/use-memo - (mf/deps objects modifiers copies @unflag) + (mf/deps objects modifiers copies) (fn [] - (if @unflag - (do - (reset! unflag false) - modifiers) + (if ignore? + modifiers (let [new-modifiers (add-copies-modifiers copies objects modifiers)] (js/console.log "==================") (js/console.log "modifiers (antes)" (clj->js modifiers)) (js/console.log "copies" (clj->js copies)) (js/console.log "modifiers (después)" (clj->js new-modifiers)) - (reset! unflag true) - (when (seq new-modifiers) - (tm/schedule #(st/emit! (dwt/set-modifiers-raw new-modifiers)))) + (reset! changed-modifiers new-modifiers) + (tm/schedule #(st/emit! (dwt/set-modifiers-raw new-modifiers))) new-modifiers)))) transforms @@ -480,7 +485,7 @@ (mf/deps modifiers) (fn [] (js/console.log "****modifiers" (clj->js modifiers)) - (when (seq modifiers) + (when (and (seq modifiers) (not ignore?)) (d/mapm (fn [id {modifiers :modifiers}] (let [shape (get objects id) center (gsh/center-shape shape) @@ -691,15 +696,16 @@ (let [is-prev-val? (d/not-empty? @prev-modifiers) is-cur-val? (d/not-empty? modifiers)] - (when (and (not is-prev-val?) is-cur-val?) + (when (and (not is-prev-val?) is-cur-val? (not ignore?)) (start-transform! node shapes)) - (when is-cur-val? + (when (and is-cur-val? (not ignore?)) (update-transform! node shapes transforms modifiers)) - (when (and is-prev-val? (not is-cur-val?)) + (when (and is-prev-val? (not is-cur-val?) (not ignore?)) (remove-transform! node @prev-shapes)) (reset! prev-modifiers modifiers) (reset! prev-transforms transforms) - (reset! prev-shapes shapes)))))) + (reset! prev-shapes shapes) + (reset! changed-modifiers nil))))))