Beispiel #1
0
        public void UpdateCanvas()
        {
            //return;
            int  poX   = InputManager.PoX;
            int  poY   = InputManager.PoY;
            bool press = InputManager.IsPressed;

            MouseOver = Enable && IsInCanvasTexture(Convert.ToSingle(poX) / DrawScale, Convert.ToSingle(poY) / DrawScale) && (poX != 0 || poY != 0);
            if (MouseOver)
            {
                if (!PreMouseOver && Sound)
                {
                    //player.Play();
                    Platform.Current.PlayEffect(@"Content\Sound\Select");
                }
                if (OnMouseOver != null)
                {
                    OnMouseOver.Invoke(null, null);
                }
                if (press)
                {
                    PressButton();
                }
            }
        }
Beispiel #2
0
 public void DoThisOnMouseOver(Action act)
 {
     MIO = new OnMouseOver(delegate
     {
         act.Invoke();
     });
 }
Beispiel #3
0
        public override void draw(Graphics graphics, float parentAlpha)
        {
            IDrawable checkbox = null;

            if (_isDisabled)
            {
                if (isChecked && style.checkboxOnDisabled != null)
                {
                    checkbox = style.checkboxOnDisabled;
                }
                else
                {
                    checkbox = style.checkboxOffDisabled;
                }
            }

            if (checkbox == null)
            {
                if (isChecked && style.checkboxOn != null)
                {
                    checkbox = style.checkboxOn;
                }
                else if (_mouseOver && style.checkboxOver != null && !_isDisabled)
                {
                    checkbox = style.checkboxOver;
                }
                else
                {
                    checkbox = style.checkboxOff;
                }
            }
            OnMouseOver?.Invoke(_mouseOver);
            image.setDrawable(checkbox);
            base.draw(graphics, parentAlpha);
        }
Beispiel #4
0
    private void FixedUpdate()
    {
        if (!isGameMenu && !isLostControl)
        {
            if (!isLockRotate)
            {
                horizontalInput = Input.GetAxis(AxisOptions.Horizontal.ToString());
                if (Input.GetMouseButton(1))
                {
                    plane.SetNormalAndPosition(localDown, transform.position);
                    ray = Camera.ScreenPointToRay(Input.mousePosition);

                    if (plane.Raycast(ray, out hitDist))
                    {
                        v3 = ray.GetPoint(hitDist);
                    }
                    else
                    {
                        v3 = transform.position + transform.TransformPoint(forward);
                    }
                    if (FlightMode.Sword == currentFlightMode)
                    {
                        isMouseOver = true;
                        OnMouseOver?.Invoke(v3);
                    }
                    rotationEngine.RotateToTargetWithPlaneLimiter(v3);
                }
                else if (isMouseOver)
                {
                    OnMouseOverEnd?.Invoke();
                    isMouseOver = false;
                }
                else if (Mathf.Abs(horizontalInput) > 0)
                {
                    rotationEngine.Rotate(horizontalInput);
                }
                else
                {
                    rotationEngine.SlowDown();
                }
            }
            if (!isLockMove)
            {
                verticalInput = Input.GetAxis(AxisOptions.Vertical.ToString());
                if (verticalInput > 0)
                {
                    engine.Move(verticalInput);
                }
                else if (verticalInput < 0)
                {
                    engine.Move(verticalInput / 2);
                }
                else
                {
                    engine.SlowDown();
                }
            }
        }
    }
Beispiel #5
0
        public InstanceSelectorUI() : base(3742, "Inventory", true, false)
        {
            SetVisibleScenes(GameScenes.EDITOR);
            SetSize(500, 100, 300, Screen.height - 200);
            SetResizeable(true, true);

            OnMouseOver.Add(() => { InstanceVM.OnMouseOver(); });
            OnMouseExit.Add(() => { InstanceVM.OnMouseExit(); });
        }
Beispiel #6
0
 public void Init(Vector2 positionInGrid, BoardManager board)
 {
     m_GridPosition = positionInGrid;
     m_BoardManager = board;
     OnMouseOver.AddListener(() => IsMouseOver = true);
     OnMouseOver.AddListener(() => m_BoardManager.OnTileSelected(this));
     OnMouseExit.AddListener(() => IsMouseOver = false);
     OnMouseExit.AddListener(() => m_BoardManager.OnTileDeselected(this));
 }
 public virtual void MouseOver(MouseEventArgs e)
 {
     if (Enabled && !Hovered)
     {
         if (EffectiveBounds.Contains(e.Position))
         {
             Hovered = true;
             OnMouseOver?.Invoke(this, EventArgs.Empty);
         }
     }
 }
Beispiel #8
0
        internal void InvokeEvents()
        {
            OnMouseOver?.Invoke(this);

            if (!_isAttached)
            {
                Input.Mouse.ButtonValueChanged += OnMouse;
                Input.Touch.ButtonValueChanged += OnMouse; //ToDo: Define OnTouch()
                Input.Mouse.AxisValueChanged   += OnAxisChanged;

                OnMouseEnter?.Invoke(this);
            }
            _isAttached = true;
        }
Beispiel #9
0
 //SoundPlayer player = new SoundPlayer("Content/Textures/Resources/Start/Select");
 public void Update(int poX, int poY, Vector2?basePos, bool press, bool sound)
 {
     MouseOver = Enable && IsInTexture(Convert.ToSingle(poX) / DrawScale, Convert.ToSingle(poY) / DrawScale, basePos) && (poX != 0 || poY != 0);
     if (MouseOver)
     {
         if (!PreMouseOver && sound)
         {
             //player.Play();
             Platform.Current.PlayEffect(@"Content\Sound\Select");
         }
         if (OnMouseOver != null)
         {
             OnMouseOver.Invoke(null, null);
         }
         if (press)
         {
             PressButton();
         }
     }
 }
 public override void draw(Graphics graphics, float parentAlpha)
 {
     updateImage();
     OnMouseOver?.Invoke(_mouseOver);
     base.draw(graphics, parentAlpha);
 }
Beispiel #11
0
 protected virtual async Task HandleMouseOverAsync(MouseEventArgs args)
 {
     await OnMouseOver.InvokeAsync(args);
 }
Beispiel #12
0
 public virtual void MouseOver(UIMouseEvent evt)
 {
     MouseHovering = true;
     OnMouseOver?.Invoke(evt, this);
     Parent?.MouseOver(evt);
 }
 public void OnPointerEnter(PointerEventData eventData)
 {
     OnMouseOver?.Invoke();
 }
 public void NotifyMouseOver(MouseEvent eventArgs)
 {
     OnMouseOver?.Invoke(this, eventArgs);
 }
        internal void DispatchEvent(Map map, MapJsEventArgs eventArgs)
        {
            switch (eventArgs.Type)
            {
            case "click":
                OnClick?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "contextmenu":
                OnContextMenu?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "dblclick":
                OnDblClick?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "layeradded":
                OnLayerAdded?.Invoke(new MapEventArgs(map, eventArgs.Type));
                break;

            case "layerremoved":
                OnLayerRemoved?.Invoke(new MapEventArgs(map, eventArgs.Type));
                break;

            case "mousedown":
                OnMouseDown?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "mouseenter":
                OnMouseEnter?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "mouseleave":
                OnMouseLeave?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "mousemove":
                OnMouseMove?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "mouseout":
                OnMouseOut?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "mouseover":
                OnMouseOver?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "mouseup":
                OnMouseUp?.Invoke(new MapMouseEventArgs(map, eventArgs));
                break;

            case "touchcancel":
                OnTouchCancel?.Invoke(new MapTouchEventArgs(map, eventArgs));
                break;

            case "touchend":
                OnTouchEnd?.Invoke(new MapTouchEventArgs(map, eventArgs));
                break;

            case "touchmove":
                OnTouchMove?.Invoke(new MapTouchEventArgs(map, eventArgs));
                break;

            case "touchstart":
                OnTouchStart?.Invoke(new MapTouchEventArgs(map, eventArgs));
                break;

            case "wheel":
                OnWheel?.Invoke(new MapEventArgs(map, eventArgs.Type));
                break;
            }
        }
Beispiel #16
0
        /// <summary> Adds the events for this html element directly to the text writer output </summary>
        /// <param name="Output"> Output to write directly to </param>
        public void Add_Events_HTML(TextWriter Output)
        {
            if (!String.IsNullOrWhiteSpace(OnClick))
            {
                Output.Write("onclick=\"" + OnClick.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnContextMenu))
            {
                Output.Write("oncontextmenu=\"" + OnContextMenu.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnDblClick))
            {
                Output.Write("ondblclick=\"" + OnDblClick.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnMouseDown))
            {
                Output.Write("onmousedown=\"" + OnMouseDown.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnMouseEnter))
            {
                Output.Write("onmouseenter=\"" + OnMouseEnter.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnMouseLeave))
            {
                Output.Write("onmouseleave=\"" + OnMouseLeave.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnMouseMove))
            {
                Output.Write("onmousemove=\"" + OnMouseMove.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnMouseOver))
            {
                Output.Write("onmouseover=\"" + OnMouseOver.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnMouseOut))
            {
                Output.Write("onmouseout=\"" + OnMouseOut.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnMouseUp))
            {
                Output.Write("onmouseup=\"" + OnMouseUp.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnKeyDown))
            {
                Output.Write("onkeydown=\"" + OnKeyDown.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnKeyPress))
            {
                Output.Write("onkeypress=\"" + OnKeyPress.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnKeyUp))
            {
                Output.Write("onkeyup=\"" + OnKeyUp.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnLoad))
            {
                Output.Write("onload=\"" + OnLoad.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnSelect))
            {
                Output.Write("onselect=\"" + OnSelect.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnChange))
            {
                Output.Write("onchange=\"" + OnChange.Replace("\"", "'") + "\" ");
            }

            if (!String.IsNullOrWhiteSpace(OnWheel))
            {
                Output.Write("onwheel=\"" + OnWheel.Replace("\"", "'") + "\" ");
            }
        }
Beispiel #17
0
    // Update is called once per frame
    void Update()
    {
        Camera cam = Camera.main;

        if (cam == null)
        {
            return;
        }

        // Addon feature: change camera angle to top-down by holding space
        Vector3 rot = new Vector3(Input.GetKey(KeyCode.Space) ? 90f : cameraAngle, cam.transform.eulerAngles.y, 0f);

        cam.transform.eulerAngles = rot;

        // Mouse movement or cursor keys pan the camera in XZ
        float panX    = 0f;
        float panZ    = 0f;
        bool  panMode = false;

        if (Input.GetMouseButton(1) && !Input.GetMouseButton(0)) // right button
        {
            panMode          = true;
            Cursor.lockState = CursorLockMode.Locked;

            panX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
            panZ = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

            if (invertMouse)
            {
                panX = -panX;
                panZ = -panZ;
            }
        }
        else
        {
            panX    = Input.GetAxis("Horizontal") * keyPanSpeed * Time.deltaTime;
            panZ    = Input.GetAxis("Vertical") * keyPanSpeed * Time.deltaTime;
            panMode = panX != 0f || panZ != 0f;
        }
        if (panMode)
        {
            // apply relative to camera left/right but absolute forward/back, assume cam is not rolled
            Vector3 right   = cam.transform.right;
            Vector3 forward = new Vector3(-right.z, 0f, right.x);
            groundpos += right * panX + forward * panZ;

            // groundpos.y always 0 (or maybe get the height of center tile later), x, z inside map border
            groundpos.x = Mathf.Clamp(groundpos.x, SceneMinX, SceneMaxX);
            groundpos.y = 0f;
            groundpos.z = Mathf.Clamp(groundpos.z, SceneMinZ, SceneMaxZ);
        }
        // Camera rotation around Y only
        if (Input.GetMouseButton(0) && Input.GetMouseButton(1)) // both buttons
        {
            Cursor.lockState = CursorLockMode.Locked;

            float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;

            if (invertMouse)
            {
                mouseX = -mouseX;
            }

            rot.y -= mouseX;
            cam.transform.eulerAngles = rot;
        }
        else if (!Input.GetMouseButton(0) && !Input.GetMouseButton(1))
        {
            Cursor.lockState = CursorLockMode.None;

            Ray ray = cam.ScreenPointToRay(Input.mousePosition);
            OnMouseOver?.Invoke(this.gameObject, new CameraRayEventArgs(ray));
        }

        // Apply the ground position
        cam.transform.position = groundpos;

        // Mouse wheel zoom in/out by changing camera position
        // using translate so that rotation is considered and the ground pos focused
        float mouseWheel = Input.GetAxis("Mouse ScrollWheel") * mouseWheelSensitivity * Time.deltaTime;

        if (invertWheel)
        {
            mouseWheel = -mouseWheel;
        }
        zoomDistance = Mathf.Clamp(zoomDistance - mouseWheel, zoomDistanceMin, zoomDistanceMax);
        cam.transform.Translate(0f, 0f, -zoomDistance);
        if (postProcessLayer != null)
        {
            // see https://answers.unity.com/questions/1692992/how-to-change-depth-of-field-focal-length-from-a-s.html
            List <PostProcessVolume> volList = new List <PostProcessVolume>();
            PostProcessManager.instance.GetActiveVolumes(postProcessLayer, volList, true, true);
            foreach (PostProcessVolume vol in volList)
            {
                PostProcessProfile ppp = vol.profile;
                if (ppp)
                {
                    DepthOfField dof;
                    if (ppp.TryGetSettings <DepthOfField>(out dof))
                    {
                        dof.focusDistance.value = zoomDistance;
                        dof.focalLength.value   = zoomDistance;
                    }
                }
            }
        }

        // If mouse over UI, disable selection and highlight effects, and don't allow left click
        if (EventSystem.current.IsPointerOverGameObject())
        {
            // Create a ray facing away from screen, should hit nothing, simulation click/hover into void
            Ray ray = new Ray(transform.position, -transform.forward);
            OnMouseOver?.Invoke(this.gameObject, new CameraRayEventArgs(ray));
            OnMouseClick?.Invoke(this.gameObject, new CameraRayEventArgs(ray));
        }
        // Left click with mouse selects a tile
        else if (Input.GetMouseButtonDown(0) && !Input.GetMouseButton(1)) // left button
        {
            // Cast a ray and let the GameManager decide what to do with that
            Ray ray = cam.ScreenPointToRay(Input.mousePosition);

            // To test the ray better change GetMouseButtonDown() to Input.GetMouseButton()
            // Debug.DrawRay(ray.origin, ray.direction * 300, Color.red);

            OnMouseClick?.Invoke(this.gameObject, new CameraRayEventArgs(ray));
        }
    }
 public bool MouseOver(UIMouseEventData e)
 {
     OnMouseOver?.Invoke(e);
     return(true);
 }
    void Awake()
    {
        _originalPos = transform.localPosition;
        _originalRot = transform.localRotation;

        base.Awake();

        _collider = GetComponent <Collider>();


        m_animator = GetComponentInParent <Animator>();

        foreach (InteractionComponent com in m_interactiveComponents)
        {
            // caching lambda
            InteractionComponent currentComponent = com;

            OnMouseClick onClick = com.collider.gameObject.AddComponent <OnMouseClick>();
            OnMouseOver  onOver  = com.collider.gameObject.AddComponent <OnMouseOver>();
            OnMouseDrag  onDrag  = gameObject.AddComponent <OnMouseDrag>();

            onDrag.onMouseDragBegin += OnComponentDragBegin;
            onDrag.onMouseDrag      += OnComponentDragged;
            onDrag.onMouseDragEnd   += OnComponentDragEnd;

            onClick.onMouseClick += (PointerEventData eventData) =>
            {
                if (eventData.dragging)
                {
                    return;
                }

                if (!IsInteracting)
                {
                    return;
                }

                currentComponent.onInteract.Invoke();
            };

            onOver.onMouseOver += (PointerEventData eventData) =>
            {
                if (!IsInteracting)
                {
                    return;
                }

                m_isMouseOverInteraction = false;

                if (currentComponent.onInteract.GetPersistentEventCount() > 0)
                {
                    m_isMouseOverInteraction = true;
                }

                if (!m_isDragging)
                {
                    Cursor.SetCursor(cursorDrag, hotSpot, cursorMode);
                }

                if (m_isMouseOverInteraction && !m_isDragging)
                {
                    Cursor.SetCursor(cursorClick, hotSpot, cursorMode);
                }

                m_isMouseOver = true;
            };

            onOver.onMouseOut += (PointerEventData data) =>
            {
                if (!IsInteracting)
                {
                    return;
                }

                if (!m_isDragging)
                {
                    Cursor.SetCursor(null, Vector2.zero, cursorMode);
                }

                m_isMouseOver = false;
            };
        }
    }
Beispiel #20
0
 public virtual void MouseOver(UIMouseEventArgs e)
 {
     MouseHovering = true;
     OnMouseOver?.Invoke(this, e);
     Parent?.MouseOver(e);
 }
        internal void DispatchEvent(Map map, HtmlMarkerJsEventArgs eventArgs)
        {
            if (eventArgs.Options != null)
            {
                var popupOptions = Options.Popup;
                Options       = eventArgs.Options;
                Options.Popup = popupOptions;
            }

            switch (eventArgs.Type)
            {
            case "click":
                OnClick?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "contextmenu":
                OnContextMenu?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "dblclick":
                OnDblClick?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "drag":
                OnDrag?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "dragend":
                OnDragEnd?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "dragstart":
                OnDragStart?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "keydown":
                OnKeyDown?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "keypress":
                OnKeyPress?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "keyup":
                OnKeyUp?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "mousedown":
                OnMouseDown?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "mouseenter":
                OnMouseEnter?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "mouseleave":
                OnMouseLeave?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "mousemove":
                OnMouseMove?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "mouseout":
                OnMouseOut?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "mouseover":
                OnMouseOver?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;

            case "mouseup":
                OnMouseUp?.Invoke(new HtmlMarkerEventArgs(map, eventArgs.Type, this));
                break;
            }
        }
Beispiel #22
0
        public override void PollEvents()
        {
            while (SDL_PollEvent(out var ev) == 1)
            {
                switch (ev.type)
                {
                case SDL_EventType.SDL_QUIT:
                    OnQuit?.Invoke();
                    break;

                case SDL_EventType.SDL_KEYDOWN:
                    AddKey((int)ev.key.keysym.sym);
                    break;

                case SDL_EventType.SDL_KEYUP:
                    RemoveKey((int)ev.key.keysym.sym);
                    break;

                case SDL_EventType.SDL_TEXTINPUT:

                    break;

                case SDL_EventType.SDL_MOUSEBUTTONDOWN:
                    SetMouseButtonState(ev.button.button, true);
                    break;

                case SDL_EventType.SDL_MOUSEBUTTONUP:
                    SetMouseButtonState(ev.button.button, false);
                    break;

                case SDL_EventType.SDL_MOUSEWHEEL:
                    TriggerMouseScroll(ev.wheel.y * 120);
                    break;

                case SDL_EventType.SDL_CONTROLLERDEVICEADDED:

                    ProcessGamepadAdd(ev.cdevice.which);

                    break;

                case SDL_EventType.SDL_CONTROLLERDEVICEREMOVED:

                    ProcessGamepadRemove(ev.cdevice.which);

                    break;

                case SDL_EventType.SDL_WINDOWEVENT:
                    switch (ev.window.windowEvent)
                    {
                    case SDL_WindowEventID.SDL_WINDOWEVENT_SHOWN:
                        break;

                    case SDL_WindowEventID.SDL_WINDOWEVENT_CLOSE:
                        OnQuit?.Invoke();
                        break;

                    case SDL_WindowEventID.SDL_WINDOWEVENT_SIZE_CHANGED:

                        var w = ev.window.data1;
                        var h = ev.window.data2;

                        if (screen_w != w || screen_h != h)
                        {
                        }

                        screen_w = w;
                        screen_h = h;

                        OnWinResized?.Invoke(w, h);
                        break;

                    case SDL_WindowEventID.SDL_WINDOWEVENT_ENTER:

                        OnMouseOver?.Invoke();

                        break;

                    case SDL_WindowEventID.SDL_WINDOWEVENT_LEAVE:

                        OnMouseLeave?.Invoke();

                        break;

                    case SDL_WindowEventID.SDL_WINDOWEVENT_FOCUS_LOST:

                        is_active = false;

                        break;

                    case SDL_WindowEventID.SDL_WINDOWEVENT_FOCUS_GAINED:

                        is_active = true;

                        break;
                    }

                    break;
                }
            }
        }