-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathassets.lisp
80 lines (68 loc) · 3.18 KB
/
assets.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
(defpackage #:org.shirakumo.fraf.trial.assets
(:use #:cl+trial)
(:shadow #:// #:asset #:file)
(:export
#:pool
#://
#:asset
#:file))
(in-package #:org.shirakumo.fraf.trial.assets)
(define-pool pool)
(defun // (name &optional (resource T))
(trial:// 'pool (intern (string name) #.*package*) resource))
(define-compiler-macro // (name &optional (resource T) &environment env)
(if (constantp name env)
`(trial:// 'pool ',(intern (string name) #.*package*) ,resource)
`(trial:// 'pool (intern (string ,name) #.*package*) ,resource)))
(defun asset (name &optional (errorp T))
(trial:asset 'pool (intern (string name) #.*package*) errorp))
(define-compiler-macro asset (name &optional (errorp T) &environment env)
(if (constantp name env)
`(trial:asset 'pool ',(intern (string name) #.*package*) ,errorp)
`(trial:asset 'pool (intern (string ,name) #.*package*) ,errorp)))
(defun file (name &optional (errorp T))
(let ((asset (asset name errorp)))
(when asset (trial:input* asset))))
(define-asset (pool heart-in-the-sand) image
'(#p"heart-in-the-sand/posx.jpg" #p"heart-in-the-sand/negx.jpg"
#p"heart-in-the-sand/posy.jpg" #p"heart-in-the-sand/negy.jpg"
#p"heart-in-the-sand/posz.jpg" #p"heart-in-the-sand/negz.jpg")
:target :texture-cube-map)
(define-asset (pool masko-naive) image
'(#p"masko-naive/posx.jpg" #p"masko-naive/negx.jpg"
#p"masko-naive/posy.jpg" #p"masko-naive/negy.jpg"
#p"masko-naive/posz.jpg" #p"masko-naive/negz.jpg")
:target :texture-cube-map)
(define-asset (pool nissi-beach) image
'(#p"nissi-beach/posx.jpg" #p"nissi-beach/negx.jpg"
#p"nissi-beach/posy.jpg" #p"nissi-beach/negy.jpg"
#p"nissi-beach/posz.jpg" #p"nissi-beach/negz.jpg")
:target :texture-cube-map)
(define-assets-from-path (pool environment-map "*.hdr"))
(define-assets-from-path (pool image "*.jpg"))
(define-assets-from-path (pool image "*.jpeg"))
(define-assets-from-path (pool image "*.png"))
(define-assets-from-path (pool image "*.ktx"))
(define-assets-from-path (pool image "*.gif"))
(define-assets-from-path (pool image "*.bmp"))
(define-assets-from-path (pool image "*.qoi"))
(define-assets-from-path (pool image "*.ter"))
(define-assets-from-path (pool image "*.tga"))
(define-assets-from-path (pool image "*.tiff"))
(define-assets-from-path (pool image "kenney-particles/*.png" :ignore-directory T))
(define-assets-from-path (pool sprite-data "*.json"))
(define-assets-from-path (pool tile-data "*.tmj"))
(define-assets-from-path (pool model-file "*.glb"))
(define-assets-from-path (pool model-file "*.gltf"))
(define-assets-from-path (pool model-file "*.obj"))
(define-assets-from-path (pool model-file "*.fbx"))
(define-assets-from-path (pool video-file "*.ogv"))
(define-assets-from-path (pool audio-file "sounds/*.wav" :ignore-directory T))
(define-assets-from-path (pool audio-file "sounds/*.ogg" :ignore-directory T)
(T :mixer :music))
(define-assets-from-path (pool audio-file "sounds/*.mp3" :ignore-directory T)
(T :mixer :music))
(define-assets-from-path (pool audio-file "sounds/*.opus" :ignore-directory T)
(T :mixer :music))
(define-assets-from-path (pool audio-file "sounds/*.flac" :ignore-directory T)
(T :mixer :music))