64 if (this.
alpha < 0.01)
81 ent.fade_rate = 1/fading_time;
83 ent.nextthink = vanish_time;
131 phasepos = (nexttick - this.animstate_starttime) / traveltime;
133 nextpos = this.
origin + (delta * phasepos) + (delta2 * phasepos * phasepos);
136 if(this.
owner.platmovetype_turn)
138 vector destangle = delta + 2 * delta2 * phasepos;
140 destangle_x = -destangle_x;
144 v.x -= 360 *
floor((v.x - destangle_x) / 360 + 0.5);
145 v.y -= 360 *
floor((v.y - destangle_y) / 360 + 0.5);
146 v.z -= 360 *
floor((v.z - destangle_z) / 360 + 0.5);
147 this.
owner.angles = v;
148 angloc = destangle - this.
owner.angles;
150 this.
owner.avelocity = angloc;
153 veloc = nextpos - this.
owner.origin;
158 this.
owner.velocity = veloc;
167 own.move_controller =
NULL;
180 controller.origin =
org;
184 controller.destvec = 2 * control;
185 controller.destvec2 = destin - 2 * control;
196 controller.origin =
org;
199 controller.destvec = destin;
200 controller.destvec2 =
'0 0 0';
209 objerror (
this,
"No speed is defined!");
219 traveltime = 2 *
vlen(tcontrol - this.
origin) / tspeed;
222 traveltime = 2 *
vlen(tcontrol - tdest) / tspeed;
225 traveltime =
vlen(tdest - this.
origin) / tspeed;
232 if (traveltime < 0.1)
244 controller =
new_pure(SUB_CalcMove_controller);
246 controller.owner =
this;
252 controller.finaldest = (tdest +
'0 0 0.125');
253 controller.animstate_starttime =
time;
254 controller.animstate_endtime =
time + traveltime;
272 objerror (
this,
"No speed is defined!");
285 delta = tdest - this.
origin;
293 traveltime =
vlen (delta) / tspeed;
311 this.
velocity = delta * (1/traveltime);
349 objerror (
this,
"No speed is defined!");
352 this.angles_x -= 360 *
floor((this.angles_x - destangle_x) / 360 + 0.5);
354 this.angles_z -= 360 *
floor((this.angles_z - destangle_z) / 360 + 0.5);
364 traveltime =
vlen (delta) / tspeed;
375 if (traveltime < 0.1)
382 this.
avelocity = delta * (1 / traveltime);
394 if(e.angles.x != 0 || e.angles.z != 0 || e.avelocity.x != 0 || e.avelocity.z != 0)
396 e.maxs =
'1 1 1' *
vlen(
397 '1 0 0' *
max(-e.mins.x, e.maxs.x) +
398 '0 1 0' *
max(-e.mins.y, e.maxs.y) +
399 '0 0 1' *
max(-e.mins.z, e.maxs.z)
403 else if(e.angles.y != 0 || e.avelocity.y != 0)
406 '1 0 0' *
max(-e.mins.x, e.maxs.x) +
407 '0 1 0' *
max(-e.mins.y, e.maxs.y)
410 e.mins_x = -e.maxs.x;
411 e.mins_y = -e.maxs.x;
416 setsize(e, e.mins, e.maxs);
425 precache_model(this.
model);
426 if(this.
mins !=
'0 0 0' || this.
maxs !=
'0 0 0')
430 _setmodel(
this, this.
model);
431 setsize(
this, mi, ma);
434 _setmodel(
this, this.
model);
438 setorigin(
this, this.
origin);
458 if(
vdist(near_point - client.origin, <,
this.loddistance1))
525 setsize(
this, mi, ma);
585 objerror(
this,
"InitMovingBrushTrigger: no brushes found!");
float animstate_starttime
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
#define PHYS_INPUT_FRAMETIME
const int INITPRIO_FINDTARGET
const float SOLID_TRIGGER
ERASEABLE bool fexists(string f)
void SetCustomizer(entity e, bool(entity this, entity client) customizer, void(entity this) uncustomizer)
ERASEABLE float cubic_speedfunc(float startspeedfactor, float endspeedfactor, float spd)
void set_movetype(entity this, int mt)
#define new_pure(class)
purely logical entities (not linked to the area grid)
void SUB_CalcMoveDone(entity this)
void SetMovedir(entity this)
void ApplyMinMaxScaleAngles(entity e)
bool InitMovingBrushTrigger(entity this)
void SUB_CalcMove_controller_setbezier(entity controller, vector org, vector control, vector destin)
void SUB_CalcMove_controller_think(entity this)
void SUB_CalcMove_controller_setlinear(entity controller, vector org, vector destin)
void SUB_CalcAngleMoveEnt(entity ent, vector destangle, float tspeedtype, float tspeed, void(entity this) func)
void SetBrushEntityModel(entity this, bool with_lod)
void SUB_Friction(entity this)
void InitSolidBSPTrigger(entity this)
bool LOD_customize(entity this, entity client)
void SUB_NullThink(entity this)
void SUB_SetFade_Think(entity this)
void SUB_CalcAngleMove(entity this, vector destangle, float tspeedtype, float tspeed, void(entity this) func)
void LOD_uncustomize(entity this)
void SUB_SetFade(entity ent, float vanish_time, float fading_time)
void SUB_CalcMoveEnt(entity ent, vector tdest, float tspeedtype, float tspeed, void(entity this) func)
void SUB_VanishOrRemove(entity ent)
void SUB_CalcMovePause(entity this)
void LODmodel_attach(entity this)
void SUB_CalcMove(entity this, vector tdest, float tspeedtype, float tspeed, void(entity this) func)
void InitTrigger(entity this)
void SUB_CalcMove_Bezier(entity this, vector tcontrol, vector tdest, float tspeedtype, float tspeed, void(entity this) func)
void SUB_CalcAngleMoveDone(entity this)
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt()
ERASEABLE vector RoundPerfectVector(vector v)
ERASEABLE vector NearestPointOnBox(entity box, vector org)
void InitializeEntity(entity e, void(entity this) func, int order)