diff --git a/Torch.Server/Torch.Server.csproj b/Torch.Server/Torch.Server.csproj
index 4400e35..18431c5 100644
--- a/Torch.Server/Torch.Server.csproj
+++ b/Torch.Server/Torch.Server.csproj
@@ -245,6 +245,9 @@
+
+ CharacterView.xaml
+
EntityControlHost.xaml
@@ -378,6 +381,10 @@
Designer
MSBuild:Compile
+
+ MSBuild:Compile
+ Designer
+
Designer
MSBuild:Compile
diff --git a/Torch.Server/ViewModels/Entities/CharacterViewModel.cs b/Torch.Server/ViewModels/Entities/CharacterViewModel.cs
index d54b005..e111666 100644
--- a/Torch.Server/ViewModels/Entities/CharacterViewModel.cs
+++ b/Torch.Server/ViewModels/Entities/CharacterViewModel.cs
@@ -6,7 +6,12 @@ namespace Torch.Server.ViewModels.Entities
{
public CharacterViewModel(MyCharacter character, EntityTreeViewModel tree) : base(character, tree)
{
-
+ character.ControllerInfo.ControlAcquired += (x) => { OnPropertyChanged(nameof(Name)); };
+ character.ControllerInfo.ControlReleased += (x) => { OnPropertyChanged(nameof(Name)); };
+ }
+
+ public CharacterViewModel()
+ {
}
}
}
diff --git a/Torch.Server/ViewModels/Entities/EntityViewModel.cs b/Torch.Server/ViewModels/Entities/EntityViewModel.cs
index f4ce39c..c3502d6 100644
--- a/Torch.Server/ViewModels/Entities/EntityViewModel.cs
+++ b/Torch.Server/ViewModels/Entities/EntityViewModel.cs
@@ -1,7 +1,9 @@
using System.Windows.Controls;
+using Sandbox.Game.World;
using Torch.API.Managers;
using Torch.Collections;
using Torch.Server.Managers;
+using VRage.Game.Entity;
using VRage.Game.ModAPI;
using VRage.ModAPI;
using VRageMath;
@@ -32,10 +34,11 @@ namespace Torch.Server.ViewModels.Entities
public virtual string Name
{
- get => Entity?.DisplayName;
+ get => Entity?.DisplayName ?? (Entity != null ? $"eid:{Entity.EntityId}" : "nil");
set
{
- TorchBase.Instance.InvokeBlocking(() => Entity.DisplayName = value);
+ if (Entity!=null)
+ TorchBase.Instance.InvokeBlocking(() => Entity.DisplayName = value);
OnPropertyChanged();
}
}
@@ -48,7 +51,8 @@ namespace Torch.Server.ViewModels.Entities
if (!Vector3D.TryParse(value, out Vector3D v))
return;
- TorchBase.Instance.InvokeBlocking(() => Entity.SetPosition(v));
+ if (Entity != null)
+ TorchBase.Instance.InvokeBlocking(() => Entity.SetPosition(v));
OnPropertyChanged();
}
}
diff --git a/Torch.Server/Views/Entities/CharacterView.xaml b/Torch.Server/Views/Entities/CharacterView.xaml
new file mode 100644
index 0000000..cf50c3d
--- /dev/null
+++ b/Torch.Server/Views/Entities/CharacterView.xaml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Torch.Server/Views/Entities/CharacterView.xaml.cs b/Torch.Server/Views/Entities/CharacterView.xaml.cs
new file mode 100644
index 0000000..a79f437
--- /dev/null
+++ b/Torch.Server/Views/Entities/CharacterView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Torch.Server.Views.Entities
+{
+ ///
+ /// Interaction logic for GridView.xaml
+ ///
+ public partial class CharacterView : UserControl
+ {
+ public CharacterView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Torch.Server/Views/EntitiesControl.xaml b/Torch.Server/Views/EntitiesControl.xaml
index 39c508f..9e3e342 100644
--- a/Torch.Server/Views/EntitiesControl.xaml
+++ b/Torch.Server/Views/EntitiesControl.xaml
@@ -54,7 +54,7 @@
-
+
diff --git a/Torch.Server/Views/EntitiesControl.xaml.cs b/Torch.Server/Views/EntitiesControl.xaml.cs
index 1ba3541..1095912 100644
--- a/Torch.Server/Views/EntitiesControl.xaml.cs
+++ b/Torch.Server/Views/EntitiesControl.xaml.cs
@@ -48,6 +48,8 @@ namespace Torch.Server.Views
EditorFrame.Content = new BlockView {DataContext = bvm};
if (e.NewValue is VoxelMapViewModel vvm)
EditorFrame.Content = new VoxelMapView {DataContext = vvm};
+ if (e.NewValue is CharacterViewModel cvm)
+ EditorFrame.Content = new CharacterView {DataContext = cvm};
}
else
{