Collision detection problems - Fall Down Clone

I've been working on a relatively small java applet for a little while now. I've got some basic collision detection in place, however it currently suffers from some discrete time movement problems on slower machines - that is the floor sometimes completely passes the ball.
If the floor was not moving, solving the problem would be relatively easy. However, with the floor moving up, and the ball moving down and horizontally, I'm at a loss of how to deal with the problems I'm running into - moving through floors and moving too far horizontally before moving down and missing a hole that should have been hit.
What would be the best way to go about solving the problems my applet is running into?
For those interested, the latest code can be found here: http://home.maine.rr.com/oooska/falldown/
The latest incomplete version of the applet can be found here: http://home.maine.rr.com/oooska/falldown/applet/FallDown.html
Thanks in advance for the help. :)

I've got a more guided question instead.
The fastest way would probably be to check between each individual frame several times (e.g. divide the distance moved for all items by 10 and move them 1/10th of the distance at a time checking for collisions). If I was to go about doing it this way, what would be an appropriate number to check? Checking 50 times seems excessive considering most machines have no trouble with running the game as is, but I don't want to end up moving in small enough increments so that control and collision detection becomes limited...
In short, is there any way to accurately determine how many times I should move it per frame?

Similar Messages

  • Problem with the adobe flash player, its falling down, what to do?

    Its always falling down almost immediately when i hear music. I have tried to update Adobe Flash player and so on. But it still not working, its strange but i have been thinking if Mozilla doesn't ''allow'' the adobe flash player. Do I need maybe change Firefox to something else??

    Is it only the sound or do you have other problems with Flash as well?
    See [[No sound in Firefox]] and [[Video or audio does not play]]
    You can click the Volume icon on the Windows Taskbar near the clock and click the Mixer link at the bottom to open the mixer.
    You can adjust the volume level for each application in that window, so make sure that Firefox is not muted or set at a low level.
    You will only see the Firefox program in the Mixer if you are on a website that plays sound.
    You can also try to uninstall and reinstall Flash.
    Troubleshoot Flash Player installation for Windows: http://kb2.adobe.com/cps/191/tn_19166.html
    Flash Player uninstall: http://www.adobe.com/go/tn_14157 (this will remove the Firefox Flash plugin and the ActiveX control for IE)

  • Battery of a 4 week old macbook (2012) pro 13''. It reaches 100% after a hard time but fall down to 99% after few seconds. What is the problem?

    Why does my newly bought Macbook pro 13'' 2012 battery has a hard time reaching 100%. It reaches to 100% with a longer charging but then falls down to 99% in a few seconds time. I have heard and read about calibration. But I think that the computer is young (only 4 weeks old) to be calibirated. What might be the issue here? This problem started just recently.

    When my MBP is plugged into the wall (when I am near a plug, I usually have it plugged in) it will stop charging at 100% and drop slowly to 95% before auto-recharging to 100%.
    Saves the circuits from charging all of the time.
    I do run it on battery at least once a month down to 40%.

  • Events Triggered By Collision Detection In Shockwave 3D Environment Happen More Than Once?

    Okay, I've finally managed to get my Director 3D game to move an object to a new random position when collision detection occurs with that object! HOWEVER, sometimes it will work as expected and other times the object seems to move SEVERAL times before settling. Anyone have any idea why it isn't always just moving once and settling as I'd hoped it would...?
    To see an example of the problem I'm facing, create a new Director movie then insert a new Shockwave 3D media element into that Director movie named "Scene" and apply the below code to that 3D media element. I've tried to trim the code down as much as possible to get right to the heart of the problem:
    =====
    property Scene  -- reference to 3D cast member
    property pSprite    -- referebce to the 3D sprite
    property pCharacter -- reference to the yellow in the 3D world
    property pTransformgreen01Flag -- reference to the flag which will trigger action to move green01 + increase score on collision
    property pTransformgreen02Flag -- reference to the flag which will trigger action to move green02 + increase score on collision
    on beginSprite me
      -- initiate properties and 3D world
      pSprite = sprite(me.spriteNum)
      Global Scene
      Scene = sprite(me.spriteNum).member
      Scene.resetWorld()
      Tempobjres = Scene.newmodelresource("sphereRES", #sphere)  --create sphere modelresource
      Tempobjres.radius = 10     --set sphere modelresrource radius to 20
      Tempobjres.resolution = 17   --set the sphere modelresource resolution to 17
      Tempobj = scene.newmodel("yellow", tempobjres)   --create a model from the sphere modelresource
      Tempshader = scene.newshader("sphereshd", #standard)   --create a new standard shader
      Tempshader.diffuse = rgb(250,250,10)   --set the diffuse color (in this case, a light green)
      Tempshader.texture = void   --set the texture of the shader to void
      Tempobj.transform.position=vector(0,0,0)
      Tempobj.shaderlist = tempshader   -- assign the shader to the model
      Tempobjres1 = Scene.newmodelresource("sphereRES1", #sphere)  --create sphere modelresource
      Tempobjres1.radius = 10     --set sphere modelresrource radius to 20
      Tempobjres1.resolution = 17   --set the sphere modelresource resolution to 17
      Tempobj1 = scene.newmodel("green01", tempobjres1)   --create a model from the sphere modelresource
      Tempshader1 = scene.newshader("sphereshd1", #standard)   --create a new standard shader
      Tempshader1.diffuse = rgb(100,200,50)   --set the diffuse color (in this case, a light green)
      Tempshader1.texture = void   --set the texture of the shader to void
      Tempobj1.transform.position = vector(25,25,0)
      Tempobj1.shaderlist = tempshader1   -- assign the shader to the model
      Tempobjres2 = Scene.newmodelresource("sphereRES2", #sphere)  --create sphere modelresource
      Tempobjres2.radius = 10     --set sphere modelresrource radius to 20
      Tempobjres2.resolution = 17   --set the sphere modelresource resolution to 17
      Tempobj2 = scene.newmodel("green02", tempobjres2)   --create a model from the sphere modelresource
      Tempshader2 = scene.newshader("sphereshd2", #standard)   --create a new standard shader
      Tempshader2.diffuse = rgb(100,200,50)   --set the diffuse color (in this case, a light green)
      Tempshader2.texture = void   --set the texture of the shader to void
      Tempobj2.transform.position = vector(-25,-25,0)
      Tempobj2.shaderlist = tempshader2   -- assign the shader to the model
      --the following lines will add collision detection for all three on-screen 3D objects
      Tempobj.addModifier(#collision)
      Tempobj.collision.enabled=true
      Tempobj1.addModifier(#collision)
      Tempobj1.collision.enabled=true
      Tempobj2.addModifier(#collision)
      Tempobj2.collision.enabled=true
      Tempobj.collision.resolve=true
      Tempobj1.collision.resolve=true
      Tempobj2.collision.resolve=true
      --the following lines will tell Director what to do with a specific object when it collides with another
      Tempobj.collision.setCollisionCallBack(#beepsound, me)
      Tempobj1.collision.setCollisionCallBack(#hitgreen01, me)
      Tempobj2.collision.setCollisionCallBack(#hitgreen02, me)
      pCharacter = Scene.model("yellow")
      -- we must define pCharacter after we use the resetWorld() command
      -- otherwise this variable object will be deleted
      createCollisionDetect
      pTransformgreen01Flag = false
      pTransformgreen02Flag = false
    end
    on createCollisionDetect
      Global Scene
      -- add collision modifier to the character
      pCharacter.addmodifier(#collision)
      -- set bounding geometry for collision detection to bounding box of model
      pCharacter.collision.mode = #mesh
      -- resolve collision for character
      pCharacter.collision.resolve = TRUE
    end
    on keyDown
      Global Scene
      case(chartonum(the keypressed)) of
        30: --up arrow
          scene.model("yellow").translate(0,5,0)
        31: --down arrow
          scene.model("yellow").translate(0,-5,0)
        28: --left arrow
          scene.model("yellow").translate(-5,0,0)
        29: --right arrow
          scene.model("yellow").translate(5,0,0)
      end case
    end
    --when "yellow" (player character) hits another object, this will happen:
    on beepsound me, colData
      beep --plays sound
    end
    --when "green01" is hit by another object, this will happen:
    on hitgreen01 me, colData
      Global Scene
      pTransformgreen01Flag=true
    end
    --when "green02" is hit by another object, this will happen:
    on hitgreen02 me, colData
      Global Scene
      pTransformgreen02Flag=true 
    end
    on enterFrame me
      Global Scene
      if pTransformgreen01Flag then
        --the following lines will generate new random x and y co-ordinates for green01
        randomx=random(-110,110)
        green01x=randomx
        randomy=random(-90,90)
        green01y=randomy
        Scene = member("Scene")
        Scene.model("green01").transform.position = vector(green01x,green01y,0)
        pTransformgreen01Flag = false
      end if
      if pTransformgreen02Flag then
        --the following lines will generate new random x and y co-ordinates for green02
        randomx=random(-110,110)
        green02x=randomx
        randomy=random(-90,90)
        green02y=randomy
        Scene = member("Scene")
        Scene.model("green02").transform.position = vector(green02x,green02y,0)
        pTransformgreen02Flag = false
      end if
    end
    =====
    I imagine the part that's causing the issue is the "on enterFrame me" part at the end, but can't see any reason why it wouldn't just perform the desired action ONCE every time...?
    This is really confusing the hell out of me and is pretty much the final hurdle before I can call my game "finished" so any and all assistance would be GREATLY appreciated!

    You can get yourself a used copy of my book http://www.amazon.com/Director-Shockwave-Studio-Developers-Guide/dp/0072132655/ for $0.82 + shipping.  Chapter 14 contains 33 pages which deal specifically with the vagaries of the collision modifier.
    You can download just the chapter on Collision Detection from http://nonlinear.openspark.com/book/Collisions.zip.  This includes the demo movies and the unedited draft of the text for the chapter.
    Perhaps you will find this useful.

  • KeyPressed / collision detection

    I have a tile based platformer I am making and am having some trouble with the collision detection. I have it so that the game detects a collision before it actually occurs so that it wont happen in the game. However, it only appears to works right if i tap the arrow key into the wall, and if i hold the arrow key down i fly right through the tile until i let go (if i let go inside a block the hero gets stuck because it detects a collision anywhere i try to move after that). At this time i had the new coordinate to detect collision based on which direction i was moving gotten from keyPressed. Since this didnt work (assumed it was because the game loop and keyPressed dont take turns performing their actions) I made the new coordinate collision be detected from a method called in the main game loop and the result was that if I held down the key and flew into a wall, it doesnt stop exactly at the right spot (but I cant go through an entire row of tiles) but when I go the opposite direction from the collision (open space should work fine) it works fine until a point where in mid air it acts like a collision occured.
    I have tried very hard to find the error in my code concerning the collision detection and need to make sure these problems arent a result of limitations of keyPressed or something, but rather just the code i've written

    ok well I now have it set up so that before the hero moves it checks to see if the move is valid from each pixel starting at the hero to the length the hero moves in 1 directional press (using a rectangle that is the size of the hero, then has width 1 pixel larger etc until reaches the length of a move). The collision detection method returns true if there is a collision at any point, false otherwise. I tried to put the method in both the keyPressed method (for each case of a directional key pressed) as well as in the main game loop (not both at the same time) and neither worked perfectly and both worked about the same. Now the problem is that as long as the hero approaches the tile from a far away distance it works perfectly (a tile is 40 pixels in width and hero is 30), it appears that if the hero approaches from around 40 pixels out it will work but anything less and it will go through the tile as far from the 40 pixel mark it started (ie if hero starts at 37 pixels from tile and moves, it will go through the tile 3 pixels) then it can only travel back to the position it started even if there is no collision detected. Again, it appears that the hero must be about 40 pixels out (not sure if this is coincidence or it is exactly the length of the tile for a reason). Really can't figure this out, dont think there is a problem with the code i have written but probably i'm approaching the solution wrong

  • Better way of collision detection?

    right now I'm experiencing problems with using the same speed
    in reverse for collision detection (such as +=5 being countered by
    -= 5). While this works most of the time, if the velocity of the
    moving object changes, or on occasion, is out of sync with the map,
    the moving object gets stuck like glue to the "wall".
    Is there some other method of stopping the velocity when
    colliding, without freezing the object in place?

    I changed the = manspeed to = manspeed +1 and now the avatar
    is now "moonwalking"???
    for (i=1;i<49;i++){
    the_wall = this["brick_mc"+i];
    if(Key.isDown(Key.LEFT) &&
    avatar_mc.body_mc.hitTest(the_wall)){
    avatar_mc._x += manspeed +1;
    if(Key.isDown(Key.RIGHT) &&
    avatar_mc.body_mc.hitTest(the_wall)){
    avatar_mc._x -= manspeed +1;
    if(Key.isDown(Key.DOWN) &&
    avatar_mc.body_mc.hitTest(the_wall)){
    avatar_mc._y -= manspeed +1;
    if(Key.isDown(Key.UP) &&
    avatar_mc.body_mc.hitTest(the_wall)){
    avatar_mc._y += manspeed +1;
    }

  • Tile Based Collision Detection

    I am following Tonypa's Tile Based Tutorials and I have to
    say, they are great. He covers everything needed, except for one
    thing I am troubled on - Refering to Tutorial 9,
    http://www.tonypa.pri.ee/tbw/tut09.html,
    Stupid Enemy, instead of an enemy I want to make this a NPC who
    walks around in a village. So what do I do to make it so that I, or
    the char, doesn't walk right over the enemy/NPC? I am trying to
    develop an RPG, and it would look silly to have the character walk
    on top of the NPC. Can someone provided a snippet on how to make a
    collision detection with the NPC and not walk on top/under the NPC?
    One last favor to ask: What if I want to talk to the NPC if I
    am within a half tile? Would anyone be willing to share info on how
    this as well?
    Thanks a bunch in advance

    Ok, let me see if I get the read correct here: you have your scenery objects as tiles and when moving your players/NPC's through the scenery you are not scrolling the background as you go, but when you get to s certain point you want to scroll the tiles of the background also, so you can have new scenery cycle in as needed an still have the tiled background objects and new tiled background objects work for collision detection.
    If my take on your project is correct, then you have to make your tiles addressed with relative addressing formulas as you'll probably need to do with your sprites also.
    So the way this will go is that you have to make an offset and add them into your formula based on your character position. Then based on your character position you can choose to scroll your tiles left, right, up, down or what ever you choose to support. As a tile falls fully off the screen, you can dispose of it or cycle back through depending on how you implement your background.

  • Java3D collision detection (full test source)

    Hello!
    I have struggled with this problem for a month now, so I really need some help.
    I try to develop a game with collision detection with Java3D.
    To narrow it down I had made two test-java-files for you.
    File 1) Applet where I add all my objects (2 ColorCubes)
    File 2) A KeyListener to stear one of the cubes. The key listener also checks for collisons.
    All code is below, just compile and try.
    The idea is that the cube that I can stear should stop outside the other cube from any
    direction. But I can't detect that other cube at all.
    So if any one could try the code and give me some hints or example I would be most
    thankfull.
    Best regards
    Fredrik
    import java.applet.*;
    import java.awt.*;
    import java.awt.Frame;
    import java.awt.event.*;
    import com.sun.j3d.utils.applet.MainFrame;
    import com.sun.j3d.utils.universe.*;
    import com.sun.j3d.utils.geometry.*;
    import com.sun.j3d.utils.behaviors.keyboard.*;
    import javax.media.j3d.*;
    import javax.vecmath.*;
    import javax.swing.*;
    import java.util.*;
    public class Test extends Applet
         BranchGroup branchGroup;
         ColorCube colorCube1 = new ColorCube(0.4); //The cube that you can navigate
         ColorCube colorCube2 = new ColorCube(0.4);
         TransformGroup transformGroup1;
         public void init()
              setLayout(new BorderLayout());
              GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
              Canvas3D canvas3D = new Canvas3D(config);
              add("Center", canvas3D);
              SimpleUniverse simpleUniverse = new SimpleUniverse(canvas3D);
              branchGroup = new BranchGroup();
              //Cube1
              transformGroup1 = new TransformGroup();
              Transform3D transform3D1 = new Transform3D();
              transform3D1.set(new Vector3f(0.0f, 0.0f, -20.0f));
              transformGroup1.setTransform(transform3D1);
              transformGroup1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
              //for setShapeBounds
              transformGroup1.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
              colorCube1.setCapability(Node.ALLOW_BOUNDS_READ);
              transformGroup1.setPickable(false);
              transformGroup1.addChild(colorCube1);
              branchGroup.addChild(transformGroup1);
              canvas3D.addKeyListener( new TestListener(transformGroup1, this) );
              //Cube2
              TransformGroup transformGroup2 = new TransformGroup();
              Transform3D transform3D2 = new Transform3D();
              transform3D2.set(new Vector3f(0.0f, 2.0f, -20.0f));
              transformGroup2.setTransform(transform3D2);
              colorCube2.setPickable(true);
              transformGroup2.addChild(colorCube2);
              branchGroup.addChild(transformGroup2);
              branchGroup.compile();
              simpleUniverse.addBranchGraph(branchGroup);
         public static void main(String[] args)
              Frame frame = new MainFrame(new Test(), 600, 400);
    }The KeyListener with Collision detection
    import java.awt.event.*;
    import javax.media.j3d.*;
    import javax.vecmath.*;
    import java.awt.Frame;
    import com.sun.j3d.utils.applet.MainFrame;
    import com.sun.j3d.utils.picking.*;
    import com.sun.j3d.utils.geometry.*;
    public class TestListener implements KeyListener
         final static float DISTANCE      = 0.1f;
         final static double TURNANGLE      = 0.1;
         float x = 0.0f;
         float y = 0.0f;
         float z = -20.0f;
         private double angle = 0.0;
         TransformGroup transformGroup;
         Transform3D positionTransform3D = new Transform3D();
         Transform3D angleTransform3D = new Transform3D();
         Test test;
         PickTool pickTool;
         Point3d point3d;
         Vector3d vector3d;
         Transform3D transform3D;
         public TestListener(TransformGroup tfg, Test t)
              test = t;
              transformGroup = tfg;
              pickTool = new PickTool(test.branchGroup);
              pickTool.setCapabilities(test.colorCube2, PickTool.INTERSECT_FULL);
                pickTool.setMode( PickTool.BOUNDS );
              positionTransform3D.set(new Vector3f(x, y, z));
         public void keyTyped(KeyEvent e)
         public void keyPressed(KeyEvent e)
              if( e.getKeyCode() == KeyEvent.VK_UP )
                   if(isMovePossible(DISTANCE))
                        Transform3D temp = new Transform3D();
                     temp.set(new Vector3f(0, DISTANCE, 0));
                     positionTransform3D.mul(temp);
                     transformGroup.setTransform( positionTransform3D );
              else if( e.getKeyCode() == KeyEvent.VK_DOWN )
                   if(isMovePossible(-DISTANCE))
                        Transform3D temp = new Transform3D();
                     temp.set(new Vector3f(0, -DISTANCE, 0));
                     positionTransform3D.mul(temp);
                     transformGroup.setTransform( positionTransform3D );
              else if( e.getKeyCode() == KeyEvent.VK_LEFT )
                angle = angle + TURNANGLE;
                angleTransform3D.rotZ(TURNANGLE);
                positionTransform3D.mul(angleTransform3D);
                transformGroup.setTransform( positionTransform3D );
              else if( e.getKeyCode() == KeyEvent.VK_RIGHT )
                angle = angle - TURNANGLE;
                angleTransform3D.rotZ(-TURNANGLE);
                positionTransform3D.mul(angleTransform3D);
                transformGroup.setTransform( positionTransform3D );
         public void keyReleased(KeyEvent e)
         public boolean isMovePossible(float distance)
              boolean retValue = true;
              PickBounds pickBounds = new PickBounds( test.colorCube1.getBounds() );
              pickTool.setShape( pickBounds, getCordinate(test.transformGroup1) );
              PickResult pickResult = pickTool.pickAny( );
              if ( pickResult != null )
                   System.out.println("Boink");
                   retValue = false;
              else
                   retValue = true;
              return retValue;
         public static void main(String[] args)
              Frame frame = new MainFrame(new Test(), 600, 350);
        public Point3d getCordinate(TransformGroup transformGroup)
              Transform3D pointTransform3D = new Transform3D();
              transformGroup.getTransform( pointTransform3D );
              float[] cordinates = new float[16];
              pointTransform3D.get(cordinates);
              Point3d point = new Point3d(cordinates[3], cordinates[7], cordinates[11]);
              return point;
        public void printOutCordinates(TransformGroup transformGroup)
              Transform3D printOutTransform3D = new Transform3D();
              transformGroup.getTransform( printOutTransform3D );
              float[] cordinates = new float[16];
              printOutTransform3D.get(cordinates);
              for(int i = 0; i < cordinates.length; i++)
                   System.out.println(i + ":" + cordinates);
              System.out.println();

    First of all I would like to point out, that i've never actually used the PickTool, or in fact any element of the whole picking infrastructure from Java3D. Nevertheless I have done some collision detection in Java3D and it worked just fine. Unfortunatelly it required building the whole coldet ( collision detection ) algorythm from scratch :-)
    If You want to collide only two bodies then You probably should consider creating a special Behaviour class that will react to the WakeupOnCollisionEntry and WakeupOnCollisionExit criterions. There is a good example of such a behaviour class in the Java3D demos, under TickTockCollision. However if there will be more bodies in Your scene and they will collide with each other in a random way, then You should rather consider building the whole coldet engine from scratch ( it's not very difficult, but it takes some time )
    Either way, You could try to get a second opinion on the Java3D forum. People out there should have more experience with Java3D

  • Camera Collision Detection - Is It Possible?

    Hi,
    I am making a 3D RPG game and I would like to know if it is possible to get collision detection on a camera created in Adobe Director 11.  I have my 3D character running through an underground maze and he detects correctly on the walls of the maze.  However, I also have a camera as a child to the character so this moves with him.  I have added a bounding-box to this camera but it still doesn't detect whereas the gunBB works fine, as does the characterBB.
    This is really confusing and I don't know what I am doing wrong.  Any help would be really appreciated!
    Thanks, Phil.

    Thanks for the reply.  It is not exactly what I am looking for as the script is different than the style I am using.  This is the script I have got so far, I have also added an extra camera to view what is happening.
    property pSprite, p3Dmember -- reference to the 3D member
    --property pLevel, maze -- Level
    --property pLeftArrow, pRightArrow, pDownArrow, pUpArrow -- arrow keys
    --property pCharacter -- character in the 3D world
    --property pTofuBB, pGunBB, gun --  character + gun
    --property gUseGun, hasGun
    --property pCamera, pCameraBoundingBox --camera and bounding box
    --property barrier,mountains,exitmaze
    --property door1, door2, turret, turretgun
    --property keylist, keypresslist -- for keys pressed
    --on beginSprite me
    --  -- define the 3D cast member
    --  p3Dmember = sprite(me.spriteNum).member
    --  -- reset the 3D world
    --  p3Dmember.resetWorld()
    --  pSprite = sprite(me.spriteNum)
    --  pCamera = pSprite.camera
    --  -- define level as 3DS level Plane - must all be defined after resetWorld()
    --  pLevel = p3Dmember.model("landscape")
    --  mountains = p3Dmember.model("mountains")
    --  turret = p3Dmember.model("turret")
    --  turretgun = p3Dmember.model("turretgun")
    --  maze = p3Dmember.model("maze")
    --  exitmaze = p3Dmember.model("exitmaze")
    --  pCharacter = p3Dmember.model("hero")
    --  gun = p3Dmember.model("gun")
    --  barrier = p3Dmember.model("barrier")
    --  door1 = p3Dmember.model("door1")
    --  door2 = p3Dmember.model("door2")
    --  -- stop hero walking biped animation
    --  pCharacter.bonesPlayer.pause()
    --  -- below for key control
    --  keylist = []
    --  keypresslist = []
    --  -- this sets up a list of keycodes to track.
    --  -- this code covers the arrow keys only, it could be changed to cover a full range of keys
    --  repeat with i = 123 to 126
    --    keylist[i] = i -- this creates a list of keycodes to track
    --    keypresslist[i] = 0 -- this creates a "last state" list that corresponds to the keycode.
    --    --keypresslist tracks the last known state of that key, so we can tell when a keypress has changed.
    --  end repeat
    --  -- key control end
    --  createBoundingBoxes
    --  createLight
    --end
    -- code used to create bounding boxes
    --on createBoundingBoxes
    --  -- create tofu bounding box for character
    --  tofuBB_MR = p3Dmember.newModelResource("tofuBox",#box)
    --  tofuBB_MR.height = 235
    --  tofuBB_MR.width = 235
    --  tofuBB_MR.length = 500
    --  pTofuBB = p3Dmember.newModel("tofuBox",tofuBB_MR)
    --  pTofuBB.worldPosition = pCharacter.worldPosition
    --  -- create parent child relationships
    --  pCharacter.addChild(pTofuBB, #preserveWorld)
    --  invisShader = p3Dmember.newShader("invisShader",#standard)
    --  invisShader.transparent = TRUE
    --  invisShader.blend = 50
    --  pTofuBB.shaderlist = p3Dmember.shader("invisShader")
    --  pCamera = p3Dmember.newCamera("camera")
    --  frontCam = p3Dmember.newCamera("frontCam")
    --  frontCam.fieldOfView = 35
    --  frontCam.transform.position = vector(-14150,-3100,-600)
    --  frontCam.transform.rotation = vector(90,0,180)
    --  pSprite.camera = p3Dmember.camera("frontCam")
    --  pCamera.fieldOfView = 75
    --  pCamera.transform.position = vector(500,1800,450) --450
    --  pCamera.transform.rotation = vector(90,0,180)
    --  pSprite.camera = p3Dmember.camera("camera")
    --  cameraModRes = p3Dmember.newModelResource("cameraModRes",#sphere)
    --  cameraModRes.radius = 200
    --  pCameraBoundingBox = p3Dmember.newModel("CameraBoundingBox",cameraModRes)
    --  pCameraBoundingBox.worldPosition = pCamera.worldPosition
    --  pCameraBoundingBox.shaderList = p3Dmember.shader("invisShader")
    --  pCamera.addChild(pCameraBoundingBox, #preserveWorld)
    --  pCharacter.addChild(pCamera,#preserveWorld)
    --  -- create gun bounding box
    --  gun.worldposition.z = gun.worldposition.z + 200
    --  gunMR = p3Dmember.newModelResource("gunSphere",#sphere)
    --  gunMR.radius = 218
    --  pGunBB = p3Dmember.newModel("gunSphere", gunMR)
    --  pGunBB.worldPosition = gun.worldPosition
    --  pGunBB.shaderList = p3Dmember.shader("invisShader")
    --  pGunBB.addChild(gun, #preserveWorld)
    --end
    -- code below used to light up level
    --on createLight
    --  -- create a point 'bulb' type light
    --  p3Dmember.newLight("Bulb Light", #point )
    --  -- position the light
    --  p3Dmember.light("Bulb Light").transform.position = vector(0,0,100)
    --  -- define light color and intensity
    --  p3Dmember.light("Bulb Light").color = rgb(255,255,255)
    --  -- Make the character model a parent of the light
    --  -- Bulb Light becomes a child of pCharacter
    --  -- This is done so that the light will always move
    --  -- with the character.
    --  pCharacter.addChild(p3Dmember.light("Bulb Light"),#preserveParent)
    --end
    --on keyUp me
    --  --pCharacter.bonesPlayer.pause()
    --  --if keypressed("s")
    --end
    --on keydown me
    --  if keypressed("c") then changeCamera
    --end
    --on changeCamera
    --  -- check the sprites camera and switch
    --  if pSprite.camera = p3Dmember.camera("frontCam") then
    --     pSprite.camera = p3Dmember.camera("camera")
    --     else
    --     pSprite.camera = p3Dmember.camera("frontcam")
    --     end if
    --end
    --on exitFrame me
    -- below detects which keys are pressed
    --repeat with i = 1 to keylist.count
    --inewstate= keypressed( keylist[i] )
    --if keypresslist[i] <> inewstate then -- this means the key changed status from whether it's up or down
    --if inewstate= 0 then
    -- they key was released
    --keyLastReleased = keylist[i]
    --if (keyLastReleased=123) then pLeftArrow = 0 -- 123 = left arrow key
    --if (keyLastReleased=124) then pRightArrow = 0 -- 124 = right arrow key
    --if (keyLastReleased=125) then
    --pDownArrow = 0 -- 125 = down arrow key
    --pCharacter.bonesPlayer.pause()
    --end if
    --if (keyLastReleased=126) then
    --pUpArrow = 0 -- 126 = up arrow key
    --pCharacter.bonesPlayer.pause()
    --end if
    --else
    -- the key was pressed
    --keyLastPressed = keylist[i]
    --if (keyLastPressed=123) then pLeftArrow = 1 -- 123 = left arrow key
    --if (keyLastPressed=124) then pRightArrow = 1 -- 124 = right arrow key
    --if (keyLastPressed=125) then pDownArrow = 1 -- 125 = down arrow key
    --if (keyLastPressed=126) then pUpArrow = 1 -- 126 = up arrow key
    --end if
    --keypresslist[i] = inewstate-- update so we remember its new state.
    --end if
    --end repeat
    -- by the time this repeat loop has finished, keypresslist will contain a complete index of what keys
    -- are held down, and which aren't.
    -- Note: most keyboards have a limit on how many keys they'll track simultaneously.
    --checkCollisions
    --characterMove
    -- gun collision start
    --if gUseGun = TRUE then
    --pTofuBB.addChild(pGunBB,#preserveParent)
    --pGunBB.worldPosition = pTofuBB.worldPosition
    --pGunBB.worldPosition.z = 500
    --pGunBB.worldPosition.x = pCharacter.worldPosition.x - 150 --50
    ---pGunBB.worldPosition.y = -860
    --pGunBB.rotate(0,0,-240)
    --pCharacter.bonesPlayer.pause()
    --gUseGun = FALSE
    --hasGun = TRUE
    --end if
    -- gun collision end
    --end
    --on characterMove
    -- if the right arrow is pressed,
    -- rotate the character 5 degrees about the z-axis
    --if pRightArrow then
    -- rotate character and camera
    --pCharacter.rotate(0,0,-2)
    --end if
    --if the left arrow is pressed,
    -- rotate character -5 degrees about the z-axis
    --if pLeftArrow then
    --pCharacter.rotate(0,0,2)
    --end if
    -- if the up arrow is pressed,
    -- move the character 5 pixels along the y-axis
    --if pUpArrow then
    --if (pcharacter.bonesPlayer.playing = 0) then
    --pCharacter.bonesplayer.loop = true
    --if (_key.shiftDown) then
    --pCharacter.bonesPlayer.playRate = 2
    --if (hasGun = TRUE) then -- running
    --pCharacter.bonesplayer.play("hero", 1, 6270, 8330, 1)
    --else
    --pCharacter.bonesplayer.play("hero", 1, 2067, 4130, 1)
    --end if
    --else
    --pCharacter.bonesPlayer.playRate = 1
    --if (hasGun = TRUE) then -- walking
    --pCharacter.bonesplayer.play("hero", 1, 4200, 6200, 1)
    --else
    --pCharacter.bonesplayer.play("hero", 1, 0, 2000, 1)
    --end if
    --end if
    --end if -- bonesPlayer playing
    --if (_key.shiftDown) then
    --pCharacter.translate(120,0,0)
    --else
    --pCharacter.translate(50,0,0)
    --end if
    --end if
    -- if the down arrow is pressed,
    -- move the character -5 pixels along the y-axis
    --if pDownArrow then
    --if (pcharacter.bonesPlayer.playing = 0) then
    --pCharacter.bonesplayer.loop = true
    --if (_key.shiftDown) then
    --pCharacter.bonesPlayer.playRate = 2
    --if (hasGun = TRUE) then -- running
    --pCharacter.bonesplayer.play("hero", 1, 6270, 8330, 1)
    --else
    --pCharacter.bonesplayer.play("hero", 1, 2067, 4130, 1)
    --end if
    --else
    --pCharacter.bonesPlayer.playRate = 1
    --if (hasGun = TRUE) then -- walking
    --pCharacter.bonesplayer.play("hero", 1, 4200, 6200, 1)
    --else
    --pCharacter.bonesplayer.play("hero", 1, 0, 2000, 1)
    --end if
    --end if
    --end if -- bonesPlayer playing
    --if (_key.shiftDown) then
    --pCharacter.translate(-120,0,0)
    --else
    --pCharacter.translate(-50,0,0)
    --end if
    --end if
    -- floor collision
    --thisPosn = pTofuBB.worldPosition
    -----thisPosn.z = 1000
    --tModelList = [pLevel, maze, door1, door2] -- removed wall as its no longer on level
    --tOptionsList = [#levelOfDetail: #detailed, #modelList: tModelList]
    --thisData = p3Dmember.modelsUnderRay(thisPosn,vector(0,0,-1),tOptionsList)
    --if thisData.count then
    --totalCount = thisData.count
    --repeat with dataIndex = 1 to totalCount
    --terrainPosn = thisData[dataIndex].isectPosition
    --- if (thisData[dataIndex].model = pLevel) then
    --tDiff = (terrainPosn.z - pTofuBB.worldPosition.z) + 375
    --pCharacter.translate(0,0,tDiff,#world)
    --exit repeat
    --end repeat
    --end if
    --end
    --on checkCollisions
    --tModelList = [pGunBB, barrier, mountains, maze, exitmaze, turret, turretgun]
    --tOptionsList = [#maxNumberOfModels: 2, #levelOfDetail: #detailed, #modelList: tModelList, #maxDistance: 300]
    -- make 4 rays around character checking for collisions, 90 degrees apart
    --repeat with i = 1 to 18
    --pCharacter.rotate(0,0,20,#self)
    --returnData = p3Dmember.modelsUnderRay(pCharacter.worldPosition,pCharacter.transform.xAxis,tOptionsList )
    --if (returnData.count) then
    -- first in array is closest
    --checkObjectFoundDistance(returnData[1])
    --end if
    --end repeat
    --end
    --on checkObjectFoundDistance thisData -- check distance from collision with objects
    --dist = thisData.distance
    -- check if distance is less than width of bounding box
    --if (dist < 150) then
    --case thisData[#model].name of
    --"gunSphere":
    --gUseGun = TRUE
    --"barrier":
    -- get distance of penetration
    --diff = 150 - dist
    -- calculate vector perpend icular to the wall's surface to move the character
    -- using the #isectNormal property
    --tVector = thisData.isectNormal * diff
    -- move the character in order to resolve the collision
    --pCharacter.translate(tVector,#world)
    --end case
    --end if
    --if (dist < 150) then
    --case thisData[#model].name of
    --"gunSphere":
    --gUseGun = TRUE
    --"mountains":
    -- get distance of penetration
    --diff = 150 - dist
    -- calculate vector perpend icular to the wall's surface to move the character
    -- using the #isectNormal property
    --tVector = thisData.isectNormal * diff
    -- move the character in order to resolve the collision
    --pCharacter.translate(tVector,#world)
    --end case
    --end if
    --if (dist < 150) then
    --case thisData[#model].name of
    --"gunSphere":
    --gUseGun = TRUE
    --"maze":
    -- get distance of penetration
    --diff = 150 - dist
    -- calculate vector perpend icular to the wall's surface to move the character
    -- using the #isectNormal property
    --tVector = thisData.isectNormal * diff
    -- move the character in order to resolve the collision
    --pCharacter.translate(tVector,#world)
    --end case
    --end if
    --if (dist < 150) then
    --case thisData[#model].name of
    --"gunSphere":
    --gUseGun = TRUE
    --"exitmaze":
    -- get distance of penetration
    --diff = 150 - dist
    -- calculate vector perpend icular to the wall's surface to move the character
    -- using the #isectNormal property
    --tVector = thisData.isectNormal * diff
    -- move the character in order to resolve the collision
    --pCharacter.translate(tVector,#world)
    --end case
    --end if
    --if (dist < 150) then
    --case thisData[#model].name of
    --"gunSphere":
    --gUseGun = TRUE
    --"turret":
    -- get distance of penetration
    --diff = 150 - dist
    -- calculate vector perpend icular to the wall's surface to move the character
    -- using the #isectNormal property
    --tVector = thisData.isectNormal * diff
    -- move the character in order to resolve the collision
    --pCharacter.translate(tVector,#world)
    --end case
    --end if
    --if (dist < 150) then
    --case thisData[#model].name of
    --"gunSphere":
    --gUseGun = TRUE
    --"turretgun":
    -- get distance of penetration
    --diff = 150 - dist
    -- calculate vector perpend icular to the wall's surface to move the character
    -- using the #isectNormal property
    --tVector = thisData.isectNormal * diff
    -- move the character in order to resolve the collision
    --pCharacter.translate(tVector,#world)
    --end case
    --end if
    --end

  • Using ModelsUnderRay Collision detection

    Ok first things first. I know you guys who have been reading
    my other post is going to get confused after reading this post so
    let me make myself clear. First yes I was previously trying to
    Havok, but I could not get my car to work with it. So This is why I
    am now asking stuff about ModelsUnderRay collision detection.
    Second, I found this tutorial at
    http://www.fbe.unsw.edu.au/learning/director/,
    and all things seem to go pretty good with using the max File the
    tutorial uses. Meaning I have not tried this on my car as of yet.
    In addition, considering that things seem to work with the
    tutorial, I now came up with a new question. Basically, if I am
    correct, I think by using the code below, this is not going to work
    with my car when the car is going up a hill. I conclude this by
    knowing that the tutorial just uses a character, meaning it is not
    like a using something like a car that has a chassis and 4 wheels.
    So my question is this... How can I get the chassis to follow the
    angle of the hill if I am using a behaviour that looks something
    like this...
    on collisionDetect me
    -- create a list to store collision data created by
    modelsUnderRay
    -- cast ray to left
    collisionList =
    p3Dmember.modelsUnderRay(pCharacter.worldPosition, \
    -pCharacter.transform.yAxis,#detailed)
    -- if models picked up by ray, then activate checkForCollion
    -- handler and send the collisionList as a parameter
    if (collisionList.count) then
    me.checkForCollision(collisionList[1])
    -- cast ray to right
    collisionList =
    p3Dmember.modelsUnderRay(pCharacter.worldPosition, \
    pCharacter.transform.yAxis,#detailed)
    -- if models picked up by ray, then check for collision
    if (collisionList.count) then
    me.checkForCollision(collisionList[1])
    -- cast ray forward
    collisionList =
    p3Dmember.modelsUnderRay(pCharacter.worldPosition, \
    pCharacter.transform.xAxis,#detailed)
    -- if models picked up by ray, then check for collision
    if (collisionList.count) then
    me.checkForCollision(collisionList[1])
    -- cast ray backward
    collisionList =
    p3Dmember.modelsUnderRay(pCharacter.worldPosition, \
    -pCharacter.transform.xAxis,#detailed)
    -- if models picked up by ray, then check for collision
    if (collisionList.count) then
    me.checkForCollision(collisionList[1])
    end
    on checkForCollision me, collisData
    -- grab the #distance value from the CollisionList
    dist = collisData.distance
    -- check if distance is less than width of bounding box
    if (dist < pCharBoundingBox.resource.width ) then
    -- get distance of penetration
    diff = pCharBoundingBox.resource.width - dist
    -- calculate vector perpendicular to the wall's surface to
    move the character
    -- using the #isectNormal property
    tVector = collisData.isectNormal * diff
    -- move the character in order to resolve the collision
    pCharacter.translate(tVector,#world)
    end if
    end
    on keyDown
    -- check to see which key has been pressed
    -- and set the property relating to that key to TRUE
    if keypressed(123) then pLeftArrow = TRUE -- 123 = left
    arrow key
    if keypressed(124) then pRightArrow = TRUE -- 124 = right
    arrow key
    if keypressed(125) then pDownArrow = TRUE -- 125 = down
    arrow key
    if keypressed(126) then pUpArrow = TRUE -- 125 = up arrow
    key
    -- if 'r' key pressed, return character to starting position
    if keypressed("r") then resetCharacter
    -- if 'c' key is pressed, then switch camera
    if keypressed("c") then changeCamera
    end
    on keyUp
    -- when the arrow keys are released, set the properties to
    FALSE
    pLeftArrow = FALSE
    pRightArrow = FALSE
    pUpArrow = FALSE
    pDownArrow = FALSE
    end
    on exitFrame
    characterMove
    end
    on characterMove
    -- if the right arrow is pressed,
    -- rotate the character 5 degrees about the z-axis
    if pRightArrow then pCharacter.rotate(0,0,-5)
    --if the right arrow is pressed,
    -- rotate character -5 degrees about the z-axis
    if pLeftArrow then pCharacter.rotate(0,0,5)
    -- if the up arrow is pressed,
    -- move the character 5 pixels along the y-axis
    if pUpArrow then pCharacter.translate(0,5,0)
    -- if the down arrow is pressed,
    -- move the character -5 pixels along the y-axis
    if pDownArrow then pCharacter.translate(0,-5,0)
    -- move along terrain
    -- create reference for terrain (ground)
    terrain = p3Dmember.model("Terrain")
    -- store character's position
    charPos = pCharacter.worldPosition
    charPos.y = charPos.y - 20
    -- cast a ray down
    collisData =
    p3Dmember.modelsUnderRay(charPos,vector(0,0,-1),#detailed)
    -- if model is picked up on ray.
    if collisData.count then
    -- store total no of models detected by the ray
    totalCount = collisData.count
    repeat with modelNo = 1 to totalCount
    -- check if over the terrain model
    if (collisData[modelNo].model = terrain) then
    terrainPos = collisData[modelNo].isectPosition
    -- find out the distance the character should move up or
    down
    diff = (terrainPos.z - pCharacter.worldPosition.z)+45
    -- move the character
    pCharacter.translate(0,0,diff,#world)
    end if
    end repeat
    end if
    end

    ok,
    I have been trying to work this out for ahwile and I got
    pretty close on getting this correct but there are still some
    glitches. So far I did a little research in the help files to see
    what the dot product does and this is how I got my calculations
    going so far
    --the code
    on beginSprite me
    I created 2 spheres and a box. Next, I then positioned them
    so that the first sphere is alligned with the front end of the box
    and then I aligned the second sphere to back of the box. I will not
    show you the code of beginSprite because all this does is for
    creating the models and there are no calculations going inside this
    handler. In addition, with these 3 models, my purpose is to say
    lets prtend that the box is the chasis of the car and the sphere
    that is placed at the frent end of the chassis are to represemt the
    2 front wheels and the othere sphere is to represent the 2 back
    wheels of the car. Also, I initlalised a timer to the following
    below
    pTimer = (the milliseconds)
    end beginSprite
    ... note The timere is just for purposes of simulating a
    pretend upward movement for the wheels. See below which should
    explain it better then I can say it in words.
    --the code below is the calculations. The translations is for
    saying that I am pretending that the wheels are inclining up a
    hill. However, the wheels in the true game will be getting
    calculated by finding the distance of collion by using the
    modelsUnderRay function just like you normally would. By the way,
    all models and the camera are set to y is the up vector
    on exitFrame
    if ((the milliseconds) - pTimer) > 1000 then -- increment
    the calculations every one second
    pBall1.translate(0, 0.125, 0) -- This is for saying that
    this is the calculations that I am calculating the front wheels
    need to move up when they incline up the hill.
    pBall2.translate(0, -0.125, 0) -- Just like the front wheel
    pretend calulations but for the back wheels, and use a negative
    translate.
    pos1 = pBall1.transform.position -- get the calculated
    position for the front wheels
    pos2 = pBall2.transform.position -- get the calculated
    position for the back wheels
    norm1 = pos1.getnormalized() -- not sure I understand this,
    but in the help files, it says that when you calculate the dot
    product of 2 vectors that have been normalized, you then get their
    cosine
    norm2 = pos2.getNormalized() -- normalize the back wheels
    position
    dotProduct = norm1.dot(norm2) -- calculate the dot product
    of the 2 vectors
    pBox.rotate(dotAngle, 0, 0) -- I took a guess and thought
    that using the dotProduct will allow me to correctly rotate the
    chassis but the chassis is quite not rotating correctlly
    pTimer = (the milliseconds) -- update the timer so that we
    can recyle the above code again
    end if
    end exitFrame
    ... Ok, now like I said previously, the chassis is rotating
    almost correctlly, but if you continue to do this, and by after the
    third cycle, the front end wheels start to collide with the
    chassis. So in other words, the rotations look correct untill
    exitFrame is called for the third time and after which then the
    front wheels start to collide with the chassis.
    So I am wondering if anyone could help me out to fix this and
    explain what I am doing wrong?

  • JVM falls down often. Why? (I have thread dump)

    Good day!
    Sometimes (about each two days) our production server falls down. But we can't understand why.
    There is no one record in logs and stdout.
    When server has falled down two days ago, I make full stack dump (kill -3). This is the link to stackdump:
    http://users.g.com.ua/~vitaly_b/work/stackdump2.zip
    I have writed tool that analyzes stackdump.
    I've seen that there is 5 locks that are in waiting state from more than one another threads. This locks are in waiting state for some minutes.
    One of this lock (0x00002b58afb89630) is never locked in stack dump, but 85 threads waits for it. How can it be???
    Another 5 locks are locked with threads, that makes primitive operations for very long time. For example this thread now in java.util.HashMap.newKeyIterator, but 89 other threads are waiting for lock <0x00002b58afb85b1> for few minutes:
    "http-8080-Processor1533" daemon prio=1 tid=0x00002aaab2566160 nid=0x6acb runnable
    [0x000000004c410000..0x000000004c412c20]
         at java.util.HashMap.newKeyIterator(HashMap.java:889)
         at java.util.HashMap$KeySet.iterator(HashMap.java:921)
         at java.util.HashSet.iterator(HashSet.java:154)
         at net.sf.ehcache.event.RegisteredEventListeners.notifyElementExpiry(RegisteredEventListeners.java:116)
         at net.sf.ehcache.Cache.remove(Cache.java:1017)
         at net.sf.ehcache.Cache.searchInMemoryStore(Cache.java:829)
         at net.sf.ehcache.Cache.get(Cache.java:654)
         - locked <0x00002b58afb85b18> (a net.sf.ehcache.Cache)
         at org.hibernate.cache.EhCache.get(EhCache.java:75)
         at org.hibernate.cache.StandardQueryCache.get(StandardQueryCache.java:96)
         at org.hibernate.loader.Loader.getResultFromQueryCache(Loader.java:2086)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
         at java.lang.Thread.run(Thread.java:595)Other locks are waits in same state.
    Stack dump analysis with my tool:
    waiting to lock <xxx>::
    <0x00002b58afb8bd18>: 1 times.
    <0x00002b58afb9aa50>: 1 times.
    <0x00002b58afb9c138>: 2 times.
    <0x00002b58afb8b690>: 1 times.
    <0x00002b597ae1ecf8>: 1 times.
    <0x00002b58afb85b18>: 89 times.
    <0x00002b58afb88548>: 1 times.
    <0x00002b58afb96110>: 1 times.
    <0x00002b58afb89630>: 85 times.
    <0x00002b58afb8e5a0>: 1 times.
    <0x00002b58afb98090>: 1 times.
    <0x00002b58afbacd28>: 1 times.
    <0x00002b58afb99380>: 1 times.
    <0x00002b58afb9a0f8>: 1 times.
    <0x00002b58afb90d48>: 1 times.
    <0x00002b58a34127a8>: 4 times.
    <0x00002b58b09c5138>: 29 times.
    <0x00002b58afb91d18>: 1 times.
    waiting on <xxx>::
    <0x00002b58afbb0370>: 1 times.
    <0x00002b58adae0ff8>: 1 times.
    <0x00002b58adae0f48>: 1 times.
    <0x00002b58adae0d38>: 1 times.
    <0x00002b58afbb0518>: 1 times.
    <0x00002b58adae0de8>: 1 times.
    <0x00002b58af9a7ba0>: 1 times.
    <0x00002b58adae0e98>: 1 times.
    <0x00002b58afbaf898>: 1 times.
    <0x00002b58b0930400>: 1 times.
    <0x00002b58afbaff00>: 1 times.My system configuration:
    jdk 1.5.0.11
    tomcat 5.5.20
    SuSe Linux 10.1
    How can I solve this problem? Help me please!
    Thanks!

    Good day!
    Sometimes (about each two days) our production server falls down. But we can't understand why.
    There is no one record in logs and stdout.
    When server has falled down two days ago, I make full stack dump (kill -3). This is the link to stackdump:
    http://users.g.com.ua/~vitaly_b/work/stackdump2.zip
    I have writed tool that analyzes stackdump.
    I've seen that there is 5 locks that are in waiting state from more than one another threads. This locks are in waiting state for some minutes.
    One of this lock (0x00002b58afb89630) is never locked in stack dump, but 85 threads waits for it. How can it be???
    Another 5 locks are locked with threads, that makes primitive operations for very long time. For example this thread now in java.util.HashMap.newKeyIterator, but 89 other threads are waiting for lock <0x00002b58afb85b1> for few minutes:
    "http-8080-Processor1533" daemon prio=1 tid=0x00002aaab2566160 nid=0x6acb runnable
    [0x000000004c410000..0x000000004c412c20]
         at java.util.HashMap.newKeyIterator(HashMap.java:889)
         at java.util.HashMap$KeySet.iterator(HashMap.java:921)
         at java.util.HashSet.iterator(HashSet.java:154)
         at net.sf.ehcache.event.RegisteredEventListeners.notifyElementExpiry(RegisteredEventListeners.java:116)
         at net.sf.ehcache.Cache.remove(Cache.java:1017)
         at net.sf.ehcache.Cache.searchInMemoryStore(Cache.java:829)
         at net.sf.ehcache.Cache.get(Cache.java:654)
         - locked <0x00002b58afb85b18> (a net.sf.ehcache.Cache)
         at org.hibernate.cache.EhCache.get(EhCache.java:75)
         at org.hibernate.cache.StandardQueryCache.get(StandardQueryCache.java:96)
         at org.hibernate.loader.Loader.getResultFromQueryCache(Loader.java:2086)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
         at java.lang.Thread.run(Thread.java:595)Other locks are waits in same state.
    Stack dump analysis with my tool:
    waiting to lock <xxx>::
    <0x00002b58afb8bd18>: 1 times.
    <0x00002b58afb9aa50>: 1 times.
    <0x00002b58afb9c138>: 2 times.
    <0x00002b58afb8b690>: 1 times.
    <0x00002b597ae1ecf8>: 1 times.
    <0x00002b58afb85b18>: 89 times.
    <0x00002b58afb88548>: 1 times.
    <0x00002b58afb96110>: 1 times.
    <0x00002b58afb89630>: 85 times.
    <0x00002b58afb8e5a0>: 1 times.
    <0x00002b58afb98090>: 1 times.
    <0x00002b58afbacd28>: 1 times.
    <0x00002b58afb99380>: 1 times.
    <0x00002b58afb9a0f8>: 1 times.
    <0x00002b58afb90d48>: 1 times.
    <0x00002b58a34127a8>: 4 times.
    <0x00002b58b09c5138>: 29 times.
    <0x00002b58afb91d18>: 1 times.
    waiting on <xxx>::
    <0x00002b58afbb0370>: 1 times.
    <0x00002b58adae0ff8>: 1 times.
    <0x00002b58adae0f48>: 1 times.
    <0x00002b58adae0d38>: 1 times.
    <0x00002b58afbb0518>: 1 times.
    <0x00002b58adae0de8>: 1 times.
    <0x00002b58af9a7ba0>: 1 times.
    <0x00002b58adae0e98>: 1 times.
    <0x00002b58afbaf898>: 1 times.
    <0x00002b58b0930400>: 1 times.
    <0x00002b58afbaff00>: 1 times.My system configuration:
    jdk 1.5.0.11
    tomcat 5.5.20
    SuSe Linux 10.1
    How can I solve this problem? Help me please!
    Thanks!

  • [as1, as2] Complex Collision Detection, part 2

    Hello.
    I´d like to know, if there´s another way, not being the gskinner´s class, to
    do a complex collision detection, one that can check for collision between,
    two irregular shapes, without using too much of the processor.
    Thank you.

    You mean the bitmap data hittest method took too much processor power?
    Without knowing all your details it is hard to tailor an exact system and how it should work. So here is somewhat of how I would do it.
    I am assuming that you are trying to check if many things are hitting many other things and that the shapes, while irregular, are not wildly divergent from their bounding box. (In otherwords that they are neat shapes that are at least close to their bounding box, perhaps filling some 70% or so.) And I'm also assuming that they are not complex paths, e.g., not a doughnut/torus.
    Be sure to use a double loop that only tests the correct number of pairs. So if there are n items you will need n*(n-1)/2 trials. NOT n*(n-1). Very important here. Of course even this approach is a bit inefficient, and you could try the RDC algorithm (http://lab.polygonal.de/articles/recursive-dimensional-clustering/) But for smallish numbers of items the first approach is probably suitable.
    Use the basic bounding box hittest on all the pairs. For the pairs where there is a hit at that level put them in an array for further processing. This test is fairly quick and there is no point using a more expensive test on each pair. (As to the above RDC, I haven't read the whole thing closely for awhile, so this step might already be part of that algorithm)
    Take that array and use one of the other methods like the bitmap hittest or some version of the same algorithm of gskinners.
    Did you do all three of these things together or just #3? I don't know exactly how much speed you need, but some combination of these things should work fairly well.
    I'm still not really clear on why you don't want to use gskinner's class. Have you tried it and does it provide enough speed? Did you try kglad's method? Did it provide enough speed? I don't think either of those people would mind you trying out their algorithms to learn from -- just to see what is possible. (Sorry if I'm misrepresenting you there kglad! I plan to go back and find that bit of code just to see what clever tricks you are up to. )
    If you can't get enough speed with those algorithms, then how are you sure that is where the problem lies? Maybe there is something else that is sucking cycles? Just a thought.
    The other choice is to simplify some of your shapes to circles or other regular shapes.

  • Help please my ip 5 tochscreen doesn't  response at all :( what should i do ? by the way my phne didnt fall down or get touch with water

    i have problem with my tochscreen for two days it doesnt response at all . I dont know what should i do now ? and by the way my phone didnt fall down or be in toch with water

    thanks
    i think im gonna have an apointment with apple and give them a visit

  • I try  to print an illustrator document and the program fall down (lion)

    When i try to print an illustretor document, illustrator fall down an i have to reiniciate but if i save the same document as a pdf and i open it with previous view I can print it.
    I think it's the firts time i have tried to print since I change to lion

    Thanks for your help Monika. Yes, the printer is is supported by the system. The printer is about 2 months old and the driver were installed then. I called Canon support and they said it sounded like a problem with Illustrator. I can print the same file by saving it as a pdf and printing from Acrobat Pro, so it seems to be a problem with Illustrator. If I try to print the pdf from Illustrator it will quit.

  • Optimizing collision detection

    Hi,
    in a simulation I have to check for many collisions between
    multiple
    objects. So what I am doing is put a detection on each
    relevant
    movieclip that checks a list of objects (cars). When the
    number of
    objects is growing the number of loops is growing the same
    amount but
    the loops that checks for collision are growing too. So I am
    running
    into a preformace problem.
    I was thinking about how to optimize this performance
    problem.
    * first idea was to check only clips that are in a specific
    area. But
    this also creates an overhead on checking what area the clips
    are. I
    could create overlapping clips that are used to represent
    this areas and
    check if the clips are inside these areas.
    I am not quite sure if this is a real performance
    optimization or
    creates too much overhead.
    or
    * As I am also check for distance when colliding I could
    create a
    timeout for two clips that are too far away from each other
    and skip
    checking on next frame. But I am not sure how to create the
    conditions
    without creating a new big overhead.
    What I am using now is to exclude clips from any collision
    detection
    when they are moving out the scene and won't collide anyway.
    Anyone seen nice concepts and theories on optimizing complex
    collision
    detection?
    thanks for any help - if anyone understands what I was trying
    to tell ;)

    divide your collision region into sections that have are the
    size of your smallest object. assign each object to its current
    section. each section needs to retrieve the objects within it. you
    need a look-up table or easy way to determine adjacent sections.
    assign each section an id #.
    to efficiently detect pair-wise relations (like hittests)
    between all object pairs, check for relations between all objects
    in the section with the lowest id# and adjacent section. increment
    the id# and repeat.

Maybe you are looking for

  • How can I play a .pvr file stored in my STB?

    i need to play a .pvr file stored in my STB. first i listed the files using java.io.File, file.list() but i don't have any idea how to transform this file to a media locator one, for example. My STB have mhp 1.0.2, i need 1.0.3 or higer to do this? a

  • Big trouble(got stucked) trying to convert swf to mov

    Hello, folks I'm trying to convert some swf files to Mov, or mpeg, or any video type file, so I can import it to FCE and use it. Since FCExpress do not work with swf files, I've downlodead a LOT, A LOT, of softwares and NO ONE of it worked in this co

  • Sun Directory Server Password Policy Problems

    Hi, I am using Sun Directory Server and Sun AM (2005Q1). We are using SUN DS to configure the password policy to expire user passwords after 30 days. Also, the warning has been set to "one day before expiry". However, when the warning IS displayed to

  • Bridge CS6 Cache

    When I change folders in Bridge CS6, I'm told there's a cache problem and I should purge the cache.  I've purged this several times with no effect, restarting Beidge each time.  Have also rebooted and done a safe boot.  I'd like to reinstall but have

  • Reloaded Quick Time Won't Accept Registration Data

    Does anyone know how to go about getting Quick Time to accept the registration data for previously-purchased Pro and MP2 Playback capabilities -- reloaded on the same machine as before, after an XP SP3 "Bootlock"-induced reformat/rebuild ?? Many than