/** * Test whether this object responds to contact with other objects. * * @return true if responsive, otherwise false */ public boolean isContactResponse() { int flags = getCollisionFlags(objectId); boolean result = (flags & CollisionFlag.NO_CONTACT_RESPONSE) == 0x0; return result; }
/** * Access the user object of collision object A, provided it's a Spatial. * * @return the pre-existing Spatial, or null if none */ public Spatial getNodeA() { if (nodeA.getUserObject() instanceof Spatial) { return (Spatial) nodeA.getUserObject(); } return null; }
/** * Remove collision groups from the set with which this object can collide. * * @param collisionGroup groups to remove, ORed together (bit mask) */ public void removeCollideWithGroup(int collisionGroup) { this.collisionGroupsMask = this.collisionGroupsMask & ~collisionGroup; if (objectId != 0) { setCollideWithGroups(this.collisionGroupsMask); } }
public void distributeEvents() { //add collision callbacks int clistsize = collisionListeners.size(); while( collisionEvents.isEmpty() == false ) { PhysicsCollisionEvent physicsCollisionEvent = collisionEvents.pop(); for(int i=0;i<clistsize;i++) { collisionListeners.get(i).collision(physicsCollisionEvent); } //recycle events eventFactory.recycle(physicsCollisionEvent); } }
/** * This method is invoked from native code. */ private boolean notifyCollisionGroupListeners_native(PhysicsCollisionObject node, PhysicsCollisionObject node1){ PhysicsCollisionGroupListener listener = collisionGroupListeners.get(node.getCollisionGroup()); PhysicsCollisionGroupListener listener1 = collisionGroupListeners.get(node1.getCollisionGroup()); boolean result = true; if(listener != null){ result = listener.collide(node, node1); } if(listener1 != null && node.getCollisionGroup() != node1.getCollisionGroup()){ result = listener1.collide(node, node1) && result; } return result; }
private native float getAppliedImpulse(long manifoldPointObjectId);
private native boolean isLateralFrictionInitialized(long manifoldPointObjectId);
private native int getLifeTime(long manifoldPointObjectId);
private native void getLocalPointA(long manifoldPointObjectId, Vector3f localPointA);
private native void getLateralFrictionDir2(long manifoldPointObjectId, Vector3f lateralFrictionDir2);
private native int getPartId0(long manifoldPointObjectId);
private native float getCombinedFriction(long manifoldPointObjectId);
private native int getIndex0(long manifoldPointObjectId);
private native void getLateralFrictionDir1(long manifoldPointObjectId, Vector3f lateralFrictionDir1);
@Override public int compare(PhysicsRayTestResult r1, PhysicsRayTestResult r2) { float comp = r1.getHitFraction() - r2.getHitFraction(); return comp > 0 ? 1 : -1; } };
/** * @return A Spatial if the UserObject of the PhysicsCollisionObject is a Spatial */ public Spatial getNodeB() { if (nodeB.getUserObject() instanceof Spatial) { return (Spatial) nodeB.getUserObject(); } return null; }
/** * Directly alter the collision groups with which this object can collide. * * @param collisionGroups desired groups, ORed together (bit mask) */ public void setCollideWithGroups(int collisionGroups) { this.collisionGroupsMask = collisionGroups; if (objectId != 0) { setCollideWithGroups(objectId, this.collisionGroupsMask); } }
/** * @return A Spatial if the UserObject of the PhysicsCollisionObject is a Spatial */ public Spatial getNodeA() { if (nodeA.getUserObject() instanceof Spatial) { return (Spatial) nodeA.getUserObject(); } return null; }
/** * Add collision groups to the set with which this object can collide. * * Two objects can collide only if one of them has the collisionGroup of the * other in its collideWithGroups set. * * @param collisionGroup groups to add (bit mask) */ public void addCollideWithGroup(int collisionGroup) { this.collisionGroupsMask = this.collisionGroupsMask | collisionGroup; if (objectId != 0) { setCollideWithGroups(objectId, this.collisionGroupsMask); } }
/** * Access the user object of collision object B, provided it's a Spatial. * * @return the pre-existing Spatial, or null if none */ public Spatial getNodeB() { if (nodeB.getUserObject() instanceof Spatial) { return (Spatial) nodeB.getUserObject(); } return null; }