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; } } } }