/// <summary> /// Send already constructed BillBoardHUDMessage to others. If the BillBoardHUDMessage has an ID of 0 it will pick the next ID. /// </summary> /// <param name="message">BillBoardHUDMessage being sent or resent.</param> /// <returns>Returns BillBoardHUDMessage with populated ID</returns> public BillBoardHUDMessage SendToOthers(BillBoardHUDMessage message) { var msg = Encode(ref message); MyAPIGateway.Multiplayer.SendMessageToOthers(HUDAPI_ADVMSG, msg, true); return(message); }
private byte[] Encode(ref BillBoardHUDMessage message) { ushort msgtype = 4; if (message.id == 0) { message.id = GetNextID(); } byte[] ver = BitConverter.GetBytes(MOD_VER); byte[] type = BitConverter.GetBytes(msgtype); byte[] modid = BitConverter.GetBytes(m_modId); byte[] mid = BitConverter.GetBytes(message.id); byte[] ttl = BitConverter.GetBytes(message.ttl); byte[] vx = BitConverter.GetBytes(message.origin.X); byte[] vy = BitConverter.GetBytes(message.origin.Y); byte[] options = new byte[1] { (byte)message.options }; byte[] cx = BitConverter.GetBytes(message.bbcolor.X); byte[] cy = BitConverter.GetBytes(message.bbcolor.Y); byte[] cz = BitConverter.GetBytes(message.bbcolor.Z); byte[] cw = BitConverter.GetBytes(message.bbcolor.W); byte[] scale = BitConverter.GetBytes(message.scale); byte[] rot = BitConverter.GetBytes(message.rotation); byte[] encode = Encoding.UTF8.GetBytes(message.material); byte[] msg = new byte[ver.Length + type.Length + cx.Length * 4 + scale.Length + modid.Length + mid.Length + ttl.Length + vx.Length + vy.Length + encode.Length + options.Length + rot.Length]; int lth = 0; Copy(ref msg, ref ver, ref lth); Copy(ref msg, ref type, ref lth); Copy(ref msg, ref modid, ref lth); Copy(ref msg, ref mid, ref lth); Copy(ref msg, ref ttl, ref lth); Copy(ref msg, ref vx, ref lth); Copy(ref msg, ref vy, ref lth); Copy(ref msg, ref options, ref lth); Copy(ref msg, ref cx, ref lth); Copy(ref msg, ref cy, ref lth); Copy(ref msg, ref cz, ref lth); Copy(ref msg, ref cw, ref lth); Copy(ref msg, ref scale, ref lth); Copy(ref msg, ref rot, ref lth); Copy(ref msg, ref encode, ref lth); return(msg); }
private byte[] Encode(ref BillBoardHUDMessage message) { ushort msgtype = 4; if (message.id == 0) { message.id = GetNextID(); } byte[] ver = BitConverter.GetBytes(MOD_VER); byte[] type = BitConverter.GetBytes(msgtype); byte[] modid = BitConverter.GetBytes(m_modId); byte[] mid = BitConverter.GetBytes(message.id); byte[] ttl = BitConverter.GetBytes(message.ttl); byte[] vx = BitConverter.GetBytes(message.origin.X); byte[] vy = BitConverter.GetBytes(message.origin.Y); byte[] options = new byte[1] { (byte)message.options }; byte[] cx = BitConverter.GetBytes(message.bbcolor.X); byte[] cy = BitConverter.GetBytes(message.bbcolor.Y); byte[] cz = BitConverter.GetBytes(message.bbcolor.Z); byte[] cw = BitConverter.GetBytes(message.bbcolor.W); byte[] scale = BitConverter.GetBytes(message.scale); byte[] rot = BitConverter.GetBytes(message.rotation); byte[] encode = Encoding.UTF8.GetBytes(message.material); byte[] msg = new byte[ver.Length + type.Length + cx.Length * 4 + scale.Length + modid.Length + mid.Length + ttl.Length + vx.Length + vy.Length + encode.Length + options.Length + rot.Length]; int lth = 0; Copy(ref msg, ref ver, ref lth); Copy(ref msg, ref type, ref lth); Copy(ref msg, ref modid, ref lth); Copy(ref msg, ref mid, ref lth); Copy(ref msg, ref ttl, ref lth); Copy(ref msg, ref vx, ref lth); Copy(ref msg, ref vy, ref lth); Copy(ref msg, ref options, ref lth); Copy(ref msg, ref cx, ref lth); Copy(ref msg, ref cy, ref lth); Copy(ref msg, ref cz, ref lth); Copy(ref msg, ref cw, ref lth); Copy(ref msg, ref scale, ref lth); Copy(ref msg, ref rot, ref lth); Copy(ref msg, ref encode, ref lth); return msg; }
/// <summary> /// Send already constructed BillBoardHUDMessage to others. If the BillBoardHUDMessage has an ID of 0 it will pick the next ID. /// </summary> /// <param name="message">BillBoardHUDMessage being sent or resent.</param> /// <returns>Returns BillBoardHUDMessage with populated ID</returns> public BillBoardHUDMessage SendToOthers(BillBoardHUDMessage message) { var msg = Encode(ref message); MyAPIGateway.Multiplayer.SendMessageToOthers(HUDAPI_ADVMSG, msg, true); return message; }