@Override public Vector2f copy(Vector2f value) { if (value != null) { return new Vector2f(value); } return null; } }
@Override public void onEmission(TextureOffsetGeneratorComponent component, ParticleData particleData, Random random) { if (component.validOffsets.size() == 0) { return; } final int randomOffsetIndex = random.nextInt(component.validOffsets.size()); final Vector2f randomOffset = component.validOffsets.get(randomOffsetIndex); particleData.textureOffset.set(randomOffset.getX(), randomOffset.getY()); } }
Vector2f offset = new Vector2f(0, 0); if (grid.getGridOffset() != null) { offset.set((float) grid.getGridOffset().x / size.x, (float) grid.getGridOffset().y / size.y); Vector2f tileSize = new Vector2f((float) grid.getTileSize().x / size.x, (float) grid.getTileSize().y / size.y); int tileX = 0; int tileY = 0; for (String name : grid.getTileNames()) { if (!name.isEmpty()) { Vector2f pos = new Vector2f(offset); pos.x += tileX * tileSize.x; pos.y += tileY * tileSize.y;
@Override public void process(GeneratingRegion region) { SurfaceHeightFacet facet = region.getRegionFacet(SurfaceHeightFacet.class); float[] mountainData = mountainNoise.noise(facet.getWorldRegion()); float[] hillData = hillNoise.noise(facet.getWorldRegion()); SurfaceTemperatureFacet temperatureData = region.getRegionFacet(SurfaceTemperatureFacet.class); SurfaceHumidityFacet humidityData = region.getRegionFacet(SurfaceHumidityFacet.class); float[] heightData = facet.getInternal(); Iterator<BaseVector2i> positionIterator = facet.getRelativeRegion().contents().iterator(); for (int i = 0; i < heightData.length; ++i) { BaseVector2i pos = positionIterator.next(); float temp = temperatureData.get(pos); float tempHumid = temp * humidityData.get(pos); Vector2f distanceToMountainBiome = new Vector2f(temp - 0.25f, tempHumid - 0.35f); float mIntens = TeraMath.clamp(1.0f - distanceToMountainBiome.length() * 3.0f); float densityMountains = Math.max(mountainData[i] * 2.12f, 0) * mIntens * configuration.mountainAmplitude; float densityHills = Math.max(hillData[i] * 2.12f - 0.1f, 0) * (1.0f - mIntens) * configuration.hillAmplitude; heightData[i] = heightData[i] + 1024 * densityMountains + 128 * densityHills; } }
public SubSampledNoise2D(Noise2D source, Vector2f zoom, int sampleRate) { this.source = source; this.zoom.set(zoom); this.sampleRate = sampleRate; }
@Override public void onMouseDrag(NUIMouseDragEvent event) { Vector2f diff = editor.screenToWorld(event.getRelativeMousePosition()); diff.sub(editor.screenToWorld(last)); if (diff.lengthSquared() != 0) { dragged = true; } move(diff); last = event.getRelativeMousePosition(); } };
at.scale(DENSITY_ADJUSTMENT); at.add(offset); Vector2f cellPos = new Vector2f(at); cellPos.x -= cellX; cellPos.y -= cellY; Vector2f distMax = new Vector2f(standardDistanceFunction(new Vector2f(1 - cellPos.x, 0)), standardDistanceFunction(new Vector2f(0, 1 - cellPos.y))); Vector2f distMin = new Vector2f(standardDistanceFunction(new Vector2f(cellPos.x, 0)), standardDistanceFunction(new Vector2f(0, cellPos.y))); result.delta.scale(INVERSE_DENSITY_ADJUSTMENT); result.distance *= INVERSE_DENSITY_ADJUSTMENT * INVERSE_DENSITY_ADJUSTMENT;
public void setTex(Vector2f v) { activeTex.set(v); }
@Override public Vector2f getTexCoords(ResourceUrn uri, boolean warnOnError) { return new Vector2f(); }
public void resetParams() { activeColor.set(1, 1, 1, 1); activeTex.set(0, 0); lighting.set(1, 1, 1); activeNormal.set(0, 1, 0); }
@Override public Vector2f getTexCoords(BlockTile tile, boolean warnOnError) { return new Vector2f(); }
/** * Creates a new entity for the block damage particle effect. * * If the terrain texture of the damaged block is available, the particles will have the block texture. Otherwise, * the default sprite (smoke) is used. * * @param family the {@link BlockFamily} of the damaged block * @param location the location of the damaged block */ private void createBlockParticleEffect(BlockFamily family, Vector3f location) { EntityBuilder builder = entityManager.newBuilder("core:defaultBlockParticles"); builder.getComponent(LocationComponent.class).setWorldPosition(location); Optional<Texture> terrainTexture = Assets.getTexture("engine:terrain"); if (terrainTexture.isPresent() && terrainTexture.get().isLoaded()) { final BlockAppearance blockAppearance = family.getArchetypeBlock().getPrimaryAppearance(); final float relativeTileSize = worldAtlas.getRelativeTileSize(); final float particleScale = 0.25f; final float spriteSize = relativeTileSize * particleScale; ParticleDataSpriteComponent spriteComponent = builder.getComponent(ParticleDataSpriteComponent.class); spriteComponent.texture = terrainTexture.get(); spriteComponent.textureSize.set(spriteSize, spriteSize); final List<Vector2f> offsets = computeOffsets(blockAppearance, particleScale); TextureOffsetGeneratorComponent textureOffsetGeneratorComponent = builder.getComponent(TextureOffsetGeneratorComponent.class); textureOffsetGeneratorComponent.validOffsets.addAll(offsets); } builder.build(); }
public void setPosition(float x, float y) { position = new Vector2f(x, y); }