Commit Graph
35 Commits
Author SHA1 Message Date
Sybren A. Stüvel cc20b0bfd5 Sort queue of blocks to visit by blend file and on-disk order
This gives a small speedup to dependency tracing.
2018-03-07 17:14:35 +01:00
Sybren A. Stüvel 09a0866c14 Cache open blend files
This simplifies blend file handling, ensuring that blend files are only
opened once. Otherwise it would be harder to handle things like dependency
diamonds (libraries that are referenced via multiple paths through multiple
other libraries).
2018-03-07 17:13:47 +01:00
Sybren A. Stüvel 71dd5bc11b Path rewriting when packing.
Doesn't work with sequences, nor with split dirname/basename fields.
2018-03-06 16:06:36 +01:00
Sybren A. Stüvel 8009ff1e47 Added block expansion
The expansion process follows pointers and library links to construct
the full set of actually-used data blocks. This set consists of all data
blocks in the initial blend file, and all *actually linked-to* data
blocks in linked blend files.

I've also removed non-recursive dependency listing.
2018-03-02 15:44:07 +01:00
Sybren A. Stüvel 7167d51730 Added BlendFileBlock.id_name property
Evaluated only once, so safe to call multiple times without producing
excessive disk I/O. Returns None instead of raising KeyError when there is
no (b'id', b'name') field.
2018-03-02 11:26:02 +01:00
Sybren A. Stüvel f46e761f09 Removed base_index parameter in favour of explicit array handling
The `base_index` parameter is confusing and only works in a limited number
of cases. Having explicit functions to deal with those cases is preferred.
2018-03-01 12:50:22 +01:00
Sybren A. Stüvel 86af05e823 Added recursion into library blend files. 2018-02-28 12:42:27 +01:00
Sybren A. Stüvel a5bc52523d Some more comments 2018-02-28 11:16:58 +01:00
Sybren A. Stüvel 65b690e998 Added block walker implementations + tests 2018-02-27 17:30:28 +01:00
Sybren A. Stüvel 59c0b6df4c Allow block.get() to return the dna.Field
This is needed by the upcoming dependency tracer.
2018-02-26 18:15:14 +01:00
Sybren A. Stüvel a56e985cdc Unify behaviour of block[path] and block.get(path) 2018-02-26 18:14:23 +01:00
Sybren A. Stüvel 127f357e49 Marked set() as ported 2018-02-23 15:54:13 +01:00
Sybren A. Stüvel bce5f4b670 Ported get_file_offset() and renamed to abs_offset() 2018-02-23 15:53:26 +01:00
Sybren A. Stüvel aed1827ff7 Moved pad_up_4() to inner function as it's only used there. 2018-02-23 15:44:57 +01:00
Sybren A. Stüvel 55075c09b6 Ported get_data_hash() and renamed to hash() 2018-02-23 15:42:48 +01:00
Sybren A. Stüvel 9750a91571 Fixed file leak when opening corrupted file. 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel eb8281ea82 Fix leaking file object when loading non-blend file 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel 8e0b135eb3 Fixed recompressing after modification 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel 67751d9a3e Fixed loading compressed files 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel b42a090f32 Support for modifying string/bytes fields. 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel efc60f437b Improved BFB.set() a bit, not yet tested at all. 2018-02-23 14:26:57 +01:00
Sybren A. Stüvel 934a8e210e Clarified type refinement, simplified API, custom exception for get_pointer
Type refinement is now only done with BlendFileBlock.refine_type(), and
no longer with sdna_index_refine parameters to various functions. This
simplifies the API at the expense of having to call two simple functions
instead of one more complex one.
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel 9c8766a28c str → repr 2018-02-23 12:24:50 +01:00
Sybren A. Stüvel 42413c4d99 Added some TODOs 2018-02-23 12:24:50 +01:00
Sybren A. Stüvel 74ef3877c6 Renamed internal func and removed an iteration over self.blocks 2018-02-23 12:24:50 +01:00
Sybren A. Stüvel 8d32ab513f Recursively add offsets of Struct.field_from_path() 2018-02-23 12:24:50 +01:00
Sybren A. Stüvel 480b82337e Some simplifications 2018-02-22 17:44:50 +01:00
Sybren A. Stüvel 968068d21d Better exception message 2018-02-22 17:44:50 +01:00
Sybren A. Stüvel 63c7e4fcef Ported iteration over properties 2018-02-22 17:44:50 +01:00
Sybren A. Stüvel 7165d121bd Ported BlendFileBlock.get_recursive_iter()
Also simplified get_file_offset(), because its optional parameters are
never used anyway.
2018-02-22 16:45:16 +01:00
Sybren A. Stüvel 87300df6a3 Fixed issue reading array items and renamed some stuff 2018-02-22 16:14:10 +01:00
Sybren A. Stüvel 9c7791f762 Implemented/fixed/ported loading of blend files and getting blocks & props 2018-02-22 15:52:10 +01:00
Sybren A. Stüvel e66b1edaf4 Implemented + tested dna.Struct.field_get 2018-02-22 14:50:24 +01:00
Sybren A. Stüvel dcda85c3e6 Ported dna.Name, dna.Field, and started with dna.Struct 2018-02-22 14:50:24 +01:00
Sybren A. Stüvel 0532634d13 Initial check-in, not yet working and has old, unported BAM code 2018-02-22 14:50:10 +01:00