public void Arguments()
        {
            var context  = new TestImporterContext("TestObj", "TestBin");
            var importer = new OpenAssetImporter();

            Assert.Throws <ArgumentNullException>(() => importer.Import(null, context));
            Assert.Throws <FileNotFoundException>(() => importer.Import("does_not_exist", context));
            Assert.Throws <ArgumentNullException>(() => importer.Import("file", null));
        }
예제 #2
0
        public override NodeContent Import(string filename, ContentImporterContext context)
        {
            if (filename == null)
            {
                throw new ArgumentNullException(nameof(filename));
            }
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var importer = new OpenAssetImporter("FbxImporter", true);

            return(importer.Import(filename, context));
        }
        public void BlenderTests()
        {
            var context  = new TestImporterContext("TestObj", "TestBin");
            var importer = new OpenAssetImporter();

            var nodeContent = importer.Import("Assets/Models/Box.blend", context);

            Assert.NotNull(nodeContent);
            Assert.AreEqual("Cube", nodeContent.Name);
            Assert.AreEqual(0, nodeContent.Children.Count);
            Assert.AreEqual(Matrix.Identity, nodeContent.Transform);
            Assert.AreEqual(Matrix.Identity, nodeContent.AbsoluteTransform);
            Assert.NotNull(nodeContent.Parent);
            Assert.AreEqual("<BlenderRoot>", nodeContent.Parent.Name);

            var meshContent = nodeContent as MeshContent;

            Assert.NotNull(meshContent);
            Assert.AreEqual(1, meshContent.Geometry.Count);
            Assert.AreEqual(0, meshContent.Animations.Count);
            Assert.AreEqual(28, meshContent.Positions.Count);

            var geometry = meshContent.Geometry[0];

            Assert.IsNull(geometry.Name);
            Assert.AreEqual(108, geometry.Indices.Count);
            Assert.AreEqual(28, geometry.Vertices.VertexCount);

            Assert.IsNotNull(geometry.Material);
            Assert.AreEqual("Material", geometry.Material.Name);
            Assert.AreEqual(5, geometry.Material.OpaqueData.Count);
            Assert.AreEqual(new Vector3(1.65732033E-07f, 1, 0), geometry.Material.OpaqueData["DiffuseColor"]);
            Assert.AreEqual(Vector3.Zero, geometry.Material.OpaqueData["AmbientColor"]);
            Assert.AreEqual(Vector3.One, geometry.Material.OpaqueData["ReflectiveColor"]);
            Assert.AreEqual(Vector3.One, geometry.Material.OpaqueData["SpecularColor"]);
            Assert.AreEqual(50.0f, geometry.Material.OpaqueData["Shininess"]);
        }
예제 #4
0
        /// <summary>
        /// Called by the XNA Framework when importing a .x file to be used as a game asset. This is the method called by the XNA Framework when an asset is to be imported into an object that can be recognized by the Content Pipeline.
        /// </summary>
        /// <param name="filename">Name of a game asset file.</param>
        /// <param name="context">Contains information for importing a game asset, such as a logger interface.</param>
        /// <returns>Resulting game asset.</returns>
        public override NodeContent Import(string filename, ContentImporterContext context)
        {
            var importer = new OpenAssetImporter("XImporter", true);

            return(importer.Import(filename, context));
        }