public override void Init(EvniAsset evni)
    {
        base.Init(evni);

                #if true
        mEvni.SetDensity(mEvni.Density);
        mEvni.SetLODType(ELodType.LOD_2_TYPE_2);

        mEvni.LODDensities = new float[mEvni.MaxLOD + 1];
        for (int i = 0; i < mEvni.MaxLOD + 1; i++)
        {
            if (i == 0)
            {
                mEvni.LODDensities[i] = 1;
            }
            else
            {
                mEvni.LODDensities[i] = 0.4f / (1 << (i - 1));
            }
        }
                #endif

        mReqs = new Queue <RGChunk>(100);

        // Create Thread
        if (mThread == null)
        {
            mThread      = new Thread(new ThreadStart(Run));
            mThread.Name = " Story mode Grass IO Thread";
            mThread.Start();
        }
    }
Пример #2
0
    public static int FindOrginFileIndex(Vector3 chunk32Pos, EvniAsset evni)
    {
        int file_index = -1;

        for (int i = 0; i < evni.FileXCount; ++i)
        {
            int zStart = (evni.ZStart >> evni.Tile) + (evni.ZTileCount * i);
            int zEnd   = zStart + evni.ZTileCount;
            for (int j = 0; j < evni.FlieZCount; ++j)
            {
                int xStart = (evni.XStart >> evni.Tile) + (evni.XTileCount * j);
                int xEnd   = xStart + evni.XTileCount;

                if (xStart <= chunk32Pos.x && xEnd > chunk32Pos.x &&
                    zStart <= chunk32Pos.z && zEnd > chunk32Pos.z)
                {
                    file_index = i * evni.FlieZCount + j;
                    break;
                }
            }
        }
        return(file_index);
    }
Пример #3
0
 public static int Pos32ToIndex32(int x_32, int z_32, EvniAsset evni)
 {
     return((x_32 - evni.XStart / 32) + (z_32 - evni.ZStart / 32) * evni.XTileCount);
 }
Пример #4
0
 public static INTVECTOR3 ChunkPosToPos32(int x_index, int z_index, EvniAsset evni)
 {
     return(new INTVECTOR3(x_index * (evni.CHUNKSIZE >> 5), 0, z_index * (evni.CHUNKSIZE >> 5)));
 }
    public override void Init(EvniAsset evni)
    {
        base.Init(evni);

                #if true
        mEvni.SetDensity(mEvni.Density);
        if ((int)SystemSettingData.Instance.GrassLod > (int)ELodType.LOD_3_TYPE_1)
        {
            SystemSettingData.Instance.GrassLod = ELodType.LOD_3_TYPE_1;
        }

        mEvni.SetLODType((ELodType)((int)SystemSettingData.Instance.GrassLod));

        mEvni.LODDensities = new float[mEvni.MaxLOD + 1];
        for (int i = 0; i < mEvni.MaxLOD + 1; i++)
        {
            if (i == 0)
            {
                mEvni.LODDensities[i] = 1;
            }
            else
            {
                mEvni.LODDensities[i] = 0.4f / (1 << (i - 1));
            }
        }
                #endif

        mReqs = new Queue <RGChunk>(100);

//		originalSubTerrainDir = GameConfig.PEDataPath + "VoxelData/SubTerrains";
        // File
        mOrgnFilePath = new string[9]
        {
            originalSubTerrainDir + "subTerG_x0_y0.dat",
            originalSubTerrainDir + "subTerG_x1_y0.dat",
            originalSubTerrainDir + "subTerG_x2_y0.dat",
            originalSubTerrainDir + "subTerG_x0_y1.dat",
            originalSubTerrainDir + "subTerG_x1_y1.dat",
            originalSubTerrainDir + "subTerG_x2_y1.dat",
            originalSubTerrainDir + "subTerG_x0_y2.dat",
            originalSubTerrainDir + "subTerG_x1_y2.dat",
            originalSubTerrainDir + "subTerG_x2_y2.dat"
        };

        // File stream
        mOrgnGrassFile = new FileStream[evni.FileXZcount];
        for (int i = 0; i < evni.FileXZcount; ++i)
        {
            if (File.Exists(mOrgnFilePath[i]))
            {
                mOrgnGrassFile[i] = new FileStream(mOrgnFilePath[i], FileMode.Open, FileAccess.Read, FileShare.Read);
            }
            else
            {
                Debug.LogWarning("The path file: " + mOrgnFilePath[i] + "is missing!");
            }
        }

        mOrgnOfsData = new int[mEvni.FileXZcount, mEvni.XZTileCount];

        for (int i = 0; i < mEvni.FileXZcount; ++i)
        {
            if (mOrgnGrassFile[i] == null)
            {
                continue;
            }

            BinaryReader _in = new BinaryReader(mOrgnGrassFile[i]);
            for (int j = 0; j < mEvni.XZTileCount; ++j)
            {
                mOrgnOfsData[i, j] = _in.ReadInt32();
            }
        }



        // Create Thread
        if (mThread == null)
        {
            mThread      = new Thread(new ThreadStart(Run));
            mThread.Name = " Story mode Grass IO Thread";
            mThread.Start();
        }
    }