/* * Author: Needles * https://steamcommunity.com/profiles/76561198026257137/ */ ::Debug.Print("*** FADE"); ::Fade <- {}; ::Fade.ENT_FADE_IN <- SpawnEntityFromTable("env_fade", { duration = 1.0, holdtime = 1.0, renderamt = 255, rendercolor = "255 255 255", spawnflags = 8, // Fade in, hold forever }); ::Fade.ENT_FADE_OUT <- SpawnEntityFromTable("env_fade", { duration = 1.0, holdtime = 1.0, renderamt = 255, rendercolor = "255 255 255", spawnflags = 1, // Fade out }); ::Fade.timer_onFade <- null; ::Fade.timer_onFadeFull <- null; ::Fade.event_onFade <- ::Events.Event(); ::Fade.event_onFadeFull <- ::Events.Event(); function Fade::Fade(color, fadeInTime, holdTime, fadeOutTime) { // The fade in question EntFireByHandle(::Fade.ENT_FADE_IN, "Color", "" + color.r + " " + color.g + " " + color.b, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_IN, "Alpha", "" + color.a, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_IN, "AddOutput", "duration " + fadeInTime, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_IN, "AddOutput", "holdtime " + holdTime, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_OUT, "Color", "" + color.r + " " + color.g + " " + color.b, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_OUT, "Alpha", "" + color.a, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_OUT, "AddOutput", "duration " + fadeOutTime, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_OUT, "AddOutput", "holdtime " + holdTime, -1.0, null, null); EntFireByHandle(::Fade.ENT_FADE_IN, "Fade", "", 0.0, null, null); EntFireByHandle(::Fade.ENT_FADE_OUT, "Fade", "", fadeInTime + holdTime, null, null); ::Debug.Print("*** FADE - Fade started"); // Reset timers if (::Fade.timer_onFade == null) ::Timers.RemoveTimer(::Fade.timer_onFade); if (::Fade.timer_onFadeFull == null) ::Timers.RemoveTimer(::Fade.timer_onFadeFull); // Fire events ::Timers.AddTimer(fadeInTime, function(params) { ::Debug.Print("*** FADE - Fade event fired"); ::Fade.event_onFade.FireListeners({}); }); ::Timers.AddTimer(fadeInTime + holdTime + fadeOutTime, function(params) { ::Debug.Print("*** FADE - Fade event fired"); ::Fade.event_onFadeFull.FireListeners({}); }); }