fixed unnecessary write to texture if no changes happened
This commit is contained in:
@@ -18,6 +18,7 @@ public class Element {
|
||||
protected int lastMove = 0;
|
||||
|
||||
private bool active = false;
|
||||
private bool wasMovedThisTick = false;
|
||||
private int lastUpdate = -1;
|
||||
private Color originalColor;
|
||||
|
||||
@@ -42,6 +43,7 @@ public class Element {
|
||||
|
||||
active = value;
|
||||
Chunk.SetElementActive(this, value);
|
||||
Moved();
|
||||
// SetDebugColor(value, new Color(0.2f, 0.2f, 0.2f));
|
||||
}
|
||||
}
|
||||
@@ -68,6 +70,7 @@ public class Element {
|
||||
|
||||
protected virtual void Tick() {
|
||||
Vector2I randomDirection = RandomDirectionDown();
|
||||
wasMovedThisTick = false;
|
||||
|
||||
if (Chunk.IsEmpty(Position + Vector2I.Down))
|
||||
Chunk.Swap(this, Position + Vector2I.Down);
|
||||
@@ -109,9 +112,15 @@ public class Element {
|
||||
if (!Main.Instance.DebugVisualization) return;
|
||||
|
||||
this.color = color;
|
||||
wasMovedThisTick = true;
|
||||
}
|
||||
|
||||
public void Moved() {
|
||||
lastMove = Engine.GetFramesDrawn();
|
||||
wasMovedThisTick = true;
|
||||
}
|
||||
|
||||
public bool WasMoved() {
|
||||
return wasMovedThisTick;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,9 +157,8 @@ public class Level {
|
||||
for (int y = 0; y < chunkResY; y++) {
|
||||
// TODO: multithreading here! use Chunk.DrawLevel() and stitch images together
|
||||
|
||||
Element e = chunks[cx, cy].Elements[x, y];
|
||||
if (e.WasMoved())
|
||||
image.SetPixel(cx*chunkResX + x, cy*chunkResY + y, e.Color);
|
||||
if (chunks[cx, cy].Elements[x, y].WasMoved())
|
||||
image.SetPixel(cx*chunkResX + x, cy*chunkResY + y, chunks[cx, cy].Elements[x, y].Color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user