Ejemplo n.º 1
0
        //     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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        //     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();
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
 public void Create(uint blockNumX, uint blockNumZ)
 {
     m_layerData = new LayerData(m_layerType, blockNumX, blockNumZ);
     CreateTerrainBlocks(m_layerData);
 }