本文整理汇总了C#中Chunk.Save方法的典型用法代码示例。如果您正苦于以下问题:C# Chunk.Save方法的具体用法?C# Chunk.Save怎么用?C# Chunk.Save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Chunk
的用法示例。
在下文中一共展示了Chunk.Save方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetChunk
/// <summary>
/// Saves an existing <see cref="Chunk"/> to the region at the given local coordinates.
/// </summary>
/// <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
/// <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
/// <param name="chunk">A <see cref="Chunk"/> to save to the given location.</param>
/// <returns>A <see cref="ChunkRef"/> represneting the <see cref="Chunk"/> at its new location.</returns>
/// <remarks>If the local coordinates are out of bounds for this region, the action will be forwarded to the correct region
/// transparently. The <see cref="Chunk"/>'s internal global coordinates will be updated to reflect the new location.</remarks>
public ChunkRef SetChunk(int lcx, int lcz, Chunk chunk)
{
if (!LocalBoundsCheck(lcx, lcz)) {
Region alt = GetForeignRegion(lcx, lcz);
return (alt == null) ? null : alt.CreateChunk(ForeignX(lcx), ForeignZ(lcz));
}
DeleteChunk(lcx, lcz);
int cx = lcx + _rx * XDIM;
int cz = lcz + _rz * ZDIM;
chunk.SetLocation(cx, cz);
chunk.Save(GetChunkOutStream(lcx, lcz));
ChunkRef cr = ChunkRef.Create(this, lcx, lcz);
_cache.Insert(cr);
return cr;
}
示例2: FlushChunk
private void FlushChunk(Chunk chunk)
{
lock (_directory)
{
_cache.Seek(0, SeekOrigin.End);
_directory.Add(_cache.Position);
chunk.Save(_cache);
_serializedRows += chunk.Count;
}
}
示例3: SaveChunk
// XXX: Allows a chunk not part of this region to be saved to it
/// <exclude/>
public bool SaveChunk(Chunk chunk)
{
//Console.WriteLine("Region[{0}, {1}].Save({2}, {3})", _rx, _rz, ForeignX(chunk.X),ForeignZ(chunk.Z));
return chunk.Save(GetChunkOutStream(ForeignX(chunk.X), ForeignZ(chunk.Z)));
}
示例4: DoSkylighting
private void DoSkylighting(Chunk c)
{
int csx = (int)c.Size.X;
int csz = (int)c.Size.Y;
for (int _x = 0; _x < csx; _x++)
{
for (int _z = 0; _z < csz; _z++)
{
int x = (int)(c.Position.X * csx) + _x;
int z = (int)(c.Position.Y * csz) + _z;
for (int y = 0; y < c.HeightMap[x, z]; y++)
{
byte currentSkyLight = c.SkyLight[x,y,z];
byte currentBlock = c.Blocks[x, y, z];
Block currentBlockInfo = OpenMinecraft.Blocks.Get(currentBlock);
// SUNLIGHT
currentSkyLight = (byte)(currentSkyLight - currentBlockInfo.Stop - 1);
if (currentSkyLight < 0) currentSkyLight = 0;
if (currentSkyLight > 15) currentSkyLight = 15;
c.SkyLight[x, y, z]=currentSkyLight;
}
}
}
c.Save();
}