public virtual void RemoveAt( int index )
{
ValidateIndex( index ); // throws
m_count--;
if ( index < m_count )
{
Array.Copy( m_array, index + 1, m_array, index, m_count - index );
}
// We can't set the deleted entry equal to null, because it might be a value type.
// Instead, we'll create an empty single-element array of the right type and copy it
// over the entry we want to erase.
Vector3[] temp = new Vector3[ 1 ];
Array.Copy( temp, 0, m_array, m_count, 1 );
m_version++;
}