Skip to content

Commit f5e6061

Browse files
committed
Release 2.0 - PreBaking
1 parent 75aa019 commit f5e6061

34 files changed

+1461
-35
lines changed
Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
11
{
2-
"FolderOrderSettings": [],
2+
"FolderOrderSettings": [
3+
{"name":"outline-shader-drawer","order":4,"path":"folders/outline-shader-drawer.yy",},
4+
{"name":"_third_party_packages_","order":3,"path":"folders/_third_party_packages_.yy",},
5+
{"name":"Canvas","order":1,"path":"folders/_third_party_packages_/Canvas.yy",},
6+
{"name":"System","order":1,"path":"folders/_third_party_packages_/Canvas/System.yy",},
7+
],
38
"ResourceOrderSettings": [
9+
{"name":"__CanvasSurfFormat","order":4,"path":"scripts/__CanvasSurfFormat/__CanvasSurfFormat.yy",},
410
{"name":"DemoMace","order":1,"path":"objects/DemoMace/DemoMace.yy",},
11+
{"name":"CanvasIsCanvas","order":4,"path":"scripts/CanvasIsCanvas/CanvasIsCanvas.yy",},
12+
{"name":"__CanvasTrace","order":6,"path":"scripts/__CanvasTrace/__CanvasTrace.yy",},
13+
{"name":"OutlineObject","order":2,"path":"objects/OutlineObject/OutlineObject.yy",},
514
{"name":"seqRotatingLoop","order":2,"path":"sequences/seqRotatingLoop/seqRotatingLoop.yy",},
615
{"name":"OutlineLogo","order":8,"path":"objects/OutlineLogo/OutlineLogo.yy",},
7-
{"name":"OutlineObject","order":2,"path":"objects/OutlineObject/OutlineObject.yy",},
16+
{"name":"sprite_to_canvas","order":5,"path":"scripts/sprite_to_canvas/sprite_to_canvas.yy",},
17+
{"name":"Canvas","order":2,"path":"scripts/Canvas/Canvas.yy",},
18+
{"name":"__CanvasSystem","order":5,"path":"scripts/__CanvasSystem/__CanvasSystem.yy",},
19+
{"name":"__CanvasCleanupQueue","order":1,"path":"scripts/__CanvasCleanupQueue/__CanvasCleanupQueue.yy",},
820
{"name":"DemoPotion","order":6,"path":"objects/DemoPotion/DemoPotion.yy",},
9-
{"name":"_OUTLINE_SHADER_DRAWER_VERSION_","order":3,"path":"scripts/_OUTLINE_SHADER_DRAWER_VERSION_/_OUTLINE_SHADER_DRAWER_VERSION_.yy",},
1021
{"name":"sprHellToHeaven","order":4,"path":"sprites/sprHellToHeaven/sprHellToHeaven.yy",},
22+
{"name":"__CanvasGC","order":3,"path":"scripts/__CanvasGC/__CanvasGC.yy",},
23+
{"name":"CanvasGetAppSurf","order":3,"path":"scripts/CanvasGetAppSurf/CanvasGetAppSurf.yy",},
1124
{"name":"RotatingCoin","order":1,"path":"objects/RotatingCoin/RotatingCoin.yy",},
1225
{"name":"DemoTextDrawer","order":3,"path":"objects/DemoTextDrawer/DemoTextDrawer.yy",},
1326
{"name":"sprMace","order":3,"path":"sprites/sprMace/sprMace.yy",},
1427
{"name":"sprRedPotion","order":4,"path":"sprites/sprRedPotion/sprRedPotion.yy",},
1528
{"name":"sprOutlineTitle","order":7,"path":"sprites/sprOutlineTitle/sprOutlineTitle.yy",},
16-
{"name":"shd_outline","order":1,"path":"shaders/shd_outline/shd_outline.yy",},
29+
{"name":"__CanvasError","order":2,"path":"scripts/__CanvasError/__CanvasError.yy",},
30+
{"name":"shd_outline","order":4,"path":"shaders/shd_outline/shd_outline.yy",},
31+
{"name":"OutlineObjectBaked","order":3,"path":"objects/OutlineObjectBaked/OutlineObjectBaked.yy",},
32+
{"name":"outline_drawer","order":1,"path":"scripts/outline_drawer/outline_drawer.yy",},
1733
],
1834
}

gml-outline-shader-drawer.yyp

Lines changed: 19 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

objects/OutlineObject/Create_0.gml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,15 @@ outliner = new outline_drawer(
66
outline_color,
77
outline_alpha,
88
outline_strength,
9-
outline_alpha_fading
9+
outline_alpha_fading,
10+
use_bbox_of_sprite
1011
);
1112

1213
mouse_is_over = false;
14+
15+
__draw = function() {
16+
if (outline_always || (outline_on_mouse_over && mouse_is_over))
17+
outliner.draw_object_outline();
18+
else
19+
draw_self();
20+
}

objects/OutlineObject/Draw_0.gml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
11
/// @description draw outline if mouse is over
2-
if (sprite_index == -1) exit;
3-
4-
if (outline_on_mouse_over && mouse_is_over)
5-
outliner.draw_object_outline();
6-
else
7-
draw_self();
8-
2+
if (sprite_index == -1 || draw_on_gui) exit;
3+
__draw();

objects/OutlineObject/Draw_64.gml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/// @description draw outline if mouse is over
2+
if (sprite_index == -1 || !draw_on_gui) exit;
3+
__draw();

objects/OutlineObject/OutlineObject.yy

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/// @description release canvas
2+
__free();
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/// @description bake on first draw
2+
event_inherited();
3+
canvas = undefined;
4+
5+
__free = function() {
6+
if (canvas != undefined)
7+
canvas.free();
8+
}
9+
10+
/// @function bake()
11+
bake = function() {
12+
if (canvas != undefined) canvas.free();
13+
log("Pre-Baking sprite '{0}' with {1} frames", sprite_get_name(sprite_index), image_number);
14+
var begintime = current_time;
15+
var shader = shd_outline;
16+
var u_texel = shader_get_uniform(shader, "u_vTexel");
17+
var u_outline_color = shader_get_uniform(shader, "u_vOutlineColour");
18+
var u_thickness = shader_get_uniform(shader, "u_vThickness");
19+
20+
canvas = sprite_to_canvas(sprite_index, -1, outline_strength + TEXTURE_PAGE_BORDER_SIZE);
21+
// now bake it with the outliner
22+
var target = new Canvas(canvas.canvas.GetWidth(), canvas.canvas.GetHeight(), true);
23+
target.Start();
24+
25+
shader_set(shader);
26+
var _texture = canvas.canvas.GetTexture();
27+
texture_set_stage(shader_get_sampler_index(shader, "u_sSpriteSurface"), _texture);
28+
shader_set_uniform_f(u_texel , texture_get_texel_width(_texture), texture_get_texel_height(_texture));
29+
shader_set_uniform_f(u_outline_color, outliner.outline_color, outliner.outline_alpha); //colour, alpha
30+
shader_set_uniform_f(u_thickness , outliner.outline_strength, outliner.alpha_fading ? 1 : 0); // thickness x, y
31+
32+
draw_surface(canvas.canvas.GetSurfaceID(),outliner.outline_strength,outliner.outline_strength);
33+
34+
shader_reset();
35+
target.Finish();
36+
37+
// Free the original canvas...
38+
canvas.canvas.Free();
39+
// ...and inject the pre-baked
40+
canvas.canvas = target;
41+
log("Pre-Baking took {0}ms", current_time - begintime);
42+
}
43+
44+
__draw = function() {
45+
if (canvas == undefined) bake();
46+
image_index = canvas.get_image_index(delta_time, image_speed);
47+
if (outline_always || (outline_on_mouse_over && mouse_is_over))
48+
canvas.draw_frame(image_index, x - outline_strength - TEXTURE_PAGE_BORDER_SIZE, y - outline_strength - TEXTURE_PAGE_BORDER_SIZE);
49+
else
50+
draw_self();
51+
}
52+
53+
if (sprite_index != -1) bake();

objects/OutlineObjectBaked/OutlineObjectBaked.yy

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rooms/rmDemo/rmDemo.yy

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)