void UpdateData(bool grabbed, int grabOwner, Vector3 position, Quaternion rotation, Vector3 velocity, Vector3 angularVelocity, int parentId, string parentPath) { // Parenting var actualNref = NetworkReference.FromTransform(transform.parent); var newNref = NetworkReference.FromIdAndPath(parentId, parentPath); Debug.Log("Parenting: " + actualNref + " NewRef: " + newNref + " Grabbed: " + grabbed); if (actualNref != newNref) { //Debug.Log("Reparenting from " + actualNref + " to " + newNref); GameObject newParent = newNref.FindObject(); //Debug.Log("New parent " + newParent); transform.parent = newParent != null ? newParent.transform : null; } interactableObject.isKinematic = grabbed; SetState(grabOwner); if (rigidBody != null) { rigidBody.velocity = velocity; rigidBody.angularVelocity = angularVelocity; } transform.position = position; transform.rotation = rotation; }
void OnEnable() { io.InteractableObjectSnappedToDropZone += HandleSnappedToDropZone; io.InteractableObjectUnsnappedFromDropZone += HandleUnsnappedFromDropZone; if (io.IsInSnapDropZone()) { dropZone = io.GetStoredSnapDropZone(); dropZoneNetRef = NetworkReference.FromTransform(dropZone.transform); } else { dropZone = null; dropZoneNetRef = NetworkReference.INVALID; } }
void UpdateDataToAllClients(bool grabbed, Rigidbody givenControllerAttachPoint) { NetworkReference parentNetworkReference = NetworkReference.FromTransform(transform.parent); Debug.Log("PARENT: " + parentNetworkReference); PhotonView.Get(this).RPC("UpdateData", PhotonTargets.OthersBuffered, grabbed, grabOwner, transform.position, transform.rotation, grabbed ? Vector3.zero : rigidBody.velocity, grabbed ? Vector3.zero : rigidBody.angularVelocity, parentNetworkReference.parentHandleId, parentNetworkReference.pathFromParent); }
private void HandleSnappedToDropZone(object sender, InteractableObjectEventArgs e) { dropZone = io.GetStoredSnapDropZone(); dropZoneNetRef = NetworkReference.FromTransform(dropZone.transform); }