void HGear::glCommands(bool select, bool marked, bool no_color){ if(!no_color){ wxGetApp().glColorEnsuringContrast(HeeksColor(0, 0, 0)); } GLfloat save_depth_range[2]; if(marked){ glGetFloatv(GL_DEPTH_RANGE, save_depth_range); glDepthRange(0, 0); glLineWidth(2); } height_for_point = 0.0; glBegin(GL_LINE_STRIP); GetSegments(glVertexFunction, wxGetApp().GetPixelScale()); glEnd(); if(fabs(m_depth) > 0.000000000001) { height_for_point = m_depth; glBegin(GL_LINE_STRIP); GetSegments(glVertexFunction, wxGetApp().GetPixelScale()); glEnd(); } if(marked){ glLineWidth(1); glDepthRange(save_depth_range[0], save_depth_range[1]); } }
void CElectrifiedWire::DoLightning() { const size_t uiSegment1 = UTIL_RandomLong( 0, GetNumSegments() - 1 ); size_t uiSegment2; size_t uiIndex; //Try to get a random segment. for( uiIndex = 0; uiIndex < 10; ++uiIndex ) { uiSegment2 = UTIL_RandomLong( 0, GetNumSegments() - 1 ); if( uiSegment2 != uiSegment1 ) break; } if( uiIndex >= 10 ) return; CRopeSegment* pSegment1; CRopeSegment* pSegment2; if( GetToggleValue() ) { pSegment1 = GetAltSegments()[ uiSegment1 ]; pSegment2 = GetAltSegments()[ uiSegment2 ]; } else { pSegment1 = GetSegments()[ uiSegment1 ]; pSegment2 = GetSegments()[ uiSegment2 ]; } MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_BEAMENTS ); WRITE_SHORT( pSegment1->entindex() ); WRITE_SHORT( pSegment2->entindex() ); WRITE_SHORT( m_iLightningSprite ); WRITE_BYTE( 0 ); WRITE_BYTE( 0 ); WRITE_BYTE( 1 ); WRITE_BYTE( 10 ); WRITE_BYTE( 80 ); WRITE_BYTE( 255 ); WRITE_BYTE( 255 ); WRITE_BYTE( 255 ); WRITE_BYTE( 255 ); WRITE_BYTE( 255 ); MESSAGE_END(); }
void CElectrifiedWire::Use( CBaseEntity* pActivator, CBaseEntity* pCaller, USE_TYPE useType, float flValue ) { m_bIsActive = !m_bIsActive; if( m_uiNumUninsulatedSegments > 0 ) { for( size_t uiIndex = 0; uiIndex < m_uiNumUninsulatedSegments; ++uiIndex ) { GetSegments()[ m_uiUninsulatedSegments[ uiIndex ] ]->SetCauseDamageOnTouch( m_bIsActive ); GetAltSegments()[ m_uiUninsulatedSegments[ uiIndex ] ]->SetCauseDamageOnTouch( m_bIsActive ); } } if( m_iTipSparkFrequency > 0 ) { GetSegments()[ GetNumSegments() - 1 ]->SetCauseDamageOnTouch( m_bIsActive ); GetAltSegments()[ GetNumSegments() - 1 ]->SetCauseDamageOnTouch( m_bIsActive ); } }
void TUnit::DebugPrint() const { std::cerr << "{ " << GetPivot().GetPosition().Column << ", " << GetPivot().GetPosition().Row << " }: ["; for (const auto& segment : GetSegments()) { std::cerr << "{ " << segment.GetPosition().Column << ", " << segment.GetPosition().Row << " },"; } std::cerr << "]" << std::endl; }
void CElectrifiedWire::Spawn() { BaseClass::Spawn(); m_uiNumUninsulatedSegments = 0; m_bIsActive = true; if( m_iBodySparkFrequency > 0 ) { for( size_t uiIndex = 0; uiIndex < GetNumSegments(); ++uiIndex ) { if( IsValidSegmentIndex( uiIndex ) ) { m_uiUninsulatedSegments[ m_uiNumUninsulatedSegments++ ] = uiIndex; } } } if( m_uiNumUninsulatedSegments > 0 ) { for( size_t uiIndex = 0; uiIndex < m_uiNumUninsulatedSegments; ++uiIndex ) { GetSegments()[ uiIndex ]->SetCauseDamageOnTouch( m_bIsActive ); GetAltSegments()[ uiIndex ]->SetCauseDamageOnTouch( m_bIsActive ); } } if( m_iTipSparkFrequency > 0 ) { GetSegments()[ GetNumSegments() - 1 ]->SetCauseDamageOnTouch( m_bIsActive ); GetAltSegments()[ GetNumSegments() - 1 ]->SetCauseDamageOnTouch( m_bIsActive ); } m_flLastSparkTime = gpGlobals->time; SetSoundAllowed( false ); }
void PathFigure::Build () { PathSegmentCollection *segments = GetSegments (); PathSegment *segment; int segments_count = segments->GetCount(); if (path) moon_path_clear (path); else path = moon_path_new (MOON_PATH_MOVE_TO_LENGTH + (segments_count * 4) + MOON_PATH_CLOSE_PATH_LENGTH); Point *start = GetStartPoint (); moon_move_to (path, start ? start->x : 0.0, start ? start->y : 0.0); for (int i = 0; i < segments_count; i++) { segment = segments->GetValueAt (i)->AsPathSegment (); segment->Append (path); } if (GetIsClosed ()) moon_close_path (path); }