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)
139 destangle = delta + 2 * delta2 * phasepos;
141 destangle_x = -destangle_x;
145 v.x -= 360 *
floor((v.x - destangle_x) / 360 + 0.5);
146 v.y -= 360 *
floor((v.y - destangle_y) / 360 + 0.5);
147 v.z -= 360 *
floor((v.z - destangle_z) / 360 + 0.5);
148 this.
owner.angles = v;
149 angloc = destangle - this.
owner.angles;
151 this.
owner.avelocity = angloc;
154 veloc = nextpos - this.
owner.origin;
159 this.
owner.velocity = veloc;
168 own.move_controller =
NULL;
181 controller.origin =
org;
185 controller.destvec = 2 * control;
186 controller.destvec2 = destin - 2 * control;
197 controller.origin =
org;
200 controller.destvec = destin;
201 controller.destvec2 =
'0 0 0';
210 objerror (
this,
"No speed is defined!");
220 traveltime = 2 *
vlen(tcontrol - this.
origin) / tspeed;
223 traveltime = 2 *
vlen(tcontrol - tdest) / tspeed;
226 traveltime =
vlen(tdest - this.
origin) / tspeed;
233 if (traveltime < 0.1)
245 controller =
new_pure(SUB_CalcMove_controller);
247 controller.owner =
this;
253 controller.finaldest = (tdest +
'0 0 0.125');
254 controller.animstate_starttime =
time;
255 controller.animstate_endtime =
time + traveltime;
273 objerror (
this,
"No speed is defined!");
286 delta = tdest - this.
origin;
294 traveltime =
vlen (delta) / tspeed;
312 this.
velocity = delta * (1/traveltime);
350 objerror (
this,
"No speed is defined!");
353 this.angles_x -= 360 *
floor((this.angles_x - destangle_x) / 360 + 0.5);
355 this.angles_z -= 360 *
floor((this.angles_z - destangle_z) / 360 + 0.5);
365 traveltime =
vlen (delta) / tspeed;
376 if (traveltime < 0.1)
383 this.
avelocity = delta * (1 / traveltime);
395 if(e.angles.x != 0 || e.angles.z != 0 || e.avelocity.x != 0 || e.avelocity.z != 0)
397 e.maxs =
'1 1 1' *
vlen(
398 '1 0 0' *
max(-e.mins.x, e.maxs.x) +
399 '0 1 0' *
max(-e.mins.y, e.maxs.y) +
400 '0 0 1' *
max(-e.mins.z, e.maxs.z)
404 else if(e.angles.y != 0 || e.avelocity.y != 0)
407 '1 0 0' *
max(-e.mins.x, e.maxs.x) +
408 '0 1 0' *
max(-e.mins.y, e.maxs.y)
411 e.mins_x = -e.maxs.x;
412 e.mins_y = -e.maxs.x;
417 setsize(e, e.mins, e.maxs);
426 precache_model(this.
model);
427 if(this.
mins !=
'0 0 0' || this.
maxs !=
'0 0 0')
431 _setmodel(
this, this.
model);
432 setsize(
this, mi, ma);
435 _setmodel(
this, this.
model);
439 setorigin(
this, this.
origin);
459 if(
vdist(near_point - client.origin, <,
this.loddistance1))
526 setsize(
this, mi, ma);
586 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)