Warcraft III resources & community, 2003–2006 · archived

UnitModulateColor

not rated
Submitted by AltSubmitterFunctions0 downloads
This function modulates the color of a unit over the given amout of time. It takes the unit, start and end RGB values and the time in which it is to occur.

Requires Local Handle Vars

Source

function H2U takes handle h returns unit
        return h
        return null
endfunction

function UnitModulateColor_child takes nothing returns nothing
        local timer t = GetExpiredTimer()
        local unit u = H2U(GetHandleHandle(t,"unit"))
        local integer red = (GetHandleInt(t,"red")) - GetHandleInt(t,"Ired")
        local integer blue = (GetHandleInt(t,"blue")) - GetHandleInt(t,"Iblue")
        local integer green = (GetHandleInt(t,"green")) - GetHandleInt(t,"Igreen")
        local integer counter = (GetHandleInt(t,"counter"))
        if (counter >= 0) then
                call SetUnitVertexColor(u,red,blue,green,255)
        else
                call FlushHandleLocals(t)
                call DestroyTimer(t)
        endif
        call SetHandleInt(t,"red",red)
        call SetHandleInt(t,"blue",blue)
        call SetHandleInt(t,"green",green)
        call SetHandleInt(t,"counter",counter - 1)
        set t = null
endfunction

function UnitModulateColor takes unit u, integer startRed,integer startGreen,integer startBlue,integer doneRed,integer doneGreen,integer doneBlue,real time returns nothing
        local timer t = CreateTimer()
        local integer counter = R2I((time/0.05)+1)
        local integer intervalRed = R2I(0.05*((startRed-doneRed)/time))
        local integer intervalBlue = R2I(0.05*((startBlue-doneBlue)/time))
        local integer intervalGreen = R2I(0.05*((startGreen-doneGreen)/time))
        call SetHandleHandle(t,"unit",u)
        call SetHandleInt(t,"Ired",intervalRed)
        call SetHandleInt(t,"Iblue",intervalBlue)
        call SetHandleInt(t,"Igreen",intervalGreen)
        call SetHandleInt(t,"red",startRed)
        call SetHandleInt(t,"blue",startBlue)
        call SetHandleInt(t,"green",startGreen)
        call SetHandleInt(t,"counter",counter)
        call TimerStart(t,0.05,true,function UnitModulateColor_child)
        set t = null
endfunction

Comments

0

No comments.