diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-07-05 04:00:40 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-07-05 04:00:40 +0400 |
commit | 9c4e3a7b6b3c90efd1f849dedd64ccfda98b97c2 (patch) | |
tree | a673ae2b69d3ded8565b550e816b4e5e4bb3d51f /source | |
parent | a824220d3e71afda0460c769324c9029243d0560 (diff) |
bugfix [#22724] "Scene" switch on the console doesn't work
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 19 | ||||
-rw-r--r-- | source/creator/creator.c | 8 |
2 files changed, 15 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 1bc690eb0ed..135464830f7 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -553,18 +553,17 @@ void set_scene_bg(Scene *scene) } /* called from creator.c */ -void set_scene_name(char *name) +Scene *set_scene_name(char *name) { - Scene *sce; - - for (sce= G.main->scene.first; sce; sce= sce->id.next) { - if (BLI_streq(name, sce->id.name+2)) { - set_scene_bg(sce); - return; - } + Scene *sce= (Scene *)find_id("SC", name); + if(sce) { + set_scene_bg(sce); + printf("Scene switch: '%s' in file: '%s'\n", name, G.sce); + return sce; } - - //XXX error("Can't find scene: %s", name); + + printf("Can't find scene: '%s' in file: '%s'\n", name, G.sce); + return NULL; } void unlink_scene(Main *bmain, Scene *sce, Scene *newsce) diff --git a/source/creator/creator.c b/source/creator/creator.c index 3843e284a01..c3499a5788c 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -737,7 +737,11 @@ static int render_animation(int argc, char **argv, void *data) static int set_scene(int argc, char **argv, void *data) { if(argc > 1) { - set_scene_name(argv[1]); + bContext *C= data; + Scene *sce= set_scene_name(argv[1]); + if(sce) { + CTX_data_scene_set(C, sce); + } return 1; } else { printf("\nError: Scene name must follow '-S / --scene'.\n"); @@ -982,7 +986,7 @@ void setupArguments(bContext *C, bArgs *ba, SYS_SystemHandle *syshandle) BLI_argsAdd(ba, 4, "-g", NULL, game_doc, set_ge_parameters, syshandle); BLI_argsAdd(ba, 4, "-f", "--render-frame", "<frame>\n\tRender frame <frame> and save it.\n\t+<frame> start frame relative, -<frame> end frame relative.", render_frame, C); BLI_argsAdd(ba, 4, "-a", "--render-anim", "\n\tRender frames from start to end (inclusive)", render_animation, C); - BLI_argsAdd(ba, 4, "-S", "--scene", "<name>\n\tSet the active scene <name> for rendering", set_scene, NULL); + BLI_argsAdd(ba, 4, "-S", "--scene", "<name>\n\tSet the active scene <name> for rendering", set_scene, C); BLI_argsAdd(ba, 4, "-s", "--frame-start", "<frame>\n\tSet start to frame <frame> (use before the -a argument)", set_start_frame, C); BLI_argsAdd(ba, 4, "-e", "--frame-end", "<frame>\n\tSet end to frame <frame> (use before the -a argument)", set_end_frame, C); BLI_argsAdd(ba, 4, "-j", "--frame-jump", "<frames>\n\tSet number of frames to step forward after each rendered frame", set_skip_frame, C); |