18 [](
const entt::meta_any& i)
20 return i.try_cast<
model>()->get_lod_override_enabled();
24 entt::meta_factory<model>{}
30 .data<&model::set_materials, &model::get_materials>(
"materials"_hs)
36 .data<&model::set_material_instances, &model::get_material_instances>(
"material_instances"_hs)
42 .data<&model::set_lods, &model::get_lods>(
"lods"_hs)
46 entt::attribute{
"tooltip",
"Explicit Levels of Detail. If not set, the model will use\n"
47 "the automatically generated mesh LODs (if any) based on the screen size."},
49 .data<&model::set_lod_override_enabled, &model::get_lod_override_enabled>(
"lod_override_enabled"_hs)
53 entt::attribute{
"tooltip",
"Enable to force a specific LOD level regardless of distance."},
55 .data<&model::set_lod_override_level, &model::get_lod_override_level>(
"lod_override_level"_hs)
59 entt::attribute{
"tooltip",
"The LOD level to use when override is enabled."},
64 .data<&model::set_lod_selection_bias, &model::get_lod_selection_bias>(
"lod_selection_bias"_hs)
68 entt::attribute{
"tooltip",
"The value added to the calculated LOD index. Increasing this value results in selecting less detailed LODs, reducing the value - in more detailed LODs."},
69 entt::attribute{
"readonly_predicate", is_lod_override_enabled_predicate},
73 .data<&model::set_lod_transition_time, &model::get_lod_transition_time>(
"lod_transition_time"_hs)
77 entt::attribute{
"tooltip",
"Duration of LOD transitions in seconds (0 = instant switch, >0 = smooth dithered crossfade)."},
85 try_save(ar, ser20::make_nvp(
"lods", obj.mesh_lods_));
86 try_save(ar, ser20::make_nvp(
"materials", obj.materials_));
87 try_save(ar, ser20::make_nvp(
"material_instances", obj.material_instances_));
88 try_save(ar, ser20::make_nvp(
"lod_override_enabled", obj.lod_override_enabled_));
89 try_save(ar, ser20::make_nvp(
"lod_override_level", obj.lod_override_level_));
90 try_save(ar, ser20::make_nvp(
"lod_selection_bias", obj.lod_selection_bias_));
91 try_save(ar, ser20::make_nvp(
"lod_transition_time", obj.lod_transition_time_));
98 std::vector<asset_handle<mesh>> lods = obj.get_lods();
99 try_load(ar, ser20::make_nvp(
"lods", lods));
101 try_load(ar, ser20::make_nvp(
"materials", obj.materials_));
102 try_load(ar, ser20::make_nvp(
"material_instances", obj.material_instances_));
103 try_load(ar, ser20::make_nvp(
"lod_override_enabled", obj.lod_override_enabled_));
104 try_load(ar, ser20::make_nvp(
"lod_override_level", obj.lod_override_level_));
105 try_load(ar, ser20::make_nvp(
"lod_selection_bias", obj.lod_selection_bias_));
106 try_load(ar, ser20::make_nvp(
"lod_transition_time", obj.lod_transition_time_));
static auto get_max_generated_lod_count() -> uint32_t
Gets the maximum number of LODs that can be generated for a mesh.
Structure describing a LOD group (set of meshes), LOD transitions, and their materials.
auto property_predicate(property_predicate_t< T > predicate) -> property_predicate_t< T >
attributes::value_type attribute
std::map< std::string, meta_any > attributes
BinaryInputArchive iarchive_binary_t
simd::JSONOutputArchive oarchive_associative_t
BinaryOutputArchive oarchive_binary_t
simd::JSONInputArchive iarchive_associative_t
#define SAVE_INSTANTIATE(cls, Archive)
auto try_save(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
#define LOAD_INSTANTIATE(cls, Archive)
auto try_load(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool