Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if active {
- //initialize
- var x_temp, y_temp, x_target, y_target, h_collision_list, v_collision_list, _c, i, _n, _n2;
- x_prev = x + x_slop;
- y_prev = y + y_slop;
- x_temp = x_prev;
- y_temp = y_prev;
- x_target = x_prev + x_speed;
- y_target = y_prev + y_speed;
- h_collision_list = ds_list_create();
- v_collision_list = ds_list_create();
- //get h_collision_list
- if x_speed < 0 and bool( collision_rectangle( bbox_left + x_slop + x_speed, bbox_top, bbox_left + x_slop, bbox_bottom, tmp_block, 0, 1 ) ) {
- _c = 0;
- while _c != noone {
- _c = collision_rectangle( bbox_left + x_slop + x_speed, bbox_top, bbox_left + x_slop, bbox_bottom, tmp_block, 0, 1 );
- if _c != noone {
- ds_list_add( h_collision_list, _c );
- instance_deactivate_object( _c );
- }
- }
- //truncate x_speed to nearest obstacle if needed
- if ds_list_size( h_collision_list ) > 0 {
- _n = x_target;
- for ( i = 0; i < ds_list_size( h_collision_list ); i++ ) {
- instance_activate_object( ds_list_find_value( h_collision_list, i ) );
- _n2 = ds_list_find_value( h_collision_list, i );
- if _n2 > _n _n = _n2;
- }
- x_target = _n2;
- }
- }
- if x_speed > 0 and bool( collision_rectangle( bbox_right + x_slop, bbox_top, bbox_left + x_slop + x_speed, bbox_bottom, tmp_block, 0, 1 ) ) {
- _c = 0;
- while _c != noone {
- _c = collision_rectangle( bbox_right + x_slop, bbox_top, bbox_left + x_slop + x_speed, bbox_bottom, tmp_block, 0, 1 );
- if _c != noone {
- ds_list_add( h_collision_list, _c );
- instance_deactivate_object( _c )
- }
- }
- //truncate x_speed to nearest obstacle if needed
- if ds_list_size( h_collision_list ) > 0 {
- _n = x_target;
- for ( i = 0; i < ds_list_size( h_collision_list ); i++ ) {
- instance_activate_object( ds_list_find_value( h_collision_list, i ) );
- _n2 = ds_list_find_value( h_collision_list, i );
- if _n2 < _n _n = _n2;
- }
- x_target = _n2;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement