From 1d347e770fddcdd051890cdf070fd2779ab113bf Mon Sep 17 00:00:00 2001 From: Anson Bridges Date: Mon, 19 Sep 2022 17:44:22 -0400 Subject: problems: player controller perf, boat perf, NAVSERVER PERF --- godot/scripts/characters/player_controller_new.gd | 84 ++++++++++++----------- 1 file changed, 43 insertions(+), 41 deletions(-) (limited to 'godot/scripts/characters') diff --git a/godot/scripts/characters/player_controller_new.gd b/godot/scripts/characters/player_controller_new.gd index aa739a6..bc41842 100644 --- a/godot/scripts/characters/player_controller_new.gd +++ b/godot/scripts/characters/player_controller_new.gd @@ -1,15 +1,15 @@ extends RigidBody # Game -export var team = "RED" -export (int) var health = 100 -var weapon = null -var world +export var team: String = "RED" +export var health: int = 100 +var weapon: Node = null +var world: Spatial = null # Camera -export(float) var mouse_sensitivity = 12.0 -export(float) var FOV = 90.0 -var mouse_axis := Vector2() +export var mouse_sensitivity:float = 12.0 +export var FOV:float = 90.0 +var mouse_axis: Vector2 = Vector2.ZERO onready var head: Spatial = $Neck/Head onready var neck: Spatial = $Neck @@ -18,31 +18,31 @@ var velocity := Vector3() var direction := Vector3() var move_axis := Vector2() var floorspeed := Vector3() -var jumping = false -var can_jump = true -onready var nav = $NavigationAgent +var jumping:bool = false +var can_jump:bool = true +onready var nav: NavigationAgent = $NavigationAgent # Walk const FLOOR_MAX_ANGLE: float = deg2rad(46.0) -export(float) var jump_height = 400.0 -var in_water : bool = false -var swim_speed : float = 450.0 -var climb_speed : float = 5.0 +export var jump_height: float = 300.0 +var in_water: bool = false +var swim_speed: float = 450.0 +var climb_speed: float = 5.0 # Control -var controlling_machine = false #whether character is riding/controlling something -var machine = null -export var is_player = false #whether character is currently controlled by a player -var ladder_m = null +var controlling_machine: bool = false #whether character is riding/controlling something +var machine: RigidBody = null +export var is_player: bool = false #whether character is currently controlled by a player +var ladder_m: Spatial = null #physics -var player_state : PhysicsDirectBodyState -var is_on_floor:bool -var floor_normal : Vector3 = Vector3.UP -var acceleration = 80.0 -export(int) var walk_speed = 5 -var c_friction = 4.0 -var air_control = 0.3 +var player_state: PhysicsDirectBodyState = null +var is_on_floor:bool = false +var floor_normal: Vector3 = Vector3.UP +var acceleration:float = 80.0 +export var walk_speed:float = 5.0 +var c_friction:float = 4.0 +var air_control:float = 0.3 # Called when the node enters the scene tree func _ready() -> void: @@ -55,15 +55,15 @@ func _ready() -> void: $"%UseRay".add_exception($AreaDetect) $"%MeleeRay".add_exception($AreaDetect) -func get_init_info(): +func get_init_info() -> Dictionary: return {"linear_velocity" : linear_velocity, "angular_velocity" : angular_velocity, "controlling_machine" : controlling_machine, "team" : team, "health" : health, "nametag" : $Nametag.text} -func mp_init(init_info): +func mp_init(init_info: Dictionary): for variable in init_info.keys(): set(variable, init_info[variable]) $Nametag.text = init_info["nametag"] -remote func set_phys_transform(trfrm, lvel): +remote func set_phys_transform(trfrm: Transform, lvel: Vector3): transform = trfrm linear_velocity = lvel @@ -110,7 +110,7 @@ func initiate_use(): _: pass -remotesync func set_net_owner(owner_id): +remotesync func set_net_owner(owner_id: int): $Nametag.text = "" set_network_master(owner_id) if owner_id != 1: @@ -132,7 +132,7 @@ func deselect_character(): if world.client_id != 1: world.cam.attach(world, "STATIC", "./DEFAULTCAM") rpc("set_net_owner", 1) -func take_control_of_machine(slave_machine): +func take_control_of_machine(slave_machine: RigidBody): machine = slave_machine controlling_machine = true @@ -169,7 +169,9 @@ func on_floor_test() -> bool: return false #modify simulated physics results -func _integrate_forces(state) -> void: +func _integrate_forces(state: PhysicsDirectBodyState) -> void: + if !is_network_master(): + return player_state = state velocity = state.get_linear_velocity() $normal_vis.look_at($normal_vis.global_transform.origin + global_transform.basis.z, floor_normal) @@ -180,12 +182,12 @@ func _integrate_forces(state) -> void: break if i == player_state.get_contact_count() - 1: friction = 1 - if is_network_master(): - rpc("set_phys_transform", transform, linear_velocity) - if global_transform.origin.y < -30: - rpc("damage", 500000, "drown", [1, "Davy Jones"]) + + rpc("set_phys_transform", transform, linear_velocity) + if global_transform.origin.y < -30: + rpc("damage", 500000, "drown", [1, "Davy Jones"]) -func walk(_delta:float) -> void: +func walk(_delta: float) -> void: # Input direction = Vector3() var aim: Basis = head.get_global_transform().basis @@ -224,7 +226,7 @@ func jump(): yield(get_tree().create_timer(0.05),"timeout") can_jump = true -func swim(_delta): +func swim(_delta: float): #drag and buoyancy add_central_force(Vector3.UP*weight*1.0) add_central_force(-1*linear_velocity*100) @@ -242,7 +244,7 @@ func enter_water(): func exit_water(): in_water = false -func mount_ladder(target_ladder): +func mount_ladder(target_ladder: Spatial): var ladder_tracker = Spatial.new() ladder_tracker.name = name target_ladder.add_child(ladder_tracker) @@ -258,7 +260,7 @@ func mount_ladder(target_ladder): set_gravity_scale(0.0) #called each frame while climbing ladder -func climb_ladder(delta): +func climb_ladder(delta: float): var new_ladder_pos = ladder_m.global_transform.origin + ladder_m.global_transform.basis.y.normalized() * move_axis.x * delta * climb_speed var prog = ladder_m.get_parent().get_climb_scalar(new_ladder_pos) if prog >= 0.0 and prog <= 1.0: @@ -274,7 +276,7 @@ func leave_ladder(): ladder_m.queue_free() ladder_m = null -remotesync func damage(dmg_amt, _type, shooter, extra = ""): +remotesync func damage(dmg_amt: int, _type: String, shooter: Array, extra: String): health -= dmg_amt if health <= 0 and is_network_master(): if shooter[0] != get_network_master() and shooter[0] != 1: world.rpc_id(shooter[0], "game_killsound") @@ -291,5 +293,5 @@ remotesync func remove_dead_character(): deselect_character() queue_free() -remotesync func net_apply_impulse(impulse_v): +remotesync func net_apply_impulse(impulse_v: Vector3): apply_central_impulse(impulse_v) -- cgit v1.2.3