summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnson Bridges <bridges.anson@gmail.com>2022-09-22 08:24:37 -0400
committerAnson Bridges <bridges.anson@gmail.com>2022-09-22 08:24:37 -0400
commit62039380a67b6da396d1c8d745d2e2625ba988fc (patch)
tree59141eb09d8f68fe87f9d263dd33dd3fd4830724
parent123c1a2d9a5034902468b9f3ae5a139fff5c2f95 (diff)
network lag? camera and movement controller merged to same gdnative script
-rw-r--r--godot/bin/playercam._gdnlib (renamed from godot/bin/playercam.gdnlib)0
-rw-r--r--godot/bin/playercam.gdns2
-rw-r--r--godot/bin/playercontroller.gdnlib14
-rw-r--r--godot/bin/playercontroller.gdns8
-rwxr-xr-xgodot/bin/x11/libplayercontroller.sobin0 -> 5260784 bytes
-rw-r--r--godot/maps/Main.tscn133
-rw-r--r--godot/scenes/GameBase.tscn2
-rw-r--r--godot/scripts/GameBase.gd6
-rw-r--r--godot/scripts/characters/player_controller_new.gd1
-rw-r--r--godot/ui/HUD.gd1
-rw-r--r--src/player_controller/.sconsign.dblitebin27268 -> 44397 bytes
-rw-r--r--src/player_controller/gdlibrary.osbin406904 -> 243200 bytes
-rw-r--r--src/player_controller/playercam.osbin413784 -> 248864 bytes
-rw-r--r--src/player_controller/playercontroller.cpp44
-rw-r--r--src/player_controller/playercontroller.osbin0 -> 578072 bytes
15 files changed, 170 insertions, 41 deletions
diff --git a/godot/bin/playercam.gdnlib b/godot/bin/playercam._gdnlib
index 105b98f..105b98f 100644
--- a/godot/bin/playercam.gdnlib
+++ b/godot/bin/playercam._gdnlib
diff --git a/godot/bin/playercam.gdns b/godot/bin/playercam.gdns
index a3ca832..46fa989 100644
--- a/godot/bin/playercam.gdns
+++ b/godot/bin/playercam.gdns
@@ -1,6 +1,6 @@
[gd_resource type="NativeScript" load_steps=2 format=2]
-[ext_resource path="res://bin/playercam.gdnlib" type="GDNativeLibrary" id=1]
+[ext_resource path="res://bin/playercontroller.gdnlib" type="GDNativeLibrary" id=1]
[resource]
resource_name = "playercam"
diff --git a/godot/bin/playercontroller.gdnlib b/godot/bin/playercontroller.gdnlib
new file mode 100644
index 0000000..e252d30
--- /dev/null
+++ b/godot/bin/playercontroller.gdnlib
@@ -0,0 +1,14 @@
+[general]
+
+singleton=false
+load_once=true
+symbol_prefix="godot_"
+reloadable=true
+
+[entry]
+
+X11.64="res://bin/x11/libplayercontroller.so"
+
+[dependencies]
+
+X11.64=[ ]
diff --git a/godot/bin/playercontroller.gdns b/godot/bin/playercontroller.gdns
new file mode 100644
index 0000000..eaf0649
--- /dev/null
+++ b/godot/bin/playercontroller.gdns
@@ -0,0 +1,8 @@
+[gd_resource type="NativeScript" load_steps=2 format=2]
+
+[ext_resource path="res://bin/playercontroller.gdnlib" type="GDNativeLibrary" id=1]
+
+[resource]
+resource_name = "playercontroller"
+class_name = "PlayerController"
+library = ExtResource( 1 )
diff --git a/godot/bin/x11/libplayercontroller.so b/godot/bin/x11/libplayercontroller.so
new file mode 100755
index 0000000..7297917
--- /dev/null
+++ b/godot/bin/x11/libplayercontroller.so
Binary files differ
diff --git a/godot/maps/Main.tscn b/godot/maps/Main.tscn
index 2575195..ce69f18 100644
--- a/godot/maps/Main.tscn
+++ b/godot/maps/Main.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=24 format=2]
+[gd_scene load_steps=23 format=2]
[ext_resource path="res://scripts/World.gd" type="Script" id=1]
[ext_resource path="res://scenes/machines/Cannon.tscn" type="PackedScene" id=2]
@@ -13,7 +13,6 @@
[ext_resource path="res://scenes/environment/Ladder.tscn" type="PackedScene" id=12]
[ext_resource path="res://scenes/worldprops/Runway.tscn" type="PackedScene" id=13]
[ext_resource path="res://scenes/vehicles/Airplane.tscn" type="PackedScene" id=14]
-[ext_resource path="res://scenes/vehicles/Gunbrig.tscn" type="PackedScene" id=15]
[sub_resource type="PhysicsMaterial" id=17]
resource_local_to_scene = true
@@ -93,21 +92,6 @@ transform = Transform( -0.854422, 0, 0.519579, 0, 1, 0, -0.519579, 0, -0.854422,
[node name="Airplane" parent="MACHINES" instance=ExtResource( 14 )]
transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 30.8999, 5.13129, -8.23008 )
-[node name="Gunbrig" parent="MACHINES" instance=ExtResource( 15 )]
-transform = Transform( 0.0568323, 0, -0.998384, 0, 1, 0, 0.998384, 0, 0.0568323, -34.0193, 0.974679, -14.3304 )
-
-[node name="Gunbrig2" parent="MACHINES" instance=ExtResource( 15 )]
-transform = Transform( 0.0568323, 0, -0.998384, 0, 1, 0, 0.998384, 0, 0.0568323, -47.9628, 0.974679, -14.3304 )
-
-[node name="Gunbrig3" parent="MACHINES" instance=ExtResource( 15 )]
-transform = Transform( 0.0568323, 0, -0.998384, 0, 1, 0, 0.998384, 0, 0.0568323, -64.1506, 0.974679, -14.3304 )
-
-[node name="Gunbrig4" parent="MACHINES" instance=ExtResource( 15 )]
-transform = Transform( 0.0568323, 0, -0.998384, 0, 1, 0, 0.998384, 0, 0.0568323, -76.9425, 0.974679, -14.3304 )
-
-[node name="Gunbrig5" parent="MACHINES" instance=ExtResource( 15 )]
-transform = Transform( 0.0568323, 0, -0.998384, 0, 1, 0, 0.998384, 0, 0.0568323, -90.1824, 0.974679, -14.3304 )
-
[node name="BALLISTICS" type="Spatial" parent="."]
[node name="PLAYERS" type="Spatial" parent="."]
@@ -158,6 +142,121 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.30355, 7.43823, -0.851583 )
physics_material_override = SubResource( 19 )
can_sleep = false
+[node name="Player14" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2.95018, 7.43823, -0.851583 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player15" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2.95018, 7.43823, -3.20183 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player16" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2.87781, 7.43823, -3.20183 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player17" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2.87781, 7.43823, 3.13773 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player18" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7.0239, 7.43823, 3.13773 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player19" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7.0239, 7.43823, -0.817495 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player20" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.12393, 7.43823, -0.224145 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player21" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.12393, 7.43823, 2.2347 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player22" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.38949, 7.43823, 0.619112 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player23" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.38949, 7.43823, 5.61911 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player24" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6.42406, 7.43823, 4.66007 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player25" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.20856, 7.43823, 7.0694 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player26" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -9.76747, 7.43823, 4.50223 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player27" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -11.5136, 7.43823, 6.91273 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player28" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6.33851, 7.43823, 11.0765 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player29" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.96565, 7.43823, 8.55268 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player30" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96565, 7.43823, 9.55268 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player31" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -12.9657, 7.43823, 2.55268 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player32" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.41254, 7.43823, -1.05999 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player33" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.376633, 7.43823, 6.84529 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player34" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2.14765, 7.43823, 12.3432 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player35" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.14397, 7.43823, 13.8279 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
+[node name="Player36" parent="PLAYERS" instance=ExtResource( 5 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4609, 7.43823, 15.8727 )
+physics_material_override = SubResource( 19 )
+can_sleep = false
+
[node name="Player6" parent="PLAYERS" instance=ExtResource( 5 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.47871, 6.03278, -0.287899 )
physics_material_override = SubResource( 19 )
diff --git a/godot/scenes/GameBase.tscn b/godot/scenes/GameBase.tscn
index 2f603e2..6764b81 100644
--- a/godot/scenes/GameBase.tscn
+++ b/godot/scenes/GameBase.tscn
@@ -3,7 +3,7 @@
[ext_resource path="res://scenes/environment/Water.tscn" type="PackedScene" id=1]
[ext_resource path="res://ui/HUD.tscn" type="PackedScene" id=2]
[ext_resource path="res://scripts/GameBase.gd" type="Script" id=3]
-[ext_resource path="res://bin/playercam.gdns" type="Script" id=4]
+[ext_resource path="res://scripts/cameras/PlayerCamGDS.gd" type="Script" id=4]
[node name="GAMEWORLD" type="Spatial"]
script = ExtResource( 3 )
diff --git a/godot/scripts/GameBase.gd b/godot/scripts/GameBase.gd
index 89d457b..cff8bf4 100644
--- a/godot/scripts/GameBase.gd
+++ b/godot/scripts/GameBase.gd
@@ -114,3 +114,9 @@ func get_client_id() -> int:
func is_chatting_f() -> bool:
return is_chatting
+
+func get_players_info(id: int, index: int) -> String:
+ return players_info[id][index]
+
+func set_player_char(character: RigidBody) -> void:
+ player_char = character
diff --git a/godot/scripts/characters/player_controller_new.gd b/godot/scripts/characters/player_controller_new.gd
index bc41842..a6a0827 100644
--- a/godot/scripts/characters/player_controller_new.gd
+++ b/godot/scripts/characters/player_controller_new.gd
@@ -188,6 +188,7 @@ func _integrate_forces(state: PhysicsDirectBodyState) -> void:
rpc("damage", 500000, "drown", [1, "Davy Jones"])
func walk(_delta: float) -> void:
+ return
# Input
direction = Vector3()
var aim: Basis = head.get_global_transform().basis
diff --git a/godot/ui/HUD.gd b/godot/ui/HUD.gd
index 9bbcae1..6c45113 100644
--- a/godot/ui/HUD.gd
+++ b/godot/ui/HUD.gd
@@ -69,6 +69,7 @@ func update_characters():
for btn in character_list.get_children():
btn.queue_free()
for character in world.get_node("PLAYERS").get_children():
+ print(character.team)
if world.player_team == character.team:
var select_button = Button.new()
select_button.connect("pressed", world, "select_character", [character.name])
diff --git a/src/player_controller/.sconsign.dblite b/src/player_controller/.sconsign.dblite
index 577a41d..fdbad93 100644
--- a/src/player_controller/.sconsign.dblite
+++ b/src/player_controller/.sconsign.dblite
Binary files differ
diff --git a/src/player_controller/gdlibrary.os b/src/player_controller/gdlibrary.os
index c984489..c357e6f 100644
--- a/src/player_controller/gdlibrary.os
+++ b/src/player_controller/gdlibrary.os
Binary files differ
diff --git a/src/player_controller/playercam.os b/src/player_controller/playercam.os
index 2b88b46..629e608 100644
--- a/src/player_controller/playercam.os
+++ b/src/player_controller/playercam.os
Binary files differ
diff --git a/src/player_controller/playercontroller.cpp b/src/player_controller/playercontroller.cpp
index 6ea5544..e14aa5e 100644
--- a/src/player_controller/playercontroller.cpp
+++ b/src/player_controller/playercontroller.cpp
@@ -126,7 +126,7 @@ void PlayerController::set_net_owner(int owner_id) {
nametag->set_text("");
set_network_master(owner_id);
if(owner_id != 1)
- nametag->set_text(String(world->call("get_players_info")[owner_id][0]));
+ nametag->set_text(String(world->call("get_players_info", owner_id, 0)));
if(get_tree()->get_network_unique_id() != 1){
if(owner_id == (int)world->call("get_client_id")){
nametag->set_visible(false);
@@ -143,7 +143,7 @@ void PlayerController::set_net_owner(int owner_id) {
void PlayerController::deselect_character() {
if(is_network_master()){
- world->call("set_player_char", nullptr);
+ world->call("set_player_char", "NULL");
if((int)world->call("get_client_id") != 1)cam->attach(world, "STATIC", "./DEFAULTCAM");
rpc("set_net_owner", 1);
}
@@ -177,12 +177,12 @@ bool PlayerController::on_floor_test() {
if(feet->is_colliding()){
is_on_floor = true;
floor_normal = Vector3::UP;
- floorspeed = feet->get_collider()->has_method("get_linear_velocity") ? feet->get_collider()->get_linear_velocity() : Vector3::ZERO;
+ floorspeed = feet->get_collider()->has_method("get_linear_velocity") ? ((RigidBody *)(feet->get_collider()))->get_linear_velocity() : Vector3::ZERO;
return true;
}
if(player_state){
- for(int i = 0;i< player_state->get_contact_count()) {
- float contact_angle_from_up = Vector3::UP.angle_to(player_state->get_contact_local_normal(i))
+ for(int i = 0;i< player_state->get_contact_count(); i++) {
+ float contact_angle_from_up = Vector3::UP.angle_to(player_state->get_contact_local_normal(i));
if(contact_angle_from_up < FLOOR_MAX_ANGLE) {
floor_normal = player_state->get_contact_local_normal(i);
is_on_floor = true;
@@ -203,12 +203,12 @@ void PlayerController::_integrate_forces(PhysicsDirectBodyState *state) {
set_friction(0);
break;
}
- if(i == player_state.get_contact_count() - 1)
+ if(i == (player_state->get_contact_count() - 1))
set_friction(1);
}
rpc("set_phys_transform", get_transform(), get_linear_velocity());
if(get_global_transform().origin.y < -30)
- rpc("damage", 500000, "drown", Array::make(1, String("Davy Jones"));
+ rpc("damage", 500000, "drown", Array::make(1, String("Davy Jones")));
}
void PlayerController::walk(float _delta) {
@@ -236,15 +236,15 @@ void PlayerController::walk(float _delta) {
void PlayerController::jump() {
can_jump = false;
- apply_central_impulse(Vector3.UP*jump_height);
- yield(get_tree().create_timer(0.05),"timeout");
+ apply_central_impulse(Vector3::UP*jump_height);
+ //Godot::yield(get_tree().create_timer(0.05),"timeout");
can_jump = true;
}
void PlayerController::swim(float _delta) {
// #drag and buoyancy
- add_central_force(Vector3::UP*weight);
- add_central_force(-100*linear_velocity);
+ add_central_force(Vector3::UP*get_weight());
+ add_central_force(-100*get_linear_velocity());
// #controls
Basis dir = head->get_global_transform().basis;
Vector3 m_dir = -move_axis.x * dir.z + move_axis.y * dir.x;
@@ -262,32 +262,32 @@ void PlayerController::exit_water() {
}
void PlayerController::mount_ladder(Spatial *target_ladder) {
- Spatial *ladder_tracker = Spatial::new();
- ladder_tracker->name = get_name();
+ Spatial *ladder_tracker = Spatial::_new();
+ ladder_tracker->set_name(get_name());
target_ladder->add_child(ladder_tracker);
- ladder_tracker->set_transform(target_ladder->get_node<Spatial>("BOTTOM")->get_transform();
+ ladder_tracker->set_transform(target_ladder->get_node<Spatial>("BOTTOM")->get_transform());
- ladder_tracker->set_global_transform( Transform(target_ladder->call("get_nearest_point_to_route", get_global_transform().origin), ladder_tracker->get_global_transform().basis ) );
- look_at(get_global_transform().origin + target_ladder->get_global_transform().basis.x, target_ladder->get_global_transform().basis.y)
+ ladder_tracker->set_global_transform( Transform( ladder_tracker->get_global_transform().basis, (Vector3)target_ladder->call("get_nearest_point_to_route", get_global_transform().origin)) );
+ look_at(get_global_transform().origin + target_ladder->get_global_transform().basis.x, target_ladder->get_global_transform().basis.y);
ladder_m = ladder_tracker;
Transform t = ladder_m->get_global_transform();
- set_global_transform( Transform(t.origin, t.basis.orthonormalized()));
+ set_global_transform( Transform(t.basis.orthonormalized(), t.origin));
set_linear_velocity(Vector3::ZERO);
set_gravity_scale(0.0);
}
void PlayerController::climb_ladder(float delta) {
Vector3 new_ladder_pos = ladder_m->get_global_transform().origin + ladder_m->get_global_transform().basis.y.normalized() * move_axis.x * delta * climb_speed;
- float prog = ladder_m->get_parent()->call("get_climb_scalar", new_ladder_pos)
- if(prog >= 0.0 and && <= 1.0)
- ladder_m->set_global_transform(Transform(new_ladder_pos, ladder_m->get_global_transform().basis));
+ float prog = ladder_m->get_parent()->call("get_climb_scalar", new_ladder_pos);
+ if(prog >= 0.0 && prog <= 1.0)
+ ladder_m->set_global_transform(Transform(ladder_m->get_global_transform().basis, new_ladder_pos));
Transform t = ladder_m->get_global_transform();
- set_global_transform( Transform(t.origin, t.basis.orthonormalized()));
+ set_global_transform( Transform(t.basis.orthonormalized(), t.origin ));
}
void PlayerController::leave_ladder() {
- if((ladder_m->get_parent()->get_node<Spatial>("TOP")->global_transform.origin - get_global_transform().origin).length_squared() < 0.01)
+ if((ladder_m->get_parent()->get_node<Spatial>("TOP")->get_global_transform().origin - get_global_transform().origin).length_squared() < 0.01)
apply_central_impulse(-400*ladder_m->get_global_transform().basis.z);
Transform t = get_global_transform();
t.basis = world->get_global_transform().basis;
diff --git a/src/player_controller/playercontroller.os b/src/player_controller/playercontroller.os
new file mode 100644
index 0000000..9630000
--- /dev/null
+++ b/src/player_controller/playercontroller.os
Binary files differ