diff options
| author | Anson Bridges <bridges.anson@gmail.com> | 2022-10-19 14:13:47 -0400 |
|---|---|---|
| committer | Anson Bridges <bridges.anson@gmail.com> | 2022-10-19 14:13:47 -0400 |
| commit | 5100ec45264ff36a2558757e76198b8b25866992 (patch) | |
| tree | cd1fd239fe0380028c1d77e456a49ecf186830d6 /godot/scripts/vehicles | |
| parent | e826b74a104e72ec398aa55bd5dceb13b5a0dae1 (diff) | |
server work
Diffstat (limited to 'godot/scripts/vehicles')
| -rw-r--r-- | godot/scripts/vehicles/Airplane.gd | 24 | ||||
| -rw-r--r-- | godot/scripts/vehicles/Gunboat.gd | 4 |
2 files changed, 18 insertions, 10 deletions
diff --git a/godot/scripts/vehicles/Airplane.gd b/godot/scripts/vehicles/Airplane.gd index 8ac755b..705820d 100644 --- a/godot/scripts/vehicles/Airplane.gd +++ b/godot/scripts/vehicles/Airplane.gd @@ -9,7 +9,7 @@ var brake_control : float = 0.0 const boost_length = 8 const turn_constant = 0.45 const roll_constant = 0.5 -const pitch_constant = 0.9 +const pitch_constant = 0.3 const drag_constant = 0.4 const v_angle_max = 1.0472 #60 deg, also top and bottom of regular steering const v_angle_min = -1.45626 #-85 deg @@ -46,7 +46,7 @@ remotesync func set_net_owner(id, char_name): set_network_master(id) if id == 1 and char_name == "NONE": #not under control on_no_control() - if user != null: + if user != null and is_instance_valid(user): user.lose_machine() user = null in_use = false @@ -66,8 +66,12 @@ func on_new_control(): user.global_transform.origin = $Cockpit.global_transform.origin func on_no_control(): + if !is_instance_valid(user): return user.remove_collision_exception_with(self) user.global_transform.origin = $PilotExit.global_transform.origin + var old_neck_rot = user.neck.get_global_rotation() + user.global_transform.basis = world.global_transform.basis + user.neck.set_global_rotation(Vector3(0,old_neck_rot.y,0)) func attack1(): pass @@ -111,7 +115,7 @@ func _physics_process(delta): if boosting: add_force(global_transform.basis.x*booster_force,Vector3.ZERO) countdown -= delta - if in_use and user.get_network_master() == world.client_id: + if in_use and is_network_master(): user.global_transform.origin = $Cockpit.global_transform.origin user.global_transform.basis = $Cockpit.global_transform.basis.orthonormalized() user.set_linear_velocity(get_linear_velocity()) @@ -128,13 +132,14 @@ func _physics_process(delta): if linear_velocity.length() > 16 and linear_velocity.angle_to(global_transform.basis.x) < 0.25: var v_dir = 1 if linear_velocity.y > 0 else -1 vel_slow = v_dir*sqrt(abs(2*9.8*linear_velocity.y*delta)) + drag_constant + brake_control*5 - add_force(-1*linear_velocity.normalized()*vel_slow*mass,Vector3.ZERO) + #add_force(-1*linear_velocity.normalized()*vel_slow*mass,Vector3.ZERO) func _integrate_forces(state): if is_network_master(): if linear_velocity.angle_to(global_transform.basis.x) < 0.25: set_linear_velocity(get_linear_velocity().slerp(transform.basis.x*linear_velocity.length(),0.1)) if linear_velocity.length() > 25: + gravity_scale = 0 #linear_velocity = linear_velocity.normalized()*(linear_velocity.length()-vel_slow) var ang_vel_target = Vector3.ZERO #pitch plane @@ -145,15 +150,18 @@ func _integrate_forces(state): #roll (rotate around lengthwise axis) var is_returning = 3 if roll_dir == 0 else 1 #return to flat quicker - print(roll_constant*is_returning*(roll_dir*roll_curve.curve.interpolate((roll_angle_max-roll_angle)/roll_angle_max))*global_transform.basis.x) - ang_vel_target += roll_constant*is_returning*(roll_dir*roll_curve.curve.interpolate(roll_angle_max-roll_angle))*global_transform.basis.x - + #print(linear_velocity, roll_angle) + if roll_dir != 0: + ang_vel_target += roll_constant*(roll_dir*roll_curve.curve.interpolate(roll_angle_max-abs(roll_angle)))*global_transform.basis.x + else: + roll_dir = 1 if roll_angle > 0 else -1 + 3*roll_constant*(roll_dir*roll_curve.curve.interpolate(roll_angle_max-abs(roll_angle)))*global_transform.basis.x #turn (based on how much the plane is rolled (need to add ang_vel_target += turn_constant*Vector3.UP*roll_angle #apply angular velocity angular_velocity = ang_vel_target#lerp(angular_velocity,ang_vel_target,0.1) - + gravity_scale = 1 #linear_velocity += parentvel[0]; angular_velocity += parentvel[1] rpc("update_phys_transform", transform, linear_velocity, angular_velocity) diff --git a/godot/scripts/vehicles/Gunboat.gd b/godot/scripts/vehicles/Gunboat.gd index fe5473a..1defce2 100644 --- a/godot/scripts/vehicles/Gunboat.gd +++ b/godot/scripts/vehicles/Gunboat.gd @@ -43,9 +43,9 @@ func _ready(): for sail in $SAILS.get_children(): sail.set_sheet(sail_out) world = get_tree().get_root().find_node("GAMEWORLD", true, false) - if get_tree().get_network_unique_id() == 0: + if get_tree().get_network_unique_id() == 1: print("enabling navigation for server") - $NavigationMeshInstance.set_enabled(true) + #$NavigationMeshInstance.set_enabled(true) func on_no_control(): rpc("reset_controls") |
