X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fwall.qc;h=9da9bb5b658338fdacca81cbc3e7ef2d7dafd90d;hb=21307f327df5609b82d90496c1c6156d636d1c8d;hp=f591268d358919420adcbd57851bf6e98f8b0356;hpb=e090603a32c8cba598f2c54e355cdb5b32b0d986;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/wall.qc b/qcsrc/client/wall.qc index f591268d3..9da9bb5b6 100644 --- a/qcsrc/client/wall.qc +++ b/qcsrc/client/wall.qc @@ -1,17 +1,55 @@ #include "wall.qh" -#include "_all.qh" #include "bgmscript.qh" -#include "../common/util.qh" -#include "../csqcmodellib/interpolate.qh" +#include "../lib/csqcmodel/interpolate.qh" .float alpha; .float scale; .vector movedir; -void Ent_Wall_Draw() +void Ent_Wall_PreDraw() +{SELFPARAM(); + if (self.inactive) + { + self.alpha = 0; + } + else + { + vector org = getpropertyvec(VF_ORIGIN); + if(!checkpvs(org, self)) + self.alpha = 0; + else if(self.fade_start || self.fade_end) { + vector offset = '0 0 0'; + offset_z = self.fade_vertical_offset; + float player_dist = vlen(org - self.origin - 0.5 * (self.mins + self.maxs) + offset); + if (self.fade_end == self.fade_start) + { + if (player_dist >= self.fade_start) + self.alpha = 0; + else + self.alpha = 1; + } + else + { + self.alpha = (self.alpha_min + self.alpha_max * bound(0, + (self.fade_end - player_dist) + / (self.fade_end - self.fade_start), 1)) / 100.0; + } + } + else + { + self.alpha = 1; + } + } + if(self.alpha <= 0) + self.drawmask = 0; + else + self.drawmask = MASK_NORMAL; +} + +void Ent_Wall_Draw(entity this) { float f; var .vector fld; @@ -70,14 +108,14 @@ void Ent_Wall_Draw() } void Ent_Wall_Remove() -{ +{SELFPARAM(); if(self.bgmscript) strunzone(self.bgmscript); self.bgmscript = string_null; } void Ent_Wall() -{ +{SELFPARAM(); int f; var .vector fld; @@ -175,6 +213,12 @@ void Ent_Wall() self.movedir_z = ReadCoord(); self.lip = ReadByte() / 255.0; } + self.fade_start = ReadShort(); + self.fade_end = ReadShort(); + self.alpha_max = ReadShort(); + self.alpha_min = ReadShort(); + self.inactive = ReadShort(); + self.fade_vertical_offset = ReadShort(); BGMScript_InitEntity(self); } @@ -184,4 +228,5 @@ void Ent_Wall() self.entremove = Ent_Wall_Remove; self.draw = Ent_Wall_Draw; + self.predraw = Ent_Wall_PreDraw; }