Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions src/electron.renderer/data/Level.hx
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,9 @@ class Level {
case CoverDirty:
sx = pxWid / baseTileWid;
sy = pxHei/ baseTileHei;

case Repeat:
// Do nothing, tiling shenanigans are handled in createBgTiledTexture.
}

// Crop tile
Expand All @@ -412,22 +415,26 @@ class Level {
}
}


public function createBgBitmap(?p:h2d.Object) : Null<h2d.Bitmap> {
public function createBgTiledTexture(?p:h2d.Object) : Null<dn.heaps.TiledTexture> {
var bgInf = getBgTileInfos();
if( bgInf==null )
return null;

var t = h2d.Tile.fromTexture( bgInf.imgData.tex );
t = t.sub(bgInf.tx, bgInf.ty, bgInf.tw, bgInf.th);

var bmp = new h2d.Bitmap(t,p);
bmp.x = bgInf.dispX;
bmp.y = bgInf.dispY;
bmp.scaleX = bgInf.sx;
bmp.scaleY = bgInf.sy;
var tile = (bgPos == ldtk.Json.BgImagePos.Repeat);

var w = tile ? pxWid : Std.int(bgInf.tw);
var h = tile ? pxHei : Std.int(bgInf.th);

var tt = new dn.heaps.TiledTexture(w, h, t, p);
tt.x = bgInf.dispX;
tt.y = bgInf.dispY;
tt.scaleX = bgInf.sx;
tt.scaleY = bgInf.sy;

return bmp;
return tt;
}


Expand Down
4 changes: 2 additions & 2 deletions src/electron.renderer/display/EntityRender.hx
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ class EntityRender extends dn.Process {
bmp.setScale(s);

case Repeat:
var tt = new dn.heaps.TiledTexture(t, w,h, wrapper);
var tt = new dn.heaps.TiledTexture(w, h, t, wrapper);
tt.alpha = alpha;
tt.x = -w*ed.pivotX + (ld==null ? 0 : ld.pxOffsetX);
tt.y = -h*ed.pivotY + (ld==null ? 0 : ld.pxOffsetY);
Expand Down Expand Up @@ -401,4 +401,4 @@ class EntityRender extends dn.Process {
}

}
}
}
4 changes: 2 additions & 2 deletions src/electron.renderer/display/LayerRender.hx
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ class LayerRender {
tex.clear( l.getBgColor() );

if( l.bgRelPath!=null ) {
var bmp = l.createBgBitmap();
var bmp = l.createBgTiledTexture();
bmp.drawTo(tex);
}
}
Expand Down Expand Up @@ -318,4 +318,4 @@ class LayerRender {
mask = null;
}

}
}
18 changes: 10 additions & 8 deletions src/electron.renderer/display/LevelRender.hx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class LevelRender extends dn.Process {
var layerRenders : Map<Int, LayerRender> = new Map();

var bgColor : h2d.Bitmap;
var bgImage : h2d.Bitmap;
var bgImage : dn.heaps.TiledTexture;
var bounds : h2d.Graphics;
var boundsGlow : h2d.Graphics;
var grid : h2d.Graphics;
Expand All @@ -42,7 +42,8 @@ class LevelRender extends dn.Process {
bgColor = new h2d.Bitmap();
root.add(bgColor, Const.DP_BG);

bgImage = new h2d.Bitmap();
//bgImage = new h2d.Bitmap();
bgImage = new dn.heaps.TiledTexture(1, 1);
root.add(bgImage, Const.DP_BG);

bounds = new h2d.Graphics();
Expand Down Expand Up @@ -424,15 +425,16 @@ class LevelRender extends dn.Process {
bgColor.scaleX = editor.curLevel.pxWid;
bgColor.scaleY = editor.curLevel.pxHei;

var bmp = level.createBgBitmap();
if( bmp!=null ) {
bgImage.tile = bmp.tile;
bgImage.setPosition( bmp.x, bmp.y );
bgImage.scaleX = bmp.scaleX;
bgImage.scaleY = bmp.scaleY;
var tt = level.createBgTiledTexture();
if( tt!=null ) {
bgImage.tile = tt.tile;
bgImage.setPosition( tt.x, tt.y );
bgImage.scaleX = tt.scaleX;
bgImage.scaleY = tt.scaleY;
bgImage.visible = true;
bgImage.alpha = settings.v.singleLayerMode ? 0.2 : 1;
bgImage.filter = settings.v.singleLayerMode ? getSingleLayerModeFilter() : null;
bgImage.resize(tt.width, tt.height);
}
else {
bgImage.tile = null;
Expand Down
4 changes: 2 additions & 2 deletions src/electron.renderer/display/WorldRender.hx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class WorldRender extends dn.Process {
worldBg = {
wrapper : w,
col: new h2d.Bitmap(w),
tex: new dn.heaps.TiledTexture(Assets.elements.getTile("largeStripes"), 1, 1, w),
tex: new dn.heaps.TiledTexture(1, 1, Assets.elements.getTile("largeStripes"), w),
}
worldBg.col.colorAdd = new h3d.Vector(0,0,0,0);
worldBg.tex.alpha = 0.5;
Expand Down Expand Up @@ -773,7 +773,7 @@ class WorldRender extends dn.Process {
col.scaleY = l.pxHei;

// Bg image
l.createBgBitmap(wl.bgWrapper);
l.createBgTiledTexture(wl.bgWrapper);

// Per-coord limit
var doneCoords = new Map();
Expand Down
3 changes: 2 additions & 1 deletion src/electron.renderer/ui/LevelInstanceForm.hx
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,7 @@ class LevelInstanceForm {
case Contain: Lang.t._("Fit inside (keep aspect ratio)");
case Cover: Lang.t._("Cover level (keep aspect ratio)");
case CoverDirty: Lang.t._("Cover (dirty scaling)");
case Repeat: Lang.t._("Repeat");
});
}
jSelect.val( level.bgPos.getName() );
Expand Down Expand Up @@ -374,4 +375,4 @@ class LevelInstanceForm {
function updateFieldsForm() {
fieldsForm.use( Level(level), project.defs.levelFields, (fd)->level.getFieldInstance(fd, true) );
}
}
}