Esempio n. 1
0
    private void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
        if (stream.isWriting)
        {
            // we are sending data
            stream.SendNext(Movement.Position);
            stream.SendNext(Movement.TargetVelocity);

            stream.SendNext(Movement.Rigidbody.rotation.eulerAngles.y);
            stream.SendNext(Movement.Top.eulerAngles.y);

            stream.SendNext(TankInput.GetLookTarget());
        }
        else
        {
            // we are receiving data
            m_NetworkPosition = (Vector3)stream.ReceiveNext();
            m_NetworkVelocity = (Vector3)stream.ReceiveNext();

            m_NetworkRotation    = (float)stream.ReceiveNext();
            m_NetworkTopRotation = (float)stream.ReceiveNext();

            m_TargetCursorWorldPos = (Vector3)stream.ReceiveNext();

            m_LastNetworkDataReceivedTime = info.timestamp;
        }
    }
Esempio n. 2
0
    private void Awake()
    {
        _tankInput    = GetComponent <TankInput>();
        _tankHealth   = GetComponent <TankHealth>();
        _tankShooting = GetComponent <TankShooting>();
        _tankMovement = GetComponent <TankMovement>();

        _spawnPointProviders = FindObjectsOfType <SpawnPointProvider>();

        _tankHealth.OnTankDead     += OnTankDead;
        _tankShooting.OnHitTargets += OnHitTargets;
    }
 private void Start()
 {
     _tankInput = GetComponent <TankInput>();
 }
Esempio n. 4
0
 private void Awake()
 {
     _tankInput       = GetComponent <TankInput>();
     _rigidbody       = GetComponent <Rigidbody>();
     _particleSystems = GetComponentsInChildren <ParticleSystem>();
 }
 void Start()
 {
     _tank = GetComponent <TankInput>();
     _shield.SetActive(false);
 }
Esempio n. 6
0
        public void Step()
        {
            NetworkStep();

            Tank tank = GetTank();
            TankInput input = new TankInput
            {
                MoveFoward = _controller.Input.KeyDown(Key.W),
                MoveBackward = _controller.Input.KeyDown(Key.S),
                TurnLeft = _controller.Input.KeyDown(Key.A),
                TurnRight = _controller.Input.KeyDown(Key.D),
                ReticlePos = _controller.Input.GetMouseWorldPos(_tankCamera.Camera, Vector2Ext.ToOtk(_controller.CanvasSize)),
                FireGun = _controller.Input.KeyPress(Key.Space),
                FirePortal0 = _controller.Input.MousePress(MouseButton.Left),
                FirePortal1 = _controller.Input.MousePress(MouseButton.Right),
            };

            if (IsConnected)
            {
                _inputQueue.Enqueue(new InputTime
                {
                    Input = input,
                    Timestamp = NetTime.Now
                });

                SendMessage(new ClientMessage { Input = input });
            }

            if (_sceneUpdated)
            {
                foreach (Bullet b in Scene.GetAll().OfType<Bullet>().Where(item => item.ServerId == null))
                {
                    b.Remove();
                }
                while (_inputQueue.Count > 0 && _client.ServerConnection.GetRemoteTime(_inputQueue.Peek().Timestamp) < _lastTimestamp - _client.ServerConnection.AverageRoundtripTime/2)
                {
                    _inputQueue.Dequeue();
                }
                var inputArray = _inputQueue.ToArray();
                for (int i = 0; i < inputArray.Length; i++)
                {
                    tank?.SetInput(inputArray[i].Input);
                    Scene.Step();
                }
                _sceneUpdated = false;
            }
            else
            {
                tank?.SetInput(input);
                Scene.Step();
            }
            StepCount++;
        }