using System.Collections.Generic; using System.IO; using UnityEngine; namespace Thousandto.Editor.Test { //图集打包信息 public class PackDataInfo { public int PackImgWidth = 0; public int PackImgHeight = 0; public List SourceRectList = new List(); public List PackedRectList = new List(); public List LightmapIndexList = new List(); public List SaveFileNameList = new List(); public List LightmapPathList = new List(); public void Write(BinaryWriter bw) { bw.Write(PackImgWidth); bw.Write(PackImgHeight); WriteRectList(bw, SourceRectList); WriteRectList(bw, PackedRectList); WriteIntList(bw, LightmapIndexList); WriteStringList(bw, SaveFileNameList); WriteStringList(bw, LightmapPathList); } public void Read(BinaryReader br) { PackImgWidth = br.ReadInt32(); PackImgHeight = br.ReadInt32(); SourceRectList = ReadRectList(br); PackedRectList = ReadRectList(br); LightmapIndexList = ReadIntList(br); SaveFileNameList = ReadStrList(br); LightmapPathList = ReadStrList(br); } private static void WriteRectList(BinaryWriter bw, List rectList) { int count = rectList.Count; bw.Write(count); for (int i = 0; i < rectList.Count; ++i) { bw.Write(Mathf.RoundToInt(rectList[i].x)); bw.Write(Mathf.RoundToInt(rectList[i].y)); bw.Write(Mathf.RoundToInt(rectList[i].width)); bw.Write(Mathf.RoundToInt(rectList[i].height)); } } private static List ReadRectList(BinaryReader br) { var count = br.ReadInt32(); List rectList = new List(); for (int i = 0; i < count; ++i) { Rect rect = new Rect(br.ReadInt32(), br.ReadInt32(), br.ReadInt32(), br.ReadInt32()); rectList.Add(rect); } return rectList; } private static void WriteStringList(BinaryWriter bw, List strList) { bw.Write(strList.Count); for (int i = 0; i < strList.Count; ++i) { bw.Write(strList[i]); } } private static List ReadStrList(BinaryReader br) { var count = br.ReadInt32(); List strList = new List(); for (int i = 0; i < count; ++i) { strList.Add(br.ReadString()); } return strList; } private static void WriteIntList(BinaryWriter bw, List intList) { bw.Write(intList.Count); for (int i = 0; i < intList.Count; ++i) { bw.Write(intList[i]); } } private static List ReadIntList(BinaryReader br) { int count = br.ReadInt32(); List retList = new List(); for (int i = 0; i < count; ++i) { retList.Add(br.ReadInt32()); } return retList; } } }