129 lines
3.1 KiB
C++
129 lines
3.1 KiB
C++
|
#include "cbase.h"
|
||
|
#include "asw_door_padding.h"
|
||
|
|
||
|
// memdbgon must be the last include file in a .cpp file!!!
|
||
|
#include "tier0/memdbgon.h"
|
||
|
|
||
|
BEGIN_DATADESC(CASW_Door_Padding)
|
||
|
|
||
|
END_DATADESC()
|
||
|
|
||
|
LINK_ENTITY_TO_CLASS(asw_door_padding, CASW_Door_Padding);
|
||
|
PRECACHE_REGISTER( asw_door_padding );
|
||
|
|
||
|
#define SINGLE_DOOR_PADDING "models/swarm/doors/swarm_singledoor_padding.mdl"
|
||
|
|
||
|
|
||
|
CASW_Door_Padding::~CASW_Door_Padding( void )
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void CASW_Door_Padding::Spawn()
|
||
|
{
|
||
|
BaseClass::Spawn();
|
||
|
|
||
|
SetCollisionGroup(ASW_COLLISION_GROUP_BLOCK_DRONES);
|
||
|
SetModel( SINGLE_DOOR_PADDING );
|
||
|
AddEffects( EF_NODRAW );
|
||
|
|
||
|
SetSolid(SOLID_VPHYSICS);
|
||
|
VPhysicsInitShadow(false, false);
|
||
|
}
|
||
|
|
||
|
void CASW_Door_Padding::Precache()
|
||
|
{
|
||
|
PrecacheModel(SINGLE_DOOR_PADDING);
|
||
|
|
||
|
BaseClass::Precache();
|
||
|
}
|
||
|
|
||
|
void CASW_Door_Padding::OnRestore( void )
|
||
|
{
|
||
|
BaseClass::OnRestore();
|
||
|
|
||
|
}
|
||
|
|
||
|
CASW_Door_Padding* CASW_Door_Padding::CreateDoorPadding( CASW_Door *pDoor )
|
||
|
{
|
||
|
if (!pDoor || !pDoor->CollisionProp())
|
||
|
return NULL;
|
||
|
|
||
|
CASW_Door_Padding *pPadding = (CASW_Door_Padding *)CreateEntityByName( "asw_door_padding" );
|
||
|
//pPadding->SetAbsAngles( pDoor->GetAbsAngles() );
|
||
|
//pPadding->SetAbsOrigin( pDoor->GetAbsOrigin() );
|
||
|
pPadding->Spawn();
|
||
|
pPadding->SetOwnerEntity( pDoor );
|
||
|
pPadding->SetParent(pDoor);
|
||
|
pPadding->SetLocalOrigin(vec3_origin);
|
||
|
pPadding->SetLocalAngles(QAngle(0,90,0));
|
||
|
UTIL_SetOrigin( pDoor, pDoor->GetAbsOrigin() );
|
||
|
|
||
|
return pPadding;
|
||
|
}
|
||
|
|
||
|
// ==========================================================================
|
||
|
|
||
|
BEGIN_DATADESC(CASW_Fallen_Door_Padding)
|
||
|
|
||
|
END_DATADESC()
|
||
|
|
||
|
LINK_ENTITY_TO_CLASS(asw_fallen_door_padding, CASW_Fallen_Door_Padding);
|
||
|
PRECACHE_REGISTER( asw_fallen_door_padding );
|
||
|
|
||
|
#define SINGLE_DOOR_FALLEN "models/swarm/doors/swarm_singledoor_fallen_padding.mdl"
|
||
|
|
||
|
void CASW_Fallen_Door_Padding::Spawn()
|
||
|
{
|
||
|
BaseClass::BaseClass::Spawn();
|
||
|
|
||
|
SetCollisionGroup(COLLISION_GROUP_NONE);
|
||
|
SetModel( SINGLE_DOOR_FALLEN );
|
||
|
AddEffects( EF_NODRAW );
|
||
|
SetSolid(SOLID_VPHYSICS);
|
||
|
VPhysicsInitShadow(false, false);
|
||
|
}
|
||
|
|
||
|
void CASW_Fallen_Door_Padding::Precache()
|
||
|
{
|
||
|
PrecacheModel(SINGLE_DOOR_FALLEN);
|
||
|
|
||
|
BaseClass::Precache();
|
||
|
}
|
||
|
|
||
|
CASW_Fallen_Door_Padding* CASW_Fallen_Door_Padding::CreateFallenDoorPadding( CASW_Door *pDoor )
|
||
|
{
|
||
|
if (!pDoor || !pDoor->CollisionProp())
|
||
|
return NULL;
|
||
|
|
||
|
CASW_Fallen_Door_Padding *pPadding = (CASW_Fallen_Door_Padding *)CreateEntityByName( "asw_fallen_door_padding" );
|
||
|
QAngle ang = pDoor->GetAbsAngles();
|
||
|
if ( pDoor->DoorNeedsFlip())
|
||
|
ang[YAW] -= 180;
|
||
|
if (pDoor->m_bFlipped)
|
||
|
ang[YAW] -= 90;
|
||
|
else
|
||
|
ang[YAW] += 90;
|
||
|
pPadding->SetAbsAngles( ang );
|
||
|
Vector vecPos = pDoor->GetAbsOrigin();
|
||
|
//vecPos.z -= 15;
|
||
|
pPadding->SetAbsOrigin( vecPos );
|
||
|
pPadding->Spawn();
|
||
|
//pPadding->SetOwnerEntity( pDoor );
|
||
|
//UTIL_SetOrigin( pPadding, pDoor->GetAbsOrigin() );
|
||
|
|
||
|
return pPadding;
|
||
|
}
|
||
|
|
||
|
int CASW_Fallen_Door_Padding::ShouldTransmit( const CCheckTransmitInfo *pInfo )
|
||
|
{
|
||
|
return FL_EDICT_ALWAYS;
|
||
|
}
|
||
|
|
||
|
int CASW_Fallen_Door_Padding::UpdateTransmitState()
|
||
|
{
|
||
|
return SetTransmitState( FL_EDICT_ALWAYS );
|
||
|
}
|