From 541ccb31705b29b6fd31ee6ba82bf0248c360613 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 24 Oct 2014 18:17:33 -0700 Subject: [PATCH] jamshred: it lives again, now you can jam and shred! --- {unmaintained => extra}/jamshred/authors.txt | 0 .../jamshred/deploy.factor | 0 .../jamshred/game/authors.txt | 0 .../jamshred/game/game.factor | 0 .../jamshred/gl/authors.txt | 0 {unmaintained => extra}/jamshred/gl/gl.factor | 0 .../jamshred/jamshred.factor | 9 +++-- .../jamshred/log/log.factor | 0 .../jamshred/oint/authors.txt | 0 .../jamshred/oint/oint-tests.factor | 0 .../jamshred/oint/oint.factor | 33 +++++++++++++++++-- .../jamshred/player/authors.txt | 0 .../jamshred/player/player.factor | 10 +++--- .../jamshred/sound/sound.factor | 2 +- {unmaintained => extra}/jamshred/summary.txt | 0 {unmaintained => extra}/jamshred/tags.txt | 1 + .../jamshred/tunnel/authors.txt | 0 .../jamshred/tunnel/tunnel-tests.factor | 0 .../jamshred/tunnel/tunnel.factor | 8 ++--- 19 files changed, 48 insertions(+), 15 deletions(-) rename {unmaintained => extra}/jamshred/authors.txt (100%) rename {unmaintained => extra}/jamshred/deploy.factor (100%) rename {unmaintained => extra}/jamshred/game/authors.txt (100%) rename {unmaintained => extra}/jamshred/game/game.factor (100%) rename {unmaintained => extra}/jamshred/gl/authors.txt (100%) rename {unmaintained => extra}/jamshred/gl/gl.factor (100%) rename {unmaintained => extra}/jamshred/jamshred.factor (89%) rename {unmaintained => extra}/jamshred/log/log.factor (100%) rename {unmaintained => extra}/jamshred/oint/authors.txt (100%) rename {unmaintained => extra}/jamshred/oint/oint-tests.factor (100%) rename {unmaintained => extra}/jamshred/oint/oint.factor (75%) rename {unmaintained => extra}/jamshred/player/authors.txt (100%) rename {unmaintained => extra}/jamshred/player/player.factor (94%) rename {unmaintained => extra}/jamshred/sound/sound.factor (86%) rename {unmaintained => extra}/jamshred/summary.txt (100%) rename {unmaintained => extra}/jamshred/tags.txt (76%) rename {unmaintained => extra}/jamshred/tunnel/authors.txt (100%) rename {unmaintained => extra}/jamshred/tunnel/tunnel-tests.factor (100%) rename {unmaintained => extra}/jamshred/tunnel/tunnel.factor (95%) diff --git a/unmaintained/jamshred/authors.txt b/extra/jamshred/authors.txt similarity index 100% rename from unmaintained/jamshred/authors.txt rename to extra/jamshred/authors.txt diff --git a/unmaintained/jamshred/deploy.factor b/extra/jamshred/deploy.factor similarity index 100% rename from unmaintained/jamshred/deploy.factor rename to extra/jamshred/deploy.factor diff --git a/unmaintained/jamshred/game/authors.txt b/extra/jamshred/game/authors.txt similarity index 100% rename from unmaintained/jamshred/game/authors.txt rename to extra/jamshred/game/authors.txt diff --git a/unmaintained/jamshred/game/game.factor b/extra/jamshred/game/game.factor similarity index 100% rename from unmaintained/jamshred/game/game.factor rename to extra/jamshred/game/game.factor diff --git a/unmaintained/jamshred/gl/authors.txt b/extra/jamshred/gl/authors.txt similarity index 100% rename from unmaintained/jamshred/gl/authors.txt rename to extra/jamshred/gl/authors.txt diff --git a/unmaintained/jamshred/gl/gl.factor b/extra/jamshred/gl/gl.factor similarity index 100% rename from unmaintained/jamshred/gl/gl.factor rename to extra/jamshred/gl/gl.factor diff --git a/unmaintained/jamshred/jamshred.factor b/extra/jamshred/jamshred.factor similarity index 89% rename from unmaintained/jamshred/jamshred.factor rename to extra/jamshred/jamshred.factor index 96e88cb662..ce53fefcf5 100644 --- a/unmaintained/jamshred/jamshred.factor +++ b/extra/jamshred/jamshred.factor @@ -1,6 +1,9 @@ ! Copyright (C) 2007, 2008 Alex Chapman ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays calendar jamshred.game jamshred.gl jamshred.player jamshred.log kernel math math.constants math.rectangles math.vectors namespaces sequences threads ui ui.backend ui.gadgets ui.gadgets.worlds ui.gestures ui.render ; +USING: accessors arrays calendar jamshred.game jamshred.gl +jamshred.player jamshred.log kernel math math.constants +math.rectangles math.vectors namespaces sequences threads ui +ui.backend ui.gadgets ui.gadgets.worlds ui.gestures ui.render ; IN: jamshred TUPLE: jamshred-gadget < gadget { jamshred jamshred } last-hand-loc ; @@ -31,7 +34,7 @@ M: jamshred-gadget graft* ( gadget -- ) [ [ jamshred-loop ] curry in-thread ] bi ; M: jamshred-gadget ungraft* ( gadget -- ) - dup find-gl-context cleanup-graphics jamshred>> t swap (>>quit) ; + dup find-gl-context cleanup-graphics jamshred>> t swap quit<< ; : jamshred-restart ( jamshred-gadget -- ) >>jamshred drop ; @@ -50,7 +53,7 @@ M: jamshred-gadget ungraft* ( gadget -- ) : (handle-mouse-motion) ( jamshred-gadget mouse-motion -- ) dupd [ first swap x>radians ] [ second swap y>radians ] 2bi rot jamshred>> mouse-moved ; - + : handle-mouse-motion ( jamshred-gadget -- ) hand-loc get [ over last-hand-loc>> [ diff --git a/unmaintained/jamshred/log/log.factor b/extra/jamshred/log/log.factor similarity index 100% rename from unmaintained/jamshred/log/log.factor rename to extra/jamshred/log/log.factor diff --git a/unmaintained/jamshred/oint/authors.txt b/extra/jamshred/oint/authors.txt similarity index 100% rename from unmaintained/jamshred/oint/authors.txt rename to extra/jamshred/oint/authors.txt diff --git a/unmaintained/jamshred/oint/oint-tests.factor b/extra/jamshred/oint/oint-tests.factor similarity index 100% rename from unmaintained/jamshred/oint/oint-tests.factor rename to extra/jamshred/oint/oint-tests.factor diff --git a/unmaintained/jamshred/oint/oint.factor b/extra/jamshred/oint/oint.factor similarity index 75% rename from unmaintained/jamshred/oint/oint.factor rename to extra/jamshred/oint/oint.factor index 1b1d87fbab..b50d9ac2fb 100644 --- a/unmaintained/jamshred/oint/oint.factor +++ b/extra/jamshred/oint/oint.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007, 2008 Alex Chapman ! See http://factorcode.org/license.txt for BSD license. -USING: accessors arrays kernel locals math math.constants math.functions math.matrices math.vectors math.quaternions random sequences ; +USING: accessors arrays kernel locals math math.constants math.functions math.matrices math.vectors random sequences ; IN: jamshred.oint ! An oint is a point with three linearly independent unit vectors @@ -14,6 +14,35 @@ C: oint : rotation-quaternion ( theta axis -- quaternion ) swap 2 / dup cos swap sin rot n*v first3 rect> [ rect> ] dip 2array ; +q ( v -- q ) + first3 rect> [ 0 swap rect> ] dip 2array ; + +: q>v ( q -- v ) + first2 [ imaginary-part ] dip >rect 3array ; + +: qconjugate ( u -- u' ) + first2 [ conjugate ] [ neg ] bi* 2array ; + +: qrecip ( u -- 1/u ) + qconjugate dup norm-sq v/n ; + +PRIVATE> + : rotate-vector ( q qrecip v -- v ) v>q swap q* q* q>v ; @@ -40,7 +69,7 @@ C: oint 2 / 2dup random-float+- left-pivot random-float+- up-pivot ; : location+ ( v oint -- ) - [ location>> v+ ] [ (>>location) ] bi ; + [ location>> v+ ] [ location<< ] bi ; : go-forward ( distance oint -- ) [ forward>> n*v ] [ location+ ] bi ; diff --git a/unmaintained/jamshred/player/authors.txt b/extra/jamshred/player/authors.txt similarity index 100% rename from unmaintained/jamshred/player/authors.txt rename to extra/jamshred/player/authors.txt diff --git a/unmaintained/jamshred/player/player.factor b/extra/jamshred/player/player.factor similarity index 94% rename from unmaintained/jamshred/player/player.factor rename to extra/jamshred/player/player.factor index 49536e2570..57169a3809 100644 --- a/unmaintained/jamshred/player/player.factor +++ b/extra/jamshred/player/player.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007, 2008 Alex Chapman ! See http://factorcode.org/license.txt for BSD license. -USING: accessors colors.constants combinators jamshred.log +USING: accessors calendar.unix colors.constants combinators jamshred.log jamshred.oint jamshred.sound jamshred.tunnel kernel locals math math.constants math.order math.ranges math.vectors math.matrices sequences shuffle specialized-arrays strings system ; @@ -39,9 +39,9 @@ CONSTANT: max-speed 30.0 >>tunnel to-tunnel-start ; : update-time ( player -- seconds-passed ) - system-micros swap [ last-move>> - 1000000 / ] [ (>>last-move) ] 2bi ; + system-micros swap [ last-move>> - 1000000 / ] [ last-move<< ] 2bi ; -: moved ( player -- ) system-micros swap (>>last-move) ; +: moved ( player -- ) system-micros swap last-move<< ; : speed-range ( -- range ) max-speed [0,b] ; @@ -92,7 +92,7 @@ CONSTANT: max-speed 30.0 : update-nearest-segment2 ( heading player -- ) 2dup distance-to-heading-segment-area 0 <= [ [ tunnel>> ] [ nearest-segment>> rot heading-segment ] - [ (>>nearest-segment) ] tri + [ nearest-segment<< ] tri ] [ 2drop ] if ; @@ -137,4 +137,4 @@ CONSTANT: max-speed 30.0 [ update-time ] [ distance-to-move ] [ (move-player) 2drop ] tri ; : update-player ( player -- ) - [ move-player ] [ nearest-segment>> "white" named-color swap (>>color) ] bi ; + [ move-player ] [ nearest-segment>> "white" named-color swap color<< ] bi ; diff --git a/unmaintained/jamshred/sound/sound.factor b/extra/jamshred/sound/sound.factor similarity index 86% rename from unmaintained/jamshred/sound/sound.factor rename to extra/jamshred/sound/sound.factor index 6a9b331f33..45f18364ce 100644 --- a/unmaintained/jamshred/sound/sound.factor +++ b/extra/jamshred/sound/sound.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Alex Chapman ! See http://factorcode.org/license.txt for BSD license. -USING: accessors io.pathnames kernel openal sequences ; +USING: accessors io.pathnames kernel openal openal.alut sequences ; IN: jamshred.sound TUPLE: sounds bang ; diff --git a/unmaintained/jamshred/summary.txt b/extra/jamshred/summary.txt similarity index 100% rename from unmaintained/jamshred/summary.txt rename to extra/jamshred/summary.txt diff --git a/unmaintained/jamshred/tags.txt b/extra/jamshred/tags.txt similarity index 76% rename from unmaintained/jamshred/tags.txt rename to extra/jamshred/tags.txt index 8ae5957a4b..5200f475c5 100644 --- a/unmaintained/jamshred/tags.txt +++ b/extra/jamshred/tags.txt @@ -1,2 +1,3 @@ applications games +demos diff --git a/unmaintained/jamshred/tunnel/authors.txt b/extra/jamshred/tunnel/authors.txt similarity index 100% rename from unmaintained/jamshred/tunnel/authors.txt rename to extra/jamshred/tunnel/authors.txt diff --git a/unmaintained/jamshred/tunnel/tunnel-tests.factor b/extra/jamshred/tunnel/tunnel-tests.factor similarity index 100% rename from unmaintained/jamshred/tunnel/tunnel-tests.factor rename to extra/jamshred/tunnel/tunnel-tests.factor diff --git a/unmaintained/jamshred/tunnel/tunnel.factor b/extra/jamshred/tunnel/tunnel.factor similarity index 95% rename from unmaintained/jamshred/tunnel/tunnel.factor rename to extra/jamshred/tunnel/tunnel.factor index f94fc979ce..7d46eb1e9a 100644 --- a/unmaintained/jamshred/tunnel/tunnel.factor +++ b/extra/jamshred/tunnel/tunnel.factor @@ -15,7 +15,7 @@ TUPLE: segment < oint number color radius ; C: segment : segment-number++ ( segment -- ) - [ number>> 1 + ] keep (>>number) ; + [ number>> 1 + ] keep number<< ; : clamp-length ( n seq -- n' ) 0 swap length clamp ; @@ -132,16 +132,16 @@ CONSTANT: distant 1000 dupd (distance-to-collision) swap forward>> n*v ; : bounce-forward ( segment oint -- ) - [ wall-normal ] [ forward>> swap reflect ] [ (>>forward) ] tri ; + [ wall-normal ] [ forward>> swap reflect ] [ forward<< ] tri ; : bounce-left ( segment oint -- ) #! must be done after forward [ forward>> vneg ] dip [ left>> swap reflect ] - [ forward>> proj-perp normalize ] [ (>>left) ] tri ; + [ forward>> proj-perp normalize ] [ left<< ] tri ; : bounce-up ( segment oint -- ) #! must be done after forward and left! - nip [ forward>> ] [ left>> cross ] [ (>>up) ] tri ; + nip [ forward>> ] [ left>> cross ] [ up<< ] tri ; : bounce-off-wall ( oint segment -- ) swap [ bounce-forward ] [ bounce-left ] [ bounce-up ] 2tri ; -- 2.34.1