@name Compound Gradient
@inputs Scr:wirelink Trigger:entity
@persist [Start End]:array Count
@outputs Iteration
@trigger None
interval(1000/15)

if(first() | changed(Scr)) {
    Scr:egpClear()
    Count=5
    for(I=1,Count) {
        Scr:egpBox(I,vec2(256),vec2(768))
        local Color=randvec(vec(),vec(255))
        local EndColor=randvec(vec(),vec(255))
        Scr:egpColor(I,Color) #vec4(32,32,32,128))
        Scr:egpMaterial(I,"gui/gradient_up")
        Scr:egpAngle(I,(I/Count)*360)
        Start[I,vector]=Color
        End[I,vector]=EndColor
    }
    Scr:egpText(Count+1,"BGCG by Scriptis",vec2())
    
    Scr:egpText(Count+2,Count+" layers",vec2(0,512))
    Scr:egpAlign(Count+2,0,2)
    
    
}

Iteration=clamp(Iteration+0.02,0,1)
for(I=1,Count) {
    Scr:egpColor(I,Iteration*(End[I,vector]-Start[I,vector])+Start[I,vector])
}

if(Iteration==1) {
    for(I=1,Count) {
        local Color=randvec(vec(),vec(255))
        Start[I,vector]=End[I,vector]
        End[I,vector]=Color
    }
    Iteration=0
}
