private void GetUVsImpl <T>(int uvIndex, List <T> uvs, int dim) { if (uvs == null) { throw new ArgumentException("The result uvs list cannot be null", "uvs"); } if (uvIndex < 0 || uvIndex > 3) { throw new ArgumentException("The uv index is invalid (must be in [0..3]", "uvIndex"); } uvs.Clear(); Mesh.InternalShaderChannel uVChannel = this.GetUVChannel(uvIndex); if (!this.canAccess) { this.PrintErrorCantAccessMesh(uVChannel); return; } if (!this.HasChannel(uVChannel)) { return; } if (this.vertexCount > uvs.Capacity) { uvs.Capacity = this.vertexCount; } this.GetUVsInternal <T>(uvs, uvIndex, dim); }
private void SetSizedArrayForChannel(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, Array values, int valuesCount) { if (this.canAccess) { this.SetArrayForChannelImpl(channel, format, dim, values, valuesCount); } else { this.PrintErrorCantAccessMesh(channel); } }
private void GetListForChannel <T>(List <T> buffer, int capacity, Mesh.InternalShaderChannel channel, int dim, Mesh.InternalVertexChannelType channelType) { buffer.Clear(); if (!this.canAccess) { this.PrintErrorCantAccessMesh(channel); } else if (this.HasChannel(channel)) { this.PrepareUserBuffer <T>(buffer, capacity); this.GetArrayFromChannelImpl(channel, channelType, dim, Mesh.ExtractArrayFromList(buffer)); } }
private void GetListForChannel <T>(List <T> buffer, int capacity, Mesh.InternalShaderChannel channel, int dim, Mesh.InternalVertexChannelType channelType) { buffer.Clear(); if (!this.canAccess) { this.PrintErrorCantAccessChannel(channel); } else if (this.HasChannel(channel)) { NoAllocHelpers.EnsureListElemCount <T>(buffer, capacity); this.GetArrayFromChannelImpl(channel, channelType, dim, NoAllocHelpers.ExtractArrayFromList(buffer)); } }
private T[] GetAllocArrayFromChannel <T>(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim) { if (this.canAccess) { if (this.HasChannel(channel)) { return((T[])this.GetAllocArrayFromChannelImpl(channel, format, dim)); } } else { this.PrintErrorCantAccessMesh(channel); } return(new T[0]); }
internal static int DefaultDimensionForChannel(Mesh.InternalShaderChannel channel) { if (channel == Mesh.InternalShaderChannel.Vertex || channel == Mesh.InternalShaderChannel.Normal) { return(3); } if (channel >= Mesh.InternalShaderChannel.TexCoord0 && channel <= Mesh.InternalShaderChannel.TexCoord3) { return(2); } if (channel == Mesh.InternalShaderChannel.Tangent || channel == Mesh.InternalShaderChannel.Color) { return(4); } throw new ArgumentException("DefaultDimensionForChannel called for bad channel", "channel"); }
internal static int DefaultDimensionForChannel(Mesh.InternalShaderChannel channel) { int result; if (channel == Mesh.InternalShaderChannel.Vertex || channel == Mesh.InternalShaderChannel.Normal) { result = 3; } else if (channel >= Mesh.InternalShaderChannel.TexCoord0 && channel <= Mesh.InternalShaderChannel.TexCoord3) { result = 2; } else { if (channel != Mesh.InternalShaderChannel.Tangent && channel != Mesh.InternalShaderChannel.Color) { throw new ArgumentException("DefaultDimensionForChannel called for bad channel", "channel"); } result = 4; } return(result); }
private void GetListForChannel <T>(List <T> buffer, int capacity, Mesh.InternalShaderChannel channel, int dim) { this.GetListForChannel <T>(buffer, capacity, channel, dim, Mesh.InternalVertexChannelType.Float); }
private void GetUVsInternal <T>(List <T> uvs, int uvIndex, int dim) { Mesh.InternalShaderChannel uVChannel = this.GetUVChannel(uvIndex); Mesh.ResizeList(uvs, this.vertexCount); this.GetArrayFromChannelImpl(uVChannel, Mesh.InternalVertexChannelType.Float, dim, Mesh.ExtractArrayFromList(uvs)); }
private void SetListForChannel <T>(Mesh.InternalShaderChannel channel, List <T> values) { this.SetSizedArrayForChannel(channel, Mesh.InternalVertexChannelType.Float, Mesh.DefaultDimensionForChannel(channel), Mesh.ExtractArrayFromList(values), this.SafeLength <T>(values)); }
private void SetListForChannel <T>(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, List <T> values) { this.SetSizedArrayForChannel(channel, format, dim, Mesh.ExtractArrayFromList(values), this.SafeLength <T>(values)); }
private void SetArrayForChannel <T>(Mesh.InternalShaderChannel channel, T[] values) { this.SetSizedArrayForChannel(channel, Mesh.InternalVertexChannelType.Float, Mesh.DefaultDimensionForChannel(channel), values, this.SafeLength(values)); }
private void SetArrayForChannel <T>(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, T[] values) { this.SetSizedArrayForChannel(channel, format, dim, values, this.SafeLength(values)); }
internal extern void PrintErrorCantAccessMesh(Mesh.InternalShaderChannel channel);
private T[] GetAllocArrayFromChannel <T>(Mesh.InternalShaderChannel channel) { return(this.GetAllocArrayFromChannel <T>(channel, Mesh.InternalVertexChannelType.Float, Mesh.DefaultDimensionForChannel(channel))); }
private extern void PrintErrorCantAccessChannel(Mesh.InternalShaderChannel ch);
internal extern bool HasChannel(Mesh.InternalShaderChannel channel);
private extern void GetArrayFromChannelImpl(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, Array values);
private extern Array GetAllocArrayFromChannelImpl(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim);
private extern void SetArrayForChannelImpl(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, Array values, int arraySize);