Search in sources :

Example 6 with Key

use of net.drewke.tdme.utils.Key in project tdme by andreasdr.

the class PartitionQuadTree method createPartition.

/**
	 * Creates a partition
	 * @param parent
	 * @param x
	 * @param y
	 * @param z
	 * @param partition size
	 * @return partition tree node
	 */
public PartitionTreeNode createPartition(PartitionTreeNode parent, int x, int y, int z, float partitionSize) {
    PartitionTreeNode node;
    node = new PartitionTreeNode();
    node.partitionSize = partitionSize;
    node.x = x;
    node.y = y;
    node.z = z;
    node.parent = parent;
    node.bv = new BoundingBox(new Vector3(x * partitionSize, y * partitionSize, z * partitionSize), new Vector3(x * partitionSize + partitionSize, y * partitionSize + partitionSize, z * partitionSize + partitionSize));
    // System.out.println(this.hashCode() + ":" + "FrumstumPartition::createPartition()::" + node.bv);
    node.subNodes = null;
    node.subNodesByCoordinate = null;
    node.partitionObjects = null;
    // register in parent sub nodes
    if (parent.subNodes == null) {
        parent.subNodes = new ArrayList<PartitionTreeNode>();
    }
    parent.subNodes.add(node);
    // register in parent sub nodes by coordinate 
    if (parent.subNodesByCoordinate == null) {
        parent.subNodesByCoordinate = new HashMap<Key, PartitionTreeNode>();
    }
    Key key = new Key();
    key.reset();
    key.append(node.x);
    key.append(",");
    key.append(node.y);
    key.append(",");
    key.append(node.z);
    parent.subNodesByCoordinate.put(key, node);
    // create sub nodes
    if (partitionSize > PARTITION_SIZE_MIN) {
        for (int _y = 0; _y < 2; _y++) for (int _x = 0; _x < 2; _x++) for (int _z = 0; _z < 2; _z++) {
            createPartition(node, (int) ((x * partitionSize) / (partitionSize / 2f)) + _x, (int) ((y * partitionSize) / (partitionSize / 2f)) + _y, (int) ((z * partitionSize) / (partitionSize / 2f)) + _z, partitionSize / 2f);
        }
    } else {
        node.partitionObjects = new ArrayList<Entity>();
    }
    //
    return node;
}
Also used : BoundingBox(net.drewke.tdme.engine.primitives.BoundingBox) Vector3(net.drewke.tdme.math.Vector3) Key(net.drewke.tdme.utils.Key)

Aggregations

Key (net.drewke.tdme.utils.Key)6 BoundingBox (net.drewke.tdme.engine.primitives.BoundingBox)2 Vector3 (net.drewke.tdme.math.Vector3)2 Object3D (net.drewke.tdme.engine.Object3D)1 Rotation (net.drewke.tdme.engine.Rotation)1 Rotations (net.drewke.tdme.engine.Rotations)1 Transformations (net.drewke.tdme.engine.Transformations)1 Color4 (net.drewke.tdme.engine.model.Color4)1 FacesEntity (net.drewke.tdme.engine.model.FacesEntity)1 Material (net.drewke.tdme.engine.model.Material)1 Model (net.drewke.tdme.engine.model.Model)1 PointsParticleSystemEntityInternal (net.drewke.tdme.engine.subsystems.particlesystem.PointsParticleSystemEntityInternal)1