Versioning function to replace legacy instancing panel by geometry node modifier #105494
|
@ -247,7 +247,7 @@ void IDP_ClearProperty(struct IDProperty *prop);
|
||||||
void IDP_Reset(struct IDProperty *prop, const struct IDProperty *reference);
|
void IDP_Reset(struct IDProperty *prop, const struct IDProperty *reference);
|
||||||
|
|
||||||
#define IDP_Int(prop) ((prop)->data.val)
|
#define IDP_Int(prop) ((prop)->data.val)
|
||||||
#define IDP_Bool(prop) ((prop)->data.val)
|
#define IDP_Bool(prop) (*(bool *)&(prop)->data.val)
|
||||||
#define IDP_Array(prop) ((prop)->data.pointer)
|
#define IDP_Array(prop) ((prop)->data.pointer)
|
||||||
/* C11 const correctness for casts */
|
/* C11 const correctness for casts */
|
||||||
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
|
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
|
||||||
|
|
|
@ -114,6 +114,11 @@ template<typename Key, typename Value> class MultiValueMap {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_empty() const
|
||||||
|
{
|
||||||
|
return map_.is_empty();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of keys.
|
* Get the number of keys.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -15,6 +15,7 @@ set(INC
|
||||||
../makesdna
|
../makesdna
|
||||||
../makesrna
|
../makesrna
|
||||||
../nodes
|
../nodes
|
||||||
|
../modifiers
|
||||||
../render
|
../render
|
||||||
../sequencer
|
../sequencer
|
||||||
../windowmanager
|
../windowmanager
|
||||||
|
|
|
@ -29,7 +29,9 @@
|
||||||
|
|
||||||
void do_versions_after_linking_400(FileData * /*fd*/, Main *bmain)
|
void do_versions_after_linking_400(FileData * /*fd*/, Main *bmain)
|
||||||
{
|
{
|
||||||
UNUSED_VARS(bmain);
|
if (!MAIN_VERSION_ATLEAST(bmain, 400, 3)) {
|
||||||
|
|||||||
|
remove_legacy_instances_on(bmain, bmain->objects);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void version_mesh_legacy_to_struct_of_array_format(Mesh &mesh)
|
static void version_mesh_legacy_to_struct_of_array_format(Mesh &mesh)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -123,4 +123,7 @@ void node_tree_relink_with_socket_id_map(bNodeTree &ntree,
|
||||||
bNode &old_node,
|
bNode &old_node,
|
||||||
bNode &new_node,
|
bNode &new_node,
|
||||||
const blender::Map<std::string, std::string> &map);
|
const blender::Map<std::string, std::string> &map);
|
||||||
|
|
||||||
|
void remove_legacy_instances_on(Main *bmain, ListBase &lb_objects);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -27,6 +27,7 @@ static void node_declare(const bNodeTree &node_tree,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BLI_assert(group->runtime->field_inferencing_interface != nullptr);
|
||||||
const FieldInferencingInterface &field_interface = *group->runtime->field_inferencing_interface;
|
const FieldInferencingInterface &field_interface = *group->runtime->field_inferencing_interface;
|
||||||
for (const int i : r_declaration.inputs.index_range()) {
|
for (const int i : r_declaration.inputs.index_range()) {
|
||||||
r_declaration.inputs[i]->input_field_type = field_interface.inputs[i];
|
r_declaration.inputs[i]->input_field_type = field_interface.inputs[i];
|
||||||
|
|
Loading…
Reference in New Issue
Creating IDs in versioning code is forbidden. Until a better system (more generic) is implemented, a specific call needs to be added after all versioning is done, see e.g. the call to
BKE_lib_override_library_main_proxy_convert
insetup_app_data()