Skip to content

Commit

Permalink
Merge pull request #18 from kb10uy/dax-layers
Browse files Browse the repository at this point in the history
dax モジュールに便利レイヤーを追加する
  • Loading branch information
kb10uy authored Dec 26, 2023
2 parents c2236ab + 341d355 commit 1052b41
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 15 deletions.
55 changes: 40 additions & 15 deletions declavatar-extra/sexpr/dax.ket
Original file line number Diff line number Diff line change
@@ -1,16 +1,6 @@
; vim: set ft=commonlisp
(use da :self)

(define (foldl f i l)
(if (null l)
i
(call-self f (f i (first l)) (tail l))
)
)

(define (map f l)
(foldl (lambda (a x) (append a (f x))) () l)
)
(use lm (map))

(define (tracking-layer name targets parameters)
(da/raw-layer name
Expand All @@ -23,11 +13,46 @@
)
(da/state "Animation"
(da/clip (da/inline-animation (da/set-tracking 'animation targets)))
(map (lambda (p)
(da/transition-to "Tracking" (da/cond-ze p))
) parameters)
(map (lambda (p) (da/transition-to "Tracking" (da/cond-ze p))) parameters)
)
)
)

(define (switch-objects name parameter object-pairs)
(da/switch-layer name
:driven-by parameter
(da/option 'disabled
(map (lambda (pair)
(da/set-object (first pair) :value (not (second pair)))
) object-pairs)
)
(da/option 'enabled
(map (lambda (pair)
(da/set-object (first pair) :value (second pair))
) object-pairs)
)
)
)

(define (switch-shapes name parameter mesh shape-pairs)
(da/switch-layer name
:driven-by parameter
:default-mesh mesh
(da/option 'disabled
(map (lambda (pair)
(da/set-shape (first pair) :value (elt pair 1))
) shape-pairs)
)
(da/option 'enabled
(map (lambda (pair)
(da/set-shape (first pair) :value (elt pair 2))
) shape-pairs)
)
)
)

(export (tracking-layer))
(export (
tracking-layer
switch-objects
switch-shapes
))
30 changes: 30 additions & 0 deletions declavatar-extra/sexpr/lm.ket
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
; vim: set ft=commonlisp

(define (foldl f i l)
(if (null l)
i
(call-self f (f i (first l)) (tail l))
)
)

(define (foldr f l i)
(if (null l)
i
(call-self f (init l) (f (last l) i))
)
)

(define (map f l)
(foldl (lambda (a x) (append a (f x))) () l)
)

(define (filter p l)
(foldl (lambda (a x) (if (p x) (append a x) a)) () l)
)

(export (
foldl
foldr
map
filter
))
4 changes: 4 additions & 0 deletions examples/sexpr/dax.declisp
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@
(da/avatar "dax"
(da/parameters
(da/int "dax-parameter")
(da/bool "Hat")
(da/bool "Smile")
)

(da/fx-controller
(dax/tracking-layer "EyePrevention" '(eyes) '("dax-parameter"))
(dax/switch-objects "HatSwitch" "Hat" '(("hat" true)))
(dax/switch-shapes "SmileSwitch" "Smile" "Body" '(("mouth_笑顔" 0.0 1.0) ("eye_笑顔" 0.0 1.0)))
)
)

0 comments on commit 1052b41

Please sign in to comment.