public Action Activate(ControllerInteractionPoint interactionPoint)
        {
            var handle = new CoroutineHandle();

            StartCoroutine(InteractionLoop(interactionPoint, handle));

            return(() =>
            {
                handle.Stop();
            });
        }
        public Action Activate(ControllerInteractionPoint interactionPoint)
        {
            // @fixme Activations end when the controller leaves
            // we probably actyally want it to continue until released
            // So we'll need some way to tell the interaction point to not auto-release
            var handle = new CoroutineHandle();

            StartCoroutine(InteractionLoop(interactionPoint, handle));

            return(() =>
            {
                handle.Stop();
            });
        }
        public Action Activate(ControllerInteractionPoint interactionPoint)
        {
            if (!mapHorizontalPlaneController.Reserve())
            {
                return () => { }
            }
            ;

            var handle = new CoroutineHandle();

            StartCoroutine(InteractionLoop(interactionPoint, handle));

            return(() =>
            {
                handle.Stop();
                mapHorizontalPlaneController.Release();
            });
        }