;Animating Patches

WIDTH = 150
HEIGHT = 150
PAUSE = 0

%%

INIT = {32,32,32}
COLOR1 = {255,0,0}
COLOR2 = {0,255,0}
COLOR3 = {0,0,255}
ERASER = {32,32,32}
ERASER2 = {32,32,32}


%%

DISCRETE IMAGE
DISCRETE SIMULATOR

%%

;Get initial color into image
IMAGE:INIT + SIMULATOR:COLOR1 -> COLOR1
IMAGE:INIT + SIMULATOR:COLOR2 -> COLOR2
IMAGE:INIT + SIMULATOR:COLOR3 -> COLOR3

;If the SIMULATOR color changes, change the IMAGE color
IMAGE:COLOR1 + SIMULATOR:COLOR2 -> COLOR2
IMAGE:COLOR1 + SIMULATOR:COLOR3 -> COLOR3

IMAGE:COLOR2 + SIMULATOR:COLOR1 -> COLOR1
IMAGE:COLOR2 + SIMULATOR:COLOR3 -> COLOR3

IMAGE:COLOR3 + SIMULATOR:COLOR2 -> COLOR2
IMAGE:COLOR3 + SIMULATOR:COLOR1 -> COLOR1


;Randomly drop seeds in initialized SIMULATOR field
SIMULATOR:INIT -> COLOR1*0.000001
SIMULATOR:INIT -> COLOR2*0.000001
SIMULATOR:INIT -> COLOR3*0.000001

;Colors spread probabilistically
SIMULATOR:INIT + 1COLOR1+ -> COLOR1*0.1
SIMULATOR:INIT + 1COLOR2+ -> COLOR2*0.1
SIMULATOR:INIT + 1COLOR3+ -> COLOR3*0.1

SIMULATOR:INIT + 4COLOR1+ -> COLOR1
SIMULATOR:INIT + 4COLOR2+ -> COLOR2
SIMULATOR:INIT + 4COLOR3+ -> COLOR3

;Randomly spawn eraser seeds
;SIMULATOR:COLOR1 + 8COLOR1+ -> ERASER*0.0001
;SIMULATOR:COLOR2 + 8COLOR2+ -> ERASER*0.0001
;SIMULATOR:COLOR3 + 8COLOR3+ -> ERASER*0.0001
SIMULATOR:COLOR1 + 1COLOR2+ + 1COLOR3+ -> ERASER*0.001
SIMULATOR:COLOR2 + 1COLOR3+ + 1COLOR1+ -> ERASER*0.001
SIMULATOR:COLOR3 + 1COLOR1+ + 1COLOR2+ -> ERASER*0.001

;Eraser spreads
SIMULATOR:ERASER -> ERASER2
SIMULATOR:ERASER2 -> INIT

;Erase colors
SIMULATOR:COLOR1 + 1ERASER+ -> ERASER*0.75
SIMULATOR:COLOR2 + 1ERASER+ -> ERASER*0.75
SIMULATOR:COLOR3 + 1ERASER+ -> ERASER*0.75


