Package com.ardor3d.extension.terrain.util

Examples of com.ardor3d.extension.terrain.util.Region


            state = State.finished;
            cache[destTile.getX()][destTile.getY()].isValid = true;

            final int vertexDistance = MathUtils.pow2(clipmapLevel);
            final Region region = new Region(clipmapLevel, sourceTile.getX() * tileSize * vertexDistance,
                    sourceTile.getY() * tileSize * vertexDistance, tileSize * vertexDistance, tileSize * vertexDistance);
            if (mailBox != null) {
                mailBox.add(region);
            }

View Full Code Here


                    levelData.clipRegion.setX(sX);
                    levelData.clipRegion.setY(sY);
                }

                for (int i = regionList.size() - 1; i >= 0; i--) {
                    final Region region = regionList.get(i);
                    final Region clipRegion = levelDataList.get(region.getLevel()).clipRegion;

                    if (clipRegion.intersects(region)) {
                        clipRegion.intersection(region);
                    } else {
                        regionList.remove(i);
                    }
                }

                Collections.sort(regionList, regionSorter);

                final int start = regionList.size() - 1;
                for (int i = start; i >= 0; i--) {
                    final Region region = regionList.get(i);

                    recursiveAddUpdates(regionList, region.getLevel(), region.getX(), region.getY(), region.getWidth(),
                            region.getHeight());
                }

                for (int i = regionList.size() - 1; i >= 0; i--) {
                    final Region region = regionList.get(i);
                    final Region clipRegion = levelDataList.get(region.getLevel()).clipRegion;

                    if (clipRegion.intersects(region)) {
                        clipRegion.intersection(region);
                    } else {
                        regionList.remove(i);
                    }
                }

                Collections.sort(regionList, regionSorter);

                final Set<Integer> affectedUnits = Sets.newHashSet();
                for (int i = regionList.size() - 1; i >= 0; i--) {
                    final Region region = regionList.get(i);

                    final int unit = region.getLevel();
                    affectedUnits.add(unit);

                    final LevelData levelData = levelDataList.get(unit);
                    final TextureCache cache = cacheList.get(unit);
                    final ByteBuffer imageDestination = levelData.sliceData;

                    final int sX = region.getX();
                    final int sY = region.getY();
                    int dX = region.getX() + textureSize / 2;
                    int dY = region.getY() + textureSize / 2;
                    dX = MathUtils.moduloPositive(dX, textureSize);
                    dY = MathUtils.moduloPositive(dY, textureSize);

                    cache.updateRegion(imageDestination, sX, sY, dX + 1, dY + 1, region.getWidth(), region.getHeight());
                }

                for (final int unit : affectedUnits) {
                    final LevelData levelData = levelDataList.get(unit);
                    final ByteBuffer imageDestination = levelData.sliceData;
View Full Code Here

        // Calculate common variables
        vertexDistance = (int) Math.pow(2, levelIndex);
        frameSize = (clipSideSize + 1) / 4;
        doubleVertexDistance = vertexDistance * 2;
        frameDistance = (frameSize - 1) * vertexDistance;
        clipRegion = new Region(0, 0, (clipSideSize - 1) * vertexDistance, (clipSideSize - 1) * vertexDistance);
        intersectionRegion = new Region(0, 0, clipSideSize * vertexDistance, clipSideSize * vertexDistance);

        // Initialize the vertices
        initialize();
    }
View Full Code Here

            final int width, final int height) {
        if (level == 0) {
            return;
        }

        final Region region = new Region(level - 1, x * 2, y * 2, width * 2, height * 2);
        if (!regionList.contains(region)) {
            regionList.add(region);
            recursiveAddUpdates(regionList, region.getLevel(), region.getX(), region.getY(), region.getWidth(), region
                    .getHeight());
        }
    }
View Full Code Here

    private void updateFromMailbox() {
        if (updateTimer > updateThreashold) {
            final List<Region> regionList = mailBox.switchAndGet();
            if (!regionList.isEmpty()) {
                for (int i = regionList.size() - 1; i >= 0; i--) {
                    final Region region = regionList.get(i);

                    final ClipmapLevel clip = _clips.get(region.getLevel());
                    final Region clipRegion = clip.getIntersectionRegion();

                    if (clipRegion.intersects(region)) {
                        clipRegion.intersection(region);
                    } else {
                        regionList.remove(i);
                    }
                }

                Collections.sort(regionList, regionSorter);

                final int start = regionList.size() - 1;
                for (int i = start; i >= 0; i--) {
                    final Region region = regionList.get(i);

                    recursiveAddUpdates(regionList, region.getLevel(), region.getX(), region.getY(), region.getWidth(),
                            region.getHeight());
                }

                for (int i = regionList.size() - 1; i >= 0; i--) {
                    final Region region = regionList.get(i);

                    final ClipmapLevel clip = _clips.get(region.getLevel());
                    final Region clipRegion = clip.getIntersectionRegion();

                    if (clipRegion.intersects(region)) {
                        clipRegion.intersection(region);
                    } else {
                        regionList.remove(i);
                    }
                }

                Collections.sort(regionList, regionSorter);

                for (int i = regionList.size() - 1; i >= 0; i--) {
                    final Region region = regionList.get(i);
                    final ClipmapLevel clip = _clips.get(region.getLevel());
                    final FloatBuffer vertices = clip.getMeshData().getVertexBuffer();
                    final int vertexDistance = clip.getVertexDistance();

                    clip.getCache().updateRegion(vertices, region.getX() / vertexDistance,
                            region.getY() / vertexDistance, region.getWidth() / vertexDistance,
                            region.getHeight() / vertexDistance);
                }
            }
            updateTimer %= updateThreashold;
        }
        final long time = System.currentTimeMillis();
View Full Code Here

            final int width, final int height) {
        if (level == 0) {
            return;
        }

        final Region region = new Region(level - 1, x, y, width, height);
        if (!regionList.contains(region)) {
            regionList.add(region);
            recursiveAddUpdates(regionList, region.getLevel(), region.getX(), region.getY(), region.getWidth(),
                    region.getHeight());
        }
    }
View Full Code Here

            }

            state = State.finished;
            cache[destTile.getX()][destTile.getY()].isValid = true;

            final Region region = new Region(clipmapLevel, sourceTile.getX() * tileSize, sourceTile.getY() * tileSize,
                    tileSize, tileSize);
            if (mailBox != null) {
                mailBox.add(region);
            }

View Full Code Here

TOP

Related Classes of com.ardor3d.extension.terrain.util.Region

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.