Merge branch 'master' of https://github.com/jMonkeyEngine/jmonkeyengine.git
This commit is contained in:
		
						commit
						1a68fc9c30
					
				| @ -46,6 +46,8 @@ import com.jme3.math.Transform; | |||||||
| import com.jme3.math.Vector3f; | import com.jme3.math.Vector3f; | ||||||
| import com.jme3.scene.Node; | import com.jme3.scene.Node; | ||||||
| import com.jme3.scene.Spatial; | import com.jme3.scene.Spatial; | ||||||
|  | import java.util.ArrayDeque; | ||||||
|  | import java.util.ArrayList; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.Iterator; | import java.util.Iterator; | ||||||
| import java.util.LinkedList; | import java.util.LinkedList; | ||||||
| @ -91,8 +93,8 @@ public class PhysicsSpace { | |||||||
|     private Map<Long, PhysicsRigidBody> physicsBodies = new ConcurrentHashMap<Long, PhysicsRigidBody>(); |     private Map<Long, PhysicsRigidBody> physicsBodies = new ConcurrentHashMap<Long, PhysicsRigidBody>(); | ||||||
|     private Map<Long, PhysicsJoint> physicsJoints = new ConcurrentHashMap<Long, PhysicsJoint>(); |     private Map<Long, PhysicsJoint> physicsJoints = new ConcurrentHashMap<Long, PhysicsJoint>(); | ||||||
|     private Map<Long, PhysicsVehicle> physicsVehicles = new ConcurrentHashMap<Long, PhysicsVehicle>(); |     private Map<Long, PhysicsVehicle> physicsVehicles = new ConcurrentHashMap<Long, PhysicsVehicle>(); | ||||||
|     private List<PhysicsCollisionListener> collisionListeners = new LinkedList<PhysicsCollisionListener>(); |     private ArrayList<PhysicsCollisionListener> collisionListeners = new ArrayList<PhysicsCollisionListener>(); | ||||||
|     private List<PhysicsCollisionEvent> collisionEvents = new LinkedList<PhysicsCollisionEvent>(); |     private ArrayDeque<PhysicsCollisionEvent> collisionEvents = new ArrayDeque<PhysicsCollisionEvent>(); | ||||||
|     private Map<Integer, PhysicsCollisionGroupListener> collisionGroupListeners = new ConcurrentHashMap<Integer, PhysicsCollisionGroupListener>(); |     private Map<Integer, PhysicsCollisionGroupListener> collisionGroupListeners = new ConcurrentHashMap<Integer, PhysicsCollisionGroupListener>(); | ||||||
|     private ConcurrentLinkedQueue<PhysicsTickListener> tickListeners = new ConcurrentLinkedQueue<PhysicsTickListener>(); |     private ConcurrentLinkedQueue<PhysicsTickListener> tickListeners = new ConcurrentLinkedQueue<PhysicsTickListener>(); | ||||||
|     private PhysicsCollisionEventFactory eventFactory = new PhysicsCollisionEventFactory(); |     private PhysicsCollisionEventFactory eventFactory = new PhysicsCollisionEventFactory(); | ||||||
| @ -361,17 +363,15 @@ public class PhysicsSpace { | |||||||
| 
 | 
 | ||||||
|     public void distributeEvents() { |     public void distributeEvents() { | ||||||
|         //add collision callbacks |         //add collision callbacks | ||||||
| //        synchronized (collisionEvents) { |         int clistsize = collisionListeners.size(); | ||||||
|         for (Iterator<PhysicsCollisionEvent> it = collisionEvents.iterator(); it.hasNext();) { |         while( collisionEvents.isEmpty() == false ) { | ||||||
|             PhysicsCollisionEvent physicsCollisionEvent = it.next(); |             PhysicsCollisionEvent physicsCollisionEvent = collisionEvents.pop(); | ||||||
|             for (PhysicsCollisionListener listener : collisionListeners) { |             for(int i=0;i<clistsize;i++) { | ||||||
|                 listener.collision(physicsCollisionEvent); |                 collisionListeners.get(i).collision(physicsCollisionEvent); | ||||||
|             } |             } | ||||||
|             //recycle events |             //recycle events | ||||||
|             eventFactory.recycle(physicsCollisionEvent); |             eventFactory.recycle(physicsCollisionEvent); | ||||||
|             it.remove(); |  | ||||||
|         } |         } | ||||||
| //        } |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public static <V> Future<V> enqueueOnThisThread(Callable<V> callable) { |     public static <V> Future<V> enqueueOnThisThread(Callable<V> callable) { | ||||||
|  | |||||||
| @ -66,6 +66,8 @@ import com.jme3.math.Transform; | |||||||
| import com.jme3.math.Vector3f; | import com.jme3.math.Vector3f; | ||||||
| import com.jme3.scene.Node; | import com.jme3.scene.Node; | ||||||
| import com.jme3.scene.Spatial; | import com.jme3.scene.Spatial; | ||||||
|  | import java.util.ArrayDeque; | ||||||
|  | import java.util.ArrayList; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.Iterator; | import java.util.Iterator; | ||||||
| import java.util.LinkedList; | import java.util.LinkedList; | ||||||
| @ -111,8 +113,8 @@ public class PhysicsSpace { | |||||||
|     private Map<RaycastVehicle, PhysicsVehicle> physicsVehicles = new ConcurrentHashMap<RaycastVehicle, PhysicsVehicle>(); |     private Map<RaycastVehicle, PhysicsVehicle> physicsVehicles = new ConcurrentHashMap<RaycastVehicle, PhysicsVehicle>(); | ||||||
|     private Map<Integer, PhysicsCollisionGroupListener> collisionGroupListeners = new ConcurrentHashMap<Integer, PhysicsCollisionGroupListener>(); |     private Map<Integer, PhysicsCollisionGroupListener> collisionGroupListeners = new ConcurrentHashMap<Integer, PhysicsCollisionGroupListener>(); | ||||||
|     private ConcurrentLinkedQueue<PhysicsTickListener> tickListeners = new ConcurrentLinkedQueue<PhysicsTickListener>(); |     private ConcurrentLinkedQueue<PhysicsTickListener> tickListeners = new ConcurrentLinkedQueue<PhysicsTickListener>(); | ||||||
|     private List<PhysicsCollisionListener> collisionListeners = new LinkedList<PhysicsCollisionListener>(); |     private ArrayList<PhysicsCollisionListener> collisionListeners = new ArrayList<PhysicsCollisionListener>(); | ||||||
|     private List<PhysicsCollisionEvent> collisionEvents = new LinkedList<PhysicsCollisionEvent>(); |     private ArrayDeque<PhysicsCollisionEvent> collisionEvents = new ArrayDeque<PhysicsCollisionEvent>(); | ||||||
|     private PhysicsCollisionEventFactory eventFactory = new PhysicsCollisionEventFactory(); |     private PhysicsCollisionEventFactory eventFactory = new PhysicsCollisionEventFactory(); | ||||||
|     private Vector3f worldMin = new Vector3f(-10000f, -10000f, -10000f); |     private Vector3f worldMin = new Vector3f(-10000f, -10000f, -10000f); | ||||||
|     private Vector3f worldMax = new Vector3f(10000f, 10000f, 10000f); |     private Vector3f worldMax = new Vector3f(10000f, 10000f, 10000f); | ||||||
| @ -332,19 +334,17 @@ public class PhysicsSpace { | |||||||
| 
 | 
 | ||||||
|     public void distributeEvents() { |     public void distributeEvents() { | ||||||
|         //add collision callbacks |         //add collision callbacks | ||||||
| //        synchronized (collisionEvents) { |         int clistsize = collisionListeners.size(); | ||||||
|             for (Iterator<PhysicsCollisionEvent> it = collisionEvents.iterator(); it.hasNext();) { |         while( collisionEvents.isEmpty() == false ) { | ||||||
|                 PhysicsCollisionEvent physicsCollisionEvent = it.next(); |             PhysicsCollisionEvent physicsCollisionEvent = collisionEvents.pop(); | ||||||
|                 for (PhysicsCollisionListener listener : collisionListeners) { |             for(int i=0;i<clistsize;i++) { | ||||||
|                     listener.collision(physicsCollisionEvent); |                 collisionListeners.get(i).collision(physicsCollisionEvent); | ||||||
|                 } |  | ||||||
|                 //recycle events |  | ||||||
|                 eventFactory.recycle(physicsCollisionEvent); |  | ||||||
|                 it.remove(); |  | ||||||
|             } |             } | ||||||
| //        } |             //recycle events | ||||||
|  |             eventFactory.recycle(physicsCollisionEvent); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 |      | ||||||
|     public static <V> Future<V> enqueueOnThisThread(Callable<V> callable) { |     public static <V> Future<V> enqueueOnThisThread(Callable<V> callable) { | ||||||
|         AppTask<V> task = new AppTask<V>(callable); |         AppTask<V> task = new AppTask<V>(callable); | ||||||
|         System.out.println("created apptask"); |         System.out.println("created apptask"); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user