private void Awake() { lastMessage = new Message_ExtLight(false, false, false, networkUID); lightsController = GetComponentInChildren <ExteriorLightsController>(); traverse = Traverse.Create(lightsController.navLights[0]); traverse2 = Traverse.Create(lightsController.landingLights[0]); }
public static GameObject SpawnRepresentation(ulong networkID, Vector3D position, Quaternion rotation, bool isLeft) { if (networkID == localUID) { return(null); } int playerID = FindPlayerIDFromNetworkUID(networkID); if (playerID == -1) { Debug.LogError("Spawn Representation couldn't find a player id."); } Player player = players[playerID]; if (player.vehicle != null) { GameObject.Destroy(player.vehicle); } GameObject newVehicle = null; switch (player.vehicleType) { case VTOLVehicles.None: Debug.LogError("Vehcile Enum seems to be none, couldn't spawn player vehicle"); return(null); case VTOLVehicles.AV42C: if (null == av42cPrefab) { SetPrefabs(); } newVehicle = GameObject.Instantiate(av42cPrefab, VTMapManager.GlobalToWorldPoint(position), rotation); break; case VTOLVehicles.FA26B: if (null == fa26bPrefab) { SetPrefabs(); } newVehicle = GameObject.Instantiate(fa26bPrefab, VTMapManager.GlobalToWorldPoint(position), rotation); break; case VTOLVehicles.F45A: if (null == f45Prefab) { SetPrefabs(); } newVehicle = GameObject.Instantiate(f45Prefab, VTMapManager.GlobalToWorldPoint(position), rotation); break; } //Debug.Log("Setting vehicle name"); newVehicle.name = $"Client [{player.cSteamID}]"; Debug.Log($"Spawned new vehicle at {newVehicle.transform.position}"); if (Networker.isHost) { HealthNetworker_Receiver healthNetworker = newVehicle.AddComponent <HealthNetworker_Receiver>(); healthNetworker.networkUID = networkID; } else { HealthNetworker_ReceiverHostEnforced healthNetworker = newVehicle.AddComponent <HealthNetworker_ReceiverHostEnforced>(); healthNetworker.networkUID = networkID; } RigidbodyNetworker_Receiver rbNetworker = newVehicle.AddComponent <RigidbodyNetworker_Receiver>(); rbNetworker.networkUID = networkID; PlaneNetworker_Receiver planeReceiver = newVehicle.AddComponent <PlaneNetworker_Receiver>(); planeReceiver.networkUID = networkID; if (player.vehicleType == VTOLVehicles.AV42C || player.vehicleType == VTOLVehicles.F45A) { //Debug.Log("Adding Tilt Controller to this vehicle " + message.networkID); EngineTiltNetworker_Receiver tiltReceiver = newVehicle.AddComponent <EngineTiltNetworker_Receiver>(); tiltReceiver.networkUID = networkID; } Rigidbody rb = newVehicle.GetComponent <Rigidbody>(); AIPilot aIPilot = newVehicle.GetComponent <AIPilot>(); RotationToggle wingRotator = aIPilot.wingRotator; if (wingRotator != null) { WingFoldNetworker_Receiver wingFoldReceiver = newVehicle.AddComponent <WingFoldNetworker_Receiver>(); wingFoldReceiver.networkUID = networkID; wingFoldReceiver.wingController = wingRotator; } LockingRadar lockingRadar = newVehicle.GetComponentInChildren <LockingRadar>(); if (lockingRadar != null) { Debug.Log($"Adding LockingRadarReciever to vehicle {newVehicle.name}"); LockingRadarNetworker_Receiver lockingRadarReceiver = newVehicle.AddComponent <LockingRadarNetworker_Receiver>(); lockingRadarReceiver.networkUID = networkID; } ExteriorLightsController extLight = newVehicle.GetComponentInChildren <ExteriorLightsController>(); if (extLight != null) { ExtLight_Receiver extLightReceiver = newVehicle.AddComponent <ExtLight_Receiver>(); extLightReceiver.lightsController = extLight; extLightReceiver.networkUID = networkID; } aIPilot.enabled = false; Debug.Log($"Changing {newVehicle.name}'s position and rotation\nPos:{rb.position} Rotation:{rb.rotation.eulerAngles}"); aIPilot.kPlane.SetToKinematic(); aIPilot.kPlane.enabled = false; rb.interpolation = RigidbodyInterpolation.None; aIPilot.kPlane.enabled = true; aIPilot.kPlane.SetVelocity(Vector3.zero); aIPilot.kPlane.SetToDynamic(); rb.interpolation = RigidbodyInterpolation.Interpolate; Debug.Log($"Finished changing {newVehicle.name}\n Pos:{rb.position} Rotation:{rb.rotation.eulerAngles}"); AvatarManager.SetupAircraftRoundels(newVehicle.transform, player.vehicleType, player.cSteamID, Vector3.zero); GameObject parent = new GameObject("Name Tag Holder"); GameObject nameTag = new GameObject("Name Tag"); parent.transform.SetParent(newVehicle.transform); parent.transform.localRotation = Quaternion.Euler(0, 180, 0); nameTag.transform.SetParent(parent.transform); nameTag.AddComponent <Nametag>().SetText( SteamFriends.GetFriendPersonaName(player.cSteamID), newVehicle.transform, VRHead.instance.transform); if (isLeft != PlayerManager.teamLeftie) { aIPilot.actor.team = Teams.Enemy; } TargetManager.instance.RegisterActor(aIPilot.actor); player.leftie = isLeft; player.vehicle = newVehicle; if (!VTOLVR_Multiplayer.AIDictionaries.allActors.ContainsKey(networkID)) { VTOLVR_Multiplayer.AIDictionaries.allActors[networkID] = aIPilot.actor; VTOLVR_Multiplayer.AIDictionaries.reverseAllActors[aIPilot.actor] = networkID; } else { VTOLVR_Multiplayer.AIDictionaries.allActors.Remove(networkID); VTOLVR_Multiplayer.AIDictionaries.reverseAllActors.Remove(aIPilot.actor); VTOLVR_Multiplayer.AIDictionaries.allActors[networkID] = aIPilot.actor; VTOLVR_Multiplayer.AIDictionaries.reverseAllActors[aIPilot.actor] = networkID; } return(newVehicle); }