コード例 #1
0
 public void Clear()
 {
     Points.Clear();
     Lines.Clear();
     Meshes.Clear();
     XAxisPoints.Clear();
     YAxisPoints.Clear();
     ZAxisPoints.Clear();
     SelectedPoints.Clear();
     SelectedLines.Clear();
     SelectedMeshes.Clear();
 }
コード例 #2
0
        /*
         * Create mesh atlas from selected meshes
         */
        private IEnumerator BuildTexture()
        {
            if (!IsReady)
            {
                yield break;
            }

            SelectedMeshes.Clear();
            foreach (var mesh in sortMeshes)
            {
                if (mesh.GetMesh() != null)
                {
                    SelectedMeshes.Add(mesh);
                    while (!mesh.IsReady)
                    {
                        yield return(null);
                    }
                }
            }
            //Create empty atlas
            int size = 2048;

            if (IsDynamicTextureAtlas())
            {
                size = SelectedMeshes.Count > 4 ? 2048 : (SelectedMeshes.Count > 1 ? 1024 : 512);
            }

            armorTexture = new Texture2D(size, size);
            if (SelectedMeshes.Count == 0)
            {
                if (armorRawImage != null)
                {
                    armorRawImage.enabled = false;
                    armorRawImage.texture = armorTexture;
                }
                yield break;
            }

            //Insert mesh textures in atlas
            int j = 0;

            foreach (var selectedMesh in SelectedMeshes)
            {
                int position = IsDynamicTextureAtlas() ? j++ : selectedMesh.MergeOrder;
                int x        = meshTextureWidth * (position % (size / meshTexturHeight));
                int y        = (size - meshTexturHeight) - (meshTexturHeight * position / size) * meshTexturHeight;

                if (IsDynamicTextureAtlas() && selectedMesh.GetMesh() == null)
                {
                    continue;
                }


                if (selectedMesh.GetMesh() != null)
                {
                    armorTexture.SetPixels32(x, y, meshTextureWidth, meshTexturHeight, selectedMesh.Texture.GetPixels32());
                }
                else
                {
                    armorTexture.SetPixels32(x, y, meshTextureWidth, meshTexturHeight, emptyPixels);
                }
            }

            armorTexture.Apply();
            if (armorRawImage != null)
            {
                armorRawImage.texture = armorTexture;
                armorRawImage.enabled = true;
            }
            UpdateModelRenderers();
        }