Пример #1
0
        void FixedUpdate()
        {
            if (!ws.IsConnected)
            {
                Debug.Log("not connected:" + url);
                return;
            }

            if (lastSendTime + cycleTimeStepSize <= Time.time)
            {
                lastSendTime = Time.time;

                if (Time.time - episodeStartTime > episodeTimeLength)
                {
                    TimeOver();
                }
                if (agent.state.endEpisode)
                {
                    StartNewEpisode();
                }
                agent.UpdateState();

                var    packer = new MsgPack.CompiledPacker();
                byte[] msg    = packer.Pack(agent.state);

                received.Reset();
                ws.Send(msg);
                received.WaitOne();

                OnCycleUpdateAfterReceiveAction();
            }
        }
Пример #2
0
 public AIClientAsync(string _url)
 {
     url               = _url;
     mutAgent          = new Mutex();
     mutAi             = new Mutex();
     packer            = new MsgPack.CompiledPacker();
     agentMessageQueue = new Queue <byte[]>();
     aiMessageQueue    = new Queue <byte[]>();
     th = new Thread(new ThreadStart(ExecuteInForeground));
     th.Start(this);
 }
Пример #3
0
 public AIClient(string _url, MassageCB cb, Agent _agent)
 {
     url               = _url;
     messageCallBack   = cb;
     agent             = _agent;
     mutAgent          = new Mutex();
     mutAi             = new Mutex();
     packer            = new MsgPack.CompiledPacker();
     agentMessageQueue = new Queue <byte[]>();
     aiMessageQueue    = new Queue <byte[]>();
     th = new Thread(new ThreadStart(ExecuteInForeground));
     th.Start(this);
 }