public bool Receive(TrainCarInformationPacket packet, ClientId client) { var player = MultiPlayerManager.Instance.RemotePlayers[client]; Logger.LogInfo($"Spawning remote car {packet.CarType} at {packet.Position} moved by {WorldMover.currentMove} for {player}"); var prefab = CarTypes.GetCarPrefab(packet.CarType); var(rail, _) = RailTrack.GetClosest(packet.Position + WorldMover.currentMove); TrainCar train; using (SpawningCar) train = CarSpawner.SpawnCar(prefab, rail, packet.Position + WorldMover.currentMove, packet.Forward); if (train.GetComponent <LocoControllerShunter>()) { train.gameObject.AddComponent <LocoStateShunterSync>().Init(packet.Id); } //else if (train.GetComponent<LocoControllerDiesel>()) train.gameObject.AddComponent<LocoStateDieselSync>().Init(packet.Id); //else if (train.GetComponent<LocoControllerSteam>()) train.gameObject.AddComponent<LocoStateHandcarSync>().Init(packet.Id); //else if (train.GetComponent<LocoControllerHandcar>()) train.gameObject.AddComponent<LocoStateHandcarSync>().Init(packet.Id); //else if (train.GetComponent<LocoControllerBase>()) train.gameObject.AddComponent<LocoStateSync>().Init(packet.Id); else { train.gameObject.AddComponent <TrainCarSync>().Init(packet.Id); } train.logicCar.ID = packet.Name; train.trainPlatesCtrl.trainCarPlates.ForEach(plate => plate.id.text = packet.Name); return(true); }
public void SpawnTriggerEntered() { roadSpawner.MoveRoad(); carSpawner.SpawnCar(); pickUpSpawner.SpawnPickUp(); environmentSpawner.SpawnTile(); enemySpawner.SpawnEnemy(); }
void UpdateCars() { CarTimer += Time.deltaTime; if (CarTimer < CarDelay) { return; } CarTimer -= CarDelay; Car car = CarSpawner.SpawnCar(); car.OnCollision = OnCarCollision; }
public override void OnInspectorGUI() { DrawDefaultInspector(); if (!EditorApplication.isPlaying) { return; } GUILayout.Space(20); if (GUILayout.Button("Spawn")) { CarSpawner.SpawnCar(); } }
public void OnUse() { switch (state) { case State.EnterSpawnMode: SetCarToSpawn(Main.CustomCarManagerInstance.CustomCarsToSpawn[selectedCarTypeIndex]); SetState(State.PickCar); break; case State.PickCar: if (carPrefabToSpawn == null) { Debug.LogError("carPrefabToSpawn is null! Something is wrong, can't spawn this car.", this); ClearFlags(); break; } if (canSpawnAtPoint) { SetState(State.PickDestination); CommsRadioController.PlayAudioFromRadio(confirmSound, transform); break; } ClearFlags(); CommsRadioController.PlayAudioFromRadio(cancelSound, transform); break; case State.PickDestination: if (canSpawnAtPoint) { var forward = closestPointOnDestinationTrack.Value.forward; if (!spawnWithTrackDirection) { forward = -forward; } var trainCar = CarSpawner.SpawnCar(carPrefabToSpawn, destinationTrack, (Vector3)closestPointOnDestinationTrack.Value.position + WorldMover.currentMove, forward, true); if (trainCar != null) { SingletonBehaviour <UnusedTrainCarDeleter> .Instance.MarkForDelete(trainCar); CommsRadioController.PlayAudioFromCar(spawnVehicleSound, trainCar); CommsRadioController.PlayAudioFromRadio(confirmSound, transform); canSpawnAtPoint = false; Main.CustomCarManagerInstance.CustomCarsToSpawn[selectedCarTypeIndex].Spawn(trainCar); break; } Debug.LogError("Couldn't spawn car!", carPrefabToSpawn); ClearFlags(); break; } ClearFlags(); CommsRadioController.PlayAudioFromRadio(cancelSound, transform); break; } }