class_name Geep extends "gear.gd" func gear_name(): return "Geep" func continuous(): return false func use_basis(): return idle_basis() # multiplier of player's speed const speed = 2 # how far the vehicle lifts the player off the ground const lift = 2 var box = null var driver = null var active = false func init_driver(player): driver = player if not box: box = Vector3(driver.get_node("CollisionShape3D").shape.size) func mount(): active = true position = Vector3(-driver.get_node("Pivot/Container").position) position.y += 1 driver.message( "Press [%s] to exit the Geep" % Util.input_action_string("gear_use")) driver.get_node("CameraGimbal").position.y += lift driver.get_node("Pivot/Mesh").position.y += lift driver.get_node("CollisionShape3D").shape.size = $GearMesh/Vehicle/CollisionShape3D.shape.size driver.protected = true driver.suspended = true func unmount(): active = false position = Vector3.ZERO driver.message("") driver.get_node("CameraGimbal").position = Vector3.ZERO driver.get_node("Pivot/Mesh").position = Vector3.ZERO driver.get_node("CollisionShape3D").shape.size = box driver.protected = false driver.suspended = false func on_use(player): init_driver(player) if active: unmount() else: mount() func on_unequip(player): init_driver(player) unmount() func _physics_process(_delta): if not active: return driver.move_player(0, -speed)