Skip to content

Correct EventObject PlayAnimation method - #1851

Open
MnFeN wants to merge 2 commits into
aers:mainfrom
MnFeN:patch-2
Open

Correct EventObject PlayAnimation method#1851
MnFeN wants to merge 2 commits into
aers:mainfrom
MnFeN:patch-2

Conversation

@MnFeN

@MnFeN MnFeN commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@github-actions github-actions Bot added the breaking change PR contains breaking changes and wont be merged before a new patch label Jun 1, 2026
MnFeN and others added 2 commits June 12, 2026 00:02
These are 3 uints, using registers `edx`, `r8d` and `r9d`.
@Haselnussbomber

Haselnussbomber commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

Pushed the added fields as b8e89ba to the main branch and fixed parameter types of the PlayAnimation method.
Those are all 4 byte registers, so uint.
Also fixed the xmldoc warnings.

In regards to hooking it in a plugin, there should be no issues since the last parameter is entirely unused.

@github-actions

Copy link
Copy Markdown
Contributor

Breaking Changes

Member exists in left but not in right

FFXIVClientStructs.FFXIV.Client.Game.Object.EventObject.Delegates: 1

PlayAnimation: 2

  • void Invoke(FFXIVClientStructs.FFXIV.Client.Game.Object.EventObject*, uint, uint, ulong)
  • System.IAsyncResult BeginInvoke(FFXIVClientStructs.FFXIV.Client.Game.Object.EventObject*, uint, uint, ulong, System.AsyncCallback, object)

FFXIVClientStructs.FFXIV.Client.Game.Object: 1

EventObject: 1

  • void PlayAnimation(uint, uint, ulong)

@redstrate

Copy link
Copy Markdown
Contributor

@MnFeN Are you happy with the documentation I added to main now, or is there something else we want to integrate from this PR?

@MnFeN

MnFeN commented Aug 2, 2026

Copy link
Copy Markdown
Contributor Author

@MnFeN Are you happy with the documentation I added to main now, or is there something else we want to integrate from this PR?

It looks nice. By the way, based on your observation, could you explain why the sharedTimelineState param in EObjAnimation and MapEffect both seem to have no actual influence on the visual effect? It was quite confusing to me.

@redstrate

redstrate commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

@MnFeN Are you happy with the documentation I added to main now, or is there something else we want to integrate from this PR?

It looks nice. By the way, based on your observation, could you explain why the sharedTimelineState param in EObjAnimation and MapEffect both seem to have no actual influence on the visual effect? It was quite confusing to me.

That's still confusing for me too, sorry! My theory is that it's some kind of arbitrary variable that's somewhat correlated to the animations played, because parts of the code check if a different sharedTimelineState is set before continuing.

But then you'll encounter cases like sharedTimelineState being used in the SpawnObject packet, and that definitely correlates to which timeline indices are played! So maybe the answer is "sharedTimelineState directly correlates to which timelines are being played, except in some exceptional cases"??

I would love to see a better breakdown of this system because its strange that they would have two variables that mean similar but slightly different things. That would involve staring at what retail does for a while though :-D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change PR contains breaking changes and wont be merged before a new patch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants