1 |
function _effect_blend() constructor |
2 |
{ |
3 |
g_Blend = 1; |
4 |
surf_blend = -1; |
5 |
surf_width = 1; |
6 |
surf_height = 1; |
7 |
clonedcam = -1; |
8 |
tempcam = -1; |
9 |
|
10 |
CloneCurrCam = function() |
11 |
{ |
12 |
if (clonedcam == -1) |
13 |
clonedcam = camera_create(); |
14 |
var currcam = camera_get_active(); |
15 |
camera_copy_transforms(clonedcam, currcam); |
16 |
}; |
17 |
|
18 |
cleanup = function() |
19 |
{ |
20 |
if (surface_exists(surf_blend)) |
21 |
{ |
22 |
surface_free(surf_blend); |
23 |
surf_blend = -1; |
24 |
} |
25 |
if (tempcam != -1) |
26 |
{ |
27 |
camera_destroy(tempcam); |
28 |
tempcam = -1; |
29 |
} |
30 |
if (clonedcam != -1) |
31 |
{ |
32 |
camera_destroy(clonedcam); |
33 |
clonedcam = -1; |
34 |
} |
35 |
}; |
36 |
|
37 |
room_end = function() |
38 |
{ |
39 |
cleanup(); |
40 |
}; |
41 |
|
42 |
layer_begin = function() |
43 |
{ |
44 |
if (event_type != ev_draw || event_number != 0) |
45 |
exit; |
46 |
if (!gmAffectsSingleLayerOnly) |
47 |
exit; |
48 |
var _draw_surface = surface_get_target(); |
49 |
var _draw_width = surface_get_width(_draw_surface); |
50 |
var _draw_height = surface_get_height(_draw_surface); |
51 |
if (!surface_exists(surf_blend)) |
52 |
surf_blend = surface_create(_draw_width, _draw_height); |
53 |
else if (surf_width != _draw_width || surf_height != _draw_height) |
54 |
surface_resize(surf_blend, _draw_width, _draw_height); |
55 |
surf_width = _draw_width; |
56 |
surf_height = _draw_height; |
57 |
CloneCurrCam(); |
58 |
surface_set_target(surf_blend); |
59 |
draw_clear_alpha(c_black, 0); |
60 |
camera_apply(clonedcam); |
61 |
}; |
62 |
|
63 |
layer_end = function() |
64 |
{ |
65 |
if (event_type != ev_draw || event_number != 0) |
66 |
exit; |
67 |
if (!gmAffectsSingleLayerOnly) |
68 |
exit; |
69 |
surface_reset_target(); |
70 |
if (tempcam == -1) |
71 |
tempcam = camera_create_view(0, 0, surf_width, surf_height); |
72 |
else |
73 |
camera_set_view_size(tempcam, surf_width, surf_height); |
74 |
camera_apply(tempcam); |
75 |
gpu_push_state(); |
76 |
gpu_set_blendmode(g_Blend); |
77 |
draw_surface(surf_blend, 0, 0); |
78 |
gpu_pop_state(); |
79 |
camera_apply(clonedcam); |
80 |
}; |
81 |
} |