[Bf-committers] help with readfile.c::do_version

Dalai Felinto dfelinto at gmail.com
Mon May 10 22:46:02 CEST 2010


I thought that the ideal was to keep everything in do_version (since
it's needed only once), but your solution makes sense as well and will
work.

Thanks Joe
--
Dalai

2010/5/10 joe <joeedh at gmail.com>:
> Ah, iirc the "correct" way to do this would be to handle this in the
> appropriate lib_link_*** function (lib_link_sensors, or whatever it
> is).  You could check if the old pointer is NULL, and if so check if
> there is a name in the name field, then look up the id block.
>
> Joe
>
> On Mon, May 10, 2010 at 10:03 AM, Dalai Felinto <dfelinto at gmail.com> wrote:
>> Hello there,
>> as mentioned in last dev meeting I changed a few Game Sensors to use a
>> datablock pointer instead of a string.
>> e.g. the Collision Sensor struct used to have a string with the name
>> of the material to trigger the collision, but now it will have a
>> struct Material *ma; instead.
>>
>> Therefore I need a nice do_version to convert the char[] to *Material.
>> In order to accomplish that I'm using BLI_findstring() . It works
>> fine, however it gives me the new pointer for the image datablock, not
>> the one stored in the file. That means that when we get in
>> lib_link_object() the pointer will try to be converted into itself,
>> what will not work since the new pointer will not be in the list of
>> the old pointers.
>>
>> The workaround I found for it is totally hacky. I created a function
>> called oldlibadr() that gives me the old pointer once I provide it
>> with the new one. It's the opposite of newlibadr() used in
>> lib_link_object(). You can see the patch for readfile.c here -
>> http://www.pasteall.org/13020/diff
>>
>> Looking forward for directions on that.
>>
>> Thanks,
>> Dalai
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>


More information about the Bf-committers mailing list