示例#1
0
        public void PMXParseVer20(string fileName, PMXVersion version)
        {
            Assert.Equal(version, PMXParser.GetVersion(fileName));

            using (var stream = File.OpenRead(fileName)) {
                var pmx = PMXParser.Parse(stream);
                Assert.Equal(stream.Length, stream.Position);
            }
        }
示例#2
0
        private static async UniTask Build(ModelState obj, Model3D model, Model3DLoadMeshDelegate load)
        {
            obj.CancellationToken.ThrowIfCancellationRequested();
            Debug.Assert(model.LifeState == LifeState.Activating);

            // Run on thread pool
            await UniTask.SwitchToThreadPool();

            // ------------------------------
            //      ↓ thread pool

            obj.CancellationToken.ThrowIfCancellationRequested();
            using var pmx = PMXParser.Parse(obj.File.GetStream());

            // [NOTE] Though pmx is read only, overwrite pmx data.
            PmxModelLoadHelper.ReverseTrianglePolygon(pmx.SurfaceList.AsSpan().AsWritable());
            await LoadToModel(pmx, model, load, obj);
        }