1. Hello Guest! It's with a heavy heart that we must announce the removal of the Legacy GMC Archive. If you wish to save anything from it, now's the time! Please see this topic for more information.
    Dismiss Notice

GM:S 1.4 Setting mouse position

Discussion in 'Programming' started by Siolfor the Jackal, Mar 8, 2019.

  1. Siolfor the Jackal

    Siolfor the Jackal Member

    Joined:
    Jun 21, 2016
    Posts:
    788
    I have two circles I draw on the screen based on the x/y values I store in selection[]
    The active one moves with the mouse whilst the other stays in it's current position.
    When I press tab it toggles which circle is the active circle.
    Since they are controlled by the mouse I want to move the mouse position to the new active circle's position when I change which one is active so that the inactive circle doesn't teleport to the other circle's position when I toggle it.
    Using display_mouse_set() or window_mouse_set() doesn't work because they seem to ignore the scaling of my surface when it's not at it's native size(My surface is 1920x1080 scaled to fit my laptop's 1366x768 resolution).

    So is there another function I'm missing here or do I need to do some maths when moving the mouse?

    Code:
    if(keyboard_check_pressed(vk_tab))
    {
        primary = !primary;
        
        display_mouse_set(selection[primary, 0], selection[primary, 1]);
    }
    
    selection[primary, 0] = mouse_x;
    selection[primary, 1] = mouse_y;
     
  2. Relic

    Relic Member

    Joined:
    Jun 27, 2017
    Posts:
    744
    Think it will require maths.... or if the view camera never moves, you could (also) store the x and y values returned by window_mouse_get_x/y. Then set the mouse x and y using window_mouse_set() on toggle.
     
    Siolfor the Jackal likes this.
  3. Siolfor the Jackal

    Siolfor the Jackal Member

    Joined:
    Jun 21, 2016
    Posts:
    788
    Oh that sounds a bit clever. At the moment the view doesn't move, so that could work.
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice