fix: a lot of network sync fixes
This commit is contained in:
@@ -9,18 +9,18 @@ func build_ragdoll(color: Color) -> void:
|
||||
mat.roughness = 0.8
|
||||
|
||||
# Create bodies
|
||||
torso_body = _create_body(Vector3(0.4, 0.7, 0.25), mat, Vector3(0, 1.15, 0), 20.0)
|
||||
var head_body = _create_body(Vector3(0.25, 0.25, 0.25), mat, Vector3(0, 1.65, 0), 5.0)
|
||||
torso_body = _create_body(Vector3(0.4, 0.7, 0.25), mat, Vector3(0, 1.15, 0), 20.0, "Torso")
|
||||
var head_body = _create_body(Vector3(0.25, 0.25, 0.25), mat, Vector3(0, 1.65, 0), 5.0, "Head")
|
||||
|
||||
var upper_arm_l_body = _create_body(Vector3(0.12, 0.35, 0.12), mat, Vector3(-0.28, 1.275, 0), 3.0)
|
||||
var lower_arm_l_body = _create_body(Vector3(0.1, 0.35, 0.1), mat, Vector3(-0.28, 0.925, 0), 2.0)
|
||||
var upper_arm_r_body = _create_body(Vector3(0.12, 0.35, 0.12), mat, Vector3(0.28, 1.275, 0), 3.0)
|
||||
var lower_arm_r_body = _create_body(Vector3(0.1, 0.35, 0.1), mat, Vector3(0.28, 0.925, 0), 2.0)
|
||||
var upper_arm_l_body = _create_body(Vector3(0.12, 0.35, 0.12), mat, Vector3(-0.28, 1.275, 0), 3.0, "UpperArmL")
|
||||
var lower_arm_l_body = _create_body(Vector3(0.1, 0.35, 0.1), mat, Vector3(-0.28, 0.925, 0), 2.0, "LowerArmL")
|
||||
var upper_arm_r_body = _create_body(Vector3(0.12, 0.35, 0.12), mat, Vector3(0.28, 1.275, 0), 3.0, "UpperArmR")
|
||||
var lower_arm_r_body = _create_body(Vector3(0.1, 0.35, 0.1), mat, Vector3(0.28, 0.925, 0), 2.0, "LowerArmR")
|
||||
|
||||
var thigh_l_body = _create_body(Vector3(0.15, 0.45, 0.15), mat, Vector3(-0.12, 0.625, 0), 5.0)
|
||||
var calf_l_body = _create_body(Vector3(0.13, 0.45, 0.13), mat, Vector3(-0.12, 0.175, 0), 3.0)
|
||||
var thigh_r_body = _create_body(Vector3(0.15, 0.45, 0.15), mat, Vector3(0.12, 0.625, 0), 5.0)
|
||||
var calf_r_body = _create_body(Vector3(0.13, 0.45, 0.13), mat, Vector3(0.12, 0.175, 0), 3.0)
|
||||
var thigh_l_body = _create_body(Vector3(0.15, 0.45, 0.15), mat, Vector3(-0.12, 0.625, 0), 5.0, "ThighL")
|
||||
var calf_l_body = _create_body(Vector3(0.13, 0.45, 0.13), mat, Vector3(-0.12, 0.175, 0), 3.0, "CalfL")
|
||||
var thigh_r_body = _create_body(Vector3(0.15, 0.45, 0.15), mat, Vector3(0.12, 0.625, 0), 5.0, "ThighR")
|
||||
var calf_r_body = _create_body(Vector3(0.13, 0.45, 0.13), mat, Vector3(0.12, 0.175, 0), 3.0, "CalfR")
|
||||
|
||||
add_child(torso_body)
|
||||
add_child(head_body)
|
||||
@@ -33,6 +33,21 @@ func build_ragdoll(color: Color) -> void:
|
||||
add_child(thigh_r_body)
|
||||
add_child(calf_r_body)
|
||||
|
||||
var is_server = not multiplayer.has_multiplayer_peer() or multiplayer.is_server()
|
||||
var rep = SceneReplicationConfig.new()
|
||||
for child in get_children():
|
||||
if child is RigidBody3D:
|
||||
rep.add_property(NodePath(str(child.name) + ":position"))
|
||||
rep.add_property(NodePath(str(child.name) + ":rotation"))
|
||||
if not is_server:
|
||||
child.freeze = true
|
||||
child.freeze_mode = RigidBody3D.FREEZE_MODE_KINEMATIC
|
||||
|
||||
var sync = MultiplayerSynchronizer.new()
|
||||
sync.name = "RagdollSync"
|
||||
sync.replication_config = rep
|
||||
add_child(sync)
|
||||
|
||||
# Need to wait a frame for paths to be valid before creating joints
|
||||
call_deferred("_setup_joints", head_body,
|
||||
upper_arm_l_body, lower_arm_l_body,
|
||||
@@ -76,8 +91,9 @@ func apply_initial_velocities(linear_vel: Vector3, impulse: Vector3) -> void:
|
||||
if is_instance_valid(torso_body):
|
||||
torso_body.apply_central_impulse(impulse * 2.0)
|
||||
|
||||
func _create_body(size: Vector3, mat: Material, pos: Vector3, mass: float) -> RigidBody3D:
|
||||
func _create_body(size: Vector3, mat: Material, pos: Vector3, mass: float, bname: String) -> RigidBody3D:
|
||||
var body = RigidBody3D.new()
|
||||
body.name = bname
|
||||
body.position = pos
|
||||
body.mass = mass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user