private void addGhostObject(PhysicsGhostObject node) { if (physicsGhostObjects.containsKey(node.getObjectId())) { logger.log( Level.WARNING, "GhostObject {0} already exists in PhysicsSpace, cannot add.", node); return; } physicsGhostObjects.put(node.getObjectId(), node); logger.log( Level.FINE, "Adding ghost object {0} to physics space.", Long.toHexString(node.getObjectId())); addCollisionObject(physicsSpaceId, node.getObjectId()); }
/** * adds an object to the physics space * * @param obj the PhysicsControl or Spatial with PhysicsControl to add */ public void add(Object obj) { if (obj instanceof PhysicsControl) { ((PhysicsControl) obj).setPhysicsSpace(this); } else if (obj instanceof Spatial) { Spatial node = (Spatial) obj; for (int i = 0; i < node.getNumControls(); i++) { if (node.getControl(i) instanceof PhysicsControl) { add(((PhysicsControl) node.getControl(i))); } } } else if (obj instanceof PhysicsCollisionObject) { addCollisionObject((PhysicsCollisionObject) obj); } else if (obj instanceof PhysicsJoint) { addJoint((PhysicsJoint) obj); } else { throw (new UnsupportedOperationException( "Cannot add this kind of object to the physics space.")); } }