<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CHexamaker :: Catur Documentation</title>
    <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/chexaumodule/chexamaker/index.html</link>
    <description>Overview UCHexamaker is the hexagonal generation engine. It manages async tile computation, probabilistic mesh selection, multi-criteria filtering, and UHierarchicalInstancedStaticMeshComponent creation/removal. It inherits from UObject and implements ICCell and ICSingleDoRun.&#xA;Build Pipeline Name Description buildASync Entry point called by the spawner. Runs drawHexa async then updateISM_sync on the game thread wantDraw Checks if a new draw is needed: room state, pawn movement, queue status drawHexa Computes the tile grid around the pawn, runs calculateTile in ParallelFor, enqueues batches updateISM_sync Dequeues a batch, creates ISMs, removes old ones, broadcasts delegates // buildASync is the main entry point, called each tick by ACHexaSpawner: hexamaker-&gt;buildASync(singleDoRun, pawnX, pawnY); // Internally: // 1. wantDraw() checks if a new pass is needed // 2. drawHexa() computes the UV grid, runs calculateTile() in ParallelFor // 3. Results are queued as FCHexaDataQueue // 4. updateISM_sync() dequeues and creates ISMs on the game thread Tile Calculation Name Description calculateTile Computes a tile: probabilistic mesh selection, Z position, jitter, rotation, scale, filtering bannedLocationCandidatToAdd Checks if the position is inside a banned area worldmakerCandidatToAdd Checks altitude, slope, slope alignment via WorldUtility roomMakerCandidatToAdd Checks room type (ROOM/CORRIDOR/WALL) and distances // calculateTile applies filters in this order: // 1. Check enable and existing ISM // 2. Convert coordinates → pixel // 3. Biome noise filter (biomeSelectLowerBound/UpperBound) // 4. Probabilistic mesh selection (meshProbaRHArray) // 5. Rotation calculation (random if rotate=true) // 6. Scale calculation (random between minScalePercent/maxScalePercent) // 7. Jitter calculation (random between minJitterForce/maxJitterForce × tileSize) // 8. Banned area filter (bannedLocationCandidatToAdd) // 9. Worldmaker filter: altitude (withBound), slope (withNormal), alignment (alignToSlope) // 10. Room filter: room type, distance to center/edge ISM Management Name Description proceedIsm Prepares transform batches per mesh index for ISM creation updateISM_sync Creates UCHierarchicalInstancedStaticMeshComponent, configures shadow/collision/cull, assigns instances removeTile (static) Removes ISM instances by UV coordinates removeTile (location) Removes the closest tile to a world position // ISM creation in updateISM_sync: // For each mesh index, a UCHierarchicalInstancedStaticMeshComponent is created. // Configuration applied: shadow, collision, cull distance, ghost material. // Instances are added in batch via AddInstances(). // The index handler (FCIndexHandler) maintains the UV ↔ instance mapping. // Tile removal: UCHexamaker::removeTile(tileArray); // by FCHexaMakerTile array UCHexamaker::removeTile(ismIndexArrayMap); // by ISM → UV index map hexamaker-&gt;removeTile(FVector2D(x, y)); // by world position hexamaker-&gt;removeTile(FVector2D(x, y), ism); // by world position + specific ISM Ghost Mode Each group of layers generates two hexamakers: one normal and one ghost. The ghost uses a transparent material (MAT_CdryxGhostEffect) applied to all meshes, and inverts the banned area logic (displays only inside banned areas).</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate></lastBuildDate>
    <atom:link href="https://doc.cdryx.net/CdryxAIOUPlugin/modules/chexaumodule/chexamaker/index.xml" rel="self" type="application/rss+xml" />
  </channel>
</rss>