//In theory, this should sync devices between server and client. In practice, I worry there may be a race condition, so, watch out for that I guess. /// <summary> /// Function to update devices from observed slots in storage. Mostly used on client. /// </summary> public void UpdateDevices() { hackProcess.RemoveAllDevices(); foreach (ItemSlot deviceSlot in hackProcess.ItemStorage.GetItemSlots()) { Pickupable devicePickup = deviceSlot.Item; if (devicePickup != null) { HackingDevice device = devicePickup.GetComponent <HackingDevice>(); hackProcess.AddHackingDevice(device); } } }
public override void Process() { LoadMultipleObjects(new uint[] { Player, HackableObject, HackingDevice }); var playerScript = NetworkObjects[0].GetComponent <PlayerScript>(); var hackObject = NetworkObjects[1]; HackingDevice hackDevice = NetworkObjects[2].GetComponent <HackingDevice>(); HackingProcessBase hackingProcess = hackObject.GetComponent <HackingProcessBase>(); if (hackingProcess.ServerPlayerCanAddDevice(playerScript, hackDevice)) { hackingProcess.AddHackingDevice(hackDevice); hackingProcess.ServerStoreHackingDevice(hackDevice); HackingNodeConnectionList.Send(NetworkObjects[0], hackObject, hackingProcess.GetNodeConnectionList()); } }