Skip to content

Commit de6c392

Browse files
committed
[Editor] Add IPartDesignViewModel and fixup asset composite hierarchy view models
1 parent f751ee8 commit de6c392

20 files changed

+140
-80
lines changed

sources/editor/Stride.Assets.Editor/ViewModels/EntityHierarchyEditorViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
namespace Stride.Assets.Editor.ViewModels;
1111

12-
public abstract class EntityHierarchyEditorViewModel : AssetCompositeHierarchyEditorViewModel<EntityDesign, Entity, EntityHierarchyViewModel, EntityHierarchyItemViewModel>
12+
public abstract class EntityHierarchyEditorViewModel : AssetCompositeHierarchyEditorViewModel<EntityDesign, Entity, EntityHierarchyViewModel, EntityViewModel>
1313
{
1414
protected EntityHierarchyEditorViewModel(EntityHierarchyViewModel asset)
1515
: base(asset)
@@ -22,7 +22,7 @@ protected EntityHierarchyEditorViewModel(EntityHierarchyViewModel asset)
2222
protected override async Task RefreshEditorProperties()
2323
{
2424
EditorProperties.UpdateTypeAndName(SelectedItems, x => "Entity", x => x.Name, "entities");
25-
await EditorProperties.GenerateSelectionPropertiesAsync(SelectedItems.OfType<EntityViewModel>());
25+
await EditorProperties.GenerateSelectionPropertiesAsync(SelectedItems);
2626
}
2727

2828
/// <inheritdoc />

sources/editor/Stride.Assets.Editor/ViewModels/PrefabEditorViewModel.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,9 @@ public sealed class PrefabEditorViewModel : EntityHierarchyEditorViewModel, IAss
1313
public PrefabEditorViewModel(PrefabViewModel asset)
1414
: base(asset)
1515
{
16+
RootPart = new PrefabRootViewModel(Asset);
1617
}
1718

1819
/// <inheritdoc />
1920
public override PrefabViewModel Asset => (PrefabViewModel)base.Asset;
20-
21-
/// <inheritdoc />
22-
protected override PrefabRootViewModel CreateRootPartViewModel()
23-
{
24-
return new PrefabRootViewModel(Asset);
25-
}
2621
}

sources/editor/Stride.Assets.Editor/ViewModels/SceneEditorViewModel.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,9 @@ public sealed class SceneEditorViewModel : EntityHierarchyEditorViewModel, IAsse
1313
public SceneEditorViewModel(SceneViewModel asset)
1414
: base(asset)
1515
{
16+
RootPart = new SceneRootViewModel(Asset);
1617
}
1718

1819
/// <inheritdoc />
1920
public override SceneViewModel Asset => (SceneViewModel)base.Asset;
20-
21-
/// <inheritdoc />
22-
protected override SceneRootViewModel CreateRootPartViewModel()
23-
{
24-
return new SceneRootViewModel(Asset);
25-
}
2621
}

sources/editor/Stride.Assets.Editor/ViewModels/UIEditorBaseViewModel.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace Stride.Assets.Editor.ViewModels;
1010

11-
public abstract class UIEditorBaseViewModel : AssetCompositeHierarchyEditorViewModel<UIElementDesign, UIElement, UIBaseViewModel, UIHierarchyItemViewModel>
11+
public abstract class UIEditorBaseViewModel : AssetCompositeHierarchyEditorViewModel<UIElementDesign, UIElement, UIBaseViewModel, UIElementViewModel>
1212
{
1313
protected UIEditorBaseViewModel(UIBaseViewModel asset)
1414
: base(asset)
@@ -22,7 +22,7 @@ protected override Task RefreshEditorProperties()
2222
{
2323
// note: here we are assuming that all items are UIElementViewModel.
2424
// if that were to change, revisit this code.
25-
EditorProperties.UpdateTypeAndName(SelectedItems.OfType<UIElementViewModel>(), SelectedItems.Count, e => e.ElementType.Name, e => e.AssetSideUIElement.Name, "elements");
26-
return EditorProperties.GenerateSelectionPropertiesAsync(SelectedItems.OfType<UIElementViewModel>());
25+
EditorProperties.UpdateTypeAndName(SelectedItems, SelectedItems.Count, e => e.ElementType.Name, e => e.AssetSideUIElement.Name, "elements");
26+
return EditorProperties.GenerateSelectionPropertiesAsync(SelectedItems);
2727
}
2828
}

sources/editor/Stride.Assets.Editor/ViewModels/UILibraryEditorViewModel.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,9 @@ public sealed class UILibraryEditorViewModel : UIEditorBaseViewModel, IAssetEdit
1313
public UILibraryEditorViewModel(UILibraryViewModel asset)
1414
: base(asset)
1515
{
16+
RootPart = new UILibraryRootViewModel(Asset);
1617
}
1718

1819
/// <inheritdoc />
1920
public override UILibraryViewModel Asset => (UILibraryViewModel)base.Asset;
20-
21-
/// <inheritdoc />
22-
protected override UILibraryRootViewModel CreateRootPartViewModel()
23-
{
24-
return new UILibraryRootViewModel(Asset);
25-
}
2621
}

sources/editor/Stride.Assets.Editor/ViewModels/UIPageEditorViewModel.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,9 @@ public sealed class UIPageEditorViewModel : UIEditorBaseViewModel, IAssetEditorV
1313
public UIPageEditorViewModel(UIPageViewModel asset)
1414
: base(asset)
1515
{
16+
RootPart = new UIPageRootViewModel(Asset);
1617
}
1718

1819
/// <inheritdoc />
1920
public override UIPageViewModel Asset => (UIPageViewModel)base.Asset;
20-
21-
/// <inheritdoc />
22-
protected override UIPageRootViewModel CreateRootPartViewModel()
23-
{
24-
return new UIPageRootViewModel(Asset);
25-
}
2621
}

sources/editor/Stride.Assets.Presentation/ViewModels/EntityViewModel.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@
1212

1313
namespace Stride.Assets.Presentation.ViewModels;
1414

15-
public sealed class EntityViewModel : EntityHierarchyItemViewModel, IAssetPropertyProviderViewModel
15+
public sealed class EntityViewModel : EntityHierarchyItemViewModel, IPartDesignViewModel<EntityDesign, Entity>, IAssetPropertyProviderViewModel
1616
{
1717
private readonly MemberGraphNodeBinding<string> nameNodeBinding;
1818

1919
public EntityViewModel(EntityHierarchyViewModel asset, EntityDesign entityDesign)
2020
: base(asset, GetOrCreateChildPartDesigns((EntityHierarchyAssetBase)asset.Asset, entityDesign))
2121
{
22-
EntityDesign = entityDesign;
22+
PartDesign = entityDesign;
2323

2424
var assetNode = asset.Session.AssetNodeContainer.GetOrCreateNode(entityDesign.Entity);
2525
nameNodeBinding = new MemberGraphNodeBinding<string>(assetNode[nameof(Entity.Name)], nameof(Name), OnPropertyChanging, OnPropertyChanged, ServiceProvider.TryGet<IUndoRedoService>());
2626
}
2727

28-
public Entity AssetSideEntity => EntityDesign.Entity;
28+
public Entity AssetSideEntity => PartDesign.Entity;
2929

3030
/// <inheritdoc/>
3131
public override AbsoluteId Id => new(Asset.Id, AssetSideEntity.Id);
@@ -40,7 +40,8 @@ public override string? Name
4040
set => nameNodeBinding.Value = value;
4141
}
4242

43-
internal EntityDesign EntityDesign { get; }
43+
/// <inheritdoc/>
44+
public EntityDesign PartDesign { get; }
4445

4546
bool IPropertyProviderViewModel.CanProvidePropertiesViewModel => true;
4647

@@ -55,7 +56,7 @@ public override GraphNodePath GetNodePath()
5556
path.PushMember(nameof(EntityHierarchy.Hierarchy.Parts));
5657
path.PushTarget();
5758
path.PushIndex(new NodeIndex(Id.ObjectId));
58-
path.PushMember(nameof(EntityDesign.Entity));
59+
path.PushMember(nameof(PartDesign.Entity));
5960
path.PushTarget();
6061
return path;
6162
}

sources/editor/Stride.Assets.Presentation/ViewModels/PrefabViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ public PrefabViewModel(ConstructorParameters parameters)
1919
}
2020

2121
/// <inheritdoc />
22-
public new PrefabAsset Asset => (PrefabAsset)base.Asset;
22+
public override PrefabAsset Asset => (PrefabAsset)base.Asset;
2323
}

sources/editor/Stride.Assets.Presentation/ViewModels/SceneRootViewModel.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,9 @@ public SceneRootViewModel(SceneViewModel asset)
2121
/// <inheritdoc/>
2222
public override AbsoluteId Id => new(Asset.Id, sceneId);
2323

24+
/// <inheritdoc/>
2425
public override string? Name { get => "SceneRoot"; set => throw new NotSupportedException($"Cannot change the name of a {nameof(SceneRootViewModel)} object."); }
26+
27+
/// <inheritdoc/>
28+
public override SceneViewModel Asset => (SceneViewModel)base.Asset;
2529
}

sources/editor/Stride.Assets.Presentation/ViewModels/SceneViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ public SceneViewModel(ConstructorParameters parameters)
1919
}
2020

2121
/// <inheritdoc />
22-
public new SceneAsset Asset => (SceneAsset)base.Asset;
22+
public override SceneAsset Asset => (SceneAsset)base.Asset;
2323
}

0 commit comments

Comments
 (0)