public void Setup() { _predicter = new ShipLocationPredicter(() => _shipData, SetShipLocation); var on = new ControlState(1, true); var off = new ControlState(0, false); _turningLeft = new[] { off, on, off, off, off, off, off }; _shipData = new ShipLocationPredicter.ShipData { ShipLocationEntry = new ShipLocationEntry { Rotation = 0, Pos = Vector2.Zero, Move = Vector2.Zero, GameTime = TimeSpan.Zero, ControlStates = _turningLeft, }, TargetElapsedTime = TimeSpan.FromSeconds(1f / 20), ThrustForce = 120000, TurnSpeed = 1, Mass = 350, }; _entry1 = new ShipLocationEntry { GameTime = TimeSpan.FromSeconds(1), Pos = new Vector2(100, 100), Move = new Vector2(1000, 0), Rotation = 1, ControlStates = _turningLeft, }; _entry2 = new ShipLocationEntry { GameTime = TimeSpan.FromSeconds(1.1), Pos = new Vector2(200, 100), Move = new Vector2(1000, 0), Rotation = 1.1f, ControlStates = _turningLeft, }; _entry3 = new ShipLocationEntry { GameTime = TimeSpan.FromSeconds(1.2), Pos = new Vector2(300, 100), Move = new Vector2(1000, 0), Rotation = 1.2f, ControlStates = _turningLeft, }; }
private void SetLatestShipLocationEntry(ShipLocationEntry entry) { _predicter.StoreOldShipLocation(_shipData.ShipLocationEntry); _shipData.ShipLocationEntry = entry; }
private void SetShipLocation(ShipLocationEntry entry) { _shipData.ShipLocationEntry.Pos = entry.Pos; _shipData.ShipLocationEntry.Move = entry.Move; _shipData.ShipLocationEntry.Rotation = entry.Rotation; }
public void TestUpdateFromServer() { var serverEntry1 = new ShipLocationEntry { GameTime = TimeSpan.FromSeconds(1), Pos = new Vector2(100, 100), Move = new Vector2(1000, 0), Rotation = 2, ControlStates = null, }; var resultEntry2 = new ShipLocationEntry { GameTime = TimeSpan.FromSeconds(1.1), Pos = new Vector2(200, 100), Move = new Vector2(1000, 0), Rotation = 2.1f, ControlStates = _turningLeft, }; SetLatestShipLocationEntry(_entry1); SetLatestShipLocationEntry(_entry2); _predicter.UpdateOldShipLocation(serverEntry1); var entry = GetShipLocationEntry(TimeSpan.FromSeconds(1.1)); Assert.AreEqual(resultEntry2, entry); }