public void CreateEvent(IClientSerializable entity, object[] extraData = null) { if (GameMain.Client == null || GameMain.Client.Character == null) { return; } if (!(entity is Entity)) { DebugConsole.ThrowError("Can't create an entity event for " + entity + "!"); return; } if (((Entity)entity).Removed) { DebugConsole.ThrowError("Can't create an entity event for " + entity + " - the entity has been removed.\n" + Environment.StackTrace); return; } if (((Entity)entity).IdFreed) { DebugConsole.ThrowError("Can't create an entity event for " + entity + " - the ID of the entity has been freed.\n" + Environment.StackTrace); return; } ID++; var newEvent = new ClientEntityEvent(entity, ID); newEvent.CharacterStateID = GameMain.Client.Character.LastNetworkUpdateID; if (extraData != null) { newEvent.SetData(extraData); } events.Add(newEvent); }
public void CreateEvent(IClientSerializable entity, object[] extraData = null) { if (GameMain.Client == null || GameMain.Client.Character == null) { return; } if (!(entity is Entity)) { DebugConsole.ThrowError("Can't create an entity event for " + entity + "!"); return; } if (((Entity)entity).Removed) { DebugConsole.ThrowError("Can't create an entity event for " + entity + " - the entity has been removed.\n" + Environment.StackTrace.CleanupStackTrace()); return; } if (((Entity)entity).IdFreed) { DebugConsole.ThrowError("Can't create an entity event for " + entity + " - the ID of the entity has been freed.\n" + Environment.StackTrace.CleanupStackTrace()); return; } var newEvent = new ClientEntityEvent(entity, (UInt16)(ID + 1)) { CharacterStateID = GameMain.Client.Character.LastNetworkUpdateID }; if (extraData != null) { newEvent.SetData(extraData); } for (int i = events.Count - 1; i >= 0; i--) { //we already have an identical event that's waiting to be sent // -> no need to add a new one if (!events[i].Sent && events[i].IsDuplicate(newEvent)) { return; } } ID++; events.Add(newEvent); }
public void CreateEvent(IClientSerializable entity, object[] extraData = null) { if (GameMain.Client == null || GameMain.Client.Character == null) { return; } if (!(entity is Entity)) { DebugConsole.ThrowError("Can't create an entity event for " + entity + "!"); return; } ID++; var newEvent = new ClientEntityEvent(entity, ID); newEvent.CharacterStateID = GameMain.Client.Character.LastNetworkUpdateID; if (extraData != null) { newEvent.SetData(extraData); } events.Add(newEvent); }