Swich geometry sorting to tim sort.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/branches/gradle-restructure@10998 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
experimental
rem..om 11 years ago
parent 75e82e47f2
commit af58df2fc0
  1. 20
      jme3-core/src/main/java/com/jme3/renderer/queue/GeometryList.java
  2. 1012
      jme3-core/src/main/java/com/jme3/util/ListSort.java

@ -33,7 +33,7 @@ package com.jme3.renderer.queue;
import com.jme3.renderer.Camera; import com.jme3.renderer.Camera;
import com.jme3.scene.Geometry; import com.jme3.scene.Geometry;
import com.jme3.util.SortUtil; import com.jme3.util.ListSort;
/** /**
* This class is a special purpose list of {@link Geometry} objects for render * This class is a special purpose list of {@link Geometry} objects for render
@ -48,7 +48,7 @@ public class GeometryList {
private static final int DEFAULT_SIZE = 32; private static final int DEFAULT_SIZE = 32;
private Geometry[] geometries; private Geometry[] geometries;
private Geometry[] geometries2; private ListSort listSort;
private int size; private int size;
private GeometryComparator comparator; private GeometryComparator comparator;
@ -61,8 +61,8 @@ public class GeometryList {
public GeometryList(GeometryComparator comparator) { public GeometryList(GeometryComparator comparator) {
size = 0; size = 0;
geometries = new Geometry[DEFAULT_SIZE]; geometries = new Geometry[DEFAULT_SIZE];
geometries2 = new Geometry[DEFAULT_SIZE];
this.comparator = comparator; this.comparator = comparator;
listSort = new ListSort<Geometry>();
} }
public void setComparator(GeometryComparator comparator) { public void setComparator(GeometryComparator comparator) {
@ -118,8 +118,6 @@ public class GeometryList {
Geometry[] temp = new Geometry[size * 2]; Geometry[] temp = new Geometry[size * 2];
System.arraycopy(geometries, 0, temp, 0, size); System.arraycopy(geometries, 0, temp, 0, size);
geometries = temp; // original list replaced by double-size list geometries = temp; // original list replaced by double-size list
geometries2 = new Geometry[size * 2];
} }
geometries[size++] = g; geometries[size++] = g;
} }
@ -141,14 +139,10 @@ public class GeometryList {
public void sort() { public void sort() {
if (size > 1) { if (size > 1) {
// sort the spatial list using the comparator // sort the spatial list using the comparator
if(listSort.getLength() != size){
// SortUtil.qsort(geometries, 0, size, comparator); listSort.allocateStack(size);
// Arrays.sort(geometries, 0, size, comparator); }
listSort.sort(geometries,comparator);
System.arraycopy(geometries, 0, geometries2, 0, size);
SortUtil.msort(geometries2, geometries, 0, size-1, comparator);
} }
} }
} }

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save