Skip to content

Commit 3dc432c

Browse files
committed
Fix meshasset not saving card height offset, consolidate density
1 parent 0d730e3 commit 3dc432c

File tree

3 files changed

+10
-27
lines changed

3 files changed

+10
-27
lines changed

project/addons/terrain_3d/src/asset_dock.gd

+1-1
Original file line numberDiff line numberDiff line change
@@ -792,8 +792,8 @@ class ListEntry extends VBoxContainer:
792792
var ma := Terrain3DMeshAsset.new()
793793
if resource is Terrain3DMeshAsset:
794794
ma.id = resource.id
795-
ma.set_scene_file(res)
796795
set_edited_resource(ma, false)
796+
ma.set_scene_file(res)
797797
resource = ma
798798
elif res is Terrain3DMeshAsset and type == Terrain3DAssets.TYPE_MESH:
799799
if resource is Terrain3DMeshAsset:

src/terrain_3d_mesh_asset.cpp

+7-23
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ void Terrain3DMeshAsset::_set_generated_type(const GenType p_type) {
2626
LOG(DEBUG, "Generating card mesh");
2727
_meshes.push_back(_get_generated_mesh());
2828
_set_material_override(_get_material());
29-
_height_offset = 0.5f;
30-
_generated_faces = 2;
31-
_relative_density = 10.f;
32-
_calculated_density = 10.f;
3329
}
3430
}
3531

@@ -158,8 +154,7 @@ void Terrain3DMeshAsset::clear() {
158154
_cast_shadows = GeometryInstance3D::SHADOW_CASTING_SETTING_ON;
159155
_generated_faces = 2.f;
160156
_generated_size = Vector2(1.f, 1.f);
161-
_relative_density = -1.f;
162-
_calculated_density = -1.f;
157+
_density = 10.f;
163158
_packed_scene.unref();
164159
_material_override.unref();
165160
_set_generated_type(TYPE_TEXTURE_CARD);
@@ -187,19 +182,7 @@ void Terrain3DMeshAsset::set_height_offset(const real_t p_offset) {
187182

188183
void Terrain3DMeshAsset::set_density(const real_t p_density) {
189184
LOG(INFO, "Setting mesh density: ", p_density);
190-
if (p_density < 0) {
191-
_relative_density = _calculated_density;
192-
} else {
193-
_relative_density = CLAMP(p_density, 0.01f, 10.f);
194-
}
195-
}
196-
197-
real_t Terrain3DMeshAsset::get_density() const {
198-
if (_relative_density > 0) {
199-
return _relative_density;
200-
} else {
201-
return _calculated_density;
202-
}
185+
_density = CLAMP(p_density, 0.01f, 10.f);
203186
}
204187

205188
void Terrain3DMeshAsset::set_visibility_range(const real_t p_visibility_range) {
@@ -260,17 +243,18 @@ void Terrain3DMeshAsset::set_scene_file(const Ref<PackedScene> &p_scene_file) {
260243
}
261244
if (_meshes.size() > 0) {
262245
Ref<Mesh> mesh = _meshes[0];
263-
_calculated_density = CLAMP(10.f / mesh->get_aabb().get_volume(), 0.01f, 10.0f);
264-
_relative_density = _calculated_density;
265-
LOG(DEBUG, "Emitting file_changed");
266-
emit_signal("file_changed");
246+
_density = CLAMP(10.f / mesh->get_aabb().get_volume(), 0.01f, 10.0f);
267247
} else {
268248
LOG(ERROR, "No MeshInstance3D found in scene file");
269249
}
270250
notify_property_list_changed();
271251
} else {
272252
set_generated_type(TYPE_TEXTURE_CARD);
253+
_density = 10.f;
273254
}
255+
LOG(DEBUG, "Emitting file_changed");
256+
emit_signal("file_changed");
257+
emit_signal("instancer_setting_changed");
274258
}
275259

276260
void Terrain3DMeshAsset::set_material_override(const Ref<Material> &p_material) {

src/terrain_3d_mesh_asset.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ class Terrain3DMeshAsset : public Terrain3DAssetResource {
3737
Vector2 _generated_size = Vector2(1.f, 1.f);
3838
Ref<PackedScene> _packed_scene;
3939
Ref<Material> _material_override;
40-
real_t _relative_density = -1.f;
41-
real_t _calculated_density = -1.f;
40+
real_t _density = 10.f;
4241

4342
// Working data
4443
TypedArray<Mesh> _meshes;
@@ -65,7 +64,7 @@ class Terrain3DMeshAsset : public Terrain3DAssetResource {
6564
void set_height_offset(const real_t p_offset);
6665
real_t get_height_offset() const { return _height_offset; }
6766
void set_density(const real_t p_density);
68-
real_t get_density() const;
67+
real_t get_density() const { return _density; }
6968

7069
void set_visibility_range(const real_t p_visibility_range);
7170
real_t get_visibility_range() const { return _visibility_range; };

0 commit comments

Comments
 (0)