void CBeam::Precache( void ) { if( pev->owner ) SetStartEntity( ENTINDEX( pev->owner ) ); if( pev->aiment ) SetEndEntity( ENTINDEX( pev->aiment ) ); }
void CBeam::EntsInit( int startIndex, int endIndex ) { SetType( BEAM_ENTS ); SetStartEntity( startIndex ); SetEndEntity( endIndex ); SetStartAttachment( 0 ); SetEndAttachment( 0 ); RelinkBeam(); }
void CBeam::LaserInit( CBaseEntity *pStartEntity, CBaseEntity *pEndEntity ) { SetType( BEAM_LASER ); m_nNumBeamEnts = 2; SetStartEntity( pStartEntity ); SetEndEntity( pEndEntity ); SetStartAttachment( 0 ); SetEndAttachment( 0 ); RelinkBeam(); }
void CE_CBeam::EntsInit( CEntity *pStartEntity, CEntity *pEndEntity ) { SetType( BEAM_ENTS ); m_nNumBeamEnts = 2; SetStartEntity( pStartEntity ); SetEndEntity( pEndEntity ); SetStartAttachment( 0 ); SetEndAttachment( 0 ); RelinkBeam(); }
void CBeam::Precache( void ) { if ( GetOwnerEntity() ) { SetStartEntity( GetOwnerEntity() ); } if ( m_hEndEntity.Get() ) { SetEndEntity( m_hEndEntity ); } }
void CLightning::BeamUpdateVars( void ) { int beamType; int pointStart, pointEnd; edict_t *pStart = FIND_ENTITY_BY_TARGETNAME ( NULL, STRING(m_iszStartEntity) ); edict_t *pEnd = FIND_ENTITY_BY_TARGETNAME ( NULL, STRING(m_iszEndEntity) ); pointStart = IsPointEntity( CBaseEntity::Instance(pStart) ); pointEnd = IsPointEntity( CBaseEntity::Instance(pEnd) ); pev->skin = 0; pev->sequence = 0; pev->rendermode = 0; pev->flags |= FL_CUSTOMENTITY; pev->model = m_iszSpriteName; SetTexture( m_spriteTexture ); beamType = BEAM_ENTS; if ( pointStart || pointEnd ) { if ( !pointStart ) // One point entity must be in pStart { edict_t *pTemp; // Swap start & end pTemp = pStart; pStart = pEnd; pEnd = pTemp; int swap = pointStart; pointStart = pointEnd; pointEnd = swap; } if ( !pointEnd ) beamType = BEAM_ENTPOINT; else beamType = BEAM_POINTS; } SetType( beamType ); if ( beamType == BEAM_POINTS || beamType == BEAM_ENTPOINT || beamType == BEAM_HOSE ) { SetStartPos( pStart->v.origin ); if ( beamType == BEAM_POINTS || beamType == BEAM_HOSE ) SetEndPos( pEnd->v.origin ); else SetEndEntity( ENTINDEX(pEnd) ); } else { SetStartEntity( ENTINDEX(pStart) ); SetEndEntity( ENTINDEX(pEnd) ); } RelinkBeam(); SetWidth( m_boltWidth ); SetNoise( m_noiseAmplitude ); SetFrame( m_frameStart ); SetScrollRate( m_speed ); if ( pev->spawnflags & SF_BEAM_SHADEIN ) SetFlags( BEAM_FSHADEIN ); else if ( pev->spawnflags & SF_BEAM_SHADEOUT ) SetFlags( BEAM_FSHADEOUT ); }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CEnvBeam::BeamUpdateVars( void ) { CBaseEntity *pStart = gEntList.FindEntityByName( NULL, m_iszStartEntity ); CBaseEntity *pEnd = gEntList.FindEntityByName( NULL, m_iszEndEntity ); if (( pStart == NULL ) || ( pEnd == NULL )) { return; } m_nNumBeamEnts = 2; m_speed = (int)clamp( m_speed, 0, MAX_BEAM_SCROLLSPEED ); // NOTE: If the end entity is the beam itself (and the start entity // isn't *also* the beam itself, we've got problems. This is a problem // because SetAbsStartPos actually sets the entity's origin. if ( ( pEnd == this ) && ( pStart != this ) ) { DevMsg("env_beams cannot have the end entity be the beam itself\n" "unless the start entity is also the beam itself!\n" ); Assert(0); } SetModelName( m_iszSpriteName ); SetTexture( m_spriteTexture ); SetType( BEAM_ENTPOINT ); if ( IsStaticPointEntity( pStart ) ) { SetAbsStartPos( pStart->GetAbsOrigin() ); } else { SetStartEntity( pStart ); } if ( IsStaticPointEntity( pEnd ) ) { SetAbsEndPos( pEnd->GetAbsOrigin() ); } else { SetEndEntity( pEnd ); } RelinkBeam(); SetWidth( MIN(MAX_BEAM_WIDTH, m_boltWidth) ); SetNoise( MIN(MAX_BEAM_NOISEAMPLITUDE, m_noiseAmplitude) ); SetFrame( m_frameStart ); SetScrollRate( m_speed ); if ( m_spawnflags & SF_BEAM_SHADEIN ) { SetBeamFlags( FBEAM_SHADEIN ); } else if ( m_spawnflags & SF_BEAM_SHADEOUT ) { SetBeamFlags( FBEAM_SHADEOUT ); } }