im trying to port my scripts to godot 4
here is a snippet from my script in godot3
func _process(delta):
window_activity()
var softness = 2.0
var cam_basis_this_frame = $CamRoot.transform.basis
var player_basis_this_frame = self.transform.basis
var player_tanslation_this_frame = self.translation
var offset1 = calculate_sway_offset(cam_basis_last_frame, cam_basis_this_frame)
var offset2 = calculate_sway_offset(player_basis_last_frame, player_basis_this_frame)
var world_space_delta = player_translation_last_frame - player_tanslation_this_frame
var offset3 = $CamRoot.global_transform.basis.xform_inv(world_space_delta).x
var offset = Vector3(offset2.x, offset1.y,-offset3) #may need to swap 1 and 2
do_sway(weaponsway, offset, delta * softness)
cam_basis_last_frame = cam_basis_this_frame;
player_basis_last_frame = player_basis_this_frame;
player_translation_last_frame = player_tanslation_this_frame
func calculate_sway_offset(basis_last_frame: Basis, basis_current_frame: Basis):
var q1 = basis_last_frame.get_rotation_quat()
var q2 = basis_current_frame.get_rotation_quat()
var q = q1.inverse() * q2
var eu = q.get_euler()
return Vector2(eu.y, eu.x)
func do_sway(sway_node, offset: Vector3, fract: float):
var offset_quaternion: Quat = Quat(Vector3.UP, offset.x) * Quat(Vector3.RIGHT, offset.y)* Quat(Vector3.FORWARD,(offset.z *2))
sway_node.transform.basis = Basis(Quat(sway_node.transform.basis).slerp(offset_quaternion, fract))
this doesnt compile anymore, says it cant find property get rotation quat>
var q1 = basis_last_frame.get_rotation_quat()
var q2 = basis_current_frame.get_rotation_quat()