diff --git a/addons/bones/Juice.gd b/addons/bones/Juice.gd index d0076c67..4327c45f 100644 --- a/addons/bones/Juice.gd +++ b/addons/bones/Juice.gd @@ -107,16 +107,6 @@ var shake_rotation var trans_noise_ctx var rot_noise_ctx -var original_offset = Vector2() -var original_rotation = 0 - -# func _ready(): -# var cam = current_camera() -# if cam: -# # TODO update to hook into camera creation/is_current -# original_offset = cam.offset -# original_rotation = cam.rotation - func current_camera(): var cam = get_viewport().get_camera_2d() if cam and is_instance_valid(cam): @@ -145,12 +135,9 @@ func screenshake_reset(): trans_noise_ctx = null rot_noise_ctx = null - var cam = current_camera() var pcam = current_pcam() - if cam: - cam.offset = original_offset if pcam: - pcam.rotation = original_rotation + pcam.emit_noise(Transform2D()) func process_shake(delta): if trauma > 0: @@ -167,12 +154,11 @@ func process_shake(delta): screenshake_translational(trans_noise_ctx, delta) screenshake_rotational(rot_noise_ctx, delta) - var cam = current_camera() + # TODO don't fetch cams every frame var pcam = current_pcam() - if cam and shake_offset: - cam.offset = original_offset + shake_offset if pcam and shake_rotation: - pcam.set_rotation(original_rotation + shake_rotation) + var transform = Transform2D(shake_rotation, shake_offset) + pcam.emit_noise(transform) var noise_inputs = { "seed": 4, diff --git a/addons/bones/actions/Action.gd b/addons/bones/actions/Action.gd index 6242afcb..4273f093 100644 --- a/addons/bones/actions/Action.gd +++ b/addons/bones/actions/Action.gd @@ -24,8 +24,13 @@ var show_on_actor: bool = true func get_label(): if label_fn: - return label_fn.call() - return label + var lbl = label_fn.call() + if lbl: + return lbl + if label: + return label + Log.warn("No label specified for action", self) + return "action" ################################################################# # to string diff --git a/addons/bones/machine/Machine.gd b/addons/bones/machine/Machine.gd index 9d162fab..63722201 100644 --- a/addons/bones/machine/Machine.gd +++ b/addons/bones/machine/Machine.gd @@ -123,6 +123,16 @@ func transit(target_state_name: String, ctx: Dictionary = {}): next_state = null is_transitioning = false +# does nothing if the passed state name is already the state +# (should this be the default behavior?) +func transit_if_new(target_state_name: String, ctx: Dictionary = {}): + if state.name == target_state_name: + return + transit(target_state_name, ctx) + +func is_in_state(state_name: String) -> bool: + return state.name == state_name + ## input ##################################################################### func _unhandled_input(ev):