diff --git a/defold-spine/editor/src/spineguiext.clj b/defold-spine/editor/src/spineguiext.clj index 185c593..6665b82 100644 --- a/defold-spine/editor/src/spineguiext.clj +++ b/defold-spine/editor/src/spineguiext.clj @@ -147,28 +147,42 @@ (output spine-skin-ids gui/GuiResourceNames (g/fnk [spine-scene-element-ids spine-scene] (:spine-skin-ids (or (spine-scene-element-ids spine-scene) (spine-scene-element-ids ""))))) - (output spine-scene-scene g/Any (g/fnk [spine-scene-infos spine-scene] - (:spine-scene-scene (or (spine-scene-infos spine-scene) - (spine-scene-infos ""))))) - (output spine-scene-bones g/Any (g/fnk [spine-scene-infos spine-scene] - (:spine-bones (or (spine-scene-infos spine-scene) - (spine-scene-infos ""))))) - - (output spine-scene-pb g/Any (g/fnk [spine-scene-infos spine-scene] - (:spine-scene-pb (or (spine-scene-infos spine-scene) - (spine-scene-infos ""))))) + (output spine-scene-scene g/Any + (g/fnk [costly-gui-scene-info spine-scene] + (let [spine-scene-infos (:spine-scene-infos costly-gui-scene-info) + spine-scene-info (or (get spine-scene-infos spine-scene) + (get spine-scene-infos ""))] + (:spine-scene-scene spine-scene-info)))) + (output spine-scene-bones g/Any + (g/fnk [costly-gui-scene-info spine-scene] + (let [spine-scene-infos (:spine-scene-infos costly-gui-scene-info) + spine-scene-info (or (get spine-scene-infos spine-scene) + (get spine-scene-infos ""))] + (:spine-bones spine-scene-info)))) + (output spine-scene-pb g/Any + (g/fnk [costly-gui-scene-info spine-scene] + (let [spine-scene-infos (:spine-scene-infos costly-gui-scene-info) + spine-scene-info (or (get spine-scene-infos spine-scene) + (get spine-scene-infos ""))] + (:spine-scene-pb spine-scene-info)))) ;; The handle to the C++ resource - (output spine-data-handle g/Any (g/fnk [spine-scene-infos spine-scene] - (:spine-data-handle (or (spine-scene-infos spine-scene) - (spine-scene-infos ""))))) + (output spine-data-handle g/Any + (g/fnk [costly-gui-scene-info spine-scene] + (let [spine-scene-infos (:spine-scene-infos costly-gui-scene-info) + spine-scene-info (or (get spine-scene-infos spine-scene) + (get spine-scene-infos ""))] + (:spine-data-handle spine-scene-info)))) (output spine-vertex-buffer g/Any :cached (g/fnk [spine-scene spine-data-handle spine-skin spine-default-animation] (produce-local-vertices spine-data-handle spine-skin spine-default-animation 0.0))) - (output aabb g/Any (g/fnk [spine-scene-infos spine-scene spine-skin pivot] - (or (get-in spine-scene-infos [spine-scene :spine-skin-aabbs (if (= spine-skin "") "default" spine-skin)]) - geom/empty-bounding-box))) + (output aabb g/Any + (g/fnk [costly-gui-scene-info spine-scene spine-skin] + (let [spine-scene-infos (:spine-scene-infos costly-gui-scene-info) + spine-skin-name (if (= spine-skin "") "default" spine-skin)] + (or (get-in spine-scene-infos [spine-scene :spine-skin-aabbs spine-skin-name]) + geom/empty-bounding-box)))) ; Overloaded outputs from VisualNode (output gpu-texture TextureLifecycle (g/constantly nil))