Droppable/Pickupable weapons sync issues.

Options
I'm currently using Photon to create a coop dungeon crawler, or something along those lines.

Players will join a lobby, load up into the map unarmed and find weapons lying on the ground in their local area and along their path into the dungeon, weapons are not instantiated, they are manually placed in the map and load up perfectly.

The issue I'm having is syncing the weapons when parented under a player - as soon as a player takes a weapon from the ground it disappears from all other players except the local player, and upon dropping the weapon the weapon then appears in the correct dropped location for all players.

I guess what I'm looking for is a way to update the parent + position + rotation of a weapon once on pickup, and then have all the clients locally move that object.

I am however, entirely lost on how to do so, or even start.
Here's my method for picking up weapons upon clicking on them in-game:

void PickUpWeapon() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray, out hit)) { if(anim.GetBool("Unarmed")) { if (hit.collider.gameObject.tag == "Weapon") { GetComponent<PlayerCombatMovement>().enabled = true; Debug.Log("Picked up " + hit.collider.name); if (hit.collider.gameObject.GetComponent<WeaponDamage>().WeaponType == "Greatsword") { anim.SetBool("Unarmed", false); anim.SetBool("Twohanded", true); _weapon = hit.collider.gameObject; _weapon.GetComponent<Rigidbody>().useGravity = false; _weapon.GetComponent<Rigidbody>().isKinematic = true; _weapon.transform.rotation = _twohandedSwordMountPoint.transform.rotation; _weapon.transform.position = _twohandedSwordMountPoint.transform.position; _weapon.transform.parent = _twohandedSwordMountPoint.transform; }

And my method for dropping them.

void ThrowAwayWeapon() { if (_weapon == null) { Debug.Log("I DONT HAVE TO THROW AWAY YOU FAK"); return; } else { _weapon.GetComponent<Rigidbody>().useGravity = true; _weapon.GetComponent<Rigidbody>().isKinematic = false; _weapon.transform.parent = null; _weapon.GetComponent<Rigidbody>().AddForce(0, 100, 0, ForceMode.Impulse); _weapon.GetComponent<Rigidbody>().AddTorque(50, 100, 0, ForceMode.Impulse); anim.SetBool("Unarmed", true); anim.SetBool("Twohanded", false); anim.SetBool("Onehanded", false); GetComponent<PlayerCombatMovement>().enabled = false; } }