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(); } }
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); }
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); }
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(); } }