Expand generated terrain with biome-driven props
This commit is contained in:
parent
e8888ed05a
commit
1e24fb0bfc
103 changed files with 5427 additions and 351 deletions
|
|
@ -18,6 +18,23 @@ func stable_key() -> String:
|
|||
return "%s@%d" % [definition.stable_id, posmod(quarter_turns, 4)]
|
||||
|
||||
|
||||
func source_edge(edge: TerrainChunkTopology.Edge) -> TerrainChunkTopology.Edge:
|
||||
return TerrainChunkTopology.rotated_edge(edge, -quarter_turns)
|
||||
|
||||
|
||||
func allows_non_water_neighbor_on_edge(
|
||||
neighbor: TerrainChunkVariant,
|
||||
edge: TerrainChunkTopology.Edge,
|
||||
) -> bool:
|
||||
return (
|
||||
neighbor != null
|
||||
and definition.allows_non_water_neighbor_on_edge(
|
||||
neighbor.definition,
|
||||
source_edge(edge),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
func topology_signature(quantization: float) -> String:
|
||||
var tokens := PackedStringArray()
|
||||
for edge_value: int in TerrainChunkTopology.Edge.values():
|
||||
|
|
@ -26,6 +43,28 @@ func topology_signature(quantization: float) -> String:
|
|||
return "|".join(tokens)
|
||||
|
||||
|
||||
func constraint_signature(quantization: float) -> String:
|
||||
return "%s|neighbors:%s|ocean:%d|in:%d|out:%d" % [
|
||||
topology_signature(quantization),
|
||||
_neighbor_rule_signature(),
|
||||
rotated_edge_mask(definition.ocean_facing_edges),
|
||||
rotated_edge_mask(definition.water_inlet_edges),
|
||||
rotated_edge_mask(definition.water_outlet_edges),
|
||||
]
|
||||
|
||||
|
||||
func _neighbor_rule_signature() -> String:
|
||||
var edge_tokens := PackedStringArray()
|
||||
for edge_value: int in TerrainChunkTopology.Edge.values():
|
||||
var edge := edge_value as TerrainChunkTopology.Edge
|
||||
var tags: PackedStringArray = definition.allowed_neighbor_tags_for_edge(
|
||||
source_edge(edge)
|
||||
).duplicate()
|
||||
tags.sort()
|
||||
edge_tokens.append(",".join(tags))
|
||||
return "/".join(edge_tokens)
|
||||
|
||||
|
||||
func rotated_edge_mask(source_mask: int) -> int:
|
||||
var result := 0
|
||||
for edge_value: int in TerrainChunkTopology.Edge.values():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue