public void Click(IUser user, Vector3 clickPoint)
        {
            var app = App;

            if (app == null)
            {
                return;
            }

            _clickAction.StartAction(user, new ButtonData()
            {
                targetedPoints = new PointData[1]
                {
                    PointData.CreateFromUnityVector3(clickPoint, Behavior.Actor.GameObject.transform, App.SceneRoot.transform)
                }
            });
        }
        public void EndHover(IUser user, Vector3 hoverPoint)
        {
            var app = App;

            if (app == null)
            {
                return;
            }

            _hoverAction.StopAction(user, new ButtonData()
            {
                targetedPoints = new PointData[1]
                {
                    PointData.CreateFromUnityVector3(hoverPoint, Behavior.Actor.GameObject.transform, App.SceneRoot.transform)
                }
            });
        }
        public void EndButton(IUser user, Vector3 buttonEndPoint)
        {
            var app = App;

            if (app == null)
            {
                return;
            }

            _buttonAction.StopAction(user, new ButtonData()
            {
                targetedPoints = new PointData[1]
                {
                    PointData.CreateFromUnityVector3(buttonEndPoint, Behavior.Actor.GameObject.transform, App.SceneRoot.transform)
                }
            });

            IsPressed = false;
        }
        public void EndTargeting(IUser user, Vector3 targetPoint)
        {
            var app = App;

            if (app == null)
            {
                return;
            }

            var targetData = new TargetData()
            {
                targetedPoints = new PointData[1]
                {
                    PointData.CreateFromUnityVector3(targetPoint, Behavior.Actor.GameObject.transform, app.SceneRoot.transform)
                }
            };

            TargetAction.StopAction(user, targetData);
        }
        internal override void SynchronizeBehavior()
        {
            base.SynchronizeBehavior();

            var app = App;

            if (app == null)
            {
                return;
            }

            if (_hoverPoints.Any())
            {
                _hoverAction.PerformActionUpdate(new ButtonData()
                {
                    targetedPoints = _hoverPoints.Select((point) =>
                    {
                        return(PointData.CreateFromUnityVector3(point, Behavior.Actor.GameObject.transform, App.SceneRoot.transform));
                    }).ToArray()
                });

                _hoverPoints.Clear();
            }

            if (_buttonPressedPoints.Any())
            {
                _buttonAction.PerformActionUpdate(new ButtonData()
                {
                    targetedPoints = _buttonPressedPoints.Select((point) =>
                    {
                        return(PointData.CreateFromUnityVector3(point, Behavior.Actor.GameObject.transform, App.SceneRoot.transform));
                    }).ToArray()
                });

                _buttonPressedPoints.Clear();
            }
        }