<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CROOMUMODULE :: Catur Documentation</title>
    <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/index.html</link>
    <description>Overview The CROOMUMODULE is a procedural room and corridor generation system. It creates clusters of rectangular rooms connected by MST-based corridors, with Delaunay triangulation for connectivity and configurable relaxation algorithms for layout.&#xA;Depends on CCOREUMODULE.&#xA;Functionalities Overview Data Configuration structures for room generation (FCRoomClusterStruct, FCRoomMakerStruct, FCRoomDetailStruct) Spawner ACRoomSpawner actor that drives room generation at runtime, tracking a pawn Roommaker UCRoommaker core class that builds clusters, rooms, corridors, collision and overlap events Metadata UCClusterMetadata and UCRoomMetadata store per-cluster and per-room runtime data (doors, tags, fog of war) Blueprint Blueprint-callable functions for room retrieval and room-quest interaction (UCRoomBPLibrary) Architecture The room 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/croomumodule/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Blueprint</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/blueprint/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/blueprint/index.html</guid>
      <description>Overview UCRoomBPLibrary exposes room query functions to Blueprint. All functions are BlueprintCallable under the Cdryx|Room|CRoomBPLibrary category.&#xA;Functions Name Description retrieveRoomById Retrieves a room rectangle by cluster ID and room ID. Outputs valid/notValid exec branches retrieveRoomInformation Extracts room and cluster rectangles from a FCRoomQuestContainer. Outputs enteringTheRoom/leavingTheRoom exec branches Begin Object Class=&#34;/Script/BlueprintGraph.K2Node_CallFunction&#34; Name=&#34;K2Node_CallFunction_0&#34; FunctionReference=(MemberParent=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxRoomUModule.CRoomBPLibrary&#34;&#39;,MemberName=&#34;retrieveRoomById&#34;) NodePosX=0 NodePosY=0 NodeGuid=A0A1A2A3A4A5A6A7A8A9AAABACADAEAF CustomProperties Pin (PinId=AA00000011112222333344445555AAAA,PinName=&#34;execute&#34;,PinToolTip=&#34;Execute&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#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,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AA00000022223333444455556666AAAA,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;Target\nCRoom BPLibrary Object Reference&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxRoomUModule.CRoomBPLibrary&#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/CdryxRoomUModule.Default__CRoomBPLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AA00000033334444555566667777AAAA,PinName=&#34;worldContextObject&#34;,PinToolTip=&#34;World Context Object\nObject Reference&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.Class&#39;&#34;/Script/CoreUObject.Object&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AA00000044445555666677778888AAAA,PinName=&#34;clusterId&#34;,PinToolTip=&#34;Cluster Id\nInteger&#34;,PinType.PinCategory=&#34;int&#34;,PinType.PinSubCategory=&#34;&#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&#34;,AutogeneratedDefaultValue=&#34;0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AA00000055556666777788889999AAAA,PinName=&#34;roomId&#34;,PinToolTip=&#34;Room Id\nInteger&#34;,PinType.PinCategory=&#34;int&#34;,PinType.PinSubCategory=&#34;&#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&#34;,AutogeneratedDefaultValue=&#34;0&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AA0000006666777788889999AAAA0000,PinName=&#34;result&#34;,PinToolTip=&#34;Result\nCRectangle Structure&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CdryxCoreUModule.CRectangle&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AA00000077778888999900001111AAAA,PinName=&#34;branches&#34;,PinToolTip=&#34;Valid&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#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,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=AA0000008888999900001111BBBB0000,PinName=&#34;branches_notValid&#34;,PinFriendlyName=NSLOCTEXT(&#34;&#34;, &#34;&#34;, &#34;Not Valid&#34;),PinToolTip=&#34;Not Valid&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#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,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; FunctionReference=(MemberParent=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxRoomUModule.CRoomBPLibrary&#34;&#39;,MemberName=&#34;retrieveRoomInformation&#34;) NodePosX=400 NodePosY=0 NodeGuid=B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF CustomProperties Pin (PinId=BB00000011112222333344445555AAAA,PinName=&#34;execute&#34;,PinToolTip=&#34;Execute&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#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,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BB00000022223333444455556666AAAA,PinName=&#34;self&#34;,PinFriendlyName=NSLOCTEXT(&#34;K2Node&#34;, &#34;Target&#34;, &#34;Target&#34;),PinToolTip=&#34;Target\nCRoom BPLibrary Object Reference&#34;,PinType.PinCategory=&#34;object&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.Class&#39;&#34;/Script/CdryxRoomUModule.CRoomBPLibrary&#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/CdryxRoomUModule.Default__CRoomBPLibrary&#34;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BB00000033334444555566667777AAAA,PinName=&#34;roomQuestContainer&#34;,PinToolTip=&#34;Room Quest Container\nCRoom Quest Container Structure (by ref)&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CdryxCoreUModule.CRoomQuestContainer&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=True,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BB00000044445555666677778888AAAA,PinName=&#34;room&#34;,PinToolTip=&#34;Room\nCRectangle Structure&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CdryxCoreUModule.CRectangle&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BB00000055556666777788889999AAAA,PinName=&#34;cluster&#34;,PinToolTip=&#34;Cluster\nCRectangle Structure&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;struct&#34;,PinType.PinSubCategory=&#34;&#34;,PinType.PinSubCategoryObject=/Script/CoreUObject.ScriptStruct&#39;&#34;/Script/CdryxCoreUModule.CRectangle&#34;&#39;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BB0000006666777788889999AAAA0000,PinName=&#34;branches&#34;,PinFriendlyName=NSLOCTEXT(&#34;&#34;, &#34;&#34;, &#34;Entering The Room&#34;),PinToolTip=&#34;Entering The Room&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#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,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=BB00000077778888999900001111AAAA,PinName=&#34;branches_leavingTheRoom&#34;,PinFriendlyName=NSLOCTEXT(&#34;&#34;, &#34;&#34;, &#34;Leaving The Room&#34;),PinToolTip=&#34;Leaving The Room&#34;,Direction=&#34;EGPD_Output&#34;,PinType.PinCategory=&#34;exec&#34;,PinType.PinSubCategory=&#34;&#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,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/croomumodule/diagrams/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/diagrams/index.html</guid>
      <description>Spatial Layout Rooms are nested inside clusters, which are nested inside the rootCluster bounding box. Each cluster has a margin zone and a fogOfWar rectangle. Rooms are connected by MST corridors with doors at intersection points. The longestOrderedPath algorithm assigns a progression order to rooms along the longest MST path.</description>
    </item>
    <item>
      <title>Data Structures</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/data/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/data/index.html</guid>
      <description>FCRoomClusterStruct Top-level DataTable row structure defining the entire room cluster generation.&#xA;Name Description roomMakerCountStructArray Array of FCRoomMakerCountStruct defining how many clusters of each type to generate maxIteration Maximum relaxation iterations for cluster placement (default 9999) algoRelax Relaxation algorithm for cluster spacing (default SLOW_SMALL) algoSpeed Relaxation speed multiplier (default 1.0) clusterNoiseDataAsset Noise asset for cluster-level terrain modulation roomAndCorridorNoiseDataAsset Noise asset for room and corridor terrain modulation clusterShiftNoiseDataAsset Noise asset for cluster shift terrain modulation // FCRoomClusterStruct is a FTableRowBase, designed to be used in a DataTable. // ACRoomSpawner references a row via FDataTableRowHandle (roomClusterRH). FCRoomClusterStruct clusterStruct; clusterStruct.maxIteration = 9999; clusterStruct.algoRelax = CAlgoRelaxType::SLOW_SMALL; clusterStruct.algoSpeed = 1.0; // clusterNoiseDataAsset, roomAndCorridorNoiseDataAsset, clusterShiftNoiseDataAsset // are optional UCNoiseDataAsset references for terrain modulation. FCRoomMakerCountStruct Associates a cluster definition with a spawn count.</description>
    </item>
    <item>
      <title>CRoomSpawner</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/croomspawner/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/croomspawner/index.html</guid>
      <description>Overview ACRoomSpawner is the main actor to place in a level. It inherits from ACAbstractSpawner and implements ICRoomData. It reads its configuration from a DataTable row, instantiates the roommaker and drives the generation loop on tick.&#xA;Properties Name Description pawnToTrack Pawn whose location drives room generation context roomClusterRH FDataTableRowHandle pointing to a FCRoomClusterStruct row roommaker Transient reference to the instantiated UCRoommaker clusterNoise Transient reference to the cluster UCNoisator singleton roomNoise Transient reference to the room UCNoisator singleton clusterShiftNoise Transient reference to the cluster shift UCNoisator singleton Lifecycle Name Description init Reads the DataTable row, creates noise singletons, instantiates the roommaker Tick Calls roommaker-&gt;buildASync until built, then disables tick clean Destroys the roommaker and its resources debug Toggles debug drawing on all generated rooms and corridors (CallInEditor) // ACRoomSpawner is placed in the level. // Configure roomClusterRH to point to a DataTable row of type FCRoomClusterStruct. // Assign pawnToTrack to the player pawn or any pawn to follow. // init() is called by the spawner system (ACAbstractSpawner). // It creates UCNoisator singletons for cluster, room and shift noise: UCNoisator::instanciate(GetRootComponent()-&gt;GetOwner(), CSingletonName::CNAME_Singleton_ClusterNoise, clusterNoise, seed, data-&gt;clusterNoiseDataAsset-&gt;fastNoiseStruct, data-&gt;clusterNoiseDataAsset-&gt;noiseStructArray); // Then instantiates the roommaker: UCRoommaker::instantiate(GetRootComponent(), roommaker, stream, *data); // On Tick, the spawner delegates to the roommaker: // roommaker-&gt;buildASync(this) runs until roommaker-&gt;built == true. ICRoomData interface ACRoomSpawner implements ICRoomData, making room queries available globally via RoomUtility static functions.</description>
    </item>
    <item>
      <title>CRoommaker</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/croommaker/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/croommaker/index.html</guid>
      <description>Overview UCRoommaker is the core room generation engine. It implements ICCell, ICRoomBoundable and ICCoordBoundable. It generates clusters of rooms, connects them with MST-based corridors, assigns spatial cells for fast lookup, creates box collisions for overlap detection, and computes a longest-path ordering for progression.&#xA;Instantiation Name Description instantiate Static factory. Creates a singleton UCRoommaker bound to a scene component, with a random stream and cluster configuration // Called by ACRoomSpawner::init() UCRoommaker::instantiate(GetRootComponent(), roommaker, stream, *data); Generation Name Description buildASync Entry point for async generation. Delegates to drawRoom then finalize_sync via queue drawRoom Generates all rooms and clusters: random placement, relaxation, Delaunay, MST, edge breaking, cell assignment createRoom Creates rooms for a single FCRoomCountStruct within a cluster finalize_sync Dequeues generation results and creates metadata (UCRoomMetadata, UCClusterMetadata) finishWorldObject Spawns box collisions per room after both room and world spawners are ready // buildASync is called on tick by ACRoomSpawner. // It runs drawRoom asynchronously, then finalize_sync on the game thread. roommaker-&gt;buildASync(singleDoRun); // drawRoom pipeline: // 1. For each FCRoomMakerCountStruct, create rooms with random positions // 2. Relax rooms using the configured CAlgoRelaxType until stable // 3. Relax clusters in a second pass // 4. Delaunay triangulation for room connectivity // 5. MST for corridor paths (straight or flex) // 6. Break edges with noise for organic corridors // 7. Assign rooms, clusters and edges to spatial cells // finalize_sync creates UCRoomMetadata per room (doors, tags) // and UCClusterMetadata per cluster (fog of war, specific noise). // After all clusters are finalized, longestOrderedPath computes // room ordering along the MST for progression. // finishWorldObject spawns UCRoomBoxCollision per room // for overlap detection (quest/skill triggers). Retrieval Name Description retrieveClusterById Returns a cluster FCRectangle by cluster ID retrieveRoomById Returns a room FCRectangle by cluster ID and room ID retrieveRoomDetailById Returns FCRoomDetailData for a cluster retrieveClusterByTag Returns all clusters matching a FName tag retrieveRoomByTag Returns all rooms matching a FName tag retrieveEdgeById Returns a corridor FCEdge by cluster ID and edge ID retrieveClusterByRoom Returns the parent cluster of a room via its metadata retrieveClusterMetadata Casts a cluster’s metadata to UCClusterMetadata retrieveRoomMetadata Casts a room’s metadata to UCRoomMetadata retrieveSpecificNoiseData Returns per-cluster specific noise and shift noise // Retrieve a room by IDs: FCRectangle* room = roommaker-&gt;retrieveRoomById(clusterId, roomId); // Retrieve all rooms with a specific tag: TArray&lt;FCRectangle*&gt; treasureRooms = roommaker-&gt;retrieveRoomByTag(FName(&#34;treasure&#34;)); // Get room metadata (doors, tag, consumption state): UCRoomMetadata* meta = roommaker-&gt;retrieveRoomMetadata(room); // Get cluster-specific noise for terrain modulation: auto [noise, shiftNoise] = roommaker-&gt;retrieveSpecificNoiseData(cluster); Iterators Name Description iterateOnCluster Iterates over all clusters. Callback returns true to break iterateOnClusterRoom Iterates over all rooms in all clusters. Callback returns true to break // Iterate all clusters: roommaker-&gt;iterateOnCluster([](FCRectangle* cluster) { // process cluster return false; // true to break }); // Iterate all rooms across all clusters: roommaker-&gt;iterateOnClusterRoom([](FCRectangle* cluster, FCRectangle* room) { // process room within its cluster return false; // true to break }); Geometry Finders Name Description closestCluster Finds the closest cluster containing a 2D point (cell-limited) closestRoom Finds the closest room containing a 2D point with optional tolerance (cell-limited) closestEdgeWithin Returns all corridor edges within a distance from a 2D point (cell-limited) closestEdge Finds the single closest corridor edge to a 2D point (cell-limited) nearEdge Finds the nearest edge within its influence width (cell-limited) fogOfWarPart Returns the fog of war rectangle for a cluster // Find closest room at a world position: FCRectangle* rect; if (roommaker-&gt;closestRoom(FVector2D(x, y), rect)) { // rect is the room containing or nearest to (x, y) } // Find corridor edges within 500 units: TArray&lt;FCEdge&gt; edges = roommaker-&gt;closestEdgeWithin(FVector2D(x, y), 500.0f); // Check if a point is near a corridor (within edge width): FCEdge edge; if (roommaker-&gt;nearEdge(FVector2D(x, y), edge)) { // point is within the corridor influence zone } Overlap &amp; Interaction Name Description OnBeginOverlap Triggered when an actor enters a room box collision OnEndOverlap Triggered when an actor leaves a room box collision isRoomEligibleForTagProba Checks room content eligibility based on character tags and probability ranges longestOrderedPath Computes the longest path through the MST for room progression ordering // Room overlap triggers quest actions and skill consumption: // On begin overlap: checks quest system first, then skill system. // If interactWithPlayerOnly is true, only the player pawn triggers. // If canOnlyBeConsumedOnce is true, the room is marked consumed after first interaction. // Room eligibility for content: int contentCount; if (roommaker-&gt;isRoomEligibleForTagProba(contentCount, room, charMainTag, charTagArray, true)) { // room is eligible, contentCount indicates how many tags matched }</description>
    </item>
    <item>
      <title>Metadata</title>
      <link>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/metadata/index.html</link>
      <pubDate>Sat, 20 Jul 2024 21:09:28 +0200</pubDate>
      <guid>https://doc.cdryx.net/CdryxAIOUPlugin/modules/croomumodule/metadata/index.html</guid>
      <description>Overview Metadata classes store runtime data attached to each cluster and room rectangle. They extend UCAbstractRectangleMetadata from CCOREUMODULE.&#xA;UCClusterMetadata Attached to each cluster FCRectangle during finalization.&#xA;Name Description tag Cluster tag inherited from FCRoomMakerStruct::mainTag fogOfWar FCRectangle representing the fog of war zone (computed from cluster bounds) roomMakerStruct Pointer to the source FCRoomMakerStruct configuration specificTopography Optional UCNoisator for per-cluster terrain noise specificShiftTopography Optional UCNoisator for per-cluster shift noise recalculateAll Recomputes the fog of war rectangle from the cluster bounds metaMargeForBetterWorldEasing Static helper that expands cluster bounds for smoother world easing // UCClusterMetadata is created during finalize_sync for each cluster. // fogOfWar is computed from the cluster bounds with a 5% overflow: // a = (2*origin.a + origin.b) / 3, b = (2*origin.b + origin.a) / 3 // then expanded by overflow factor. // metaMargeForBetterWorldEasing doubles the cluster extent: // a_out = a + (a - b), b_out = b + (b - a) // This ensures smooth terrain easing around cluster boundaries. // Per-cluster noise is optional: if (cMd-&gt;roomMakerStruct-&gt;clusterSpecificNoise) { UCNoisator::instanciate(this, noisator, seed, cMd-&gt;roomMakerStruct-&gt;clusterSpecificNoise-&gt;fastNoiseStruct, cMd-&gt;roomMakerStruct-&gt;clusterSpecificNoise-&gt;noiseStructArray); cMd-&gt;specificTopography = noisator; } UCRoomMetadata Attached to each room FCRectangle during finalization.</description>
    </item>
  </channel>
</rss>