Plaster
New
List
Login
common-lisp
default
shinmera
2023.04.21 21:32:07
(defpackage #:workbench (:use #:cl+trial) (:shadow #:launch) (:local-nicknames (#:assets #:org.shirakumo.fraf.trial.assets) (#:alloy #:org.shirakumo.alloy) (#:presentations #:org.shirakumo.alloy.renderers.simple.presentations) (#:ui #:org.shirakumo.fraf.trial.alloy) (#:v #:org.shirakumo.verbose)) (:export #:workbench #:launch)) (in-package #:workbench) (defclass workbench (main) () (:default-initargs :clear-color (vec 0.25 0.3 0.35 0) :context '(:vsync T))) (defun launch (&rest args) (apply #'trial:launch 'workbench args)) (define-shader-pass ui (org.shirakumo.fraf.trial.alloy:base-ui) ()) (defclass my-game (ui:panel) ()) (defmethod initialize-instance :after ((game my-game) &key) (let* ((layout (make-instance 'alloy:grid-layout :col-sizes '(T T T T T T T T) :row-sizes '(T T T T T T T T))) (focus (make-instance 'alloy:visual-focus-manager)) (button (alloy:represent "H" 'alloy:button :focus-parent focus))) (alloy:on alloy:activate (button) (print "Hello!")) (alloy:enter button layout :col 2 :row 3) (alloy:finish-structure game layout focus))) (progn (defmethod setup-scene ((workbench workbench) scene) (enter (make-instance 'fps-counter) scene) (let ((game (make-instance 'render-pass)) (ui (make-instance 'ui)) (combine (make-instance 'blend-pass))) (connect (port game 'color) (port combine 'a-pass) scene) (connect (port ui 'color) (port combine 'b-pass) scene) (ui:show-panel 'my-game))) (maybe-reload-scene))
Raw
Annotate
Repaste