[Bf-blender-cvs] [ceaf4779da7] master: Fix active track always assigned for the active object

Sergey Sharybin noreply at git.blender.org
Tue Nov 22 11:54:23 CET 2022


Commit: ceaf4779da7ccb56fa89e259b54db70fad77f8c8
Author: Sergey Sharybin
Date:   Thu Oct 13 17:26:24 2022 +0200
Branches: master
https://developer.blender.org/rBceaf4779da7ccb56fa89e259b54db70fad77f8c8

Fix active track always assigned for the active object

A missing part from the storage split refactor.

===================================================================

M	source/blender/makesrna/intern/rna_tracking.c

===================================================================

diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c
index e4c04ed7461..70b048c8baa 100644
--- a/source/blender/makesrna/intern/rna_tracking.c
+++ b/source/blender/makesrna/intern/rna_tracking.c
@@ -191,6 +191,62 @@ static void rna_tracking_active_plane_track_set(PointerRNA *ptr,
   }
 }
 
+static PointerRNA rna_tracking_object_active_track_get(PointerRNA *ptr)
+{
+  MovieClip *clip = (MovieClip *)ptr->owner_id;
+  const MovieTrackingObject *tracking_object = BKE_tracking_object_get_active(&clip->tracking);
+
+  return rna_pointer_inherit_refine(ptr, &RNA_MovieTrackingTrack, tracking_object->active_track);
+}
+
+static void rna_tracking_object_active_track_set(PointerRNA *ptr,
+                                                 PointerRNA value,
+                                                 struct ReportList *reports)
+{
+  MovieTrackingTrack *track = (MovieTrackingTrack *)value.data;
+  MovieTrackingObject *tracking_object = (MovieTrackingObject *)ptr->data;
+  int index = BLI_findindex(&tracking_object->tracks, track);
+
+  if (index != -1) {
+    tracking_object->active_track = track;
+  }
+  else {
+    BKE_reportf(reports,
+                RPT_ERROR,
+                "Track '%s' is not found in the tracking object %s",
+                track->name,
+                tracking_object->name);
+  }
+}
+
+static PointerRNA rna_tracking_object_active_plane_track_get(PointerRNA *ptr)
+{
+  MovieTrackingObject *tracking_object = (MovieTrackingObject *)ptr->data;
+
+  return rna_pointer_inherit_refine(
+      ptr, &RNA_MovieTrackingPlaneTrack, tracking_object->active_plane_track);
+}
+
+static void rna_tracking_object_active_plane_track_set(PointerRNA *ptr,
+                                                       PointerRNA value,
+                                                       struct ReportList *reports)
+{
+  MovieTrackingPlaneTrack *plane_track = (MovieTrackingPlaneTrack *)value.data;
+  MovieTrackingObject *tracking_object = (MovieTrackingObject *)ptr->data;
+  int index = BLI_findindex(&tracking_object->plane_tracks, plane_track);
+
+  if (index != -1) {
+    tracking_object->active_plane_track = plane_track;
+  }
+  else {
+    BKE_reportf(reports,
+                RPT_ERROR,
+                "Plane track '%s' is not found in the tracking object %s",
+                plane_track->name,
+                tracking_object->name);
+  }
+}
+
 static void rna_trackingTrack_name_set(PointerRNA *ptr, const char *value)
 {
   MovieClip *clip = (MovieClip *)ptr->owner_id;
@@ -2226,8 +2282,11 @@ static void rna_def_trackingObjectTracks(BlenderRNA *brna)
   /* active track */
   prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
   RNA_def_property_struct_type(prop, "MovieTrackingTrack");
-  RNA_def_property_pointer_funcs(
-      prop, "rna_tracking_active_track_get", "rna_tracking_active_track_set", NULL, NULL);
+  RNA_def_property_pointer_funcs(prop,
+                                 "rna_tracking_object_active_track_get",
+                                 "rna_tracking_object_active_track_set",
+                                 NULL,
+                                 NULL);
   RNA_def_property_flag(prop, PROP_EDITABLE | PROP_NEVER_UNLINK);
   RNA_def_property_ui_text(prop, "Active Track", "Active track in this tracking data object");
   RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_MOVIECLIP);
@@ -2247,8 +2306,8 @@ static void rna_def_trackingObjectPlaneTracks(BlenderRNA *brna)
   prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
   RNA_def_property_struct_type(prop, "MovieTrackingTrack");
   RNA_def_property_pointer_funcs(prop,
-                                 "rna_tracking_active_plane_track_get",
-                                 "rna_tracking_active_plane_track_set",
+                                 "rna_tracking_object_active_plane_track_get",
+                                 "rna_tracking_object_active_plane_track_set",
                                  NULL,
                                  NULL);
   RNA_def_property_flag(prop, PROP_EDITABLE | PROP_NEVER_UNLINK);



More information about the Bf-blender-cvs mailing list