Beispiel #1
0
        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);
        }