Skip to content

Commit a935493

Browse files
committed
things on the seesaw platforms move when the seesaw moves
1 parent 1192e97 commit a935493

5 files changed

Lines changed: 33 additions & 7 deletions

File tree

datafiles/meshes.derg

0 Bytes
Binary file not shown.

objects/obj_3d_seesaw/Create_0.gml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ self.matrix_block_left = undefined;
3030
self.matrix_block_right = undefined;
3131

3232
self.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

6392
self.HandleActivation = function() {

objects/obj_3d_spell_block/Create_0.gml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@ self.state = new SnowState("idle")
1111
}
1212
})
1313
.add("falling", {
14-
enter: function() {
15-
show_debug_message("block is now falling")
16-
},
17-
leave: function() {
18-
show_debug_message("block has landed")
19-
},
2014
update: function() {
2115
// properly do this later
2216
static grav = 9;

objects/obj_game/Create_0.gml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ var map = new UnityMapImport("test.place", self.meshes);
8888
var seesaw = instance_create_depth(100, 0, -300, obj_3d_seesaw);
8989
seesaw.UpdateCollisionPositions();
9090

91+
var seesaw = instance_create_depth(100, 0, -450, obj_3d_seesaw);
92+
seesaw.UpdateCollisionPositions();
93+
9194
var block = instance_create_depth(228, 100, -300, obj_3d_spell_block);
9295
block.SetMesh(self.meshes.block);
9396
block.UpdateCollisionPositions();

objects/obj_player/Create_0.gml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ self.cobject_climb = new ColObject(climb_shape, self.id, ECollisionMasks.NONE, E
160160
var player_activator_collision = array_search_with_name(player_data.collision_shapes, "#Activator");
161161

162162
original_position = new Vector3(player_activator_collision.position.x, player_activator_collision.position.y, player_activator_collision.position.z);
163-
var activator_shape = new ColSphere(original_position, player_climb_collision.radius);
163+
var activator_shape = new ColAABB(original_position, player_activator_collision.scale);
164164
activator_shape.original_position = original_position.Mul(1);
165165
self.cobject_activator = new ColObject(activator_shape, self.id, ECollisionMasks.ACTIVATOR, ECollisionMasks.NONE);
166166
#endregion

0 commit comments

Comments
 (0)