16 void viewloc_think(
entity this)
74 WriteHeader(MSG_ENTITY, ENT_CLIENT_VIEWLOC_TRIGGER);
81 WriteVector(MSG_ENTITY, this.
origin);
86 void viewloc_init(
entity this)
90 if(e.classname ==
"target_viewlocation_start")
96 if(e.classname ==
"target_viewlocation_end")
102 if(!this.
enemy) {
LOG_INFO(
"^1FAIL!");
delete(
this);
return; }
107 Net_LinkEntity(
this,
false, 0, trigger_viewloc_send);
116 if(this.
target ==
"") {
LOG_INFO(
"^1FAIL!");
delete(
this);
return; }
124 WriteHeader(MSG_ENTITY, ENT_CLIENT_VIEWLOC);
128 WriteVector(MSG_ENTITY, this.
origin);
130 WriteAngleVector(MSG_ENTITY, this.
angles);
136 void viewloc_link(
entity this)
139 this.angles_y = this.angle;
140 Net_LinkEntity(
this,
false, 0, viewloc_send);
157 spawnfunc_target_viewlocation_start(
this);
162 void trigger_viewloc_updatelink(
entity this)
168 NET_HANDLE(ENT_CLIENT_VIEWLOC_TRIGGER,
bool isnew)
172 float point1 = ReadShort();
173 float point2 = ReadShort();
178 this.
origin = ReadVector();
187 setthink(
this, trigger_viewloc_updatelink);
195 this.
cnt = ReadByte();
197 this.
origin = ReadVector();
200 this.
movedir = ReadAngleVector();
204 this.
classname = ((this.
cnt == 2) ?
"target_viewlocation_end" :
"target_viewlocation_start");
#define REGISTER_NET_LINKED(id)
#define EXACTTRIGGER_INIT
#define FOREACH_CLIENT(cond, body)
#define NET_HANDLE(id, param)
spawnfunc(info_player_attacker)
ERASEABLE float boxesoverlap(vector m1, vector m2, vector m3, vector m4)
requires that m2>m1 in all coordinates, and that m4>m3
float WarpZoneLib_BoxTouchesBrush(vector mi, vector ma, entity e, entity ig)
vector(float skel, float bonenum) _skel_get_boneabs_hidden
void InitializeEntity(entity e, void(entity this) func, int order)