Exemplo n.º 1
0
    //複数のラインを作成
    private LineMeshData CreateLines()
    {
        if (meshs == null)
        {
            return(new LineMeshData());
        }
        List <LineMeshData> meshList = new List <LineMeshData> ();

        foreach (LineMesh lm in meshs)
        {
            meshList.Add(CreateLine(lm));
        }

        return(LineMeshData.Combine(meshList));
    }
Exemplo n.º 2
0
    //ラインを作成
    private LineMeshData CreateLine(LineMesh lm)
    {
        Vector3[] vert   = lm.vertices;
        Color[]   colorE = lm.colorOfEdge;
        Color[]   colorV = lm.colorOfVertex;
        int[]     ind    = lm.indices;

        //ちゃんと正しくデータが入っているかチェック
        if (vert == null)
        {
            return(new LineMeshData());
        }
        int count = vert.Length;

        if (count == 0)
        {
            return(new LineMeshData());
        }

        bool isCorrectContents = true;

        if (colorE != null)
        {
            isCorrectContents &= vert.Length == colorE.Length;
        }
        else
        {
            colorE = new Color[count];
            for (int i = 0; i < count; i++)
            {
                colorE [i] = DefaultColor;
            }
        }
        if (colorV != null)
        {
            isCorrectContents &= vert.Length == colorV.Length;
        }
        else
        {
            colorV = new Color[count];
            for (int i = 0; i < count; i++)
            {
                colorV [i] = DefaultColor;
            }
        }

        if (!isCorrectContents)
        {
            Debug.Assert(false, "ラインデータが異常です");
            return(new LineMeshData());
        }

        //メッシュを作成する
        //	エッジメッシュを作成
        List <LineMeshData> meshList = new List <LineMeshData> ();

        for (int i = 0; i < ind.Length; i += 2)
        {
            int i0 = ind [i];
            int i1 = ind [i + 1];
            meshList.Add(CreateEdge(vert [i0], vert [i1], colorE[i0], colorE[i1], lm.width, lm.normalVector));
        }
        //	バーテックスメッシュを作成
        for (int i = 0; i < vert.Length; i++)
        {
            meshList.Add(CreateVertex(vert[i], colorV[i], lm.vertexSize, lm.normalVector));
        }
        //	メッシュを統合
        return(LineMeshData.Combine(meshList));
    }