-
Notifications
You must be signed in to change notification settings - Fork 30
MQO reading #251
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MQO reading #251
Conversation
| pvPrime = MAKE_VERSION(2, 0, 63, 11), | ||
| pvPots = MAKE_VERSION(2, 0, 63, 12), | ||
| pvMoul = MAKE_VERSION(2, 0, 70, 0), | ||
| pvMqo = MAKE_VERSION(2, 0, 70, 1), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
H-uru/Plasma is currently 2.0.70.2, FWIW.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That ends up not really mattering because that's handled via the ClassVersions stuff.
MQO isn't really 2.0.70.1, we just need something to use as a flag because of the missing ClassVersions for messages :(
9ea5f86 to
61fbf21
Compare
I believe this is only ever used for MQO.
core/PRP/KeyedObject/plLoadMask.cpp
Outdated
| fQuality[0] = (m >> 4) | 0xF0; | ||
| fQuality[1] = m | 0xF0; | ||
| if (S->getVer() < MAKE_VERSION(2, 0, 63, 0) && S->getVer().isValid()) { | ||
| S->readInt(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to update write()
core/PRP/Modifier/plOneShotMod.cpp
Outdated
| S->writeBool(fDrivable); | ||
| S->writeBool(fReversable); | ||
| S->writeBool(fSmartSeek); | ||
| S->writeBool(fNoSeek); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make this conditional to match read()?
|
|
||
| if (S->getVer() < MAKE_VERSION(2, 0, 63, 0)) { | ||
| return; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also update write()
Co-Authored-By: Edmond Mondor <[email protected]>
plClient writes a computed transform, but does some additional computation during the read. We may want this computed transform at some point, but for now it's easier (and better for preserving PRP identity) to just read and write the same bits avoiding all additional computation. Co-Authored-By: Darryl Pogue <[email protected]>
|
I've made those reads/write consistent, and also got support for HKPhysical working. This now includes a slightly modified version of #138 (in which we still read the hsVector3 because some versions have extra data in there, but assign to the hsQuat without doing any data transformations) |
|
Just chiming in to say great work with all this research. The MQ community is watching eagerly, as this contributes to future revival efforts. |
Based on some work by @Hazado and references from Drizzle, this seems to be able to read all the MQO files. I'm going to say that editing/writing is probably not safe for now.
For most cases, we can rely on the Class Versions map, except for the case of messages included within responders. That necessitated the addition of a
pvMqoentry to PlasmaVersion and a very specific filename/SeqPrefix check to decide when to use it or not 😞This also adds support for the plCloneSpawnModifier class. Currently this is unused in Uru and MOUL, so we'll always try to read an MQO version if it's MOUL-ish data. Given that the class implementation is actually probably broken in Uru, it makes sense for us to update it in H-uru/Plasma to match MQO at some point so that it's actually usable, but that's neither here nor there.
There's a handful of version checks for Choru data that I've been carrying around locally for a few years in here too. I can try to split them out into their own commit if that's a problem.
Closes #247