Differential D10931 Diff 36176 source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc
| Show All 23 Lines | |||||
| #include "DNA_ID.h" | #include "DNA_ID.h" | ||||
| #include "DNA_mesh_types.h" | #include "DNA_mesh_types.h" | ||||
| #include "DNA_meshdata_types.h" | #include "DNA_meshdata_types.h" | ||||
| #include "DNA_space_types.h" | #include "DNA_space_types.h" | ||||
| #include "DNA_userdef_types.h" | #include "DNA_userdef_types.h" | ||||
| #include "DEG_depsgraph_query.h" | #include "DEG_depsgraph_query.h" | ||||
| #include "ED_spreadsheet.h" | |||||
| #include "bmesh.h" | #include "bmesh.h" | ||||
| #include "spreadsheet_data_source_geometry.hh" | #include "spreadsheet_data_source_geometry.hh" | ||||
| #include "spreadsheet_intern.hh" | #include "spreadsheet_intern.hh" | ||||
| namespace blender::ed::spreadsheet { | namespace blender::ed::spreadsheet { | ||||
| void GeometryDataSource::foreach_default_column_ids( | void GeometryDataSource::foreach_default_column_ids( | ||||
| ▲ Show 20 Lines • Show All 351 Lines • ▼ Show 20 Lines | if (sspreadsheet->object_eval_state == SPREADSHEET_OBJECT_EVAL_STATE_ORIGINAL) { | ||||
| } | } | ||||
| else if (object_orig->type == OB_POINTCLOUD) { | else if (object_orig->type == OB_POINTCLOUD) { | ||||
| PointCloud *pointcloud = (PointCloud *)object_orig->data; | PointCloud *pointcloud = (PointCloud *)object_orig->data; | ||||
| PointCloudComponent &pointcloud_component = | PointCloudComponent &pointcloud_component = | ||||
| geometry_set.get_component_for_write<PointCloudComponent>(); | geometry_set.get_component_for_write<PointCloudComponent>(); | ||||
| pointcloud_component.replace(pointcloud, GeometryOwnershipType::ReadOnly); | pointcloud_component.replace(pointcloud, GeometryOwnershipType::ReadOnly); | ||||
| } | } | ||||
| } | } | ||||
| else { | else if (sspreadsheet->object_eval_state == SPREADSHEET_OBJECT_EVAL_STATE_EVALUATED) { | ||||
| if (used_component_type == GEO_COMPONENT_TYPE_MESH && object_eval->mode == OB_MODE_EDIT) { | if (used_component_type == GEO_COMPONENT_TYPE_MESH && object_eval->mode == OB_MODE_EDIT) { | ||||
| Mesh *mesh = BKE_modifier_get_evaluated_mesh_from_evaluated_object(object_eval, false); | Mesh *mesh = BKE_modifier_get_evaluated_mesh_from_evaluated_object(object_eval, false); | ||||
| if (mesh == nullptr) { | if (mesh == nullptr) { | ||||
| return geometry_set; | return geometry_set; | ||||
| } | } | ||||
| BKE_mesh_wrapper_ensure_mdata(mesh); | BKE_mesh_wrapper_ensure_mdata(mesh); | ||||
| MeshComponent &mesh_component = geometry_set.get_component_for_write<MeshComponent>(); | MeshComponent &mesh_component = geometry_set.get_component_for_write<MeshComponent>(); | ||||
| mesh_component.replace(mesh, GeometryOwnershipType::ReadOnly); | mesh_component.replace(mesh, GeometryOwnershipType::ReadOnly); | ||||
| mesh_component.copy_vertex_group_names_from_object(*object_eval); | mesh_component.copy_vertex_group_names_from_object(*object_eval); | ||||
| } | } | ||||
| else { | else { | ||||
| if (sspreadsheet->object_eval_state == SPREADSHEET_OBJECT_EVAL_STATE_NODE) { | if (BLI_listbase_count(&sspreadsheet->context_path) == 1) { | ||||
| if (object_eval->runtime.geometry_set_preview != nullptr) { | /* Use final evaluated object. */ | ||||
| geometry_set = *object_eval->runtime.geometry_set_preview; | |||||
| } | |||||
| } | |||||
| else if (sspreadsheet->object_eval_state == SPREADSHEET_OBJECT_EVAL_STATE_FINAL) { | |||||
| if (object_eval->runtime.geometry_set_eval != nullptr) { | if (object_eval->runtime.geometry_set_eval != nullptr) { | ||||
| geometry_set = *object_eval->runtime.geometry_set_eval; | geometry_set = *object_eval->runtime.geometry_set_eval; | ||||
| } | } | ||||
| } | } | ||||
| else { | |||||
| if (object_eval->runtime.geometry_set_previews != nullptr) { | |||||
| GHash *ghash = (GHash *)object_eval->runtime.geometry_set_previews; | |||||
| const uint64_t key = ED_spreadsheet_context_path_hash(sspreadsheet); | |||||
| GeometrySet *geometry_set_preview = (GeometrySet *)BLI_ghash_lookup_default( | |||||
| ghash, POINTER_FROM_UINT(key), nullptr); | |||||
| if (geometry_set_preview != nullptr) { | |||||
| geometry_set = *geometry_set_preview; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| return geometry_set; | return geometry_set; | ||||
| } | } | ||||
| static GeometryComponentType get_display_component_type(const bContext *C, Object *object_eval) | static GeometryComponentType get_display_component_type(const bContext *C, Object *object_eval) | ||||
| { | { | ||||
| SpaceSpreadsheet *sspreadsheet = CTX_wm_space_spreadsheet(C); | SpaceSpreadsheet *sspreadsheet = CTX_wm_space_spreadsheet(C); | ||||
| Show All 27 Lines | |||||