using MetaCity.Core.Common; using UnityEngine; using Newtonsoft.Json; namespace MetaCity.Core.Messages { public class Message { public MessageType type { get; set; } public string body { get; set; } public Message(MessageType type, string body) { this.type = type; this.body = body; } } public enum MessageType { GameError = -1, // Optional. Unity to Platform // General purpose, starts from 0 GameReady = 0, // Required. Unity to Platform LevelReady = 1, // Reserved ServerReady = 2, // Platform to Unity. PlayerReady = 3, // Required if DS enabled. Unity to Platform LauncherReady = 4, // Reserved // Player related, starts from 100 Move = 101, Animate = 102, JoinMeeting = 110, // Required if Social feature enabled. Unity to Platform InteractionChoice = 120, StopInteraction = 121, // UpdateRoomLayout = 200, LoadSpace = 500, // Reserved ApplicationFocus = 1000, // Reserved LoadLevel = 1001, PlayerJoins = 1101, // Platform to Unity PlayerExits = 1102, // Platform to Unity PlayerMoves = 1103, PlayerAnimates = 1104, ChooseInteraction = 1110, UpdateItems = 1111, // MapMaker related, starts from 1200 // BuildRoom = 1200, // BuildRoomItem = 1201, // AcceptRoom = 1202, // SaveRoomLayout = 1203, // CancelRoom = 1204, ApplicationQuit = 1500, // Reserved // Development purpose, starts from 2000 EnableConsole = 2000, // Reserved } public class PlayerInfo { public string userId { get; set; } public int encId { get; set; } public bool local { get; set; } public string name { get; set; } public string sex { get; set; } [JsonConverter(typeof(VectorConverter))] public Vector3 position { get; set; } [JsonConverter(typeof(VectorConverter))] public Vector3 rotation { get; set; } public string animator { get; set; } public string outfitString { get; set; } public int avatarId { get; set; } } public class SyncTransform { public int encId { get; set; } public Vector3 pos { get; set; } public Vector3 rot { get; set; } } public class SyncAnimation { public int encId { get; set; } public string parameters { get; set; } } public class Interaction { public string itemId { get; set; } public int capacity { get; set; } public string name { get; set; } public int index { get; set; } public bool start { get; set; } } public class InteractionList { public Interaction[] interactions; } public class ItemProperty { public string id; public int[] occupiedBy; public bool unavailable; } public class UpdatePlayerMessage { private Vector3 position; private Vector3 rotation; public UpdatePlayerMessage(Transform transform) { position = transform.position; rotation = transform.rotation.eulerAngles; } public float[] ToFloatArray() { float[] arr = {position.x, position.y, position.z, rotation.x, rotation.y, rotation.z}; return arr; } } }