1
Fork 0
mirror of https://github.com/Steffo99/pineapple-surf.git synced 2024-11-24 16:54:19 +00:00
pineapple-surf/player/onhand/BaseWeapon.gd
2023-01-09 01:53:52 +01:00

51 lines
1.1 KiB
GDScript

extends Node3D
class_name BaseWeapon
enum WeaponSlot {
ONE,
TWO,
THREE
}
enum AmmoType {
NONE,
SINGLE
}
@export_range(0,0.002) var MOUSE_MOVEMENT_BOB_AMOUNT := 0.002
var player: Player
var weaponSlot: WeaponSlot = WeaponSlot.ONE
var ammoType: AmmoType = AmmoType.NONE
var last_mouse_movement := Vector2.ZERO
var mouse_movements := [Vector2.ZERO] as Array[Vector2]
func on_switch_in():
pass
func on_switch_out():
pass
func bob_weapon(node: Node3D, delta: float):
if len(self.mouse_movements) >= 5:
self.mouse_movements.pop_front()
self.mouse_movements.push_back(Vector2(
self.last_mouse_movement.y * 0.05,
self.last_mouse_movement.x * 0.05
))
var avg_mvmt = self.mouse_movements \
.reduce(func(accum, number): return accum + number) \
/ len(self.mouse_movements) as Vector2
node.position = Vector3.ZERO.lerp(Vector3(
-avg_mvmt.y,
avg_mvmt.x,
0,
), MOUSE_MOVEMENT_BOB_AMOUNT / delta)
self.last_mouse_movement = Vector2.ZERO
func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion:
self.last_mouse_movement = event.relative