Add Campaign Animation Set editor - #384
Merged
donkeyProgramming merged 1 commit intoAug 9, 2026
Merged
Conversation
Replaces the XML-text view of animations\campaign\database\bin\*.bin with a proper grid editor, and adds one-click generation of a complete campaign animation set from an existing battle animation set. Binary format fixes in Shared.GameFormats (CampaignAnimationBin): - PersistentMeta, PersistentMeta_Pose/_Dock, LocomotionEntry, TransitionEntry and UnknownEntry read their strings as (Animation, AnimationMeta, SoundMeta, Type) when the on-disk order is (Animation, Type, AnimationMeta, SoundMeta), so meta paths landed in the wrong properties. - PersistentMeta_Pose/_Dock had no real Weight field; it was the 4th string misread as a float. - UnknownEntry.Value wrote an int through the float parser. - PortholeEntry Value0-5 identified and named. - LocomotionEntry.Weight renamed BlendTime to match its observed values. Covered by round-trip tests against two real vanilla fixtures; this format had no test coverage before. Also fixes DataGridCell.Foreground app-wide, which pointed at a Background brush and painted cell text the same colour as its background. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Campaign animation sets (
animations\campaign\database\bin\*.bin) previously had no real editor — only a raw XML text view. This adds a dedicated editor, plus one-click generation of a complete set from an existing battle animation set.Editor
Binary format fixes (
Shared.GameFormats)PersistentMeta,PersistentMeta_Pose/_Dock,LocomotionEntry,TransitionEntryandUnknownEntryread their strings as (Animation, AnimationMeta, SoundMeta, Type) when the on-disk order is (Animation, Type, AnimationMeta, SoundMeta) — meta paths were landing in the wrong properties.PersistentMeta_Pose/_Dockhad no realWeightfield; it was the 4th string misread as a float.UnknownEntry.Valuewrote an int through the float parser.PortholeEntry'sValue0-5are now identified and named;LocomotionEntry.Weightrenamed toBlendTimeto match its observed values.Core changes worth a look
AssetEditor/Themes/Controls.xaml—DataGridCell.Foregroundwas set toDataGrid.CellItem.Static.Background, i.e. cell text painted the same colour as its background. Now usesABrush.Foreground.Static, which is defined in both the Dark and Light dictionaries. This affects everyDataGridin the app.IAnimationBinGenericFormat— addedMountBin(needed for rider detection).AnimationBinWh3is the only implementer.EditorEnums— unchanged. The new editor reusesXML_CampaginBin_Edtior, whose only previous consumer was the removed XML bin converter.Removed
The XML text converter for campaign .bin files (
CampaignAnimBinToXmlConverter+ itsValidator, nowCampaignAnimationSetValidator) — directly replaced by this editor. TheCampaignAnimationCreatortool is untouched and still registered, although it's maybe a bit redundant.