Geometry Nodes: Add animation start and end to scene time #104948
|
@ -17,11 +17,13 @@ ExternalProject_Add(external_xvidcore
|
|||
INSTALL_DIR ${LIBDIR}/xvidcore
|
||||
)
|
||||
|
||||
ExternalProject_Add_Step(external_xvidcore after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E rename ${LIBDIR}/xvidcore/lib/xvidcore.a ${LIBDIR}/xvidcore/lib/libxvidcore.a || true
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${LIBDIR}/xvidcore/lib/xvidcore.dll.a
|
||||
DEPENDEES install
|
||||
)
|
||||
if(WIN32)
|
||||
ExternalProject_Add_Step(external_xvidcore after_install
|
||||
COMMAND ${CMAKE_COMMAND} -E rename ${LIBDIR}/xvidcore/lib/xvidcore.a ${LIBDIR}/xvidcore/lib/libxvidcore.a || true
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${LIBDIR}/xvidcore/lib/xvidcore.dll.a
|
||||
DEPENDEES install
|
||||
)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set_target_properties(external_xvidcore PROPERTIES FOLDER Mingw)
|
||||
|
|
|
@ -142,7 +142,7 @@ def cmake_advanced_info() -> Union[Tuple[List[str], List[Tuple[str, str]]], Tupl
|
|||
|
||||
make_exe = cmake_cache_var("CMAKE_MAKE_PROGRAM")
|
||||
if make_exe is None:
|
||||
print("Make command not found in: %r not found" % project_path)
|
||||
print("Make command not found: CMAKE_MAKE_PROGRAM")
|
||||
return None, None
|
||||
|
||||
make_exe_basename = os.path.basename(make_exe)
|
||||
|
|
|
@ -52,9 +52,11 @@ def get_blender_git_root() -> str:
|
|||
# Setup for precompiled libraries and tests from svn.
|
||||
|
||||
|
||||
def get_effective_architecture(args: argparse.Namespace):
|
||||
if args.architecture:
|
||||
return args.architecture
|
||||
def get_effective_architecture(args: argparse.Namespace) -> str:
|
||||
architecture = args.architecture
|
||||
if architecture:
|
||||
assert isinstance(architecture, str)
|
||||
return architecture
|
||||
|
||||
# Check platform.version to detect arm64 with x86_64 python binary.
|
||||
if "ARM64" in platform.version():
|
||||
|
@ -273,7 +275,7 @@ if __name__ == "__main__":
|
|||
major = blender_version.version // 100
|
||||
minor = blender_version.version % 100
|
||||
branch = f"blender-v{major}.{minor}-release"
|
||||
release_version = f"{major}.{minor}"
|
||||
release_version: Optional[str] = f"{major}.{minor}"
|
||||
else:
|
||||
branch = 'main'
|
||||
release_version = None
|
||||
|
|
|
@ -122,7 +122,7 @@ KERNEL_STRUCT_MEMBER(guiding, bool, use_surface_guiding, KERNEL_FEATURE_PATH_GUI
|
|||
KERNEL_STRUCT_MEMBER(guiding, float, sample_surface_guiding_rand, KERNEL_FEATURE_PATH_GUIDING)
|
||||
/* The probability to use surface guiding (i.e., diffuse sampling prob * guiding prob)*/
|
||||
KERNEL_STRUCT_MEMBER(guiding, float, surface_guiding_sampling_prob, KERNEL_FEATURE_PATH_GUIDING)
|
||||
/* Probability of sampling a BSSRDF closure instead of a BSDF closure*/
|
||||
/* Probability of sampling a BSSRDF closure instead of a BSDF closure. */
|
||||
KERNEL_STRUCT_MEMBER(guiding, float, bssrdf_sampling_prob, KERNEL_FEATURE_PATH_GUIDING)
|
||||
/* If volume guiding is enabled */
|
||||
KERNEL_STRUCT_MEMBER(guiding, bool, use_volume_guiding, KERNEL_FEATURE_PATH_GUIDING)
|
||||
|
|
|
@ -1177,7 +1177,7 @@ void LightManager::device_update(Device *device,
|
|||
|
||||
void LightManager::device_free(Device *, DeviceScene *dscene, const bool free_background)
|
||||
{
|
||||
/* to-do: check if the light tree member variables need to be wrapped in a conditional too*/
|
||||
/* TODO: check if the light tree member variables need to be wrapped in a conditional too. */
|
||||
dscene->light_tree_nodes.free();
|
||||
dscene->light_tree_emitters.free();
|
||||
dscene->light_to_tree.free();
|
||||
|
|
|
@ -77,17 +77,17 @@ TEST(nla_track, BKE_nlatrack_remove_strip)
|
|||
strip2.start = 11;
|
||||
strip2.end = 20;
|
||||
|
||||
// Add NLA strips to the NLATrack.
|
||||
/* Add NLA strips to the NLATrack. */
|
||||
BKE_nlastrips_add_strip(&strips, &strip1);
|
||||
BKE_nlastrips_add_strip(&strips, &strip2);
|
||||
track.strips = strips;
|
||||
|
||||
// ensure we have 2 strips in the track.
|
||||
/* Ensure we have 2 strips in the track. */
|
||||
EXPECT_EQ(2, BLI_listbase_count(&track.strips));
|
||||
|
||||
BKE_nlatrack_remove_strip(&track, &strip2);
|
||||
EXPECT_EQ(1, BLI_listbase_count(&track.strips));
|
||||
// ensure the correct strip was removed.
|
||||
/* Ensure the correct strip was removed. */
|
||||
EXPECT_EQ(-1, BLI_findindex(&track.strips, &strip2));
|
||||
}
|
||||
|
||||
|
@ -97,20 +97,20 @@ TEST(nla_track, BKE_nlatrack_remove_and_free)
|
|||
NlaTrack *track1;
|
||||
NlaTrack *track2;
|
||||
|
||||
// Add NLA tracks to the Animation Data.
|
||||
/* Add NLA tracks to the Animation Data. */
|
||||
track1 = BKE_nlatrack_add(&adt, NULL, false);
|
||||
track2 = BKE_nlatrack_add(&adt, track1, false);
|
||||
|
||||
// ensure we have 2 tracks in the track.
|
||||
/* Ensure we have 2 tracks in the track. */
|
||||
EXPECT_EQ(2, BLI_listbase_count(&adt.nla_tracks));
|
||||
|
||||
BKE_nlatrack_remove_and_free(&adt.nla_tracks, track2, false);
|
||||
EXPECT_EQ(1, BLI_listbase_count(&adt.nla_tracks));
|
||||
|
||||
// ensure the correct track was removed.
|
||||
/* Ensure the correct track was removed. */
|
||||
EXPECT_EQ(-1, BLI_findindex(&adt.nla_tracks, track2));
|
||||
|
||||
// free the rest of the tracks, and ensure they are removed.
|
||||
/* Free the rest of the tracks, and ensure they are removed. */
|
||||
BKE_nlatrack_remove_and_free(&adt.nla_tracks, track1, false);
|
||||
EXPECT_EQ(0, BLI_listbase_count(&adt.nla_tracks));
|
||||
EXPECT_EQ(-1, BLI_findindex(&adt.nla_tracks, track1));
|
||||
|
|
|
@ -2479,6 +2479,8 @@ void nodeInternalRelink(bNodeTree *ntree, bNode *node)
|
|||
link.tosock->link = &link;
|
||||
}
|
||||
|
||||
Vector<bNodeLink *> duplicate_links_to_remove;
|
||||
|
||||
/* redirect downstream links */
|
||||
LISTBASE_FOREACH_MUTABLE (bNodeLink *, link, &ntree->links) {
|
||||
/* do we have internal link? */
|
||||
|
@ -2495,7 +2497,7 @@ void nodeInternalRelink(bNodeTree *ntree, bNode *node)
|
|||
link_to_compare->tosock == link->tosock) {
|
||||
adjust_multi_input_indices_after_removed_link(
|
||||
ntree, link_to_compare->tosock, link_to_compare->multi_input_socket_index);
|
||||
nodeRemLink(ntree, link_to_compare);
|
||||
duplicate_links_to_remove.append_non_duplicates(link_to_compare);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2533,6 +2535,10 @@ void nodeInternalRelink(bNodeTree *ntree, bNode *node)
|
|||
}
|
||||
}
|
||||
|
||||
for (bNodeLink *link : duplicate_links_to_remove) {
|
||||
nodeRemLink(ntree, link);
|
||||
}
|
||||
|
||||
/* remove remaining upstream links */
|
||||
LISTBASE_FOREACH_MUTABLE (bNodeLink *, link, &ntree->links) {
|
||||
if (link->tonode == node) {
|
||||
|
|
|
@ -956,7 +956,7 @@ ScrArea *BKE_screen_area_map_find_area_xy(const ScrAreaMap *areamap,
|
|||
const int xy[2])
|
||||
{
|
||||
LISTBASE_FOREACH (ScrArea *, area, &areamap->areabase) {
|
||||
/* Test area's outer screen verts, not inner totrct. */
|
||||
/* Test area's outer screen verts, not inner `area->totrct`. */
|
||||
if (xy[0] >= area->v1->vec.x && xy[0] <= area->v4->vec.x && xy[1] >= area->v1->vec.y &&
|
||||
xy[1] <= area->v2->vec.y) {
|
||||
if (ELEM(spacetype, SPACE_TYPE_ANY, area->spacetype)) {
|
||||
|
|
|
@ -59,9 +59,9 @@ void main()
|
|||
* IF PrimType == LineList: base_vertex_id = quad_id*2
|
||||
* IF PrimType == LineStrip: base_vertex_id = quad_id
|
||||
*
|
||||
* Note: This is currently used as LineList.
|
||||
* NOTE: This is currently used as LineList.
|
||||
*
|
||||
* Note: Primitive Restart Will not work with this setup as-is. We should avoid using
|
||||
* NOTE: Primitive Restart Will not work with this setup as-is. We should avoid using
|
||||
* input primitive types which use restart indices. */
|
||||
int base_vertex_id = quad_id * 2;
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@ static int paint_mask_extract_exec(bContext *C, wmOperator *op)
|
|||
params.add_solidify = RNA_boolean_get(op->ptr, "add_solidify");
|
||||
|
||||
/* Push an undo step prior to extraction.
|
||||
* Note: A second push happens after the operator due to
|
||||
* NOTE: A second push happens after the operator due to
|
||||
* the OPTYPE_UNDO flag; having an initial undo step here
|
||||
* is just needed to preserve the active object pointer.
|
||||
*
|
||||
|
|
|
@ -2680,7 +2680,6 @@ void draw_timeline_seq(const bContext *C, ARegion *region)
|
|||
Editing *ed = SEQ_editing_get(scene);
|
||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
View2D *v2d = ®ion->v2d;
|
||||
float col[3];
|
||||
|
||||
seq_prefetch_wm_notify(C, scene);
|
||||
|
||||
|
@ -2689,8 +2688,7 @@ void draw_timeline_seq(const bContext *C, ARegion *region)
|
|||
GPU_framebuffer_bind_no_srgb(framebuffer_overlay);
|
||||
GPU_depth_test(GPU_DEPTH_NONE);
|
||||
|
||||
UI_GetThemeColor3fv(TH_BACK, col);
|
||||
GPU_clear_color(col[0], col[1], col[2], 0.0f);
|
||||
UI_ThemeClearColor(TH_BACK);
|
||||
|
||||
UI_view2d_view_ortho(v2d);
|
||||
draw_seq_timeline_channels(v2d);
|
||||
|
|
|
@ -1499,7 +1499,7 @@ static Mesh *create_merged_mesh(const Mesh &mesh,
|
|||
const int totedge = mesh.totedge;
|
||||
|
||||
/* Reuse the same buffer as #vert_dest_map.
|
||||
* Note: the caller must be made aware of it changes. */
|
||||
* NOTE: the caller must be made aware of it changes. */
|
||||
MutableSpan<int> vert_group_map = vert_dest_map;
|
||||
|
||||
WeldMesh weld_mesh;
|
||||
|
|
|
@ -1895,7 +1895,7 @@ static void lineart_sort_adjacent_items(LineartAdjacentEdge *ai, int length)
|
|||
ai, ai + length, [](const LineartAdjacentEdge &p1, const LineartAdjacentEdge &p2) {
|
||||
int a = p1.v1 - p2.v1;
|
||||
int b = p1.v2 - p2.v2;
|
||||
/* parallel_sort() requires cmp() to return true when the first element needs to appear
|
||||
/* `parallel_sort()` requires `cmp()` to return true when the first element needs to appear
|
||||
* before the second element in the sorted array, false otherwise (strict weak ordering),
|
||||
* see https://en.cppreference.com/w/cpp/named_req/Compare. */
|
||||
if (a < 0) {
|
||||
|
|
|
@ -346,7 +346,7 @@ void gpu_shader_create_info_init()
|
|||
overlay_motion_path_line_clipped = overlay_motion_path_line_clipped_no_geom;
|
||||
|
||||
/* Workbench shadows.
|
||||
* Note: Updates additional-info used by workbench shadow permutations.
|
||||
* NOTE: Updates additional-info used by workbench shadow permutations.
|
||||
* Must be prepared prior to permutation preparation. */
|
||||
workbench_shadow_manifold = workbench_shadow_manifold_no_geom;
|
||||
workbench_shadow_no_manifold = workbench_shadow_no_manifold_no_geom;
|
||||
|
|
|
@ -339,7 +339,7 @@ void MTLImmediate::end()
|
|||
} break;
|
||||
case GPU_PRIM_LINE_LOOP: {
|
||||
/* Patch final vertex of line loop to close. Rendered using LineStrip.
|
||||
* Note: vertex_len represents original length, however, allocated Metal
|
||||
* NOTE: vertex_len represents original length, however, allocated Metal
|
||||
* buffer contains space for one extra vertex when LineLoop is used. */
|
||||
uchar *buffer_data = reinterpret_cast<uchar *>(current_allocation_.data);
|
||||
memcpy(buffer_data + (vertex_len)*vertex_format.stride,
|
||||
|
|
|
@ -394,7 +394,7 @@ PyTypeObject PyKDTree_Type = {
|
|||
/*tp_setattro*/ NULL,
|
||||
/*tp_as_buffer*/ NULL,
|
||||
/*tp_flags*/ Py_TPFLAGS_DEFAULT,
|
||||
/*Documentation string*/ py_KDtree_doc,
|
||||
/*tp_doc*/ py_KDtree_doc,
|
||||
/*tp_traverse*/ NULL,
|
||||
/*tp_clear*/ NULL,
|
||||
/*tp_richcompare*/ NULL,
|
||||
|
|
|
@ -1119,9 +1119,28 @@ void wm_gizmomap_modal_set(
|
|||
}
|
||||
|
||||
if (do_refresh) {
|
||||
const int update_flag = GIZMOMAP_IS_REFRESH_CALLBACK;
|
||||
const eWM_GizmoFlagMapDrawStep step = WM_gizmomap_drawstep_from_gizmo_group(
|
||||
gz->parent_gzgroup);
|
||||
gzmap->update_flag[step] |= GIZMOMAP_IS_REFRESH_CALLBACK;
|
||||
gzmap->update_flag[step] |= update_flag;
|
||||
|
||||
/* Ensure the update flag is set for gizmos that were hidden while modal, see #104817. */
|
||||
for (int i = 0; i < WM_GIZMOMAP_DRAWSTEP_MAX; i++) {
|
||||
const eWM_GizmoFlagMapDrawStep step_iter = (eWM_GizmoFlagMapDrawStep)i;
|
||||
if (step_iter == step) {
|
||||
continue;
|
||||
}
|
||||
if ((gzmap->update_flag[i] & update_flag) == update_flag) {
|
||||
continue;
|
||||
}
|
||||
LISTBASE_FOREACH (wmGizmoGroup *, gzgroup, &gzmap->groups) {
|
||||
if (((gzgroup->type->flag & WM_GIZMOGROUPTYPE_DRAW_MODAL_ALL) == 0) &&
|
||||
wm_gizmogroup_is_visible_in_drawstep(gzgroup, step_iter)) {
|
||||
gzmap->update_flag[i] |= update_flag;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue