81 lines
1.8 KiB
C
81 lines
1.8 KiB
C
|
// Copyright (C) 2007 Id Software, Inc.
|
||
|
//
|
||
|
|
||
|
#ifndef __TELEPORTER_H__
|
||
|
#define __TELEPORTER_H__
|
||
|
|
||
|
#include "physics/Physics_StaticMulti.h"
|
||
|
|
||
|
class sdTeleporter : public idEntity {
|
||
|
public:
|
||
|
CLASS_PROTOTYPE( sdTeleporter );
|
||
|
|
||
|
sdTeleporter( void );
|
||
|
~sdTeleporter( void );
|
||
|
|
||
|
void Spawn( void );
|
||
|
virtual void Think( void );
|
||
|
|
||
|
virtual bool StartSynced( void ) const { return true; }
|
||
|
|
||
|
virtual bool WantsTouch( void ) const { return true; }
|
||
|
virtual void OnTouch( idEntity *other, const trace_t& trace );
|
||
|
|
||
|
void Event_EnableTeam( const char* team );
|
||
|
void Event_DisableTeam( const char* team );
|
||
|
void Event_FinishTeleport( int spawnId );
|
||
|
|
||
|
void Latch( idEntity* ent );
|
||
|
|
||
|
void CancelTeleport( idEntity* ent );
|
||
|
void FinishTeleport( idEntity* ent );
|
||
|
|
||
|
virtual void PostMapSpawn( void );
|
||
|
|
||
|
idEntity* GetViewEntity( void ) { return viewLocation; }
|
||
|
|
||
|
void GetTargetPosition( idVec3& origin, idMat3& axis );
|
||
|
|
||
|
void GetTeleportEndPoint( idEntity* ent, idVec3& org, idMat3& axes );
|
||
|
|
||
|
protected:
|
||
|
idList< idEntityPtr< idEntity > > latches;
|
||
|
|
||
|
struct teamInfo_t {
|
||
|
bool enabled;
|
||
|
};
|
||
|
|
||
|
struct teleportParms_t {
|
||
|
idVec3 location;
|
||
|
idMat3 orientation;
|
||
|
|
||
|
idVec3 linearVelocity;
|
||
|
idVec3 angularVelocity;
|
||
|
|
||
|
int spawnId;
|
||
|
};
|
||
|
|
||
|
void StartTeleport( const teleportParms_t& parms );
|
||
|
void FinishTeleport( const teleportParms_t& parms );
|
||
|
|
||
|
idPhysics_StaticMulti staticPhysics;
|
||
|
|
||
|
idList< teamInfo_t > teamInfo;
|
||
|
idList< teleportParms_t > teleportInfo;
|
||
|
|
||
|
idEntityPtr< idEntity > storageLocation;
|
||
|
idEntityPtr< idEntity > viewLocation;
|
||
|
int delay;
|
||
|
|
||
|
idVec3 exitVelocity;
|
||
|
|
||
|
float deployReverse;
|
||
|
float deployLength;
|
||
|
float deployWidth;
|
||
|
|
||
|
const sdDeclDamage* telefragDamage;
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|