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; } }
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>(); }
private void Awake() { _tankInput = GetComponent <TankInput>(); _rigidbody = GetComponent <Rigidbody>(); _particleSystems = GetComponentsInChildren <ParticleSystem>(); }
void Start() { _tank = GetComponent <TankInput>(); _shield.SetActive(false); }
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++; }