This commit is contained in:
Andrés Moya 2022-10-07 15:14:03 +02:00
parent 3112d04a99
commit de4c7762ad
2 changed files with 32 additions and 12 deletions

View File

@ -142,6 +142,13 @@
(update state :workspace-modifiers merge modif-tree)))))) (update state :workspace-modifiers merge modif-tree))))))
(defn set-modifiers-raw
[modifiers]
(ptk/reify ::set-modifiers-raw
ptk/UpdateEvent
(update [_ state]
(update state :workspace-modifiers merge modifiers))))
;; Rotation use different algorithm to calculate children modifiers (and do not use child constraints). ;; Rotation use different algorithm to calculate children modifiers (and do not use child constraints).
(defn- set-rotation-modifiers (defn- set-rotation-modifiers
([angle shapes] ([angle shapes]

View File

@ -15,9 +15,11 @@
[app.common.pages.helpers :as cph] ; TODO: move this to ctst [app.common.pages.helpers :as cph] ; TODO: move this to ctst
[app.common.types.component :as ctk] [app.common.types.component :as ctk]
[app.common.types.container :as ctn] [app.common.types.container :as ctn]
[app.main.data.workspace.transforms :as dwt]
[app.main.store :as st] [app.main.store :as st]
[app.main.ui.workspace.viewport.utils :as vwu] [app.main.ui.workspace.viewport.utils :as vwu]
[app.util.dom :as dom] [app.util.dom :as dom]
[app.util.timers :as tm]
[rumext.v2 :as mf])) [rumext.v2 :as mf]))
(defn- transform-no-resize (defn- transform-no-resize
@ -344,7 +346,7 @@
[copies objects modifiers] [copies objects modifiers]
;; (js/console.log "copies" (clj->js copies)) ;; (js/console.log "copies" (clj->js copies))
(letfn [(add-copy-modifiers-one [modifiers copy-shape copy-root main-root main-shapes main-shapes-modif] (letfn [(add-copy-modifiers-one [modifiers copy-shape copy-root main-root main-shapes main-shapes-modif]
(assert (not (contains? modifiers (:id copy-shape))) "Si peta esto, we have a problem") ;; (assert (not (contains? modifiers (:id copy-shape))) "Si peta esto, we have a problem")
(let [main-shape-modif (d/seek #(ctk/is-main-of? % copy-shape) main-shapes-modif) (let [main-shape-modif (d/seek #(ctk/is-main-of? % copy-shape) main-shapes-modif)
;; copy-shape (cond-> copy-shape ;; copy-shape (cond-> copy-shape
;; (some? (:transform-inverse copy-shape)) ;; (some? (:transform-inverse copy-shape))
@ -444,30 +446,41 @@
(let [prev-shapes (mf/use-var nil) (let [prev-shapes (mf/use-var nil)
prev-modifiers (mf/use-var nil) prev-modifiers (mf/use-var nil)
prev-transforms (mf/use-var nil) prev-transforms (mf/use-var nil)
unflag (mf/use-var false)
copies copies
(mf/use-memo ; TODO: ojo estas deps hay que revisarlas (mf/use-memo ; TODO: ojo estas deps hay que revisarlas
(mf/deps modifiers (and (d/not-empty? @prev-modifiers) (d/not-empty? modifiers))) (mf/deps modifiers (and (d/not-empty? @prev-modifiers) (d/not-empty? modifiers)) @unflag)
(fn [] (fn []
(let [shapes (->> (keys modifiers) (when-not @unflag
(mapv (d/getf objects)))] (let [shapes (->> (keys modifiers)
(get-copies shapes objects modifiers)))) (mapv (d/getf objects)))]
(get-copies shapes objects modifiers)))))
modifiers modifiers
(mf/use-memo (mf/use-memo
(mf/deps objects modifiers copies) (mf/deps objects modifiers copies @unflag)
(fn [] (fn []
(js/console.log "==================") (if @unflag
(js/console.log "modifiers (antes)" (clj->js modifiers)) (do
(js/console.log "copies" (clj->js copies)) (reset! unflag false)
(add-copies-modifiers copies objects modifiers))) 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))))
new-modifiers))))
transforms transforms
(mf/use-memo (mf/use-memo
(mf/deps modifiers) (mf/deps modifiers)
(fn [] (fn []
(when (some? modifiers) (js/console.log "****modifiers" (clj->js modifiers))
(js/console.log "modifiers (después)" (clj->js modifiers)) (when (seq modifiers)
(d/mapm (fn [id {modifiers :modifiers}] (d/mapm (fn [id {modifiers :modifiers}]
(let [shape (get objects id) (let [shape (get objects id)
center (gsh/center-shape shape) center (gsh/center-shape shape)