Jump to content

View more

Image of the Day

The night is still, but the invasion brings chaos. #screenshotsaturday #hanako #indiegame #gameart #ue4 #samurai https://t.co/cgILXuokoS
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

Getting X/Y of mouse ONLY inside rendered area

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
5 replies to this topic

#1 MaacK   Members   

140
Like
0Likes
Like

Posted 21 February 2013 - 05:26 AM

Hello,

 

I am using C#, first off. I have everything setup (very basic) for the Mouse inside of SlimDX (DirectInput).

 

I'm working a level editor for my basic 2D engine (this is just for fun, fyi), however, I ran into a problem (I might be approaching this incorrectly). I have a panel that I am rendering to. I need to get the mouse X/Y inside of the panel (or just the renderarea). What is the best way to approach this?

 

Are there any examples of using DirectInput in C#, that would help me out? I feel like I am totally doing this backwards dry.png

 

Thanks! 



#2 btower   Members   

1625
Like
1Likes
Like

Posted 21 February 2013 - 06:19 AM

The .NET Panel class has a method named PointToClient that accepts a Point as input. The Point should be in screen coordinates (in your case; the mouse cursor position relative to the screen itself), the result is a Point that is relative to the Panel.



#3 LordRhys   Members   

379
Like
0Likes
Like

Posted 21 February 2013 - 07:05 AM

You could use something like the following where you create some functions for your mouse inthe panel, then in your logic code you react to it:

 

 

 

private void panel_MouseLeave(object sender, EventArgs e)
    {
      trackMouse = false;
    }

private void panel_MouseEnter(object sender, EventArgs e)
{
  trackMouse = true;
}


if (trackMouse)
      {
        if (frameCount == 0)
        {
          if (mouse.X < Engine.TileWidth)
            position.X -= Engine.TileWidth;

          if (mouse.X > mapDisplay.Width - Engine.TileWidth)
            position.X += Engine.TileWidth;

          if (mouse.Y < Engine.TileHeight)
            position.Y -= Engine.TileHeight;

          if (mouse.Y > mapDisplay.Height - Engine.TileHeight)
            position.Y += Engine.TileHeight;

          camera.Position = position;
          camera.LockCamera();
        }

        position.X = mouse.X + camera.Position.X;
        position.Y = mouse.Y + camera.Position.Y;

        Point tile = Engine.VectorToCell(position);
        shadowPosition = new Vector2(tile.X, tile.Y);

        tbMapLocation.Text =
            "( " + tile.X.ToString() + ", " + tile.Y.ToString() + " )";

        if (isMouseDown)
        {
          if (rbDraw.Checked)
          {
            SetTiles(tile, (int)nudCurrentTile.Value, lbTileset.SelectedIndex);
          }

          if (rbErase.Checked)
          {
            SetTiles(tile, -1, -1);
          }
        }       
      }



#4 / MisterFuzzy   Banned   

161
Like
0Likes
Like

Posted 21 February 2013 - 10:42 AM

Let's say your draw region is 100x100, and positioned from the topleft corner at 256x256. To get the mouse position in the box, you would just subtract the measure of the top-left corner from the mouse XY position to get a relative value. Then, you can use simple checks ( if newX < 0 || newX > 100, then mouse.X is not in the box's x bounds and therefore cannot be in the box, else check newY etc. etc.). That's all there is to it! Really. That's all.


"Only idiots quote themselves" - MisterFuzzy

 


#5 cozzie   Members   

4970
Like
0Likes
Like

Posted 21 February 2013 - 01:55 PM

You might achieve this by creating your directinput object with the "discl_foreground" parameter (instead of background). Assuming i understand your question correct.

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me


#6 unbird   Members   

8307
Like
0Likes
Like

Posted 21 February 2013 - 02:38 PM

Simply grab the MouseMove event of said Panel ?






Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.