public void BroadcastDestroyedVehicle(Vehicle vehicle) { using (packetSender.Suppress <VehicleOnPilotModeChanged>()) { string guid = GuidHelper.GetGuid(vehicle.gameObject); LocalPlayer localPlayer = NitroxServiceLocator.LocateService <LocalPlayer>(); VehicleDestroyed vehicleDestroyed = new VehicleDestroyed(guid, localPlayer.PlayerName, vehicle.GetPilotingMode()); packetSender.Send(vehicleDestroyed); // Remove vehicle guid (Detach Player From Vehicle Call OnPilotMode Event if Guid is Empty Dont Send That Event) GuidHelper.SetNewGuid(vehicle.gameObject, string.Empty); // If there is a pilotId then there is a remote player. We must // detach the remote player before destroying the game object. if (!string.IsNullOrEmpty(vehicle.pilotId)) { ushort pilot = ushort.Parse(vehicle.pilotId); Optional <RemotePlayer> remotePilot = playerManager.Find(pilot); if (remotePilot.IsPresent()) { RemotePlayer remotePlayer = remotePilot.Get(); remotePlayer.SetVehicle(null); remotePlayer.SetSubRoot(null); remotePlayer.SetPilotingChair(null); remotePlayer.AnimationController.UpdatePlayerAnimations = true; } } } }
public void BroadcastDestroyedVehicle(Vehicle vehicle) { using (packetSender.Suppress <VehicleOnPilotModeChanged>()) { NitroxId id = NitroxEntity.GetId(vehicle.gameObject); LocalPlayer localPlayer = NitroxServiceLocator.LocateService <LocalPlayer>(); VehicleDestroyed vehicleDestroyed = new VehicleDestroyed(id, localPlayer.PlayerName, vehicle.GetPilotingMode()); packetSender.Send(vehicleDestroyed); // If there is a pilotId then there is a remote player. We must // detach the remote player before destroying the game object. if (!string.IsNullOrEmpty(vehicle.pilotId)) { ushort pilot = ushort.Parse(vehicle.pilotId); Optional <RemotePlayer> remotePilot = playerManager.Find(pilot); if (remotePilot.HasValue) { RemotePlayer remotePlayer = remotePilot.Value; remotePlayer.SetVehicle(null); remotePlayer.SetSubRoot(null); remotePlayer.SetPilotingChair(null); remotePlayer.AnimationController.UpdatePlayerAnimations = true; } } } }
protected void OnVehicleDestroyed(EventArgs e) { VehicleDestroyed?.Invoke(this, e); }