I knew my property system macros were fragile, and I ran into a fun one the other day when adding properties for the new level generators. When loading up some test data my structure was getting turned into garbage, which I eventually tracked down to the second property in the struct having an invalid offset. Thankfully Visual Studio's debugger is badass, and was able to find that I had accidentally setup a string property (12 bytes) into a string pointer (4 bytes), doh!
struct LevelPopulatorCreatureInfo
{
TString* CreatureName; // this shouldn't be a pointer, and throws off all other offsets by 8
...
}
ADD_PROPERTY(CREATE_PROPERTY_CUSTOM(LevelPopulatorCreatureInfo,String,CreatureName));
The question now is to add some verification asserts to the already convoluted macros, or should I bite the bullet and refactor the system to make the compiler do the type checking? This might be a fun post to look back on in a couple months....
Monday, January 25, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment