From 8b77956ec8620eb96f9f12b72182e0a6c70b23d1 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Sun, 19 Jan 2025 14:27:18 +0100 Subject: [PATCH] most of gpose together impl (#21) Co-authored-by: Stanley Dimant --- .../Dto/CharaData/CharaDataFullDto.cs | 26 +++++++++++++++++++ MareSynchronosAPI/SignalR/IMareHub.cs | 13 ++++++++++ MareSynchronosAPI/SignalR/IMareHubClient.cs | 10 ++++++- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/MareSynchronosAPI/Dto/CharaData/CharaDataFullDto.cs b/MareSynchronosAPI/Dto/CharaData/CharaDataFullDto.cs index 3434861..d8b4016 100644 --- a/MareSynchronosAPI/Dto/CharaData/CharaDataFullDto.cs +++ b/MareSynchronosAPI/Dto/CharaData/CharaDataFullDto.cs @@ -59,4 +59,30 @@ public record struct LocationInfo [Key(4)] public uint WardId { get; set; } [Key(5)] public uint HouseId { get; set; } [Key(6)] public uint RoomId { get; set; } +} + +[MessagePackObject] +public record struct PoseData +{ + [Key(0)] public bool IsDelta { get; set; } + [Key(1)] public Dictionary Bones { get; set; } + [Key(2)] public Dictionary MainHand { get; set; } + [Key(3)] public Dictionary OffHand { get; set; } + [Key(4)] public BoneData ModelDifference { get; set; } +} + +[MessagePackObject] +public record struct BoneData +{ + [Key(0)] public bool Exists { get; set; } + [Key(1)] public float PositionX { get; set; } + [Key(2)] public float PositionY { get; set; } + [Key(3)] public float PositionZ { get; set; } + [Key(4)] public float RotationX { get; set; } + [Key(5)] public float RotationY { get; set; } + [Key(6)] public float RotationZ { get; set; } + [Key(7)] public float RotationW { get; set; } + [Key(8)] public float ScaleX { get; set; } + [Key(9)] public float ScaleY { get; set; } + [Key(10)] public float ScaleZ { get; set; } } \ No newline at end of file diff --git a/MareSynchronosAPI/SignalR/IMareHub.cs b/MareSynchronosAPI/SignalR/IMareHub.cs index 509676e..7475116 100644 --- a/MareSynchronosAPI/SignalR/IMareHub.cs +++ b/MareSynchronosAPI/SignalR/IMareHub.cs @@ -59,6 +59,12 @@ public interface IMareHub Task Client_UserUpdateSelfPairPermissions(UserPermissionsDto dto); + Task Client_GposeLobbyJoin(UserData userData); + Task Client_GposeLobbyLeave(UserData userData); + Task Client_GposeLobbyPushCharacterData(CharaDataDownloadDto charaDownloadDto); + Task Client_GposeLobbyPushPoseData(UserData userData, PoseData poseData); + Task Client_GposeLobbyPushWorldData(UserData userData, WorldData worldData); + Task GetConnectionDto(); Task GroupBanUser(GroupPairDto dto, string reason); @@ -128,4 +134,11 @@ public interface IMareHub Task> CharaDataGetOwn(); Task> CharaDataGetShared(); Task CharaDataAttemptRestore(string id); + + Task GposeLobbyCreate(); + Task> GposeLobbyJoin(string lobbyId); + Task GposeLobbyLeave(); + Task GposeLobbyPushCharacterData(CharaDataDownloadDto charaDownloadDto); + Task GposeLobbyPushPoseData(PoseData poseData); + Task GposeLobbyPushWorldData(WorldData worldData); } diff --git a/MareSynchronosAPI/SignalR/IMareHubClient.cs b/MareSynchronosAPI/SignalR/IMareHubClient.cs index 90d4cc0..d13cbaa 100644 --- a/MareSynchronosAPI/SignalR/IMareHubClient.cs +++ b/MareSynchronosAPI/SignalR/IMareHubClient.cs @@ -1,5 +1,7 @@ -using MareSynchronos.API.Data.Enum; +using MareSynchronos.API.Data; +using MareSynchronos.API.Data.Enum; using MareSynchronos.API.Dto; +using MareSynchronos.API.Dto.CharaData; using MareSynchronos.API.Dto.Chat; using MareSynchronos.API.Dto.Group; using MareSynchronos.API.Dto.User; @@ -51,4 +53,10 @@ public interface IMareHubClient : IMareHub void OnUserUpdateProfile(Action act); void OnUserUpdateSelfPairPermissions(Action act); + + void OnGposeLobbyJoin(Action act); + void OnGposeLobbyLeave(Action act); + void OnGposeLobbyPushCharacterData(Action act); + void OnGposeLobbyPushPoseData(Action act); + void OnGposeLobbyPushWorldData(Action act); } \ No newline at end of file