Пример #1
0
 private void Dispose(bool disposing)
 {
     _core.Dispose();
 }
Пример #2
0
 public void Dispose()
 {
     _core.Dispose();
 }
Пример #3
0
        private static bool TryParsePrivate(ReadOnlySpan <byte> text, out ObjObjectCore obj)
        {
            ObjObjectCore core = default;

            try {
                core = new ObjObjectCore();
                var lines = text.Lines();
                foreach (Utf8Reader lineReader in lines)
                {
                    if (lineReader.MoveIfMatch((byte)'#'))
                    {
                        continue;
                    }
                    else if (lineReader.MoveIfMatch((byte)'v', (byte)' '))
                    {
                        if (TryParseVector3(lineReader.Current, out var pos) == false)
                        {
                            goto FAILURE;
                        }
                        core.Positions.Add(pos);
                    }
                    else if (lineReader.MoveIfMatch((byte)'v', (byte)'t', (byte)' '))
                    {
                        if (TryParseVector2(lineReader.Current, out var uv) == false)
                        {
                            goto FAILURE;
                        }
                        core.UVs.Add(uv);
                    }
                    else if (lineReader.MoveIfMatch((byte)'v', (byte)'n', (byte)' '))
                    {
                        if (TryParseVector3(lineReader.Current, out var normal) == false)
                        {
                            goto FAILURE;
                        }
                        core.Normals.Add(normal);
                    }
                    else if (lineReader.MoveIfMatch((byte)'f', (byte)' '))
                    {
                        if (TryParseFLine(lineReader.Current, ref core) == false)
                        {
                            goto FAILURE;
                        }
                    }
                    else
                    {
                        continue;
                    }
                }
                obj = core;
                return(true);

FAILURE:
                obj = default;
                return(false);
            }
            catch {
                core.Dispose();
                obj = default;
                return(false);
            }
        }