8 if(self.bgmscriptangular)
12 self.fld = self.saved;
14 if(self.lodmodelindex1)
16 if(autocvar_cl_modeldetailreduction <= 0)
18 if(self.lodmodelindex2 && autocvar_cl_modeldetailreduction <= -2)
19 self.modelindex = self.lodmodelindex2;
20 else if(autocvar_cl_modeldetailreduction <= -1)
21 self.modelindex = self.lodmodelindex1;
23 self.modelindex = self.lodmodelindex0;
27 float distance = vlen(NearestPointOnBox(self, view_origin) - view_origin);
28 f = (distance * current_viewzoom + 100.0) * autocvar_cl_modeldetailreduction;
29 f *= 1.0 / bound(0.01, view_quality, 1);
30 if(self.lodmodelindex2 && f > self.loddistance2)
31 self.modelindex = self.lodmodelindex2;
32 else if(f > self.loddistance1)
33 self.modelindex = self.lodmodelindex1;
35 self.modelindex = self.lodmodelindex0;
39 InterpolateOrigin_Do();
41 self.saved = self.fld;
46 if(self.lip < 0) // < 0: alpha goes from 1 to 1-|lip| when toggled (toggling subtracts lip)
47 self.alpha = 1 + self.lip * f;
48 else // > 0: alpha goes from 1-|lip| to 1 when toggled (toggling adds lip)
49 self.alpha = 1 - self.lip * (1 - f);
50 self.fld = self.fld + self.movedir * f;
55 if(self.alpha >= ALPHA_MIN_VISIBLE)
56 self.drawmask = MASK_NORMAL;
61 void Ent_Wall_Remove()
64 strunzone(self.bgmscript);
65 self.bgmscript = string_null;
73 InterpolateOrigin_Undo();
74 self.iflags = IFLAG_ANGLES | IFLAG_ORIGIN;
76 if(self.bgmscriptangular)
80 self.fld = self.saved;
87 self.colormap = ReadShort();
94 self.origin_x = ReadCoord();
95 self.origin_y = ReadCoord();
96 self.origin_z = ReadCoord();
97 setorigin(self, self.origin);
104 self.angles_x = ReadAngle();
105 self.angles_y = ReadAngle();
106 self.angles_z = ReadAngle();
109 self.angles = '0 0 0';
116 self.lodmodelindex0 = ReadShort();
117 self.loddistance1 = ReadShort();
118 self.lodmodelindex1 = ReadShort();
119 self.loddistance2 = ReadShort();
120 self.lodmodelindex2 = ReadShort();
124 self.modelindex = ReadShort();
125 self.loddistance1 = 0;
126 self.loddistance2 = 0;
128 self.solid = ReadByte();
129 self.scale = ReadShort() / 256.0;
132 self.mins_x = ReadCoord();
133 self.mins_y = ReadCoord();
134 self.mins_z = ReadCoord();
135 self.maxs_x = ReadCoord();
136 self.maxs_y = ReadCoord();
137 self.maxs_z = ReadCoord();
140 self.mins = self.maxs = '0 0 0';
141 setsize(self, self.mins, self.maxs);
144 strunzone(self.bgmscript);
145 self.bgmscript = ReadString();
146 if(substring(self.bgmscript, 0, 1) == "<")
148 self.bgmscript = strzone(substring(self.bgmscript, 1, -1));
149 self.bgmscriptangular = 1;
153 self.bgmscript = strzone(self.bgmscript);
154 self.bgmscriptangular = 0;
156 if(self.bgmscript != "")
158 self.bgmscriptattack = ReadByte() / 64.0;
159 self.bgmscriptdecay = ReadByte() / 64.0;
160 self.bgmscriptsustain = ReadByte() / 255.0;
161 self.bgmscriptrelease = ReadByte() / 64.0;
162 self.movedir_x = ReadCoord();
163 self.movedir_y = ReadCoord();
164 self.movedir_z = ReadCoord();
165 self.lip = ReadByte() / 255.0;
167 BGMScript_InitEntity(self);
170 InterpolateOrigin_Note();
172 self.saved = self.fld;
174 self.entremove = Ent_Wall_Remove;
175 self.draw = Ent_Wall_Draw;