function scr_selfshadow(arg0 = x, arg1 = y, arg2 = image_xscale) { if (i_ex(obj_sunshadows)) { if (obj_sunshadows.evening_mode && !selfshadow_override) { var _sprname = sprite_get_name(sprite_index); var _cache = obj_sunshadows.shadow_assetcache; var _sprite_cached = variable_struct_get(_cache, _sprname); var _finalsprite; if (is_undefined(_sprite_cached) || is_undefined(variable_struct_get(_sprite_cached, "selfshadow"))) { var _spritelookup = asset_get_index(sprite_get_name(sprite_index) + "_shadow"); if (is_undefined(_sprite_cached)) { variable_struct_set(_cache, _sprname, { selfshadow: _spritelookup }); } else { variable_struct_get(_cache, _sprname).selfshadow = _spritelookup; } _finalsprite = _spritelookup; } else { _finalsprite = _sprite_cached.selfshadow; } shader_replace_simple_set_hook(25); with (obj_sunshadows) shader_set_uniform_f(u_shadowblend, shadowblend_r, shadowblend_g, shadowblend_b, alpha_shadowblend); if (_finalsprite != -1) draw_sprite_ext(_finalsprite, image_index, arg0, arg1, image_xscale, image_yscale, image_angle, image_blend, image_alpha); shader_replace_simple_reset_hook(); } else { shader_replace_simple_set_hook(25); with (obj_sunshadows) shader_set_uniform_f(u_shadowblend, shadowblend_r, shadowblend_g, shadowblend_b, alpha_shadowblend); draw_sprite_ext(sprite_index, image_index, arg0, arg1, image_xscale, image_yscale, image_angle, image_blend, image_alpha); shader_replace_simple_reset_hook(); } } } function scr_addtoselfshadows(arg0 = true, arg1 = id, arg2 = false, arg3 = false) { selfshadow_override = false; with (obj_sunshadows) array_push(selfshadow_instances, arg1); if (arg2) { with (obj_sunshadows) array_push(dropshadow_instances, arg1); } if (arg3) { with (obj_sunshadows) array_push(highlight_instances, arg1); } if (arg0) { draw_func = method(id, function() { draw_self(); scr_selfshadow(); }); } }