Sybren A. Stüvel
ccdccd69cf
Speed up rewriting paths by reusing cached DNA structs & blocks
2018-03-08 10:59:45 +01:00
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
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
480b82337e
Some simplifications
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