Beispiel #1
0
        private RFReceiver AttachRFReceiver(ModularCar car, int frequency = -1)
        {
            VehicleModuleSeating module = FindFirstDriverModule(car);

            if (module == null)
            {
                return(null);
            }

            var receiver = GameManager.server.CreateEntity(PrefabRfReceiver, module.transform.TransformPoint(RfReceiverPosition), module.transform.rotation * RfReceiverRotation) as RFReceiver;

            if (receiver == null)
            {
                return(null);
            }

            if (frequency == -1)
            {
                frequency = GenerateRandomFrequency();
            }

            receiver.frequency = frequency;

            SetupReceiver(receiver);
            receiver.Spawn();
            receiver.SetParent(module, worldPositionStays: true);

            return(receiver);
        }
        // Handle the case where a cockpit is removed but the car remains
        // If a lock is present, either move the lock to another cockpit or destroy it
        private void OnEntityKill(VehicleModuleSeating seatingModule)
        {
            if (seatingModule == null || !seatingModule.HasADriverSeat())
            {
                return;
            }

            var car = seatingModule.Vehicle as ModularCar;

            if (car == null)
            {
                return;
            }

            var codeLock = seatingModule.GetComponentInChildren <CodeLock>();

            if (codeLock == null)
            {
                NextTick(() =>
                {
                    if (car != null)
                    {
                        UIManager.UpdateCarUI(car);
                    }
                });
                return;
            }

            codeLock.SetParent(null);
            NextTick(() =>
            {
                if (car == null)
                {
                    return;
                }

                var driverModule = FindFirstDriverModule(car);
                if (driverModule != null)
                {
                    codeLock.SetParent(driverModule);
                }
                else
                {
                    codeLock.Kill();
                    UIManager.UpdateCarUI(car);
                }
            });
        }
 // Handle the case where a cockpit is added while a player is editing the car
 void OnEntitySpawned(VehicleModuleSeating seatingModule)
 {
     if (seatingModule == null || !seatingModule.HasADriverSeat())
     {
         return;
     }
     NextTick(() =>
     {
         var car = seatingModule.Vehicle as ModularCar;
         if (car == null)
         {
             return;
         }
         UIManager.UpdateCarUI(car);
     });
 }
        private CodeLock DeployCodeLock(ModularCar car, VehicleModuleSeating driverModule, ulong ownerID = 0)
        {
            var codeLock = GameManager.server.CreateEntity(CodeLockPrefab, CodeLockPosition, Quaternion.identity) as CodeLock;

            if (codeLock == null)
            {
                return(null);
            }

            if (ownerID != 0)
            {
                codeLock.OwnerID = ownerID;
            }

            codeLock.SetParent(driverModule);
            codeLock.Spawn();
            car.SetSlot(BaseEntity.Slot.Lock, codeLock);

            Effect.server.Run(CodeLockDeployedEffectPrefab, codeLock.transform.position);

            UIManager.UpdateCarUI(car);

            return(codeLock);
        }