the opened ddsfs file for pulling metadata was leaking. The FileStream function close does not delete the pointer to the original file only FileObject does this. It might be worthwhile instead to switch to using fileObject anywhere we use a filestream that way we can be at least somewhat safe in using the object and once it goes out of scope the raw pointer will be freed
and from Marauder, hardened filename entry for con::evaluate/compileexec. if the string forwarded along is not a real filename, consider it an eval block
for context Strings, use c_str(),
for triggers, use Con::getCurrentScriptModulePath() as otherwise, the "%this =" and "%obj=" injections will be treated as within the global scope. which is not allowed.
Ensured CodeBlock::smCurrentLineText is cleared at the end of execution
Tweaked and cleaned up the context lines passed along for further debugging data in the event of a script assert
Adds additional context on eval and evaluate calls to better isolate script executions that are throwing errors, such as via command fields or eval() calls.
added fix for font cache (stb required size to be read switch back to libpng knocks the stream off)
Added extra control over the rendering of guibtimaps
If guibitmaps are a child of buttons the profile colors now affect how to the button is rendered.
strings that are arguments for a function need to be put into the global string table. PrecompileIdent does this for the function name etc so it pulls from that during compiled eval
the conversion functions were making assumptions that were wrong based on mant being 0 and the out being 0 completely on small numbers also if the sign was flipped it rounded to 0. Also simplified
Fix for "|" in text for popupctrl
If 1 was found it was just assuming all other bars existed for a colour input.
there could be a cleaner way to do this but the direct approach allows for clear safeties.
while it still remains a good idea to port as many NULL compares and assignments over to nullPtr as feasable, we do still need to sort out how to better support scripted empty, false, and zero assigns for things like objectIDs.
this means we'll need to both fully convert the backend of the parser to support that kind of thing, but also alter most if not all exisiting NULLs. up to and including things like SAFE_DELETE. while that's certainly feasable, given there's aproximatel 400 nullptr assigns/checks prior to this commit, and roughly 1800 of the prior, if it terminates in a script call and not an aip one direct, we'll be dialing that back until such time as fork fully fopcused on converting and resolving any lingering mismatches is completed.
Turns out ConvexFeature::collide assumes the second round of testVertex calls will only add one entry to the collision list at a time and was erroneously only changing the last object and material reference.
by request,
adds a per object-instance onadd for datablocks if an object instance *also* defines a class.
be mindful not to mix up which namespace is in use there, as you can not tag two different core class instances the same scripted class
implements the same with the same restrictions for simobjects in general