This honestly requires a large refactor of weapon aiming to fix, which sounds weird, but it is because revolver fan mode is intertwined with aiming, which is handled almost entirely by the player script.
WeaponNode should be provided an aim offset, add a new function revolver_fan(bool) , and make set_aim(bool) perform all weapon position changes according to the set aim offset by the controller. Player should set the aim offset on the WeaponNode when switching weapons. WeaponNode needs to manage fan state sync with the scene and weapon, and revolver mechanism needs to auto-charge when fan mode is enabled, so probably accept a fan-charge time on RevolverWeapon and assign a charge time on the mechanism when entering/ exiting fan mode. Also, the revolver scene needs to STOP calling methods on the revolver which change its state.
This honestly requires a large refactor of weapon aiming to fix, which sounds weird, but it is because revolver fan mode is intertwined with aiming, which is handled almost entirely by the player script.
WeaponNode should be provided an aim offset, add a new function
revolver_fan(bool), and makeset_aim(bool)perform all weapon position changes according to the set aim offset by the controller. Player should set the aim offset on the WeaponNode when switching weapons. WeaponNode needs to manage fan state sync with the scene and weapon, and revolver mechanism needs to auto-charge when fan mode is enabled, so probably accept a fan-charge time on RevolverWeapon and assign a charge time on the mechanism when entering/ exiting fan mode. Also, the revolver scene needs to STOP calling methods on the revolver which change its state.