private void AttemptGrab(GrabRequestEvent request) { var grabbableGameObject = LocalEntities.Instance.Get(request.grabbedEntityId).UnderlyingGameObject; if (grabbableGameObject == null) { Debug.LogWarning("Player grab attempt couldn't find targeted grabbable entity object with id: " + request.grabbedEntityId); return; } GameObject controllerGameObject = gameObject.GetComponent <PlayerControllers>().GetController(request.controllerSide); if (controllerGameObject == null) { Debug.LogWarning("Player grab attempt failed; no controller game object for " + request.controllerSide + " controller side"); return; } // Make grab request GrabbableRequestHandler grabbableRequestHandler = grabbableGameObject.GetComponent <GrabbableRequestHandler>(); // GrabbableRequestHandler will be disabled on workers not authoritative over grabbed object's Grabbable component if (grabbableRequestHandler != null && grabbableRequestHandler.isActiveAndEnabled) { grabbableRequestHandler.HandleGrabRequest(gameObject.EntityId(), request.controllerSide, controllerGameObject); } }
private void SendPickupRequest(ControllerSide controllerSide, EntityId reachableObjectId) { var update = new Grab.Update(); var grabRequestEvent = new GrabRequestEvent(reachableObjectId, controllerSide); update.AddGrabRequest(grabRequestEvent); GrabWriter.Send(update); }