Weird problem, not sure what to do

here's the problem: at some point in time, i did something. some time later, i noticed that the projectiles fired by the player change their size and position. they get smaller for no obvious reason, and their position is "offsetted", e.g. they are created on top of the player or at the right of the player.

wrapping the node in another node does not help. cloning the projectile model does. any idea what i could to to find out whast's wrong?



what's puzzling me is that the local scale of the model node (wrapped in a sharednode) is correct, and the handling of cloned and shared nodes is completely equal.  the local scale of the node i resize is correct in both cases, so it really should work.



also, i don't see a particular reason for the bug to appear. sometimes i can shoot dozens of ice darts and it still works, sometimes they are small after a few shots. maybe it happened because i updated to jme. anyway, where should i set my breakpoints?

You could be having instances of Vector3f scale that are shared among many spatials, causing the problem. Check how you initialize them, if you are using any static fields from Vector3f (e.g. Vector3f.ZERO), try to clone them instead.

no, that wasn't it, but your suggestion put me on the right track. i'm accidently using mesh data for storing temporary variables. but that wasn't all. after fixing it, i still got weird bugs and commented out every single line until my collision checking code looked like this:

   public boolean handle(final MoveableEntity p_moveableEntity, final Spatial p_obj) {
    boolean l_ret = false;
    boolean l_correctionApplied = false;
    int tries = 10;
    do {
      MS_COLLISIONRESULTS.clear();
//      MS_MOVEBY.set(0.0F, 0.0F, 0.0F);
      final Spatial l_boundingSpatial = p_moveableEntity.getBoundingProxy();
      l_boundingSpatial.findCollisions(p_obj, MS_COLLISIONRESULTS);
//      for (int l_collisionNumber = 0; l_collisionNumber < MS_COLLISIONRESULTS.getNumber(); l_collisionNumber++) {
//        final boolean l_touchingGround = handleCollision(l_collisionNumber);
//        if (l_touchingGround) {
//          p_moveableEntity.setTouchingObjWithFeet();
//        }
//      }
//
//      final float l_lengthSqrt = MS_MOVEBY.lengthSquared();
//      l_correctionApplied = l_lengthSqrt < 1000.0F && l_lengthSqrt >0.0F;
//      if (l_correctionApplied) {
//        p_moveableEntity.moveAbsoluteBy(MS_MOVEBY);
//        l_ret = true;
//      }
    } while (l_correctionApplied && tries-- > 0);
    return l_ret;
  }



the collisionresult is:

  private static final TriangleCollisionResults MS_COLLISIONRESULTS = new TriangleCollisionResults();



if i call findcollisions, i still get the bug. if i don't, everything is fine. there seems to be a bug inside findcollisions. that modifies the mesh data or local scales/rotations (yes, rotations as well) of the children of my projectile models....

new info:
if i call p_obj.findCollisions(l_boundingSpatial, MS_COLLISIONRESULTS); and adjust the rest of my code, the problem is gone...
seems like it's your bug, mr. jme :D