Exemple #1
0
 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);
 }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
 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));
     }
 }
Exemple #4
0
 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));
     }
 }
Exemple #5
0
 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]);
 }
Exemple #6
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");
 }
Exemple #7
0
        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);
        }
Exemple #8
0
 private void GetListForChannel <T>(List <T> buffer, int capacity, Mesh.InternalShaderChannel channel, int dim)
 {
     this.GetListForChannel <T>(buffer, capacity, channel, dim, Mesh.InternalVertexChannelType.Float);
 }
Exemple #9
0
 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));
 }
Exemple #10
0
 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));
 }
Exemple #11
0
 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));
 }
Exemple #12
0
 private void SetArrayForChannel <T>(Mesh.InternalShaderChannel channel, T[] values)
 {
     this.SetSizedArrayForChannel(channel, Mesh.InternalVertexChannelType.Float, Mesh.DefaultDimensionForChannel(channel), values, this.SafeLength(values));
 }
Exemple #13
0
 private void SetArrayForChannel <T>(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, T[] values)
 {
     this.SetSizedArrayForChannel(channel, format, dim, values, this.SafeLength(values));
 }
Exemple #14
0
 internal extern void PrintErrorCantAccessMesh(Mesh.InternalShaderChannel channel);
Exemple #15
0
 private T[] GetAllocArrayFromChannel <T>(Mesh.InternalShaderChannel channel)
 {
     return(this.GetAllocArrayFromChannel <T>(channel, Mesh.InternalVertexChannelType.Float, Mesh.DefaultDimensionForChannel(channel)));
 }
Exemple #16
0
 private extern void PrintErrorCantAccessChannel(Mesh.InternalShaderChannel ch);
Exemple #17
0
 internal extern bool HasChannel(Mesh.InternalShaderChannel channel);
Exemple #18
0
 private extern void GetArrayFromChannelImpl(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, Array values);
Exemple #19
0
 private extern Array GetAllocArrayFromChannelImpl(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim);
Exemple #20
0
 private extern void SetArrayForChannelImpl(Mesh.InternalShaderChannel channel, Mesh.InternalVertexChannelType format, int dim, Array values, int arraySize);