Пример #1
0
        /// <summary>
        /// Send object thats cbody ctransform vector3 int32 string ctext to peers
        /// Todo add SendEntity to this method.
        ///  </summary>
        public void SendObject(object datatosend, object metadata)
        {
            if (!havePeers())
            {
                Debug.WriteLine("No connections to send to.");
                return;
            }

            Enums.MessageType type = Enums.MessageType.Unknown;
            Enum.TryParse(datatosend.GetType().Name, out type);
            if (type == Enums.MessageType.Unknown)
            {
                return;
            }

            NetOutgoingMessage msg = _peer.CreateMessage();

            switch (type)
            {
            case Enums.MessageType.CBody:
                var dataCbody = (CBody)datatosend;
                msg.Write((byte)type);
                msg.Write((string)metadata);
                msg.WriteCBody(dataCbody);
                break;

            case Enums.MessageType.CTransform:
                var dataTransform = (CTransform)datatosend;
                msg.Write((byte)type);
                msg.Write((string)metadata);
                msg.WriteCTransform(dataTransform);
                break;

            case Enums.MessageType.Vector3:
                var datavector = (Vector3)datatosend;
                msg.Write((byte)type);
                msg.Write((string)metadata);
                msg.WriteUnitVector3(datavector, 1);
                break;

            case Enums.MessageType.Int32:
                int dataint = (int)datatosend;
                msg.Write((byte)type);
                msg.Write((string)metadata);
                msg.Write(dataint);
                break;

            case Enums.MessageType.String:
                var datastring = (string)datatosend;
                msg.Write((byte)type);
                msg.Write((string)metadata);
                msg.Write(datastring);
                break;

            case Enums.MessageType.CText:
                var ctext = (CText)datatosend;
                msg.Write((byte)type);
                msg.Write((int)metadata);
                msg.WriteCText(ctext);
                break;

            default:
                Debug.WriteLine("unknownType");
                break;
            }
            if (MasterNetConnection == null)
            {
                _peer.SendMessage(msg, _peer.Connections, NetDeliveryMethod.Unreliable, 0);
            }
            else
            {
                _peer.SendMessage(msg, MasterNetConnection, NetDeliveryMethod.Unreliable, 0);
            }
        }