Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-07-20Fix T78960: 2.83.2 not opening a 2.82a project correctly.Bastien Montagne
That project cannot be opened correctly ayway, it has recursive collections intanciating themselves... But at least now we have a check at startup to detect and 'fix' those nasty cycles in collections.
2020-07-15BKE collection: add util to add a collection using another collection as ↵Bastien Montagne
'template'. Similar to what we already had using an object as 'template'.
2020-07-09Implement T77959: Never duplicate linked data during deep-copy.Bastien Montagne
Note that this behavior is enforced on user level for now, but on code side it is controlled with a flag, which should make it easy to refine that behavior if needed. Only exception is when we duplicate a linked ID directly (then we assume user wants a local deep-copy of that linked data, and we always also duplicate linked sub-data-blocks). Note that this commit also slightly refactor the handling of actions of animdata, by simplifying `BKE_animdata_copy_id_action()` and adding an explicit new `BKE_animdata_duplicate_id_action()` to be used during ID duplication (deep copy). This also allows us to get rid of the special case for liboverrides.
2020-07-01Cleanup: spellingCampbell Barton
2020-06-27Docs: correct invalid doxygen params & referencesCampbell Barton
2020-06-25Cleanup: spellingCampbell Barton
2020-06-17ID Duplicate: Factorize a lot the code.Bastien Montagne
Now that we have a uniform consistent behavior in all our ID duplicate funtions, we can easily factorize it greatly. Code gets cleaner, smaller, and less error-prone. Note that ultimately, this duplicate/deep copy behavior could be added as a callback of IDTypeInfo. We could also rethink the duplicate flags (some data, even some obdata, like Lattice, are not coverred currently). And so on. But at least code should now be much more easily maintainable and extendable.
2020-06-17ID Duplicate: uniformize Action duplication.Bastien Montagne
Previously, object (and sub-data) actions would be controlled by the user preferences flag, collections actions would never be duplicted, and scenes actions were always duplicated... Now they all follow the user preferences settings.
2020-06-17Refactor duplicate of data-blocks.Bastien Montagne
Main change from user side, besides that all pointers should now be properly remapped to new IDs, is that linked objects are no longer preserved when doing a full copy of scenes. Will open a task to check whether we actually still want that behavior (and re-code it in a more correct way then). This is the main part of work done here, it aims at uniformizing and sanitizing that 'deep copy' process for supported IDs (currently scenes, collections and objects). Note that there will be more follow up commits after that one, but this should be the most risky and changing one.
2020-06-16Cleanup: use explicit enum type for duplicate option of `BKE_object_duplicate`Bastien Montagne
Using enum type itself in implementations, and uint in headers (as using enums types in headers is a pain when enum are not defined and used in a single same header file...).
2020-06-16Cleanup: remove hierarchy parameter from `BKE_collection_duplicate`Bastien Montagne
It makes no sense to deep-copy a collection and not also copy its children collections... Parameter was not used anymore anyway. So now this duplicate function will always at least deep-duplicate all of its children collections, recursively.
2020-06-16Cleanup: get rid of `BKE_collection_copy`.Bastien Montagne
We want to get rid of those for all ID types ultimately, but that one was only used in one place, being the only one calling `BKE_collection_duplicate` without hierarchical duplicate and parent collection pointer, effectively using the full power of the complex deep duplication code for a mere `BKE_id_copy` call... This will allow for further cleanup in duplicate code.
2020-06-16Cleanup: doxy sections for camera, collections, text & seqmodifierCampbell Barton
2020-06-15Fix crash when opening some old/broken .blend files after recent fix.Bastien Montagne
Now that `BKE_main_collections_parent_relations_rebuild()` is called from readfile code, we need to make it resilient to potential NULL master collection pointer in scenes.
2020-06-15Fix T77460: Easy to create cyclic dependencies in collections and crash Blender.Bastien Montagne
Cyclic check was not checking for collections instanciated by objects...
2020-06-11Fix possibility to add objects in override collections.Bastien Montagne
Override collections do not support that, add proper checks in BKE code adding objects to collections. Also try to find a suitable collection in parents in that case. Note that this is enforced on 'public' API level, internal code can still bypass those checks if needed. Exposing this possibility to public API should not be needed.
2020-06-10Add proper handling of liboverrides to Scene deep copy.Bastien Montagne
Followup to rB74ec37b70cbc8dc2, also missed a case in collection deepcopy then.
2020-06-10Make `BKE_collection_duplicate able to handle master collections.Bastien Montagne
Those are then assumed already duplicated, and not touched. However, all of ther objects and sub-collections can still be processed as with any other regular collection...
2020-06-10Enable (deep) copy of overrides.Bastien Montagne
This commit enables basic copy of overrides on generic ID level, as well as from (deep) copy operators for objects and collections. So e.g. if your linked overridden caracter is in a collection, you can now (from the outliner) Duplicate that override collection to get a new overriding copy of the character. We still need operators (new or modifying existing ones) to handle that from 3DView e.g. Note that deep copy code for objects/collections (and incidently animdata) had to be modified to avoid duplicating/making local IDs that remain linked ones being used by overrides ones.
2020-06-02Library Overrides: Don't move collections to Scene Collection when overridingJulian Eisel
When using the "Make Library Override" operator on instance collections, keep the overriden collection in the parent collection of the instance empty. Previoulsy the collection would be added to the scene collection, which was confusing and not what users expected. It was placed there for a reason after all. Part of T76555. Reviewed by: Andy Goralczyk, Bastien Montange. Differential Revision: https://developer.blender.org/D7626
2020-05-20Refactor: Move collection foreach_id to new IDTypeInfo structure.Bastien Montagne
2020-04-14Fix T75629: Disallow dragging collection instance into itselfVincent Blankfield
Differential Revision: https://developer.blender.org/D7408
2020-04-03Code Quality: Replace for loops with LISTBASE_FOREACHDalai Felinto
Note this only changes cases where the variable was declared inside the for loop. To handle it outside as well is a different challenge. Differential Revision: https://developer.blender.org/D7320
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-11Cleanup: rename 'private' to 'embedded' for sub-data IDs.Bastien Montagne
'Private' can be a rather confusing term, especially when considering its meaning in programming languages. So now root node trees and master collections are 'embedded' IDs instead.
2020-03-06Cleanup: Collection: Move to IDTypeInfo, and remove unused BKE API.Dalai Felinto
Note: we still need BKE_collection_free since we call it from scene.c.
2020-03-04Refactor ID make local to use a single flag parameter.Bastien Montagne
Instead of using anonymous booleans flags, also allows to keep the same behavior in all cases, without needing special handling from calling code for our beloved oddballs object proxies...
2020-03-04Cleanup: ID make local: remove `id_in_bmain` argument.Bastien Montagne
This info is now stored in ID tags themselves, so no need to pass an extra anonymous boolean parameter around, yay!
2020-03-04Cleanup: Rename 'make local' functions to new scheme.Bastien Montagne
Also removed some only used locally from the header, `BKE_lib_id.h` is already way too big, no need to overload it with unused things.
2020-02-10Cleanup/refactor: Rename `BKE_library` files to `BKE_lib`.Bastien Montagne
Note that `BKE_library.h`/`library.c` were renamed to `BKE_lib_id.h`/`lib_id.c` to avoid having a too generic name here. Part of T72604.
2020-01-17Fix memory leak when full-copying a scene after recent changes.Bastien Montagne
Once again, am not exactly sure why that was working before, and not anymore - but in any case, doing that kind of update here is not only useless (since we have to do it at the end of the whole collections/objects duplication and remapping anyway), it is also rather dangerous, as collections are currently in rather invalid states at that point of the code... Note that in ideal world, `BKE_main_collection_sync()` & co would be lazy (setting only a flag, then code actually needing this to be valid again should call some sort of `BKE_main_collection_sync_ensure()`). Then we would not have to worry about such things (and we'd get nice performance improvements in some cases, also in main remapping code, etc.). Food for some refactoring, some day...
2019-10-15Fix T69644 / T68586: objects flag unsynced when drag hidden collectionsDalai Felinto
That would lead to crashes and other issues. The solution is not elegant though, it involves resyncing all the collections again. Differential Revision: https://developer.blender.org/D6043
2019-10-04Fix assert when deleting a RBW constraint object.Bastien Montagne
Side-reported in T70505. Code did not ensure deleted object was removed from the RBW constraints collection, leading to some invalid status (object in constraints collection but without relevant contraints data). Also fixed another issue - code deleting RBW objects would try to remove any constraint one using it as target, in a very bad and broken way, since you cannot iterate over objects of a collection while removing some... Now instead just NULLify relevant pointers... I hope it works, otherwise we'll have to take a different approach. Needless to stress again how weak the whole RBW code is in general, and regarding same object being used by RBW in more than one scene in particular, that is known broken situation anyway.
2019-09-02DatablockManagement: Cleanup: get rid of `BKE_collection_copy_master()`.Bastien Montagne
Now that we 'properly' support private ID data in lib management, there is no reason anymore to have that custom func, badly named and by-passing the whole generic ID management code.
2019-09-02Cleanup: get rid of BKE_collection_master() useless accessor.Bastien Montagne
In its current version that was a totally useless extra layer of crap that we can totally avoid. Plus name was bad too.
2019-09-02Make Scene Master collection 'Private' ID data, like root nodetrees.Bastien Montagne
Same issue here as with root nodetrees, those are private ID data owned by another ID, and not in Main DB. This requires special handling. there are still quiet a few things to do here, like getting rid of special code for master collection (regular ID copying should handle that just as it already does for root nodetrees), cleanup in ID copying code, etc.
2019-08-14Cleanup: move trailing comments to avoid wrapping codeCampbell Barton
Some statements were split across multiple lines because of their trailing comments. In most cases it's clearer to put the comments above.
2019-07-30Fix T66629: Library override - fails when armature and mesh are in separate ↵Bastien Montagne
collections. Some ugly very low-level collection code was using the generic LIB_TAG_DOIT tag... should never happen, that one is for rather high-level code to use, core process shall use own tags.
2019-07-16Fix T66944: Rigid Body Constraint in duplicated collection is not added to ↵Bastien Montagne
RigidBodyConstraints collection. We only had a very limited, specific handling of that in collection duplication code, but this has to be handled at a much more general level in Object copy code itself, since it makes no sense to duplicate rigidbody object data without adding new copy to relevant rigidbody collections... WARNING: This is a fairly risky rework of rigidbody handling logic when copying an Object data-block. It is *NOT* considered safe enough for 2.80 release. I tried to take into account copy flags to not mess with other IDs (collections) when we are copying outside of Main, and also not do deg tags when this is forbidden, but risk of something going wrong here is too high...
2019-06-20Fix T64705: can't drive object visibility in collection instancesBrecht Van Lommel
Not the cleanest solution, but should be fine until we add support for driving collection visibility and revise this system as a whole.
2019-06-17Fix T65674: Rigid bodies in duplicated collections are not automatically ↵Bastien Montagne
added to Rigid Body World. As title says, we need to add back new copies of objects that are RB items to the RBW collections...
2019-06-11Fix T64430: Removing objects from sub-collection doesn't update instances of ↵Bastien Montagne
parent collection. Collections are a tad annoying with all their caching of objects... When we modify content of a children collection, we need to tag DeG for CoW update of all of the ancestors. For now keeping that recursive tagging helper private, but would not be surprised if we found more similar cases and needed to expose it to more code...
2019-06-05Fix T65502: Crash when moving Collection into disabled CollectionDalai Felinto
2019-05-27Fix T63173: Dragging hidden collection inside a visible one unhides itDalai Felinto
Same for holdout, indirect only and exclude. Reviewers: brecht Differential Revision: https://developer.blender.org/D4945
2019-05-23BKE Collection: Add new function to rebuild parent relationships.Bastien Montagne
It's not always possible to keep 'by hand' parent relationships valid in collections hierarchy. Add functions to remake those (re-using/factorizing code from `readfile.c` `lib_link_collection_data()` function). Can't stress again how painful it is to have those kind of backward relationships in our data structures, those *always* end up being serious issues to keep in sync... Should only be generated on the fly when needed, period. :(
2019-05-21Fix T64763: 'Make Proxy' creates Proxy within linked Collection.Bastien Montagne
`BKE_collection_object_add_from()` would not check wether collections were local or not... Trivial to fix. Note that here I assume we do not use that function in some special cases where we would like to edit linked datablocks. Think that is reasonable stance, though.
2019-05-19Cleanup: doxygen parametersCampbell Barton
2019-05-15Outliner Restriction: Naming sanitization and iconDalai Felinto
No major API change here, only in the outliner restriction column variables (e.g., show_restrict_column_selectable > show_restrict_column_select). * Get rid of _INSTANCE (introduced on b1af68200159). * Differentiate (everywhere but the API) between HIDE (temporary) and VIEWPORT (global). * Use the expected icon for restrict viewport (same as objects and modifiers). * selectable > select
2019-05-11Outliner Visibility UpdateDalai Felinto
See T61578 for discussions and mockups. Visibility Options ================== We are adding more granular control over restriction columns in the outliner, exposing "indirect only" and "holdout" as options, and change the way users enable/disable collections in a viewlayer. We also rename the object viewport restriction to hide instance. So the options we have are: Collection ---------- * Render Visibility * Instance Visibility * Selectable (View) Layer Collection ----------------------- * Enable * Holdout * Indirect Only * Viewport Shortcuts ========= Isolate Collection ------------------ * Ctr + click isolates the collection. It turns all its parents and children "visible", and all the other collections "invisible". If ALL the collections were already properly set, we re-set the collections to their default value. Set Collection Inside Collections and Objects --------------------------------------------- * Shift + click: Set/unset inside collections and objects. We only set objects values as well when we are in View Layer mode and (obviously) when the objects have a matching property. Icons ===== Little reminder that we will need better icons for holdout, indirect only, and probably instanced (nothing wrong with the current, but it differs from the proposal when it is turned off). Also, we need to decide where do we want the modifier/bones/... icons to be (in which column) and ideally make sure their icons match the ones we use for collections/objects. At the moment those are using the screen icon, which is not being used by collections. Reviewers: brecht, billrey Subscribers: pablovazquez Differential Revision: https://developer.blender.org/D4823
2019-04-27Cleanup: comments (long lines) in blenkernelCampbell Barton