maps4fs 1.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,187 @@
1
+ """This module contains settings models for all components."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from pydantic import BaseModel, ConfigDict
8
+
9
+
10
+ class SharedSettings(BaseModel):
11
+ """Represents the shared settings for all components."""
12
+
13
+ mesh_z_scaling_factor: float | None = None
14
+ height_scale_multiplier: float | None = None
15
+ height_scale_value: float | None = None
16
+ change_height_scale: bool = False
17
+
18
+ model_config = ConfigDict(
19
+ frozen=False,
20
+ )
21
+
22
+
23
+ class SettingsModel(BaseModel):
24
+ """Base class for settings models. It provides methods to convert settings to and from JSON."""
25
+
26
+ model_config = ConfigDict(
27
+ frozen=False,
28
+ )
29
+
30
+ @classmethod
31
+ def all_settings_to_json(cls) -> dict[str, dict[str, Any]]:
32
+ """Get all settings of the current class and its subclasses as a dictionary.
33
+
34
+ Returns:
35
+ dict[str, dict[str, Any]]: Dictionary with settings of the current class and its
36
+ subclasses.
37
+ """
38
+ all_settings = {}
39
+ for subclass in cls.__subclasses__():
40
+ all_settings[subclass.__name__] = subclass().model_dump()
41
+
42
+ return all_settings
43
+
44
+ @classmethod
45
+ def all_settings_from_json(
46
+ cls, data: dict, flattening: bool = True
47
+ ) -> dict[str, SettingsModel]:
48
+ """Create settings instances from JSON data.
49
+
50
+ Arguments:
51
+ data (dict): JSON data.
52
+ flattening (bool): if set to True will flattet iterables to use the first element
53
+ of it.
54
+
55
+ Returns:
56
+ dict[str, Type[SettingsModel]]: Dictionary with settings instances.
57
+ """
58
+ settings = {}
59
+ for subclass in cls.__subclasses__():
60
+ subclass_data = data[subclass.__name__]
61
+ if flattening:
62
+ for key, value in subclass_data.items():
63
+ if isinstance(value, (list, tuple)):
64
+ subclass_data[key] = value[0]
65
+
66
+ settings[subclass.__name__] = subclass(**subclass_data)
67
+
68
+ return settings
69
+
70
+ @classmethod
71
+ def all_settings(cls) -> list[SettingsModel]:
72
+ """Get all settings of the current class and its subclasses.
73
+
74
+ Returns:
75
+ list[SettingsModel]: List with settings of the current class and its subclasses.
76
+ """
77
+ settings = []
78
+ for subclass in cls.__subclasses__():
79
+ settings.append(subclass())
80
+
81
+ return settings
82
+
83
+
84
+ class DEMSettings(SettingsModel):
85
+ """Represents the advanced settings for DEM component.
86
+
87
+ Attributes:
88
+ multiplier (int): multiplier for the heightmap, every pixel will be multiplied by this
89
+ value.
90
+ blur_radius (int): radius of the blur filter.
91
+ plateau (int): plateau height, will be added to each pixel.
92
+ water_depth (int): water depth, will be subtracted from each pixel where the water
93
+ is present.
94
+ """
95
+
96
+ multiplier: int = 1
97
+ blur_radius: int = 35
98
+ plateau: int = 0
99
+ water_depth: int = 0
100
+
101
+
102
+ class BackgroundSettings(SettingsModel):
103
+ """Represents the advanced settings for background component.
104
+
105
+ Attributes:
106
+ generate_background (bool): generate obj files for the background terrain.
107
+ generate_water (bool): generate obj files for the water.
108
+ resize_factor (int): resize factor for the background terrain and water.
109
+ It will be used as 1 / resize_factor of the original size.
110
+ """
111
+
112
+ generate_background: bool = False
113
+ generate_water: bool = False
114
+ resize_factor: int = 8
115
+ remove_center: bool = False
116
+ apply_decimation: bool = False
117
+ decimation_percent: int = 25
118
+ decimation_agression: int = 3
119
+
120
+
121
+ class GRLESettings(SettingsModel):
122
+ """Represents the advanced settings for GRLE component.
123
+
124
+ Attributes:
125
+ farmland_margin (int): margin around the farmland.
126
+ random_plants (bool): generate random plants on the map or use the default one.
127
+ add_farmyards (bool): If True, regions of frarmyards will be added to the map
128
+ without corresponding fields.
129
+ """
130
+
131
+ farmland_margin: int = 0
132
+ random_plants: bool = True
133
+ add_farmyards: bool = False
134
+ base_grass: tuple | str = ("smallDenseMix", "meadow")
135
+ plants_island_minimum_size: int = 10
136
+ plants_island_maximum_size: int = 200
137
+ plants_island_vertex_count: int = 30
138
+ plants_island_rounding_radius: int = 15
139
+ plants_island_percent: int = 100
140
+
141
+
142
+ class I3DSettings(SettingsModel):
143
+ """Represents the advanced settings for I3D component.
144
+
145
+ Attributes:
146
+ forest_density (int): density of the forest (distance between trees).
147
+ """
148
+
149
+ forest_density: int = 10
150
+
151
+
152
+ class TextureSettings(SettingsModel):
153
+ """Represents the advanced settings for texture component.
154
+
155
+ Attributes:
156
+ dissolve (bool): dissolve the texture into several images.
157
+ fields_padding (int): padding around the fields.
158
+ skip_drains (bool): skip drains generation.
159
+ """
160
+
161
+ dissolve: bool = False
162
+ fields_padding: int = 0
163
+ skip_drains: bool = False
164
+
165
+
166
+ class SplineSettings(SettingsModel):
167
+ """Represents the advanced settings for spline component.
168
+
169
+ Attributes:
170
+ spline_density (int): the number of extra points that will be added between each two
171
+ existing points.
172
+ """
173
+
174
+ spline_density: int = 2
175
+
176
+
177
+ class SatelliteSettings(SettingsModel):
178
+ """Represents the advanced settings for satellite component.
179
+
180
+ Attributes:
181
+ download_images (bool): download satellite images.
182
+ margin (int): margin around the map.
183
+ """
184
+
185
+ download_images: bool = False
186
+ satellite_margin: int = 0
187
+ zoom_level: int = 14