ME3Tweaks / LegendaryExplorer

Editor toolset for Mass Effect Trilogy and Mass Effect Legendary Edition
https://me3tweaks.com
GNU General Public License v3.0
125 stars 29 forks source link

Last touched value-edits in Curve Editor are discarded upon saving pcc. #290

Open linkenski opened 2 years ago

linkenski commented 2 years ago

Describe the bug Sometimes, editing values from curve-editor on tracks return to what they were before when hitting Save. A value that was 0, that is changed to a specific float, for example in the "Move" track of an interp, is returned to 0 again when saving. There's 6 values to edit on each track, X, Y, Z, Roll, Yaw and Pitch. In my experience, the last touched value before I click Save, is forgotten afterwards and this happens frequently. It could be related to having the game open while saving, but it just seems the view is not in sync with the actual way the values are saved.

To Reproduce Open a file that has an interp, for example End001_440Turians_LOCINT, and the garrus-something"d" dialogue (easiest to open from Dialogue Editor) and open its node sequence.

Steps to reproduce the behavior:

  1. Try using End001_440Turians_LOC_INT as the example. Open this through Dialogue Editor as a shortcut.
  2. Click on the "end001_garrus_d" conversation in the lower-right box, and open any Entry or Player node within the conversation view, in Sequence View. (the middle icon in the "Matinee" tab) 2ex. (Optional for testing for possible error-source): Open the game and load up the save data provided before going to the next step.
  3. Now right-click and open any Interp you see, that has a "Cam_1" listed in the Variable Links, in InterpViewer. Alternatively rightclick the InterpData and open in Package Editor.
  4. Inside the Cam_1 InterpGroup, open the "InterpTrackMove" export in Package Editor and go to the CurveEditor tab.
  5. In the Curve Editor, try adding one new track key in one of the Location tracks and one in the Euler tracks, with the "set to 0" option. Make sure both of these new keys have the same "InValue" (or "time" in Curve Editor) or the game will crash when reading this.
  6. Now change them to some float-value with a decimal on it, positive or negative. Do it for at least 3 of them.
  7. Save the .pcc
  8. Quit the Curve Editor view or close the window. Now try reopening it, and check that the last value you saved.

Expected behavior In many cases, the last value saved after editing multiple keys in Curve Editor (maybe while the game is open) are not saved when you save. After following the above steps you will sometimes experience it returning to the value it was before you edited it, in this case, the new keys added are saved, but the last one or several values edited, is 0 instead of the value you changed it to. Correcting it and hitting save a second time typically saves it properly.

Version information: Nightly 6.0 11-10-2021

linkenski commented 2 years ago

Shep_31__270518_23a0a01.zip I forgot to add the save, in case you want to run the game simultaneously. If you edit the mentioned dialogue to test this, load this save, and talk to Garrus to see it in-game.

henbagle commented 2 years ago

I'm having a hard time reproducing this issue, but I will continue to look out for it. I've added some code to make sure the current curve values are saved to the export when the Curve Editor's export gets unloaded, which may or may not solve the problem. Thanks for the detailed report!

linkenski commented 2 years ago

I think I have found the source of the problem. Well, there are two problems in fact:

  1. Rarely, when making changes from InterpViewer, or CurveEditor, the changes are gone as soon as you leave that view, and seemingly don't correspond to the package editor values properly.
  2. The latest version of Dialogue Editor does not sync with all changes made from Package Editor. I just made a change to a InterpTrackMove from Package Editor, saved it and closed the window. Before closing Dialogue Editor it said I had unsaved changes. So I said "No" to keep the window open. Hit "Save" and rechecked the InterpTrackMove. The values and keys I had added had been reversed to how they were at the time I opened the Dialogue Editor view.
Mgamerz commented 2 years ago

Are you using force reload package at any point in this process?

On Fri, Oct 22, 2021, 8:45 AM linkenski @.***> wrote:

I think I have found the source of the problem. Well, there are two problems in fact:

  1. Rarely, when making changes from InterpViewer, or CurveEditor, the changes are gone as soon as you leave that view, and seemingly don't correspond to the package editor values properly.
  2. The latest version of Dialogue Editor does not sync with all changes made from Package Editor. I just made a change to a InterpTrackMove from Package Editor, saved it and closed the window. Before closing Dialogue Editor it said I had unsaved changes. So I said "No" to keep the window open. Hit "Save" and rechecked the InterpTrackMove. The values and keys I had added had been reversed to how they were at the time I opened the Dialogue Editor view.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ME3Tweaks/LegendaryExplorer/issues/290#issuecomment-949698563, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAU4VFDKJMFUQQWR6WZ72ZTUIF2IHANCNFSM5GCBKXBA .

linkenski commented 2 years ago

I don't use that feature, and I didn't.