Paint across tiles in 2D view

This commit is contained in:
Lubos Lenco
2021-05-14 21:29:22 +02:00
parent 2ffe9c7e2e
commit 40ebed705c
2 changed files with 44 additions and 3 deletions
+42 -1
View File
@@ -4,6 +4,8 @@ import iron.math.Mat4;
import iron.math.Vec4;
import iron.system.Input;
import iron.object.MeshObject;
import iron.data.SceneFormat;
import iron.data.MeshData;
import iron.RenderPath;
import iron.Scene;
import arm.util.ViewportUtil;
@@ -581,7 +583,34 @@ class RenderPathPaint {
m2.getInverse(Scene.active.camera.VP);
m.multmat(m2);
planeo = cast Scene.active.getChild(".Plane");
var tiled = UIView2D.inst.tiledShow;
if (tiled && Scene.active.getChild(".PlaneTiled") == null) {
// 3x3 planes
var posa = [32767,0,-32767,0,10922,0,-10922,0,10922,0,-32767,0,10922,0,-10922,0,-10922,0,10922,0,-10922,0,-10922,0,-10922,0,10922,0,-32767,0,32767,0,-32767,0,10922,0,10922,0,10922,0,-10922,0,32767,0,-10922,0,10922,0,32767,0,10922,0,10922,0,32767,0,10922,0,10922,0,-10922,0,-10922,0,-32767,0,10922,0,-32767,0,-10922,0,32767,0,-10922,0,10922,0,10922,0,10922,0,-10922,0,-10922,0,-32767,0,-32767,0,-10922,0,-32767,0,-32767,0,10922,0,-32767,0,-10922,0,-10922,0,-10922,0,-32767,0,32767,0,-32767,0,32767,0,-10922,0,10922,0,-10922,0,10922,0,-10922,0,10922,0,10922,0,-10922,0,10922,0,-10922,0,10922,0,-10922,0,32767,0,-32767,0,32767,0,10922,0,10922,0,10922,0,32767,0,-10922,0,32767,0,32767,0,10922,0,32767,0,32767,0,10922,0,32767,0,-10922,0,-10922,0,-10922,0,10922,0,-32767,0,10922,0,32767,0,-10922,0,32767,0,10922,0,10922,0,10922,0,-10922,0,-32767,0,-10922,0,-10922,0,-32767,0,-10922,0,10922,0,-32767,0,10922,0,-10922,0,-10922,0,-10922,0];
var nora = [0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767];
var texa = [32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0,32767,32767,32767,0,0,0];
var inda = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53];
var raw: TMeshData = {
name: ".PlaneTiled",
vertex_arrays: [
{ attrib: "pos", values: i16(posa), data: "short4norm" },
{ attrib: "nor", values: i16(nora), data: "short2norm" },
{ attrib: "tex", values: i16(texa), data: "short2norm" }
],
index_arrays: [
{ values: u32(inda), material: 0 }
],
scale_pos: 1.5,
scale_tex: 1.0
};
new MeshData(raw, function(md: MeshData) {
var materials = cast(Scene.active.getChild(".Plane"), MeshObject).materials;
planeo = Scene.active.addMeshObject(md, materials);
planeo.name = ".PlaneTiled";
});
}
planeo = cast Scene.active.getChild(tiled ? ".PlaneTiled" : ".Plane");
planeo.visible = true;
Context.paintObject = planeo;
@@ -789,4 +818,16 @@ class RenderPathPaint {
}
}
}
static function u32(ar: Array<Int>): kha.arrays.Uint32Array {
var res = new kha.arrays.Uint32Array(ar.length);
for (i in 0...ar.length) res[i] = ar[i];
return res;
}
static function i16(ar: Array<Int>): kha.arrays.Int16Array {
var res = new kha.arrays.Int16Array(ar.length);
for (i in 0...ar.length) res[i] = ar[i];
return res;
}
}
+2 -2
View File
@@ -32,10 +32,10 @@ class UIView2D {
public var panX = 0.0;
public var panY = 0.0;
public var panScale = 1.0;
public var uvmapShow = false;
public var tiledShow = false;
var texType = TexBase;
var layerMode = View2DSelected;
var uvmapShow = false;
var tiledShow = false;
public function new() {
inst = this;