Example #1
0
        public GraphForBillboardVertexes CreateGraph()
        {
            var graph          = new GameObject("Graph");
            var graphControler = graph.AddComponent <GraphForBillboardVertexes>();

            Graphs.Add(graphControler);
            graphControler.SetupParams(new GraphParameters(new Vector3(0, -20), "Test"));

            var customFont  = FontsGenerator.GetOrCreateFont("Broadway", 32);
            var mainTexture = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 200, 200);

            mainTexture.name = "Target";
            var selectFrame = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_selectFrameTexture), 200, 200);

            selectFrame.name = "SelectFrame";

            var textTextureFactory = new TextTextureFactory(customFont, 0);

            var baseScale = Vector2.one;

            var imageParameters       = new BillboardParameters(mainTexture, scale: baseScale * 3f, useCache: true);
            var selectFrameParameters = new BillboardParameters(selectFrame, scale: baseScale * 6f, isMonoColor: true, useCache: false);

            var edgeParameters = new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.white, true), new SpringParameters(1, 10));

            BillboardVertex?vertex = null;

            for (var i = 0; i < 1000; ++i)
            {
                var         text           = textTextureFactory.MakeTextTexture($"Vertex{i}", true);
                const float scale          = 10;
                var         textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale));

                var currentVertex = graphControler.SpawnVertex <SelectableVertex, SelectableVertexParameters>(
                    new SelectableVertexParameters(new[] { imageParameters, textParameters }, selectFrameParameters, new Vector3(i % 32 * 10, i / 32 * 10)));

                if (vertex != null)
                {
                    currentVertex.Link <StretchableEdge, StretchableEdgeParameters>(vertex, edgeParameters);
                }
                vertex = currentVertex;
            }

            return(graphControler);
        }
        public GraphForBillboardVertexes CreateGraph()
        {
            var graph          = new GameObject("Graph");
            var graphControler = graph.AddComponent <GraphForBillboardVertexes>();

            graph.AddComponent <Button3D>().Action = (g) => graphControler.StartForceBasedLayout(1000);
            Graphs.Add(graphControler);
            graphControler.SetupParams(new GraphParameters(new Vector3(-69, -15, -30), "Click me"));

            var customFont  = Resources.Load <Font>(_fontPath);
            var mainTexture = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 200, 200);

            mainTexture.name = "Target";

            var textTextureFactory = new TextTextureFactory(customFont, 32);
            var resizedTetxure     = Texture2DExtension.ResizeTexture(mainTexture, 200, 200);

            var baseScale = Vector2.one;

            var imageParameters = new BillboardParameters(resizedTetxure, scale: baseScale * 3f, useCache: true);

            var stretchableEdgeMaterialParameters = new StretchableEdgeMaterialParameters(Color.white, true);
            var edgeParameters = new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.yellow, true), new SpringParameters(1, 5));
            var coordinates    = new Vector3[26] {
                new Vector3(-91.62799f, -2.3942585f, -43.161083f),
                new Vector3(-91.138885f, -3.3022366f, -17.54464f),
                new Vector3(-68.31055f, -9.711845f, -29.303394f),
                new Vector3(-71.31007f, -2.7437487f, -56.661026f),
                new Vector3(-45.411583f, -2.9353018f, -42.584347f),
                new Vector3(-47.30028f, -3.1969986f, -22.738922f),
                new Vector3(-64.77525f, -3.20299f, -2.5527115f),
                new Vector3(-49.3282f, 5.356124f, -2.7157516f),
                new Vector3(-37.920048f, 5.7275085f, -30.361862f),
                new Vector3(-52.707493f, 8.093277f, -57.873806f),
                new Vector3(-88.294876f, 7.605483f, -57.47967f),
                new Vector3(-81.45683f, 6.2511196f, -1.4397621f),
                new Vector3(-105.84165f, 6.152034f, -28.007107f),
                new Vector3(-99.75531f, 16.45427f, -11.093414f),
                new Vector3(-38.78393f, 16.683071f, -14.812604f),
                new Vector3(-40.808224f, 15.8126135f, -44.379215f),
                new Vector3(-73.01358f, 14.908555f, -55.7931f),
                new Vector3(-68.13217f, 15.000669f, 1.9544525f),
                new Vector3(-83.44349f, 25.460217f, -8.76181f),
                new Vector3(-59.4664f, 24.522339f, -10.350107f),
                new Vector3(-47.37295f, 23.873238f, -31.69215f),
                new Vector3(-92.189575f, 24.484436f, -28.520731f),
                new Vector3(-81.99469f, 23.73766f, -46.882977f),
                new Vector3(-56.52922f, 23.624348f, -43.66665f),
                new Vector3(-72.91645f, 30.9808f, -30.28012f),
                new Vector3(-93f, 20f, -42f),
            };

            var currentVertex = new BillboardVertex[coordinates.Length];

            for (var i = 0; i < coordinates.Length; ++i)
            {
                currentVertex[i] = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(new BillboardVertexParameters(new[] { imageParameters }, coordinates[i]));
            }

            currentVertex[0].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters);
            currentVertex[1].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters);
            currentVertex[3].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters);
            currentVertex[4].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters);
            currentVertex[5].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters);
            currentVertex[6].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters);
            currentVertex[0].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters);
            currentVertex[1].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters);
            currentVertex[3].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters);
            currentVertex[4].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[5], edgeParameters);
            currentVertex[4].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters);
            currentVertex[5].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[6], edgeParameters);
            currentVertex[6].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[1], edgeParameters);

            currentVertex[7].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[8], edgeParameters);
            currentVertex[8].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[9], edgeParameters);
            currentVertex[9].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[10], edgeParameters);
            currentVertex[10].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[12], edgeParameters);
            currentVertex[11].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[7], edgeParameters);
            currentVertex[12].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[11], edgeParameters);

            currentVertex[9].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[4], edgeParameters);
            currentVertex[9].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters);
            currentVertex[10].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters);
            currentVertex[10].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters);
            currentVertex[12].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters);
            currentVertex[12].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[1], edgeParameters);

            currentVertex[11].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[1], edgeParameters);
            currentVertex[11].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[6], edgeParameters);
            currentVertex[7].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[6], edgeParameters);
            currentVertex[7].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[5], edgeParameters);
            currentVertex[8].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[5], edgeParameters);
            currentVertex[8].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[4], edgeParameters);

            currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[20], edgeParameters);
            currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[19], edgeParameters);
            currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[18], edgeParameters);
            currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[21], edgeParameters);
            currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[22], edgeParameters);
            currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[23], edgeParameters);

            currentVertex[20].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[19], edgeParameters);
            currentVertex[19].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[18], edgeParameters);
            currentVertex[18].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[21], edgeParameters);
            currentVertex[21].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[22], edgeParameters);
            currentVertex[22].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[23], edgeParameters);
            currentVertex[23].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[20], edgeParameters);

            currentVertex[18].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[17], edgeParameters);
            currentVertex[18].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters);
            currentVertex[21].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters);
            currentVertex[22].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[16], edgeParameters);
            currentVertex[23].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[16], edgeParameters);
            currentVertex[23].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[15], edgeParameters);
            currentVertex[20].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[15], edgeParameters);
            currentVertex[20].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[14], edgeParameters);
            currentVertex[19].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[14], edgeParameters);
            currentVertex[19].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[17], edgeParameters);

            currentVertex[17].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters);
            currentVertex[16].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[15], edgeParameters);
            currentVertex[15].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[14], edgeParameters);
            currentVertex[14].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[17], edgeParameters);

            currentVertex[15].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[9], edgeParameters);
            currentVertex[15].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[8], edgeParameters);
            currentVertex[14].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[8], edgeParameters);
            currentVertex[14].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[7], edgeParameters);
            currentVertex[17].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[7], edgeParameters);
            currentVertex[17].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[11], edgeParameters);
            currentVertex[13].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[11], edgeParameters);
            currentVertex[13].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[12], edgeParameters);
            currentVertex[16].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[10], edgeParameters);
            currentVertex[16].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[9], edgeParameters);

            currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[10], edgeParameters);
            currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[12], edgeParameters);
            currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters);
            currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[21], edgeParameters);
            currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[22], edgeParameters);
            currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[16], edgeParameters);

            var         text           = textTextureFactory.MakeTextTexture($"Click me", true);
            const float scale          = 20;
            var         textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale));

            return(graphControler);
        }