classpublicPriority 3
FieldFunctionAssignments
com.hypixel.hytale.builtin.hytalegenerator.propdistributions.FieldFunctionAssignments
extends Assignments
3
Methods
3
Public Methods
3
Fields
1
Constructors
Constructors
public
FieldFunctionAssignments(Density functionTree, List<FieldFunctionAssignments.FieldDelimiter> fieldDelimiters, int runtime)Methods
Public Methods (3)
public
List<Prop> getAllPossibleProps()@Nonnull@Override
public
int getRuntime()@Override
public
Prop propAt(Vector3d position, WorkerIndexer.Id id, double distanceTOBiomeEdge)@Override
Fields
Private/Package Fields (3)
private
Density densityprivate
List<FieldFunctionAssignments.FieldDelimiter> fieldDelimitersprivate
int runtimeInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.builtin.hytalegenerator.propdistributions;
import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
import com.hypixel.hytale.builtin.hytalegenerator.props.Prop;
import com.hypixel.hytale.builtin.hytalegenerator.threadindexer.WorkerIndexer;
import com.hypixel.hytale.math.vector.Vector3d;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
public class FieldFunctionAssignments extends Assignments {
@Nonnull
private final Density density;
@Nonnull
private final List<FieldFunctionAssignments.FieldDelimiter> fieldDelimiters;
private final int runtime;
public FieldFunctionAssignments(@Nonnull Density functionTree, @Nonnull List<FieldFunctionAssignments.FieldDelimiter> fieldDelimiters, int runtime) {
this.runtime = runtime;
this.density = functionTree;
this.fieldDelimiters = new ArrayList<>(fieldDelimiters);
}
@Override
public Prop propAt(@Nonnull Vector3d position, @Nonnull WorkerIndexer.Id id, double distanceTOBiomeEdge) {
if (this.fieldDelimiters.isEmpty()) {
return Prop.noProp();
} else {
Density.Context context = new Density.Context();
context.position = position;
context.workerId = id;
context.distanceToBiomeEdge = distanceTOBiomeEdge;
double fieldValue = this.density.process(context);
for (FieldFunctionAssignments.FieldDelimiter fd : this.fieldDelimiters) {
if (fd.isInside(fieldValue)) {
return fd.assignments.propAt(position, id, distanceTOBiomeEdge);
}
}
return Prop.noProp();
}
}
@Override
public int getRuntime() {
return this.runtime;
}
@Nonnull
@Override
public List<Prop> getAllPossibleProps() {
ArrayList<Prop> list = new ArrayList<>();
for (FieldFunctionAssignments.FieldDelimiter f : this.fieldDelimiters) {
list.addAll(f.assignments.getAllPossibleProps());
}
return list;
}
public static class FieldDelimiter {
double top;
double bottom;
Assignments assignments;
public FieldDelimiter(@Nonnull Assignments propDistributions, double bottom, double top) {
this.bottom = bottom;
this.top = top;
this.assignments = propDistributions;
}
boolean isInside(double fieldValue) {
return fieldValue < this.top && fieldValue >= this.bottom;
}
}
}