// public override void LoadData(ref BinaryReader br) // { // for (int nIndex = 0; nIndex < m_layerData.VertexCountX * m_layerData.VertexCountZ; nIndex++) // { // ushort uValue = br.ReadUInt16(); // if (uValue == (ushort)AreaType.eBlock) // { // m_layerData.SetFlag(nIndex, true); // } // else // { // m_layerData.SetFlag(nIndex, false); // } // } // } public override void SaveData(ref string path) { // mps 阻挡数据 LayerData layerData = m_layerData; uint MAP_VERSION = 6; uint MAP_MAGIC = BitConverter.ToUInt32(Encoding.ASCII.GetBytes("SPMX"), 0); int nOffset = 0; FileStream fs = new FileStream(path, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); bw.Write(BitConverter.GetBytes(MAP_MAGIC), nOffset, 4); bw.Write(BitConverter.GetBytes(MAP_VERSION), nOffset, 4); bw.Write(BitConverter.GetBytes(layerData.GridX), nOffset, 4); bw.Write(BitConverter.GetBytes(layerData.GridZ), nOffset, 4); for (int z = 0; z < layerData.GridZ; z++) { for (int x = 0; x < layerData.GridX; x++) { GridInfo pTemp = layerData.GetGrid(x, z); bw.Write(BitConverter.GetBytes(pTemp.IsMask ? (ushort)Layer : (ushort)0), nOffset, 2); } } bw.Close(); fs.Close(); }
void CreateTerrainBlocks(LayerData data) { m_TerrainBlocks = new TerrainBlock[data.BlockNumX * data.BlockNumZ]; for (int z = 0; z < data.BlockNumZ; z++) { for (int x = 0; x < data.BlockNumX; x++) { TerrainBlock grid = new TerrainBlock(data, m_obj.transform, x, z); m_TerrainBlocks[x + z * (int)data.BlockNumX] = grid; } } OnTerrain(); }
public static bool GetNodeBound(LayerData layerData, int width, int height, ref int nStartX, ref int nEndX, ref int nStartZ, ref int nEndZ) { if (height < 0 || height > layerData.BlockNumZ) { return(false); } if (width < 0 || width > layerData.BlockNumX) { return(false); } nStartX = width * (int)TerrainBlock.GRID_NUM; nStartZ = height * (int)TerrainBlock.GRID_NUM; nEndX = nStartX + (int)TerrainBlock.GRID_NUM; nEndZ = nStartZ + (int)TerrainBlock.GRID_NUM; return(true); }
// public override void LoadData(ref BinaryReader br) // { // for (int nIndex = 0; nIndex < m_layerData.VertexCountX * m_layerData.VertexCountZ; nIndex++) // { // ushort uValue = br.ReadUInt16(); // if (uValue == (ushort)AreaType.eSafe) // { // m_layerData.SetFlag(nIndex, true); // } // else // { // m_layerData.SetFlag(nIndex, false); // } // } // } public override void SaveData(ref string path) { // mps 阻挡数据 LayerData blockData = m_layerData; int nOffset = 0; FileStream fs = new FileStream(path, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); for (int z = 0; z < blockData.GridZ; z++) { for (int x = 0; x < blockData.GridZ; x++) { GridInfo pTemp = blockData.GetGrid(x, z); bw.Write(BitConverter.GetBytes(pTemp.IsMask ? (ushort)Layer : (ushort)0), nOffset, 2); } } bw.Close(); fs.Close(); }
public TerrainBlock(LayerData data, Transform parent, int x, int z) { m_layerData = data; m_GameObject = new GameObject(); m_GameObject.name = string.Format("x{0}_z{1}", x, z); m_GameObject.transform.parent = parent; m_GameObject.hideFlags = HideFlags.NotEditable; m_meshFilter = m_GameObject.AddComponent <MeshFilter>(); m_meshFilter.mesh = m_Mesh = CreatePlaneMesh(1, 1); m_GameObject.AddComponent <MeshRenderer>().material = new Material(Shader.Find("Custom/ForMapEditor")); m_GameObject.AddComponent <MeshCollider>(); m_x = x; m_z = z; Vector3 pos = Vector3.zero; pos.x = GetOffsetX(x); pos.z = -GetOffsetX(z); m_GameObject.transform.position = pos; bUpdate = true; }
public void Create(uint blockNumX, uint blockNumZ) { m_layerData = new LayerData(m_layerType, blockNumX, blockNumZ); CreateTerrainBlocks(m_layerData); }