37 lines
1.0 KiB
C#
37 lines
1.0 KiB
C#
using Unity.Collections;
|
|
using Unity.Mathematics;
|
|
|
|
namespace DanieleMarotta.RiversongCodeShowcase
|
|
{
|
|
public class BlockMap : NativeGrid<BlockReason>
|
|
{
|
|
public BlockMap(int2 size) : base(size, Allocator.Persistent)
|
|
{
|
|
}
|
|
|
|
public void AddReason(int2 tile, BlockReason reason)
|
|
{
|
|
SetValue(tile, GetValue(tile) | reason);
|
|
}
|
|
|
|
public void AddReason(int2 min, int2 max, BlockReason reason)
|
|
{
|
|
foreach (var tile in TileRange.From(min, max)) AddReason(tile, reason);
|
|
}
|
|
|
|
public void RemoveReason(int2 tile, BlockReason reason)
|
|
{
|
|
SetValue(tile, GetValue(tile) & ~reason);
|
|
}
|
|
|
|
public void RemoveReason(int2 min, int2 max, BlockReason reason)
|
|
{
|
|
foreach (var tile in TileRange.From(min, max)) RemoveReason(tile, reason);
|
|
}
|
|
|
|
public bool IsBlocked(int2 tile, BlockReason reason = BlockReason.Any)
|
|
{
|
|
return (GetValue(tile) & reason) != 0;
|
|
}
|
|
}
|
|
} |