Boilerplate, Refactors, Resource Hygiene#9
Conversation
Add AttribSys support (read only)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f5f1413a71
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| long importBlockOffset = Math.Max( | ||
| (long)keyframeTimesPtr + (keyframeCount * KeyframeTimeSize), | ||
| (long)keyframeRefsPtr + (keyframeCount * KeyframeReferencePlaceholderSize)); |
There was a problem hiding this comment.
Align import-block lookup with aligned write offset
WriteToStream writes the keyframe import table at a 16-byte-aligned importsOffset, but ReadLocation computes importBlockOffset as the unaligned max of the keyframe arrays. When a location has a keyframe count not divisible by 4 (for example, 1), the parser starts scanning 12 bytes before the real table, steps in 16-byte increments, and misses every import entry; this causes exported EnvironmentTimeline files to round-trip with missing ResourceReference IDs.
Useful? React with 👍 / 👎.
| output.Append(process.StandardOutput.ReadToEnd()); | ||
| output.Append(process.StandardError.ReadToEnd()); |
There was a problem hiding this comment.
Drain both redirected streams concurrently
RunAndCapture reads stdout to completion before reading stderr, which can deadlock when the child process writes enough to stderr to fill its pipe while stdout is still being drained. This regression now affects shader compilation paths using ProcessUtilities.RunAndCapture, where verbose compiler errors can hang the export command instead of returning a failure.
Useful? React with 👍 / 👎.
Refactors to resources:
For the above resources:
Improved 64 bit-reading and writing support (thanks to the new boilerplate)
Some of them were almost entirely rewritten, bringing them to be basically identical to their input formats now
Added resource-wide boilerplate for getting external imports
Added the ability to write external imports on export, with a few modes:
ImportToYamltool in their workflow)Entirely refactored ResourceFactory and how resource type/platform registration works
New utilities to run external processes from inside volatility
Added Transform to Matrix44Affine serialization
Added more error checking in most areas of the tool
Housekeeping