Skip to content

Commit 841c9a6

Browse files
committed
Added support for blit-material in the rive model
1 parent 0d1d75f commit 841c9a6

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

defold-rive/editor/src/rive.clj

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@
5050
(def rive-scene-icon "/defold-rive/editor/resources/icons/32/Icons_16-Rive-scene.png")
5151
(def rive-model-icon "/defold-rive/editor/resources/icons/32/Icons_15-Rive-model.png")
5252
(def rive-bone-icon "/defold-rive/editor/resources/icons/32/Icons_18-Rive-bone.png")
53+
;; These should be read from the .proto file
5354
(def default-material-proj-path "/defold-rive/assets/rivemodel.material")
55+
(def default-blit-material-proj-path "/defold-rive/assets/shader-library/rivemodel_blit.material")
5456

5557
(def rive-file-ext "riv")
5658
(def rive-scene-ext "rivescene")
@@ -94,6 +96,7 @@
9496
(gu/set-properties-from-pb-map self rive-model-pb-class rive-model-desc
9597
rive-scene (resolve-resource :scene)
9698
material (resolve-resource (:material :or default-material-proj-path))
99+
blit-material (resolve-resource (:blit-material :or default-blit-material-proj-path))
97100
artboard :artboard
98101
default-animation :default-animation
99102
default-state-machine :default-state-machine
@@ -679,10 +682,11 @@
679682
; .rivemodel (The "instance" file)
680683
;
681684

682-
(g/defnk produce-rivemodel-save-value [rive-scene-resource artboard default-animation default-state-machine material-resource blend-mode create-go-bones auto-bind coordinate-system artboard-fit artboard-alignment]
685+
(g/defnk produce-rivemodel-save-value [rive-scene-resource artboard default-animation default-state-machine material-resource blit-material-resource blend-mode create-go-bones auto-bind coordinate-system artboard-fit artboard-alignment]
683686
(protobuf/make-map-without-defaults rive-model-pb-class
684687
:scene (resource/resource->proj-path rive-scene-resource)
685688
:material (resource/resource->proj-path material-resource)
689+
:blit-material (resource/resource->proj-path blit-material-resource)
686690
:artboard artboard
687691
:default-animation default-animation
688692
:default-state-machine default-state-machine
@@ -741,11 +745,11 @@
741745
pb (reduce #(assoc %1 (first %2) (second %2)) pb (map (fn [[label res]] [label (resource/proj-path (get dep-resources res))]) (:dep-resources user-data)))]
742746
{:resource resource :content (protobuf/map->bytes rive-model-pb-class pb)}))
743747

744-
(g/defnk produce-model-build-targets [_node-id own-build-errors resource save-value rive-scene-resource material-resource dep-build-targets]
748+
(g/defnk produce-model-build-targets [_node-id own-build-errors resource save-value rive-scene-resource material-resource blit-material-resource dep-build-targets]
745749
(g/precluding-errors own-build-errors
746750
(let [dep-build-targets (flatten dep-build-targets)
747751
deps-by-source (into {} (map #(let [res (:resource %)] [(:resource res) res]) dep-build-targets))
748-
dep-resources (map (fn [[label resource]] [label (get deps-by-source resource)]) [[:scene rive-scene-resource] [:material material-resource]])]
752+
dep-resources (map (fn [[label resource]] [label (get deps-by-source resource)]) [[:scene rive-scene-resource] [:material material-resource] [:blit-material blit-material-resource]])]
749753
[(bt/with-content-hash
750754
{:node-id _node-id
751755
:resource (workspace/make-build-resource resource)
@@ -789,6 +793,19 @@
789793
(dynamic edit-type (g/constantly {:type resource/Resource :ext "material"}))
790794
(dynamic error (g/fnk [_node-id material]
791795
(validate-model-material _node-id material))))
796+
; not visible/editable
797+
(property blit-material resource/Resource ; Default assigned in load-fn.
798+
(value (gu/passthrough blit-material-resource))
799+
(set (fn [evaluation-context self old-value new-value]
800+
(project/resource-setter evaluation-context self old-value new-value
801+
[:resource :blit-material-resource]
802+
[:shader :blit-material-shader]
803+
[:samplers :blit-material-samplers]
804+
[:build-targets :dep-build-targets])))
805+
(dynamic edit-type (g/constantly {:type resource/Resource :ext "material"}))
806+
(dynamic error (g/fnk [_node-id material]
807+
(validate-model-material _node-id material)))
808+
(dynamic visible (g/constantly false)))
792809

793810
(property default-state-machine g/Str (default (protobuf/default rive-model-pb-class :default-state-machine))
794811
(dynamic error (g/fnk [_node-id artboard rive-artboard-id-list default-state-machine rive-scene]
@@ -832,6 +849,9 @@
832849
(input material-resource resource/Resource)
833850
(input material-shader ShaderLifecycle)
834851
(input material-samplers g/Any)
852+
(input blit-material-resource resource/Resource)
853+
(input blit-material-shader ShaderLifecycle)
854+
(input blit-material-samplers g/Any)
835855
(input default-tex-params g/Any)
836856
(input anim-data g/Any)
837857

0 commit comments

Comments
 (0)