diff --git a/src/terrain_3d_instancer.cpp b/src/terrain_3d_instancer.cpp index 2e38f5ed..8eaa3089 100644 --- a/src/terrain_3d_instancer.cpp +++ b/src/terrain_3d_instancer.cpp @@ -89,6 +89,7 @@ void Terrain3DInstancer::_update_mmis(const Vector2i &p_region_loc, const int p_ int max_lod = ma->get_maximum_lod(); int shadow_lod = ma->get_shadow_lod(); + real_t visibility_margin = ma->get_visibility_margin(); for (int lod = 0; lod <= max_lod; lod++) { Vector2i mesh_key(mesh_id, lod); @@ -122,10 +123,11 @@ void Terrain3DInstancer::_update_mmis(const Vector2i &p_region_loc, const int p_ mmi->set_cast_shadows_setting(GeometryInstance3D::SHADOW_CASTING_SETTING_OFF); } - // TODO: Discuss storage / uprage path for visibility range - // mmi->set_visibility_range_end(ma->get_visibility_range()); - // TODO: Review margin when implementing lods - //mmi->set_visibility_range_end_margin(ma->get_visibility_margin()); + if (visibility_margin > 0.0f) { + mmi->set_visibility_range_begin_margin(visibility_margin); + mmi->set_visibility_range_end_margin(visibility_margin); + } + cell_mmi_dict[cell] = mmi; //Attach to tree Node *node_container = _terrain->get_mmi_parent()->get_node_internal(rname); diff --git a/src/terrain_3d_mesh_asset.cpp b/src/terrain_3d_mesh_asset.cpp index 1f191ae7..c8590f7c 100644 --- a/src/terrain_3d_mesh_asset.cpp +++ b/src/terrain_3d_mesh_asset.cpp @@ -414,8 +414,8 @@ void Terrain3DMeshAsset::_bind_methods() { ClassDB::bind_method(D_METHOD("get_density"), &Terrain3DMeshAsset::get_density); ClassDB::bind_method(D_METHOD("set_visibility_range", "distance"), &Terrain3DMeshAsset::set_visibility_range); ClassDB::bind_method(D_METHOD("get_visibility_range"), &Terrain3DMeshAsset::get_visibility_range); - //ClassDB::bind_method(D_METHOD("set_visibility_margin", "distance"), &Terrain3DMeshAsset::set_visibility_margin); - //ClassDB::bind_method(D_METHOD("get_visibility_margin"), &Terrain3DMeshAsset::get_visibility_margin); + ClassDB::bind_method(D_METHOD("set_visibility_margin", "distance"), &Terrain3DMeshAsset::set_visibility_margin); + ClassDB::bind_method(D_METHOD("get_visibility_margin"), &Terrain3DMeshAsset::get_visibility_margin); ClassDB::bind_method(D_METHOD("set_cast_shadows", "mode"), &Terrain3DMeshAsset::set_cast_shadows); ClassDB::bind_method(D_METHOD("get_cast_shadows"), &Terrain3DMeshAsset::get_cast_shadows); ClassDB::bind_method(D_METHOD("set_maximum_lod", "lod"), &Terrain3DMeshAsset::set_maximum_lod); @@ -449,9 +449,8 @@ void Terrain3DMeshAsset::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height_offset", PROPERTY_HINT_RANGE, "-20.0,20.0,.005"), "set_height_offset", "get_height_offset"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "density", PROPERTY_HINT_RANGE, ".01,10.0,.005"), "set_density", "get_density"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_range", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_visibility_range", "get_visibility_range"); - //ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_margin", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_visibility_margin", "get_visibility_margin"); + ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "visibility_margin", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_visibility_margin", "get_visibility_margin"); ADD_PROPERTY(PropertyInfo(Variant::INT, "cast_shadows", PROPERTY_HINT_ENUM, "Off,On,Double-Sided,Shadows Only"), "set_cast_shadows", "get_cast_shadows"); - // TODO: add readonly mesh count? ADD_PROPERTY(PropertyInfo(Variant::INT, "maximum_lod", PROPERTY_HINT_NONE), "set_maximum_lod", "get_maximum_lod"); ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_lod", PROPERTY_HINT_NONE), "set_shadow_lod", "get_shadow_lod"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "lod_0_visibility_range", PROPERTY_HINT_RANGE, "0.,4096.0,.05,or_greater"), "set_lod_0_visibility_range", "get_lod_0_visibility_range");