]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/boids/boids.factor
Harmonize spelling
[factor.git] / extra / boids / boids.factor
index d027d9077d1670f11044bcd5a19d4ec7dd029e1f..7ca546fba50069332ff521b5c6bcccbaafd55579 100644 (file)
@@ -1,22 +1,24 @@
 ! Copyright (C) 2008 Eduardo Cavazos.
 ! Copyright (C) 2011 Anton Gorenko.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays boids.simulation calendar classes
-colors.constants kernel literals locals math math.functions
-math.trig models opengl opengl.demo-support opengl.gl sequences
-threads ui ui.gadgets ui.gadgets.borders ui.gadgets.buttons
-ui.gadgets.frames ui.gadgets.grids ui.gadgets.labeled
-ui.gadgets.labels ui.gadgets.packs ui.gadgets.sliders
-ui.gadgets.tracks ui.render ui.tools.common ;
+
+USING: accessors arrays boids.simulation calendar classes colors
+kernel literals math math.functions math.trig models
+models.range opengl opengl.demo-support opengl.gl sequences
+threads ui ui.commands ui.gadgets ui.gadgets.borders
+ui.gadgets.buttons ui.gadgets.frames ui.gadgets.grids
+ui.gadgets.labeled ui.gadgets.labels ui.gadgets.packs
+ui.gadgets.sliders ui.render ui.tools.common ;
+
 QUALIFIED-WITH: models.range mr
 IN: boids
 
-TUPLE: boids-gadget < gadget paused boids behaviours dt ;
+TUPLE: boids-gadget < gadget paused boids behaviors dt ;
 
 CONSTANT: initial-population 100
 CONSTANT: initial-dt 5
 
-: initial-behaviours ( -- seq )
+: initial-behaviors ( -- seq )
     1.0 75 -0.1 <cohesion>
     1.0 40 -0.5 <alignment>
     1.0 25 -1.0 <separation>
@@ -25,12 +27,12 @@ CONSTANT: initial-dt 5
 : <boids-gadget> ( -- gadget )
     boids-gadget new
         t >>clipped?
-        ${ width height } >>pref-dim
+        ${ WIDTH HEIGHT } >>pref-dim
         initial-population random-boids >>boids
-        initial-behaviours >>behaviours
+        initial-behaviors >>behaviours
         initial-dt >>dt ;
 
-M:  boids-gadget ungraft*
+M: boids-gadget ungraft*
     t >>paused drop ;
 
 : vec>deg ( vec -- deg )
@@ -54,7 +56,7 @@ M: boids-gadget draw-gadget* ( boids-gadget -- )
     boids>> draw-boids ;
 
 : iterate-system ( boids-gadget -- )
-    dup [ boids>> ] [ behaviours>> ] [ dt>> ] tri
+    dup [ boids>> ] [ behaviors>> ] [ dt>> ] tri
     simulate >>boids drop ;
 
 :: start-boids-thread ( gadget -- )
@@ -104,12 +106,19 @@ M: range-observer model-changed
         [ neg random-boids append ] if
     ] change-boids drop ;
 
-: pause-toggle ( boids-gadget -- )
+<PRIVATE
+: find-boids-gadget ( gadget -- boids-gadget )
+    dup boids-gadget? [ children>> [ boids-gadget? ] find nip ] unless ;
+PRIVATE>
+
+: com-pause ( boids-gadget -- )
+    find-boids-gadget
     dup paused>> not [ >>paused ] keep
     [ drop ] [ start-boids-thread ] if ;
 
-: randomize-boids ( boids-gadget -- )
-    [ length random-boids ] change-boids drop ;
+: com-randomize ( boids-gadget -- )
+    find-boids-gadget
+    [ length random-boids ] change-boids relayout-1 ;
 
 :: simulation-panel ( boids-gadget -- gadget )
     <pile> white-interior
@@ -129,17 +138,19 @@ M: range-observer model-changed
     { 5 5 } <border> add-gadget
 
     <shelf> { 2 2 } >>gap
-    "pause" [ drop boids-gadget pause-toggle ]
+    "pause" [ drop boids-gadget com-pause ]
     <border-button> add-gadget
-    "randomize" [ drop boids-gadget randomize-boids ]
+    "randomize" [ drop boids-gadget com-randomize ]
     <border-button> add-gadget
 
     { 5 5 } <border> add-gadget
 
     "simulation" COLOR: gray <framed-labeled-gadget> ;
 
-:: create-gadgets ( -- gadgets )
-    <shelf>
+TUPLE: boids-frame < pack ;
+
+:: <boids-frame> ( -- boids-frame )
+    boids-frame new horizontal >>orientation
     <boids-gadget> :> boids-gadget
     boids-gadget [ start-boids-thread ] keep
     add-gadget
@@ -149,11 +160,15 @@ M: range-observer model-changed
     boids-gadget simulation-panel
     add-gadget
 
-    boids-gadget behaviours>>
+    boids-gadget behaviors>>
     [ behavior-panel add-gadget ] each
 
     { 5 5 } <border> add-gadget ;
 
+boids-frame "touchbar" f {
+    { f com-pause }
+    { f com-randomize }
+} define-command-map
+
 MAIN-WINDOW: boids { { title "Boids" } }
-    create-gadgets
-    >>gadgets ;
+    <boids-frame> >>gadgets ;