From a453aa824238187d66df9b5bb0373350e6413ce5 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 28 May 2016 12:52:57 -0400 Subject: render: Add particle effects. * sly/render/particles.scm: New file. * Makefile.am (SOURCES): Add it. * examples/particles.scm: New file. --- examples/particles.scm | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 examples/particles.scm (limited to 'examples/particles.scm') diff --git a/examples/particles.scm b/examples/particles.scm new file mode 100644 index 0000000..e9af860 --- /dev/null +++ b/examples/particles.scm @@ -0,0 +1,59 @@ +;;; Sly +;;; Copyright (C) 2016 David Thompson +;;; +;;; This program is free software: you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see +;;; . + +(use-modules (sly) + (sly render particles) + (sly render sprite-batch) + (sly render utils)) + +(load "common.scm") + +(define (particle-position n time life-span) + (polar2 (* time 2) (* n n))) + +(define-signal texture + (on-start (load-texture "images/bullet.png") + null-texture)) + +(define-signal particle-system + (signal-let ((texture texture)) + (make-particle-system #:texture texture + #:emit-rate 4 + #:life-span 200 + #:renderer (make-simple-particle-renderer + particle-position)))) + +(define-signal batch + (on-start (make-sprite-batch 1024))) + +(define-signal scene + (signal-let ((particle-system particle-system) + (batch batch) + (time (signal-timer))) + (if batch + (with-camera (2d-camera #:area (make-rect 0 0 640 480)) + (with-blend-mode (make-blend-mode 'src-alpha 'one) + (move (vector2 320 240) + (render-particles particle-system batch time)))) + render-nothing))) + +(with-window (make-window #:title "Particles") + (run-game-loop scene)) + +;;; Local Variables: +;;; compile-command: "../pre-inst-env guile particles.scm" +;;; End: -- cgit v1.2.3