Example #1
0
    private void DrawTextureFilterMode()
    {
        GUILayout.BeginHorizontal(EditorStyles.textField);
        GUILayout.Label("过滤模式为Trilinear的纹理");

        DrawTextureProperties("t:texture", TextureSetting.FilterMode,
                              (path) =>
        {
            if (Texture2DExtension.FilterModeIsTrilinear(path))
            {
                _textureSettingPaths.Add(path);
            }
        },
                              (path) =>
        {
            Texture2DExtension.SetFilterMode(path);
        }
                              );

        GUILayout.EndHorizontal();

        DrawTextureScrollList(TextureSetting.FilterMode, (path) =>
        {
            Texture2DExtension.SetFilterMode(path);
        });
    }
Example #2
0
    private void DrawTextureCompression()
    {
        GUILayout.BeginHorizontal(EditorStyles.textField);
        GUILayout.Label("使用非压缩格式的纹理");

        DrawTextureProperties("t:texture", TextureSetting.Compression,
                              (path) =>
        {
            if (Texture2DExtension.IsCompression(path))
            {
                _textureSettingPaths.Add(path);
            }
        },
                              (path) =>
        {
            Texture2DExtension.SetCompression(path);
        }
                              );

        GUILayout.EndHorizontal();

        DrawTextureScrollList(TextureSetting.Compression, (path) =>
        {
            Texture2DExtension.SetCompression(path);
        });
    }
Example #3
0
    private void DrawTextureReadWrite()
    {
        GUILayout.BeginHorizontal(EditorStyles.textField);
        GUILayout.Label("开启Read/Write选项的纹理");

        DrawTextureProperties("t:texture", TextureSetting.ReadWrite,
                              (path) =>
        {
            if (Texture2DExtension.IsReadable(path))
            {
                _textureSettingPaths.Add(path);
            }
        },
                              (path) =>
        {
            Texture2DExtension.SetReadable(path);
        }
                              );

        GUILayout.EndHorizontal();

        DrawTextureScrollList(TextureSetting.ReadWrite, (path) =>
        {
            Texture2DExtension.SetReadable(path);
        });
    }
Example #4
0
    private void DrawTextureWrapMode()
    {
        GUILayout.BeginHorizontal(EditorStyles.textField);
        GUILayout.Label("Wrap模式为Repeat的纹理");

        DrawTextureProperties("t:texture", TextureSetting.WrapMode,
                              (path) =>
        {
            if (Texture2DExtension.WrapModeIsRepeat(path))
            {
                _textureSettingPaths.Add(path);
            }
        },
                              (path) =>
        {
            Texture2DExtension.SetWrapMode(path);
        }
                              );

        GUILayout.EndHorizontal();

        DrawTextureScrollList(TextureSetting.WrapMode, (path) =>
        {
            Texture2DExtension.SetWrapMode(path);
        });
    }
        private DecembristVertex AddPeople(TextTextureFactory textTextureFactory, UnityEngine.Object man, GraphForBillboardVertexes graphController, Texture2D selectFrame, bool isDec)
        {
            var         picked = (Texture2D)man;
            var         name   = textTextureFactory.MakeTextTexture(picked.name.Replace(',', '\n').Replace(' ', '\n').Replace("\n\n", "\n"), true);
            const float scale  = 15f;

            var resizedTexture = Texture2DExtension.ResizeTexture(picked, name.width, picked.height / picked.width * name.width);
            var image1         = new PositionedImage[2] {
                (resizedTexture, new Vector2Int(0, name.height)), (name, new Vector2Int(0, 0))
            };
            var image2 = new PositionedImage[1] {
                (selectFrame, Vector2Int.zero)
            };

            var width  = Math.Max(resizedTexture.width, name.width);
            var height = resizedTexture.height + name.height;

            var comIm1   = new CombinedImages(image1, width, height, initTransparentBackground: true);
            var billPar1 = new BillboardParameters[1] {
                new BillboardParameters(Texture2DExtension.CombineTextures(comIm1), Vector4.zero, new Vector2(scale, height * scale / width), 0.1f, false, Color.white)
            };

            var comIm2   = new CombinedImages(image2, selectFrame.width, selectFrame.height, initTransparentBackground: true);
            var value    = Mathf.Max(scale + 3.5f, height * scale / width + 3.5f);
            var billPar2 = new BillboardParameters(Texture2DExtension.CombineTextures(comIm2), Vector4.zero, new Vector2(value, value), 0.1f, true, Color.red);

            var verPar = new SelectableVertexParameters(billPar1, billPar2);
            var vertex = graphController.SpawnVertex <DecembristVertex, SelectableVertexParameters>(verPar);

            vertex.IsDec = isDec;
            vertex.Name  = picked.name;

            return(vertex);
        }
Example #6
0
        public void CreateVertex()
        {
            var texture = _defaultTexture;

            if (!string.IsNullOrEmpty(_imagePath.text))
            {
                texture      = Texture2D.whiteTexture;
                using var fs = new FileStream(_imagePath.text, FileMode.Open);
                var bytes = new byte[fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                texture.LoadImage(bytes);
            }

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

            selectFrame.name = "SelectFrame";

            var TextTextureFactory = new TextTextureFactory(customFont, 0);

            var imageParameters       = new BillboardParameters(texture, scale: _scale.Vector * 3f);
            var selectFrameParameters = new BillboardParameters(selectFrame, scale: _scale.Vector * 6f, isMonoColor: true, useCache: false);

            var   text           = TextTextureFactory.MakeTextTexture(_name.text, true);
            float scale          = 10;
            var   textParameters = new BillboardParameters(text, new Vector4(0, -Mathf.Max(_scale.Vector.x, _scale.Vector.y) - 10, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale));

            var currentVertex = AbstractGraph.GetComponent <AbstractGraph>().SpawnVertex <SelectableVertex, SelectableVertexParameters>(
                new SelectableVertexParameters(new[] { imageParameters, textParameters }, selectFrameParameters, _positon.Vector));
        }
Example #7
0
        public override Texture2D CreateTexture(int width, int height)
        {
            var tex = Texture2DExtension.Create(width, height, textureFormat, useMipMap, linear);

            ApplyToNew(tex);
            return(tex);
        }
Example #8
0
 protected virtual void CaptureDirect(RenderTexture src)
 {
     using (var tex = new ScopedObject <Texture2D>(
                Texture2DExtension.Create(src.width, src.height, TextureFormat.ARGB32, false, false)))
         using (new RenderTextureActivator(src)) {
             tex.Data.ReadPixels(new Rect(0, 0, src.width, src.height), 0, 0);
             serializer.Serialize(tex);
         }
 }
Example #9
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);
        }
    private void DrawBoundingBoxesOnCanvas(BoundingBoxXYWH box)
    {
        // Check the bounds of bounding box
        // Give buffer for line drawing to prevent wrap around
        int x1 = box.X > 0.0f ? (int)box.X : 3;
        int y1 = box.Y > 0.0f ? (int)box.Y : 3;
        int x2 = (box.Width + x1) > textureSize.x ? (int)(textureSize.x) - 3 : (int)(box.Width + x1);
        int y2 = (box.Height + y1) > textureSize.y ? (int)(textureSize.y) - 3 : (int)(box.Height + y1);

        Debug.LogFormat("x1: {0}, y1: {1}, x2: {2}, y2: {3}", x1, y1, x2, y2);

        // Plot on texture
        var topLeft     = new Vector2(x1, y1);
        var bottomRight = new Vector2(x2, y2);

        _texture = Texture2DExtension.Box(
            _texture,
            topLeft,
            bottomRight,
            box.color);

        // Create a new 3D text object at position and
        // set the label string.Canvas is scaled to x = -0.5, 5
        // and y = -0.5, 0.5.
        var xText           = ((topLeft.x / textureSize.x) - 0.5f) + 0.01f;
        var yText           = 0.5f - (1.0f - (topLeft.y / textureSize.y));
        var thisBoundingBox = Instantiate(
            textBoxPrefab,
            Vector3.zero,
            Quaternion.identity,
            this.gameObject.transform) as GameObject;

        thisBoundingBox.transform.localPosition = new Vector3(xText, yText, 0f);

        // Set the label of the bounding box.
        thisBoundingBox.GetComponent <TextMesh>().text  = box.label;
        thisBoundingBox.GetComponent <TextMesh>().color = box.color;

        // Move the gameobject to become visible
        this.gameObject.transform.localPosition += new Vector3(0, 0, -0.002f);
    }
    // Start is called before the first frame update
    void Start()
    {
        // Get material component from attached game object via the mesh renderer.
        _material = this.gameObject.GetComponent <MeshRenderer>().material;

        // Create a new texture instance with same size as the canvas.
        _texture = new Texture2D((int)textureSize.x, (int)textureSize.y);

        // Set the texture to transparent (with helper method)
        _texture = Texture2DExtension.TransparentTexture(_texture);

        // Draw bounding boxes at specified coordinates.
        foreach (var box in boundingBoxes)
        {
            DrawBoundingBoxesOnCanvas(box);
        }

        // Apply and set main material texture;
        _texture.Apply();
        _material.mainTexture = _texture;

        ScreenCapture.CaptureScreenshot("Assets/catBoundingBox.jpg");
    }
        public override void InitTask()
        {
            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("Arial", 32);
            var mainTexture = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 800, 800);

            mainTexture.name = "Target";
            var dotTexture = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 800, 800);

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

            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         text           = textTextureFactory.MakeTextTexture($"Select Me", 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), isMonoColor: true, monoColor: Color.white);

            _selectableVertex = graphControler.SpawnVertex <SelectableVertex, SelectableVertexParameters>(
                new SelectableVertexParameters(new[] { imageParameters, textParameters }, selectFrameParameters, new Vector3(-20, 20)));

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

            text           = textTextureFactory.MakeTextTexture($"Dot 1", true);
            textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white);
            _dot1          = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(
                new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(0, 20)));

            text           = textTextureFactory.MakeTextTexture($"Dot 2", true);
            textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white);
            _dot2          = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(
                new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(20, 20)));

            text           = textTextureFactory.MakeTextTexture($"Move me", true);
            textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white);
            _moveVertex    = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(
                new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(30, 20, -10)));

            text           = textTextureFactory.MakeTextTexture($"Click me", true);
            textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white);
            var clickVeretex = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(
                new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(-50, 20, -10)));

            var snowPref = Resources.Load <GameObject>(@"Prefabs\Snowflake");

            clickVeretex.gameObject.AddComponent <Button3D>().Action = (g) => { _clickCount++; Destroy(Instantiate(snowPref, clickVeretex.transform.position, Quaternion.identity), 2); };

            var colors = new List <Color>(7)
            {
                new Color(1f, 0f, 0f),
                new Color(1f, 127f / 255f, 0f),
                new Color(1f, 1f, 0f),
                new Color(0f, 1f, 0f),
                new Color(0f, 0f, 1f),
                new Color(75f / 255f, 0f, 130f / 255f),
                new Color(143f, 0f, 1f),
            };

            var edgeTypes = new List <(Type type, EdgeParameters parameters)>(1)
            {
                (typeof(StretchableEdge), new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.white), new SpringParameters(1, 10)))
            };

            var player = CreatePlayer();

            player.SetupParams(new PlayerParameters(Vector3.zero, Vector3.zero, SceneParametersContainer.PlayerSpeed, 20, isVR: SceneParametersContainer.IsVR,
                                                    new ToolConfig[4]
            {
                new ToolConfig(typeof(SelectItemTool), new SelectItemToolParams(colors)),
                new ToolConfig(typeof(GrabItemTool), new GrabItemToolParams()),
                new ToolConfig(typeof(EdgeCreaterTool), new EdgeCreaterToolParams(edgeTypes)),
                new ToolConfig(typeof(ClickTool), new ClickToolParams())
            }));
        }
Example #13
0
        public override void InitTask()
        {
            var player     = CreatePlayer();
            var toolConfig = new ToolConfig(typeof(ClickTool), new ClickToolParams());

            player.SetupParams(new PlayerParameters(new Vector3(0, 0, -50), Vector3.zero, SceneParametersContainer.PlayerSpeed, sceneInfo: "Hub scene", isVR: SceneParametersContainer.IsVR, toolConfigs: new[] { toolConfig }));

            //ToDo : Replace with auto generation
            var customFont         = FontsGenerator.GetOrCreateFont("Arial", 128);
            var textTextureFactory = new TextTextureFactory(customFont, 0);
            {
                var graph          = new GameObject("Tutorial tasks");
                var graphControler = graph.AddComponent <GraphForBillboardVertexes>();
                graphControler.ColliderEnable = false;
                Graphs.Add(graphControler);
                var baseScale = Vector2.one;
                graphControler.SetupParams(new GraphParameters(new Vector3(-20, 0, 0), "Tutorial tasks"));

                var text             = textTextureFactory.MakeTextTexture("Tools test", true);
                var mainTexture      = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 400, 400);
                var imageParameters  = new BillboardParameters(mainTexture, Vector4.zero, new Vector2(9, 2), useCache: true);
                var textParameters   = new BillboardParameters(text, Vector4.zero, new Vector2(4, 0.4f), useCache: false, isMonoColor: true, monoColor: Color.white);
                var vertexParameters = new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(-30, 18, 0));
                var toolsTest        = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(vertexParameters);
                toolsTest.gameObject.AddComponent <Button3D>().Action = (gameObject) => SceneLoader.Instance.LoadScene <ToolTestTasks>();

                text             = textTextureFactory.MakeTextTexture("Movement test", true);
                textParameters   = new BillboardParameters(text, Vector4.zero, new Vector2(4, 0.4f), isMonoColor: true, monoColor: Color.white, useCache: false);
                vertexParameters = new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(-20, 9, 0));
                var movementTest = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(vertexParameters);
                movementTest.gameObject.AddComponent <Button3D>().Action = (gameObject) => SceneLoader.Instance.LoadScene <MovementTestTask>();

                movementTest.Link <StretchableEdge, StretchableEdgeParameters>(toolsTest, new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.green), new SpringParameters(1, 5)));
            }

            {
                var graph          = new GameObject("Beautiful scenes");
                var graphControler = graph.AddComponent <GraphForBillboardVertexes>();
                graphControler.ColliderEnable = false;
                Graphs.Add(graphControler);
                var baseScale = Vector2.one;
                graphControler.SetupParams(new GraphParameters(new Vector3(20, 0, 0), "Beautiful scenes"));
                var text             = textTextureFactory.MakeTextTexture("Plants Kingdom", true);
                var mainTexture      = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 400, 400);
                var imageParameters  = new BillboardParameters(mainTexture, Vector4.zero, new Vector2(9, 2), useCache: true);
                var textParameters   = new BillboardParameters(text, Vector4.zero, new Vector2(4, 0.4f), useCache: false, isMonoColor: true, monoColor: Color.white);
                var vertexParameters = new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(10, 10, 0));
                var v1 = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(vertexParameters);
                v1.gameObject.AddComponent <Button3D>().Action = (gameObject) => SceneLoader.Instance.LoadScene <PlantsKingdom>();

                text             = textTextureFactory.MakeTextTexture("Social graph 1", true);
                textParameters   = new BillboardParameters(text, Vector4.zero, new Vector2(4, 0.4f), isMonoColor: true, monoColor: Color.white, useCache: false);
                vertexParameters = new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(30, 19, 0));
                var v2 = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(vertexParameters);
                v2.gameObject.AddComponent <Button3D>().Action = (gameObject) => SceneLoader.Instance.LoadScene <OneGroupEnemyAndFriendsScene>();

                text             = textTextureFactory.MakeTextTexture("Social graph 2", true);
                textParameters   = new BillboardParameters(text, Vector4.zero, new Vector2(4, 0.4f), isMonoColor: true, monoColor: Color.white, useCache: false);
                vertexParameters = new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(20, 28, 0));
                var v3 = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(vertexParameters);
                v3.gameObject.AddComponent <Button3D>().Action = (gameObject) => SceneLoader.Instance.LoadScene <MultyGroupFriendsScene>();

                v1.Link <StretchableEdge, StretchableEdgeParameters>(v2, new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.green), new SpringParameters(1, 5)));
                v2.Link <StretchableEdge, StretchableEdgeParameters>(v1, new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.green), new SpringParameters(1, 5)));
                v1.Link <StretchableEdge, StretchableEdgeParameters>(v3, new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.green), new SpringParameters(1, 5)));
                v3.Link <StretchableEdge, StretchableEdgeParameters>(v1, new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.green), new SpringParameters(1, 5)));
                v2.Link <StretchableEdge, StretchableEdgeParameters>(v3, new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.green), new SpringParameters(1, 5)));
                v3.Link <StretchableEdge, StretchableEdgeParameters>(v2, new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.green), new SpringParameters(1, 5)));
            }
        }
Example #14
0
    private static void CreateSpriteSheetAtlasUniform()
    {
        List <Texture2D> textures = new List <Texture2D> ();

        Object[] selectedObjects = Selection.objects;
        foreach (Object obj in selectedObjects)
        {
            if (obj is Texture2D)
            {
                TextureImporter importer = (TextureImporter)AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(obj));
                if (importer != null)
                {
                    importer.textureType   = TextureImporterType.Default;
                    importer.npotScale     = TextureImporterNPOTScale.None;
                    importer.textureFormat = TextureImporterFormat.RGBA32;
                    importer.mipmapEnabled = false;
                    importer.isReadable    = true;

                    AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(obj));
                    AssetDatabase.Refresh();
                }

                textures.Add(obj as Texture2D);
            }
        }
        textures.Sort((x, y) => string.Compare(x.name, y.name));
        string path = AssetDatabase.GetAssetPath(textures[0]);

        path = path.Remove(path.LastIndexOf('/'));

        Vector2 maxSize       = Texture2DExtension.GetMaxSize(textures.ToArray());
        float   max           = (maxSize.x > maxSize.y ? maxSize.x : maxSize.y);
        int     framesPerLine = Mathf.CeilToInt(Mathf.Sqrt(textures.Count));
        int     textureSize   = Mathf.CeilToInt(framesPerLine * max);

        Texture2D atlas = new Texture2D(textureSize, textureSize, TextureFormat.RGBA32, false);

        Color[] colors = new Color[textureSize * textureSize];
        for (int i = 0; i < colors.Length; i++)
        {
            colors[i] = Color.clear;
        }
        atlas.SetPixels(colors);
        atlas.Apply();

        Rect[] rects = atlas.PackTextures(textures.ToArray(), 0, true);

        byte[] bytes = atlas.EncodeToPNG();
        System.IO.File.WriteAllBytes(path + "/atlas.png", bytes);

        AssetDatabase.Refresh();
        TextureImporter tempImporter = (TextureImporter)AssetImporter.GetAtPath(path + "/atlas.png");

        if (tempImporter != null)
        {
            tempImporter.textureType      = TextureImporterType.Sprite;
            tempImporter.spriteImportMode = SpriteImportMode.Multiple;
            tempImporter.maxTextureSize   = textureSize;

            int count             = textures.Count;
            SpriteMetaData[] meta = new SpriteMetaData[count];
            for (int i = 0; i < count; i++)
            {
                meta[i].name      = i.ToString();
                meta[i].alignment = (int)SpriteAlignment.Center;
                meta[i].pivot     = Vector2.zero;
                meta[i].rect      = rects[i];
            }

            tempImporter.spritesheet = meta;
            AssetDatabase.ImportAsset(path + "/atlas.png");
            AssetDatabase.Refresh();
        }
    }
Example #15
0
 private void Awake()
 {
     _defaultTexture ??= Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 200, 200);
     _button.onClick.AddListener(CreateVertex);
 }
        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);
        }