This repository has been archived on 2022-06-27. You can view files and clone it, but cannot push or open issues or pull requests.
Xash3DArchive/vprogs/ents/triggers/trigger_setviewpoint.c

114 lines
2.3 KiB
C
Raw Normal View History

2007-09-04 22:00:00 +02:00
/*
+=================================+
|TRIGGER_CHANGE_VIEWPOINT|
+=================================+
*/
void() info_viewpoint_destination =
{
trigger_setup();
2007-09-16 22:00:00 +02:00
setorigin(pev, pev->origin);
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
setmodel (pev, "progs/eyes.mdl");
pev->modelindex = 0;
2007-09-04 22:00:00 +02:00
};
void() trigger_change_viewpoint_touch;
void() trigger_change_viewpoint_think1 =
{
2007-09-16 22:00:00 +02:00
pev->touched = FALSE;
pev->touch = trigger_change_viewpoint_touch;
2007-09-04 22:00:00 +02:00
};
void() trigger_change_viewpoint_think =
{
2007-09-16 22:00:00 +02:00
local entity e, oldpev, oldtrig;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
if(pev->touched == TRUE)
2007-09-04 22:00:00 +02:00
{
2007-09-16 22:00:00 +02:00
e = find(world, targetname, pev->target);
//e = pev->triggerer.triggerer.triggerer;
pev->triggerer.triggerer = pev->triggerer;
2007-09-04 22:00:00 +02:00
MsgBegin(SVC_SETVIEW); // Network Protocol: Set Viewpoint Entity
WriteEntity( e); // Write entity to clients.
2007-09-16 22:00:00 +02:00
MsgEnd(MSG_ONE, '0 0 0', pev );
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
//pev->angles = e.mangles;
//pev->fixangle = 1;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
//pev->triggerer.movetype = MOVETYPE_NONE;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->think = trigger_change_viewpoint_think;
pev->nextthink = time + pev->wait1;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->touched = FALSE;
2007-09-04 22:00:00 +02:00
bprint("working\n");
}
2007-09-16 22:00:00 +02:00
else if(pev->touched == FALSE)
2007-09-04 22:00:00 +02:00
{
2007-09-16 22:00:00 +02:00
//pev->triggerer = pev->triggerer.triggerer;
2007-09-04 22:00:00 +02:00
MsgBegin(SVC_SETVIEW); // Network Protocol: Set Viewpoint Entity
2007-09-16 22:00:00 +02:00
WriteEntity(pev->triggerer.triggerer);
MsgEnd(MSG_ONE, '0 0 0', pev );
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->triggerer.movetype = MOVETYPE_WALK;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->triggerer = world;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->touched = TRUE;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->think = trigger_change_viewpoint_think1;
pev->nextthink = time + 2;
2007-09-04 22:00:00 +02:00
}
};
void() trigger_change_viewpoint_touch =
{
if(!(other.flags & FL_CLIENT))
return;
2007-09-16 22:00:00 +02:00
if(pev->touched == FALSE)
2007-09-04 22:00:00 +02:00
{
2007-09-16 22:00:00 +02:00
pev->touched = TRUE;
pev->touch = SUB_Null;
pev->triggerer = other;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->think = trigger_change_viewpoint_think;
pev->nextthink = time + pev->delay;
2007-09-04 22:00:00 +02:00
bprint("touched");
}
};
void() trigger_change_viewpoint_use =
{
2007-09-16 22:00:00 +02:00
if(pev->touched == TRUE)
2007-09-04 22:00:00 +02:00
return;
2007-09-16 22:00:00 +02:00
pev->think = trigger_change_viewpoint_think;
pev->nextthink = time + pev->delay;
2007-09-04 22:00:00 +02:00
};
void() trigger_change_viewpoint =
{
trigger_setup();
2007-09-16 22:00:00 +02:00
if(!pev->delay)
pev->delay = 1;
if(!pev->wait)
pev->wait = 1;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
pev->touch = trigger_change_viewpoint_touch;
pev->use = trigger_change_viewpoint_use ;
2007-09-04 22:00:00 +02:00
2007-09-16 22:00:00 +02:00
if(!pev->target)
2007-09-04 22:00:00 +02:00
{
objerror("trigger_change_viewpoint: NO TARGET");
2007-09-16 22:00:00 +02:00
pev->solid = SOLID_NOT;
2007-09-04 22:00:00 +02:00
}
};