public void Add( VertexFieldSemantic field, float x, float y )
 {
     CheckAdd( field, 2 );
     List<float> stream = m_Streams[ field ];
     stream.Add( x );
     stream.Add( y );
 }
 public void Add( VertexFieldSemantic field, Color c )
 {
     CheckAdd( field, 4 );
     List<float> stream = m_Streams[ field ];
     stream.Add( c.R / 255.0f );
     stream.Add( c.G / 255.0f );
     stream.Add( c.B / 255.0f );
     stream.Add( c.A / 255.0f );
 }
 public void Add( VertexFieldSemantic field, Vector3 vec )
 {
     Add( field, vec.X, vec.Y, vec.Z );
 }
 public void Add( VertexFieldSemantic field, Point3 pt )
 {
     Add( field, pt.X, pt.Y, pt.Z );
 }
 private void CheckAdd( VertexFieldSemantic fieldType, int numElements )
 {
     VertexBufferFormat.FieldDescriptor field = m_Format.GetDescriptor( fieldType );
     if ( field == null )
     {
         throw new InvalidOperationException( string.Format( "Field for \"{0}\" was not specified in format \"{1}\"", field, m_Format ) );
     }
     if ( field.NumElements != numElements )
     {
         throw new InvalidOperationException( string.Format( "Expected field \"{0}\" in format \"{1}\" to contain {2} elements, not {3}", field, m_Format, field.NumElements, numElements ) );
     }
 }