Ejemplo n.º 1
0
	public async void SyncPos(long userId){
		unity.Debug.Log ("start SynPos");
		using (var call = client.SyncPos ()) {
			var CallRecvTask = Task.Run (async () => {
				while (!rpcStopSignal.Token.IsCancellationRequested && await call.ResponseStream.MoveNext ()) {
					Msg.Position pos = call.ResponseStream.Current;
					Gm.InPosQueue.Enqueue(pos);
				}
			});

			Msg.Input start = new Msg.Input{ UserId = userId};
			await call.RequestStream.WriteAsync (start);
            while (!rpcStopSignal.Token.IsCancellationRequested) {
				if (Gm.OutInputQueue.TryPeek(out m_Input)){
                    try {
					    call.RequestStream.WriteAsync (m_Input);
                        Gm.OutInputQueue.TryDequeue(out m_Input);
                    }
                    catch (InvalidOperationException e)
                    {
                        unity.Debug.Log("SyncPos input," + m_Input +","+ e);
                    }
                }
                await Task.Delay(1);
            }

			await call.RequestStream.CompleteAsync ();
			await CallRecvTask;
			unity.Debug.Log ("SyncPos(); exit");
		}
	}
Ejemplo n.º 2
0
    private void Awake()
    {
        m_ExplosionParticles = Instantiate(m_ExplosionPrefab).GetComponent <ParticleSystem>();
        m_ExplosionAudio     = m_ExplosionParticles.GetComponent <AudioSource>();

        m_ExplosionParticles.gameObject.SetActive(false);
        //Debug.Log(GetChildRendererBounds (gameObject));
        m_Rigidbody = GetComponent <Rigidbody>();
        var obj = GameObject.Find("GameManager");

        gm             = obj.GetComponent <GameManager> ();
        m_input        = new Msg.Input();
        m_input.UserId = gm.m_UserInfo.Uuid;

        step = 10f;
        m_q  = transform.rotation;
        m_p  = transform.position;

        CQuaternion = new ConcurrentQueue <Quaternion>();
        CPosition   = new ConcurrentQueue <Vector3> ();
        CHealth     = new ConcurrentQueue <float>();
        isDead      = false;
    }