diff --git a/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset b/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset index dbe1785..d755716 100644 Binary files a/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset and b/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset differ diff --git a/Content/ZMMO/Abilities/Buffs/.gitkeep b/Content/ZMMO/Abilities/Buffs/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Content/ZMMO/Abilities/Combat/.gitkeep b/Content/ZMMO/Abilities/Combat/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Content/ZMMO/Abilities/Heals/.gitkeep b/Content/ZMMO/Abilities/Heals/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Content/ZMMO/Abilities/Movement/.gitkeep b/Content/ZMMO/Abilities/Movement/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Content/ZMMO/Abilities/Shared/.gitkeep b/Content/ZMMO/Abilities/Shared/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Instancia/MI_VFX_Portal_GridBoundary_01.uasset b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Instancia/MI_VFX_Portal_GridBoundary_01.uasset new file mode 100644 index 0000000..e3148c1 Binary files /dev/null and b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Instancia/MI_VFX_Portal_GridBoundary_01.uasset differ diff --git a/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Master/M_VFX_Portal_GridBoundary_Master.uasset b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Master/M_VFX_Portal_GridBoundary_Master.uasset new file mode 100644 index 0000000..f9e6f0f Binary files /dev/null and b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Master/M_VFX_Portal_GridBoundary_Master.uasset differ diff --git a/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Textures/T_VFX_Portal_GridBoundary_Noise_01.uasset b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Textures/T_VFX_Portal_GridBoundary_Noise_01.uasset new file mode 100644 index 0000000..2a152e3 Binary files /dev/null and b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Textures/T_VFX_Portal_GridBoundary_Noise_01.uasset differ diff --git a/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Textures/T_VFX_Portal_GridBoundary_Noise_02.uasset b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Textures/T_VFX_Portal_GridBoundary_Noise_02.uasset new file mode 100644 index 0000000..1404f14 Binary files /dev/null and b/Content/ZMMO/Materials/VFX/Portal/GridBoundary/Textures/T_VFX_Portal_GridBoundary_Noise_02.uasset differ diff --git a/Content/__ExternalActors__/ZMMO/Maps/World/L_ZeusIATest/2/60/3O2YW07QVHTIEJ4B2RSR8I.uasset b/Content/__ExternalActors__/ZMMO/Maps/World/L_ZeusIATest/2/60/3O2YW07QVHTIEJ4B2RSR8I.uasset new file mode 100644 index 0000000..cab8d3d Binary files /dev/null and b/Content/__ExternalActors__/ZMMO/Maps/World/L_ZeusIATest/2/60/3O2YW07QVHTIEJ4B2RSR8I.uasset differ diff --git a/Source/ZMMO/Game/Network/ZeusFrontierOverlayActor.cpp b/Source/ZMMO/Game/Network/ZeusFrontierOverlayActor.cpp index 5027431..7cf9770 100644 --- a/Source/ZMMO/Game/Network/ZeusFrontierOverlayActor.cpp +++ b/Source/ZMMO/Game/Network/ZeusFrontierOverlayActor.cpp @@ -18,20 +18,33 @@ namespace const FColor kLabelAlive(93, 213, 255); // ciano -- server online const FColor kLabelDead(255, 90, 90); // vermelho -- server offline / cell vazia - // Offset do cellId de filha de split (espelha CHILD_CELLID_OFFSET do server). - constexpr uint32 kChildCellIdOffset = 1000000u; - - // Decodifica o cellId int na notacao de quadtree: raiz -> "0".."3"; filha -> - // "," (ex "0,2"); neto -> "0,2,1" (recursivo). Espelha - // childCellId = offset + pai*4 + quadrante do SplitCoordinator. + // Decodifica o cellId na notacao "raiz fora, splits no array" da k-d tree + // binaria: raiz pura -> "0"; derivada -> "0,[0,1]". Espelha o layout + // bit-packed de Server/ZeusServices/Shared/types/src/cell-id.ts: + // bit 30 = flag (1 = cell derivada de split) + // bits 29..26 = depth (profundidade de split) + // bits 25..15 = rootId (cell raiz do baseGrid) + // bits 14..0 = path (1 bit por nivel, MSB-first) FString DecodeCellPath(uint32 CellId) { - if (CellId < kChildCellIdOffset) + constexpr uint32 kFlagBit = 1u << 30; + if ((CellId & kFlagBit) == 0u) { - return FString::Printf(TEXT("%u"), CellId); + return FString::Printf(TEXT("%u"), CellId); // raiz pura } - const uint32 Rel = CellId - kChildCellIdOffset; - return DecodeCellPath(Rel / 4u) + FString::Printf(TEXT(",%u"), Rel % 4u); + const uint32 Depth = (CellId >> 26) & 0xFu; + const uint32 Root = (CellId >> 15) & 0x7FFu; + const uint32 Packed = CellId & 0x7FFFu; + FString Path; + for (uint32 i = 0; i < Depth; ++i) + { + if (i > 0) + { + Path += TEXT(","); + } + Path += ((Packed >> (14u - i)) & 1u) ? TEXT("1") : TEXT("0"); + } + return FString::Printf(TEXT("%u,[%s]"), Root, *Path); } // Aresta compartilhada entre dois retangulos axis-aligned (no plano XY).