Skip to content

Commit

Permalink
lint gdscript code on github actions
Browse files Browse the repository at this point in the history
  • Loading branch information
Ughuuu committed Oct 8, 2024
1 parent 8b67720 commit 1ba04ba
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 18 deletions.
21 changes: 21 additions & 0 deletions .github/workflows/static_checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,24 @@ jobs:
shell: sh
run: |
cargo clippy --all-targets --features="build3d" --no-default-features -- -D warnings
gdlint:
name: GDLint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install 'gdtoolkit==4.*'
- name: Lint Rapier2D
run: |
gdlint bin2d/addons/godot-rapier2d/**.gd
- name: Lint Rapier3D
run: |
gdlint bin3d/addons/godot-rapier3d/**.gd
7 changes: 5 additions & 2 deletions bin2d/addons/godot-rapier2d/faucet_2d.gd
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
class_name Faucet2D
extends Fluid2D

var points_new: PackedVector2Array
@export var interval := 0.06
var velocities_new: PackedVector2Array
@export var max_particles: int = 1000
@export var width: int = 4
@export var height: int = 2

var points_new: PackedVector2Array
var velocities_new: PackedVector2Array


func _ready():
points_new = create_rectangle_points(width, height)
velocities_new.resize(points_new.size())
Expand All @@ -17,6 +19,7 @@ func _ready():
velocities_new.fill(dir)
get_tree().create_timer(interval).timeout.connect(_on_timer_timeout)


func _on_timer_timeout():
get_tree().create_timer(interval).timeout.connect(_on_timer_timeout)
if len(points) > max_particles:
Expand Down
4 changes: 3 additions & 1 deletion bin2d/addons/godot-rapier2d/fluid_2d_renderer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ extends MultiMeshInstance2D

@export var fluid: Fluid2D
@export var color: Color = Color(0.8, 0.8, 0.8, 0.3)
@export var mesh_scale: Vector2 = Vector2(5,5)
@export var mesh_scale: Vector2 = Vector2(5, 5)


func _ready():
if multimesh == null:
Expand All @@ -14,6 +15,7 @@ func _ready():
if texture == null:
texture = load("res://addons/godot-rapier2d/Radial2D.svg")


func _process(_delta):
if fluid == null:
return
Expand Down
12 changes: 9 additions & 3 deletions bin2d/addons/godot-rapier2d/fluid_2d_shader_renderer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ extends CanvasLayer
update_configuration_warnings()
@export var camera: Camera2D
@export var water_material: Material = load("res://addons/godot-rapier2d/water_shader.tres")
@export var mesh_scale: Vector2 = Vector2(5,5)
@export var mesh_scale: Vector2 = Vector2(5, 5)
var fluid_renderer: Fluid2DRenderer
var inside_camera: Camera2D:
set(value):
Expand All @@ -17,6 +17,7 @@ var inside_camera: Camera2D:
var sub_viewport_container: SubViewportContainer
var sub_viewport: SubViewport


func _get_configuration_warnings():
var warnings = []
if camera == null:
Expand All @@ -36,27 +37,31 @@ func _create_subviewport_container():
ProjectSettings.get("display/window/size/viewport_height")
)


func _create_subviewport():
sub_viewport = SubViewport.new()
sub_viewport.name = "SubViewport"
sub_viewport_container.add_child(sub_viewport)
sub_viewport.transparent_bg = true
sub_viewport.size = sub_viewport_container.size


func _create_fluid_renderer():
fluid_renderer = Fluid2DRenderer.new()
fluid_renderer.name = "Fluid2DRenderer"
fluid_renderer.color = Color(255,0,255)
fluid_renderer.color = Color(255, 0, 255)
fluid_renderer.mesh_scale = mesh_scale
fluid_renderer.fluid = fluid
sub_viewport.add_child(fluid_renderer)


func _create_inside_camera():
inside_camera = Camera2D.new()
inside_camera.name = "Camera2D"
inside_camera.material = water_material
sub_viewport.add_child(inside_camera)


func _ready() -> void:
_create_subviewport_container()
_create_subviewport()
Expand All @@ -65,7 +70,8 @@ func _ready() -> void:
if fluid:
fluid.debug_draw = false

func _process(delta: float) -> void:

func _process(_delta: float) -> void:
if camera != null:
inside_camera.offset = camera.offset
inside_camera.zoom = camera.zoom
Expand Down
35 changes: 24 additions & 11 deletions bin2d/addons/godot-rapier2d/rapier_state_2d.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
class_name Rapier2DState
extends Node

var state : Dictionary = {}
var state: Dictionary = {}


func _is_physics_object(node: Node) -> bool:
return node is CollisionObject2D or \
node is Joint2D
return node is CollisionObject2D or node is Joint2D


func _get_all_physics_nodes(p_node: Node, path: String = "/root/") -> Array[String]:
var results : Array[String] = []
var results: Array[String] = []
if path == "/root/" && _is_physics_object(p_node):
results.append(path + p_node.name)
path += p_node.name + "/"
Expand All @@ -21,29 +22,33 @@ func _get_all_physics_nodes(p_node: Node, path: String = "/root/") -> Array[Stri
results.append_array(_get_all_physics_nodes(node, path))
return results


## Save a node's physics state
func save_node(rid: RID, save_json: bool):
if save_json:
return JSON.parse_string(RapierPhysicsServer2D.export_json(rid))
else:
return RapierPhysicsServer2D.export_binary(rid)
return RapierPhysicsServer2D.export_binary(rid)


## Load a node's physics state
func load_node(rid: RID, data: PackedByteArray):
RapierPhysicsServer2D.import_binary(rid, data)


## Save the state of whole world (single space)
func save_state(save_json: bool = false) -> int:
var physics_nodes := _get_all_physics_nodes(get_tree().current_scene)
for node_path in physics_nodes:
var node := get_node(node_path)
var rid : RID
var rid: RID
if node is CollisionObject2D:
rid = node.get_rid()
for owner_id in node.get_shape_owners():
for owner_shape_id in node.shape_owner_get_shape_count(owner_id):
var shape_rid = node.shape_owner_get_shape(owner_id, owner_shape_id).get_rid()
state[node_path + "/" + str(owner_id) + "/" + str(owner_shape_id)] = save_node(shape_rid, save_json)
state[node_path + "/" + str(owner_id) + "/" + str(owner_shape_id)] = save_node(
shape_rid, save_json
)
if node is Joint2D:
rid = node.get_rid()
state[node_path] = save_node(rid, save_json)
Expand All @@ -52,18 +57,21 @@ func save_state(save_json: bool = false) -> int:
state["id"] = RapierPhysicsServer2D.get_global_id()
return hash(JSON.stringify(state))


## Load the state of whole world (single space)
func load_state() -> int:
var physics_nodes := _get_all_physics_nodes(get_tree().current_scene)
for node_path in physics_nodes:
var node := get_node(node_path)
var rid : RID
var rid: RID
if node is CollisionObject2D:
rid = node.get_rid()
for owner_id in node.get_shape_owners():
for owner_shape_id in node.shape_owner_get_shape_count(owner_id):
var shape_rid = node.shape_owner_get_shape(owner_id, owner_shape_id).get_rid()
var shape_state = state[node_path + "/" + str(owner_id) + "/" + str(owner_shape_id)]
var shape_state = state[
node_path + "/" + str(owner_id) + "/" + str(owner_shape_id)
]
load_node(shape_rid, JSON.parse_string(shape_state))
if node is Joint2D:
rid = node.get_rid()
Expand All @@ -74,19 +82,24 @@ func load_state() -> int:
RapierPhysicsServer2D.set_global_id(int(state["id"]))
return hash(JSON.stringify(state))


## Export the state to file
func export_state(file_name: String = "user://state.json"):
save_state(false)
FileAccess.open(file_name, FileAccess.WRITE).store_string(JSON.stringify(state, " "))


## Import the state from file
func import_state(file_name: String = "user://state.json"):
state = JSON.parse_string(FileAccess.open(file_name, FileAccess.READ).get_as_text())
load_state()


func _notification(what: int) -> void:
if what == NOTIFICATION_ENTER_TREE:
print("enter tree")
if what == NOTIFICATION_EXIT_TREE:
save_state(false)
FileAccess.open("user://save.json", FileAccess.WRITE).store_string(JSON.stringify(state, " "))
FileAccess.open("user://save.json", FileAccess.WRITE).store_string(
JSON.stringify(state, " ")
)
4 changes: 3 additions & 1 deletion scripts/lint.sh
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
cargo fmt --all -- --check
cargo fmt --all -- --check
gdlint bin2d/addons/godot-rapier2d/**.gd
gdlint bin3d/addons/godot-rapier3d/**.gd

0 comments on commit 1ba04ba

Please sign in to comment.