示例#1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected void Build(GameObject pParent)
        {
            vParent = pParent;

            Background = new GameObject("Background");
            Background.transform.SetParent(pParent.transform, false);
            Background.AddComponent <MeshRenderer>();
            BackgroundMesh = Background.AddComponent <MeshFilter>().mesh;
            BackgroundMesh.MarkDynamic();

            Edge = new GameObject("Edge");
            Edge.transform.SetParent(pParent.transform, false);
            Edge.AddComponent <MeshRenderer>();
            EdgeMesh = Edge.AddComponent <MeshFilter>().mesh;
            EdgeMesh.MarkDynamic();

            Highlight = new GameObject("Highlight");
            Highlight.transform.SetParent(pParent.transform, false);
            Highlight.AddComponent <MeshRenderer>();
            HighlightMesh = Highlight.AddComponent <MeshFilter>().mesh;
            HighlightMesh.MarkDynamic();

            Select = new GameObject("Select");
            Select.transform.SetParent(pParent.transform, false);
            Select.AddComponent <MeshRenderer>();
            SelectMesh = Select.AddComponent <MeshFilter>().mesh;
            SelectMesh.MarkDynamic();

            BackgroundColor = Color.clear;
            EdgeColor       = Color.clear;
            SelectColor     = Color.clear;
            HighlightColor  = Color.clear;

            UpdateAfterResize();
        }
示例#2
0
    /// <summary>
    /// Отрисовываем рёбра
    /// </summary>
    private void ViewEdges()
    {
        for (int i = 0; i < Graph.Instance.Points.Count; i++)
        {
            point0 = Graph.Instance.Points[i].Point;
            for (int j = 0; j < Graph.Instance.Points[i].Edges.Count; j++)
            {
                newEdgeMesh = new EdgeMesh();

                point1 = Graph.Instance.Points[i].Edges[j].PointEdge;
                int _weight = Graph.Instance.Points[i].Edges[j].Weight;

                distanceBetweenPoints = (point0.transform.position -
                                         point1.transform.position).magnitude;

                PointOnSegment(point0.transform.position, point1.transform.position, 0.5f);

                GameObject newEdge = Instantiate(prefabEdge,
                                                 editorVector,
                                                 Quaternion.identity,
                                                 parentEdges);

                newEdge.transform.LookAt(point1.transform);

                newEdge.name = "Edge_" + point0.name + "_" + point1.name;

                editorVector   = newEdge.transform.localScale;
                editorVector.z = distanceBetweenPoints;
                newEdge.transform.localScale = editorVector;

                newEdgeMesh.Mesh.Add(newEdge.GetComponent <MeshRenderer>());
                newEdgeMesh.NameEdge = point0.name + "-" + point1.name;

                ViewArrow();
                ViewWeights(_weight);

                edgeMeshs.Add(newEdgeMesh);
            }
        }
    }
示例#3
0
    public static void CreateHighResolutionGeometry(GameObject asset)
    {
        var paths    = AssetTools.FindAssetPaths(asset);
        var original = AssetDatabase.LoadAssetAtPath(paths.file + ".obj", typeof(Mesh)) as Mesh;

        var deformable = AssetDatabase.LoadAssetAtPath(paths.file + "DeformableMesh.asset", typeof(Mesh)) as Mesh;

        if (deformable == null)
        {
            deformable = new Mesh();
            AssetDatabase.CreateAsset(deformable, paths.file + "DeformableMesh.asset");
        }

        EdgeMesh edgemesh = new EdgeMesh();

        edgemesh.Build(original);
        edgemesh.RefineMesh(0.25f);
        edgemesh.BakeMesh(deformable);

        AssetDatabase.SaveAssets();

        asset.GetComponentInChildren <MeshFilter>().sharedMesh = deformable;
    }
示例#4
0
 public void Reset()
 {
     Mesh = new EdgeMesh();
     Mesh.Build(GetComponentInChildren <MeshFilter>().sharedMesh);
 }
示例#5
0
文件: Edge.cs 项目: dereksx/Knitting
 void Awake()
 {
     curve = GetComponent <BezierSpline> ();
     mesh  = GetComponent <EdgeMesh> ();
 }