diff --git a/.vscode/settings.json b/.vscode/settings.json index 5b47b3ffb..3fa092349 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,7 @@ "chat.tools.terminal.autoApprove": { "ForEach-Object": true, "dotnet restore": true, - "Set-Content": true + "Set-Content": true, + "dotnet sln": true } } \ No newline at end of file diff --git a/AssetEditor.sln b/AssetEditor.sln index cfe202432..1312836d2 100644 --- a/AssetEditor.sln +++ b/AssetEditor.sln @@ -118,6 +118,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Bmd", "Bmd", "{1D70E263-412 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Editors.BmdEditor", "Editors\BmdEditor\Editors.BmdEditor.csproj", "{9CFEEAF2-8260-F2F5-50FB-8FDA9BD12CF9}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CampaignAnimationCreator", "CampaignAnimationCreator", "{97B5B2CE-D2E8-68AD-DABB-9986A92AD539}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Editor.CampaignAnimationCreator", "Editors\CampaignAnimationCreator\Editor.CampaignAnimationCreator\Editor.CampaignAnimationCreator.csproj", "{438E6F1B-F5A9-49F3-8516-CB5E9D316C81}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.CampaignAnimationCreator", "Editors\CampaignAnimationCreator\Test.CampaignAnimationCreator\Test.CampaignAnimationCreator.csproj", "{91617891-AD16-423F-B56F-AC0D2CE82B95}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -560,6 +566,30 @@ Global {9CFEEAF2-8260-F2F5-50FB-8FDA9BD12CF9}.Release|x64.Build.0 = Release|Any CPU {9CFEEAF2-8260-F2F5-50FB-8FDA9BD12CF9}.Release|x86.ActiveCfg = Release|Any CPU {9CFEEAF2-8260-F2F5-50FB-8FDA9BD12CF9}.Release|x86.Build.0 = Release|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Debug|Any CPU.Build.0 = Debug|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Debug|x64.ActiveCfg = Debug|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Debug|x64.Build.0 = Debug|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Debug|x86.ActiveCfg = Debug|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Debug|x86.Build.0 = Debug|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Release|Any CPU.ActiveCfg = Release|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Release|Any CPU.Build.0 = Release|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Release|x64.ActiveCfg = Release|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Release|x64.Build.0 = Release|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Release|x86.ActiveCfg = Release|Any CPU + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81}.Release|x86.Build.0 = Release|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Debug|x64.ActiveCfg = Debug|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Debug|x64.Build.0 = Debug|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Debug|x86.ActiveCfg = Debug|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Debug|x86.Build.0 = Debug|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Release|Any CPU.Build.0 = Release|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Release|x64.ActiveCfg = Release|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Release|x64.Build.0 = Release|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Release|x86.ActiveCfg = Release|Any CPU + {91617891-AD16-423F-B56F-AC0D2CE82B95}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -614,6 +644,9 @@ Global {BB9F2AC1-680E-4289-B212-88744460383E} = {D84249ED-B24C-F001-6275-6713CC04DE13} {1D70E263-4123-4F00-A6AB-A42611732697} = {07AC615B-A8FC-4E1A-BDD5-BC11452429A0} {9CFEEAF2-8260-F2F5-50FB-8FDA9BD12CF9} = {1D70E263-4123-4F00-A6AB-A42611732697} + {97B5B2CE-D2E8-68AD-DABB-9986A92AD539} = {07AC615B-A8FC-4E1A-BDD5-BC11452429A0} + {438E6F1B-F5A9-49F3-8516-CB5E9D316C81} = {97B5B2CE-D2E8-68AD-DABB-9986A92AD539} + {91617891-AD16-423F-B56F-AC0D2CE82B95} = {97B5B2CE-D2E8-68AD-DABB-9986A92AD539} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AB5968F3-98ED-4AFF-98EA-0DBEDCACADF2} diff --git a/AssetEditor/AssetEditor.csproj b/AssetEditor/AssetEditor.csproj index cf1cda5ed..a9231ab88 100644 --- a/AssetEditor/AssetEditor.csproj +++ b/AssetEditor/AssetEditor.csproj @@ -16,6 +16,7 @@ + diff --git a/AssetEditor/Properties/launchSettings.json b/AssetEditor/Properties/launchSettings.json index 15c97844c..5c29a8335 100644 --- a/AssetEditor/Properties/launchSettings.json +++ b/AssetEditor/Properties/launchSettings.json @@ -93,6 +93,11 @@ "commandName": "Project", "commandLineArgs": "-devcfg TwuiToolEditor", "nativeDebugging": false + }, + "AE-CampaignAnimationDamsel": { + "commandName": "Project", + "commandLineArgs": "-devcfg CampaignAnimationDamsel", + "nativeDebugging": false } } } \ No newline at end of file diff --git a/AssetEditor/Services/DependencyInjectionConfig.cs b/AssetEditor/Services/DependencyInjectionConfig.cs index 14b8fdede..e56960051 100644 --- a/AssetEditor/Services/DependencyInjectionConfig.cs +++ b/AssetEditor/Services/DependencyInjectionConfig.cs @@ -30,6 +30,7 @@ public DependencyInjectionConfig(bool loadResources = true) new Editors.Audio.DependencyInjectionContainer(), new Editors.TextureEditor.DependencyInjectionContainer(), new Editors.AnimationVisualEditors.DependencyInjectionContainer(), + new Editor.CampaignAnimationCreator.DependencyInjectionContainer(), new Editors.ImportExport.DependencyInjectionContainer(), new Editor.VisualSkeletonEditor.DependencyInjectionContainer(), new Editors.AnimatioReTarget.DependencyInjectionContainer(), diff --git a/Editors/AnimationEditor/CampaignAnimationCreator/CampaignAnimationCreatorViewModel.cs b/Editors/AnimationEditor/CampaignAnimationCreator/CampaignAnimationCreatorViewModel.cs deleted file mode 100644 index cbdf43aaf..000000000 --- a/Editors/AnimationEditor/CampaignAnimationCreator/CampaignAnimationCreatorViewModel.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.Linq; -using System.Windows; -using Editors.Shared.Core.Common; -using Editors.Shared.Core.Common.BaseControl; -using Editors.Shared.Core.Common.ReferenceModel; -using Editors.Shared.Core.Services; -using GameWorld.Core.Animation; -using Microsoft.Xna.Framework; -using Shared.Core.Misc; -using Shared.Core.Services; -using Shared.GameFormats.Animation; -using Shared.Ui.Common; - -namespace AnimationEditor.CampaignAnimationCreator -{ - public class CampaignAnimationCreatorViewModel : NotifyPropertyChangedImpl, IHostedEditor - { - public Type EditorViewModelType => typeof(EditorView); - AnimationToolInput _debugDataToLoad; - SceneObject _selectedUnit; - AnimationClip _selectedAnimationClip; - - private readonly SceneObjectEditor _assetViewModelEditor; - - private readonly SceneObjectViewModelBuilder _referenceModelSelectionViewModelBuilder; - private readonly IFileSaveService _packFileSaveService; - - public FilterCollection ModelBoneList { get; set; } = new FilterCollection(null); - public string EditorName => "Campaign Animation Creator"; - - public CampaignAnimationCreatorViewModel( - SceneObjectEditor assetViewModelEditor, - SceneObjectViewModelBuilder referenceModelSelectionViewModelBuilder, - IFileSaveService packFileSaveService) - { - _assetViewModelEditor = assetViewModelEditor; - _referenceModelSelectionViewModelBuilder = referenceModelSelectionViewModelBuilder; - _packFileSaveService = packFileSaveService; - } - - public void SetDebugInputParameters(AnimationToolInput debugDataToLoad) - { - _debugDataToLoad = debugDataToLoad; - } - - public void Initialize(EditorHost owner) - { - var item = _referenceModelSelectionViewModelBuilder.CreateAsset("model", true, "model", Color.Black, _debugDataToLoad); - Create(item.Data); - owner.SceneObjects.Add(item); - } - - void Create(SceneObject rider) - { - _selectedUnit = rider; - _selectedUnit.SkeletonChanged += SkeletonChanged; - _selectedUnit.AnimationChanged += AnimationChanged; - - SkeletonChanged(_selectedUnit.Skeleton); - AnimationChanged(_selectedUnit.AnimationClip); - } - - public void SaveAnimation() - { - var animFile = _selectedUnit.AnimationClip.ConvertToFileFormat(_selectedUnit.Skeleton); - var bytes = AnimationFile.ConvertToBytes(animFile); - _packFileSaveService.SaveAs(".anim", bytes); - } - - public void Convert() - { - //if (_selectedAnimationClip == null) - //{ - // MessageBox.Show("No animation selected"); - // return; - //} - // - //if (ModelBoneList.SelectedItem == null) - //{ - // MessageBox.Show("No root bone selected"); - // return; - //} - // - //var newAnimation = _selectedAnimationClip.Clone(); - //for (var frameIndex = 0; frameIndex < newAnimation.DynamicFrames.Count; frameIndex++) - //{ - // var frame = newAnimation.DynamicFrames[frameIndex]; - // frame.Position[ModelBoneList.SelectedItem.BoneIndex] = Vector3.Zero; - // frame.Rotation[ModelBoneList.SelectedItem.BoneIndex] = Quaternion.Identity; - //} - // - //_selectedUnit.AnimationChanged -= AnimationChanged; - //_assetViewModelEditor.SetAnimationClip(_selectedUnit, newAnimation, new SkeletonAnimationLookUpHelper.AnimationReference("Generated animation", null)); - //_selectedUnit.AnimationChanged += AnimationChanged; - } - - private void AnimationChanged(AnimationClip newValue) - { - _selectedAnimationClip = newValue; - } - - private void SkeletonChanged(GameSkeleton newValue) - { - if (newValue == null) - { - ModelBoneList.UpdatePossibleValues(null); - } - else - { - ModelBoneList.UpdatePossibleValues(SkeletonBoneNodeHelper.CreateFlatSkeletonList(newValue)); - ModelBoneList.SelectedItem = ModelBoneList.PossibleValues.FirstOrDefault(x => x.BoneName.ToLower() == "animroot"); - } - } - } -} diff --git a/Editors/AnimationEditor/CampaignAnimationCreator/DevConfig/CampaignAnimation_Damsel.cs b/Editors/AnimationEditor/CampaignAnimationCreator/DevConfig/CampaignAnimation_Damsel.cs deleted file mode 100644 index 11b10ba71..000000000 --- a/Editors/AnimationEditor/CampaignAnimationCreator/DevConfig/CampaignAnimation_Damsel.cs +++ /dev/null @@ -1,40 +0,0 @@ -using AnimationEditor.CampaignAnimationCreator; -using Editors.Shared.Core.Common.BaseControl; -using Shared.Core.DevConfig; -using Shared.Core.PackFiles; -using Shared.Core.Settings; -using Shared.Core.ToolCreation; - -namespace Editors.AnimationVisualEditors.CampaignAnimationCreator.DevConfig -{ - internal class CampaignAnimation_Damsel : IDeveloperConfiguration - { - private readonly IEditorManager _editorCreator; - private readonly IPackFileService _packFileService; - - public CampaignAnimation_Damsel(IEditorManager editorCreator, IPackFileService packFileService) - { - _editorCreator = editorCreator; - _packFileService = packFileService; - } - - public void OverrideSettings(ApplicationSettings currentSettings) - { - currentSettings.CurrentGame = GameTypeEnum.Warhammer3; - currentSettings.ShowCAWemFiles = true; - } - - public void OpenFileOnLoad() - { - var debugInput = new AnimationToolInput() - { - Mesh = _packFileService.FindFile(@"variantmeshes\variantmeshdefinitions\brt_damsel_campaign_01.variantmeshdefinition"), - Animation = _packFileService.FindFile(@"animations\battle\humanoid01b\staff_and_sword\arch_mage\locomotion\hu1b_stsw_mage_combat_walk_01.anim") - }; - - _editorCreator.Create(EditorEnums.CampaginAnimation_Editor, x => (x as EditorHost).Editor.SetDebugInputParameters(debugInput)); - - } - - } -} diff --git a/Editors/AnimationEditor/CampaignAnimationCreator/EditorView.xaml b/Editors/AnimationEditor/CampaignAnimationCreator/EditorView.xaml deleted file mode 100644 index 3ba574f6d..000000000 --- a/Editors/AnimationEditor/CampaignAnimationCreator/EditorView.xaml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - -