void CWeaponPortalgun::Think( void ) { //Allow descended classes a chance to do something before the think function if ( PreThink() ) return; SetNextThink( gpGlobals->curtime + 0.1f ); CPortal_Player *pPlayer = ToPortalPlayer( GetOwner() ); if ( !pPlayer || pPlayer->GetActiveWeapon() != this ) { m_fCanPlacePortal1OnThisSurface = 1.0f; m_fCanPlacePortal2OnThisSurface = 1.0f; return; } // Test portal placement m_fCanPlacePortal1OnThisSurface = ( ( m_bCanFirePortal1 ) ? ( FirePortal( false, 0, 1 ) ) : ( 0.0f ) ); m_fCanPlacePortal2OnThisSurface = ( ( m_bCanFirePortal2 ) ? ( FirePortal( true, 0, 2 ) ) : ( 0.0f ) ); // Draw obtained portal color chips int iSlot1State = ( ( m_bCanFirePortal1 ) ? ( 0 ) : ( 1 ) ); // FIXME: Portal gun might have only red but not blue; int iSlot2State = ( ( m_bCanFirePortal2 ) ? ( 0 ) : ( 1 ) ); SetBodygroup( 1, iSlot1State ); SetBodygroup( 2, iSlot2State ); if ( pPlayer->GetViewModel() ) { pPlayer->GetViewModel()->SetBodygroup( 1, iSlot1State ); pPlayer->GetViewModel()->SetBodygroup( 2, iSlot2State ); } // HACK HACK! Used to make the gun visually change when going through a cleanser! if ( m_fEffectsMaxSize1 > 4.0f ) { m_fEffectsMaxSize1 -= gpGlobals->frametime * 400.0f; if ( m_fEffectsMaxSize1 < 4.0f ) m_fEffectsMaxSize1 = 4.0f; } if ( m_fEffectsMaxSize2 > 4.0f ) { m_fEffectsMaxSize2 -= gpGlobals->frametime * 400.0f; if ( m_fEffectsMaxSize2 < 4.0f ) m_fEffectsMaxSize2 = 4.0f; } }
void C_WeaponPortalgun::ClientThink( void ) { CPortal_Player *pPlayer = ToPortalPlayer( GetOwner() ); if ( pPlayer && dynamic_cast<C_WeaponPortalgun*>( pPlayer->GetActiveWeapon() ) ) { if ( m_EffectState == EFFECT_NONE ) { //DoEffect( ( GetPlayerHeldEntity( pPlayer ) ) ? ( EFFECT_HOLDING ) : ( EFFECT_READY ) ); } if ( m_EffectState != EFFECT_NONE ) { // Showing a special color for holding is confusing... just use the last fired color -Jeep //if ( m_bOpenProngs ) //{ // //Turn on the grav light // m_Parameters[PORTALGUN_GRAVLIGHT].SetVisibleViewModel(); // m_Parameters[PORTALGUN_GRAVLIGHT_WORLD].SetVisible3rdPerson(); // m_Parameters[PORTALGUN_PORTAL1LIGHT].SetVisibleViewModel( false ); // m_Parameters[PORTALGUN_PORTAL1LIGHT_WORLD].SetVisible3rdPerson( false ); // m_Parameters[PORTALGUN_PORTAL2LIGHT].SetVisibleViewModel( false ); // m_Parameters[PORTALGUN_PORTAL2LIGHT_WORLD].SetVisible3rdPerson( false ); //} //else { m_Parameters[PORTALGUN_GRAVLIGHT].SetVisibleViewModel( false ); m_Parameters[PORTALGUN_GRAVLIGHT_WORLD].SetVisible3rdPerson( false ); //Turn on and off the correct fired last lights m_Parameters[PORTALGUN_PORTAL1LIGHT].SetVisibleViewModel( m_iLastFiredPortal == 1 ); m_Parameters[PORTALGUN_PORTAL1LIGHT_WORLD].SetVisible3rdPerson( m_iLastFiredPortal == 1 ); m_Parameters[PORTALGUN_PORTAL2LIGHT].SetVisibleViewModel( m_iLastFiredPortal == 2 ); m_Parameters[PORTALGUN_PORTAL2LIGHT_WORLD].SetVisible3rdPerson( m_iLastFiredPortal == 2 ); } } } // Update our effects DoEffectIdle(); NetworkStateChanged(); }