本文整理汇总了C#中BlockPos.Subtract方法的典型用法代码示例。如果您正苦于以下问题:C# BlockPos.Subtract方法的具体用法?C# BlockPos.Subtract怎么用?C# BlockPos.Subtract使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BlockPos
的用法示例。
在下文中一共展示了BlockPos.Subtract方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CallSpillLight
static void CallSpillLight(World world, Chunk chunk, BlockPos pos, byte light, List<BlockPos> chunksToUpdate, bool stayWithinChunk)
{
BlockPos localPos = pos.Subtract(chunk.pos);
if (Chunk.InRange(localPos))
{
SpillLight(world, pos, light, chunksToUpdate, chunk);
}
else
{
if(!stayWithinChunk)
SpillLight(world, pos, light, chunksToUpdate);
}
}
示例2: SpillLight
public static void SpillLight(World world, BlockPos pos, byte light, List<BlockPos> chunksToUpdate, Chunk chunk = null)
{
bool stayWithinChunk = true;
if (chunk == null)
{
chunk = world.GetChunk(pos);
stayWithinChunk = false;
}
BlockPos localPos = pos.Subtract(chunk.pos);
if (!Chunk.InRange(localPos))
return;
Block block = chunk.GetBlock(localPos);
if (!block.controller.IsTransparent())
return;
if (block.data1 >= light)
return;
if (!chunksToUpdate.Contains(chunk.pos))
chunksToUpdate.Add(chunk.pos);
block.data1 = light;
chunk.SetBlock(localPos, block, false);
if (block.data1 > lightReduceBy)
{
block.data1 -= lightReduceBy;
CallSpillLight(world, chunk, pos.Add(1, 0, 0), block.data1, chunksToUpdate, stayWithinChunk);
CallSpillLight(world, chunk, pos.Add(0, 1, 0), block.data1, chunksToUpdate, stayWithinChunk);
CallSpillLight(world, chunk, pos.Add(0, 0, 1), block.data1, chunksToUpdate, stayWithinChunk);
CallSpillLight(world, chunk, pos.Add(-1, 0, 0), block.data1, chunksToUpdate, stayWithinChunk);
CallSpillLight(world, chunk, pos.Add(0, -1, 0), block.data1, chunksToUpdate, stayWithinChunk);
CallSpillLight(world, chunk, pos.Add(0, 0, -1), block.data1, chunksToUpdate, stayWithinChunk);
}
return;
}