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);
- }
- }
- }
|