2 .float bgmscriptangular;
3 .float lodmodelindex0, lodmodelindex1, lodmodelindex2;
4 .float loddistance1, loddistance2;
13 if(self.lodmodelindex1)
19 self.modelindex = self.lodmodelindex0;
20 else if(d == 2 || !self.lodmodelindex2)
21 self.modelindex = self.lodmodelindex1;
23 self.modelindex = self.lodmodelindex2;
27 d = vlen(NearestPointOnBox(self, view_origin) - view_origin);
28 if(d < self.loddistance1)
29 self.modelindex = self.lodmodelindex0;
30 else if(!self.lodmodelindex2 || d < self.loddistance2)
31 self.modelindex = self.lodmodelindex1;
33 self.modelindex = self.lodmodelindex2;
37 InterpolateOrigin_Do();
39 if(self.bgmscriptangular)
48 if(self.lip < 0) // < 0: alpha goes from 1 to 1-|lip| when toggled (toggling subtracts lip)
49 self.alpha = 1 + self.lip * f;
50 else // > 0: alpha goes from 1-|lip| to 1 when toggled (toggling adds lip)
51 self.alpha = 1 - self.lip * (1 - f);
52 self.fld = self.fld + self.movedir * f;
57 if(self.alpha >= ALPHA_MIN_VISIBLE)
63 void Ent_Wall_Remove()
66 strunzone(self.bgmscript);
67 self.bgmscript = string_null;
73 InterpolateOrigin_Undo();
74 self.iflags = IFLAG_ANGLES;
81 self.colormap = ReadShort();
88 self.origin_x = ReadCoord();
89 self.origin_y = ReadCoord();
90 self.origin_z = ReadCoord();
97 self.angles_x = ReadAngle();
98 self.angles_y = ReadAngle();
99 self.angles_z = ReadAngle();
102 self.angles = '0 0 0';
109 self.lodmodelindex0 = ReadShort();
110 self.loddistance1 = ReadShort();
111 self.lodmodelindex1 = ReadShort();
112 self.loddistance2 = ReadShort();
113 self.lodmodelindex2 = ReadShort();
117 self.modelindex = ReadShort();
118 self.loddistance1 = 0;
119 self.loddistance2 = 0;
121 self.solid = ReadByte();
122 self.scale = ReadShort() / 256.0;
125 self.mins_x = ReadCoord();
126 self.mins_y = ReadCoord();
127 self.mins_z = ReadCoord();
128 self.maxs_x = ReadCoord();
129 self.maxs_y = ReadCoord();
130 self.maxs_z = ReadCoord();
133 self.mins = self.maxs = '0 0 0';
136 strunzone(self.bgmscript);
137 self.bgmscript = ReadString();
138 if(substring(self.bgmscript, 0, 1) == "<")
140 self.bgmscript = strzone(substring(self.bgmscript, 1, -1));
141 self.bgmscriptangular = 1;
145 self.bgmscript = strzone(self.bgmscript);
146 self.bgmscriptangular = 0;
148 if(self.bgmscript != "")
150 self.bgmscriptattack = ReadByte() / 64.0;
151 self.bgmscriptdecay = ReadByte() / 64.0;
152 self.bgmscriptsustain = ReadByte() / 255.0;
153 self.bgmscriptrelease = ReadByte() / 64.0;
154 self.movedir_x = ReadCoord();
155 self.movedir_y = ReadCoord();
156 self.movedir_z = ReadCoord();
157 self.lip = ReadByte() / 255.0;
159 BGMScript_InitEntity(self);
162 InterpolateOrigin_Note();
164 self.entremove = Ent_Wall_Remove;
165 self.draw = Ent_Wall_Draw;