| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | /************************************************************************* *  Copyright © 2018-2023 Liwen All rights reserved. *------------------------------------------------------------------------ *  File         :  B3dmFileLoader.cs *  Description  :  load b3dm format tile info  *------------------------------------------------------------------------ *  Author       :  Liwen *  Version      :  1.0.0 *  Date         :  1/5/2019 *  Description  :  Initial development version. *************************************************************************/using System.Collections;using System.Collections.Generic;using UnityEngine;using System;using System.Runtime.InteropServices;using System.Linq;using System.IO;namespace AIPagedLod{    public class B3dmFileLoader : PagedLodFileLoader    {        public B3dmFileLoader()        {        }        public B3dmFileLoader(string fileName)        {            mFileName = fileName;        }        public override void LoadObjectMeshInfo()        {            IntPtr ptr = B3dmLoader.OpenB3dmFile(mFileName);            if (ptr == IntPtr.Zero)            {                Debug.LogError("OpenB3dmFile failure " + mFileName);                return;            }            LoadObjectMeshInfoFromPtr(ptr);            B3dmLoader.CloseB3dmFile(ptr);        }        private void LoadObjectMeshInfoFromPtr(IntPtr ptr)        {            int meshCount = B3dmLoader.GetMeshCount(ptr);            for (int i = 0; i < meshCount; ++i)            {                TileObjectInfo info = new TileObjectInfo();                info.mVertices = B3dmLoader.GetVertexs(ptr, i, mIsDaJiangData);                info.mTriangles = B3dmLoader.GetTriangles(ptr, i, mIsDaJiangData);                info.mTexCoords = B3dmLoader.GetTexCoords(ptr, i);                info.mImageResolutionS = B3dmLoader.GetImageResolutionS(ptr, i);                info.mImageResolutionT = B3dmLoader.GetImageResolutionT(ptr, i);                info.mImageData = B3dmLoader.GetImageData(ptr, i);                info.mTextureFormat = B3dmLoader.GetImageFormat(ptr, i);                info.mUnityTextureFormat = TextureFormat.RGBA32;                mObjectInfoList.Add(info);            }        }        public void LoadObjectMeshInfoFromData(byte[] data)        {            IntPtr ptr = B3dmLoader.LoadB3dmFromData(ref data[0], data.Length);            if (ptr == IntPtr.Zero)            {                Debug.LogError("OpenB3dmFile failure--------------");                return;            }            LoadObjectMeshInfoFromPtr(ptr);            B3dmLoader.CloseB3dmFile(ptr);        }    }}
 |