Skip to content

Commit

Permalink
Fixed edge tiles sticking around (#1045)
Browse files Browse the repository at this point in the history
  • Loading branch information
deepnight committed Jan 12, 2024
1 parent d1c1594 commit 3b40192
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions src/electron.renderer/display/WorldRender.hx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ typedef WorldLevelRender = {
var bgWrapper: h2d.Object;
var outline: h2d.Graphics;
var render: h2d.Object;
var edgeLayers : Map<Int, h2d.TileGroup>;
var edgeLayers : Null< Map<Int, h2d.TileGroup> >;
var fadeMask : h2d.Bitmap;
var identifier: h2d.ScaleGrid;

Expand Down Expand Up @@ -333,9 +333,14 @@ class WorldRender extends dn.Process {

public function invalidateNearbyLevels(near:data.Level) {
if( near!=null )
for(other in curWorld.levels)
if( other!=near && other.touches(near) )
for(other in curWorld.levels) {
if( other==near )
continue;
if( other.touches(near) )
invalidateLevelRender(other);
else if( getWorldLevel(other).edgeLayers!=null )
invalidateLevelRender(other);
}
}

public inline function invalidateLevelRender(l:data.Level) {
Expand Down Expand Up @@ -413,7 +418,7 @@ class WorldRender extends dn.Process {
rect: WorldRect.fromLevel(l),
bgWrapper: new h2d.Object(),
render : new h2d.Object(),
edgeLayers: new Map(),
edgeLayers: null,
outline : new h2d.Graphics(),
fadeMask: new h2d.Bitmap( h2d.Tile.fromColor(l.getBgColor(),1,1, 0.3) ),
identifier : new h2d.ScaleGrid(Assets.elements.getTile(D.elements.fieldBg), 2, 2),
Expand Down Expand Up @@ -765,7 +770,12 @@ class WorldRender extends dn.Process {
wl.bgWrapper.removeChildren();
wl.outline.clear();
wl.render.removeChildren();
wl.edgeLayers = new Map();

if( wl.edgeLayers!=null ) {
for( td in wl.edgeLayers )
td.clear();
wl.edgeLayers = null;
}
}


Expand Down Expand Up @@ -844,6 +854,8 @@ class WorldRender extends dn.Process {
return;

var edgeTg = new h2d.TileGroup(td.getAtlasTile(), wl.render);
if( wl.edgeLayers==null )
wl.edgeLayers = new Map();
wl.edgeLayers.set(li.layerDefUid, edgeTg);
// NOTE: layer offsets is already included in tiles render methods

Expand Down Expand Up @@ -968,7 +980,7 @@ class WorldRender extends dn.Process {
// Update edge layers opacity based on active one
for(wl in worldLevels)
for(li in editor.curLevel.layerInstances) {
if( !wl.edgeLayers.exists(li.layerDefUid) )
if( wl.edgeLayers==null || !wl.edgeLayers.exists(li.layerDefUid) )
continue;

if( li==editor.curLayerInstance )
Expand Down

0 comments on commit 3b40192

Please sign in to comment.