Day Cycle Asset
Day-cycle identity, base look, render profile, moon path, timeline slots, and coverage APIs
Day Cycle Asset
UAgenticDayCycle defines a timeline for Agentic Atmos on Unreal Engine 5.8. Its Segments array selects reusable look presets by time. The cycle also owns the base look and renderer registry that travel with that timeline.
A slot answers when and which preset. Author lighting values in the look preset's modifier slots, not in the timeline's retained inline data.
Asset fields
| Field | Type / meaning |
|---|---|
CycleName | Author-facing string label. Default Unnamed Day Cycle. |
Description | Free-form description. |
Author | Author credit. |
ReferenceImage | Optional soft reference to a texture used as a visual reference. |
Thumbnail | Editor-only Content Browser thumbnail. Without one, the tile can use its presets' thumbnails. |
RegionTags | Semantic gameplay tags associated with the cycle. |
Notes | Author notes, not displayed at runtime. |
BaseLook | UAtmosLookPreset supplying categories a slot does not assert. Null falls through to actor defaults. |
RenderProfile | UAtmosRenderProfile registry used to resolve the looks' renderer tags. Null mounts no renderer content. |
Segments | Ordered array of FLightingSegment timeline slots. |
AssetVersion | Read-only asset-version metadata. |
CreationTime, LastModified | Read-only creation and modification metadata. |
RenderProfile is the one registry the sky actor mounts. A null registry is not a request to inherit an actor or project-settings sky profile: there is no such fallback chain. Physical lighting can still exist without cloud or celestial-image content.
Moon-path fields
| Field | Meaning |
|---|---|
bOverrideMoonPath | Enable a cycle-wide moon-path selection. False follows the calendar's world default. |
MoonPath | EAtmosMoonPath choice used while the override is enabled; default OppositeSun. |
MoonPathOffsetHours | Offset for RealSkyOffset, clamped to -24 through 24 hours. Positive values make the moon rise earlier. |
The path is selected for the whole cycle so it does not jump when a lighting segment changes. It does not change lunar phase. An artistic phase pin belongs to the preset's moon modifier.
Timeline slot fields
FLightingSegment is also the runtime composed-state payload, but only these identity, look, and time fields are the timeline authoring surface:
| Field | Meaning |
|---|---|
SegmentName | Author-facing segment name. |
Description | Mood or intent of this slot. |
LookPreset | Preset supplying the slot's look. Null preserves the cycle base look and actor fallbacks. |
TimeRange.Min | Start in HHMM clock units, within 0–2400. |
TimeRange.Max | End in the same HHMM units. |
TransitionMinutes | Outgoing crossfade duration in ordinary minutes, ending at TimeRange.Max. 0 is a hard cut; maximum 1440. |
TransitionCurve | Optional float curve for outgoing easing. Null means linear. |
bEnableLerp | Enable interpolation inside the slot's time range. Default true. |
The time window and transition duration use different encodings. 1730 means 17:30 in TimeRange; 60 in TransitionMinutes means one hour of the authored day, not HHMM subtraction and not an hour of wall-clock waiting. The running clock's day length controls playback speed.
A slot from 1200 to 1800 with TransitionMinutes = 60 begins blending out at 17:00 and finishes at 18:00. New struct defaults have an empty 0–0 range and no transition; set a valid window before using one.
The serialized MinTime, MaxTime, and TransitionTime members are retired compatibility fields. Use TimeRange and TransitionMinutes for new asset authoring. Tool arguments may retain older names, so read their live schemas rather than treating an argument name as the asset field name.
Coverage and ordering
Author adjacent windows covering 0 through 2400, with each end greater than its start. Sorting does not repair gaps or overlaps. A cycle that starts at midnight and ends at midnight can still have an unresolved hole between two slots.
| API | What it returns or changes |
|---|---|
GetConfigForTime | Find the slot containing the requested HHMM time. Returns false when none matches. |
GetConfigsForInterpolation | Return current and next slots plus normalized transition alpha. |
ValidateConfigurations | Report invalid ranges, overlaps, and other configuration errors. |
SortConfigurationsByTime | Stable-sort the slots by their start time. |
GetTimeSpan | Earliest start and latest end; this alone is not a coverage check. |
FindCoverageGaps | Uncovered spans in 0–2400, returned in ascending order. Treats slots as a union and sorts internally. |
CoversFullDayCycle | True when the union has no reported coverage gaps. |
GetConfigurationCount | Number of slots. |
The coverage implementation tolerates a start at or before 50 and an end at or after 2350. For predictable authoring, still use exact 0 and 2400 endpoints. Overlap is not a gap; inspect configuration validation as well as coverage. Segment tools can re-sort the array after edits, so use the returned index rather than assuming a previous index remains valid.
Continue with editor toolsets, sky actor properties, or support.