class_name CueMultiplayer extends CueBase func setup_multiplayer() -> void: if not Globals.multiplayer_data.is_multiplayer_active: return self.set_multiplayer_authority(1) Globals.multiplayer_data.set_tracking_of_cue(get_path()) Globals.multiplayer_data.set_tracking_of_cue(inclination.get_path()) Globals.multiplayer_data.set_tracking_of_cue(pool_cue_tip.get_path()) if multiplayer.is_server(): return pool_cue_tip.monitoring = false @rpc("any_peer", "call_remote", "reliable") func rpc_input(event: String) -> void: if not Globals.multiplayer_data.can_do_request(): return if event == "aim_pulse": animation_player.play("aim_pulse") elif event == "aim_release": # NOTE: Here, 'anim_pos' is used to gague strength of impulse pool_cue_tip.anim_pos = animation_player.get_current_animation_position() cue_shape.set_deferred("disabled", false) cue_kick() @rpc("any_peer", "call_remote", "reliable") func rpc_process(action: String, delta: float) -> void: if not Globals.multiplayer_data.can_do_request(): return Globals.game_state.update_cue_cam_position.emit( cue_cam_marker.global_rotation, cue_cam_marker.global_position ) if action == "aim_rotate_left": cue_rotation = rewind_anim(delta, cue_rotation, "aim_rotate") elif action == "aim_rotate_right": cue_rotation = forward_anim(delta, cue_rotation, "aim_rotate") elif action == "aim_incline": cue_inclination = forward_anim(delta, cue_inclination, "aim_inclination") elif action == "aim_decline": cue_inclination = rewind_anim(delta, cue_inclination, "aim_inclination")