157 lines
3.6 KiB
Scheme
157 lines
3.6 KiB
Scheme
(use-modules (chickadee)
|
|
(chickadee config)
|
|
(chickadee graphics text)
|
|
(chickadee graphics phong)
|
|
(chickadee graphics engine)
|
|
(chickadee graphics model)
|
|
(chickadee graphics mesh)
|
|
(chickadee graphics light)
|
|
(chickadee graphics shader)
|
|
(chickadee graphics buffer)
|
|
(chickadee graphics polygon)
|
|
(chickadee math)
|
|
(chickadee math vector)
|
|
(chickadee math matrix)
|
|
(system repl coop-server)
|
|
(ww init)
|
|
(ww kamera)
|
|
(ww obj))
|
|
|
|
;; Hitra pomoc:
|
|
;;
|
|
;; chickadee play anim.scm --repl-server
|
|
;; ^ pozene fajl z repl serverjem v ozadju
|
|
;;
|
|
;;
|
|
|
|
(define repl (spawn-coop-repl-server))
|
|
|
|
(define stevec 0)
|
|
|
|
(define (input-handle)
|
|
(cond ((key-pressed? 'h)
|
|
(set! dX (+ dX 0.1)))
|
|
((key-pressed? 'l)
|
|
(set! dX (- dX 0.1)))))
|
|
|
|
(define (update dt)
|
|
;; REPL!
|
|
(poll-coop-repl-server repl)
|
|
|
|
;; Stevec gor
|
|
(set! stevec (+ stevec 1))
|
|
(display (string-append (number->string stevec) "\n"))
|
|
|
|
(input-handle)
|
|
|
|
(obj-anim dt))
|
|
|
|
(define rotX 0)
|
|
(define rotY 0)
|
|
(define rotZ 0)
|
|
|
|
(define dX 0)
|
|
(define dY 0)
|
|
(define dZ 0)
|
|
|
|
(define (obj-anim dt)
|
|
(set! rotX (+ rotX (/ dt 0.2) (* dt dX)))
|
|
(set! rotY (+ rotY (/ dt 0.1)))
|
|
(set! rotZ (+ rotZ (/ dt 0.5)))
|
|
|
|
(matrix4-copy! (matrix4* (matrix4-scale stevec)
|
|
(matrix4-rotate-x rotX)
|
|
(matrix4-rotate-y rotY)
|
|
(matrix4-rotate-z rotZ))
|
|
model-matrix)
|
|
(matrix4-copy! (matrix4* (matrix4-scale stevec)
|
|
(matrix4-rotate-x rotY)
|
|
(matrix4-rotate-y rotZ)
|
|
(matrix4-rotate-z rotX))
|
|
tla-matrix)
|
|
;(matrix4-scale! model-matrix stevec)
|
|
;(matrix4-mult! model-matrix model-matrix (matrix4-scale stevec))
|
|
;(matrix4-rotate-x! model-matrix rotX)
|
|
;(matrix4-rotate-y! model-matrix rotY)
|
|
;(matrix4-rotate-z! model-matrix rotZ))
|
|
)
|
|
|
|
|
|
(define (key-press key modifiers repeat?)
|
|
(cond
|
|
((eq? key 'q)
|
|
(abort-game))
|
|
((eq? key 'k)
|
|
(set! obj (cons (ustvari-objekt stevec) obj)))
|
|
((eq? key 'r)
|
|
(load))))
|
|
|
|
(define (reset-stevec!)
|
|
(set! stevec 1))
|
|
|
|
(define tla-matrix (make-identity-matrix4))
|
|
(define position (vec3 0.0 0.0 -4.0))
|
|
|
|
(define obj #f)
|
|
(define tla #f)
|
|
|
|
(define nebo #f)
|
|
|
|
(define wireframe-shader
|
|
(load-shader (scope-datadir "shaders/path-stroke-vert.glsl")
|
|
(scope-datadir "shaders/path-stroke-frag.glsl")))
|
|
|
|
(define (draw alpha)
|
|
(with-graphics-state
|
|
((g:polygon-mode line-polygon-mode))
|
|
(with-projection
|
|
projection
|
|
|
|
;; objekti
|
|
(map (lambda (o)
|
|
(draw-mesh o
|
|
#:model-matrix model-matrix
|
|
#:view-matrix view-matrix
|
|
#:camera-position position
|
|
#:lights (list (ustvari-luc))))
|
|
obj)
|
|
|
|
;; "tla"
|
|
(draw-mesh tla
|
|
#:model-matrix tla-matrix
|
|
#:view-matrix view-matrix
|
|
#:camera-position position
|
|
#:lights (list (ustvari-luc)))
|
|
|
|
;; wireframe test?
|
|
(map
|
|
(lambda (p)
|
|
(shader-apply
|
|
my-shader
|
|
(primitive-vertex-array p)))
|
|
(mesh-primitives tla)))))
|
|
|
|
|
|
;; :( ne dela?
|
|
|
|
(define (load)
|
|
;; Moramo pogledat model
|
|
(poglej! position)
|
|
(reset-stevec!)
|
|
(ustvari-luc)
|
|
(set! obj (list (ustvari-objekt stevec)))
|
|
(set! tla (ustvari-tla))
|
|
(set! nebo (ustvari-nebo)))
|
|
|
|
(run-game
|
|
#:draw draw
|
|
#:update update
|
|
#:key-press key-press
|
|
#:load load
|
|
;; Okno init
|
|
#:window-resizable? #t
|
|
#:window-title "wavey wind"
|
|
#:clear-color (rgb #xFFFFFF))
|
|
|
|
;(reset-stevec!)
|