package org.osm2world.core.world.data; import org.osm2world.core.map_data.data.MapElement; import org.osm2world.core.map_elevation.creation.EleConstraintEnforcer; import org.osm2world.core.map_elevation.data.EleConnector; import org.osm2world.core.map_elevation.data.GroundState; public interface WorldObject { /** * returns the "primary" {@link MapElement} for this WorldObject; * i.e. the one it is most strongly associated with. * Can be null if there is no (clear) primary element for this feature. */ public MapElement getPrimaryMapElement(); /** * returns whether this feature is on, above or below the ground. * This is relevant for elevation calculations, * because the elevation of features o.t.g. is directly * determined by terrain elevation data. * Elevation of features above/below t.g. depends on elevation of * features o.t.g. as well as other features above/below t.g. */ public GroundState getGroundState(); /** * returns all {@link EleConnector}s used by this WorldObject */ public Iterable<EleConnector> getEleConnectors(); /** * lets this object add constraints for the relative elevations of its * {@link EleConnector}s. Called after {@link #getEleConnectors()}. */ public void defineEleConstraints(EleConstraintEnforcer enforcer); }