コード例 #1
0
void BitmapImage::DoPaint( int x, int y, int wide, int tall, float yaw, float flAlphaModulate )
{
	vgui::surface()->DrawSetTexture( m_nTextureId );

	int r, g, b, a;
	m_clr.GetColor( r, g, b, a );
	a *= flAlphaModulate;
	vgui::surface()->DrawSetColor( r, g, b, a );
	
	if (yaw == 0)
	{
		if ( !m_bUseViewport )
		{
			vgui::surface()->DrawTexturedRect( x, y, x + wide, y + tall );
		}
		else
		{
			vgui::surface()->DrawTexturedSubRect( x, y, x + wide, y + tall,
				m_rgViewport[ 0 ],
				m_rgViewport[ 1 ],
				m_rgViewport[ 2 ],
				m_rgViewport[ 3 ]
				);
		}
	}
	else
	{
		// Rotated version of the bitmap!
		// Rotate about the center of the bitmap
		vgui::Vertex_t verts[4];
		Vector2D center( x + (wide * 0.5f), y + (tall * 0.5f) );

		// Choose a basis...
		float yawRadians = -yaw * M_PI / 180.0f;
		Vector2D axis[2];
		axis[0].x = cos(yawRadians);
		axis[0].y = sin(yawRadians);
		axis[1].x = -axis[0].y;
		axis[1].y = axis[0].x;

		verts[0].m_TexCoord.Init( 0, 0 );
		Vector2DMA( center, -0.5f * wide, axis[0], verts[0].m_Position );
		Vector2DMA( verts[0].m_Position, -0.5f * tall, axis[1], verts[0].m_Position );

		verts[1].m_TexCoord.Init( 1, 0 );
		Vector2DMA( verts[0].m_Position, wide, axis[0], verts[1].m_Position );

		verts[2].m_TexCoord.Init( 1, 1 );
		Vector2DMA( verts[1].m_Position, tall, axis[1], verts[2].m_Position );

		verts[3].m_TexCoord.Init( 0, 1 );
		Vector2DMA( verts[0].m_Position, tall, axis[1], verts[3].m_Position );

		vgui::surface()->DrawTexturedPolygon( 4, verts );
	}
}
コード例 #2
0
void CWeaponIFMSteadyCam::ComputeViewOffset()
{
	// Update 2D spring
	if ( !m_bInSpringMode )
	{
		m_vecViewOffset = m_vecActualViewOffset;
		return;
	}

	Vector2D dir;
	Vector2DSubtract( m_vecViewOffset.AsVector2D(), m_vecActualViewOffset.AsVector2D(), dir );
	float flDist = Vector2DNormalize( dir );

	Vector2D vecForce;
	Vector2DMultiply( dir, -flDist * ifm_steadycam_2dspringconstant.GetFloat(), vecForce );
	Vector2DMA( vecForce, -ifm_steadycam_2ddragconstant.GetFloat(), m_vec2DVelocity.AsVector2D(), vecForce ); 

	Vector2DMA( m_vecViewOffset.AsVector2D(), gpGlobals->frametime, m_vec2DVelocity.AsVector2D(), m_vecViewOffset.AsVector2D() ); 
	Vector2DMA( m_vec2DVelocity.AsVector2D(), gpGlobals->frametime, vecForce, m_vec2DVelocity.AsVector2D() ); 
}
コード例 #3
0
ファイル: Vector2D.cpp プロジェクト: younasiqw/pastedshit1
//-----------------------------------------------------------------------------
// Computes the closest point to vecTarget no farther than flMaxDist from vecStart
//-----------------------------------------------------------------------------
void ComputeClosestPoint2D(const Vector2D& vecStart, float flMaxDist, const Vector2D& vecTarget, Vector2D *pResult)
{
	Vector2D vecDelta;
	Vector2DSubtract(vecTarget, vecStart, vecDelta);
	float flDistSqr = vecDelta.LengthSqr();
	if (flDistSqr <= flMaxDist * flMaxDist) {
		*pResult = vecTarget;
	}
	else {
		vecDelta /= sqrt(flDistSqr);
		Vector2DMA(vecStart, flMaxDist, vecDelta, *pResult);
	}
}