2011-02-23 10:52:22 +00:00
|
|
|
/*
|
2009-06-18 19:48:55 +00:00
|
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
2012-03-18 09:27:36 +00:00
|
|
|
* of the License, or (at your option) any later version.
|
2009-06-18 19:48:55 +00:00
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
2010-02-12 13:34:04 +00:00
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2009-06-18 19:48:55 +00:00
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2009 Blender Foundation.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
2012-03-18 09:27:36 +00:00
|
|
|
*
|
2009-06-18 19:48:55 +00:00
|
|
|
* Contributor(s): Blender Foundation
|
|
|
|
*
|
|
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
|
|
*/
|
|
|
|
|
2011-02-27 20:20:01 +00:00
|
|
|
/** \file blender/makesrna/intern/rna_main_api.c
|
|
|
|
* \ingroup RNA
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
2009-06-18 19:48:55 +00:00
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdio.h>
|
2010-07-03 17:47:06 +00:00
|
|
|
#include <errno.h>
|
2009-06-18 19:48:55 +00:00
|
|
|
|
2012-06-04 16:42:58 +00:00
|
|
|
#include "DNA_ID.h"
|
2013-02-05 12:46:15 +00:00
|
|
|
#include "DNA_modifier_types.h"
|
2015-05-11 16:29:12 +02:00
|
|
|
#include "DNA_space_types.h"
|
2015-08-31 21:37:38 +03:00
|
|
|
#include "DNA_object_types.h"
|
2012-06-04 16:42:58 +00:00
|
|
|
|
2013-02-10 13:44:18 +00:00
|
|
|
#include "BLI_utildefines.h"
|
2013-03-04 18:36:37 +00:00
|
|
|
#include "BLI_path_util.h"
|
2012-09-03 22:04:14 +00:00
|
|
|
|
2009-06-18 19:48:55 +00:00
|
|
|
#include "RNA_define.h"
|
2010-02-22 00:07:46 +00:00
|
|
|
#include "RNA_access.h"
|
2009-09-22 17:50:29 +00:00
|
|
|
#include "RNA_enum_types.h"
|
2009-06-18 19:48:55 +00:00
|
|
|
|
2012-09-03 22:04:14 +00:00
|
|
|
#include "rna_internal.h"
|
2010-01-11 00:41:31 +00:00
|
|
|
|
2009-06-18 19:48:55 +00:00
|
|
|
#ifdef RNA_RUNTIME
|
|
|
|
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_action.h"
|
|
|
|
#include "BKE_armature.h"
|
|
|
|
#include "BKE_brush.h"
|
2011-11-05 13:00:39 +00:00
|
|
|
#include "BKE_camera.h"
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
#include "BKE_collection.h"
|
2010-02-22 00:07:46 +00:00
|
|
|
#include "BKE_curve.h"
|
2013-02-05 12:46:15 +00:00
|
|
|
#include "BKE_displist.h"
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_font.h"
|
|
|
|
#include "BKE_gpencil.h"
|
2015-05-11 16:29:12 +02:00
|
|
|
#include "BKE_icons.h"
|
2016-06-25 17:01:36 +02:00
|
|
|
#include "BKE_idcode.h"
|
2009-07-03 17:44:20 +00:00
|
|
|
#include "BKE_image.h"
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_lamp.h"
|
2010-05-14 21:16:37 +00:00
|
|
|
#include "BKE_lattice.h"
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_library_remap.h"
|
|
|
|
#include "BKE_lightprobe.h"
|
|
|
|
#include "BKE_linestyle.h"
|
|
|
|
#include "BKE_mask.h"
|
|
|
|
#include "BKE_material.h"
|
2010-05-14 21:16:37 +00:00
|
|
|
#include "BKE_mball.h"
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_mesh.h"
|
|
|
|
#include "BKE_movieclip.h"
|
2010-05-15 13:30:14 +00:00
|
|
|
#include "BKE_node.h"
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_object.h"
|
|
|
|
#include "BKE_paint.h"
|
|
|
|
#include "BKE_particle.h"
|
|
|
|
#include "BKE_scene.h"
|
|
|
|
#include "BKE_sound.h"
|
2011-08-04 07:12:03 +00:00
|
|
|
#include "BKE_speaker.h"
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_text.h"
|
|
|
|
#include "BKE_texture.h"
|
Main Workspace Integration
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup)
Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know!
(Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.)
== Main Changes/Features
* Introduces the new Workspaces as data-blocks.
* Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces.
* Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces).
* Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead.
* Store screen-layouts (`bScreen`) per workspace.
* Store an active screen-layout per workspace. Changing the workspace will enable this layout.
* Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.)
* Store an active render layer per workspace.
* Moved mode switch from 3D View header to Info Editor header.
* Store active scene in window (not directly workspace related, but overlaps quite a bit).
* Removed 'Use Global Scene' User Preference option.
* Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well.
* Default .blend only contains one workspace ("General").
* Support appending workspaces.
Opening files without UI and commandline rendering should work fine.
Note that the UI is temporary! We plan to introduce a new global topbar
that contains the workspace options and tabs for switching workspaces.
== Technical Notes
* Workspaces are data-blocks.
* Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now.
* A workspace can be active in multiple windows at the same time.
* The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned).
* The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that).
* Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs.
* `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those.
* Added scene operators `SCENE_OT_`. Was previously done through screen operators.
== BPY API Changes
* Removed `Screen.scene`, added `Window.scene`
* Removed `UserPreferencesView.use_global_scene`
* Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces`
* Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer`
* Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name)
== What's left?
* There are a few open design questions (T50521). We should find the needed answers and implement them.
* Allow adding and removing individual workspaces from workspace configuration (needs UI design).
* Get the override system ready and support overrides per workspace.
* Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc).
* Allow enabling add-ons per workspace.
* Support custom workspace keymaps.
* Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later.
* Get the topbar done.
* Workspaces need a proper icon, current one is just a placeholder :)
Reviewed By: campbellbarton, mont29
Tags: #user_interface, #bf_blender_2.8
Maniphest Tasks: T50521
Differential Revision: https://developer.blender.org/D2451
2017-06-01 19:56:58 +02:00
|
|
|
#include "BKE_workspace.h"
|
2018-11-07 18:00:24 +01:00
|
|
|
#include "BKE_world.h"
|
2009-08-13 11:14:06 +00:00
|
|
|
|
2017-10-25 14:20:33 +02:00
|
|
|
#include "DEG_depsgraph_build.h"
|
2017-06-08 10:14:53 +02:00
|
|
|
#include "DEG_depsgraph_query.h"
|
|
|
|
|
2009-12-02 15:37:07 +00:00
|
|
|
#include "DNA_armature_types.h"
|
2010-01-09 23:44:01 +00:00
|
|
|
#include "DNA_camera_types.h"
|
2010-03-23 14:58:36 +00:00
|
|
|
#include "DNA_curve_types.h"
|
2009-08-13 11:14:06 +00:00
|
|
|
#include "DNA_lamp_types.h"
|
2009-12-02 15:37:07 +00:00
|
|
|
#include "DNA_material_types.h"
|
|
|
|
#include "DNA_mesh_types.h"
|
2011-08-01 11:44:20 +00:00
|
|
|
#include "DNA_speaker_types.h"
|
2015-05-01 00:57:12 +10:00
|
|
|
#include "DNA_sound_types.h"
|
2017-06-12 20:59:54 +10:00
|
|
|
#include "DNA_lightprobe_types.h"
|
2010-01-11 00:41:31 +00:00
|
|
|
#include "DNA_text_types.h"
|
2010-01-17 20:06:34 +00:00
|
|
|
#include "DNA_texture_types.h"
|
2018-08-29 15:32:50 +02:00
|
|
|
#include "DNA_collection_types.h"
|
2010-05-14 21:16:37 +00:00
|
|
|
#include "DNA_brush_types.h"
|
|
|
|
#include "DNA_lattice_types.h"
|
|
|
|
#include "DNA_meta_types.h"
|
2010-05-15 13:30:14 +00:00
|
|
|
#include "DNA_world_types.h"
|
2016-12-28 17:30:58 +01:00
|
|
|
#include "DNA_particle_types.h"
|
2010-05-15 13:30:14 +00:00
|
|
|
#include "DNA_vfont_types.h"
|
|
|
|
#include "DNA_node_types.h"
|
2011-11-07 12:55:18 +00:00
|
|
|
#include "DNA_movieclip_types.h"
|
2012-06-04 16:42:58 +00:00
|
|
|
#include "DNA_mask_types.h"
|
2012-10-07 20:07:30 +00:00
|
|
|
#include "DNA_gpencil_types.h"
|
2010-01-11 00:41:31 +00:00
|
|
|
|
|
|
|
#include "ED_screen.h"
|
2009-06-18 19:48:55 +00:00
|
|
|
|
2015-08-16 17:32:01 +10:00
|
|
|
#include "BLT_translation.h"
|
2012-10-16 07:53:10 +00:00
|
|
|
|
2014-02-17 19:29:37 +11:00
|
|
|
#ifdef WITH_PYTHON
|
|
|
|
# include "BPY_extern.h"
|
|
|
|
#endif
|
|
|
|
|
Main Workspace Integration
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup)
Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know!
(Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.)
== Main Changes/Features
* Introduces the new Workspaces as data-blocks.
* Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces.
* Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces).
* Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead.
* Store screen-layouts (`bScreen`) per workspace.
* Store an active screen-layout per workspace. Changing the workspace will enable this layout.
* Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.)
* Store an active render layer per workspace.
* Moved mode switch from 3D View header to Info Editor header.
* Store active scene in window (not directly workspace related, but overlaps quite a bit).
* Removed 'Use Global Scene' User Preference option.
* Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well.
* Default .blend only contains one workspace ("General").
* Support appending workspaces.
Opening files without UI and commandline rendering should work fine.
Note that the UI is temporary! We plan to introduce a new global topbar
that contains the workspace options and tabs for switching workspaces.
== Technical Notes
* Workspaces are data-blocks.
* Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now.
* A workspace can be active in multiple windows at the same time.
* The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned).
* The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that).
* Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs.
* `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those.
* Added scene operators `SCENE_OT_`. Was previously done through screen operators.
== BPY API Changes
* Removed `Screen.scene`, added `Window.scene`
* Removed `UserPreferencesView.use_global_scene`
* Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces`
* Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer`
* Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name)
== What's left?
* There are a few open design questions (T50521). We should find the needed answers and implement them.
* Allow adding and removing individual workspaces from workspace configuration (needs UI design).
* Get the override system ready and support overrides per workspace.
* Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc).
* Allow enabling add-ons per workspace.
* Support custom workspace keymaps.
* Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later.
* Get the topbar done.
* Workspaces need a proper icon, current one is just a placeholder :)
Reviewed By: campbellbarton, mont29
Tags: #user_interface, #bf_blender_2.8
Maniphest Tasks: T50521
Differential Revision: https://developer.blender.org/D2451
2017-06-01 19:56:58 +02:00
|
|
|
#include "WM_api.h"
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
|
2016-12-27 16:39:19 +01:00
|
|
|
static void rna_idname_validate(const char *name, char *r_name)
|
|
|
|
{
|
|
|
|
BLI_strncpy(r_name, name, MAX_ID_NAME - 2);
|
|
|
|
BLI_utf8_invalid_strip(r_name, strlen(r_name));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2018-07-01 15:47:09 +02:00
|
|
|
static void rna_Main_ID_remove(
|
|
|
|
Main *bmain, ReportList *reports, PointerRNA *id_ptr,
|
|
|
|
bool do_unlink, bool do_id_user, bool do_ui_user)
|
2016-06-25 17:01:36 +02:00
|
|
|
{
|
|
|
|
ID *id = id_ptr->data;
|
|
|
|
if (do_unlink) {
|
2019-01-14 21:24:25 +01:00
|
|
|
BKE_id_delete(bmain, id);
|
2016-06-25 17:01:36 +02:00
|
|
|
RNA_POINTER_INVALIDATE(id_ptr);
|
|
|
|
}
|
|
|
|
else if (ID_REAL_USERS(id) <= 0) {
|
2019-01-14 16:15:15 +01:00
|
|
|
const int flag = (do_id_user ? 0 : LIB_ID_FREE_NO_USER_REFCOUNT) |
|
|
|
|
(do_ui_user ? 0 : LIB_ID_FREE_NO_UI_USER);
|
|
|
|
/* Still using ID flags here, this is in-between commit anyway... */
|
|
|
|
BKE_id_free_ex(bmain, id, flag, true);
|
2016-06-25 17:01:36 +02:00
|
|
|
RNA_POINTER_INVALIDATE(id_ptr);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
BKE_reportf(reports, RPT_ERROR,
|
2016-07-06 11:32:46 -03:00
|
|
|
"%s '%s' must have zero users to be removed, found %d (try with do_unlink=True parameter)",
|
2016-06-25 17:01:36 +02:00
|
|
|
BKE_idcode_to_name(GS(id->name)), id->name + 2, ID_REAL_USERS(id));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Camera *rna_Main_cameras_new(Main *bmain, const char *name)
|
2009-12-02 15:37:07 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
ID *id = BKE_camera_add(bmain, safe_name);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(id);
|
2010-09-11 06:27:38 +00:00
|
|
|
return (Camera *)id;
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2009-12-02 15:37:07 +00:00
|
|
|
|
2012-12-13 01:17:22 +00:00
|
|
|
static Scene *rna_Main_scenes_new(Main *bmain, const char *name)
|
2009-12-02 15:37:07 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
return BKE_scene_add(bmain, safe_name);
|
2009-08-13 11:14:06 +00:00
|
|
|
}
|
2018-07-01 15:47:09 +02:00
|
|
|
static void rna_Main_scenes_remove(Main *bmain, bContext *C, ReportList *reports, PointerRNA *scene_ptr, bool do_unlink)
|
2009-08-13 11:14:06 +00:00
|
|
|
{
|
2019-01-14 15:47:11 +01:00
|
|
|
/* don't call BKE_id_free(...) directly */
|
2012-11-01 17:16:24 +00:00
|
|
|
Scene *scene = scene_ptr->data;
|
|
|
|
Scene *scene_new;
|
|
|
|
|
|
|
|
if ((scene_new = scene->id.prev) ||
|
|
|
|
(scene_new = scene->id.next))
|
|
|
|
{
|
2016-06-25 17:01:36 +02:00
|
|
|
if (do_unlink) {
|
Main Workspace Integration
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup)
Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know!
(Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.)
== Main Changes/Features
* Introduces the new Workspaces as data-blocks.
* Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces.
* Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces).
* Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead.
* Store screen-layouts (`bScreen`) per workspace.
* Store an active screen-layout per workspace. Changing the workspace will enable this layout.
* Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.)
* Store an active render layer per workspace.
* Moved mode switch from 3D View header to Info Editor header.
* Store active scene in window (not directly workspace related, but overlaps quite a bit).
* Removed 'Use Global Scene' User Preference option.
* Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well.
* Default .blend only contains one workspace ("General").
* Support appending workspaces.
Opening files without UI and commandline rendering should work fine.
Note that the UI is temporary! We plan to introduce a new global topbar
that contains the workspace options and tabs for switching workspaces.
== Technical Notes
* Workspaces are data-blocks.
* Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now.
* A workspace can be active in multiple windows at the same time.
* The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned).
* The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that).
* Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs.
* `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those.
* Added scene operators `SCENE_OT_`. Was previously done through screen operators.
== BPY API Changes
* Removed `Screen.scene`, added `Window.scene`
* Removed `UserPreferencesView.use_global_scene`
* Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces`
* Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer`
* Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name)
== What's left?
* There are a few open design questions (T50521). We should find the needed answers and implement them.
* Allow adding and removing individual workspaces from workspace configuration (needs UI design).
* Get the override system ready and support overrides per workspace.
* Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc).
* Allow enabling add-ons per workspace.
* Support custom workspace keymaps.
* Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later.
* Get the topbar done.
* Workspaces need a proper icon, current one is just a placeholder :)
Reviewed By: campbellbarton, mont29
Tags: #user_interface, #bf_blender_2.8
Maniphest Tasks: T50521
Differential Revision: https://developer.blender.org/D2451
2017-06-01 19:56:58 +02:00
|
|
|
wmWindow *win = CTX_wm_window(C);
|
|
|
|
|
|
|
|
if (WM_window_get_active_scene(win) == scene) {
|
2014-02-17 19:29:37 +11:00
|
|
|
|
|
|
|
#ifdef WITH_PYTHON
|
2016-06-25 17:01:36 +02:00
|
|
|
BPy_BEGIN_ALLOW_THREADS;
|
2014-02-17 19:29:37 +11:00
|
|
|
#endif
|
|
|
|
|
2018-07-03 15:34:26 +02:00
|
|
|
WM_window_set_active_scene(bmain, C, win, scene_new);
|
2014-02-17 19:29:37 +11:00
|
|
|
|
|
|
|
#ifdef WITH_PYTHON
|
2016-06-25 17:01:36 +02:00
|
|
|
BPy_END_ALLOW_THREADS;
|
2014-02-17 19:29:37 +11:00
|
|
|
#endif
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
}
|
2012-11-01 17:16:24 +00:00
|
|
|
}
|
2017-09-13 20:12:19 +05:00
|
|
|
rna_Main_ID_remove(bmain, reports, scene_ptr, do_unlink, true, true);
|
2012-11-01 17:16:24 +00:00
|
|
|
}
|
2010-01-11 00:41:31 +00:00
|
|
|
else {
|
2012-10-20 10:28:34 +00:00
|
|
|
BKE_reportf(reports, RPT_ERROR, "Scene '%s' is the last, cannot be removed", scene->id.name + 2);
|
2010-01-11 00:41:31 +00:00
|
|
|
}
|
2009-08-13 11:14:06 +00:00
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Object *rna_Main_objects_new(Main *bmain, ReportList *reports, const char *name, ID *data)
|
2009-06-20 16:32:52 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
2010-02-22 00:07:46 +00:00
|
|
|
Object *ob;
|
2012-03-05 23:30:41 +00:00
|
|
|
int type = OB_EMPTY;
|
|
|
|
if (data) {
|
2012-08-12 14:57:19 +00:00
|
|
|
/* keep in sync with OB_DATA_SUPPORT_ID() macro */
|
2012-03-05 23:30:41 +00:00
|
|
|
switch (GS(data->name)) {
|
2010-02-22 00:07:46 +00:00
|
|
|
case ID_ME:
|
2012-03-05 23:30:41 +00:00
|
|
|
type = OB_MESH;
|
2010-02-22 00:07:46 +00:00
|
|
|
break;
|
|
|
|
case ID_CU:
|
2012-11-01 17:16:24 +00:00
|
|
|
type = BKE_curve_type_get((Curve *)data);
|
2010-02-22 00:07:46 +00:00
|
|
|
break;
|
|
|
|
case ID_MB:
|
2012-03-05 23:30:41 +00:00
|
|
|
type = OB_MBALL;
|
2010-02-22 00:07:46 +00:00
|
|
|
break;
|
|
|
|
case ID_LA:
|
2012-03-05 23:30:41 +00:00
|
|
|
type = OB_LAMP;
|
2010-02-22 00:07:46 +00:00
|
|
|
break;
|
2011-08-01 11:44:20 +00:00
|
|
|
case ID_SPK:
|
2012-03-05 23:30:41 +00:00
|
|
|
type = OB_SPEAKER;
|
2011-08-01 11:44:20 +00:00
|
|
|
break;
|
2010-02-22 00:07:46 +00:00
|
|
|
case ID_CA:
|
2012-03-05 23:30:41 +00:00
|
|
|
type = OB_CAMERA;
|
2010-02-22 00:07:46 +00:00
|
|
|
break;
|
|
|
|
case ID_LT:
|
2012-03-05 23:30:41 +00:00
|
|
|
type = OB_LATTICE;
|
2010-02-22 00:07:46 +00:00
|
|
|
break;
|
2018-07-31 10:22:19 +02:00
|
|
|
case ID_GD:
|
|
|
|
type = OB_GPENCIL;
|
|
|
|
break;
|
2010-02-22 00:07:46 +00:00
|
|
|
case ID_AR:
|
2012-03-05 23:30:41 +00:00
|
|
|
type = OB_ARMATURE;
|
2010-02-22 00:07:46 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
const char *idname;
|
2015-11-23 13:49:52 +11:00
|
|
|
if (RNA_enum_id_from_value(rna_enum_id_type_items, GS(data->name), &idname) == 0)
|
2012-03-05 23:30:41 +00:00
|
|
|
idname = "UNKNOWN";
|
2010-02-22 00:07:46 +00:00
|
|
|
|
2012-10-20 10:28:34 +00:00
|
|
|
BKE_reportf(reports, RPT_ERROR, "ID type '%s' is not valid for an object", idname);
|
2010-02-22 00:07:46 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_plus(data);
|
2010-02-22 00:07:46 +00:00
|
|
|
}
|
|
|
|
|
2016-12-27 16:39:19 +01:00
|
|
|
ob = BKE_object_add_only_object(bmain, type, safe_name);
|
2010-02-22 00:07:46 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
ob->data = data;
|
2018-05-29 15:49:21 +02:00
|
|
|
test_object_materials(bmain, ob, ob->data);
|
2016-02-15 19:33:34 +01:00
|
|
|
|
2009-06-24 19:23:34 +00:00
|
|
|
return ob;
|
|
|
|
}
|
2010-02-22 00:07:46 +00:00
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Material *rna_Main_materials_new(Main *bmain, const char *name)
|
2009-06-24 19:23:34 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
ID *id = (ID *)BKE_material_add(bmain, safe_name);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(id);
|
2010-09-11 06:27:38 +00:00
|
|
|
return (Material *)id;
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2009-06-20 16:32:52 +00:00
|
|
|
|
2018-08-02 17:45:17 +02:00
|
|
|
static void rna_Main_materials_gpencil_data(Main *UNUSED(bmain), PointerRNA *id_ptr)
|
2018-07-31 10:22:19 +02:00
|
|
|
{
|
2018-08-02 17:45:17 +02:00
|
|
|
ID *id = id_ptr->data;
|
|
|
|
Material *ma = (Material *)id;
|
|
|
|
BKE_material_init_gpencil_settings(ma);
|
2018-07-31 10:22:19 +02:00
|
|
|
}
|
|
|
|
|
2017-10-18 15:07:26 +11:00
|
|
|
static const EnumPropertyItem *rna_Main_nodetree_type_itemf(bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
|
2010-05-15 13:30:14 +00:00
|
|
|
{
|
2014-01-04 18:08:43 +11:00
|
|
|
return rna_node_tree_type_itemf(NULL, NULL, r_free);
|
2013-03-18 16:34:57 +00:00
|
|
|
}
|
|
|
|
static struct bNodeTree *rna_Main_nodetree_new(Main *bmain, const char *name, int type)
|
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
bNodeTreeType *typeinfo = rna_node_tree_type_from_enum(type);
|
|
|
|
if (typeinfo) {
|
2016-12-27 16:39:19 +01:00
|
|
|
bNodeTree *ntree = ntreeAddTree(bmain, safe_name, typeinfo->idname);
|
2016-02-15 19:33:34 +01:00
|
|
|
|
2013-03-18 16:34:57 +00:00
|
|
|
id_us_min(&ntree->id);
|
|
|
|
return ntree;
|
|
|
|
}
|
2016-12-27 16:39:19 +01:00
|
|
|
else {
|
2013-03-18 16:34:57 +00:00
|
|
|
return NULL;
|
2016-12-27 16:39:19 +01:00
|
|
|
}
|
2010-05-15 13:30:14 +00:00
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Mesh *rna_Main_meshes_new(Main *bmain, const char *name)
|
2009-07-02 20:46:35 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Mesh *me = BKE_mesh_add(bmain, safe_name);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&me->id);
|
2010-01-09 23:44:01 +00:00
|
|
|
return me;
|
2009-07-02 20:46:35 +00:00
|
|
|
}
|
2013-02-05 12:46:15 +00:00
|
|
|
|
|
|
|
/* copied from Mesh_getFromObject and adapted to RNA interface */
|
2013-02-10 13:44:18 +00:00
|
|
|
Mesh *rna_Main_meshes_new_from_object(
|
2018-04-08 09:28:52 +02:00
|
|
|
Main *bmain, ReportList *reports, Depsgraph *depsgraph,
|
2018-10-11 12:14:03 +11:00
|
|
|
Object *ob, bool apply_modifiers, bool calc_undeformed)
|
2010-01-09 23:44:01 +00:00
|
|
|
{
|
2018-04-08 09:28:52 +02:00
|
|
|
Scene *sce = DEG_get_evaluated_scene(depsgraph);
|
2017-07-21 11:53:13 +02:00
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
switch (ob->type) {
|
|
|
|
case OB_FONT:
|
|
|
|
case OB_CURVE:
|
|
|
|
case OB_SURF:
|
|
|
|
case OB_MBALL:
|
|
|
|
case OB_MESH:
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
BKE_report(reports, RPT_ERROR, "Object does not have geometry data");
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2018-10-11 12:14:03 +11:00
|
|
|
return BKE_mesh_new_from_object(depsgraph, bmain, sce, ob, apply_modifiers, calc_undeformed);
|
2013-02-05 12:46:15 +00:00
|
|
|
}
|
|
|
|
|
2018-06-27 14:41:53 +02:00
|
|
|
static Lamp *rna_Main_lights_new(Main *bmain, const char *name, int type)
|
2009-07-02 20:46:35 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Lamp *lamp = BKE_lamp_add(bmain, safe_name);
|
2012-03-05 23:30:41 +00:00
|
|
|
lamp->type = type;
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&lamp->id);
|
2010-01-09 23:44:01 +00:00
|
|
|
return lamp;
|
2009-07-02 20:46:35 +00:00
|
|
|
}
|
|
|
|
|
2018-07-01 15:47:09 +02:00
|
|
|
static Image *rna_Main_images_new(Main *bmain, const char *name, int width, int height, bool alpha, bool float_buffer, bool stereo3d)
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
float color[4] = {0.0, 0.0, 0.0, 1.0};
|
2016-12-27 16:39:19 +01:00
|
|
|
Image *image = BKE_image_add_generated(bmain, width, height, safe_name, alpha ? 32 : 24, float_buffer, 0, color, stereo3d);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&image->id);
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
return image;
|
|
|
|
}
|
2018-07-01 15:47:09 +02:00
|
|
|
static Image *rna_Main_images_load(Main *bmain, ReportList *reports, const char *filepath, bool check_existing)
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
{
|
2010-07-03 17:47:06 +00:00
|
|
|
Image *ima;
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
errno = 0;
|
2015-10-05 18:49:20 +02:00
|
|
|
if (check_existing) {
|
2018-06-11 15:40:37 +02:00
|
|
|
ima = BKE_image_load_exists(bmain, filepath);
|
2015-10-05 18:49:20 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
ima = BKE_image_load(bmain, filepath);
|
|
|
|
}
|
2010-07-03 17:47:06 +00:00
|
|
|
|
2012-11-01 17:16:24 +00:00
|
|
|
if (!ima) {
|
2012-10-20 10:28:34 +00:00
|
|
|
BKE_reportf(reports, RPT_ERROR, "Cannot read '%s': %s", filepath,
|
|
|
|
errno ? strerror(errno) : TIP_("unsupported image format"));
|
2012-11-01 17:16:24 +00:00
|
|
|
}
|
2010-07-03 17:47:06 +00:00
|
|
|
|
2015-11-19 06:20:02 +11:00
|
|
|
id_us_min((ID *)ima);
|
2010-07-03 17:47:06 +00:00
|
|
|
return ima;
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Lattice *rna_Main_lattices_new(Main *bmain, const char *name)
|
2010-05-14 21:16:37 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Lattice *lt = BKE_lattice_add(bmain, safe_name);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(<->id);
|
2010-05-14 21:16:37 +00:00
|
|
|
return lt;
|
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Curve *rna_Main_curves_new(Main *bmain, const char *name, int type)
|
2010-03-23 14:58:36 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Curve *cu = BKE_curve_add(bmain, safe_name, type);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&cu->id);
|
2010-03-23 14:58:36 +00:00
|
|
|
return cu;
|
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static MetaBall *rna_Main_metaballs_new(Main *bmain, const char *name)
|
2010-05-14 21:16:37 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
MetaBall *mb = BKE_mball_add(bmain, safe_name);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&mb->id);
|
2010-05-14 21:16:37 +00:00
|
|
|
return mb;
|
|
|
|
}
|
|
|
|
|
2018-07-01 15:47:09 +02:00
|
|
|
static VFont *rna_Main_fonts_load(Main *bmain, ReportList *reports, const char *filepath, bool check_existing)
|
2010-05-15 13:30:14 +00:00
|
|
|
{
|
2010-07-03 17:47:06 +00:00
|
|
|
VFont *font;
|
2012-03-05 23:30:41 +00:00
|
|
|
errno = 0;
|
2015-10-06 19:40:15 +11:00
|
|
|
|
|
|
|
if (check_existing) {
|
|
|
|
font = BKE_vfont_load_exists(bmain, filepath);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
font = BKE_vfont_load(bmain, filepath);
|
|
|
|
}
|
2010-07-03 17:47:06 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
if (!font)
|
2012-10-20 10:28:34 +00:00
|
|
|
BKE_reportf(reports, RPT_ERROR, "Cannot read '%s': %s", filepath,
|
|
|
|
errno ? strerror(errno) : TIP_("unsupported font format"));
|
2010-07-03 17:47:06 +00:00
|
|
|
|
2015-11-19 06:20:02 +11:00
|
|
|
id_us_min((ID *)font);
|
2010-07-03 17:47:06 +00:00
|
|
|
return font;
|
|
|
|
|
2010-05-15 13:30:14 +00:00
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Tex *rna_Main_textures_new(Main *bmain, const char *name, int type)
|
2010-01-17 20:06:34 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Tex *tex = BKE_texture_add(bmain, safe_name);
|
2015-03-29 03:16:55 +11:00
|
|
|
BKE_texture_type_set(tex, type);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&tex->id);
|
2010-01-17 20:06:34 +00:00
|
|
|
return tex;
|
|
|
|
}
|
|
|
|
|
2015-08-31 21:37:38 +03:00
|
|
|
static Brush *rna_Main_brushes_new(Main *bmain, const char *name, int mode)
|
2010-05-14 21:16:37 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Brush *brush = BKE_brush_add(bmain, safe_name, mode);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&brush->id);
|
2010-05-14 21:16:37 +00:00
|
|
|
return brush;
|
|
|
|
}
|
2015-08-31 21:37:38 +03:00
|
|
|
|
2018-08-05 16:19:24 +02:00
|
|
|
static void rna_Main_brush_gpencil_data(Main *UNUSED(bmain), PointerRNA *id_ptr)
|
|
|
|
{
|
|
|
|
ID *id = id_ptr->data;
|
|
|
|
Brush *brush = (Brush *)id;
|
|
|
|
BKE_brush_init_gpencil_settings(brush);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static World *rna_Main_worlds_new(Main *bmain, const char *name)
|
2010-05-15 13:30:14 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
2018-01-11 09:55:41 +11:00
|
|
|
World *world = BKE_world_add(bmain, safe_name);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&world->id);
|
2010-05-15 13:30:14 +00:00
|
|
|
return world;
|
|
|
|
}
|
|
|
|
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
static Collection *rna_Main_collections_new(Main *bmain, const char *name)
|
2010-01-11 23:40:01 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
return BKE_collection_add(bmain, NULL, safe_name);
|
2010-01-11 23:40:01 +00:00
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Speaker *rna_Main_speakers_new(Main *bmain, const char *name)
|
2011-08-01 11:44:20 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Speaker *speaker = BKE_speaker_add(bmain, safe_name);
|
2011-08-01 11:44:20 +00:00
|
|
|
id_us_min(&speaker->id);
|
|
|
|
return speaker;
|
|
|
|
}
|
|
|
|
|
2018-07-01 15:47:09 +02:00
|
|
|
static bSound *rna_Main_sounds_load(Main *bmain, const char *name, bool check_existing)
|
2015-05-01 00:57:12 +10:00
|
|
|
{
|
2015-10-06 19:40:15 +11:00
|
|
|
bSound *sound;
|
|
|
|
|
|
|
|
if (check_existing) {
|
|
|
|
sound = BKE_sound_new_file_exists(bmain, name);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sound = BKE_sound_new_file(bmain, name);
|
|
|
|
}
|
|
|
|
|
2015-05-01 00:57:12 +10:00
|
|
|
id_us_min(&sound->id);
|
|
|
|
return sound;
|
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Text *rna_Main_texts_new(Main *bmain, const char *name)
|
2010-01-11 00:41:31 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
return BKE_text_add(bmain, safe_name);
|
2010-01-11 00:41:31 +00:00
|
|
|
}
|
2010-07-03 17:47:06 +00:00
|
|
|
|
2018-07-01 15:47:09 +02:00
|
|
|
static Text *rna_Main_texts_load(Main *bmain, ReportList *reports, const char *filepath, bool is_internal)
|
2010-01-11 00:41:31 +00:00
|
|
|
{
|
2010-07-03 17:47:06 +00:00
|
|
|
Text *txt;
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
errno = 0;
|
2018-06-05 15:10:33 +02:00
|
|
|
txt = BKE_text_load_ex(bmain, filepath, BKE_main_blendfile_path(bmain), is_internal);
|
2010-07-03 17:47:06 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
if (!txt)
|
2012-10-20 10:28:34 +00:00
|
|
|
BKE_reportf(reports, RPT_ERROR, "Cannot read '%s': %s", filepath,
|
|
|
|
errno ? strerror(errno) : TIP_("unable to load text"));
|
2010-01-11 00:41:31 +00:00
|
|
|
|
|
|
|
return txt;
|
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static bArmature *rna_Main_armatures_new(Main *bmain, const char *name)
|
2009-07-03 17:44:20 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
bArmature *arm = BKE_armature_add(bmain, safe_name);
|
2010-12-19 16:34:58 +00:00
|
|
|
id_us_min(&arm->id);
|
2010-01-09 23:44:01 +00:00
|
|
|
return arm;
|
|
|
|
}
|
2009-07-03 17:44:20 +00:00
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static bAction *rna_Main_actions_new(Main *bmain, const char *name)
|
2010-01-11 23:40:01 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
2018-01-11 09:55:41 +11:00
|
|
|
bAction *act = BKE_action_add(bmain, safe_name);
|
2015-11-09 20:59:42 +01:00
|
|
|
id_fake_user_clear(&act->id);
|
2010-01-11 23:40:01 +00:00
|
|
|
return act;
|
2016-06-27 16:07:38 +02:00
|
|
|
}
|
2010-01-11 23:40:01 +00:00
|
|
|
|
2016-12-28 17:30:58 +01:00
|
|
|
static ParticleSettings *rna_Main_particles_new(Main *bmain, const char *name)
|
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
2018-01-11 09:55:41 +11:00
|
|
|
ParticleSettings *part = BKE_particlesettings_add(bmain, safe_name);
|
2016-12-28 17:30:58 +01:00
|
|
|
id_us_min(&part->id);
|
|
|
|
return part;
|
|
|
|
}
|
|
|
|
|
2015-03-12 23:47:48 +11:00
|
|
|
static Palette *rna_Main_palettes_new(Main *bmain, const char *name)
|
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
Palette *palette = BKE_palette_add(bmain, safe_name);
|
2015-03-12 23:47:48 +11:00
|
|
|
id_us_min(&palette->id);
|
|
|
|
return (Palette *)palette;
|
|
|
|
}
|
|
|
|
|
2018-07-01 15:47:09 +02:00
|
|
|
static MovieClip *rna_Main_movieclip_load(Main *bmain, ReportList *reports, const char *filepath, bool check_existing)
|
2011-11-07 12:55:18 +00:00
|
|
|
{
|
|
|
|
MovieClip *clip;
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
errno = 0;
|
2015-10-06 19:40:15 +11:00
|
|
|
|
|
|
|
if (check_existing) {
|
|
|
|
clip = BKE_movieclip_file_add_exists(bmain, filepath);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
clip = BKE_movieclip_file_add(bmain, filepath);
|
|
|
|
}
|
2011-11-07 12:55:18 +00:00
|
|
|
|
2017-10-25 14:18:21 +02:00
|
|
|
if (clip != NULL) {
|
2017-10-25 14:20:33 +02:00
|
|
|
DEG_relations_tag_update(bmain);
|
2017-10-25 14:18:21 +02:00
|
|
|
}
|
|
|
|
else {
|
2012-10-20 10:28:34 +00:00
|
|
|
BKE_reportf(reports, RPT_ERROR, "Cannot read '%s': %s", filepath,
|
|
|
|
errno ? strerror(errno) : TIP_("unable to load movie clip"));
|
2017-10-25 14:18:21 +02:00
|
|
|
}
|
2011-11-07 12:55:18 +00:00
|
|
|
|
2015-11-19 06:20:02 +11:00
|
|
|
id_us_min((ID *)clip);
|
2011-11-07 12:55:18 +00:00
|
|
|
return clip;
|
|
|
|
}
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
static Mask *rna_Main_mask_new(Main *bmain, const char *name)
|
2012-06-04 16:42:58 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
2012-06-04 16:42:58 +00:00
|
|
|
|
2016-12-27 16:39:19 +01:00
|
|
|
return BKE_mask_new(bmain, safe_name);
|
2012-06-04 16:42:58 +00:00
|
|
|
}
|
|
|
|
|
2014-08-13 08:37:41 +10:00
|
|
|
static FreestyleLineStyle *rna_Main_linestyles_new(Main *bmain, const char *name)
|
2010-06-25 22:45:42 +00:00
|
|
|
{
|
2016-12-27 16:39:19 +01:00
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
|
|
|
FreestyleLineStyle *linestyle = BKE_linestyle_new(bmain, safe_name);
|
2011-11-25 01:10:55 +00:00
|
|
|
id_us_min(&linestyle->id);
|
2010-06-25 22:45:42 +00:00
|
|
|
return linestyle;
|
|
|
|
}
|
2011-11-25 01:10:55 +00:00
|
|
|
|
2017-06-12 20:59:54 +10:00
|
|
|
static LightProbe *rna_Main_lightprobe_new(Main *bmain, const char *name)
|
2017-06-06 22:47:41 +02:00
|
|
|
{
|
|
|
|
char safe_name[MAX_ID_NAME - 2];
|
|
|
|
rna_idname_validate(name, safe_name);
|
|
|
|
|
2017-06-12 20:59:54 +10:00
|
|
|
LightProbe *probe = BKE_lightprobe_add(bmain, safe_name);
|
2017-06-06 22:47:41 +02:00
|
|
|
id_us_min(&probe->id);
|
|
|
|
return probe;
|
|
|
|
}
|
|
|
|
|
2018-05-29 15:57:14 +02:00
|
|
|
/* tag functions, all the same */
|
2016-02-15 19:33:34 +01:00
|
|
|
#define RNA_MAIN_ID_TAG_FUNCS_DEF(_func_name, _listbase_name, _id_type) \
|
2018-07-01 15:47:09 +02:00
|
|
|
static void rna_Main_##_func_name##_tag(Main *bmain, bool value) { \
|
2016-02-15 19:35:35 +01:00
|
|
|
BKE_main_id_tag_listbase(&bmain->_listbase_name, LIB_TAG_DOIT, value); \
|
2016-02-15 19:33:34 +01:00
|
|
|
} \
|
|
|
|
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(cameras, camera, ID_CA)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(scenes, scene, ID_SCE)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(objects, object, ID_OB)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(materials, mat, ID_MA)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(node_groups, nodetree, ID_NT)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(meshes, mesh, ID_ME)
|
2018-06-27 14:41:53 +02:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(lights, lamp, ID_LA)
|
2016-02-15 19:33:34 +01:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(libraries, library, ID_LI)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(screens, screen, ID_SCR)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(window_managers, wm, ID_WM)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(images, image, ID_IM)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(lattices, latt, ID_LT)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(curves, curve, ID_CU)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(metaballs, mball, ID_MB)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(fonts, vfont, ID_VF)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(textures, tex, ID_TE)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(brushes, brush, ID_BR)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(worlds, world, ID_WO)
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(collections, collection, ID_GR)
|
2016-02-15 19:33:34 +01:00
|
|
|
//RNA_MAIN_ID_TAG_FUNCS_DEF(shape_keys, key, ID_KE)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(texts, text, ID_TXT)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(speakers, speaker, ID_SPK)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(sounds, sound, ID_SO)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(armatures, armature, ID_AR)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(actions, action, ID_AC)
|
2016-12-28 17:30:58 +01:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(particles, particle, ID_PA)
|
2016-02-15 19:33:34 +01:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(palettes, palettes, ID_PAL)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(gpencil, gpencil, ID_GD)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(movieclips, movieclip, ID_MC)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(masks, mask, ID_MSK)
|
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(linestyle, linestyle, ID_LS)
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(cachefiles, cachefiles, ID_CF)
|
2016-09-14 16:13:21 +02:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(paintcurves, paintcurves, ID_PC)
|
Main Workspace Integration
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup)
Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know!
(Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.)
== Main Changes/Features
* Introduces the new Workspaces as data-blocks.
* Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces.
* Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces).
* Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead.
* Store screen-layouts (`bScreen`) per workspace.
* Store an active screen-layout per workspace. Changing the workspace will enable this layout.
* Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.)
* Store an active render layer per workspace.
* Moved mode switch from 3D View header to Info Editor header.
* Store active scene in window (not directly workspace related, but overlaps quite a bit).
* Removed 'Use Global Scene' User Preference option.
* Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well.
* Default .blend only contains one workspace ("General").
* Support appending workspaces.
Opening files without UI and commandline rendering should work fine.
Note that the UI is temporary! We plan to introduce a new global topbar
that contains the workspace options and tabs for switching workspaces.
== Technical Notes
* Workspaces are data-blocks.
* Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now.
* A workspace can be active in multiple windows at the same time.
* The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned).
* The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that).
* Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs.
* `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those.
* Added scene operators `SCENE_OT_`. Was previously done through screen operators.
== BPY API Changes
* Removed `Screen.scene`, added `Window.scene`
* Removed `UserPreferencesView.use_global_scene`
* Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces`
* Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer`
* Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name)
== What's left?
* There are a few open design questions (T50521). We should find the needed answers and implement them.
* Allow adding and removing individual workspaces from workspace configuration (needs UI design).
* Get the override system ready and support overrides per workspace.
* Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc).
* Allow enabling add-ons per workspace.
* Support custom workspace keymaps.
* Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later.
* Get the topbar done.
* Workspaces need a proper icon, current one is just a placeholder :)
Reviewed By: campbellbarton, mont29
Tags: #user_interface, #bf_blender_2.8
Maniphest Tasks: T50521
Differential Revision: https://developer.blender.org/D2451
2017-06-01 19:56:58 +02:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(workspaces, workspaces, ID_WS)
|
2017-06-12 20:59:54 +10:00
|
|
|
RNA_MAIN_ID_TAG_FUNCS_DEF(lightprobes, lightprobe, ID_LP)
|
2016-02-15 19:33:34 +01:00
|
|
|
|
|
|
|
#undef RNA_MAIN_ID_TAG_FUNCS_DEF
|
2011-11-02 20:56:52 +00:00
|
|
|
|
2009-06-18 19:48:55 +00:00
|
|
|
#else
|
|
|
|
|
2015-05-11 16:29:12 +02:00
|
|
|
void RNA_api_main(StructRNA *UNUSED(srna))
|
2009-06-18 19:48:55 +00:00
|
|
|
{
|
2012-04-22 11:54:53 +00:00
|
|
|
#if 0
|
2009-06-18 19:48:55 +00:00
|
|
|
FunctionRNA *func;
|
2009-06-20 16:32:52 +00:00
|
|
|
PropertyRNA *parm;
|
2015-05-11 16:29:12 +02:00
|
|
|
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
/* maybe we want to add functions in 'bpy.data' still?
|
|
|
|
* for now they are all in collections bpy.data.images.new(...) */
|
2012-05-12 11:01:29 +00:00
|
|
|
func = RNA_def_function(srna, "add_image", "rna_Main_add_image");
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new image");
|
2014-01-16 21:43:22 +11:00
|
|
|
parm = RNA_def_string_file_path(func, "filepath", NULL, 0, "", "File path to load image from");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2012-05-12 11:01:29 +00:00
|
|
|
parm = RNA_def_pointer(func, "image", "Image", "", "New image");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2012-04-22 11:54:53 +00:00
|
|
|
#endif
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void RNA_def_main_cameras(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataCameras");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataCameras", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-02-10 21:15:44 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Cameras", "Collection of cameras");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_cameras_new");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new camera to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Camera", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "camera", "Camera", "", "New camera data-block");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-01-10 15:20:22 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a camera from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "camera", "Camera", "", "Camera to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2016-06-25 17:01:36 +02:00
|
|
|
"Unlink all usages of this camera before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that camera data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this camera");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this camera");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_cameras_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void RNA_def_main_scenes(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataScenes");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataScenes", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-02-10 21:15:44 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Scenes", "Collection of scenes");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_scenes_new");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new scene to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Scene", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "scene", "Scene", "", "New scene data-block");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_scenes_remove");
|
2012-05-12 11:01:29 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a scene from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "scene", "Scene", "", "Scene to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this scene before deleting it");
|
2011-11-02 20:56:52 +00:00
|
|
|
|
2012-04-23 07:26:08 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_scenes_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void RNA_def_main_objects(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataObjects");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataObjects", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-02-10 21:15:44 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Objects", "Collection of objects");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_objects_new");
|
2010-02-22 00:07:46 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new object to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Object", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "object_data", "ID", "", "Object data or None for an empty object");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
|
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "object", "Object", "", "New object data-block");
|
2009-06-20 16:32:52 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2009-06-18 19:48:55 +00:00
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a object from the current blendfile");
|
2010-01-10 15:20:22 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "object", "Object", "", "Object to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this object before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this object");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this object");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_objects_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2009-06-24 19:23:34 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_materials(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataMaterials");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataMaterials", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2011-09-30 08:10:53 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Materials", "Collection of materials");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_materials_new");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new material to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Material", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "material", "Material", "", "New material data-block");
|
2009-06-20 16:32:52 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2009-06-18 19:48:55 +00:00
|
|
|
|
2018-07-31 10:22:19 +02:00
|
|
|
func = RNA_def_function(srna, "create_gpencil_data", "rna_Main_materials_gpencil_data");
|
|
|
|
RNA_def_function_ui_description(func, "Add grease pencil material settings");
|
|
|
|
parm = RNA_def_pointer(func, "material", "Material", "", "Material");
|
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-01-10 15:20:22 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a material from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "material", "Material", "", "Material to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this material before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this material");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this material");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_materials_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_node_groups(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-05-15 13:30:14 +00:00
|
|
|
StructRNA *srna;
|
2010-12-03 03:44:39 +00:00
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
2010-05-15 13:30:14 +00:00
|
|
|
|
2017-10-18 15:07:26 +11:00
|
|
|
static const EnumPropertyItem dummy_items[] = {
|
2013-03-18 16:34:57 +00:00
|
|
|
{0, "DUMMY", 0, "", ""},
|
2012-05-12 11:01:29 +00:00
|
|
|
{0, NULL, 0, NULL, NULL}
|
|
|
|
};
|
2010-05-15 13:30:14 +00:00
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataNodeTrees");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataNodeTrees", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Node Trees", "Collection of node trees");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_nodetree_new");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new node tree to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "NodeGroup", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2013-03-18 16:34:57 +00:00
|
|
|
parm = RNA_def_enum(func, "type", dummy_items, 0, "Type", "The type of node_group to add");
|
|
|
|
RNA_def_property_enum_funcs(parm, NULL, NULL, "rna_Main_nodetree_type_itemf");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-05-15 13:30:14 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "tree", "NodeTree", "", "New node tree data-block");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2009-07-02 20:46:35 +00:00
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a node tree from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "tree", "NodeTree", "", "Node tree to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this node tree before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this node tree");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this node tree");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_node_groups_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_meshes(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataMeshes");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataMeshes", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-02-10 21:15:44 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Meshes", "Collection of meshes");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_meshes_new");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new mesh to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Mesh", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "mesh", "Mesh", "", "New mesh data-block");
|
2009-12-02 15:37:07 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2013-02-05 12:46:15 +00:00
|
|
|
func = RNA_def_function(srna, "new_from_object", "rna_Main_meshes_new_from_object");
|
|
|
|
RNA_def_function_ui_description(func, "Add a new mesh created from object with modifiers applied");
|
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2018-09-24 18:46:51 +02:00
|
|
|
parm = RNA_def_pointer(func, "depsgraph", "Depsgraph", "Dependency Graph", "Evaluated dependency graph within which to evaluate modifiers");
|
2017-07-21 11:53:13 +02:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
2013-02-05 12:46:15 +00:00
|
|
|
parm = RNA_def_pointer(func, "object", "Object", "", "Object to create mesh from");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
|
2013-02-05 12:46:15 +00:00
|
|
|
parm = RNA_def_boolean(func, "apply_modifiers", 0, "", "Apply modifiers");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2013-05-05 05:56:41 +00:00
|
|
|
RNA_def_boolean(func, "calc_undeformed", false, "Calculate Undeformed", "Calculate undeformed vertex coordinates");
|
2013-02-05 12:46:15 +00:00
|
|
|
parm = RNA_def_pointer(func, "mesh", "Mesh", "",
|
|
|
|
"Mesh created from object, remove it if it is only used for export");
|
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-01-10 15:20:22 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a mesh from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2016-06-25 17:01:36 +02:00
|
|
|
"Unlink all usages of this mesh before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that mesh data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this mesh data");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this mesh data");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_meshes_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2018-06-27 14:41:53 +02:00
|
|
|
|
|
|
|
void RNA_def_main_lights(BlenderRNA *brna, PropertyRNA *cprop)
|
2010-01-09 23:44:01 +00:00
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2018-06-27 14:41:53 +02:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataLights");
|
|
|
|
srna = RNA_def_struct(brna, "BlendDataLights", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2018-06-27 14:41:53 +02:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Lights", "Collection of lights");
|
2009-12-02 15:37:07 +00:00
|
|
|
|
2018-06-27 14:41:53 +02:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_lights_new");
|
|
|
|
RNA_def_function_ui_description(func, "Add a new light to the main database");
|
|
|
|
parm = RNA_def_string(func, "name", "Light", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2018-06-27 14:41:53 +02:00
|
|
|
parm = RNA_def_enum(func, "type", rna_enum_light_type_items, 0, "Type", "The type of texture to add");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
/* return type */
|
2018-06-27 14:41:53 +02:00
|
|
|
parm = RNA_def_pointer(func, "light", "Light", "", "New light data-block");
|
2009-08-13 11:14:06 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-01-10 15:20:22 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2018-06-27 14:41:53 +02:00
|
|
|
RNA_def_function_ui_description(func, "Remove a light from the current blendfile");
|
|
|
|
parm = RNA_def_pointer(func, "light", "Light", "", "Light to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2018-06-27 14:41:53 +02:00
|
|
|
"Unlink all usages of this Light before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that light data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
2018-06-27 14:41:53 +02:00
|
|
|
"Decrement user counter of all datablocks used by this light data");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
2018-06-27 14:41:53 +02:00
|
|
|
"Make sure interface does not reference this light data");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2018-06-27 14:41:53 +02:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_lights_tag");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_libraries(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2011-01-05 05:33:27 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataLibraries");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataLibraries", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2011-01-05 05:33:27 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Libraries", "Collection of libraries");
|
2009-07-02 20:46:35 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_libraries_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_screens(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2011-01-05 05:33:27 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
2009-07-02 20:46:35 +00:00
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataScreens");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataScreens", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2011-01-05 05:33:27 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Screens", "Collection of screens");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_screens_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_window_managers(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2011-01-05 05:33:27 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataWindowManagers");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataWindowManagers", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2011-01-05 05:33:27 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Window Managers", "Collection of window managers");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_window_managers_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_images(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataImages");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataImages", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Images", "Collection of images");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_images_new");
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new image to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Image", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2012-10-11 23:46:12 +00:00
|
|
|
parm = RNA_def_int(func, "width", 1024, 1, INT_MAX, "", "Width of the image", 1, INT_MAX);
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2012-10-11 23:46:12 +00:00
|
|
|
parm = RNA_def_int(func, "height", 1024, 1, INT_MAX, "", "Height of the image", 1, INT_MAX);
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2011-01-10 03:58:07 +00:00
|
|
|
RNA_def_boolean(func, "alpha", 0, "Alpha", "Use alpha channel");
|
|
|
|
RNA_def_boolean(func, "float_buffer", 0, "Float Buffer", "Create an image with floating point color");
|
2015-04-06 10:40:12 -03:00
|
|
|
RNA_def_boolean(func, "stereo3d", 0, "Stereo 3D", "Create left and right views");
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "image", "Image", "", "New image data-block");
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "load", "rna_Main_images_load");
|
2010-07-03 17:47:06 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Load a new image into the main database");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_string_file_path(func, "filepath", "File Path", 0, "", "path of the file to load");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-10-06 19:40:15 +11:00
|
|
|
RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "image", "Image", "", "New image data-block");
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove an image from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "image", "Image", "", "Image to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this image before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this image");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this image");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_images_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
merge own commits into render branch into trunk since 27560
27562, 27570, 27571, 27574, 27576, 27577, 27579, 27590, 27591, 27594, 27595, 27596, 27599, 27605, 27611, 27612, 27613, 27614, 27623
2010-03-20 16:41:01 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_lattices(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-05-14 21:16:37 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataLattices");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataLattices", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Lattices", "Collection of lattices");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_lattices_new");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new lattice to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Lattice", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-05-14 21:16:37 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "lattice", "Lattice", "", "New lattices data-block");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a lattice from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "lattice", "Lattice", "", "Lattice to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2016-06-25 17:01:36 +02:00
|
|
|
"Unlink all usages of this lattice before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that lattice data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this lattice data");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this lattice data");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_lattices_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_curves(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-03-23 14:58:36 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataCurves");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataCurves", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-03-23 14:58:36 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Curves", "Collection of curves");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_curves_new");
|
2010-03-23 14:58:36 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new curve to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Curve", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-11-23 13:49:52 +11:00
|
|
|
parm = RNA_def_enum(func, "type", rna_enum_object_type_curve_items, 0, "Type", "The type of curve to add");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-03-23 14:58:36 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "curve", "Curve", "", "New curve data-block");
|
2010-03-23 14:58:36 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-03-23 14:58:36 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a curve from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "curve", "Curve", "", "Curve to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2016-06-25 17:01:36 +02:00
|
|
|
"Unlink all usages of this curve before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that curve data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this curve data");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this curve data");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_curves_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_metaballs(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-05-14 21:16:37 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataMetaBalls");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataMetaBalls", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2012-03-02 21:14:37 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Metaballs", "Collection of metaballs");
|
2010-05-14 21:16:37 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_metaballs_new");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new metaball to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "MetaBall", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-05-14 21:16:37 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "metaball", "MetaBall", "", "New metaball data-block");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a metaball from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "metaball", "MetaBall", "", "Metaball to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2016-06-25 17:01:36 +02:00
|
|
|
"Unlink all usages of this metaball before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that metaball data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this metaball data");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this metaball data");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_metaballs_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2010-05-08 07:25:26 +00:00
|
|
|
void RNA_def_main_fonts(BlenderRNA *brna, PropertyRNA *cprop)
|
2010-01-09 23:44:01 +00:00
|
|
|
{
|
2010-05-15 13:30:14 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataFonts");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataFonts", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Fonts", "Collection of fonts");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "load", "rna_Main_fonts_load");
|
2010-07-03 17:47:06 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_ui_description(func, "Load a new font into the main database");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_string_file_path(func, "filepath", "File Path", 0, "", "path of the font to load");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-10-06 19:40:15 +11:00
|
|
|
RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
|
2010-05-15 13:30:14 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "vfont", "VectorFont", "", "New font data-block");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a font from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "vfont", "VectorFont", "", "Font to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this font before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this font");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this font");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_fonts_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_textures(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-01-17 20:06:34 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataTextures");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataTextures", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Textures", "Collection of textures");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_textures_new");
|
2010-01-17 20:06:34 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new texture to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Texture", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-11-23 13:49:52 +11:00
|
|
|
parm = RNA_def_enum(func, "type", rna_enum_texture_type_items, 0, "Type", "The type of texture to add");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-17 20:06:34 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "texture", "Texture", "", "New texture data-block");
|
2010-01-17 20:06:34 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-01-17 20:06:34 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a texture from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "texture", "Texture", "", "Texture to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this texture before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this texture");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this texture");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_textures_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_brushes(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-05-14 21:16:37 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataBrushes");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataBrushes", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Brushes", "Collection of brushes");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_brushes_new");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new brush to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Brush", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-11-23 13:49:52 +11:00
|
|
|
parm = RNA_def_enum(func, "mode", rna_enum_object_mode_items, OB_MODE_TEXTURE_PAINT, "", "Paint Mode for the new brush");
|
2010-05-14 21:16:37 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "brush", "Brush", "", "New brush data-block");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-05-14 21:16:37 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a brush from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "brush", "Brush", "", "Brush to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this brush before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this brush");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this brush");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_brushes_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2018-08-05 16:19:24 +02:00
|
|
|
|
|
|
|
func = RNA_def_function(srna, "create_gpencil_data", "rna_Main_brush_gpencil_data");
|
|
|
|
RNA_def_function_ui_description(func, "Add grease pencil brush settings");
|
|
|
|
parm = RNA_def_pointer(func, "brush", "Brush", "", "Brush");
|
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2010-05-15 13:30:14 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_worlds(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-05-15 13:30:14 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataWorlds");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataWorlds", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Worlds", "Collection of worlds");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_worlds_new");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new world to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "World", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-05-15 13:30:14 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "world", "World", "", "New world data-block");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-05-15 13:30:14 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a world from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "world", "World", "", "World to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this world before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this world");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this world");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_worlds_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2010-05-15 13:30:14 +00:00
|
|
|
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
void RNA_def_main_collections(BlenderRNA *brna, PropertyRNA *cprop)
|
2010-01-09 23:44:01 +00:00
|
|
|
{
|
2010-01-11 23:40:01 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
2010-01-09 23:44:01 +00:00
|
|
|
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataCollections");
|
|
|
|
srna = RNA_def_struct(brna, "BlendDataCollections", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Collections", "Collection of collections");
|
2010-01-11 23:40:01 +00:00
|
|
|
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_collections_new");
|
|
|
|
RNA_def_function_ui_description(func, "Add a new collection to the main database");
|
|
|
|
parm = RNA_def_string(func, "name", "Collection", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-11 23:40:01 +00:00
|
|
|
/* return type */
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
parm = RNA_def_pointer(func, "collection", "Collection", "", "New collection data-block");
|
2010-01-11 23:40:01 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
RNA_def_function_ui_description(func, "Remove a collection from the current blendfile");
|
2016-06-25 17:01:36 +02:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
parm = RNA_def_pointer(func, "collection", "Collection", "", "Collection to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this collection before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
"Decrement user counter of all datablocks used by this collection");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
"Make sure interface does not reference this collection");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
Collections and groups unification
OVERVIEW
* In 2.7 terminology, all layers and groups are now collection datablocks.
* These collections are nestable, linkable, instanceable, overrideable, ..
which opens up new ways to set up scenes and link + override data.
* Viewport/render visibility and selectability are now a part of the collection
and shared across all view layers and linkable.
* View layers define which subset of the scene collection hierarchy is excluded
for each. For many workflows one view layer can be used, these are more of an
advanced feature now.
OUTLINER
* The outliner now has a "View Layer" display mode instead of "Collections",
which can display the collections and/or objects in the view layer.
* In this display mode, collections can be excluded with the right click menu.
These will then be greyed out and their objects will be excluded.
* To view collections not linked to any scene, the "Blender File" display mode
can be used, with the new filtering option to just see Colleciton datablocks.
* The outliner right click menus for collections and objects were reorganized.
* Drag and drop still needs to be improved. Like before, dragging the icon or
text gives different results, we'll unify this later.
LINKING AND OVERRIDES
* Collections can now be linked into the scene without creating an instance,
with the link/append operator or from the collections view in the outliner.
* Collections can get static overrides with the right click menu in the outliner,
but this is rather unreliable and not clearly communicated at the moment.
* We still need to improve the make override operator to turn collection instances
into collections with overrides directly in the scene.
PERFORMANCE
* We tried to make performance not worse than before and improve it in some
cases. The main thing that's still a bit slower is multiple scenes, we have to
change the layer syncing to only updated affected scenes.
* Collections keep a list of their parent collections for faster incremental
updates in syncing and caching.
* View layer bases are now in a object -> base hash to avoid quadratic time
lookups internally and in API functions like visible_get().
VERSIONING
* Compatibility with 2.7 files should be improved due to the new visibility
controls. Of course users may not want to set up their scenes differently
now to avoid having separate layers and groups.
* Compatibility with 2.8 is mostly there, and was tested on Eevee demo and Hero
files. There's a few things which are know to be not quite compatible, like
nested layer collections inside groups.
* The versioning code for 2.8 files is quite complicated, and isolated behind
#ifdef so it can be removed at the end of the release cycle.
KNOWN ISSUES
* The G-key group operators in the 3D viewport were left mostly as is, they
need to be modified still to fit better.
* Same for the groups panel in the object properties. This needs to be updated
still, or perhaps replaced by something better.
* Collections must all have a unique name. Less restrictive namespacing is to
be done later, we'll have to see how important this is as all objects within
the collections must also have a unique name anyway.
* Full scene copy and delete scene are exactly doing the right thing yet.
Differential Revision: https://developer.blender.org/D3383
https://code.blender.org/2018/05/collections-and-groups/
2018-04-30 15:57:22 +02:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_collections_tag");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2011-08-01 11:44:20 +00:00
|
|
|
|
|
|
|
void RNA_def_main_speakers(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "BlendDataSpeakers");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataSpeakers", NULL);
|
2011-08-01 11:44:20 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Speakers", "Collection of speakers");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_speakers_new");
|
2011-08-01 11:44:20 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new speaker to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Speaker", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2011-08-01 11:44:20 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "speaker", "Speaker", "", "New speaker data-block");
|
2011-08-01 11:44:20 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2011-08-01 11:44:20 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a speaker from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "speaker", "Speaker", "", "Speaker to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2016-06-25 17:01:36 +02:00
|
|
|
"Unlink all usages of this speaker before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that speaker data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this speaker data");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this speaker data");
|
2011-08-01 11:44:20 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_speakers_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2011-08-01 11:44:20 +00:00
|
|
|
}
|
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_texts(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-01-11 00:41:31 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataTexts");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataTexts", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-02-10 21:15:44 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Texts", "Collection of texts");
|
2010-01-11 00:41:31 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_texts_new");
|
2010-01-11 00:41:31 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new text to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Text", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-11 00:41:31 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "text", "Text", "", "New text data-block");
|
2010-01-11 00:41:31 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a text from the current blendfile");
|
2016-06-25 17:01:36 +02:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "text", "Text", "", "Text to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this text before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this text");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this text");
|
2010-01-11 00:41:31 +00:00
|
|
|
|
|
|
|
/* load func */
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "load", "rna_Main_texts_load");
|
2010-01-11 00:41:31 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
|
|
|
RNA_def_function_ui_description(func, "Add a new text to the main database from a file");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string_file_path(func, "filepath", "Path", FILE_MAX, "", "path for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2013-06-02 17:52:06 +00:00
|
|
|
parm = RNA_def_boolean(func, "internal", 0, "Make internal", "Make text file internal after loading");
|
2010-01-11 00:41:31 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "text", "Text", "", "New text data-block");
|
2010-01-11 00:41:31 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_texts_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_sounds(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2011-01-05 05:33:27 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataSounds");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataSounds", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2011-01-05 05:33:27 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Sounds", "Collection of sounds");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2015-05-01 00:57:12 +10:00
|
|
|
/* load func */
|
|
|
|
func = RNA_def_function(srna, "load", "rna_Main_sounds_load");
|
|
|
|
RNA_def_function_ui_description(func, "Add a new sound to the main database from a file");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string_file_path(func, "filepath", "Path", FILE_MAX, "", "path for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-10-06 19:40:15 +11:00
|
|
|
RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
|
2015-05-01 00:57:12 +10:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "sound", "Sound", "", "New text data-block");
|
2015-05-01 00:57:12 +10:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2015-05-01 00:57:12 +10:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
|
|
|
RNA_def_function_ui_description(func, "Remove a sound from the current blendfile");
|
|
|
|
parm = RNA_def_pointer(func, "sound", "Sound", "", "Sound to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this sound before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this sound");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this sound");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_sounds_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_armatures(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataArmatures");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataArmatures", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-02-10 21:15:44 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Armatures", "Collection of armatures");
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_armatures_new");
|
2010-01-09 23:44:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new armature to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Armature", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "armature", "Armature", "", "New armature data-block");
|
2009-07-03 17:44:20 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-01-10 15:20:22 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a armature from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "armature", "Armature", "", "Armature to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
2016-06-25 17:01:36 +02:00
|
|
|
"Unlink all usages of this armature before deleting it "
|
|
|
|
"(WARNING: will also delete objects instancing that armature data)");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this armature data");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this armature data");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_armatures_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
|
|
|
void RNA_def_main_actions(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2010-01-11 23:40:01 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataActions");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataActions", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-02-10 21:15:44 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Actions", "Collection of actions");
|
2010-01-11 23:40:01 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_actions_new");
|
2010-01-11 23:40:01 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new action to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Action", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-11 23:40:01 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "action", "Action", "", "New action data-block");
|
2010-01-11 23:40:01 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-01-11 23:40:01 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-09-19 13:23:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a action from the current blendfile");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "action", "Action", "", "Action to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this action before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this action");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this action");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_actions_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-01-09 23:44:01 +00:00
|
|
|
}
|
2016-12-28 17:30:58 +01:00
|
|
|
void RNA_def_main_particles(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "BlendDataParticles");
|
|
|
|
srna = RNA_def_struct(brna, "BlendDataParticles", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Particle Settings", "Collection of particle settings");
|
|
|
|
|
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_particles_new");
|
|
|
|
RNA_def_function_ui_description(func, "Add a new particle settings instance to the main database");
|
|
|
|
parm = RNA_def_string(func, "name", "ParticleSettings", 0, "", "New name for the data-block");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
|
|
|
/* return type */
|
|
|
|
parm = RNA_def_pointer(func, "particle", "ParticleSettings", "", "New particle settings data-block");
|
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
|
|
|
RNA_def_function_ui_description(func, "Remove a particle settings instance from the current blendfile");
|
|
|
|
parm = RNA_def_pointer(func, "particle", "ParticleSettings", "", "Particle Settings to remove");
|
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of those particle settings before deleting them");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this particle settings");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this particle settings");
|
2016-12-28 17:30:58 +01:00
|
|
|
|
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_particles_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
|
|
|
}
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2015-03-12 23:47:48 +11:00
|
|
|
void RNA_def_main_palettes(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "BlendDataPalettes");
|
|
|
|
srna = RNA_def_struct(brna, "BlendDataPalettes", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Palettes", "Collection of palettes");
|
2011-01-05 05:33:27 +00:00
|
|
|
|
2015-03-12 23:47:48 +11:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_palettes_new");
|
|
|
|
RNA_def_function_ui_description(func, "Add a new palette to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "Palette", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-03-12 23:47:48 +11:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "palette", "Palette", "", "New palette data-block");
|
2015-03-12 23:47:48 +11:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2015-03-12 23:47:48 +11:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
|
|
|
RNA_def_function_ui_description(func, "Remove a palette from the current blendfile");
|
|
|
|
parm = RNA_def_pointer(func, "palette", "Palette", "", "Palette to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this palette before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this palette");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this palette");
|
2015-03-12 23:47:48 +11:00
|
|
|
|
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_palettes_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-03-12 23:47:48 +11:00
|
|
|
}
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
void RNA_def_main_cachefiles(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataCacheFiles");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataCacheFiles", NULL);
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Cache Files", "Collection of cache files");
|
|
|
|
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_cachefiles_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
}
|
2016-09-14 16:13:21 +02:00
|
|
|
void RNA_def_main_paintcurves(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2016-09-14 16:13:21 +02:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataPaintCurves");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataPaintCurves", NULL);
|
2016-09-14 16:13:21 +02:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Paint Curves", "Collection of paint curves");
|
|
|
|
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_paintcurves_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2016-09-14 16:13:21 +02:00
|
|
|
}
|
2010-01-09 23:44:01 +00:00
|
|
|
void RNA_def_main_gpencil(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
2011-01-05 05:33:27 +00:00
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
2010-01-09 23:44:01 +00:00
|
|
|
|
2011-02-14 03:15:55 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataGreasePencils");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataGreasePencils", NULL);
|
2011-03-13 13:01:02 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2011-01-05 05:33:27 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Grease Pencils", "Collection of grease pencils");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_gpencil_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2011-11-02 20:56:52 +00:00
|
|
|
|
2016-08-04 15:03:18 +02:00
|
|
|
func = RNA_def_function(srna, "new", "BKE_gpencil_data_addnew");
|
2018-06-13 10:57:10 +02:00
|
|
|
RNA_def_function_flag(func, FUNC_NO_SELF | FUNC_USE_MAIN);
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "GreasePencil", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2012-10-07 20:07:30 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "grease_pencil", "GreasePencil", "", "New grease pencil data-block");
|
2012-10-07 20:07:30 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2012-10-07 20:07:30 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
|
|
|
RNA_def_function_ui_description(func, "Remove a grease pencil instance from the current blendfile");
|
|
|
|
parm = RNA_def_pointer(func, "grease_pencil", "GreasePencil", "", "Grease Pencil to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this grease pencil before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this grease pencil");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this grease pencil");
|
2009-06-18 19:48:55 +00:00
|
|
|
}
|
|
|
|
|
2011-11-07 12:55:18 +00:00
|
|
|
void RNA_def_main_movieclips(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "BlendDataMovieClips");
|
2012-03-05 23:30:41 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataMovieClips", NULL);
|
2011-11-07 12:55:18 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Movie Clips", "Collection of movie clips");
|
|
|
|
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_movieclips_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2011-11-07 12:55:18 +00:00
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-11-07 12:55:18 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a movie clip from the current blendfile.");
|
2012-03-05 23:30:41 +00:00
|
|
|
parm = RNA_def_pointer(func, "clip", "MovieClip", "", "Movie clip to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this movie clip before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this movie clip");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this movie clip");
|
2011-11-07 12:55:18 +00:00
|
|
|
|
|
|
|
/* load func */
|
2012-03-05 23:30:41 +00:00
|
|
|
func = RNA_def_function(srna, "load", "rna_Main_movieclip_load");
|
2011-11-07 12:55:18 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2016-02-01 11:55:59 +11:00
|
|
|
RNA_def_function_ui_description(
|
|
|
|
func, "Add a new movie clip to the main database from a file "
|
|
|
|
"(while ``check_existing`` is disabled for consistency with other load functions, "
|
|
|
|
"behavior with multiple movie-clips using the same file may incorrectly generate proxies)");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string_file_path(func, "filepath", "Path", FILE_MAX, "", "path for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2015-10-06 19:40:15 +11:00
|
|
|
RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
|
2011-11-07 12:55:18 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "clip", "MovieClip", "", "New movie clip data-block");
|
2011-11-07 12:55:18 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
2009-06-18 19:48:55 +00:00
|
|
|
}
|
2011-10-30 09:05:47 +00:00
|
|
|
|
2012-06-04 16:42:58 +00:00
|
|
|
void RNA_def_main_masks(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "BlendDataMasks");
|
2012-06-27 18:29:47 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataMasks", NULL);
|
2012-06-04 16:42:58 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Masks", "Collection of masks");
|
|
|
|
|
2012-06-27 18:29:47 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_masks_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2012-06-04 16:42:58 +00:00
|
|
|
|
|
|
|
/* new func */
|
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_mask_new");
|
|
|
|
RNA_def_function_ui_description(func, "Add a new mask with a given name to the main database");
|
2018-09-25 12:01:43 +02:00
|
|
|
parm = RNA_def_string(func, "name", NULL, MAX_ID_NAME - 2, "Mask", "Name of new mask data-block");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2012-06-04 16:42:58 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "mask", "Mask", "", "New mask data-block");
|
2012-06-04 16:42:58 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
|
|
|
/* remove func */
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2012-06-04 16:42:58 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a masks from the current blendfile.");
|
2012-06-27 18:29:47 +00:00
|
|
|
parm = RNA_def_pointer(func, "mask", "Mask", "", "Mask to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this mask before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this mask");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this mask");
|
2012-06-04 16:42:58 +00:00
|
|
|
}
|
|
|
|
|
2010-06-25 22:45:42 +00:00
|
|
|
void RNA_def_main_linestyles(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
2011-02-23 03:08:11 +00:00
|
|
|
RNA_def_property_srna(cprop, "BlendDataLineStyles");
|
2012-12-11 22:00:22 +00:00
|
|
|
srna = RNA_def_struct(brna, "BlendDataLineStyles", NULL);
|
2011-03-19 00:05:30 +00:00
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2010-06-25 22:45:42 +00:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Line Styles", "Collection of line styles");
|
|
|
|
|
2013-04-07 01:38:03 +00:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_linestyle_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2013-04-07 01:38:03 +00:00
|
|
|
|
2012-12-11 22:00:22 +00:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_linestyles_new");
|
2010-06-25 22:45:42 +00:00
|
|
|
RNA_def_function_ui_description(func, "Add a new line style instance to the main database");
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_string(func, "name", "FreestyleLineStyle", 0, "", "New name for the data-block");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
2010-06-25 22:45:42 +00:00
|
|
|
/* return type */
|
2015-10-24 02:44:43 +11:00
|
|
|
parm = RNA_def_pointer(func, "linestyle", "FreestyleLineStyle", "", "New line style data-block");
|
2010-06-25 22:45:42 +00:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
2016-06-25 17:01:36 +02:00
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
2010-06-25 22:45:42 +00:00
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
2011-10-30 09:05:47 +00:00
|
|
|
RNA_def_function_ui_description(func, "Remove a line style instance from the current blendfile");
|
2012-12-11 22:00:22 +00:00
|
|
|
parm = RNA_def_pointer(func, "linestyle", "FreestyleLineStyle", "", "Line style to remove");
|
Refactor RNA property: split flags in property flags, parameter flags, and internal flags.
This gives us 9 flags available again for properties (we had none anymore),
and also makes things slightly cleaner.
To simplify (and make more clear the differences between mere properties
and function parameters), also added RNA_def_parameter_flags function (and
its clear counterpart), to be used instead of RNA_def_property_flag for
function parameters.
This patch is also a big cleanup (some RNA function definitions were
still using 'prop' PropertyRNA pointer, etc.).
And yes, am aware this will be annoying for all branches, but we really need
to get new flags available for properties (will need at least one for override, etc.).
Reviewers: sergey, Severin
Subscribers: dfelinto, brecht
Differential Revision: https://developer.blender.org/D2400
2016-12-12 15:23:55 +01:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
2016-11-15 17:12:18 +01:00
|
|
|
RNA_def_boolean(func, "do_unlink", true, "", "Unlink all usages of this line style before deleting it");
|
2017-09-13 20:12:19 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this line style");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this line style");
|
2010-06-25 22:45:42 +00:00
|
|
|
}
|
2009-06-18 19:48:55 +00:00
|
|
|
|
Main Workspace Integration
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup)
Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know!
(Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.)
== Main Changes/Features
* Introduces the new Workspaces as data-blocks.
* Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces.
* Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces).
* Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead.
* Store screen-layouts (`bScreen`) per workspace.
* Store an active screen-layout per workspace. Changing the workspace will enable this layout.
* Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.)
* Store an active render layer per workspace.
* Moved mode switch from 3D View header to Info Editor header.
* Store active scene in window (not directly workspace related, but overlaps quite a bit).
* Removed 'Use Global Scene' User Preference option.
* Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well.
* Default .blend only contains one workspace ("General").
* Support appending workspaces.
Opening files without UI and commandline rendering should work fine.
Note that the UI is temporary! We plan to introduce a new global topbar
that contains the workspace options and tabs for switching workspaces.
== Technical Notes
* Workspaces are data-blocks.
* Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now.
* A workspace can be active in multiple windows at the same time.
* The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned).
* The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that).
* Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs.
* `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those.
* Added scene operators `SCENE_OT_`. Was previously done through screen operators.
== BPY API Changes
* Removed `Screen.scene`, added `Window.scene`
* Removed `UserPreferencesView.use_global_scene`
* Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces`
* Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer`
* Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name)
== What's left?
* There are a few open design questions (T50521). We should find the needed answers and implement them.
* Allow adding and removing individual workspaces from workspace configuration (needs UI design).
* Get the override system ready and support overrides per workspace.
* Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc).
* Allow enabling add-ons per workspace.
* Support custom workspace keymaps.
* Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later.
* Get the topbar done.
* Workspaces need a proper icon, current one is just a placeholder :)
Reviewed By: campbellbarton, mont29
Tags: #user_interface, #bf_blender_2.8
Maniphest Tasks: T50521
Differential Revision: https://developer.blender.org/D2451
2017-06-01 19:56:58 +02:00
|
|
|
void RNA_def_main_workspaces(BlenderRNA *brna, PropertyRNA *cprop)
|
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "BlendDataWorkSpaces");
|
|
|
|
srna = RNA_def_struct(brna, "BlendDataWorkSpaces", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
|
|
|
RNA_def_struct_ui_text(srna, "Main Workspaces", "Collection of workspaces");
|
|
|
|
|
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_workspaces_tag");
|
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
|
|
|
}
|
|
|
|
|
2017-06-12 20:59:54 +10:00
|
|
|
void RNA_def_main_lightprobes(BlenderRNA *brna, PropertyRNA *cprop)
|
2017-06-06 22:47:41 +02:00
|
|
|
{
|
|
|
|
StructRNA *srna;
|
|
|
|
FunctionRNA *func;
|
|
|
|
PropertyRNA *parm;
|
|
|
|
|
|
|
|
RNA_def_property_srna(cprop, "BlendDataProbes");
|
|
|
|
srna = RNA_def_struct(brna, "BlendDataProbes", NULL);
|
|
|
|
RNA_def_struct_sdna(srna, "Main");
|
2017-06-12 20:59:54 +10:00
|
|
|
RNA_def_struct_ui_text(srna, "Main Light Probes", "Collection of light probes");
|
2017-06-06 22:47:41 +02:00
|
|
|
|
2017-06-12 20:59:54 +10:00
|
|
|
func = RNA_def_function(srna, "new", "rna_Main_lightprobe_new");
|
2017-06-06 22:47:41 +02:00
|
|
|
RNA_def_function_ui_description(func, "Add a new probe to the main database");
|
|
|
|
parm = RNA_def_string(func, "name", "Probe", 0, "", "New name for the data-block");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
|
|
|
/* return type */
|
2017-06-12 20:59:54 +10:00
|
|
|
parm = RNA_def_pointer(func, "lightprobe", "LightProbe", "", "New light probe data-block");
|
2017-06-06 22:47:41 +02:00
|
|
|
RNA_def_function_return(func, parm);
|
|
|
|
|
|
|
|
func = RNA_def_function(srna, "remove", "rna_Main_ID_remove");
|
|
|
|
RNA_def_function_flag(func, FUNC_USE_REPORTS);
|
|
|
|
RNA_def_function_ui_description(func, "Remove a probe from the current blendfile");
|
2017-06-12 20:59:54 +10:00
|
|
|
parm = RNA_def_pointer(func, "lightprobe", "LightProbe", "", "Probe to remove");
|
2017-06-06 22:47:41 +02:00
|
|
|
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
|
|
|
|
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
|
|
|
|
RNA_def_boolean(func, "do_unlink", true, "",
|
|
|
|
"Unlink all usages of this probe before deleting it "
|
2017-06-12 20:59:54 +10:00
|
|
|
"(WARNING: will also delete objects instancing that light probe data)");
|
2017-09-15 12:30:58 +05:00
|
|
|
RNA_def_boolean(func, "do_id_user", true, "",
|
|
|
|
"Decrement user counter of all datablocks used by this light probe");
|
|
|
|
RNA_def_boolean(func, "do_ui_user", true, "",
|
|
|
|
"Make sure interface does not reference this light probe");
|
2017-06-06 22:47:41 +02:00
|
|
|
|
2017-06-12 20:59:54 +10:00
|
|
|
func = RNA_def_function(srna, "tag", "rna_Main_lightprobes_tag");
|
2017-06-06 22:47:41 +02:00
|
|
|
parm = RNA_def_boolean(func, "value", 0, "Value", "");
|
|
|
|
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
|
|
|
|
}
|
|
|
|
|
2009-06-18 19:48:55 +00:00
|
|
|
#endif
|