Beispiel #1
0
        private Int2 SetVertices(MeshStripeHigh stripe, Corner corner)
        {
            var  coord = stripe.GetPixelAtCorner(corner).VertPosition(corner);
            Int2 result;

            if (_vertMatrix[coord.X, coord.Y].X < 0)
            {
                result = new Int2(_verts.Count, _verts.Count + 1);
                _vertMatrix[coord.X, coord.Y] = new Int2(_verts.Count, _verts.Count + 1);
                _verts.Add(stripe.GetPixelAtCorner(corner).GetVertCoordinates(corner, Side.Front, _scale) - _offset);
                _verts.Add(stripe.GetPixelAtCorner(corner).GetVertCoordinates(corner, Side.Back, _scale) - _offset);
                _uvs.Add(stripe.GetPixelAtCorner(corner).GetUvAtCorner(corner));
                _uvs.Add(stripe.GetPixelAtCorner(corner).GetUvAtCorner(corner));
                if (!_recalcNormals)
                {
                    _normals.Add(GetNormal(corner, Side.Front));
                    _normals.Add(GetNormal(corner, Side.Back));
                }
            }
            else
            {
                result = _vertMatrix[coord.X, coord.Y];
            }

            return(result);
        }