public void Copy(BooleanMap source) { SizeCopy(source); for (var y = 0; y <= source.ValueData.Size.Y - 1; y++) { for (var x = 0; x <= source.ValueData.Size.X - 1; x++) { ValueData.Value[y, x] = source.ValueData.Value[y, x]; } } }
public void ExpandOneTile(BooleanMap source) { SizeCopy(source); for (var y = 0; y <= ValueData.Size.Y - 1; y++) { for (var x = 0; x <= source.ValueData.Size.X - 1; x++) { if (source.ValueData.Value[y, x]) { ValueData.Value[y, x] = true; if (y > 0) { if (x > 0) { ValueData.Value[y - 1, x - 1] = true; } ValueData.Value[y - 1, x] = true; if (x < source.ValueData.Size.X - 1) { ValueData.Value[y - 1, x + 1] = true; } } if (x > 0) { ValueData.Value[y, x - 1] = true; } ValueData.Value[y, x] = true; if (x < ValueData.Size.X - 1) { ValueData.Value[y, x + 1] = true; } if (y < ValueData.Size.Y - 1) { if (x > 0) { ValueData.Value[y + 1, x - 1] = true; } ValueData.Value[y + 1, x] = true; if (x < ValueData.Size.X - 1) { ValueData.Value[y + 1, x + 1] = true; } } } } } }
public void Combine(BooleanMap source, BooleanMap insert) { SizeCopy(source); for (var y = 0; y <= source.ValueData.Size.Y - 1; y++) { for (var x = 0; x <= source.ValueData.Size.X - 1; x++) { if (insert.ValueData.Value[y, x]) { ValueData.Value[y, x] = true; } else { ValueData.Value[y, x] = source.ValueData.Value[y, x]; } } } }
public void Remove(BooleanMap source, BooleanMap remove) { SizeCopy(source); for (var y = 0; y <= source.ValueData.Size.Y - 1; y++) { for (var x = 0; x <= source.ValueData.Size.X - 1; x++) { if (remove.ValueData.Value[y, x]) { ValueData.Value[y, x] = false; } else { ValueData.Value[y, x] = source.ValueData.Value[y, x]; } } } }
public void Within(BooleanMap interior, BooleanMap exterior) { SizeCopy(interior); for (var y = 0; y <= interior.ValueData.Size.Y - 1; y++) { for (var x = 0; x <= interior.ValueData.Size.X - 1; x++) { if (interior.ValueData.Value[y, x]) { var flag = false; if (y > 0) { if (x > 0) { if (!exterior.ValueData.Value[y - 1, x - 1]) { flag = true; } } if (!exterior.ValueData.Value[y - 1, x]) { flag = true; } if (x < interior.ValueData.Size.X - 1) { if (!exterior.ValueData.Value[y - 1, x + 1]) { flag = true; } } } if (x > 0) { if (!exterior.ValueData.Value[y, x - 1]) { flag = true; } } if (!exterior.ValueData.Value[y, x]) { flag = true; } if (x < interior.ValueData.Size.X - 1) { if (!exterior.ValueData.Value[y, x + 1]) { flag = true; } } if (y < interior.ValueData.Size.Y - 1) { if (x > 0) { if (!exterior.ValueData.Value[y + 1, x - 1]) { flag = true; } } if (!exterior.ValueData.Value[y + 1, x]) { flag = true; } if (x < interior.ValueData.Size.X - 1) { if (!exterior.ValueData.Value[y + 1, x + 1]) { flag = true; } } } ValueData.Value[y, x] = !flag; } } } }
public void SizeCopy(BooleanMap source) { ValueData.Size.X = source.ValueData.Size.X; ValueData.Size.Y = source.ValueData.Size.Y; ValueData.Value = new bool[ValueData.Size.Y, ValueData.Size.X]; }