@@ -30,6 +30,9 @@ self.matrix_block_left = undefined;
3030self.matrix_block_right = undefined;
3131
3232self.CalculateAllPositions = function() {
33+ var on_left = obj_game.collision .CheckObject (self.cobject_activation_left );
34+ var on_right = obj_game.collision .CheckObject (self.cobject_activation_right );
35+
3336 var base_position_matrix = matrix_build (self.x , self.y , self.z , 0 , 0 , 0 , 1 , 1 , 1 );
3437 self.matrix_base = matrix_multiply (self.rotation_mat , base_position_matrix);
3538
@@ -44,20 +47,46 @@ self.CalculateAllPositions = function() {
4447 var block_left_position_object = matrix_transform_vertex (seesaw_transform_matrix, block_left_position.x , block_left_position.y , block_left_position.z );
4548 var block_left_transform_matrix = matrix_build (block_left_position_object[0 ], block_left_position_object[1 ], block_left_position_object[2 ], 0 , 0 , 0 , 1 , 1 , 1 );
4649 var block_left_final_position_matrix = matrix_multiply (base_position_matrix, block_left_transform_matrix);
50+ var block_left_previous_y = is_array (self.matrix_block_left ) ? self.matrix_block_left [13 ] : 0 ;
4751 self.matrix_block_left = matrix_multiply (self.rotation_mat , block_left_final_position_matrix);
52+ var block_left_delta_y = self.matrix_block_left [13 ] - block_left_previous_y;
4853
4954 var block_right_position = array_search_with_name (self.mesh_seesaw .collision_shapes , " #AnchorRight" ).position ;
5055 var block_right_position_object = matrix_transform_vertex (seesaw_transform_matrix, block_right_position.x , block_right_position.y , block_right_position.z );
5156 var block_right_transform_matrix = matrix_build (block_right_position_object[0 ], block_right_position_object[1 ], block_right_position_object[2 ], 0 , 0 , 0 , 1 , 1 , 1 );
5257 var block_right_final_position_matrix = matrix_multiply (base_position_matrix, block_right_transform_matrix);
58+ var block_right_previous_y = is_array (self.matrix_block_right ) ? self.matrix_block_right [13 ] : 0 ;
5359 self.matrix_block_right = matrix_multiply (self.rotation_mat , block_right_final_position_matrix);
60+ var block_right_delta_y = self.matrix_block_right [13 ] - block_right_previous_y;
5461
5562 col_object_update_position (self.cobject_seesaw , self.matrix_seesaw );
5663 col_object_update_position (self.cobject_block_left , self.matrix_block_left );
5764 col_object_update_position (self.cobject_block_right , self.matrix_block_right );
5865
5966 col_object_update_position (self.cobject_activation_left , self.matrix_block_left );
6067 col_object_update_position (self.cobject_activation_right , self.matrix_block_right );
68+
69+ if (on_left) {
70+ on_left = on_left.reference ;
71+ if (on_left.object_index != obj_npc && !object_is_ancestor (on_left.object_index , obj_npc)) {
72+ on_left.y += block_left_delta_y;
73+ on_left.UpdateCollisionPositions ();
74+ } else {
75+ on_left.cobject .shape .position .y += block_left_delta_y;
76+ on_left.y += block_left_delta_y;
77+ }
78+ }
79+
80+ if (on_right) {
81+ on_right = on_right.reference ;
82+ if (on_right.object_index != obj_npc && !object_is_ancestor (on_right.object_index , obj_npc)) {
83+ on_right.y += block_right_delta_y;
84+ on_right.UpdateCollisionPositions ();
85+ } else {
86+ on_right.cobject .shape .position .y += block_right_delta_y;
87+ on_right.y += block_right_delta_y;
88+ }
89+ }
6190};
6291
6392self.HandleActivation = function() {
0 commit comments