diff --git a/project/demos/Arrive/ArriveDemo.gd b/project/demos/Arrive/ArriveDemo.gd index f88f728..a18b1c9 100644 --- a/project/demos/Arrive/ArriveDemo.gd +++ b/project/demos/Arrive/ArriveDemo.gd @@ -1,22 +1,16 @@ extends Node - -export(float, 0, 2000, 40) var linear_speed_max := 800.0 setget set_linear_speed_max -export(float, 0, 200, 2.0) var linear_acceleration_max := 80.0 setget set_linear_acceleration_max -export(float, 0, 100, 0.1) var arrival_tolerance := 25.0 setget set_arrival_tolerance -export(float, 0, 500, 10) var deceleration_radius := 125.0 setget set_deceleration_radius +export (float, 0, 2000, 40) var linear_speed_max := 800.0 setget set_linear_speed_max +export (float, 0, 200, 2.0) var linear_acceleration_max := 80.0 setget set_linear_acceleration_max +export (float, 0, 100, 0.1) var arrival_tolerance := 25.0 setget set_arrival_tolerance +export (float, 0, 500, 10) var deceleration_radius := 125.0 setget set_deceleration_radius onready var arriver := $Arriver onready var target_drawer := $TargetDrawer func _ready() -> void: - arriver.setup( - linear_speed_max, - linear_acceleration_max, - arrival_tolerance, - deceleration_radius - ) + arriver.setup(linear_speed_max, linear_acceleration_max, arrival_tolerance, deceleration_radius) func _unhandled_input(event: InputEvent) -> void: @@ -29,7 +23,7 @@ func set_arrival_tolerance(value: float) -> void: arrival_tolerance = value if not is_inside_tree(): return - + arriver.arrive.arrival_tolerance = value @@ -37,7 +31,7 @@ func set_deceleration_radius(value: float) -> void: deceleration_radius = value if not is_inside_tree(): return - + arriver.arrive.deceleration_radius = value @@ -45,7 +39,7 @@ func set_linear_speed_max(value: float) -> void: linear_speed_max = value if not is_inside_tree(): return - + arriver.agent.linear_speed_max = value @@ -53,5 +47,5 @@ func set_linear_acceleration_max(value: float) -> void: linear_acceleration_max = value if not is_inside_tree(): return - + arriver.agent.linear_acceleration_max = value diff --git a/project/demos/Arrive/Arriver.gd b/project/demos/Arrive/Arriver.gd index 84a8d5d..8646b6b 100644 --- a/project/demos/Arrive/Arriver.gd +++ b/project/demos/Arrive/Arriver.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - var agent := GSAIKinematicBody2DAgent.new(self) var target := GSAIAgentLocation.new() var arrive := GSAIArrive.new(agent, target) diff --git a/project/demos/Arrive/TargetDrawer.gd b/project/demos/Arrive/TargetDrawer.gd index f1aa0f1..3bdfc31 100644 --- a/project/demos/Arrive/TargetDrawer.gd +++ b/project/demos/Arrive/TargetDrawer.gd @@ -1,6 +1,5 @@ extends Node2D - const COLORS := { deceleration_radius = Color(1.0, 0.419, 0.592, 0.5), arrival_tolerance = Color(0.278, 0.231, 0.47, 0.3) diff --git a/project/demos/Arrive3d/Camera.gd b/project/demos/Arrive3d/Camera.gd index 284c755..4970295 100644 --- a/project/demos/Arrive3d/Camera.gd +++ b/project/demos/Arrive3d/Camera.gd @@ -1,6 +1,5 @@ extends Camera - var target: Spatial onready var ray := $RayCast diff --git a/project/demos/Arrive3d/Seek3dDemo.gd b/project/demos/Arrive3d/Seek3dDemo.gd index 039c780..1844623 100644 --- a/project/demos/Arrive3d/Seek3dDemo.gd +++ b/project/demos/Arrive3d/Seek3dDemo.gd @@ -1,14 +1,13 @@ extends Node - -export(float, 0, 50, 0.1) var linear_speed_max := 10.0 setget set_linear_speed_max -export(float, 0, 50, 0.1) var linear_acceleration_max := 1.0 setget set_linear_acceleration_max -export(float, 0, 50, 0.1) var arrival_tolerance := 0.5 setget set_arrival_tolerance -export(float, 0, 50, 0.1) var deceleration_radius := 5.0 setget set_deceleration_radius -export(int, 0, 359, 2) var angular_speed_max := 270 setget set_angular_speed_max -export(int, 0, 359, 2) var angular_accel_max := 45 setget set_angular_accel_max -export(int, 0, 180, 2) var align_tolerance := 5 setget set_align_tolerance -export(int, 0, 359, 2) var angular_deceleration_radius := 45 setget set_angular_deceleration_radius +export (float, 0, 50, 0.1) var linear_speed_max := 10.0 setget set_linear_speed_max +export (float, 0, 50, 0.1) var linear_acceleration_max := 1.0 setget set_linear_acceleration_max +export (float, 0, 50, 0.1) var arrival_tolerance := 0.5 setget set_arrival_tolerance +export (float, 0, 50, 0.1) var deceleration_radius := 5.0 setget set_deceleration_radius +export (int, 0, 359, 2) var angular_speed_max := 270 setget set_angular_speed_max +export (int, 0, 359, 2) var angular_accel_max := 45 setget set_angular_accel_max +export (int, 0, 180, 2) var align_tolerance := 5 setget set_align_tolerance +export (int, 0, 359, 2) var angular_deceleration_radius := 45 setget set_angular_deceleration_radius onready var target := $MouseTarget onready var arriver := $Arriver @@ -33,7 +32,7 @@ func set_align_tolerance(value: int) -> void: align_tolerance = value if not is_inside_tree(): return - + arriver.face.alignment_tolerance = deg2rad(value) @@ -41,7 +40,7 @@ func set_angular_deceleration_radius(value: int) -> void: deceleration_radius = value if not is_inside_tree(): return - + arriver.face.deceleration_radius = deg2rad(value) @@ -49,7 +48,7 @@ func set_angular_accel_max(value: int) -> void: angular_accel_max = value if not is_inside_tree(): return - + arriver.agent.angular_acceleration_max = deg2rad(value) @@ -57,7 +56,7 @@ func set_angular_speed_max(value: int) -> void: angular_speed_max = value if not is_inside_tree(): return - + arriver.agent.angular_speed_max = deg2rad(value) @@ -65,7 +64,7 @@ func set_arrival_tolerance(value: float) -> void: arrival_tolerance = value if not is_inside_tree(): return - + arriver.arrive.arrival_tolerance = value @@ -73,7 +72,7 @@ func set_deceleration_radius(value: float) -> void: deceleration_radius = value if not is_inside_tree(): return - + arriver.arrive.deceleration_radius = value @@ -81,7 +80,7 @@ func set_linear_speed_max(value: float) -> void: linear_speed_max = value if not is_inside_tree(): return - + arriver.agent.linear_speed_max = value @@ -89,5 +88,5 @@ func set_linear_acceleration_max(value: float) -> void: linear_acceleration_max = value if not is_inside_tree(): return - + arriver.agent.linear_acceleration_max = value diff --git a/project/demos/Arrive3d/Seeker.gd b/project/demos/Arrive3d/Seeker.gd index fcc5bb8..ad4be91 100644 --- a/project/demos/Arrive3d/Seeker.gd +++ b/project/demos/Arrive3d/Seeker.gd @@ -1,6 +1,5 @@ extends KinematicBody - var target_node: Spatial onready var agent := GSAIKinematicBody3DAgent.new(self) @@ -19,29 +18,29 @@ func _physics_process(delta: float) -> void: func setup( - align_tolerance: float, - angular_deceleration_radius: float, - angular_accel_max: float, - angular_speed_max: float, - deceleration_radius: float, - arrival_tolerance: float, - linear_acceleration_max: float, - linear_speed_max: float, - _target: Spatial - ) -> void: + align_tolerance: float, + angular_deceleration_radius: float, + angular_accel_max: float, + angular_speed_max: float, + deceleration_radius: float, + arrival_tolerance: float, + linear_acceleration_max: float, + linear_speed_max: float, + _target: Spatial +) -> void: agent.linear_speed_max = linear_speed_max agent.linear_acceleration_max = linear_acceleration_max agent.linear_drag_percentage = 0.05 agent.angular_acceleration_max = angular_accel_max agent.angular_speed_max = angular_speed_max agent.angular_drag_percentage = 0.1 - + arrive.arrival_tolerance = arrival_tolerance arrive.deceleration_radius = deceleration_radius - + face.alignment_tolerance = align_tolerance face.deceleration_radius = angular_deceleration_radius - + target_node = _target self.target.position = target_node.transform.origin blend.add(arrive, 1) diff --git a/project/demos/AvoidCollisions/AvoidCollisionsDemo.gd b/project/demos/AvoidCollisions/AvoidCollisionsDemo.gd index dcadfd2..70db92b 100644 --- a/project/demos/AvoidCollisions/AvoidCollisionsDemo.gd +++ b/project/demos/AvoidCollisions/AvoidCollisionsDemo.gd @@ -1,9 +1,8 @@ extends Node - -export(float, 0, 2000, 40) var linear_speed_max := 350.0 setget set_linear_speed_max -export(float, 0, 100, 2) var linear_acceleration_max := 40.0 setget set_linear_accel_max -export(float, 0, 500, 10) var proximity_radius := 140.0 setget set_proximity_radius +export (float, 0, 2000, 40) var linear_speed_max := 350.0 setget set_linear_speed_max +export (float, 0, 100, 2) var linear_acceleration_max := 40.0 setget set_linear_accel_max +export (float, 0, 500, 10) var proximity_radius := 140.0 setget set_proximity_radius export var draw_proximity := true setget set_draw_proximity onready var spawner := $Spawner @@ -13,7 +12,7 @@ func set_linear_speed_max(value: float) -> void: linear_speed_max = value if not is_inside_tree(): return - + spawner.set_linear_speed_max(value) @@ -21,7 +20,7 @@ func set_linear_accel_max(value: float) -> void: linear_acceleration_max = value if not is_inside_tree(): return - + spawner.set_linear_accel_max(value) @@ -29,7 +28,7 @@ func set_proximity_radius(value: float) -> void: proximity_radius = value if not is_inside_tree(): return - + spawner.set_proximity_radius(value) @@ -37,5 +36,5 @@ func set_draw_proximity(value: bool) -> void: draw_proximity = value if not is_inside_tree(): return - + spawner.set_draw_proximity(value) diff --git a/project/demos/AvoidCollisions/Avoider.gd b/project/demos/AvoidCollisions/Avoider.gd index 77ce65f..7fcfb17 100644 --- a/project/demos/AvoidCollisions/Avoider.gd +++ b/project/demos/AvoidCollisions/Avoider.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - var draw_proximity: bool var _boundary_right: float @@ -27,39 +26,39 @@ func _draw() -> void: func _physics_process(delta: float) -> void: - target.position.x = agent.position.x + _direction.x*_radius - target.position.y = agent.position.y + _direction.y*_radius - + target.position.x = agent.position.x + _direction.x * _radius + target.position.y = agent.position.y + _direction.y * _radius + priority.calculate_steering(_accel) agent._apply_steering(_accel, delta) func setup( - linear_speed_max: float, - linear_accel_max: float, - proximity_radius: float, - boundary_right: float, - boundary_bottom: float, - _draw_proximity: bool, - rng: RandomNumberGenerator - ) -> void: + linear_speed_max: float, + linear_accel_max: float, + proximity_radius: float, + boundary_right: float, + boundary_bottom: float, + _draw_proximity: bool, + rng: RandomNumberGenerator +) -> void: rng.randomize() _direction = Vector2(rng.randf_range(-1, 1), rng.randf_range(-1, 1)).normalized() - + agent.linear_speed_max = linear_speed_max agent.linear_acceleration_max = linear_accel_max - + proximity.radius = proximity_radius _boundary_bottom = boundary_bottom _boundary_right = boundary_right - + _radius = collision.shape.radius agent.bounding_radius = _radius - + agent.linear_drag_percentage = _drag - + self.draw_proximity = _draw_proximity - + priority.add(avoid) priority.add(seek) @@ -75,15 +74,18 @@ func set_random_nonoverlapping_position(others: Array, distance_from_boundary_mi while tries_max > 0: tries_max -= 1 global_position.x = rng.randf_range( - distance_from_boundary_min, _boundary_right-distance_from_boundary_min + distance_from_boundary_min, _boundary_right - distance_from_boundary_min ) global_position.y = rng.randf_range( - distance_from_boundary_min, _boundary_bottom-distance_from_boundary_min + distance_from_boundary_min, _boundary_bottom - distance_from_boundary_min ) var done := true for i in range(others.size()): var other: Node2D = others[i] - if other.global_position.distance_to(position) <= _radius*2 + distance_from_boundary_min: + if ( + other.global_position.distance_to(position) + <= _radius * 2 + distance_from_boundary_min + ): done = false if done: break diff --git a/project/demos/AvoidCollisions/Spawner.gd b/project/demos/AvoidCollisions/Spawner.gd index 2a22b85..fedb269 100644 --- a/project/demos/AvoidCollisions/Spawner.gd +++ b/project/demos/AvoidCollisions/Spawner.gd @@ -1,6 +1,5 @@ extends Node2D - export var avoider_template: PackedScene export var inner_color := Color() export var outer_color := Color() @@ -11,22 +10,22 @@ var boundaries: Vector2 func _ready() -> void: boundaries = Vector2( - ProjectSettings["display/window/size/width"], - ProjectSettings["display/window/size/height"]) - var rng: = RandomNumberGenerator.new() + ProjectSettings["display/window/size/width"], ProjectSettings["display/window/size/height"] + ) + var rng := RandomNumberGenerator.new() var avoiders := [] var avoider_agents := [] for i in range(agent_count): var avoider := avoider_template.instance() add_child(avoider) avoider.setup( - owner.linear_speed_max, - owner.linear_acceleration_max, - owner.proximity_radius, - boundaries.x, - boundaries.y, - true if i == 0 and owner.draw_proximity else false, - rng + owner.linear_speed_max, + owner.linear_acceleration_max, + owner.proximity_radius, + boundaries.x, + boundaries.y, + true if i == 0 and owner.draw_proximity else false, + rng ) avoider_agents.append(avoider.agent) avoider.set_random_nonoverlapping_position(avoiders, 16) diff --git a/project/demos/DemoPickerUI.gd b/project/demos/DemoPickerUI.gd index 5417e1b..657d5cc 100644 --- a/project/demos/DemoPickerUI.gd +++ b/project/demos/DemoPickerUI.gd @@ -1,7 +1,6 @@ class_name DemoPickerUI extends Control - # warning-ignore:unused_signal signal demo_requested @@ -23,7 +22,7 @@ func _ready() -> void: func set_demo_path(value: String) -> void: demo_path = value - + func _on_ItemList_item_activated(_index: int) -> void: emit_signal("demo_requested") diff --git a/project/demos/Demos.gd b/project/demos/Demos.gd index c46e081..e8a9150 100644 --- a/project/demos/Demos.gd +++ b/project/demos/Demos.gd @@ -1,6 +1,5 @@ extends Node - onready var demo_picker: DemoPickerUI = $DemoPickerUI onready var demo_player := $DemoPlayer onready var button_go_back: Button = $ButtonGoBack diff --git a/project/demos/Face/FaceDemo.gd b/project/demos/Face/FaceDemo.gd index a3ae399..667cd3f 100644 --- a/project/demos/Face/FaceDemo.gd +++ b/project/demos/Face/FaceDemo.gd @@ -1,11 +1,10 @@ extends Node - -export(int, 0, 359, 2) var angular_speed_max := 120 setget set_angular_speed_max -export(int, 0, 359, 2) var angular_accel_max := 10 setget set_angular_accel_max -export(int, 0, 180, 2) var align_tolerance := 5 setget set_align_tolerance -export(int, 0, 359, 2) var deceleration_radius := 45 setget set_deceleration_radius -export(float, 0, 1000, 40) var player_speed := 600.0 setget set_player_speed +export (int, 0, 359, 2) var angular_speed_max := 120 setget set_angular_speed_max +export (int, 0, 359, 2) var angular_accel_max := 10 setget set_angular_accel_max +export (int, 0, 180, 2) var align_tolerance := 5 setget set_align_tolerance +export (int, 0, 359, 2) var deceleration_radius := 45 setget set_deceleration_radius +export (float, 0, 1000, 40) var player_speed := 600.0 setget set_player_speed onready var player := $Player onready var turret := $Turret @@ -26,7 +25,7 @@ func set_align_tolerance(value: int) -> void: align_tolerance = value if not is_inside_tree(): return - + turret.face.alignment_tolerance = deg2rad(value) @@ -34,7 +33,7 @@ func set_deceleration_radius(value: int) -> void: deceleration_radius = value if not is_inside_tree(): return - + turret.face.deceleration_radius = deg2rad(value) @@ -42,7 +41,7 @@ func set_angular_accel_max(value: int) -> void: angular_accel_max = value if not is_inside_tree(): return - + turret.agent.angular_acceleration_max = deg2rad(value) @@ -50,7 +49,7 @@ func set_angular_speed_max(value: int) -> void: angular_speed_max = value if not is_inside_tree(): return - + turret.agent.angular_speed_max = deg2rad(value) @@ -58,5 +57,5 @@ func set_player_speed(value: float) -> void: player_speed = value if not is_inside_tree(): return - + player.speed = player_speed diff --git a/project/demos/Face/Player.gd b/project/demos/Face/Player.gd index 9620299..d37cc17 100644 --- a/project/demos/Face/Player.gd +++ b/project/demos/Face/Player.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - var speed: float onready var agent := GSAIAgentLocation.new() @@ -14,5 +13,6 @@ func _physics_process(_delta: float) -> void: func _get_movement() -> Vector2: return Vector2( - Input.get_action_strength("sf_right") - Input.get_action_strength("sf_left"), - Input.get_action_strength("sf_down") - Input.get_action_strength("sf_up")) + Input.get_action_strength("sf_right") - Input.get_action_strength("sf_left"), + Input.get_action_strength("sf_down") - Input.get_action_strength("sf_up") + ) diff --git a/project/demos/Face/Turret.gd b/project/demos/Face/Turret.gd index e8b326b..1657316 100644 --- a/project/demos/Face/Turret.gd +++ b/project/demos/Face/Turret.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - var face: GSAIFace var agent := GSAIKinematicBody2DAgent.new(self) @@ -14,7 +13,7 @@ onready var collision_shape := $CollisionShape2D func _ready() -> void: var radius = collision_shape.shape.radius - _cannon = Rect2(Vector2(-5, 0), Vector2(10, -radius*2)) + _cannon = Rect2(Vector2(-5, 0), Vector2(10, -radius * 2)) _color = collision_shape.outer_color @@ -35,10 +34,10 @@ func setup( angular_speed_max: float ) -> void: face = GSAIFace.new(agent, player_agent) - + face.alignment_tolerance = align_tolerance face.deceleration_radius = deceleration_radius - + agent.angular_acceleration_max = angular_accel_max agent.angular_speed_max = angular_speed_max agent.angular_drag_percentage = _angular_drag diff --git a/project/demos/FollowPath/Drawer.gd b/project/demos/FollowPath/Drawer.gd index 7b1f586..fcecf1d 100644 --- a/project/demos/FollowPath/Drawer.gd +++ b/project/demos/FollowPath/Drawer.gd @@ -1,9 +1,7 @@ extends Node2D - signal path_established(points) - var active_points := [] var is_drawing := false var distance_threshold := 100.0 diff --git a/project/demos/FollowPath/FollowPathDemo.gd b/project/demos/FollowPath/FollowPathDemo.gd index 7e83a92..1c340ec 100644 --- a/project/demos/FollowPath/FollowPathDemo.gd +++ b/project/demos/FollowPath/FollowPathDemo.gd @@ -1,12 +1,11 @@ extends Node - -export(float, 0, 2000, 40) var linear_speed_max := 600.0 setget set_linear_speed_max -export(float, 0, 200, 10.0) var linear_acceleration_max := 40.0 setget set_linear_acceleration_max -export(float, 0, 100, 0.1) var arrival_tolerance := 10.0 setget set_arrival_tolerance -export(float, 0, 500, 10) var deceleration_radius := 100.0 setget set_deceleration_radius -export(float, 0, 5, 0.1) var predict_time := 0.3 setget set_predict_time -export(float, 0, 200, 10.0) var path_offset := 20.0 setget set_path_offset +export (float, 0, 2000, 40) var linear_speed_max := 600.0 setget set_linear_speed_max +export (float, 0, 200, 10.0) var linear_acceleration_max := 40.0 setget set_linear_acceleration_max +export (float, 0, 100, 0.1) var arrival_tolerance := 10.0 setget set_arrival_tolerance +export (float, 0, 500, 10) var deceleration_radius := 100.0 setget set_deceleration_radius +export (float, 0, 5, 0.1) var predict_time := 0.3 setget set_predict_time +export (float, 0, 200, 10.0) var path_offset := 20.0 setget set_path_offset onready var drawer := $Drawer onready var follower := $PathFollower @@ -14,12 +13,12 @@ onready var follower := $PathFollower func _ready() -> void: follower.setup( - path_offset, - predict_time, - linear_acceleration_max, - linear_speed_max, - deceleration_radius, - arrival_tolerance + path_offset, + predict_time, + linear_acceleration_max, + linear_speed_max, + deceleration_radius, + arrival_tolerance ) @@ -27,7 +26,7 @@ func set_linear_speed_max(value: float) -> void: linear_speed_max = value if not is_inside_tree(): return - + follower.agent.linear_speed_max = value @@ -35,7 +34,7 @@ func set_linear_acceleration_max(value: float) -> void: linear_acceleration_max = value if not is_inside_tree(): return - + follower.agent.linear_acceleration_max = value @@ -43,7 +42,7 @@ func set_arrival_tolerance(value: float) -> void: arrival_tolerance = value if not is_inside_tree(): return - + follower.follow.arrival_tolerance = value @@ -51,7 +50,7 @@ func set_deceleration_radius(value: float) -> void: deceleration_radius = value if not is_inside_tree(): return - + follower.follow.deceleration_radius = value @@ -59,7 +58,7 @@ func set_predict_time(value: float) -> void: predict_time = value if not is_inside_tree(): return - + follower.follow.prediction_time = value @@ -67,5 +66,5 @@ func set_path_offset(value: float) -> void: path_offset = value if not is_inside_tree(): return - + follower.follow.path_offset = value diff --git a/project/demos/FollowPath/PathFollower.gd b/project/demos/FollowPath/PathFollower.gd index c403986..4429248 100644 --- a/project/demos/FollowPath/PathFollower.gd +++ b/project/demos/FollowPath/PathFollower.gd @@ -1,34 +1,35 @@ extends KinematicBody2D - var _velocity := Vector2.ZERO var _accel := GSAITargetAcceleration.new() var _valid := false var _drag := 0.1 - onready var agent := GSAIKinematicBody2DAgent.new(self) -onready var path := GSAIPath.new([ +onready var path := GSAIPath.new( + [ Vector3(global_position.x, global_position.y, 0), Vector3(global_position.x, global_position.y, 0) - ], true) + ], + true +) onready var follow := GSAIFollowPath.new(agent, path, 0, 0) func setup( - path_offset: float, - predict_time: float, - accel_max: float, - speed_max: float, - decel_radius: float, - arrival_tolerance: float - ) -> void: + path_offset: float, + predict_time: float, + accel_max: float, + speed_max: float, + decel_radius: float, + arrival_tolerance: float +) -> void: owner.drawer.connect("path_established", self, "_on_Drawer_path_established") follow.path_offset = path_offset follow.prediction_time = predict_time follow.deceleration_radius = decel_radius follow.arrival_tolerance = arrival_tolerance - + agent.linear_acceleration_max = accel_max agent.linear_speed_max = speed_max agent.linear_drag_percentage = _drag diff --git a/project/demos/GroupBehaviors/GroupBehaviorsDemo.gd b/project/demos/GroupBehaviors/GroupBehaviorsDemo.gd index c4cc5b8..7536792 100644 --- a/project/demos/GroupBehaviors/GroupBehaviorsDemo.gd +++ b/project/demos/GroupBehaviors/GroupBehaviorsDemo.gd @@ -1,14 +1,13 @@ extends Node - onready var spawner := $Spawner -export(float, 0, 2000, 40.0) var linear_speed_max := 600.0 setget set_linear_speed_max -export(float, 0, 200, 2.0) var linear_accel_max := 40.0 setget set_linear_accel_max -export(float, 0, 300, 2.0) var proximity_radius := 140.0 setget set_proximity_radius -export(float, 0, 10000, 100) var separation_decay_coefficient := 2000.0 setget set_separation_decay_coef -export(float, 0, 2, 0.1) var cohesion_strength := 0.1 setget set_cohesion_strength -export(float, 0, 6, 0.1) var separation_strength := 1.5 setget set_separation_strength +export (float, 0, 2000, 40.0) var linear_speed_max := 600.0 setget set_linear_speed_max +export (float, 0, 200, 2.0) var linear_accel_max := 40.0 setget set_linear_accel_max +export (float, 0, 300, 2.0) var proximity_radius := 140.0 setget set_proximity_radius +export (float, 0, 10000, 100) var separation_decay_coefficient := 2000.0 setget set_separation_decay_coef +export (float, 0, 2, 0.1) var cohesion_strength := 0.1 setget set_cohesion_strength +export (float, 0, 6, 0.1) var separation_strength := 1.5 setget set_separation_strength export var show_proximity_radius := true setget set_show_proximity_radius @@ -28,7 +27,7 @@ func set_linear_speed_max(value: float) -> void: linear_speed_max = value if not is_inside_tree(): return - + spawner.set_linear_speed_max(value) @@ -36,7 +35,7 @@ func set_linear_accel_max(value: float) -> void: linear_accel_max = value if not is_inside_tree(): return - + spawner.set_linear_accel_max(value) @@ -44,7 +43,7 @@ func set_proximity_radius(value: float) -> void: proximity_radius = value if not is_inside_tree(): return - + spawner.set_proximity_radius(value) @@ -52,7 +51,7 @@ func set_show_proximity_radius(value: bool) -> void: show_proximity_radius = value if not is_inside_tree(): return - + spawner.set_show_proximity_radius(value) @@ -60,7 +59,7 @@ func set_separation_decay_coef(value: float) -> void: separation_decay_coefficient = value if not is_inside_tree(): return - + spawner.set_separation_decay_coef(value) @@ -68,7 +67,7 @@ func set_cohesion_strength(value: float) -> void: cohesion_strength = value if not is_inside_tree(): return - + spawner.set_cohesion_strength(value) @@ -76,5 +75,5 @@ func set_separation_strength(value: float) -> void: separation_strength = value if not is_inside_tree(): return - + spawner.set_separation_strength(value) diff --git a/project/demos/GroupBehaviors/Member.gd b/project/demos/GroupBehaviors/Member.gd index d858fbf..e068884 100644 --- a/project/demos/GroupBehaviors/Member.gd +++ b/project/demos/GroupBehaviors/Member.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - var separation: GSAISeparation var cohesion: GSAICohesion var proximity: GSAIRadiusProximity @@ -16,20 +15,20 @@ onready var collision_shape := $CollisionShape2D func setup( - linear_speed_max: float, - linear_accel_max: float, - proximity_radius: float, - separation_decay_coefficient: float, - cohesion_strength: float, - separation_strength: float - ) -> void: + linear_speed_max: float, + linear_accel_max: float, + proximity_radius: float, + separation_decay_coefficient: float, + cohesion_strength: float, + separation_strength: float +) -> void: _color = Color(rand_range(0.5, 1), rand_range(0.25, 1), rand_range(0, 1)) collision_shape.inner_color = _color - + agent.linear_acceleration_max = linear_accel_max agent.linear_speed_max = linear_speed_max agent.linear_drag_percentage = 0.1 - + proximity = GSAIRadiusProximity.new(agent, [], proximity_radius) separation = GSAISeparation.new(agent, proximity) separation.decay_coefficient = separation_decay_coefficient diff --git a/project/demos/GroupBehaviors/Spawner.gd b/project/demos/GroupBehaviors/Spawner.gd index 2455a8c..d4b7193 100644 --- a/project/demos/GroupBehaviors/Spawner.gd +++ b/project/demos/GroupBehaviors/Spawner.gd @@ -1,6 +1,5 @@ extends Node2D - export var member: PackedScene diff --git a/project/demos/PopulateItemList.gd b/project/demos/PopulateItemList.gd index 2f92cc4..cd1bf6e 100644 --- a/project/demos/PopulateItemList.gd +++ b/project/demos/PopulateItemList.gd @@ -1,6 +1,5 @@ extends ItemList - signal demo_selected(scene_path) var file_paths := PoolStringArray() @@ -28,15 +27,17 @@ func sentencify(line: String) -> String: var regex := RegEx.new() # warning-ignore:return_value_discarded regex.compile("[A-Z]") - + line = line.split(".", true, 1)[0] line = regex.sub(line, " $0", true) return line -func _find_files(dirpath := "", patterns := PoolStringArray(), is_recursive := false, do_skip_hidden := true) -> PoolStringArray: - var paths: = PoolStringArray() - var directory: = Directory.new() +func _find_files( + dirpath := "", patterns := PoolStringArray(), is_recursive := false, do_skip_hidden := true +) -> PoolStringArray: + var paths := PoolStringArray() + var directory := Directory.new() if not directory.dir_exists(dirpath): printerr("The directory does not exist: %s" % dirpath) @@ -47,10 +48,10 @@ func _find_files(dirpath := "", patterns := PoolStringArray(), is_recursive := f # warning-ignore:return_value_discarded directory.list_dir_begin(true, do_skip_hidden) - var file_name: = directory.get_next() + var file_name := directory.get_next() while file_name != "": if directory.current_is_dir() and is_recursive: - var subdirectory: = dirpath.plus_file(file_name) + var subdirectory := dirpath.plus_file(file_name) paths.append_array(_find_files(subdirectory, patterns, is_recursive)) else: for pattern in patterns: diff --git a/project/demos/PursueSeek/BoundaryManager.gd b/project/demos/PursueSeek/BoundaryManager.gd index 311a195..a5062cb 100644 --- a/project/demos/PursueSeek/BoundaryManager.gd +++ b/project/demos/PursueSeek/BoundaryManager.gd @@ -1,14 +1,12 @@ extends Node2D # Wraps the ships' positions around the world border. - var _world_bounds: Vector2 func _ready() -> void: _world_bounds = Vector2( - ProjectSettings["display/window/size/width"], - ProjectSettings["display/window/size/height"] + ProjectSettings["display/window/size/width"], ProjectSettings["display/window/size/height"] ) diff --git a/project/demos/PursueSeek/Player.gd b/project/demos/PursueSeek/Player.gd index 9a52e82..8bc3588 100644 --- a/project/demos/PursueSeek/Player.gd +++ b/project/demos/PursueSeek/Player.gd @@ -1,7 +1,6 @@ extends KinematicBody2D # Controls the player ship's movements based on player input. - export var thruster_strength := 175.0 export var side_thruster_strength := 10.0 export var velocity_max := 300.0 @@ -26,7 +25,7 @@ func _physics_process(delta: float) -> void: delta ) rotation += _angular_velocity * delta - + _linear_velocity = _calculate_linear_velocity( movement.y, _linear_velocity, @@ -36,7 +35,7 @@ func _physics_process(delta: float) -> void: velocity_max, delta ) - + _linear_velocity = move_and_slide(_linear_velocity) _update_agent() @@ -54,9 +53,9 @@ func _calculate_angular_velocity( -_velocity_max, _velocity_max ) - + velocity = lerp(velocity, 0, ship_drag) - + return velocity @@ -73,17 +72,19 @@ func _calculate_linear_velocity( if vertical_movement > 0: actual_strength = strength elif vertical_movement < 0: - actual_strength = -strength/1.5 - + actual_strength = -strength / 1.5 + var velocity := current_velocity + facing_direction * actual_strength * delta velocity = velocity.linear_interpolate(Vector2.ZERO, ship_drag_coefficient) - + return velocity.clamped(speed_max) func _get_movement() -> Vector2: - return Vector2( Input.get_action_strength("sf_right") - Input.get_action_strength("sf_left"), - Input.get_action_strength("sf_up") - Input.get_action_strength("sf_down")) + return Vector2( + Input.get_action_strength("sf_right") - Input.get_action_strength("sf_left"), + Input.get_action_strength("sf_up") - Input.get_action_strength("sf_down") + ) func _update_agent() -> void: diff --git a/project/demos/PursueSeek/PursueAndSeekDemo.gd b/project/demos/PursueSeek/PursueAndSeekDemo.gd index 61ca6b6..13496bf 100644 --- a/project/demos/PursueSeek/PursueAndSeekDemo.gd +++ b/project/demos/PursueSeek/PursueAndSeekDemo.gd @@ -1,9 +1,8 @@ extends Node - -export(float, 0, 2000, 40) var linear_speed_max := 120.0 setget set_linear_speed_max -export(float, 0, 200, 2) var linear_accel_max := 10.0 setget set_linear_accel_max -export(float, 0, 5, 0.1) var predict_time := 1.0 setget set_predict_time +export (float, 0, 2000, 40) var linear_speed_max := 120.0 setget set_linear_speed_max +export (float, 0, 200, 2) var linear_accel_max := 10.0 setget set_linear_accel_max +export (float, 0, 5, 0.1) var predict_time := 1.0 setget set_predict_time onready var pursuer := $BoundaryManager/Pursuer onready var seeker := $BoundaryManager/Seeker @@ -18,7 +17,7 @@ func set_linear_speed_max(value: float) -> void: linear_speed_max = value if not is_inside_tree(): return - + pursuer.agent.linear_speed_max = value seeker.agent.linear_speed_max = value @@ -27,7 +26,7 @@ func set_linear_accel_max(value: float) -> void: linear_accel_max = value if not is_inside_tree(): return - + pursuer.agent.linear_acceleration_max = value seeker.agent.linear_acceleration_max = value @@ -36,5 +35,5 @@ func set_predict_time(value: float) -> void: predict_time = value if not is_inside_tree(): return - + pursuer._behavior.predict_time_max = value diff --git a/project/demos/PursueSeek/Pursuer.gd b/project/demos/PursueSeek/Pursuer.gd index 9a6a0f4..553d752 100644 --- a/project/demos/PursueSeek/Pursuer.gd +++ b/project/demos/PursueSeek/Pursuer.gd @@ -1,7 +1,6 @@ extends KinematicBody2D # Represents a ship that chases after the player. - export var use_seek: bool = false var _blend: GSAIBlend @@ -22,28 +21,23 @@ func _ready() -> void: func _physics_process(delta: float) -> void: _direction_face.position = agent.position + accel.linear.normalized() - + _blend.calculate_steering(accel) agent.angular_velocity = clamp( - agent.angular_velocity + accel.angular, - -agent.angular_speed_max, - agent.angular_speed_max + agent.angular_velocity + accel.angular, -agent.angular_speed_max, agent.angular_speed_max ) agent.angular_velocity = lerp(agent.angular_velocity, 0, _angular_drag) rotation += agent.angular_velocity * delta - + var linear_velocity := ( - GSAIUtils.to_vector2(agent.linear_velocity) + - (GSAIUtils.angle_to_vector2(rotation) * -agent.linear_acceleration_max) + GSAIUtils.to_vector2(agent.linear_velocity) + + (GSAIUtils.angle_to_vector2(rotation) * -agent.linear_acceleration_max) ) linear_velocity = linear_velocity.clamped(agent.linear_speed_max) - linear_velocity = linear_velocity.linear_interpolate( - Vector2.ZERO, - _linear_drag_coefficient - ) - + linear_velocity = linear_velocity.linear_interpolate(Vector2.ZERO, _linear_drag_coefficient) + linear_velocity = move_and_slide(linear_velocity) agent.linear_velocity = GSAIUtils.to_vector3(linear_velocity) @@ -54,18 +48,18 @@ func setup(predict_time: float, linear_speed_max: float, linear_accel_max: float behavior = GSAISeek.new(agent, player_agent) else: behavior = GSAIPursue.new(agent, player_agent, predict_time) - + var orient_behavior := GSAIFace.new(agent, _direction_face) orient_behavior.alignment_tolerance = deg2rad(5) orient_behavior.deceleration_radius = deg2rad(5) - + _blend = GSAIBlend.new(agent) _blend.add(behavior, 1) _blend.add(orient_behavior, 1) - + agent.angular_acceleration_max = deg2rad(40) agent.angular_speed_max = deg2rad(90) agent.linear_acceleration_max = linear_accel_max agent.linear_speed_max = linear_speed_max - + set_physics_process(true) diff --git a/project/demos/Quickstart/Agent.gd b/project/demos/Quickstart/Agent.gd index d9b5456..ab017e1 100644 --- a/project/demos/Quickstart/Agent.gd +++ b/project/demos/Quickstart/Agent.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - # Maximum possible linear velocity export var speed_max := 450.0 # Maximum change in linear velocity @@ -73,7 +72,7 @@ func _ready() -> void: # Face turns the agent to keep looking towards its target. It will be enabled while the agent # is not fleeing due to low health. It tries to arrive 'on alignment' with 0 remaining velocity. var face := GSAIFace.new(agent, player_agent) - + # We use deg2rad because the math in the toolkit assumes radians. # How close for the agent to be 'aligned', if not exact. face.alignment_tolerance = deg2rad(5) @@ -119,22 +118,20 @@ func _physics_process(delta: float) -> void: # We add the discovered acceleration to our linear velocity. The toolkit does not limit # velocity, just acceleration, so we clamp the result ourselves here. - velocity = (velocity + Vector2( - acceleration.linear.x, acceleration.linear.y) - ).clamped(agent.linear_speed_max) - + velocity = (velocity + Vector2(acceleration.linear.x, acceleration.linear.y)).clamped( + agent.linear_speed_max + ) + # This applies drag on the agent's motion, helping it to slow down naturally. velocity = velocity.linear_interpolate(Vector2.ZERO, linear_drag) - + # And since we're using a KinematicBody2D, we use Godot's excellent move_and_slide to actually # apply the final movement, and record any change in velocity the physics engine discovered. velocity = move_and_slide(velocity) # We then do something similar to apply our agent's rotational speed. angular_velocity = clamp( - angular_velocity + acceleration.angular, - -agent.angular_speed_max, - agent.angular_speed_max + angular_velocity + acceleration.angular, -agent.angular_speed_max, agent.angular_speed_max ) # This applies drag on the agent's rotation, helping it slow down naturally. angular_velocity = lerp(angular_velocity, 0, angular_drag) diff --git a/project/demos/Quickstart/Bullet.gd b/project/demos/Quickstart/Bullet.gd index 9236f4c..a33fc8f 100644 --- a/project/demos/Quickstart/Bullet.gd +++ b/project/demos/Quickstart/Bullet.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - export var speed := 1500.0 var velocity := Vector2.ZERO diff --git a/project/demos/Quickstart/Player.gd b/project/demos/Quickstart/Player.gd index 90b5aeb..a8160c3 100644 --- a/project/demos/Quickstart/Player.gd +++ b/project/demos/Quickstart/Player.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - export var speed_max := 650.0 export var acceleration_max := 70.0 export var rotation_speed_max := 240 @@ -25,27 +24,27 @@ func _ready() -> void: agent.angular_acceleration_max = deg2rad(rotation_accel_max) agent.bounding_radius = calculate_radius($CollisionPolygon2D.polygon) update_agent() - + var mouse_pos := get_global_mouse_position() proxy_target.position.x = mouse_pos.x proxy_target.position.y = mouse_pos.y - + face.alignment_tolerance = deg2rad(5) face.deceleration_radius = deg2rad(45) func _physics_process(delta: float) -> void: update_agent() - + var movement := get_movement() - + direction = GSAIUtils.angle_to_vector2(rotation) - + velocity += direction * acceleration_max * movement velocity = velocity.clamped(speed_max) velocity = velocity.linear_interpolate(Vector2.ZERO, 0.1) velocity = move_and_slide(velocity) - + face.calculate_steering(accel) angular_velocity += accel.angular angular_velocity = clamp(angular_velocity, -agent.angular_speed_max, agent.angular_speed_max) @@ -60,8 +59,11 @@ func _unhandled_input(event: InputEvent) -> void: proxy_target.position.y = mouse_pos.y elif event is InputEventMouseButton: if event.button_index == BUTTON_LEFT and event.pressed: - var next_bullet: = bullet.instance() - next_bullet.global_position = global_position - direction * (agent.bounding_radius-5) + var next_bullet := bullet.instance() + next_bullet.global_position = ( + global_position + - direction * (agent.bounding_radius - 5) + ) next_bullet.player = self next_bullet.start(-direction) bullets.add_child(next_bullet) diff --git a/project/demos/SeekFlee/Boundaries.gd b/project/demos/SeekFlee/Boundaries.gd index b04e1ac..f54e6cf 100644 --- a/project/demos/SeekFlee/Boundaries.gd +++ b/project/demos/SeekFlee/Boundaries.gd @@ -1,35 +1,32 @@ extends Node2D - const COLOR := Color("8fde5d") func _ready() -> void: get_tree().root.connect("size_changed", self, "_on_SceneTree_size_changed") _on_SceneTree_size_changed() - func _draw() -> void: for b in get_children(): var extents: Vector2 = b.get_node("CollisionShape2D").shape.extents - draw_rect(Rect2(b.global_position-extents, extents*2), COLOR) + draw_rect(Rect2(b.global_position - extents, extents * 2), COLOR) func _on_SceneTree_size_changed() -> void: var size := Vector2( - ProjectSettings["display/window/size/width"], - ProjectSettings["display/window/size/height"] + ProjectSettings["display/window/size/width"], ProjectSettings["display/window/size/height"] ) for b in get_children(): var boundary: String = b.name.rsplit("Boundary")[0] match boundary: "Left": - b.global_position = Vector2(0, size.y/2) + b.global_position = Vector2(0, size.y / 2) "Right": - b.global_position = Vector2(size.x, size.y/2) + b.global_position = Vector2(size.x, size.y / 2) "Top": - b.global_position = Vector2(size.x/2, 0) + b.global_position = Vector2(size.x / 2, 0) "Bottom": - b.global_position = Vector2(size.x/2, size.y) + b.global_position = Vector2(size.x / 2, size.y) update() diff --git a/project/demos/SeekFlee/Player.gd b/project/demos/SeekFlee/Player.gd index ad96016..7008704 100644 --- a/project/demos/SeekFlee/Player.gd +++ b/project/demos/SeekFlee/Player.gd @@ -1,7 +1,6 @@ extends KinematicBody2D # Class to control the player in basic left/right up/down movement. - var speed: float onready var agent := GSAIAgentLocation.new() @@ -14,7 +13,7 @@ func _physics_process(_delta: float) -> void: var movement := _get_movement() if movement.length_squared() < 0.01: return - + # warning-ignore:return_value_discarded move_and_slide(movement * speed) agent.position = GSAIUtils.to_vector3(global_position) @@ -22,5 +21,6 @@ func _physics_process(_delta: float) -> void: func _get_movement() -> Vector2: return Vector2( - Input.get_action_strength("sf_right") - Input.get_action_strength("sf_left"), - Input.get_action_strength("sf_down") - Input.get_action_strength("sf_up")) + Input.get_action_strength("sf_right") - Input.get_action_strength("sf_left"), + Input.get_action_strength("sf_down") - Input.get_action_strength("sf_up") + ) diff --git a/project/demos/SeekFlee/SeekFleeDemo.gd b/project/demos/SeekFlee/SeekFleeDemo.gd index 7ac7bfa..8e632ae 100644 --- a/project/demos/SeekFlee/SeekFleeDemo.gd +++ b/project/demos/SeekFlee/SeekFleeDemo.gd @@ -1,13 +1,12 @@ extends Node # Access helper class for children to access window boundaries. - enum Mode { FLEE, SEEK } -export(Mode) var behavior_mode := Mode.SEEK setget set_behavior_mode -export(float, 0, 2000, 40) var linear_speed_max := 200.0 setget set_linear_speed_max -export(float, 0, 500, 0.5) var linear_accel_max := 10.0 setget set_linear_accel_max -export(float) var player_speed := 600.0 setget set_player_speed +export (Mode) var behavior_mode := Mode.SEEK setget set_behavior_mode +export (float, 0, 2000, 40) var linear_speed_max := 200.0 setget set_linear_speed_max +export (float, 0, 500, 0.5) var linear_accel_max := 10.0 setget set_linear_accel_max +export (float) var player_speed := 600.0 setget set_player_speed var camera_boundaries: Rect2 @@ -21,18 +20,18 @@ func _ready() -> void: Vector2( ProjectSettings["display/window/size/width"], ProjectSettings["display/window/size/height"] - ) ) - + ) + var rng := RandomNumberGenerator.new() rng.randomize() - + player.speed = player_speed - + for i in range(spawner.entity_count): var new_pos := Vector2( - rng.randf_range(0, camera_boundaries.size.x), - rng.randf_range(0, camera_boundaries.size.y) + rng.randf_range(0, camera_boundaries.size.x), + rng.randf_range(0, camera_boundaries.size.y) ) var entity: KinematicBody2D = spawner.Entity.instance() entity.global_position = new_pos @@ -47,7 +46,7 @@ func set_behavior_mode(mode: int) -> void: behavior_mode = mode if not is_inside_tree(): return - + match mode: Mode.SEEK: for child in spawner.get_children(): @@ -61,7 +60,7 @@ func set_linear_speed_max(value: float) -> void: linear_speed_max = value if not is_inside_tree(): return - + for child in spawner.get_children(): child.agent.linear_speed_max = value @@ -70,7 +69,7 @@ func set_linear_accel_max(value: float) -> void: linear_accel_max = value if not is_inside_tree(): return - + for child in spawner.get_children(): child.agent.linear_acceleration_max = value @@ -79,5 +78,5 @@ func set_player_speed(value: float) -> void: player_speed = value if not is_inside_tree(): return - + player.speed = player_speed diff --git a/project/demos/SeekFlee/Seeker.gd b/project/demos/SeekFlee/Seeker.gd index 36f4f78..e2252f3 100644 --- a/project/demos/SeekFlee/Seeker.gd +++ b/project/demos/SeekFlee/Seeker.gd @@ -1,6 +1,5 @@ extends KinematicBody2D - var player_agent: GSAIAgentLocation var velocity := Vector2.ZERO var start_speed: float @@ -21,10 +20,10 @@ func _ready() -> void: func _physics_process(delta: float) -> void: if not player_agent: return - + if use_seek: seek.calculate_steering(accel) else: flee.calculate_steering(accel) - + agent._apply_steering(accel, delta) diff --git a/project/demos/SeekFlee/Spawner.gd b/project/demos/SeekFlee/Spawner.gd index 77fa588..abd3929 100644 --- a/project/demos/SeekFlee/Spawner.gd +++ b/project/demos/SeekFlee/Spawner.gd @@ -1,7 +1,6 @@ extends Node2D # Holds data to instantiate and configure a number of agent entities. - -export(PackedScene) var Entity: PackedScene -export var entity_count:= 10 -export var entity_color:= Color.blue +export (PackedScene) var Entity: PackedScene +export var entity_count := 10 +export var entity_color := Color.blue diff --git a/project/demos/Utils/CircleDraw.gd b/project/demos/Utils/CircleDraw.gd index 47b51b1..1c51f05 100644 --- a/project/demos/Utils/CircleDraw.gd +++ b/project/demos/Utils/CircleDraw.gd @@ -1,9 +1,9 @@ tool extends CollisionShape2D -export(Color) var inner_color := Color() setget set_inner_color -export(Color) var outer_color := Color() setget set_outer_color -export(float) var stroke := 0.0 setget set_stroke +export (Color) var inner_color := Color() setget set_inner_color +export (Color) var outer_color := Color() setget set_outer_color +export (float) var stroke := 0.0 setget set_stroke func _draw() -> void: diff --git a/project/demos/Utils/DemoInterface.gd b/project/demos/Utils/DemoInterface.gd index 38a7ec7..93b7082 100644 --- a/project/demos/Utils/DemoInterface.gd +++ b/project/demos/Utils/DemoInterface.gd @@ -1,13 +1,12 @@ tool extends PanelContainer - -export(String, MULTILINE) var text_bbcode := "" setget set_text_bbcode +export (String, MULTILINE) var text_bbcode := "" setget set_text_bbcode onready var rich_text_label: RichTextLabel = $MarginContainer/RichTextLabel -func set_text_bbcode(value: String)-> void: +func set_text_bbcode(value: String) -> void: text_bbcode = value if not rich_text_label: yield(self, "ready") diff --git a/project/demos/Utils/Line2DDraw.gd b/project/demos/Utils/Line2DDraw.gd index 4dcc666..d1a7b5e 100644 --- a/project/demos/Utils/Line2DDraw.gd +++ b/project/demos/Utils/Line2DDraw.gd @@ -1,8 +1,7 @@ tool extends Line2D - -export(Color) var inner_color := Color() setget set_inner_color +export (Color) var inner_color := Color() setget set_inner_color func _draw() -> void: diff --git a/project/src/Agents/GSAIKinematicBody2DAgent.gd b/project/src/Agents/GSAIKinematicBody2DAgent.gd index 502b66f..006fb8e 100644 --- a/project/src/Agents/GSAIKinematicBody2DAgent.gd +++ b/project/src/Agents/GSAIKinematicBody2DAgent.gd @@ -3,13 +3,11 @@ extends GSAISpecializedAgent class_name GSAIKinematicBody2DAgent - # SLIDE uses `move_and_slide` # COLLIDE uses `move_and_collide` # POSITION changes the `global_position` directly enum MovementType { SLIDE, COLLIDE, POSITION } - # The KinematicBody2D to keep track of var body: KinematicBody2D setget _set_body @@ -22,10 +20,10 @@ var _last_position: Vector2 func _init(_body: KinematicBody2D, _movement_type: int = MovementType.SLIDE) -> void: if not _body.is_inside_tree(): yield(_body, "ready") - + self.body = _body self.movement_type = _movement_type - + # warning-ignore:return_value_discarded body.get_tree().connect("physics_frame", self, "_on_SceneTree_physics_frame") @@ -41,7 +39,7 @@ func _apply_steering(acceleration: GSAITargetAcceleration, delta: float) -> void _apply_sliding_steering(acceleration.linear) _: _apply_position_steering(acceleration.linear, delta) - + _apply_orientation_steering(acceleration.angular, delta) @@ -57,10 +55,7 @@ func _apply_sliding_steering(accel: Vector3) -> void: func _apply_collide_steering(accel: Vector3, delta: float) -> void: var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) if apply_linear_drag: - velocity = velocity.linear_interpolate( - Vector3.ZERO, - linear_drag_percentage - ) + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) # warning-ignore:return_value_discarded body.move_and_collide(GSAIUtils.to_vector2(velocity) * delta) if calculate_velocities: @@ -70,10 +65,7 @@ func _apply_collide_steering(accel: Vector3, delta: float) -> void: func _apply_position_steering(accel: Vector3, delta: float) -> void: var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) if apply_linear_drag: - velocity = velocity.linear_interpolate( - Vector3.ZERO, - linear_drag_percentage - ) + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) body.global_position += GSAIUtils.to_vector2(velocity) * delta if calculate_velocities: linear_velocity = velocity @@ -90,10 +82,10 @@ func _apply_orientation_steering(angular_acceleration: float, delta: float) -> v func _set_body(value: KinematicBody2D) -> void: body = value - + _last_position = body.global_position _last_orientation = body.rotation - + position = GSAIUtils.to_vector3(_last_position) orientation = _last_orientation @@ -101,36 +93,28 @@ func _set_body(value: KinematicBody2D) -> void: func _on_SceneTree_physics_frame() -> void: var current_position := body.global_position var current_orientation := body.rotation - + position = GSAIUtils.to_vector3(current_position) orientation = current_orientation - + if calculate_velocities: if _applied_steering: _applied_steering = false else: linear_velocity = GSAIUtils.clampedv3( - GSAIUtils.to_vector3(_last_position - current_position), - linear_speed_max + GSAIUtils.to_vector3(_last_position - current_position), linear_speed_max ) if apply_linear_drag: linear_velocity = linear_velocity.linear_interpolate( - Vector3.ZERO, - linear_drag_percentage + Vector3.ZERO, linear_drag_percentage ) - + angular_velocity = clamp( - _last_orientation - current_orientation, - -angular_speed_max, - angular_speed_max + _last_orientation - current_orientation, -angular_speed_max, angular_speed_max ) - + if apply_angular_drag: - angular_velocity = lerp( - angular_velocity, - 0, - angular_drag_percentage - ) - + angular_velocity = lerp(angular_velocity, 0, angular_drag_percentage) + _last_position = current_position _last_orientation = current_orientation diff --git a/project/src/Agents/GSAIKinematicBody3DAgent.gd b/project/src/Agents/GSAIKinematicBody3DAgent.gd index 032c104..d12f9e8 100644 --- a/project/src/Agents/GSAIKinematicBody3DAgent.gd +++ b/project/src/Agents/GSAIKinematicBody3DAgent.gd @@ -8,7 +8,6 @@ class_name GSAIKinematicBody3DAgent # POSITION changes the global_position directly enum MovementType { SLIDE, COLLIDE, POSITION } - # The KinematicBody to keep track of var body: KinematicBody setget _set_body @@ -21,10 +20,10 @@ var _last_position: Vector3 func _init(_body: KinematicBody, _movement_type: int = MovementType.SLIDE) -> void: if not _body.is_inside_tree(): yield(_body, "ready") - + self.body = _body self.movement_type = _movement_type - + # warning-ignore:return_value_discarded self.body.get_tree().connect("physics_frame", self, "_on_SceneTree_physics_frame") @@ -40,7 +39,7 @@ func _apply_steering(acceleration: GSAITargetAcceleration, delta: float) -> void _apply_sliding_steering(acceleration.linear) _: _apply_position_steering(acceleration.linear, delta) - + _apply_orientation_steering(acceleration.angular, delta) @@ -56,10 +55,7 @@ func _apply_sliding_steering(accel: Vector3) -> void: func _apply_collide_steering(accel: Vector3, delta: float) -> void: var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) if apply_linear_drag: - velocity = velocity.linear_interpolate( - Vector3.ZERO, - linear_drag_percentage - ) + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) # warning-ignore:return_value_discarded body.move_and_collide(velocity * delta) if calculate_velocities: @@ -69,10 +65,7 @@ func _apply_collide_steering(accel: Vector3, delta: float) -> void: func _apply_position_steering(accel: Vector3, delta: float) -> void: var velocity := GSAIUtils.clampedv3(linear_velocity + accel, linear_speed_max) if apply_linear_drag: - velocity = velocity.linear_interpolate( - Vector3.ZERO, - linear_drag_percentage - ) + velocity = velocity.linear_interpolate(Vector3.ZERO, linear_drag_percentage) body.global_position += velocity * delta if calculate_velocities: linear_velocity = velocity @@ -89,10 +82,10 @@ func _apply_orientation_steering(angular_acceleration: float, delta: float) -> v func _set_body(value: KinematicBody) -> void: body = value - + _last_position = body.transform.origin _last_orientation = body.rotation.y - + position = _last_position orientation = _last_orientation @@ -100,36 +93,28 @@ func _set_body(value: KinematicBody) -> void: func _on_SceneTree_physics_frame() -> void: var current_position := body.transform.origin var current_orientation := body.rotation.y - + position = current_position orientation = current_orientation - + if calculate_velocities: if _applied_steering: _applied_steering = false else: linear_velocity = GSAIUtils.clampedv3( - _last_position - current_position, - linear_speed_max + _last_position - current_position, linear_speed_max ) if apply_linear_drag: linear_velocity = linear_velocity.linear_interpolate( - Vector3.ZERO, - linear_drag_percentage + Vector3.ZERO, linear_drag_percentage ) - + angular_velocity = clamp( - _last_orientation - current_orientation, - -angular_speed_max, - angular_speed_max + _last_orientation - current_orientation, -angular_speed_max, angular_speed_max ) - + if apply_angular_drag: - angular_velocity = lerp( - angular_velocity, - 0, - angular_drag_percentage - ) - + angular_velocity = lerp(angular_velocity, 0, angular_drag_percentage) + _last_position = current_position _last_orientation = current_orientation diff --git a/project/src/Agents/GSAIRigidBody2DAgent.gd b/project/src/Agents/GSAIRigidBody2DAgent.gd index 726ab5b..f8d814f 100644 --- a/project/src/Agents/GSAIRigidBody2DAgent.gd +++ b/project/src/Agents/GSAIRigidBody2DAgent.gd @@ -3,7 +3,6 @@ extends GSAISpecializedAgent class_name GSAIRigidBody2DAgent - # The RigidBody2D to keep track of var body: RigidBody2D setget _set_body @@ -13,7 +12,7 @@ var _last_position: Vector2 func _init(_body: RigidBody2D) -> void: if not _body.is_inside_tree(): yield(_body, "ready") - + self.body = _body @@ -30,10 +29,10 @@ func _apply_steering(acceleration: GSAITargetAcceleration, _delta: float) -> voi func _set_body(value: RigidBody2D) -> void: body = value - + _last_position = body.global_position _last_orientation = body.rotation - + position = GSAIUtils.to_vector3(_last_position) orientation = _last_orientation @@ -47,10 +46,10 @@ func _on_body_ready() -> void: func _on_SceneTree_frame() -> void: var current_position := body.global_position var current_orientation := body.rotation - + position = GSAIUtils.to_vector3(current_position) orientation = current_orientation - + if calculate_velocities: if _applied_steering: _applied_steering = false diff --git a/project/src/Agents/GSAIRigidBody3DAgent.gd b/project/src/Agents/GSAIRigidBody3DAgent.gd index 92f6088..78bc462 100644 --- a/project/src/Agents/GSAIRigidBody3DAgent.gd +++ b/project/src/Agents/GSAIRigidBody3DAgent.gd @@ -3,7 +3,6 @@ extends GSAISpecializedAgent class_name GSAIRigidBody3DAgent - # The RigidBody to keep track of var body: RigidBody setget _set_body @@ -13,11 +12,10 @@ var _last_position: Vector3 func _init(_body: RigidBody) -> void: if not _body.is_inside_tree(): yield(_body, "ready") - + self.body = _body # warning-ignore:return_value_discarded self.body.get_tree().connect("physics_frame", self, "_on_SceneTree_frame") - # Moves the agent's `body` by target `acceleration`. @@ -33,10 +31,10 @@ func _apply_steering(acceleration: GSAITargetAcceleration, _delta: float) -> voi func _set_body(value: RigidBody) -> void: body = value - + _last_position = body.transform.origin _last_orientation = body.rotation.y - + position = _last_position orientation = _last_orientation @@ -50,10 +48,10 @@ func _on_body_ready() -> void: func _on_SceneTree_frame() -> void: var current_position := body.transform.origin var current_orientation := body.rotation.y - + position = current_position orientation = current_orientation - + if calculate_velocities: if _applied_steering: _applied_steering = false diff --git a/project/src/Agents/GSAISpecializedAgent.gd b/project/src/Agents/GSAISpecializedAgent.gd index e4b81ed..18be399 100644 --- a/project/src/Agents/GSAISpecializedAgent.gd +++ b/project/src/Agents/GSAISpecializedAgent.gd @@ -4,7 +4,6 @@ extends GSAISteeringAgent class_name GSAISpecializedAgent - # If `true`, calculates linear and angular velocities based on the previous # frame. When `false`, the user must keep those values updated. var calculate_velocities := true diff --git a/project/src/Behaviors/GSAIArrive.gd b/project/src/Behaviors/GSAIArrive.gd index 26c4db5..972cea1 100644 --- a/project/src/Behaviors/GSAIArrive.gd +++ b/project/src/Behaviors/GSAIArrive.gd @@ -3,7 +3,6 @@ class_name GSAIArrive extends GSAISteeringBehavior - # Target agent to arrive to. var target: GSAIAgentLocation # Distance from the target for the agent to be considered successfully @@ -31,9 +30,9 @@ func _arrive(acceleration: GSAITargetAcceleration, target_position: Vector3) -> if distance <= deceleration_radius: desired_speed *= distance / deceleration_radius - var desired_velocity := to_target * desired_speed/distance + var desired_velocity := to_target * desired_speed / distance - desired_velocity = (desired_velocity - agent.linear_velocity) * 1.0 / time_to_reach + desired_velocity = ((desired_velocity - agent.linear_velocity) * 1.0 / time_to_reach) acceleration.linear = GSAIUtils.clampedv3(desired_velocity, agent.linear_acceleration_max) acceleration.angular = 0 diff --git a/project/src/Behaviors/GSAIAvoidCollisions.gd b/project/src/Behaviors/GSAIAvoidCollisions.gd index b510c58..613f5c8 100644 --- a/project/src/Behaviors/GSAIAvoidCollisions.gd +++ b/project/src/Behaviors/GSAIAvoidCollisions.gd @@ -3,7 +3,6 @@ class_name GSAIAvoidCollisions extends GSAIGroupBehavior - var _first_neighbor: GSAISteeringAgent var _shortest_time: float var _first_minimum_separation: float @@ -27,14 +26,18 @@ func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: if neighbor_count == 0 or not _first_neighbor: acceleration.set_zero() else: - if( - _first_minimum_separation <= 0 or - _first_distance < agent.bounding_radius + _first_neighbor.bounding_radius): + if ( + _first_minimum_separation <= 0 + or _first_distance < agent.bounding_radius + _first_neighbor.bounding_radius + ): acceleration.linear = _first_neighbor.position - agent.position else: - acceleration.linear = _first_relative_position + (_first_relative_velocity * _shortest_time) + acceleration.linear = ( + _first_relative_position + + (_first_relative_velocity * _shortest_time) + ) - acceleration.linear = acceleration.linear.normalized() * -agent.linear_acceleration_max + acceleration.linear = (acceleration.linear.normalized() * -agent.linear_acceleration_max) acceleration.angular = 0 @@ -55,7 +58,10 @@ func _report_neighbor(neighbor: GSAISteeringAgent) -> bool: return false else: var distance = relative_position.length() - var minimum_separation: float = distance - sqrt(relative_speed_squared) * time_to_collision + var minimum_separation: float = ( + distance + - sqrt(relative_speed_squared) * time_to_collision + ) if minimum_separation > agent.bounding_radius + neighbor.bounding_radius: return false else: diff --git a/project/src/Behaviors/GSAIBlend.gd b/project/src/Behaviors/GSAIBlend.gd index f8bf00f..0bfbfff 100644 --- a/project/src/Behaviors/GSAIBlend.gd +++ b/project/src/Behaviors/GSAIBlend.gd @@ -9,7 +9,6 @@ class_name GSAIBlend extends GSAISteeringBehavior - var _behaviors := [] var _accel := GSAITargetAcceleration.new() @@ -44,7 +43,5 @@ func _calculate_steering(blended_accel: GSAITargetAcceleration) -> void: blended_accel.linear = GSAIUtils.clampedv3(blended_accel.linear, agent.linear_acceleration_max) blended_accel.angular = clamp( - blended_accel.angular, - -agent.angular_acceleration_max, - agent.angular_acceleration_max + blended_accel.angular, -agent.angular_acceleration_max, agent.angular_acceleration_max ) diff --git a/project/src/Behaviors/GSAICohesion.gd b/project/src/Behaviors/GSAICohesion.gd index 6117e03..c3202ad 100644 --- a/project/src/Behaviors/GSAICohesion.gd +++ b/project/src/Behaviors/GSAICohesion.gd @@ -3,7 +3,6 @@ class_name GSAICohesion extends GSAIGroupBehavior - var _center_of_mass: Vector3 @@ -17,7 +16,10 @@ func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: var neighbor_count = proximity._find_neighbors(_callback) if neighbor_count > 0: _center_of_mass *= 1.0 / neighbor_count - acceleration.linear = (_center_of_mass - agent.position).normalized() * agent.linear_acceleration_max + acceleration.linear = ( + (_center_of_mass - agent.position).normalized() + * agent.linear_acceleration_max + ) # Callback for the proximity to call when finding neighbors. Adds `neighbor`'s position diff --git a/project/src/Behaviors/GSAIEvade.gd b/project/src/Behaviors/GSAIEvade.gd index c722e3e..61c9551 100644 --- a/project/src/Behaviors/GSAIEvade.gd +++ b/project/src/Behaviors/GSAIEvade.gd @@ -4,10 +4,9 @@ class_name GSAIEvade extends GSAIPursue -func _init( - agent: GSAISteeringAgent, - target: GSAISteeringAgent, - predict_time_max := 1.0).(agent, target, predict_time_max): +func _init(agent: GSAISteeringAgent, target: GSAISteeringAgent, predict_time_max := 1.0).( + agent, target, predict_time_max +): pass diff --git a/project/src/Behaviors/GSAIFace.gd b/project/src/Behaviors/GSAIFace.gd index bb49df2..9b5d908 100644 --- a/project/src/Behaviors/GSAIFace.gd +++ b/project/src/Behaviors/GSAIFace.gd @@ -4,7 +4,9 @@ class_name GSAIFace extends GSAIMatchOrientation -func _init(agent: GSAISteeringAgent, target: GSAIAgentLocation, use_z := false).(agent, target, use_z) -> void: +func _init(agent: GSAISteeringAgent, target: GSAIAgentLocation, use_z := false).( + agent, target, use_z +) -> void: pass @@ -15,7 +17,8 @@ func _face(acceleration: GSAITargetAcceleration, target_position: Vector3) -> vo if distance_squared < agent.zero_linear_speed_threshold: acceleration.set_zero() else: - var orientation = (GSAIUtils.vector3_to_angle(to_target) + var orientation = ( + GSAIUtils.vector3_to_angle(to_target) if use_z else GSAIUtils.vector2_to_angle(GSAIUtils.to_vector2(to_target)) ) diff --git a/project/src/Behaviors/GSAIFlee.gd b/project/src/Behaviors/GSAIFlee.gd index 51fc3e9..765448b 100644 --- a/project/src/Behaviors/GSAIFlee.gd +++ b/project/src/Behaviors/GSAIFlee.gd @@ -9,5 +9,7 @@ func _init(agent: GSAISteeringAgent, target: GSAIAgentLocation).(agent, target) func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: acceleration.linear = ( - (agent.position - target.position).normalized() * agent.linear_acceleration_max) + (agent.position - target.position).normalized() + * agent.linear_acceleration_max + ) acceleration.angular = 0 diff --git a/project/src/Behaviors/GSAIFollowPath.gd b/project/src/Behaviors/GSAIFollowPath.gd index 75f630e..42c0e66 100644 --- a/project/src/Behaviors/GSAIFollowPath.gd +++ b/project/src/Behaviors/GSAIFollowPath.gd @@ -2,7 +2,6 @@ class_name GSAIFollowPath extends GSAIArrive - # The path to follow and travel along. var path: GSAIPath # The distance along the path to generate the next target position. @@ -15,11 +14,9 @@ var is_arrive_enabled := true var prediction_time := 0.0 -func _init( - agent: GSAISteeringAgent, - _path: GSAIPath, - _path_offset := 0.0, - _prediction_time := 0.0).(agent, null) -> void: +func _init(agent: GSAISteeringAgent, _path: GSAIPath, _path_offset := 0.0, _prediction_time := 0.0).( + agent, null +) -> void: self.path = _path self.path_offset = _path_offset self.prediction_time = _prediction_time @@ -27,18 +24,20 @@ func _init( func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: var location := ( - agent.position if prediction_time == 0 - else agent.position + (agent.linear_velocity * prediction_time)) + agent.position + if prediction_time == 0 + else agent.position + (agent.linear_velocity * prediction_time) + ) var distance := path.calculate_distance(location) var target_distance := distance + path_offset - + if prediction_time > 0 and path.is_open: if target_distance < path.calculate_distance(agent.position): target_distance = path.length var target_position := path.calculate_target_position(target_distance) - + if is_arrive_enabled and path.is_open: if path_offset >= 0: if target_distance > path.length - deceleration_radius: diff --git a/project/src/Behaviors/GSAILookWhereYouGo.gd b/project/src/Behaviors/GSAILookWhereYouGo.gd index 4a70d09..e0ed6fd 100644 --- a/project/src/Behaviors/GSAILookWhereYouGo.gd +++ b/project/src/Behaviors/GSAILookWhereYouGo.gd @@ -12,7 +12,8 @@ func _calculate_steering(accel: GSAITargetAcceleration) -> void: if agent.linear_velocity.length_squared() < agent.zero_linear_speed_threshold: accel.set_zero() else: - var orientation := (GSAIUtils.vector3_to_angle(agent.linear_velocity) + var orientation := ( + GSAIUtils.vector3_to_angle(agent.linear_velocity) if use_z else GSAIUtils.vector2_to_angle(GSAIUtils.to_vector2(agent.linear_velocity)) ) diff --git a/project/src/Behaviors/GSAIMatchOrientation.gd b/project/src/Behaviors/GSAIMatchOrientation.gd index 57c0a1e..3b8c97d 100644 --- a/project/src/Behaviors/GSAIMatchOrientation.gd +++ b/project/src/Behaviors/GSAIMatchOrientation.gd @@ -4,7 +4,6 @@ class_name GSAIMatchOrientation extends GSAISteeringBehavior - # The target orientation for the behavior to try and match rotations to. var target: GSAIAgentLocation # The amount of distance in radians for the behavior to consider itself close @@ -39,11 +38,11 @@ func _match_orientation(acceleration: GSAITargetAcceleration, desired_orientatio desired_rotation *= rotation / rotation_size - acceleration.angular = (desired_rotation - agent.angular_velocity) / time_to_reach + acceleration.angular = ((desired_rotation - agent.angular_velocity) / time_to_reach) var limited_acceleration := abs(acceleration.angular) if limited_acceleration > agent.angular_acceleration_max: - acceleration.angular *= agent.angular_acceleration_max / limited_acceleration + acceleration.angular *= (agent.angular_acceleration_max / limited_acceleration) acceleration.linear = Vector3.ZERO diff --git a/project/src/Behaviors/GSAIPriority.gd b/project/src/Behaviors/GSAIPriority.gd index 52472b2..55df59a 100644 --- a/project/src/Behaviors/GSAIPriority.gd +++ b/project/src/Behaviors/GSAIPriority.gd @@ -3,7 +3,6 @@ class_name GSAIPriority extends GSAISteeringBehavior - var _behaviors := [] # The index of the last behavior the container prioritized. diff --git a/project/src/Behaviors/GSAIPursue.gd b/project/src/Behaviors/GSAIPursue.gd index 4363a4b..de685c3 100644 --- a/project/src/Behaviors/GSAIPursue.gd +++ b/project/src/Behaviors/GSAIPursue.gd @@ -3,7 +3,6 @@ class_name GSAIPursue extends GSAISteeringBehavior - # The target agent that the behavior is trying to intercept. var target: GSAISteeringAgent # The maximum amount of time in the future the behavior predicts the target's @@ -11,10 +10,7 @@ var target: GSAISteeringAgent var predict_time_max: float -func _init( - agent: GSAISteeringAgent, - _target: GSAISteeringAgent, - _predict_time_max := 1.0).(agent) -> void: +func _init(agent: GSAISteeringAgent, _target: GSAISteeringAgent, _predict_time_max := 1.0).(agent) -> void: self.target = _target self.predict_time_max = _predict_time_max @@ -31,8 +27,7 @@ func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: if predict_time_squared < predict_time_max * predict_time_max: predict_time = sqrt(predict_time_squared) - acceleration.linear = (( - target_position + (target.linear_velocity * predict_time))-agent.position).normalized() + acceleration.linear = ((target_position + (target.linear_velocity * predict_time)) - agent.position).normalized() acceleration.linear *= _get_modified_acceleration() acceleration.angular = 0 diff --git a/project/src/Behaviors/GSAISeek.gd b/project/src/Behaviors/GSAISeek.gd index 7588e8f..f5c85f5 100644 --- a/project/src/Behaviors/GSAISeek.gd +++ b/project/src/Behaviors/GSAISeek.gd @@ -3,7 +3,6 @@ class_name GSAISeek extends GSAISteeringBehavior - # The target that the behavior aims to move the agent to. var target: GSAIAgentLocation @@ -14,5 +13,7 @@ func _init(agent: GSAISteeringAgent, _target: GSAIAgentLocation).(agent) -> void func _calculate_steering(acceleration: GSAITargetAcceleration) -> void: acceleration.linear = ( - (target.position - agent.position).normalized() * agent.linear_acceleration_max) + (target.position - agent.position).normalized() + * agent.linear_acceleration_max + ) acceleration.angular = 0 diff --git a/project/src/Behaviors/GSAISeparation.gd b/project/src/Behaviors/GSAISeparation.gd index 829e050..4b532f3 100644 --- a/project/src/Behaviors/GSAISeparation.gd +++ b/project/src/Behaviors/GSAISeparation.gd @@ -7,7 +7,6 @@ class_name GSAISeparation extends GSAIGroupBehavior - # The coefficient to calculate how fast the separation strength decays with distance. var decay_coefficient := 1.0 diff --git a/project/src/GSAIAgentLocation.gd b/project/src/GSAIAgentLocation.gd index aac7408..b772020 100644 --- a/project/src/GSAIAgentLocation.gd +++ b/project/src/GSAIAgentLocation.gd @@ -1,7 +1,6 @@ # Represents an agent with only a location and an orientation. class_name GSAIAgentLocation - # The agent's position in space. var position := Vector3.ZERO # The agent's orientation on its Y axis rotation. diff --git a/project/src/GSAIGroupBehavior.gd b/project/src/GSAIGroupBehavior.gd index 974cd4b..6c58708 100644 --- a/project/src/GSAIGroupBehavior.gd +++ b/project/src/GSAIGroupBehavior.gd @@ -2,7 +2,6 @@ class_name GSAIGroupBehavior extends GSAISteeringBehavior - # Container to find neighbors of the agent and calculate group behavior. var proximity: GSAIProximity diff --git a/project/src/GSAIPath.gd b/project/src/GSAIPath.gd index b0f3402..b8f0f6a 100644 --- a/project/src/GSAIPath.gd +++ b/project/src/GSAIPath.gd @@ -3,7 +3,6 @@ class_name GSAIPath extends Reference - # If `false`, the path loops. var is_open: bool # Total length of the path. @@ -56,10 +55,8 @@ func calculate_distance(agent_current_position: Vector3) -> float: for i in range(_segments.size()): var segment: GSAISegment = _segments[i] var distance_squared := _calculate_point_segment_distance_squared( - segment.begin, - segment.end, - agent_current_position - ) + segment.begin, segment.end, agent_current_position + ) if distance_squared < smallest_distance_squared: _nearest_point_on_path = _nearest_point_on_segment @@ -67,8 +64,9 @@ func calculate_distance(agent_current_position: Vector3) -> float: nearest_segment = segment var length_on_path := ( - nearest_segment.cumulative_length - - _nearest_point_on_path.distance_to(nearest_segment.end)) + nearest_segment.cumulative_length + - _nearest_point_on_path.distance_to(nearest_segment.end) + ) return length_on_path @@ -96,8 +94,9 @@ func calculate_target_position(target_distance: float) -> Vector3: var distance := desired_segment.cumulative_length - target_distance return ( - (desired_segment.begin - desired_segment.end) * - (distance / desired_segment.length) + desired_segment.end) + ((desired_segment.begin - desired_segment.end) * (distance / desired_segment.length)) + + desired_segment.end + ) # Returns the position of the first point on the path. @@ -127,7 +126,6 @@ class GSAISegment: var length: float var cumulative_length: float - func _init(_begin: Vector3, _end: Vector3) -> void: self.begin = _begin self.end = _end diff --git a/project/src/GSAISteeringAgent.gd b/project/src/GSAISteeringAgent.gd index 74c150f..0fc7f6f 100644 --- a/project/src/GSAISteeringAgent.gd +++ b/project/src/GSAISteeringAgent.gd @@ -5,7 +5,6 @@ extends GSAIAgentLocation class_name GSAISteeringAgent - # The amount of velocity to be considered effectively not moving. var zero_linear_speed_threshold := 0.01 # The maximum speed at which the agent can move. diff --git a/project/src/GSAISteeringBehavior.gd b/project/src/GSAISteeringBehavior.gd index cc00ca2..675cf58 100644 --- a/project/src/GSAISteeringBehavior.gd +++ b/project/src/GSAISteeringBehavior.gd @@ -7,7 +7,6 @@ # Individual steering behaviors encapsulate the steering logic. class_name GSAISteeringBehavior - # If `false`, all calculations return zero amounts of acceleration. var is_enabled := true # The AI agent on which the steering behavior bases its calculations. diff --git a/project/src/GSAITargetAcceleration.gd b/project/src/GSAITargetAcceleration.gd index 9a6563e..a32d3ee 100644 --- a/project/src/GSAITargetAcceleration.gd +++ b/project/src/GSAITargetAcceleration.gd @@ -2,7 +2,6 @@ # system. class_name GSAITargetAcceleration - # Linear acceleration var linear := Vector3.ZERO # Angular acceleration diff --git a/project/src/GSAIUtils.gd b/project/src/GSAIUtils.gd index 40cd9ad..a5ab38b 100644 --- a/project/src/GSAIUtils.gd +++ b/project/src/GSAIUtils.gd @@ -1,7 +1,6 @@ # Math and vector utility functions. class_name GSAIUtils - # Returns the `vector` with its length capped to `limit`. static func clampedv3(vector: Vector3, limit: float) -> Vector3: var length_squared := vector.length_squared() @@ -10,7 +9,6 @@ static func clampedv3(vector: Vector3, limit: float) -> Vector3: vector *= sqrt(limit_squared / length_squared) return vector - # Returns an angle in radians between the positive X axis and the `vector`. # # This assumes orientation for 3D agents that are upright and rotate @@ -18,12 +16,10 @@ static func clampedv3(vector: Vector3, limit: float) -> Vector3: static func vector3_to_angle(vector: Vector3) -> float: return atan2(vector.x, vector.z) - # Returns an angle in radians between the positive X axis and the `vector`. static func vector2_to_angle(vector: Vector2) -> float: return atan2(vector.x, -vector.y) - # Returns a directional vector from the given orientation angle. # # This assumes orientation for 2D agents or 3D agents that are upright and @@ -31,12 +27,10 @@ static func vector2_to_angle(vector: Vector2) -> float: static func angle_to_vector2(angle: float) -> Vector2: return Vector2(sin(-angle), cos(angle)) - # Returns a vector2 with `vector`'s x and y components. static func to_vector2(vector: Vector3) -> Vector2: return Vector2(vector.x, vector.y) - # Returns a vector3 with `vector`'s x and y components and 0 in z. static func to_vector3(vector: Vector2) -> Vector3: return Vector3(vector.x, vector.y, 0) diff --git a/project/src/Proximities/GSAIProximity.gd b/project/src/Proximities/GSAIProximity.gd index 52f28a3..69e6541 100644 --- a/project/src/Proximities/GSAIProximity.gd +++ b/project/src/Proximities/GSAIProximity.gd @@ -2,7 +2,6 @@ extends Reference class_name GSAIProximity - # The owning agent whose neighbors are found in the group var agent: GSAISteeringAgent # The agents who are part of this group and could be potential neighbors diff --git a/project/src/Proximities/GSAIRadiusProximity.gd b/project/src/Proximities/GSAIRadiusProximity.gd index 23b3747..bfce22c 100644 --- a/project/src/Proximities/GSAIRadiusProximity.gd +++ b/project/src/Proximities/GSAIRadiusProximity.gd @@ -3,7 +3,6 @@ extends GSAIProximity class_name GSAIRadiusProximity - # The radius around the owning agent to find neighbors in var radius := 0.0