|
50 | 50 | (def rive-scene-icon "/defold-rive/editor/resources/icons/32/Icons_16-Rive-scene.png") |
51 | 51 | (def rive-model-icon "/defold-rive/editor/resources/icons/32/Icons_15-Rive-model.png") |
52 | 52 | (def rive-bone-icon "/defold-rive/editor/resources/icons/32/Icons_18-Rive-bone.png") |
| 53 | +;; These should be read from the .proto file |
53 | 54 | (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") |
54 | 56 |
|
55 | 57 | (def rive-file-ext "riv") |
56 | 58 | (def rive-scene-ext "rivescene") |
|
94 | 96 | (gu/set-properties-from-pb-map self rive-model-pb-class rive-model-desc |
95 | 97 | rive-scene (resolve-resource :scene) |
96 | 98 | material (resolve-resource (:material :or default-material-proj-path)) |
| 99 | + blit-material (resolve-resource (:blit-material :or default-blit-material-proj-path)) |
97 | 100 | artboard :artboard |
98 | 101 | default-animation :default-animation |
99 | 102 | default-state-machine :default-state-machine |
|
679 | 682 | ; .rivemodel (The "instance" file) |
680 | 683 | ; |
681 | 684 |
|
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] |
683 | 686 | (protobuf/make-map-without-defaults rive-model-pb-class |
684 | 687 | :scene (resource/resource->proj-path rive-scene-resource) |
685 | 688 | :material (resource/resource->proj-path material-resource) |
| 689 | + :blit-material (resource/resource->proj-path blit-material-resource) |
686 | 690 | :artboard artboard |
687 | 691 | :default-animation default-animation |
688 | 692 | :default-state-machine default-state-machine |
|
741 | 745 | 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)))] |
742 | 746 | {:resource resource :content (protobuf/map->bytes rive-model-pb-class pb)})) |
743 | 747 |
|
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] |
745 | 749 | (g/precluding-errors own-build-errors |
746 | 750 | (let [dep-build-targets (flatten dep-build-targets) |
747 | 751 | 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]])] |
749 | 753 | [(bt/with-content-hash |
750 | 754 | {:node-id _node-id |
751 | 755 | :resource (workspace/make-build-resource resource) |
|
789 | 793 | (dynamic edit-type (g/constantly {:type resource/Resource :ext "material"})) |
790 | 794 | (dynamic error (g/fnk [_node-id material] |
791 | 795 | (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))) |
792 | 809 |
|
793 | 810 | (property default-state-machine g/Str (default (protobuf/default rive-model-pb-class :default-state-machine)) |
794 | 811 | (dynamic error (g/fnk [_node-id artboard rive-artboard-id-list default-state-machine rive-scene] |
|
832 | 849 | (input material-resource resource/Resource) |
833 | 850 | (input material-shader ShaderLifecycle) |
834 | 851 | (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) |
835 | 855 | (input default-tex-params g/Any) |
836 | 856 | (input anim-data g/Any) |
837 | 857 |
|
|
0 commit comments