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); }