forked from Shirakumo/trial
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworkbench.lisp
48 lines (39 loc) · 1.51 KB
/
workbench.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
(defpackage #:workbench
(:use #:cl+trial)
(:shadow #:launch)
(:local-nicknames)
(:export #:workbench #:launch))
(in-package #:workbench)
(defclass workbench (main) ()
(:default-initargs :clear-color (vec 0.25 0.3 0.35 0)))
(defun launch (&rest args)
(apply #'trial:launch 'workbench args))
(define-pool workbench)
(define-asset (workbench cat) image
#p"cat.png")
(define-asset (workbench cube) mesh
(make-cube 15))
(define-asset (workbench grid) mesh
(make-line-grid 10 100 100))
(define-shader-entity player (vertex-entity textured-entity located-entity listener)
((name :initform 'player)
(texture :initform (// 'workbench 'cat))
(vertex-array :initform (// 'workbench 'cube))))
(define-handler (player tick) (dt)
(when (retained :w)
(incf (vz (location player)) (* dt +50)))
(when (retained :a)
(incf (vx (location player)) (* dt +50)))
(when (retained :s)
(incf (vz (location player)) (* dt -50)))
(when (retained :d)
(incf (vx (location player)) (* dt -50))))
(progn
(defmethod setup-scene ((workbench workbench) scene)
(enter (make-instance 'trial::fps-counter) scene)
(enter (make-instance 'debug-text :text "HELLO and welcome back to VIDEO GAMES") scene)
(enter (make-instance 'vertex-entity :vertex-array (// 'workbench 'grid)) scene)
(enter (make-instance 'player) scene)
(enter (make-instance 'following-camera :target (unit 'player scene) :location (vec 0 100 100)) scene)
(enter (make-instance 'render-pass) scene))
(maybe-reload-scene))