private bool Changed(PlayfieldStructureData aLastData, PlayfieldStructureData aData)
 {
     return
         (aLastData.Playfield != aData.Playfield ||
          aLastData.StructureInfo.pos.x != aData.StructureInfo.pos.x ||
          aLastData.StructureInfo.pos.y != aData.StructureInfo.pos.y ||
          aLastData.StructureInfo.pos.z != aData.StructureInfo.pos.z ||
          aLastData.StructureInfo.dockedShips?.Count != aData.StructureInfo.dockedShips?.Count ||
          aLastData.StructureInfo.classNr != aData.StructureInfo.classNr ||
          aLastData.StructureInfo.cntLights != aData.StructureInfo.cntLights ||
          aLastData.StructureInfo.cntTriangles != aData.StructureInfo.cntTriangles ||
          aLastData.StructureInfo.cntBlocks != aData.StructureInfo.cntBlocks ||
          aLastData.StructureInfo.cntDevices != aData.StructureInfo.cntDevices ||
          aLastData.StructureInfo.powered != aData.StructureInfo.powered ||
          aLastData.StructureInfo.name != aData.StructureInfo.name ||
          aLastData.StructureInfo.factionId != aData.StructureInfo.factionId ||
          aLastData.StructureInfo.factionGroup != aData.StructureInfo.factionGroup ||
          aLastData.StructureInfo.coreType != aData.StructureInfo.coreType ||
          aLastData.StructureInfo.pilotId != aData.StructureInfo.pilotId ||
          aLastData.StructureInfo.type != aData.StructureInfo.type ||
          aLastData.StructureInfo.lastVisitedUTC != aData.StructureInfo.lastVisitedUTC);
 }
 private HistoryBookOfStructures CreateStructureHistoryEntry(GlobalStructureInfo?aLastData, PlayfieldStructureData aData, Action <dynamic> aAddInfo)
 {
     return(new HistoryBookOfStructures()
     {
         Timestamp = DateTime.Now.ToUniversalTime(),
         Playfield = aData.Playfield,
         EntityId = aData.StructureInfo.id,
         Name = aData.StructureInfo.name,
         PosX = (int)aData.StructureInfo.pos.x,
         PosY = (int)aData.StructureInfo.pos.y,
         PosZ = (int)aData.StructureInfo.pos.z,
         Changed = GetStructureChanges(aLastData, aData.StructureInfo, aAddInfo),
     });
 }