예제 #1
0
        /// <summary>
        /// Sends the instance information message.
        /// </summary>
        /// <param name="connection">The connection.</param>
        public void SendInstanceInfoMessage(BrokerConnection connection)
        {
            if (!IsRunning || !HasSubscribers)
            {
                return;
            }

            Enqueue(InstanceMessage.Generate(connection));
        }
예제 #2
0
    public void requestNewInstance()
    {
        RequestNewInstanceMessage message = new RequestNewInstanceMessage();

        message.onResponse += (QTResponsableMessage message) => {
            InstanceMessage instanceMessage = (InstanceMessage)message;
            setupWorkerClient(instanceMessage.room.ip, instanceMessage.room.port);
        };

        masterClient.sendMessage(message);
    }
예제 #3
0
        internal override void AssignData(InstanceMessage data)
        {
            TreeMessage msg = data as TreeMessage;

            if (msg == null)
            {
                deleted = true;
                return;
            }
            id          = msg.id;
            prefab_name = msg.prefab_name;
            _position   = msg.position;
        }
예제 #4
0
        internal override void AssignData(InstanceMessage data)
        {
            NetNodeMessage msg = data as NetNodeMessage;

            if (msg == null)
            {
                deleted = true;
                return;
            }
            id              = msg.id;
            prefab_name     = msg.prefab_name;
            _position       = msg.position;
            terrain_offset  = msg.terrain_offset;
            building_id     = msg.building_id;
            seg_count       = msg.seg_count;
            _cachedSegments = new CachedObj <List <Segment> >(() => api.client.RemoteCall <List <NetSegmentMessage> >(Contracts.GetSegmentsForNodeId, id).Select((obj) => new Segment(obj, api)).ToList());;
        }
예제 #5
0
    public override void handleMessage(QTMessage message)
    {
        switch (message.messageType)
        {
        case QTMessage.type.REQUEST_NEW_INSTANCE:
            MasterServerQTClient      qtRemoteClient = (MasterServerQTClient)client;
            RequestNewInstanceMessage requestMessage = (RequestNewInstanceMessage)message;

            MasterServerWorker worker = MasterServerManager.instance.workersManager.spawnWorker(Guid.NewGuid().ToString());

            InstanceMessage instanceMessage = new InstanceMessage(requestMessage);
            instanceMessage.room  = worker.room;
            worker.onWorkerReady += () => {
                sendRequestInstanceResponse(qtRemoteClient, instanceMessage);
            };
            break;
        }
    }
예제 #6
0
 public void sendRequestInstanceResponse(MasterServerQTClient qtRemoteClient, InstanceMessage message)
 {
     qtRemoteClient.sendMessage(message);
 }