41 lines
1.1 KiB
Scheme
41 lines
1.1 KiB
Scheme
#lang scheme
|
|
#lang scheme/base
|
|
|
|
(require scheme/class fluxus-016/drflux "common.ss" "message.ss" "list-utils.ss")
|
|
(provide (all-defined-out))
|
|
|
|
(define ornament-view%
|
|
(class object%
|
|
(init-field
|
|
(pos (vector 0 0 0))
|
|
(property 'none)
|
|
(time 0))
|
|
|
|
(field
|
|
(rot (vmul (rndvec) 360))
|
|
(root (with-state
|
|
(translate pos)
|
|
(rotate rot)
|
|
(scale 0.01)
|
|
(cond
|
|
((eq? property 'wiggle)
|
|
; (opacity 1)
|
|
(hint-depth-sort)
|
|
(colour (vector 0.5 0.0 0.0))
|
|
(load-primitive "meshes/wiggle.obj"))
|
|
((eq? property 'leaf)
|
|
(colour (vector 0.8 1 0.6))
|
|
(texture (load-texture "textures/leaf2.png"))
|
|
(load-primitive "meshes/leaf.obj"))
|
|
(else (error ""))))))
|
|
|
|
(define/public (update t d)
|
|
(when (< time 1)
|
|
(with-primitive root
|
|
(identity)
|
|
(translate pos)
|
|
(rotate rot)
|
|
(scale (* 0.2 time)))
|
|
(set! time (+ time (* 0.1 d)))))
|
|
|
|
(super-new))) |