<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CWORLDUMODULE :: Catur Documentation</title>
    <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/index.html</link>
    <description>Overview The CWORLDUMODULE is a multi-threaded procedural landscape runtime builder based on noise definition. It generates terrain meshes around the player using a tile-based LOD system, with optional CROOMUMODULE edge, room and room-cluster modulation.&#xA;Depends on CCOREUMODULE.&#xA;Functionalities Overview Data Configuration structures for world generation (FCWorldMakerStruct, FCWorldSpawnerDataStruct) Spawner ACWorldSpawner actor that drives world generation at runtime, tracking a pawn Worldmaker Abstract worldmaker base class (UCAbstractWorldmaker) with two implementations: ProceduralMesh and DynamicMesh Blueprint Blueprint-callable functions for Z calculation and slope adaptation (UCWorldBPLibrary) Architecture The world generation pipeline works as follows:</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 20 Jul 2024 21:09:28 +0200</lastBuildDate>
    <atom:link href="https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Blueprint</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/blueprint/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/blueprint/index.html</guid>
      <description>Overview UCWorldBPLibrary exposes world query functions to Blueprint. All functions are BlueprintCallable and BlueprintPure under the Cdryx|World|CWorldBPLibrary category.&#xA;Functions Name Description zCalculateWorld3D Returns a FVector with the input X,Y and the computed Z height from the world noise zCalculateWorld2D Returns the Z height as a float from a 2D coordinate adaptRotatorToSlope3D Adapts a rotator to align with the terrain slope at a 3D position adaptRotatorToSlope2D Adapts a rotator to align with the terrain slope at a 2D position Begin Object Class=&#34;/Script/BlueprintGraph.K2Node_CallFunction&#34; Name=&#34;K2Node_CallFunction_0&#34; bIsPureFunc=True FunctionReference=(MemberParent=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,MemberName=&#34;zCalculateWorld3D&#34;) NodePosX=0 NodePosY=0 NodeGuid=A1B2C3D4E5F647890123456789ABCDEF CustomProperties Pin (PinId=AAAA00001111222233334444AAAABBBB,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;Target\nCWorld BPLibrary Object Reference&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject=&#34;/Script/CdryxWorldUModule.Default__CWorldBPLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BBBB00001111222233334444AAAABBBB,PinName=&#34;point&#34;,PinToolTip=&#34;Point\nVector (by ref)&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=CCCC00001111222233334444AAAABBBB,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\nVector&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=&#34;/Script/BlueprintGraph.K2Node_CallFunction&#34; Name=&#34;K2Node_CallFunction_1&#34; bIsPureFunc=True FunctionReference=(MemberParent=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,MemberName=&#34;zCalculateWorld2D&#34;) NodePosX=400 NodePosY=0 NodeGuid=B1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6 CustomProperties Pin (PinId=B0000001111122223333444455556666,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;Target\nCWorld BPLibrary Object Reference&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject=&#34;/Script/CdryxWorldUModule.Default__CWorldBPLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=B0000002222233334444555566667777,PinName=&#34;point&#34;,PinToolTip=&#34;Point\nVector 2D Structure (by ref)&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Vector2D&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=B0000003333344445555666677778888,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\nFloat (double-precision)&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;real&#34;,PinType.PinSubCategory=&#34;double&#34;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0.0&#34;,AutogeneratedDefaultValue=&#34;0.0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=&#34;/Script/BlueprintGraph.K2Node_CallFunction&#34; Name=&#34;K2Node_CallFunction_2&#34; bIsPureFunc=True FunctionReference=(MemberParent=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,MemberName=&#34;adaptRotatorToSlope3D&#34;) NodePosX=0 NodePosY=200 NodeGuid=C1C2C3C4C5C6C7C8C9C0CACBCCCDCECF CustomProperties Pin (PinId=C0000001111122223333444455556666,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;Target\nCWorld BPLibrary Object Reference&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject=&#34;/Script/CdryxWorldUModule.Default__CWorldBPLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=C0000002222233334444555566667777,PinName=&#34;point&#34;,PinToolTip=&#34;Point\nVector (by ref)&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Vector&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=C0000003333344445555666677778888,PinName=&#34;rotator&#34;,PinToolTip=&#34;Rotator\nRotator (by ref)&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=C0000004444455556666777788889999,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\nRotator&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object Begin Object Class=&#34;/Script/BlueprintGraph.K2Node_CallFunction&#34; Name=&#34;K2Node_CallFunction_3&#34; bIsPureFunc=True FunctionReference=(MemberParent=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,MemberName=&#34;adaptRotatorToSlope2D&#34;) NodePosX=400 NodePosY=200 NodeGuid=D1D2D3D4D5D6D7D8D9D0DADBDCDDDEDF CustomProperties Pin (PinId=D0000001111122223333444455556666,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;Target\nCWorld BPLibrary Object Reference&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxWorldUModule.CWorldBPLibrary&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultObject=&#34;/Script/CdryxWorldUModule.Default__CWorldBPLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=D0000002222233334444555566667777,PinName=&#34;point&#34;,PinToolTip=&#34;Point\nVector 2D Structure (by ref)&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Vector2D&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=D0000003333344445555666677778888,PinName=&#34;rotator&#34;,PinToolTip=&#34;Rotator\nRotator (by ref)&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=True,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=D0000004444455556666777788889999,PinName=&#34;ReturnValue&#34;,PinToolTip=&#34;Return Value\nRotator&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CoreUObject.Rotator&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue=&#34;0, 0, 0&#34;,AutogeneratedDefaultValue=&#34;0, 0, 0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) End Object</description>
    </item>
    <item>
      <title>Diagrams</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/diagrams/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/diagrams/index.html</guid>
      <description>Overview Visual diagrams illustrating the internal architecture and runtime behavior of CWORLDUMODULE.&#xA;1. Z Cross-Section: Noise Influence Across Zones Side view (cross-section) showing how the final Z height is computed when traversing horizontally through the different spatial zones: outside → cluster → edge → room → edge → cluster → outside. Each zone blends different noise layers via easeIt(), and vertex colors change in parallel to encode spatial context for the material.</description>
    </item>
    <item>
      <title>Data Structures</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/data/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/data/index.html</guid>
      <description>FCWorldMakerStruct Configuration structure for world generation parameters.&#xA;Name Description cellSize Size of a single terrain tile in world units (default 20000.0) nbTileAround Number of tiles to generate around the tracked pawn nbMinPointPerSide Minimum number of vertices per tile side at LOD 1 maxLODFactor Maximum LOD multiplier for closest tiles doNotTrackPawn If true, generates tiles once at origin and stops tracking removeFurthestTiles If true, removes tiles that fall outside the generation radius curvaturLODReduction LOD reduction factor based on distance (0.0 disables LOD variation) calculateNormal Whether to compute normals on generated meshes poolSizeStart Number of tiles per pool batch on first generation pass poolSizeRun Number of tiles per pool batch on subsequent passes collisionOnClosePMCOnly If true, only the closest tiles (max LOD) have collision enabled easeMethod Easing function used for noise blending between zones (default QuinticInOut) shadowBehavior Shadow definition for the generated terrain noiseMeshMaterial Material applied to generated terrain meshes worldMakerClass Subclass of UCAbstractWorldmaker to instantiate (ProceduralMesh or DynamicMesh) waterActorClass Actor class spawned as water plane, follows the pawn at the lowest Z fogActorClass Actor class spawned as fog volume // FCWorldMakerStruct is typically configured in a DataTable row // and referenced by ACWorldSpawner via a FDataTableRowHandle. FCWorldMakerStruct worldMakerStruct; worldMakerStruct.cellSize = 20000.0; worldMakerStruct.nbTileAround = 10; worldMakerStruct.nbMinPointPerSide = 10; worldMakerStruct.maxLODFactor = 5; worldMakerStruct.curvaturLODReduction = 0.6; worldMakerStruct.poolSizeStart = 256; worldMakerStruct.poolSizeRun = 32; worldMakerStruct.easeMethod = EAlphaBlendOption::QuinticInOut; worldMakerStruct.collisionOnClosePMCOnly = false; worldMakerStruct.removeFurthestTiles = false; FCWorldSpawnerDataStruct DataTable row structure combining world maker configuration with a noise asset.</description>
    </item>
    <item>
      <title>CWorldSpawner</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/cworldspawner/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/cworldspawner/index.html</guid>
      <description>Overview ACWorldSpawner is the main actor to place in a level. It inherits from ACAbstractSpawner and implements ICWorldData. It reads its configuration from a DataTable row, instantiates the worldmaker and drives the generation loop on tick.&#xA;Properties Name Description worldMakerRH FDataTableRowHandle pointing to a FCWorldSpawnerDataStruct row pawnToTrack Pawn whose location drives tile generation. If null, generates at origin then stops worldmaker Transient reference to the instantiated UCAbstractWorldmaker worldNoise Transient reference to the world UCNoisator singleton Lifecycle Name Description init Reads the DataTable row, creates the world noisator singleton, instantiates the worldmaker Tick Calls worldmaker-&gt;buildASync with the tracked pawn position. Stops ticking if no pawn and world is built clean Destroys the worldmaker and its resources debug Toggles debug material on all generated tiles (CallInEditor) // ACWorldSpawner is placed in the level. // Configure worldMakerRH to point to a DataTable row of type FCWorldSpawnerDataStruct. // Assign pawnToTrack to the player pawn or any pawn to follow. // init() is called by the spawner system (ACAbstractSpawner). // It creates the UCNoisator singleton and instantiates the worldmaker: UCNoisator::instanciate(GetRootComponent()-&gt;GetOwner(), CSingletonName::CNAME_Singleton_WorldNoise, worldNoise, seed, data-&gt;worldNoiseDataAsset-&gt;fastNoiseStruct, data-&gt;worldNoiseDataAsset-&gt;noiseStructArray); UCAbstractWorldmaker::instantiate&lt;UCAbstractWorldmaker&gt;( GetRootComponent(), data-&gt;worldMakerStruct.worldMakerClass, worldmaker, stream, data-&gt;worldMakerStruct); // On Tick, the spawner delegates to the worldmaker: worldmaker-&gt;buildASync(this, pawnToTrack-&gt;GetActorLocation().X, pawnToTrack-&gt;GetActorLocation().Y); ICWorldData interface ACWorldSpawner implements ICWorldData, making world queries available globally via WorldUtility static functions.</description>
    </item>
    <item>
      <title>CAbstractWorldmaker</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/cabstractworldmaker/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/cabstractworldmaker/index.html</guid>
      <description>Overview UCAbstractWorldmaker is the abstract base class for terrain generation. It manages the tile grid, LOD computation, async build pipeline, noise blending and mesh lifecycle. Concrete implementations (UCWorldmaker_ProceduralMesh, UCWorldmaker_DynamicMesh) provide the actual mesh creation.&#xA;Pure Virtual Functions Name Description isFirstStart Returns true if no mesh has been created yet cleanPmc Destroys the mesh component at a given UV index calculatePoint Computes tile mesh data (LOD, vertex count, transform) for a world/relative UV pair createPMC_sync Creates mesh components on the game thread from pre-calculated data debug Toggles debug material on/off for all mesh components // These must be implemented by subclasses: virtual bool isFirstStart() = 0; virtual void cleanPmc(FCUVIndex index, bool clearContent, bool remove = true) = 0; virtual void calculatePoint(const FCUVIndex&amp; world, const FCUVIndex&amp; rel) = 0; virtual void createPMC_sync(const TArray&lt;TPair&lt;FCUVIndex, FCUVIndex&gt;&gt;&amp; pairUVArray, bool poolStart, int poolSize) = 0; virtual void debug(bool onOff, UMaterialInterface* debugMaterial) = 0; Build Pipeline Name Description buildASync Entry point called by the spawner. Runs drawFloor async then updatePMC_sync on game thread wantDraw Guards against redundant draws: checks room state, pawn movement and queue status drawFloor Computes the tile grid around the pawn, runs calculatePoint in parallel, enqueues pooled batches updatePMC_sync Dequeues one batch, removes old tiles, calls createPMC_sync, broadcasts delegates adaptPoolSize Dynamically adjusts pool batch size based on frame time // buildASync is the main entry point, called each tick by ACWorldSpawner: worldmaker-&gt;buildASync(singleDoRun, pawnX, pawnY); // Internally: // 1. wantDraw() checks if a new draw pass is needed // 2. drawFloor() computes UV grid, runs calculatePoint() in ParallelFor // 3. Results are enqueued as FCWorldDataQueue batches // 4. updatePMC_sync() dequeues and creates meshes on game thread Z Calculation &amp; Noise Blending Name Description innerZCalculate Computes the Z height at (x,y) by blending world, cluster, room and edge noises calcMax4PointSlope Samples 4 surrounding points to estimate terrain slope calcNormal Computes a surface normal from 3 sample points bendRotatorOnSlope Adapts a rotator to align with the computed slope // innerZCalculate blends multiple noise layers: // - worldNoise: base terrain noise // - clusterNoise: per-cluster noise variation (with optional specific noise per cluster) // - clusterShiftNoise: shift noise for cluster boundaries // - roomNoise: noise variation inside rooms // Blending uses easeIt() with the configured easeMethod (default QuinticInOut). FLinearColor vertexColor; float z = worldmaker-&gt;innerZCalculate(x, y, vertexColor); // Vertex color encodes spatial context for material use: // R = cluster proximity (0 = outside, 1 = center) // G = room proximity (0 = outside, 1 = center) // B = corridor/edge proximity (0 = outside, 1 = center) // A = biome noise value (normalized) Noise Sources Name Description worldNoise Base terrain noise, singleton CNAME_Singleton_WorldNoise biomeNoise Biome boundary noise, singleton CNAME_Singleton_BiomeNoise. Stored in vertex color alpha clusterNoise Cluster-level noise, singleton CNAME_Singleton_ClusterNoise. Can be overridden per cluster clusterShiftNoise Cluster boundary shift noise, singleton CNAME_Singleton_ClusterShiftNoise. Can be overridden per cluster roomNoise Room-level noise, singleton CNAME_Singleton_RoomNoise State &amp; Delegates Name Description isReady Returns true once noise initialization is complete isBuilt Returns true once all tile batches have been processed isRendered Checks if a tile at (x,y) is rendered, outputs UV index and full LOD status onTileReady Delegate broadcast when a tile mesh is created (with UV index and fullLOD flag) onTileRemoved Delegate broadcast when a tile mesh is removed (with UV index and area rectangle) // Bind to tile lifecycle events: worldmaker-&gt;onTileReady.AddDynamic(myObject, &amp;ICWorldBoundable::onTileReady); worldmaker-&gt;onTileRemoved.AddDynamic(myObject, &amp;ICWorldBoundable::onTileRemoved); // Check world state: if (worldmaker-&gt;isReady()) { /* Z queries are safe */ } if (worldmaker-&gt;isBuilt()) { /* all tiles generated */ } FCUVIndex uvIndex; bool fullLOD; if (worldmaker-&gt;isRendered(x, y, uvIndex, fullLOD)) { // tile exists and is rendered }</description>
    </item>
    <item>
      <title>Worldmaker Implementations</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/implementations/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/cworldumodule/implementations/index.html</guid>
      <description>Overview Two concrete implementations of UCAbstractWorldmaker are provided. Both follow the same pipeline but differ in the mesh component type used for rendering.&#xA;UCWorldmaker_ProceduralMesh Uses UProceduralMeshComponent for tile rendering. Vertices, triangles, normals, UVs and vertex colors are computed manually and passed to CreateMeshSection_LinearColor.</description>
    </item>
  </channel>
</rss>