示例#1
0
        /// <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);
        }
示例#2
0
        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);
        }
示例#3
0
        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;
        }
示例#4
0
 /// <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;
 }