Ejemplo n.º 1
0
        private void ParseLine(string keyword, string data)
        {
            switch (keyword)
            {
            case "v":
                if (isLastLineAFace)
                {
                    graphObject.Groups.Add(group);
                    group           = new Group();
                    isLastLineAFace = false;
                }
                group.Vertices.Add(VertexParser.Parse(data));
                break;

            case "vt":
                group.VertexTextures.Add(VertexTextureParser.Parse(data));
                break;

            case "vn":
                group.VertexNormals.Add(VertexNormalParser.Parse(data));
                break;

            case "f":
                group.Faces.Add(FaceParser.Parse(data));
                isLastLineAFace = true;
                break;

            default:
                break;
            }
        }
Ejemplo n.º 2
0
 public override void BuildMesh(Mesh mesh)
 {
     if (parser is VertexParser)
     {
         VertexParser p = parser as VertexParser;
         mesh.vertices  = p.vertexs.ToArray();
         mesh.triangles = p.triangles.ToArray();
     }
 }
Ejemplo n.º 3
0
        public IOmeLoader Create( )
        {
            var dataStore      = new DataStore();
            var octreeParser   = new OctreeParser(dataStore);
            var triangleParser = new TriangleParser(dataStore);
            var indexParser    = new IndexParser(dataStore);
            var vertexParser   = new VertexParser(dataStore);

            return(new OmeLoader(dataStore, octreeParser, triangleParser, indexParser, vertexParser));
        }
Ejemplo n.º 4
0
        public ObjLoader Create(MaterialStreamProvider materialStreamProvider)
        {
            var dataStore     = new DataStore(_name);
            var faceParser    = new FaceParser(dataStore);
            var groupParser   = new GroupParser(dataStore);
            var normalParser  = new NormalParser(dataStore);
            var textureParser = new TextureParser(dataStore);
            var vertexParser  = new VertexParser(dataStore);

            var materialLibraryLoader       = new MaterialLibraryLoader(dataStore);
            var materialLibraryLoaderFacade = new MaterialLibraryLoaderFacade(materialLibraryLoader, materialStreamProvider);
            var materialLibraryParser       = new MaterialLibraryParser(materialLibraryLoaderFacade);
            var useMaterialParser           = new UseMaterialParser(dataStore);

            return(new ObjLoader(dataStore, faceParser, groupParser, normalParser, textureParser, vertexParser, materialLibraryParser, useMaterialParser));
        }
Ejemplo n.º 5
0
        public void SetUp()
        {
            _textureDataStore = new DataStore();

            _faceParser                = new FaceParser(_textureDataStore);
            _groupParser               = new GroupParser(_textureDataStore);
            _normalParser              = new NormalParser(_textureDataStore);
            _textureParser             = new TextureParser(_textureDataStore);
            _vertexParser              = new VertexParser(_textureDataStore);
            _materialStreamProviderSpy = new MaterialStreamProviderSpy();
            _materialStreamProviderSpy.StreamToReturn = CreateMemoryStreamFromString(MaterialLibraryString);

            _materialLibraryLoader       = new MaterialLibraryLoader(_textureDataStore);
            _materialLibraryLoaderFacade = new MaterialLibraryLoaderFacade(_materialLibraryLoader, _materialStreamProviderSpy);
            _materialLibraryParser       = new MaterialLibraryParser(_materialLibraryLoaderFacade);
            _useMaterialParser           = new UseMaterialParser(_textureDataStore);

            _loader = new Loader.Loaders.ObjLoader(_textureDataStore, _faceParser, _groupParser, _normalParser, _textureParser, _vertexParser, _materialLibraryParser, _useMaterialParser);
        }
Ejemplo n.º 6
0
        public void AddVertCoords(IEnumerable <string> vertices)
        {
            var tmpVertex = vertices.ToArray();

            try
            {
                if (tmpVertex.Length != 3)
                {
                    throw new ArgumentException();
                }
                var vert3 = VertexParser.Parse(tmpVertex[0], tmpVertex[1], tmpVertex[2]);
                VertCoords.Add(vert3);
            }
            catch
            {
                _vertCoordsDamaged.Add(VertCoords.Count, string.Join(" ", vertices));
                VertCoords.Add(Vector3.Zero);
            }
        }
Ejemplo n.º 7
0
        public void AddTextCoords(IEnumerable <string> vertices)
        {
            string[] tmpVertex = vertices.ToArray();

            try
            {
                if (tmpVertex.Length != 2 && tmpVertex.Length != 3)
                {
                    throw new ArgumentException();
                }
                Vector2 vert2 = VertexParser.Parse(tmpVertex[0], tmpVertex[1]);
                TexCoords.Add(vert2);
            }
            catch
            {
                texCoordsDamaged.Add(TexCoords.Count, String.Join(" ", vertices));
                //Console.WriteLine(String.Join(" ", vertexes));
                TexCoords.Add(Vector2.Zero);
            }
        }
Ejemplo n.º 8
0
        public void AddNormals(IEnumerable <string> vertices)
        {
            string[] tmpVertex = vertices.ToArray();

            try
            {
                if (tmpVertex.Length != 3)
                {
                    throw new ArgumentException();
                }
                Vector3 vert3 = VertexParser.Parse(tmpVertex[0], tmpVertex[1], tmpVertex[2]);
                Normals.Add(vert3);
            }
            catch
            {
                normalsDamaged.Add(Normals.Count, String.Join(" ", vertices));
                //Console.WriteLine(String.Join(" ", vertexes));
                Normals.Add(Vector3.Zero);
            }
        }
Ejemplo n.º 9
0
 public ObjLoader(
     DataStore dataStore,
     FaceParser faceParser,
     GroupParser groupParser,
     NormalParser normalParser,
     TextureParser textureParser,
     VertexParser vertexParser,
     MaterialLibraryParser materialLibraryParser,
     UseMaterialParser useMaterialParser)
 {
     _dataStore = dataStore;
     SetupTypeParsers(
         vertexParser,
         faceParser,
         normalParser,
         textureParser,
         groupParser,
         materialLibraryParser,
         useMaterialParser);
 }
Ejemplo n.º 10
0
        public void SetUp()
        {
            _vertexDataStoreMock = new VertexDataStoreMock();

            _vertexParser = new VertexParser(_vertexDataStoreMock);
        }