UnitModulateColor
not ratedThis 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
Requires Local Handle Vars
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
endfunctionNo comments.