50 lines
1.4 KiB
Scheme
50 lines
1.4 KiB
Scheme
#lang scheme/base
|
|
(require scheme/class fluxus-016/drflux "common.ss" "message.ss" "list-utils.ss")
|
|
(provide (all-defined-out))
|
|
|
|
(define pickup-view%
|
|
(class object%
|
|
(init-field
|
|
(id -1)
|
|
(type 'none)
|
|
(pos (vector 0 0 0)))
|
|
|
|
(field
|
|
(rot (vmul (rndvec) 360))
|
|
(root (with-state
|
|
(translate pos)
|
|
(rotate rot)
|
|
(colour (pickup-colour))
|
|
(scale 0.3)
|
|
(texture
|
|
(cond
|
|
((eq? type 'wiggle) (load-texture "textures/wiggle.png"))
|
|
((eq? type 'leaf) (load-texture "textures/leaf.png"))
|
|
((eq? type 'curly) (load-texture "textures/curl.png"))))
|
|
(load-primitive "meshes/pickup.obj")))
|
|
(from pos)
|
|
(destination (vector 0 0 0))
|
|
(speed 0.05)
|
|
(t -1))
|
|
|
|
(define/public (pick-up)
|
|
(destroy root))
|
|
|
|
(define/public (move-to s)
|
|
(set! t 0)
|
|
(set! from pos)
|
|
(set! destination s))
|
|
|
|
(define/public (update t d)
|
|
(with-primitive root
|
|
(rotate (vector (* d 10) 0 0)))
|
|
#;(when (and (>= t 0) (< t 1))
|
|
(set! pos (vadd pos (vmul (vsub destination from) speed)))
|
|
(with-primitive root
|
|
(identity)
|
|
(translate pos)
|
|
(rotate rot))
|
|
(set! t (+ t speed))))
|
|
|
|
(super-new)))
|