(2021-03-16, 22:11)Travis Cobbs Wrote: At this point in time, I think it's safe to say that if a user embeds a *.dat file in their MPD, they intend it to replace the *.dat file of that same name in the LDraw parts library. Nobody should be using *.dat for personal files anymore. So I still feel that this global replacement is correct.
So to be clear, the way you expect it to work is like so:
given a mpd containing main.ldr, brick.dat and stud.dat with a reference tree like so:
d:\model.mpd
main.ldr
3001.dat
s\3001s01.dat
stud.dat
brick.dat
brick.dat
box.dat
stud.dat
stud.dat
The main.ldr reference will look in these
<mpd> <--hit
d:\
<lib>\p
<lib>\parts
The 3001.dat reference will look in these:
<mpd>
d:\
<lib>\p
<lib>\parts <-- hit
The s\3001s01.dat reference in 3001.dat will look in these:
<lib>\parts (because its the parent folder of 3001.dat, just like d:\ is for the mpd) <-- hit
<mpd>
d:\
<lib>\p
<lib>\parts
The stud.dat reference in s\3001s01.dat will look in these:
<lib>\parts\s (parent folder of 3001s01.dat)
<mpd> <-- hit
d:\
<lib>\p
<lib>\parts
So in short the mpd content and parent folder of the file being loaded will be prefixed to ALL following search requests?
And every recursively loaded file will add to that by also prefixing their folder/mpd location?
Do note I make no distinction between .dat, .ldr, .mpd or if its located in parts / p etc, they are all just ldraw files being processed using a generic method.
Or are we suggesting that models have different kind of rules for resolving references then parts (which is even more messy imho).
so what would happen if you got a second mpd also containing a stud.dat which references the first mpd?
e.g.
Code:
a.mpd
main.ldr
3001.dat
b.mpd
stud.dat
b.mpd
main.ldr
3001.dat
stud.dat
If I understand the proposed system correctly it should use b.mpd's stud.dat for every brick used in b.mpd's model's and it should use a.mpd's stud.dat for everything else.
You will end up with 2 different versions of <lib>parts\3001.dat this way.
The context approach wouldn't have this problem because every file on disk lives in it's own private container, which is very easy to cache as they never change, even when you load additional ldraw files.
In the context approach you would only end up with two different 3001.dat's if they have different ldraw sources much easier to maintain (especially in editors).
Hope this is somewhat understandable as I'm mainly trying to show we really should look beyond the single mpd impact of this 'global' system.