Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
                    }
                }
            }
        }