Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (407)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Picking tutorial wrong?  (Read 505 times)
0 Members and 1 Guest are viewing this topic.
Offline t_larkworthy

Senior Member


Medals: 1
Projects: 1


Google App Engine Rocks!


« Posted 2004-06-26 00:41:32 »

the tutorial is
http://www.xith.org/tutes/GettingStarted/html/picking.html

By my counts the mutex stuff will allow many mouse events to go past the rendering thread. OK for this example, but if you want to do something like mouse panning then you cant afford to lose a single mouse event. It could be the mouse release event.
Here is my bodged solution

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
synchronized (pickParamsMutex) {
                    while (mutexCount > 0) {
                        try {
                            if (e.getID() == MouseEvent.MOUSE_MOVED) {
                                return;
                            }
                            if (e.getID() == MouseEvent.MOUSE_DRAGGED) {
                                return;
                            }
                            pickParamsMutex.wait();
                        } catch (InterruptedException e1) {

                            System.out.println("waiting AWT thread woken up");
                        }
                    }
                    mutexCount++;

                }
                lastMouseEvent = e;


Combined with

1  
2  
3  
4  
5  
6  
synchronized (pickParamsMutex) {

            state = state.changeState(state, lastMouseEvent, canvas);
            mutexCount--;
            pickParamsMutex.notify();
        }


this way all incoming mouse event are stopped at the top and are only let through one at a time. I have a supsicion the order may not be preserved though. So those who need it might need a list or something. I have also in my example thrown out the dragged and moved if they have to be delayed. Some will still get through, its jsut so I don't get a massive pilup of those inessential events, enough will get through to my underlying behavour

Tom

Runesketch: an Online CCG built on Google App Engine where players draw their cards and trade. Fight, draw or trade yourself to success.
Offline t_larkworthy

Senior Member


Medals: 1
Projects: 1


Google App Engine Rocks!


« Reply #1 - Posted 2004-06-26 01:19:39 »

yeah ok. That post is rubbish. The code does not quite work either. But hopefully you will get my drift :-)

Runesketch: an Online CCG built on Google App Engine where players draw their cards and trade. Fight, draw or trade yourself to success.
Offline t_larkworthy

Senior Member


Medals: 1
Projects: 1


Google App Engine Rocks!


« Reply #2 - Posted 2004-06-26 01:36:14 »

well. It does actually work as it is. But the mutex count does noting meaningful. So ignore that bit and you will be ok.
Right its 2.30 a.m. I should go to bed before I write too much other rubbish

Runesketch: an Online CCG built on Google App Engine where players draw their cards and trade. Fight, draw or trade yourself to success.
Games published by our own members! Check 'em out!
Play the free demo of Revenge of the Titans!
Offline Jens

Senior Member




Java for games!


« Reply #3 - Posted 2004-06-26 09:05:36 »

If you don't want to lose events, you can save them in a list instead of just setting a boolean flag. For the tutorial this isn't a problem. The synchronizing makes sure the rendering thread isn't interrupted while executing the picking code.

Xith3D Getting Started Guide (PDF,HTML,Source)
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars and Titan!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (95 views)
2013-05-17 21:29:12

alaslipknot (103 views)
2013-05-16 21:24:48

gouessej (133 views)
2013-05-16 00:53:38

gouessej (128 views)
2013-05-16 00:17:58

theagentd (139 views)
2013-05-15 15:01:13

theagentd (127 views)
2013-05-15 15:00:54

StreetDoggy (168 views)
2013-05-14 15:56:26

kutucuk (190 views)
2013-05-12 17:10:36

kutucuk (193 views)
2013-05-12 15:36:09

UnluckyDevil (199 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.099 seconds with 21 queries.