public static void SendDocked(VehicleDockingBay bay, Vehicle vehicle, bool status) { if (bay == null || vehicle == null || Multiplayer.main.blocked) { return; } var sync = vehicle.GetComponent <SyncedVehicle>(); if (sync != null && sync.activePlayer != null) { return; } var res = new ClientVehicleDocking(); res.id = Multiplayer.main.self.id; res.vehicleGuid = GuidHelper.Get(vehicle.gameObject); res.bayGuid = GuidHelper.Get(bay.gameObject); res.subGuid = GuidHelper.Get(bay.subRoot?.gameObject); res.bayPosition = bay.transform.position; res.docked = status; Multiplayer.main.Send(res); }
private void Process(Client client, ClientVehicleDocking msg) { msg.id = client.id; SavedVehicle vehicle; if (state.history.vehicles.TryGetValue(msg.vehicleGuid, out vehicle)) { if (msg.docked) { vehicle.docking = msg; } else { vehicle.docking = null; } SendToAll(client.peer, msg); } }
private void Process(ClientVehicleDocking msg) { var vehicle = GuidHelper.FindComponent <Vehicle>(msg.vehicleGuid); if (vehicle == null) { Log.Info("Couldn't find vehicle."); return; } var bay = FindDockingBay(msg.bayGuid, msg.subGuid, msg.bayPosition); using (new MessageBlocker()) { if (msg.docked) { if (bay != null && bay.GetDockedVehicle() == null) { /* * bay.ReflectionSet("timeDockingStarted", Time.time); * * if (vehicle is Exosuit) { * vehicle.transform.position = bay.dockingEndPosExo.position; * vehicle.transform.rotation = bay.dockingEndPosExo.rotation; * } else { * vehicle.transform.position = bay.dockingEndPos.position; * vehicle.transform.rotation = bay.dockingEndPos.rotation; * } * * bay.DockVehicle(vehicle, false); * * Log.Info("Vehicle docked."); */ bay.SetVehicleDocked(vehicle); } } } }