Advertisement
Guest User

Untitled

a guest
Jul 8th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if active {
  2.    
  3.     //initialize
  4.     var x_temp, y_temp, x_target, y_target, h_collision_list, v_collision_list, _c, i, _n, _n2;
  5.    
  6.     x_prev = x + x_slop;
  7.     y_prev = y + y_slop;
  8.     x_temp = x_prev;
  9.     y_temp = y_prev;
  10.     x_target = x_prev + x_speed;
  11.     y_target = y_prev + y_speed;
  12.     h_collision_list = ds_list_create();
  13.     v_collision_list = ds_list_create();
  14.    
  15.     //get h_collision_list
  16.     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 ) ) {
  17.        
  18.         _c = 0;
  19.         while _c != noone {
  20.            
  21.             _c = collision_rectangle( bbox_left + x_slop + x_speed, bbox_top, bbox_left + x_slop, bbox_bottom, tmp_block, 0, 1 );
  22.             if _c != noone {
  23.                
  24.                 ds_list_add( h_collision_list, _c );
  25.                 instance_deactivate_object( _c );
  26.                
  27.             }
  28.                
  29.         }
  30.        
  31.         //truncate x_speed to nearest obstacle if needed
  32.         if ds_list_size( h_collision_list ) > 0 {
  33.        
  34.             _n = x_target;
  35.             for ( i = 0; i < ds_list_size( h_collision_list ); i++ ) {
  36.            
  37.                 instance_activate_object( ds_list_find_value( h_collision_list, i ) );
  38.                 _n2 = ds_list_find_value( h_collision_list, i );
  39.                 if _n2 > _n _n = _n2;
  40.            
  41.             }
  42.            
  43.             x_target = _n2;
  44.        
  45.         }
  46.    
  47.     }
  48.        
  49.     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 ) ) {
  50.        
  51.         _c = 0;
  52.         while _c != noone {
  53.            
  54.             _c = collision_rectangle( bbox_right + x_slop, bbox_top, bbox_left + x_slop + x_speed, bbox_bottom, tmp_block, 0, 1 );
  55.             if _c != noone {
  56.                
  57.                 ds_list_add( h_collision_list, _c );
  58.                 instance_deactivate_object( _c )
  59.                
  60.             }
  61.            
  62.         }
  63.        
  64.         //truncate x_speed to nearest obstacle if needed
  65.         if ds_list_size( h_collision_list ) > 0 {
  66.        
  67.             _n = x_target;
  68.             for ( i = 0; i < ds_list_size( h_collision_list ); i++ ) {
  69.            
  70.                 instance_activate_object( ds_list_find_value( h_collision_list, i ) );
  71.                 _n2 = ds_list_find_value( h_collision_list, i );
  72.                 if _n2 < _n _n = _n2;
  73.            
  74.             }
  75.            
  76.             x_target = _n2;
  77.        
  78.         }
  79.        
  80.     }
  81.    
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement