Ejemplo n.º 1
0
        private void GetUVsInternal <T>(List <T> uvs, int uvIndex, int dim)
        {
            InternalShaderChannel uVChannel = this.GetUVChannel(uvIndex);

            ResizeList(uvs, this.vertexCount);
            this.GetArrayFromChannelImpl(uVChannel, InternalVertexChannelType.Float, dim, ExtractArrayFromList(uvs));
        }
Ejemplo n.º 2
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();
            InternalShaderChannel uVChannel = this.GetUVChannel(uvIndex);

            if (!this.canAccess)
            {
                this.PrintErrorCantAccessMesh(uVChannel);
            }
            else if (this.HasChannel(uVChannel))
            {
                if (this.vertexCount > uvs.Capacity)
                {
                    uvs.Capacity = this.vertexCount;
                }
                this.GetUVsInternal <T>(uvs, uvIndex, dim);
            }
        }
Ejemplo n.º 3
0
 private void SetSizedArrayForChannel(InternalShaderChannel channel, InternalVertexChannelType format, int dim, Array values, int valuesCount)
 {
     if (canAccess)
     {
         SetArrayForChannelImpl(channel, format, dim, values, valuesCount);
     }
     else
     {
         PrintErrorCantAccessMesh(channel);
     }
 }
Ejemplo n.º 4
0
 private void GetListForChannel <T>(List <T> buffer, int capacity, InternalShaderChannel channel, int dim, InternalVertexChannelType channelType)
 {
     buffer.Clear();
     if (!canAccess)
     {
         PrintErrorCantAccessMesh(channel);
     }
     else if (HasChannel(channel))
     {
         PrepareUserBuffer(buffer, capacity);
         GetArrayFromChannelImpl(channel, channelType, dim, ExtractArrayFromList(buffer));
     }
 }
Ejemplo n.º 5
0
 private T[] GetAllocArrayFromChannel <T>(InternalShaderChannel channel, InternalVertexChannelType format, int dim)
 {
     if (canAccess)
     {
         if (HasChannel(channel))
         {
             return((T[])GetAllocArrayFromChannelImpl(channel, format, dim));
         }
     }
     else
     {
         PrintErrorCantAccessMesh(channel);
     }
     return(new T[0]);
 }
Ejemplo n.º 6
0
 internal static int DefaultDimensionForChannel(InternalShaderChannel channel)
 {
     if ((channel == InternalShaderChannel.Vertex) || (channel == InternalShaderChannel.Normal))
     {
         return(3);
     }
     if ((channel >= InternalShaderChannel.TexCoord0) && (channel <= InternalShaderChannel.TexCoord3))
     {
         return(2);
     }
     if ((channel != InternalShaderChannel.Tangent) && (channel != InternalShaderChannel.Color))
     {
         throw new ArgumentException("DefaultDimensionForChannel called for bad channel", "channel");
     }
     return(4);
 }
Ejemplo n.º 7
0
        internal static int DefaultDimensionForChannel(InternalShaderChannel channel)
        {
            if (channel == InternalShaderChannel.Vertex || channel == InternalShaderChannel.Normal)
            {
                return(3);
            }
            else if (channel >= InternalShaderChannel.TexCoord0 && channel <= InternalShaderChannel.TexCoord3)
            {
                return(2);
            }
            else if (channel == InternalShaderChannel.Tangent || channel == InternalShaderChannel.Color)
            {
                return(4);
            }

            throw new ArgumentException("DefaultDimensionForChannel called for bad channel", "channel");
        }
Ejemplo n.º 8
0
        private void GetListForChannel <T>(List <T> buffer, int capacity, InternalShaderChannel channel, int dim, InternalVertexChannelType channelType)
        {
            buffer.Clear();

            if (!canAccess)
            {
                PrintErrorCantAccessChannel(channel);
                return;
            }

            if (!HasChannel(channel))
            {
                return;
            }

            NoAllocHelpers.EnsureListElemCount(buffer, capacity);

            GetArrayFromChannelImpl(channel, channelType, dim, NoAllocHelpers.ExtractArrayFromList(buffer));
        }
Ejemplo n.º 9
0
        internal static int DefaultDimensionForChannel(InternalShaderChannel channel)
        {
            switch (channel)
            {
            case InternalShaderChannel.Vertex:
            case InternalShaderChannel.Normal:
                return(3);

            case InternalShaderChannel.TexCoord0:
            case InternalShaderChannel.TexCoord1:
            case InternalShaderChannel.TexCoord2:
            case InternalShaderChannel.TexCoord3:
                return(2);

            default:
                if (channel == InternalShaderChannel.Tangent || channel == InternalShaderChannel.Color)
                {
                    return(4);
                }
                throw new ArgumentException("DefaultDimensionForChannel called for bad channel", "channel");
            }
        }
Ejemplo n.º 10
0
 internal extern bool HasChannel(InternalShaderChannel channel);
Ejemplo n.º 11
0
 private void GetListForChannel <T>(List <T> buffer, int capacity, InternalShaderChannel channel, int dim)
 {
     GetListForChannel(buffer, capacity, channel, dim, InternalVertexChannelType.Float);
 }
Ejemplo n.º 12
0
 private void SetListForChannel <T>(InternalShaderChannel channel, List <T> values)
 {
     SetSizedArrayForChannel(channel, InternalVertexChannelType.Float, DefaultDimensionForChannel(channel), ExtractArrayFromList(values), SafeLength(values));
 }
Ejemplo n.º 13
0
 private void SetListForChannel <T>(InternalShaderChannel channel, InternalVertexChannelType format, int dim, List <T> values)
 {
     SetSizedArrayForChannel(channel, format, dim, ExtractArrayFromList(values), SafeLength(values));
 }
Ejemplo n.º 14
0
 private void SetArrayForChannel <T>(InternalShaderChannel channel, T[] values)
 {
     SetSizedArrayForChannel(channel, InternalVertexChannelType.Float, DefaultDimensionForChannel(channel), values, SafeLength(values));
 }
Ejemplo n.º 15
0
 private void SetArrayForChannel <T>(InternalShaderChannel channel, InternalVertexChannelType format, int dim, T[] values)
 {
     SetSizedArrayForChannel(channel, format, dim, values, SafeLength(values));
 }
Ejemplo n.º 16
0
 extern private void PrintErrorCantAccessChannel(InternalShaderChannel ch);
Ejemplo n.º 17
0
 private T[] GetAllocArrayFromChannel <T>(InternalShaderChannel channel)
 {
     return(GetAllocArrayFromChannel <T>(channel, InternalVertexChannelType.Float, DefaultDimensionForChannel(channel)));
 }
Ejemplo n.º 18
0
 extern internal bool HasChannel(InternalShaderChannel ch);
Ejemplo n.º 19
0
 internal extern void PrintErrorCantAccessMesh(InternalShaderChannel channel);
Ejemplo n.º 20
0
 private extern void GetArrayFromChannelImpl(InternalShaderChannel channel, InternalVertexChannelType format, int dim, Array values);
Ejemplo n.º 21
0
 private extern Array GetAllocArrayFromChannelImpl(InternalShaderChannel channel, InternalVertexChannelType format, int dim);
Ejemplo n.º 22
0
 private extern void SetArrayForChannelImpl(InternalShaderChannel channel, InternalVertexChannelType format, int dim, Array values, int arraySize);