Code:
function Clockwork:RenderScreenspaceEffects()
if (IsValid(cwClient)) then
local frameTime = FrameTime();
local motionBlurs = {
enabled = true,
blurTable = {}
};
local color = 1;
local isDrunk = cwPly:GetDrunk();
if (!cwKernel:IsChoosingCharacter()) then
if (cwLimb:IsActive() and cwEvent:CanRun("blur", "limb_damage")) then
local headDamage = cwLimb:GetDamage(HITGROUP_HEAD);
motionBlurs.blurTable["health"] = math.Clamp(1 - (headDamage * 0.01), 0, 1);
elseif (cwClient:Health() <= 75) then
if (cwEvent:CanRun("blur", "health")) then
motionBlurs.blurTable["health"] = math.Clamp(
1 - ((cwClient:GetMaxHealth() - cwClient:Health()) * 0.01), 0, 1
);
end;
end;
if (cwClient:Alive()) then
color = math.Clamp(color - ((cwClient:GetMaxHealth() - cwClient:Health()) * 0.01), 0, color);
else
color = 0;
end;
if (cwEvent:CanRun("blur", "isDrunk")) then
if (isDrunk and self.DrunkBlur) then
self.DrunkBlur = math.Clamp(self.DrunkBlur - (frameTime / 10), math.max(1 - (isDrunk / 8), 0.1), 1);
DrawMotionBlur(self.DrunkBlur, 1, 0);
elseif (self.DrunkBlur and self.DrunkBlur < 1) then
self.DrunkBlur = math.Clamp(self.DrunkBlur + (frameTime / 10), 0.1, 1);
motionBlurs.blurTable["isDrunk"] = self.DrunkBlur;
else
self.DrunkBlur = 1;
end;
end;
end;
if (self.FishEyeTexture and cwClient:WaterLevel() > 2) then
render.UpdateScreenEffectTexture();
self.FishEyeTexture:SetFloat("$envmap", 0);
self.FishEyeTexture:SetFloat("$envmaptint", 0);
self.FishEyeTexture:SetFloat("$refractamount", 0.1);
self.FishEyeTexture:SetInt("$ignorez", 1);
render.SetMaterial(self.FishEyeTexture);
render.DrawScreenQuad();
end;
self.ColorModify["$pp_colour_brightness"] = 0;
self.ColorModify["$pp_colour_contrast"] = 1;
self.ColorModify["$pp_colour_colour"] = color;
self.ColorModify["$pp_colour_addr"] = 0;
self.ColorModify["$pp_colour_addg"] = 0;
self.ColorModify["$pp_colour_addb"] = 0;
self.ColorModify["$pp_colour_mulr"] = 0;
self.ColorModify["$pp_colour_mulg"] = 0;
self.ColorModify["$pp_colour_mulb"] = 0;
local systemTable = self.system:FindByID("Color Modify")
local overrideColorMod = systemTable:GetModifyTable();
if (overrideColorMod and overrideColorMod.enabled) then
self.ColorModify["$pp_colour_brightness"] = overrideColorMod.brightness;
self.ColorModify["$pp_colour_contrast"] = overrideColorMod.contrast;
self.ColorModify["$pp_colour_colour"] = overrideColorMod.color;
self.ColorModify["$pp_colour_addr"] = overrideColorMod.addr * 0.025;
self.ColorModify["$pp_colour_addg"] = overrideColorMod.addg * 0.025;
self.ColorModify["$pp_colour_addb"] = overrideColorMod.addg * 0.025;
self.ColorModify["$pp_colour_mulr"] = overrideColorMod.mulr * 0.1;
self.ColorModify["$pp_colour_mulg"] = overrideColorMod.mulg * 0.1;
self.ColorModify["$pp_colour_mulb"] = overrideColorMod.mulb * 0.1;
else
cwPlugin:Call("PlayerSetDefaultColorModify", self.ColorModify);
end;
cwPlugin:Call("PlayerAdjustColorModify", self.ColorModify);
cwPlugin:Call("PlayerAdjustMotionBlurs", motionBlurs);
if (motionBlurs.enabled) then
local addAlpha = nil;
for k, v in pairs(motionBlurs.blurTable) do
if (!addAlpha or v < addAlpha) then
addAlpha = v;
end;
end;
if (addAlpha) then
DrawMotionBlur(math.Clamp(addAlpha, 0.1, 1), 1, 0);
end;
end;
--[[
Hotfix for ColorModify issues on OS X.
--]]
if (system.IsOSX()) then
self.ColorModify["$pp_colour_brightness"] = 0;
self.ColorModify["$pp_colour_contrast"] = 1;
end;
DrawColorModify(self.ColorModify);
end;
end;