From 18f61d37afb3f0f38f909fee86928b6bd2aeb7f7 Mon Sep 17 00:00:00 2001 From: nek0 Date: Thu, 29 Dec 2016 20:15:09 +0100 Subject: [PATCH] stabilizing --- src/Affection/Draw.hs | 2 +- src/Affection/Particle.hs | 31 ++++++++++++++++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/Affection/Draw.hs b/src/Affection/Draw.hs index 557c5ab..620297a 100644 --- a/src/Affection/Draw.hs +++ b/src/Affection/Draw.hs @@ -46,7 +46,7 @@ drawRect node color Fill rect@GeglRectangle{..} buf = do , G.Property "color" $ G.PropertyColor color ] diw <- liftIO $ G.gegl_node_connect_to opNode "output" node "input" - unless diw $ error "Affection.Draw.drawRect': connect failed" + unless diw $ error "Affection.Draw.drawRect: connect failed" put $ ad { drawStack = (DrawRequest rect buf (Kill (Just tempRoot))) : drawStack ad } diff --git a/src/Affection/Particle.hs b/src/Affection/Particle.hs index 311048f..075e820 100644 --- a/src/Affection/Particle.hs +++ b/src/Affection/Particle.hs @@ -39,21 +39,21 @@ updateParticle time funct pa = do now <- elapsedTime <$> get if particleCreation pa + particleTimeToLive pa < now then do - mproducer <- liftIO $ G.gegl_node_get_producer - (particleStackCont pa) - "input" - case mproducer of - Just (producer, padname) -> do - consumers <- liftIO $ G.gegl_node_get_consumers - (particleStackCont pa) - "output" - liftIO $ mapM_ (\(node, inpad)-> G.gegl_node_connect_to - producer - padname - node - inpad - ) consumers - Nothing -> return () + -- mproducer <- liftIO $ G.gegl_node_get_producer + -- (particleStackCont pa) + -- "input" + -- case mproducer of + -- Just (producer, padname) -> do + -- consumers <- liftIO $ G.gegl_node_get_consumers + -- (particleStackCont pa) + -- "output" + -- liftIO $ mapM_ (\(node, inpad)-> G.gegl_node_connect_to + -- producer + -- padname + -- node + -- inpad + -- ) consumers + -- Nothing -> return () liftIO $ G.gegl_node_drop $ particleRootNode pa return $ Nothing else do @@ -119,6 +119,7 @@ updateParticleSystem sys sec upd draw = do x <- catMaybes <$> mapM (updateParticle sec upd) (partStorList $ partSysParts sys) -- x <- catMaybes <$> foldM (updateParticle sec upd) [] (reverse $ psParts sys) when (not $ null x) $ do + liftIO $ G.gegl_node_link_many $ map particleStackCont (partStorList $ partSysParts sys) -- liftIO $ traceIO "linking last node to output" liftIO $ G.gegl_node_link (particleStackCont $ last x) (partSysNode sys) mapM_ (draw (partSysBuffer sys) (partSysNode sys)) x