From fa3201fdba7aa8dd91fe722cf1f1b75a589803ef 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 | 15 ++++++++++- MareSynchronosAPI/SignalR/IMareHubClient.cs | 10 ++++++- 3 files changed, 49 insertions(+), 2 deletions(-) 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 45e6328..1141322 100644 --- a/MareSynchronosAPI/SignalR/IMareHub.cs +++ b/MareSynchronosAPI/SignalR/IMareHub.cs @@ -1,4 +1,5 @@ -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.Group; @@ -35,6 +36,11 @@ public interface IMareHub Task Client_UserUpdateSelfPairPermissions(UserPermissionsDto dto); Task Client_UserUpdateDefaultPermissions(DefaultPermissionsDto dto); Task Client_GroupChangeUserPairPermissions(GroupPairUserPermissionDto 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(); @@ -74,4 +80,11 @@ public interface IMareHub Task CharaDataDownload(string id); Task> CharaDataGetOwn(); Task> CharaDataGetShared(); + + Task GposeLobbyCreate(); + Task> GposeLobbyJoin(string lobbyId); + Task GposeLobbyLeave(); + Task GposeLobbyPushCharacterData(CharaDataDownloadDto charaDownloadDto); + Task GposeLobbyPushPoseData(PoseData poseData); + Task GposeLobbyPushWorldData(WorldData worldData); } \ No newline at end of file diff --git a/MareSynchronosAPI/SignalR/IMareHubClient.cs b/MareSynchronosAPI/SignalR/IMareHubClient.cs index f66abe8..c2de52e 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.Group; using MareSynchronos.API.Dto.User; @@ -50,4 +52,10 @@ public interface IMareHubClient : IMareHub void OnUpdateUserIndividualPairStatusDto(Action act); void OnGroupChangeUserPairPermissions(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