Exemple #1
0
        public void TestWithSimpleDirectory()
        {
            var assetPath = new UDirectory("/a/b/c");

            Assert.AreEqual("/a/b/c", assetPath.GetDirectory());
            Assert.AreEqual("/a/b/c", assetPath.FullPath);
        }
Exemple #2
0
        public void TestIsDirectoryOnly()
        {
            var dirPath = new UDirectory("/a/b/c");

            Assert.Equal("/a/b/c", dirPath.GetDirectory());

            var filePath = new UFile("/test.txt");

            Assert.Equal("/", filePath.GetDirectory());
            Assert.Equal("test.txt", filePath.GetFileName());
        }
Exemple #3
0
        public void TestWithSimpleDirectory()
        {
            var assetPath = new UDirectory("/a/b/c");

            Assert.Equal("/a/b/c", assetPath.GetDirectory());
            Assert.Equal("/a/b/c", assetPath.FullPath);
            var directory = new UDirectory("C:/a");

            Assert.Equal("/a", directory.GetDirectory());
            directory = new UDirectory("/a");
            Assert.Equal("/a", directory.GetDirectory());
        }
Exemple #4
0
        public void TestIsDirectoryOnly()
        {
            Assert.False(new UFile("/a/b/c.txt").IsDirectoryOnly);

            var dirPath = new UDirectory("/a/b/c");

            Assert.True(dirPath.IsDirectoryOnly);
            Assert.AreEqual("/a/b/c", dirPath.GetDirectory());

            var filePath = new UFile("/test.txt");

            Assert.AreEqual("/", filePath.GetDirectory());
            Assert.AreEqual("test.txt", filePath.GetFileNameWithExtension());
        }
Exemple #5
0
        /// <summary>
        /// Create the structures to perform the reductions.
        /// </summary>
        public void PrepareForFlattening(UDirectory baseDir = null)
        {
            var reducer = new MaterialTreeReducer(Material);

            reducer.ReduceTrees();
            var reducedTrees   = reducer.ReducedTrees;
            var textureVisitor = new MaterialTextureVisitor(Material);

            foreach (var materialReference in reducedTrees)
            {
                Material.Nodes[materialReference.Key] = materialReference.Value;
                textureVisitor.AssignDefaultTextureKeys(materialReference.Value);
            }

            commandList.Clear();
            textureVisitor.ResetTextureIndices();

            var basePath = (baseDir == null || baseDir.GetDirectory() == "" ? "" : baseDir.ToString() + "/") + "__reduced_textures__";

            foreach (var materialReferenceKey in Material.Nodes)
            {
                if (materialReferenceKey.Value == null)
                {
                    continue;
                }

                var materialReferenceName = materialReferenceKey.Key;
                var materialNode          = materialReferenceKey.Value;
                textureVisitor.AssignDefaultTextureKeys(materialNode);
                var nodesToReduce = reducer.GetReducibleSubTrees(materialNode);

                for (var i = 0; i < nodesToReduce.Count; ++i)
                {
                    var nodeToReduce    = nodesToReduce[i];
                    var finalTextureUrl = new UFile(basePath, materialReferenceName + "_Texture" + (nodesToReduce.Count > 1 ? i.ToString() : ""), null);
                    var infos           = new MaterialReductionInfo {
                        ToExecute = false, TextureUrl = finalTextureUrl
                    };
                    var canBeReduced = textureVisitor.HasUniqueTexcoord(nodeToReduce, out infos.TexcoordIndex);
                    infos.OldNode = nodeToReduce;

                    if (!canBeReduced)
                    {
                        continue; // throw new Exception("Unsolvable tree");
                    }
                    commandList.Add(infos);
                }
            }
        }
Exemple #6
0
 public void TestWithSimpleDirectory()
 {
     var assetPath = new UDirectory("/a/b/c");
     Assert.AreEqual("/a/b/c", assetPath.GetDirectory());
     Assert.AreEqual("/a/b/c", assetPath.FullPath);
     var directory = new UDirectory("/a");
     Assert.AreEqual("/a", directory.GetDirectory());
 }
Exemple #7
0
        public void TestIsDirectoryOnly()
        {
            Assert.False(new UFile("/a/b/c.txt").IsDirectoryOnly);

            var dirPath = new UDirectory("/a/b/c");
            Assert.True(dirPath.IsDirectoryOnly);
            Assert.AreEqual("/a/b/c", dirPath.GetDirectory());

            var filePath = new UFile("/test.txt");
            Assert.AreEqual("/", filePath.GetDirectory());
            Assert.AreEqual("test.txt", filePath.GetFileNameWithExtension());
        }