public void UpdatePositionTest() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var entity = new Entity(1, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entity); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entity); var readAsyncPositionUpdate = mockNetworkLayer.PositionUpdateEventChannel.Reader.ReadAsync(); var newPosition = new Vector3(1, 1, 1); entity.Position = newPosition; var positionUpdateTask = readAsyncPositionUpdate.AsTask(); positionUpdateTask.Wait(); var positionUpdateResult = positionUpdateTask.Result; Assert.AreSame(positionUpdateResult.Entity, entity); Assert.AreEqual(newPosition, positionUpdateResult.Position); var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); AltEntitySync.RemoveEntity(entity); var removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); var removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entity); }
/// <summary> /// Destroy all created dynamic markers. /// </summary> public static void DestroyAllDynamicMarkers( ) { foreach (DynamicMarker marker in GetAllDynamicMarkers( )) { AltEntitySync.RemoveEntity(marker); } }
public void RemoveClientTest() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var data = new Dictionary <string, object>(); data["bla"] = 1337; var entity = new Entity(1, new Vector3(1000, 1000, 1000), 0, 2, data); AltEntitySync.AddEntity(entity); var dummy = mockNetworkLayer.AddDummyClient(); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entity); Assert.AreEqual(1, entity.GetClients().Count); Assert.AreEqual(1, entity.DataSnapshot.GetLastClients().Count); Assert.AreEqual(1, dummy.GetEntities(0).Count); mockNetworkLayer.RemoveDummyClient(); Thread.Sleep(300); Assert.AreEqual(0, entity.DataSnapshot.GetLastClients().Count); Assert.AreEqual(0, entity.GetClients().Count); Assert.AreEqual(1, dummy.GetEntities(0).Count); AltEntitySync.RemoveEntity(entity); }
public void AddTest() { var entity = new Entity(1, Vector3.One, 0, 1); AltEntitySync.AddEntity(entity); AltEntitySync.RemoveEntity(entity); }
public void UpdatePositionCleanupTest() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var entity = new Entity(1, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entity); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entity); var newPosition = new Vector3(1, 1, 1); entity.Position = newPosition; for (var i = 0; i < 100; ++i) { entity.Position = new Vector3(i, i, i); Thread.Sleep(50); } var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader; AltEntitySync.RemoveEntity(entity); readAsyncRemove.ReadAsync().AsTask().Wait(); readAsyncRemove.ReadAsync().AsTask().Wait(); readAsyncRemove.ReadAsync().AsTask().Wait(); Assert.AreEqual(0, grid.GetEntityCount()); }
public void RemoveTest() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var data = new Dictionary <string, object>(); data["bla"] = 1337; var entity = new Entity(1, Vector3.Zero, 0, 2, data); AltEntitySync.AddEntity(entity); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entity); var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); var readAsyncClearCache = mockNetworkLayer.ClearCacheEventChannel.Reader.ReadAsync(); AltEntitySync.RemoveEntity(entity); var removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); var removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entity); var clearCacheTask = readAsyncClearCache.AsTask(); clearCacheTask.Wait(); var clearCacheResult = clearCacheTask.Result; Assert.AreSame(clearCacheResult.Entity, entity); }
public void UpdateRangeTest() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var entity = new Entity(1, Vector3.One, 0, 2); AltEntitySync.AddEntity(entity); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entity); var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); entity.Range = 1; var removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); var removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entity); AltEntitySync.RemoveEntity(entity); Thread.Sleep(500); Assert.AreEqual(0, grid.GetEntityCount()); }
/// <summary> /// Destroy an HelpText. /// </summary> /// <param name="dynamicTextLabel">The text label instance to destroy.</param> public static void DeleteHelpText(HelpText dynamicTextLabel) { mGlobal.API.RunSameThread(() => { HelpText.HelpTextList.Remove(dynamicTextLabel); AltEntitySync.RemoveEntity(dynamicTextLabel); }); }
/// <summary> /// Destroy all created dynamic markers. /// </summary> public static void DestroyAllDynamicMarkers() { foreach (Marker marker in GetAllDynamicMarkers()) { AltEntitySync.RemoveEntity(marker); } Marker.MarkerList.Clear(); }
/// <summary> /// Destroy all HelpText. /// </summary> public static void DeleteAllHelpText() { foreach (HelpText obj in GetAllHelpText()) { HelpText.HelpTextList.Remove(obj); AltEntitySync.RemoveEntity(obj); } }
public void OnTick(Flame flame) { if (!flame.IsPositionGroundValidated || !flame.Active) { return; } if (flame.Extinguished) { // to be sure: stop and remove all children flame.Children.ForEach(e => { e.Extinguished = true; AltEntitySync.RemoveEntity(e); }); AltEntitySync.RemoveEntity(flame); flame.Active = false; return; } // remove inactive flames and execute tick on every child flame.Children.RemoveAll(e => !e.Active); flame.Children.ForEach(e => OnTick(e)); // logical tick only every 5 seconds if (DateTime.Now < flame.LastManagedTick + TimeSpan.FromSeconds(5d)) { return; } flame.LastManagedTick = DateTime.Now; if (_random.Next(0, 100) <= Math.Max(30 + flame.Level, 50)) { flame.Level += 1; } // create children if (flame.Level > 10 && flame.Level % 5 == 0 && _random.Next(0, 100) <= Math.Max(10 - flame.Level, 30)) { var flamesToSpawn = _random.Next(1, Convert.ToInt32(Math.Floor(flame.Level / 7d))); for (var i = 0; i < flamesToSpawn; i++) { var childFlamePos = flame.Position + new Vector3(_random.Next(0, 50) / 10f, _random.Next(0, 50) / 10f, 0); var childFlame = new FlameBuilder().SetPosition(childFlamePos).InitializeFlame(); flame.Children.Add(childFlame); Console.WriteLine($"Flame {flame.Id} generated child {childFlame.Id}"); } } }
public void DeleteAll() { foreach (var entity in ManagedEntities) { AltEntitySync.RemoveEntity(entity); } ManagedEntities.Clear(); Logger.LogDebug($"[EntitySync] Deleted all entities"); }
/// <summary> /// Destroy all HelpText. /// </summary> public static void DeleteAllHelpText() { mGlobal.API.RunSameThread(() => { foreach (HelpText obj in GetAllHelpText()) { HelpText.HelpTextList.Remove(obj); AltEntitySync.RemoveEntity(obj); } }); }
/// <summary> /// Destroy a dynamic marker by it's ID. /// </summary> /// <param name="dynamicMarkerId">The ID of the marker.</param> /// <returns>True if successful, false otherwise.</returns> public static bool Delete(ulong dynamicMarkerId) { Marker marker = GetMarker(dynamicMarkerId); if (marker == null) return false; Marker.MarkerList.Remove(marker); AltEntitySync.RemoveEntity(marker); return true; }
/// <summary> /// Destroy a dynamic marker by it's ID. /// </summary> /// <param name="dynamicMarkerId">The ID of the marker.</param> /// <returns>True if successful, false otherwise.</returns> public static bool DestroyDynamicMarker(ulong dynamicMarkerId) { DynamicMarker marker = GetDynamicMarker(dynamicMarkerId); if (marker == null) { return(false); } AltEntitySync.RemoveEntity(marker); return(true); }
public static bool Delete(ulong dynamicObjectId) { Prop obj = GetProp(dynamicObjectId); if (obj == null) { return(false); } Prop.PropList.Remove(obj); AltEntitySync.RemoveEntity(obj); return(true); }
/// <summary> /// Destroy a dynamic object by it's ID. /// </summary> /// <param name="dynamicObjectId">The ID of the object.</param> /// <returns>True if successful, false otherwise.</returns> public static bool DestroyDynamicObject(ulong dynamicObjectId) { DynamicObject obj = GetDynamicObject(dynamicObjectId); if (obj == null) { return(false); } AltEntitySync.RemoveEntity(obj); return(true); }
/// <summary> /// Destroy HelpText by it's ID. /// </summary> /// <param name="dynamicTextLabelId">The ID of the text label.</param> /// <returns>True if successful, false otherwise.</returns> public static bool DeleteHelpText(ulong dynamicTextLabelId) { HelpText obj = GetHelpText(dynamicTextLabelId); if (obj == null) { return(false); } HelpText.HelpTextList.Remove(obj); AltEntitySync.RemoveEntity(obj); return(true); }
public void RemoveTestWithoutInitialData() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var entity = new Entity(1, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entity); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entity); var readAsyncDataUpdate = mockNetworkLayer.DataChangeEventChannel.Reader.ReadAsync(); entity.SetData("bla", 1337); var updateDataTask = readAsyncDataUpdate.AsTask(); updateDataTask.Wait(); var updateDataResult = updateDataTask.Result; using (var enumerator = updateDataResult.Data.GetEnumerator()) { Assert.AreEqual(true, enumerator.MoveNext()); Assert.AreEqual("bla", enumerator.Current.Key); Assert.AreEqual(1337, enumerator.Current.Value); Assert.AreEqual(false, enumerator.MoveNext()); } Assert.AreSame(updateDataResult.Entity, entity); var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); var readAsyncClearCache = mockNetworkLayer.ClearCacheEventChannel.Reader.ReadAsync(); AltEntitySync.RemoveEntity(entity); var removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); var removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entity); var clearCacheTask = readAsyncClearCache.AsTask(); clearCacheTask.Wait(); var clearCacheResult = clearCacheTask.Result; Assert.AreSame(clearCacheResult.Entity, entity); }
public bool Delete(T entity) { if (entity == null || entity.Id == 0 || !ManagedEntities.Contains(entity)) { return(false); } ManagedEntities.Remove(entity); AltEntitySync.RemoveEntity(entity); Logger.LogDebug($"[EntitySync] Deleted entity with id {entity.Id}"); return(true); }
/// <summary> /// Destroy HelpText by it's ID. /// </summary> /// <param name="dynamicTextLabelId">The ID of the text label.</param> /// <returns>True if successful, false otherwise.</returns> public static bool DeleteHelpText(ulong dynamicTextLabelId) { HelpText obj = GetHelpText(dynamicTextLabelId); if (obj == null) { return(false); } mGlobal.API.RunSameThread(() => { HelpText.HelpTextList.Remove(obj); AltEntitySync.RemoveEntity(obj); }); return(true); }
public void DataTest() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var data = new Dictionary <string, object>(); data["bla"] = 1337; var entity = new Entity(1, Vector3.Zero, 0, 2, data); AltEntitySync.AddEntity(entity); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(entity, createResult.Entity); Assert.AreEqual(new string[] { "bla" }, createResult.Data.Keys); Assert.AreEqual(new object[] { 1337 }, createResult.Data.Values); var readAsyncDataUpdate = mockNetworkLayer.DataChangeEventChannel.Reader.ReadAsync(); entity.SetData("bla", 1338); var updateDataTask = readAsyncDataUpdate.AsTask(); updateDataTask.Wait(); var updateDataResult = updateDataTask.Result; using (var enumerator = updateDataResult.Data.GetEnumerator()) { Assert.AreEqual(true, enumerator.MoveNext()); Assert.AreEqual("bla", enumerator.Current.Key); Assert.AreEqual(1338, enumerator.Current.Value); Assert.AreEqual(false, enumerator.MoveNext()); } Assert.AreSame(updateDataResult.Entity, entity); var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); AltEntitySync.RemoveEntity(entity); var removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); var removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entity); }
public void MultiAddTest() { mockNetworkLayer.ClientRepository.Remove(mockNetworkLayer.b); mockNetworkLayer.ClientRepository.Remove(mockNetworkLayer.c); var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var entityA = new Entity(1, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entityA); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entityA); readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var entityB = new Entity(1, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entityB); createTask = readAsyncCreate.AsTask(); createTask.Wait(); createResult = createTask.Result; Assert.AreSame(createResult.Entity, entityB); var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); AltEntitySync.RemoveEntity(entityA); var removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); var removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entityA); readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); AltEntitySync.RemoveEntity(entityB); removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entityB); mockNetworkLayer.ClientRepository.Add(mockNetworkLayer.b); mockNetworkLayer.ClientRepository.Add(mockNetworkLayer.c); }
public void AddRepositoryTest() { var entity2 = new Entity(0, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entity2); if (AltEntitySync.TryGetEntity(entity2.Id, 0, out var foundEntity2)) { Assert.AreSame(entity2, foundEntity2); } var entity = new Entity(1, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entity); if (AltEntitySync.TryGetEntity(entity.Id, 1, out var foundEntity)) { Assert.AreSame(entity, foundEntity); } AltEntitySync.RemoveEntity(entity2); Assert.False(AltEntitySync.TryGetEntity(entity2.Id, 0, out _)); AltEntitySync.RemoveEntity(entity); Assert.False(AltEntitySync.TryGetEntity(entity.Id, 1, out _)); }
public void AddTest() { var readAsyncCreate = mockNetworkLayer.CreateEventChannel.Reader.ReadAsync(); var entity = new Entity(1, Vector3.Zero, 0, 2); AltEntitySync.AddEntity(entity); var createTask = readAsyncCreate.AsTask(); createTask.Wait(); var createResult = createTask.Result; Assert.AreSame(createResult.Entity, entity); var readAsyncRemove = mockNetworkLayer.RemoveEventChannel.Reader.ReadAsync(); AltEntitySync.RemoveEntity(entity); var removeTask = readAsyncRemove.AsTask(); removeTask.Wait(); var removeResult = removeTask.Result; Assert.AreSame(removeResult.Entity, entity); }
private async void OnTick() { if (!_initialized) { return; } _flameManager.OnTick(Fire.MainFlame); if (Fire.MainFlame.Extinguished) { var id = Fire.Id; AltEntitySync.RemoveEntity(Fire); Console.WriteLine($"Fire {id} removed"); return; } await Task.Delay(50); OnTick(); }
public static void Delete(Prop obj) { Prop.PropList.Remove(obj); AltEntitySync.RemoveEntity(obj); }
/// <summary> /// Destroy a dynamic marker. /// </summary> /// <param name="marker">The marker instance to destroy.</param> public static void DestroyDynamicMarker(DynamicMarker marker) { AltEntitySync.RemoveEntity(marker); }
/// <summary> /// Destroy an HelpText. /// </summary> /// <param name="dynamicTextLabel">The text label instance to destroy.</param> public static void DeleteHelpText(HelpText dynamicTextLabel) { HelpText.HelpTextList.Remove(dynamicTextLabel); AltEntitySync.RemoveEntity(dynamicTextLabel); }
/// <summary> /// Destroy this textlabel. /// </summary> public void Delete() { HelpText.HelpTextList.Remove(this); AltEntitySync.RemoveEntity(this); }