HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Fog fading

07-16-2005, 03:00 PM#1
Zoxc
I have some troubles with my fog fading function, when it tries to fade white to nothing, its gets blue on the way :\

Here the functions:
Code:
function Fade takes integer from, integer to, integer alpha returns integer
    local real diff = 0
    if to > from then
        set diff = to-from
    else
        set diff = from-to
    endif
    set diff = ((diff/255)*alpha)
    if to > from then
        return R2I( from + diff )
    else
        return R2I( from - diff )
    endif
    
endfunction

function FogFade takes integer s, integer e, integer d, integer r, integer g, integer b returns nothing
    local integer steps = 255
    local integer cur = 0
    local integer setr
    local integer setg
    local integer setb
    local integer sets
    local integer sete
    local integer setd
    local integer fromred
    local integer fromgreen
    local integer fromblue
    local integer froms
    local integer frome
    local integer fromd
    
    call StoreInteger(udg_WeatherSystem, "General", "ExitFogFade", 1)
    
    call PolledWait(0.5)
    
    call StoreInteger(udg_WeatherSystem, "General", "ExitFogFade", 0)
    
    set fromred = GetStoredInteger(udg_WeatherSystem, "General", "FogR")
    set fromgreen = GetStoredInteger(udg_WeatherSystem, "General", "FogG")
    set fromblue = GetStoredInteger(udg_WeatherSystem, "General", "FogB")
    set froms = GetStoredInteger(udg_WeatherSystem, "General", "FogS")
    set frome = GetStoredInteger(udg_WeatherSystem, "General", "FogE")
    set fromd = GetStoredInteger(udg_WeatherSystem, "General", "FogD")
    loop
        exitwhen ((cur > steps) or (GetStoredInteger(udg_WeatherSystem, "General", "ExitFogFade") == 1 ))
        set setr = Fade(fromred, r, cur)
        set setg = Fade(fromgreen, g, cur)
        set setb = Fade(fromblue, b, cur)
        set sets = Fade(froms, s, cur)
        set sete = Fade(frome, e, cur)
        set setd = Fade(fromd, d, cur)
        call SetTerrainFogExBJ(0, sets, sete, setd, setr,setg,setb)
        call SetFogColor(setr,setg,setb,sets, sete, setd)
        call TriggerSleepAction(0.005)
        
        set cur = cur+1
    endloop
endfunction

Here is the SetFogColor function if you wondered was that was:
Code:
function SetFogColor takes integer r, integer g, integer b , integer s, integer e, integer d returns nothing
    call StoreInteger(udg_WeatherSystem, "General", "FogR", r)
    call StoreInteger(udg_WeatherSystem, "General", "FogG", g)
    call StoreInteger(udg_WeatherSystem, "General", "FogB", b)
    call StoreInteger(udg_WeatherSystem, "General", "FogS", s)
    call StoreInteger(udg_WeatherSystem, "General", "FogE", e)
    call StoreInteger(udg_WeatherSystem, "General", "FogD", d)
endfunction

Hope I can get some help here! ( I never come along with fading codes :P )
07-16-2005, 07:20 PM#2
curi
FYI call TriggerSleepAction(0.005) Sleep is inaccurate and always sleeps at least about .25. you need to use timers if you want such short waits.

i don't know why it goes blue. are you sure you're starting with actual white? 255,255,255

another thing is double check you are giving arguments to functions in the correct order everywhere like

call SetTerrainFogExBJ(0, sets, sete, setd, setr,setg,setb)
call SetFogColor(setr,setg,setb,sets, sete, setd)
07-17-2005, 10:03 AM#3
Zoxc
I don't need that short sleep, and I've checked all the arguments. Still when fading from white to white its goes white blue and white agian
07-19-2005, 10:06 PM#4
AFZ
I remember I did something like this but It faded the water color not the fog color.
07-19-2005, 10:11 PM#5
Zoxc
I made a water fading. It uses the same way and works :-/