IEnumerator WaitBeforePushDown(Vehicle vehicle, VehicleDockingBay vehicleDockingBay)
        {
            yield return(new WaitForSeconds(6.0f));

            vehicleDockingBay.SetVehicleUndocked();
            vehicleDockingBay.ReflectionSet("vehicle_docked_param", false);
            vehicleDockingBay.ReflectionSet("_dockedVehicle", null);
            vehicle.docked = false;
            vehicle.useRigidbody.AddForce(Vector3.down * 5f, ForceMode.VelocityChange);
        }
Beispiel #2
0
        private void FinishVehicleUndocking(VehicleUndocking packet, Vehicle vehicle, VehicleDockingBay vehicleDockingBay)
        {
            if (vehicleDockingBay.GetSubRoot().isCyclops)
            {
                vehicleDockingBay.SetVehicleUndocked();
            }
            vehicleDockingBay._dockedVehicle = null;
            vehicleDockingBay.CancelInvoke("RepairVehicle");
            vehicle.docked = false;
            Optional <RemotePlayer> player = remotePlayerManager.Find(packet.PlayerId);

            if (player.HasValue)
            {
                // Sometimes the player is not set accordingly which stretches the player's model instead of putting them in place
                // after undocking. This fixes it (the player rigid body seems to not be set right sometimes)
                player.Value.SetSubRoot(null);
                player.Value.SetVehicle(null);
                player.Value.SetVehicle(vehicle);
            }
            vehicles.SetOnPilotMode(packet.VehicleId, packet.PlayerId, true);
            Log.Debug($"Set vehicle undocking complete");
        }