public Chunk(Vector2 cord, int size, LODinfo [] Levels, Transform parent, Material Mat)
        {
            this.Levels = Levels;
            position    = cord * size;
            bounds      = new Bounds(position, Vector2.one * size);
            Vector3 pos3D = new Vector3(position.x, 0, position.y);

            meshObj                      = new GameObject("chunk");
            meshRenderer                 = meshObj.AddComponent <MeshRenderer>();
            meshFilter                   = meshObj.AddComponent <MeshFilter>();
            collider                     = meshObj.AddComponent <MeshCollider>();
            meshRenderer.material        = Mat;
            meshObj.transform.position   = pos3D * scale;
            meshObj.transform.parent     = parent;
            meshObj.transform.localScale = Vector3.one * scale;
            setvisable(false);
            LODMeshes = new LODmesh[Levels.Length];



            for (int i = 0; i < Levels.Length; i++)
            {
                LODMeshes[i] = new LODmesh(Levels[i].LOD, updateChunk);
                if (Levels[i].useForCollider)
                {
                    LODcollider = LODMeshes[i];
                }
            }
            MapGen.RequsetMap(position, OnMapDataRevired);
        }
        /*
         * void OnMesh(MeshData meshData){
         *      meshFilter.mesh = meshData.CreateMesh();
         *
         * }
         */

        public void updateChunk()
        {
            float viewNear = Mathf.Sqrt(bounds.SqrDistance(viewerPos));
            bool  visable  = viewNear <= MaxView;

            setvisable(visable);
            if (HasMapDataChunck)
            {
                if (visable)
                {
                    int LevelsIndex = 0;
                    for (int i = 0; i < Levels.Length - 1; i++)
                    {
                        if (viewNear > Levels[i].visableDstTreshhold)
                        {
                            LevelsIndex = i + 1;
                        }
                        else
                        {
                            break;
                        }
                    }
                    if (LevelsIndex != PreLevelsIndex)
                    {
                        LODmesh lodMesh = LODMeshes[LevelsIndex];
                        if (lodMesh.HasMesh)
                        {
                            PreLevelsIndex      = LevelsIndex;
                            meshFilter.mesh     = lodMesh.mesh;
                            collider.sharedMesh = lodMesh.mesh;
                        }
                        else if (!lodMesh.requestedMesh)
                        {
                            lodMesh.requestMesh(mapDataChunck);
                        }
                    }
                    if (LevelsIndex == 0)
                    {
                        if (LODcollider.HasMesh)
                        {
                            LODmesh lodMesh = LODMeshes[LevelsIndex];
                            collider.sharedMesh = lodMesh.mesh;
                        }
                        else if (!LODcollider.requestedMesh)
                        {
                            LODcollider.requestMesh(mapData);
                        }
                    }
                    chunksShowen.Add(this);
                }
                setvisable(visable);
            }
            setvisable(visable);
        }