etqw-sdk/source/game/Teleporter.h

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