public override bool Equals(com.epl.geometry.AttributeStreamBase other, int start, int end)
 {
     if (other == null)
     {
         return false;
     }
     if (!(other is com.epl.geometry.AttributeStreamOfFloat))
     {
         return false;
     }
     com.epl.geometry.AttributeStreamOfFloat _other = (com.epl.geometry.AttributeStreamOfFloat)other;
     int size = Size();
     int sizeOther = _other.Size();
     if (end > size || end > sizeOther && (size != sizeOther))
     {
         return false;
     }
     if (end > size)
     {
         end = size;
     }
     for (int i = start; i < end; i++)
     {
         if (Read(i) != _other.Read(i))
         {
             return false;
         }
     }
     return true;
 }
 public AttributeStreamOfFloat(com.epl.geometry.AttributeStreamOfFloat other, int maxSize)
 {
     m_size = other.Size();
     if (m_size > maxSize)
     {
         m_size = maxSize;
     }
     int sz = m_size;
     if (sz < 2)
     {
         sz = 2;
     }
     m_buffer = new float[sz];
     System.Array.Copy(other.m_buffer, 0, m_buffer, 0, m_size);
 }
        /// <summary>Creates a new attribute stream of given persistence type and size.</summary>
        /// <param name="persistence">The persistence type of the stream (see VertexDescription).</param>
        /// <param name="size">
        /// The number of elements (floats, doubles, or 32 bit integers)
        /// of the given type in the stream.
        /// </param>
        /// <param name="defaultValue">The default value to fill the stream with.</param>
        public static com.epl.geometry.AttributeStreamBase CreateAttributeStreamWithPersistence(int persistence, int size, double defaultValue)
        {
            com.epl.geometry.AttributeStreamBase newStream;
            switch (persistence)
            {
            case (com.epl.geometry.VertexDescription.Persistence.enumFloat):
            {
                newStream = new com.epl.geometry.AttributeStreamOfFloat(size, (float)defaultValue);
                break;
            }

            case (com.epl.geometry.VertexDescription.Persistence.enumDouble):
            {
                newStream = new com.epl.geometry.AttributeStreamOfDbl(size, (double)defaultValue);
                break;
            }

            case (com.epl.geometry.VertexDescription.Persistence.enumInt32):
            {
                newStream = new com.epl.geometry.AttributeStreamOfInt32(size, (int)defaultValue);
                break;
            }

            case (com.epl.geometry.VertexDescription.Persistence.enumInt64):
            {
                newStream = new com.epl.geometry.AttributeStreamOfInt64(size, (long)defaultValue);
                break;
            }

            case (com.epl.geometry.VertexDescription.Persistence.enumInt8):
            {
                newStream = new com.epl.geometry.AttributeStreamOfInt8(size, unchecked ((byte)defaultValue));
                break;
            }

            case (com.epl.geometry.VertexDescription.Persistence.enumInt16):
            {
                newStream = new com.epl.geometry.AttributeStreamOfInt16(size, (short)defaultValue);
                break;
            }

            default:
            {
                throw new com.epl.geometry.GeometryException("Internal Error");
            }
            }
            return(newStream);
        }
 public AttributeStreamOfFloat(com.epl.geometry.AttributeStreamOfFloat other)
 {
     m_buffer = (float[])other.m_buffer.Clone();
     m_size = other.m_size;
 }
 public override void WriteRange(int startElement, int count, com.epl.geometry.AttributeStreamBase _src, int srcStart, bool bForward, int stride)
 {
     if (startElement < 0 || count < 0 || srcStart < 0)
     {
         throw new System.ArgumentException();
     }
     if (!bForward && (stride <= 0 || (count % stride != 0)))
     {
         throw new System.ArgumentException();
     }
     com.epl.geometry.AttributeStreamOfFloat src = (com.epl.geometry.AttributeStreamOfFloat)_src;
     // the input
     // type must
     // match
     if (src.Size() < (int)(srcStart + count))
     {
         throw new System.ArgumentException();
     }
     if (count == 0)
     {
         return;
     }
     if (Size() < count + startElement)
     {
         Resize(count + startElement);
     }
     if (_src == (com.epl.geometry.AttributeStreamBase)this)
     {
         _selfWriteRangeImpl(startElement, count, srcStart, bForward, stride);
         return;
     }
     if (bForward)
     {
         int j = startElement;
         int offset = srcStart;
         for (int i = 0; i < count; i++)
         {
             m_buffer[j] = src.m_buffer[offset];
             j++;
             offset++;
         }
     }
     else
     {
         int j = startElement;
         int offset = srcStart + count - stride;
         if (stride == 1)
         {
             for (int i = 0; i < count; i++)
             {
                 m_buffer[j] = src.m_buffer[offset];
                 j++;
                 offset--;
             }
         }
         else
         {
             for (int i = 0, n = count / stride; i < n; i++)
             {
                 for (int k = 0; k < stride; k++)
                 {
                     m_buffer[j + k] = src.m_buffer[offset + k];
                 }
                 j += stride;
                 offset -= stride;
             }
         }
     }
 }