From 0b5ffeb9d52efd1d206932ff1f39d12fa03024ee Mon Sep 17 00:00:00 2001 From: Tanasart Date: Mon, 2 Dec 2024 08:45:17 +0700 Subject: [PATCH] inline preview --- PixelComposer.resource_order | 4 +- PixelComposer.yyp | 1 + .../__node_VFX_effector.gml | 3 +- scripts/_node_smoke/_node_smoke.gml | 3 + scripts/node_FLIP_domain/node_FLIP_domain.gml | 2 +- scripts/node_VFX_group/node_VFX_group.yy | 4 +- .../node_VFX_override/node_VFX_override.gml | 3 +- .../node_VFX_renderer/node_VFX_renderer.gml | 5 ++ .../node_VFX_renderer_output.yy | 4 +- scripts/node_VFX_spawner/node_VFX_spawner.gml | 11 +-- scripts/node_VFX_trail/node_VFX_trail.gml | 5 +- .../node_VFX_triangulate.gml | 15 ++-- .../node_VFX_variable/node_VFX_variable.gml | 5 +- scripts/node_color_oklch/node_color_oklch.gml | 3 +- scripts/node_smoke_add/node_smoke_add.gml | 13 ++-- .../node_smoke_domain/node_smoke_domain.gml | 4 +- .../node_smoke_group_inline.gml | 13 ++++ .../node_smoke_render/node_smoke_render.gml | 16 ++++- scripts/okhsl_function/okhsl_function.gml | 6 +- scripts/panel_preview/panel_preview.gml | 72 +++++++++---------- 20 files changed, 117 insertions(+), 75 deletions(-) diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 952fb5c20..0adadd86c 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -101,6 +101,7 @@ {"name":"strandSim","order":5,"path":"folders/nodes/data/simulation/strandSim.yy",}, {"name":"VFX","order":6,"path":"folders/nodes/data/simulation/VFX.yy",}, {"name":"generators","order":1,"path":"folders/nodes/data/simulation/VFX/generators.yy",}, + {"name":"__legacy","order":12,"path":"folders/nodes/data/simulation/VFX/__legacy.yy",}, {"name":"tiler","order":31,"path":"folders/nodes/data/tiler.yy",}, {"name":"shaders","order":2,"path":"folders/nodes/data/tiler/shaders.yy",}, {"name":"sprites","order":4,"path":"folders/nodes/data/tiler/sprites.yy",}, @@ -1183,10 +1184,9 @@ {"name":"node_VFX_boids","order":10,"path":"scripts/node_VFX_boids/node_VFX_boids.yy",}, {"name":"node_VFX_destroy","order":3,"path":"scripts/node_VFX_destroy/node_VFX_destroy.yy",}, {"name":"node_VFX_group_inline","order":5,"path":"scripts/node_VFX_group_inline/node_VFX_group_inline.yy",}, - {"name":"node_VFX_group","order":4,"path":"scripts/node_VFX_group/node_VFX_group.yy",}, {"name":"node_VFX_oscillate","order":9,"path":"scripts/node_VFX_oscillate/node_VFX_oscillate.yy",}, {"name":"node_VFX_override","order":6,"path":"scripts/node_VFX_override/node_VFX_override.yy",}, - {"name":"node_VFX_renderer_output","order":8,"path":"scripts/node_VFX_renderer_output/node_VFX_renderer_output.yy",}, + {"name":"node_VFX_renderer_output","order":1,"path":"scripts/node_VFX_renderer_output/node_VFX_renderer_output.yy",}, {"name":"node_VFX_renderer","order":7,"path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",}, {"name":"node_VFX_repel","order":4,"path":"scripts/node_VFX_repel/node_VFX_repel.yy",}, {"name":"node_VFX_spawner","order":9,"path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 9d2e22477..7b1c1e14e 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -190,6 +190,7 @@ {"$GMFolder":"","%Name":"VFX","folderPath":"folders/nodes/data/simulation/VFX.yy","name":"VFX","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"affector","folderPath":"folders/nodes/data/simulation/VFX/affector.yy","name":"affector","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"generators","folderPath":"folders/nodes/data/simulation/VFX/generators.yy","name":"generators","resourceType":"GMFolder","resourceVersion":"2.0",}, + {"$GMFolder":"","%Name":"__legacy","folderPath":"folders/nodes/data/simulation/VFX/__legacy.yy","name":"__legacy","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"tiler","folderPath":"folders/nodes/data/tiler.yy","name":"tiler","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"shaders","folderPath":"folders/nodes/data/tiler/shaders.yy","name":"shaders","resourceType":"GMFolder","resourceVersion":"2.0",}, {"$GMFolder":"","%Name":"sprites","folderPath":"folders/nodes/data/tiler/sprites.yy","name":"sprites","resourceType":"GMFolder","resourceVersion":"2.0",}, diff --git a/scripts/__node_VFX_effector/__node_VFX_effector.gml b/scripts/__node_VFX_effector/__node_VFX_effector.gml index a96607d0c..cfd8faaea 100644 --- a/scripts/__node_VFX_effector/__node_VFX_effector.gml +++ b/scripts/__node_VFX_effector/__node_VFX_effector.gml @@ -183,5 +183,6 @@ function Node_VFX_effector(_x, _y, _group = noone) : Node(_x, _y, _group) constr draw_sprite_fit(node_draw_icon, 0, bbox.xc, bbox.yc, bbox.w, bbox.h); } - getPreviewingNode = VFX_PREVIEW_NODE; + static getPreviewingNode = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewingNode() : self; } + static getPreviewValues = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewValues() : self; } } \ No newline at end of file diff --git a/scripts/_node_smoke/_node_smoke.gml b/scripts/_node_smoke/_node_smoke.gml index 9b4ffeae1..de1af2465 100644 --- a/scripts/_node_smoke/_node_smoke.gml +++ b/scripts/_node_smoke/_node_smoke.gml @@ -16,4 +16,7 @@ function Node_Smoke(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { _to.node.updateForward(frame); } } + + static getPreviewingNode = function() { return is(inline_context, Node_Smoke_Group_Inline)? inline_context.getPreviewingNode() : self; } + static getPreviewValues = function() { return is(inline_context, Node_Smoke_Group_Inline)? inline_context.getPreviewValues() : self; } } \ No newline at end of file diff --git a/scripts/node_FLIP_domain/node_FLIP_domain.gml b/scripts/node_FLIP_domain/node_FLIP_domain.gml index b99e3755e..88d72d0c9 100644 --- a/scripts/node_FLIP_domain/node_FLIP_domain.gml +++ b/scripts/node_FLIP_domain/node_FLIP_domain.gml @@ -38,7 +38,7 @@ function Node_FLIP_Domain(_x, _y, _group = noone) : Node(_x, _y, _group) constru newInput(12, nodeValue_Float("Wall Elasticity", self, 0.)) .setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 2, 0.01 ] }); - newInput(13, nodeValue_Rotation("Gravity Direction", self, 0)); + newInput(13, nodeValue_Rotation("Gravity Direction", self, -90)); input_display_list = [ ["Domain", false], 0, 1, 9, 12, diff --git a/scripts/node_VFX_group/node_VFX_group.yy b/scripts/node_VFX_group/node_VFX_group.yy index ee05540aa..863004cb1 100644 --- a/scripts/node_VFX_group/node_VFX_group.yy +++ b/scripts/node_VFX_group/node_VFX_group.yy @@ -5,8 +5,8 @@ "isDnD":false, "name":"node_VFX_group", "parent":{ - "name":"VFX", - "path":"folders/nodes/data/simulation/VFX.yy", + "name":"__legacy", + "path":"folders/nodes/data/simulation/VFX/__legacy.yy", }, "resourceType":"GMScript", "resourceVersion":"2.0", diff --git a/scripts/node_VFX_override/node_VFX_override.gml b/scripts/node_VFX_override/node_VFX_override.gml index d7cc29aba..dbe4d26e6 100644 --- a/scripts/node_VFX_override/node_VFX_override.gml +++ b/scripts/node_VFX_override/node_VFX_override.gml @@ -88,5 +88,6 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr draw_sprite_fit(node_draw_icon, 0, bbox.xc, bbox.yc, bbox.w, bbox.h); } - getPreviewingNode = VFX_PREVIEW_NODE; + static getPreviewingNode = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewingNode() : self; } + static getPreviewValues = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewValues() : self; } } \ No newline at end of file diff --git a/scripts/node_VFX_renderer/node_VFX_renderer.gml b/scripts/node_VFX_renderer/node_VFX_renderer.gml index 9b9796031..a2b113b29 100644 --- a/scripts/node_VFX_renderer/node_VFX_renderer.gml +++ b/scripts/node_VFX_renderer/node_VFX_renderer.gml @@ -115,4 +115,9 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr cacheCurrentFrame(_outSurf); } + + static getPreviewValues = function() { + var val = outputs[preview_channel].getValue(); + return is_surface(val)? val : temp_surface[0]; + } } \ No newline at end of file diff --git a/scripts/node_VFX_renderer_output/node_VFX_renderer_output.yy b/scripts/node_VFX_renderer_output/node_VFX_renderer_output.yy index fb6ab39c5..8f3b7cc78 100644 --- a/scripts/node_VFX_renderer_output/node_VFX_renderer_output.yy +++ b/scripts/node_VFX_renderer_output/node_VFX_renderer_output.yy @@ -5,8 +5,8 @@ "isDnD":false, "name":"node_VFX_renderer_output", "parent":{ - "name":"VFX", - "path":"folders/nodes/data/simulation/VFX.yy", + "name":"__legacy", + "path":"folders/nodes/data/simulation/VFX/__legacy.yy", }, "resourceType":"GMScript", "resourceVersion":"2.0", diff --git a/scripts/node_VFX_spawner/node_VFX_spawner.gml b/scripts/node_VFX_spawner/node_VFX_spawner.gml index fd35aaa26..cb6ed6636 100644 --- a/scripts/node_VFX_spawner/node_VFX_spawner.gml +++ b/scripts/node_VFX_spawner/node_VFX_spawner.gml @@ -89,13 +89,6 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y static getGraphPreviewSurface = function() { return getInputData(0); } - static getPreviewingNode = function() { - if(!is(inline_context, Node_VFX_Group_Inline)) return self; - return inline_context.getPreviewingNode(); - } - - static getPreviewValues = function() { - if(!is(inline_context, Node_VFX_Group_Inline)) return self; - return inline_context.getPreviewValues(); - } + static getPreviewingNode = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewingNode() : self; } + static getPreviewValues = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewValues() : self; } } \ No newline at end of file diff --git a/scripts/node_VFX_trail/node_VFX_trail.gml b/scripts/node_VFX_trail/node_VFX_trail.gml index 132168c9f..adae0214e 100644 --- a/scripts/node_VFX_trail/node_VFX_trail.gml +++ b/scripts/node_VFX_trail/node_VFX_trail.gml @@ -1,6 +1,6 @@ function Node_VFX_Trail(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { name = "VFX Trail"; - setDimension(96, 48);; + setDimension(96, 48); manual_ungroupable = false; @@ -160,4 +160,7 @@ function Node_VFX_Trail(_x, _y, _group = noone) : Node(_x, _y, _group) construct var bbox = drawGetBbox(xx, yy, _s); draw_sprite_fit(s_node_vfx_trail, 0, bbox.xc, bbox.yc, bbox.w, bbox.h); } + + static getPreviewingNode = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewingNode() : self; } + static getPreviewValues = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewValues() : self; } } \ No newline at end of file diff --git a/scripts/node_VFX_triangulate/node_VFX_triangulate.gml b/scripts/node_VFX_triangulate/node_VFX_triangulate.gml index 7928fd2cb..067a20e6c 100644 --- a/scripts/node_VFX_triangulate/node_VFX_triangulate.gml +++ b/scripts/node_VFX_triangulate/node_VFX_triangulate.gml @@ -4,13 +4,13 @@ function Node_VFX_Triangulate(_x, _y, _group = noone) : Node(_x, _y, _group) con icon = THEME.vfx; use_cache = CACHE_USE.auto; - function _Point(part) constructor { #region + function _Point(part) constructor { self.part = part; x = part.x; y = part.y; static equal = function(point) { INLINE return x == point.x && y == point.y; } - } #endregion + } manual_ungroupable = false; @@ -38,15 +38,15 @@ function Node_VFX_Triangulate(_x, _y, _group = noone) : Node(_x, _y, _group) con static onInspector2Update = function() { clearCache(); } - static step = function() { #region + static step = function() { var _ith = getInputData(4); var _icl = getInputData(5); inputs[2].setVisible(!_ith); inputs[3].setVisible(!_icl); - } #endregion + } - static update = function() { #region + static update = function() { var _dim = getInputData(0); var _par = getInputData(1); @@ -124,5 +124,8 @@ function Node_VFX_Triangulate(_x, _y, _group = noone) : Node(_x, _y, _group) con surface_reset_shader(); cacheCurrentFrame(_surf); - } #endregion + } + + static getPreviewingNode = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewingNode() : self; } + static getPreviewValues = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewValues() : self; } } \ No newline at end of file diff --git a/scripts/node_VFX_variable/node_VFX_variable.gml b/scripts/node_VFX_variable/node_VFX_variable.gml index 467eb6948..f89c4ae06 100644 --- a/scripts/node_VFX_variable/node_VFX_variable.gml +++ b/scripts/node_VFX_variable/node_VFX_variable.gml @@ -85,6 +85,7 @@ function Node_VFX_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constr var bbox = drawGetBbox(xx, yy, _s); draw_sprite_fit(node_draw_icon, 0, bbox.xc, bbox.yc, bbox.w, bbox.h); } - - getPreviewingNode = VFX_PREVIEW_NODE; + + static getPreviewingNode = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewingNode() : self; } + static getPreviewValues = function() { return is(inline_context, Node_VFX_Group_Inline)? inline_context.getPreviewValues() : self; } } \ No newline at end of file diff --git a/scripts/node_color_oklch/node_color_oklch.gml b/scripts/node_color_oklch/node_color_oklch.gml index 40011e611..c8318280c 100644 --- a/scripts/node_color_oklch/node_color_oklch.gml +++ b/scripts/node_color_oklch/node_color_oklch.gml @@ -3,6 +3,7 @@ function Node_Color_OKLCH(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou setDimension(96, 48); newInput(0, nodeValue_Float("Lightness", self, .5)) + .setDisplay(VALUE_DISPLAY.slider) .setVisible(true, true); newInput(1, nodeValue_Float("Chroma", self, .2)) @@ -81,7 +82,7 @@ function Node_Color_OKLCH(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou ); } - inspector_info.text = _inrange? "" : "Color(s) outside 8-bit rgb range\nOutput will not be accurate."; + inspector_info.text = _inrange? "" : "Color(s) is outside the 8-bit rgb range\nOutput will not be accurate."; return [ col, rgb ]; } diff --git a/scripts/node_smoke_add/node_smoke_add.gml b/scripts/node_smoke_add/node_smoke_add.gml index 4cc1647a8..9e5bc98b2 100644 --- a/scripts/node_smoke_add/node_smoke_add.gml +++ b/scripts/node_smoke_add/node_smoke_add.gml @@ -2,7 +2,6 @@ function Node_Smoke_Add(_x, _y, _group = noone) : Node_Smoke(_x, _y, _group) con name = "Add Emitter"; color = COLORS.node_blend_smoke; icon = THEME.smoke_sim; - // setDimension(96, 96); manual_ungroupable = false; @@ -194,9 +193,15 @@ function Node_Smoke_Add(_x, _y, _group = noone) : Node_Smoke(_x, _y, _group) con static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { var bbox = drawGetBbox(xx, yy, _s); - var _mat = getInputData(1); - if(!is_surface(_mat)) return; + var _typ = getInputData(8); - draw_surface_fit(_mat, bbox.xc, bbox.yc, bbox.w, bbox.h); + if(_typ == 0) { + draw_circle_ui(bbox.xc, bbox.yc, min(bbox.w, bbox.h) * .25, 0); + + } else { + var _mat = getInputData(1); + if(!is_surface(_mat)) return; + draw_surface_fit(_mat, bbox.xc, bbox.yc, bbox.w, bbox.h); + } } } \ No newline at end of file diff --git a/scripts/node_smoke_domain/node_smoke_domain.gml b/scripts/node_smoke_domain/node_smoke_domain.gml index 21fd32d76..5233a58f9 100644 --- a/scripts/node_smoke_domain/node_smoke_domain.gml +++ b/scripts/node_smoke_domain/node_smoke_domain.gml @@ -53,12 +53,10 @@ function Node_Smoke_Domain(_x, _y, _group = noone) : Node_Smoke(_x, _y, _group) ["Advance Setings", true], 2, 4, 9, 10, ]; - domain = new smokeSim_Domain(1, 1); + domain = new smokeSim_Domain(1, 1); _dim_old = [0, 0]; static update = function(frame = CURRENT_FRAME) { - RETURN_ON_REST - var _dim = getInputData( 0); var coll = getInputData( 1); var mdisTyp = getInputData( 2); diff --git a/scripts/node_smoke_group_inline/node_smoke_group_inline.gml b/scripts/node_smoke_group_inline/node_smoke_group_inline.gml index 6b5c251ad..f6fc40b1f 100644 --- a/scripts/node_smoke_group_inline/node_smoke_group_inline.gml +++ b/scripts/node_smoke_group_inline/node_smoke_group_inline.gml @@ -14,4 +14,17 @@ function Node_Smoke_Group_Inline(_x, _y, _group = noone) : Node_Collection_Inlin addNode(_domain); addNode(_render); } + + static getPreviewingNode = function() { + for( var i = 0, n = array_length(nodes); i < n; i++ ) + if(is(nodes[i], Node_Smoke_Render)) return nodes[i]; + return self; + } + + static getPreviewValues = function() { + for( var i = 0, n = array_length(nodes); i < n; i++ ) + if(is(nodes[i], Node_Smoke_Render)) return nodes[i].getPreviewValues(); + return noone; + } + } \ No newline at end of file diff --git a/scripts/node_smoke_render/node_smoke_render.gml b/scripts/node_smoke_render/node_smoke_render.gml index 44fc9b697..b041f020a 100644 --- a/scripts/node_smoke_render/node_smoke_render.gml +++ b/scripts/node_smoke_render/node_smoke_render.gml @@ -2,7 +2,7 @@ function Node_Smoke_Render(_x, _y, _group = noone) : Node_Smoke(_x, _y, _group) name = "Render Domain"; color = COLORS.node_blend_smoke; icon = THEME.smoke_sim; - use_cache = CACHE_USE.auto; + use_cache = CACHE_USE.manual; manual_ungroupable = false; @@ -30,13 +30,18 @@ function Node_Smoke_Render(_x, _y, _group = noone) : Node_Smoke(_x, _y, _group) setTrigger(2, "Clear cache", [ THEME.cache, 0, COLORS._main_icon ]); + temp_surface = [ 0 ]; + static onInspector2Update = function() { clearCache(); } static update = function(frame = CURRENT_FRAME) { + var _dom = getInputData(0); + if(is(_dom, smokeSim_Domain)) + temp_surface[0] = surface_verify(temp_surface[0], _dom.width, _dom.height, attrDepth()); + if(recoverCache() || !PROJECT.animator.is_playing) return; - var _dom = getInputData(0); var _int = getInputData(2); var _drw = getInputData(3); var _upd = getInputData(4); @@ -64,4 +69,11 @@ function Node_Smoke_Render(_x, _y, _group = noone) : Node_Smoke(_x, _y, _group) cacheCurrentFrame(_outSurf); } + + static getPreviewingNode = function() { return self; } + + static getPreviewValues = function() { + var val = outputs[preview_channel].getValue(); + return is_surface(val)? val : temp_surface[0]; + } } \ No newline at end of file diff --git a/scripts/okhsl_function/okhsl_function.gml b/scripts/okhsl_function/okhsl_function.gml index 4fbe3c6ca..e0ee76069 100644 --- a/scripts/okhsl_function/okhsl_function.gml +++ b/scripts/okhsl_function/okhsl_function.gml @@ -422,7 +422,8 @@ function gamut_clip_preserve_chroma(rgb) { if (rgb[0] < 1 && rgb[1] < 1 && rgb[2] < 1 && rgb[0] > 0 && rgb[1] > 0 && rgb[2] > 0) return rgb; - var lab = linear_srgb_to_oklab(rgb); + // var lab = linear_srgb_to_oklab(rgb); + var lab = convertLrgbToOklab(rgb2srgbLinear(rgb)) var L = lab[0]; var eps = 0.00001; @@ -437,7 +438,8 @@ function gamut_clip_preserve_chroma(rgb) { var L_clipped = L0 * (1 - t) + t * L; var C_clipped = t * C; - return oklab_to_linear_srgb([ L_clipped, C_clipped * a_, C_clipped * b_ ]); + // return oklab_to_linear_srgb([ L_clipped, C_clipped * a_, C_clipped * b_ ]); + return srgbLinear2rgb(convertOklabToLrgb([ L_clipped, C_clipped * a_, C_clipped * b_ ])); } function gamut_clip_project_to_0_5(rgb) { diff --git a/scripts/panel_preview/panel_preview.gml b/scripts/panel_preview/panel_preview.gml index 27ac6d282..14ecfc9b2 100644 --- a/scripts/panel_preview/panel_preview.gml +++ b/scripts/panel_preview/panel_preview.gml @@ -977,43 +977,42 @@ function Panel_Preview() : PanelContent() constructor { surface_reset_shader(); } - switch(splitView) { - case 0 : - if(_ps0) { - preview_node[0].previewing = 1; + if(splitView == 0 && _ps0) { + preview_node[0].previewing = 1; + + switch(tileMode) { + case 0 : + if(PROJECT.onion_skin.enabled) drawOnionSkin(_node, psx, psy, ss); + else draw_surface_ext(preview_surface[0], psx, psy, ss, ss, 0, c_white, preview_node[0].preview_alpha); + break; - switch(tileMode) { - case 0 : - if(PROJECT.onion_skin.enabled) drawOnionSkin(_node, psx, psy, ss); - else draw_surface_ext(preview_surface[0], psx, psy, ss, ss, 0, c_white, preview_node[0].preview_alpha); - break; - - case 1 : - tile_surface = surface_verify(tile_surface, w, surface_get_height_safe(preview_surface[0]) * ss); - surface_set_target(tile_surface); - DRAW_CLEAR - draw_surface_tiled_ext_safe(preview_surface[0], psx, 0, ss, ss, 0, c_white, 1); - surface_reset_target(); - draw_surface_safe(tile_surface, 0, psy); - break; - - case 2 : - tile_surface = surface_verify(tile_surface, surface_get_width_safe(preview_surface[0]) * ss, h); - surface_set_target(tile_surface); - DRAW_CLEAR - draw_surface_tiled_ext_safe(preview_surface[0], 0, psy, ss, ss, 0, c_white, 1); - surface_reset_target(); - draw_surface_safe(tile_surface, psx, 0); - break; - - case 3 : - draw_surface_tiled_ext_safe(preview_surface[0], psx, psy, ss, ss, 0, c_white, 1); break; - } - } - break; + case 1 : + tile_surface = surface_verify(tile_surface, w, surface_get_height_safe(preview_surface[0]) * ss); + surface_set_target(tile_surface); + DRAW_CLEAR + draw_surface_tiled_ext_safe(preview_surface[0], psx, 0, ss, ss, 0, c_white, 1); + surface_reset_target(); + draw_surface_safe(tile_surface, 0, psy); + break; + + case 2 : + tile_surface = surface_verify(tile_surface, surface_get_width_safe(preview_surface[0]) * ss, h); + surface_set_target(tile_surface); + DRAW_CLEAR + draw_surface_tiled_ext_safe(preview_surface[0], 0, psy, ss, ss, 0, c_white, 1); + surface_reset_target(); + draw_surface_safe(tile_surface, psx, 0); + break; + + case 3 : + draw_surface_tiled_ext_safe(preview_surface[0], psx, psy, ss, ss, 0, c_white, 1); break; + } + } + + switch(splitView) { case 1 : var sp = splitPosition * w; - + if(_ps0) { preview_node[0].previewing = 2; var maxX = min(sp, psx1); @@ -1022,7 +1021,7 @@ function Panel_Preview() : PanelContent() constructor { if(sW > 0) draw_surface_part_ext_safe(preview_surface[0], 0, 0, sW, psh, psx, psy, ss, ss, 0, c_white, 1); } - + if(_ps1) { preview_node[1].previewing = 3; var minX = max(ssx, sp); @@ -1033,6 +1032,7 @@ function Panel_Preview() : PanelContent() constructor { draw_surface_part_ext_safe(preview_surface[1], sX, 0, ssw - sX, ssh, spx, ssy, ss, ss, 0, c_white, 1); } break; + case 2 : var sp = splitPosition * h; @@ -1044,7 +1044,7 @@ function Panel_Preview() : PanelContent() constructor { if(sH > 0) draw_surface_part_ext_safe(preview_surface[0], 0, 0, psw, sH, psx, psy, ss, ss, 0, c_white, 1); } - + if(_ps1) { preview_node[1].previewing = 5; var minY = max(ssy, sp);