public virtual void MoveForward()
{
if ( m_Area.Length == 0 )
return;
for ( int i = 0; i < 5; ++i ) // try 5 times to find a valid spot
{
int xOffset = (m_MoveSpeed * m_MoveAngleX) / 100;
int yOffset = (m_MoveSpeed * m_MoveAngleY) / 100;
Rectangle2D oldArea = m_Area[0];
Rectangle2D newArea = new Rectangle2D( oldArea.X + xOffset, oldArea.Y + yOffset, oldArea.Width, oldArea.Height );
if ( !CheckWeatherConflict( m_Facet, this, newArea ) && CheckContains( m_Bounds, newArea ) )
{
m_Area[0] = newArea;
break;
}
RecalculateMovementAngle();
}
}