Improve brush parsing

This commit is contained in:
luboslenco
2020-03-16 10:41:56 +01:00
parent 1d7eeb0ca1
commit e68cd535b5
3 changed files with 51 additions and 38 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ class RenderPathPaint {
static var baking = false;
public static var liveLayer: arm.data.LayerSlot = null;
public static var liveLayerDrawn = 0;
public static var liveLayerLocked = true;
public static var liveLayerLocked = false;
static var _texpaint: RenderTarget;
static var _texpaint_mask: RenderTarget;
static var _texpaint_nor: RenderTarget;
+18 -13
View File
@@ -106,15 +106,10 @@ class UINodes {
if (ui.changed) {
mchanged = true;
if (!mdown) changed = true;
if (canvasType == CanvasBrush) {
canvasChanged();
}
}
if ((mreleased && mchanged) || changed) {
mchanged = changed = false;
if (canvasType == CanvasMaterial) {
canvasChanged();
}
canvasChanged();
if (mreleased) {
UITrait.inst.hwnd.redraws = 2;
History.editNodes(lastCanvas, canvasType);
@@ -187,10 +182,14 @@ class UINodes {
iron.App.notifyOnRender(_parse);
}
else {
MaterialParser.parseBrush();
UITrait.inst.parseBrushInputs();
RenderUtil.makeBrushPreview();
UITrait.inst.hwnd1.redraws = 2;
function _parse(_) {
MaterialParser.parseBrush();
UITrait.inst.parseBrushInputs();
RenderUtil.makeBrushPreview();
UITrait.inst.hwnd1.redraws = 2;
iron.App.removeRender(_parse);
}
iron.App.notifyOnRender(_parse);
}
}
@@ -297,11 +296,17 @@ class UINodes {
public function render(g: kha.graphics2.Graphics) {
if (recompileMat) {
recompileMat = false;
if (Layers.isFillMaterial()) {
Layers.updateFillLayers();
if (canvasType == CanvasBrush) {
canvasChanged();
}
else {
RenderUtil.makeMaterialPreview();
if (Layers.isFillMaterial()) {
Layers.updateFillLayers();
}
else {
RenderUtil.makeMaterialPreview();
}
}
UITrait.inst.hwnd1.redraws = 2;
}
+32 -24
View File
@@ -187,6 +187,8 @@ class RenderUtil {
public static function makeBrushPreview() {
if (RenderPathPaint.liveLayerLocked) return;
// Prepare layers
if (RenderPathPaint.liveLayer == null) {
RenderPathPaint.liveLayer = new arm.data.LayerSlot("_live");
@@ -211,28 +213,31 @@ class RenderUtil {
Context.brush.imageIcon = Image.createRenderTarget(50, 50);
}
var scons = Project.materials[0].data.shader.contexts;
var mcons = Project.materials[0].data.contexts;
var _scon: ShaderContext = null;
var _mcon: MaterialContext = null;
var _si = 0;
var _mi = 0;
for (i in 0...scons.length) {
if (scons[i].raw.name == "paint") {
_si = i;
_scon = scons[i];
scons[i] = MaterialParser.defaultScon;
break;
}
}
for (i in 0...mcons.length) {
if (mcons[i].raw.name == "paint") {
_mi = i;
_mcon = mcons[i];
mcons[i] = MaterialParser.defaultMcon;
break;
}
}
// var scons = Project.materials[0].data.shader.contexts;
// var mcons = Project.materials[0].data.contexts;
// var _scon: ShaderContext = null;
// var _mcon: MaterialContext = null;
// var _si = 0;
// var _mi = 0;
// for (i in 0...scons.length) {
// if (scons[i].raw.name == "paint") {
// _si = i;
// _scon = scons[i];
// scons[i] = MaterialParser.defaultScon;
// break;
// }
// }
// for (i in 0...mcons.length) {
// if (mcons[i].raw.name == "paint") {
// _mi = i;
// _mcon = mcons[i];
// mcons[i] = MaterialParser.defaultMcon;
// break;
// }
// }
var _material = Context.material;
Context.material = new arm.data.MaterialSlot();
MaterialParser.parsePaintMaterial();
RenderPathPaint.useLiveLayer(true);
@@ -276,6 +281,7 @@ class RenderUtil {
planeo.transform.loc.set(m._30, -m._31, 0.0);
planeo.transform.buildMatrix();
RenderPathPaint.liveLayerDrawn = 0;
RenderPathDeferred.drawGbuffer();
// Paint brush preview
@@ -312,8 +318,10 @@ class RenderUtil {
UITrait.inst.lastPaintVecX = _lastX;
UITrait.inst.lastPaintVecY = _lastY;
Context.pdirty = _pdirty;
scons[_si] = _scon;
mcons[_mi] = _mcon;
// scons[_si] = _scon;
// mcons[_mi] = _mcon;
Context.material = _material;
MaterialParser.parsePaintMaterial();
// Restore paint mesh
planeo.visible = false;