5 public struct Cell : IComparable<Cell> {
24 public static implicit
operator Brush(
int value) =>
new() {
m_value = value };
26 public static implicit
operator Brush(Func<int?, int?> handler) =>
new() {
m_handler1 = handler };
28 public static implicit
operator Brush(Func<Point3, int?> handler) =>
new() {
m_handler2 = handler };
48 public static implicit
operator Counter(
int value) =>
new() {
m_value = value };
50 public static implicit
operator Counter(Func<int?, int> handler) =>
new() {
m_handler1 = handler };
52 public static implicit
operator Counter(Func<Point3, int> handler) =>
new() {
m_handler2 = handler };
74 public static int Key(
int x,
int y,
int z) => y + 128 + ((x + 128) << 8) + ((z + 128) << 16);
102 for (
int i = x; i < x + sizeX; i++) {
103 for (
int j = y; j < y + sizeY; j++) {
104 for (
int k = z; k < z + sizeZ; k++) {
112 public void Replace(
int oldValue,
int newValue) {
113 Dictionary<int, Cell> dictionary =
new();
116 if (value.
Value == oldValue) {
117 value.Value = newValue;
119 dictionary[item.Key] = value;
132 min.X = max.X = value.
X;
133 min.Y = max.Y = value.
Y;
134 min.Z = max.Z = value.
Z;
150 int key =
Key(x, y, z);
160 int key =
Key(x, y, z);
173 for (
int i = x; i < x + sizeX; i++) {
174 for (
int j = y; j < y + sizeY; j++) {
175 for (
int k = z; k < z + sizeZ; k++) {
197 for (
int i = 0; i < num; i++) {
218 for (
int i = 0; i < cells.Length; i++) {
219 Cell cell = cells[i];
220 int num = cell.X + x;
221 int num2 = cell.Y + y;
222 int num3 = cell.Z + z;
231 if (onlyInValue == cellValueFast) {
250 for (
int i = 0; i < cells.Length; i++) {
251 Cell cell = cells[i];
252 int num = cell.X + x;
253 int num2 = cell.Y + y;
254 int num3 = cell.Z + z;
262 if (onlyInValue == cellValueFast) {
274 for (
int i = 0; i < cells.Length; i++) {
275 Cell cell = cells[i];
276 int num = cell.X + x;
277 int num2 = cell.Y + y;
278 int num3 = cell.Z + z;
285 int num4 = num + chunk.
Origin.
X;
287 int num5 = num3 + chunk.
Origin.
Y;
311 for (
int i = 0; i < cells.Length; i++) {
312 Cell cell = cells[i];
313 int num = cell.X + x;
314 int num2 = cell.Y + y;
315 int num3 = cell.Z + z;
337 for (
int i = 0; i < cells.Length; i++) {
338 Cell cell = cells[i];
339 int num = cell.X + x;
340 int num2 = cell.Y + y;
341 int num3 = cell.Z + z;
364 for (
int i = 0; i < cells.Length; i++) {
365 Cell cell = cells[i];
366 int num = cell.X + x;
367 int num2 = cell.Y + y;
368 int num3 = cell.Z + z;
382 for (
int i = 0; i < cells.Length; i++) {
383 Cell cell = cells[i];
static int Min(int x1, int x2)
static int Max(int x1, int x2)
virtual void ChangeCell(int x, int y, int z, int value, bool updateModificationCounter=true, MovingBlock movingBlock=null)
Func< Point3, int?> m_handler2
Func< int?, int?> m_handler1
int? Paint(TerrainBrush terrainBrush, Point3 p)
int Count(TerrainBrush terrainBrush, Point3 p)
Func< Point3, int > m_handler2
Func< int?, int > m_handler1
int CountBox(int x, int y, int z, int sizeX, int sizeY, int sizeZ, Counter counter)
void PaintFast(TerrainChunk chunk, int x, int y, int z)
void Paint(SubsystemTerrain terrain, int x, int y, int z)
void PaintFast(Terrain terrain, int x, int y, int z, int minX, int maxX, int minY, int maxY, int minZ, int maxZ)
void PaintFastSelective(Terrain terrain, int x, int y, int z, int minX, int maxX, int minY, int maxY, int minZ, int maxZ, int onlyInValue)
void PaintFastAvoidWater(Terrain terrain, int x, int y, int z, int minX, int maxX, int minY, int maxY, int minZ, int maxZ)
Dictionary< int, Cell > m_cellsDictionary
void CalculateBounds(out Point3 min, out Point3 max)
void Replace(int oldValue, int newValue)
void AddBox(int x, int y, int z, int sizeX, int sizeY, int sizeZ, Brush brush)
int? GetValue(int x, int y, int z)
int CountNonDiagonalNeighbors(int x, int y, int z, Counter counter)
void PaintFastAvoidWater(TerrainChunk chunk, int x, int y, int z)
void AddCell(int x, int y, int z, Brush brush)
void PaintFastSelective(TerrainChunk chunk, int x, int y, int z, int onlyInValue)
static int Key(int x, int y, int z)
void AddRay(int x1, int y1, int z1, int x2, int y2, int z2, int sizeX, int sizeY, int sizeZ, Brush brush)
static int CalculateCellIndex(int x, int y, int z)
virtual int GetCellValueFast(int index)
virtual void SetCellValueFast(int x, int y, int z, int value)
virtual int GetCellContentsFast(int x, int y, int z)
virtual int GetCellValueFast(int x, int y, int z)
virtual void SetCellValueFast(int x, int y, int z, int value)
static int ToCell(float x)
virtual int GetCellContents(int x, int y, int z)
virtual int GetCellContentsFast(int x, int y, int z)
static readonly Point3 Zero
static Vector3 Round(Vector3 v)
static Vector3 Normalize(Vector3 v)
static float Distance(Vector3 v1, Vector3 v2)
int CompareTo(Cell other)