Repository navigation
Expand file tree
/
Copy pathnetwork_physics.gd
More file actions
58 lines (41 loc) · 1.69 KB
/
Copy pathnetwork_physics.gd
File metadata and controls
58 lines (41 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
extends NetworkLogic
class_name NetworkPhysics
tool
const math_funcs_const = preload("res://addons/math_util/math_funcs.gd")
const network_entity_manager_const = preload("res://addons/network_manager/network_entity_manager.gd")
signal mass_changed(p_mass)
func on_serialize(p_writer: network_writer_const, p_initial_state: bool) -> network_writer_const:
var physics_node_root = entity_node.simulation_logic_node.physics_node_root
if p_initial_state:
p_writer.put_float(physics_node_root.mass)
var sleeping: bool = (
physics_node_root.sleeping
or physics_node_root.mode != RigidBody.MODE_RIGID
)
p_writer.put_8(sleeping)
if ! sleeping:
var linear_velocity: Vector3 = physics_node_root.linear_velocity
var angular_velocity: Vector3 = physics_node_root.angular_velocity
p_writer.put_vector3(linear_velocity)
p_writer.put_vector3(angular_velocity)
return p_writer
func on_deserialize(p_reader: network_reader_const, p_initial_state: bool) -> network_reader_const:
received_data = true
var physics_node_root = entity_node.simulation_logic_node.physics_node_root
if p_initial_state:
physics_node_root.mass = p_reader.get_float()
var sleeping: bool = p_reader.get_8()
physics_node_root.sleeping = sleeping
var linear_velocity: Vector3 = Vector3()
var angular_velocity: Vector3 = Vector3()
if ! sleeping:
linear_velocity = math_funcs_const.sanitise_vec3(p_reader.get_vector3())
angular_velocity = math_funcs_const.sanitise_vec3(p_reader.get_vector3())
physics_node_root.linear_velocity = linear_velocity
physics_node_root.angular_velocity = angular_velocity
return p_reader
func _entity_ready() -> void:
._entity_ready()
if ! Engine.is_editor_hint():
if received_data:
pass